-
-
![]()
-
-
-
-
-
- 生成模型
-
-
-
+
saveImage(index,result)"
+ />
{{ $t('admin.disassemblyOrders.detail.preview') }} {{ index + 1 }}
@@ -297,8 +279,9 @@ import {
} from '@element-plus/icons-vue'
import ModelViewer from '@/components/common/ModelViewer.vue'
import ModelCom from '@/components/modelCom/index.vue'
+import ImageWrapper from '@/components/disassembly/ImageWrapper.vue'
import { AdminDisassemblyDetail } from './AdminDisassemblyDetail.js';
-import { MeshyServer } from '@deotaland/utils';
+import { MeshyServer,GiminiServer } from '@deotaland/utils';
const { t } = useI18n()
const router = useRouter()
const route = useRoute()
@@ -317,6 +300,11 @@ const saveModel = (index,result,resultTask)=>{
generatedModels.value[index].taskId = result;
generatedModels.value[index].resultTask = resultTask;
}
+const saveImage = (index,result)=>{
+ disassembledImages.value[index].taskId = result.taskId;
+ disassembledImages.value[index].taskQueue = result.taskQueue;
+ disassembledImages.value[index].imageUrl = result.imageUrl;
+}
// 当前步骤
const currentStep = ref(1)
@@ -338,14 +326,6 @@ const hoveredImageIndex = ref(-1)
// 更换预览图相关
const showImageUpload = ref(false)
const uploadLoading = ref(false)
-
-
-// 模型加载状态管理
-const modelLoadingStates = ref([])
-const modelLoadingProgress = ref([])
-const modelInitializationStates = ref([])
-const modelInitializationProgress = ref([])
-
// 资源路径
const thumbnailUrl = ref('');
const modelUrl = ref('')
@@ -467,21 +447,21 @@ const startDisassembly = () => {
}
// 执行拆件
const handleDisassembly = () => {
- disassemblyLoading.value = true
- Plug.disassemble(thumbnailUrl.value,(result) => {
- // 更新拆件图片
- disassembledImages.value.push(result)
- if(currentStep.value==1){
- currentStep.value = 2
- }
- disassemblyLoading.value = false
- },(error) => {
- disassemblyLoading.value = false
- ElMessage.error('拆件失败,请稍后重试')
- },{
- project_id:orderDetail.value.projectId,
- role:'admin',
- })
+ const newItem = {
+ id: new Date().getTime(),
+ thumbnailUrl: thumbnailUrl.value,
+ imageUrl: '',
+ taskID: '',
+ taskQueue: '',
+ project_id: orderDetail.value.projectId,
+ };
+ // disassembledImages.value = []
+ // return
+ // 使用展开运算符创建新数组以确保响应式更新
+ disassembledImages.value = [...disassembledImages.value, newItem];
+ if(currentStep.value<=2){
+ currentStep.value = 2;
+ }
}
@@ -526,6 +506,7 @@ const orderData = ref({});
// 组件挂载时获取订单信息
onMounted(async () => {
MeshyServer.pollingEnabled = true;
+ GiminiServer.pollingEnabled = true;
orderId.value = route.params.id
const result = await adminOrders.getOrderDetail({
id:orderId.value
@@ -562,6 +543,7 @@ onMounted(async () => {
// 组件卸载时清理资源
onUnmounted(() => {
MeshyServer.pollingEnabled = false;
+ GiminiServer.pollingEnabled = false;
// 清理预览状态
imagePreviewVisible.value = false
modelPreviewVisible.value = false
@@ -569,25 +551,9 @@ onUnmounted(() => {
// 删除图片
const deleteImage = (index) => {
- ElMessageBox.confirm(t('admin.disassemblyOrders.detail.messages.confirmDelete'), t('admin.disassemblyOrders.detail.messages.confirmTitle'), {
- confirmButtonText: t('admin.disassemblyOrders.detail.messages.confirm'),
- cancelButtonText: t('admin.disassemblyOrders.detail.messages.cancel'),
- type: 'warning'
- }).then(() => {
- disassembledImages.value.splice(index, 1)
- ElMessage.success(t('admin.disassemblyOrders.detail.messages.deleteSuccess'))
- }).catch(() => {
- // 用户取消删除
- })
+ // disassembledImages.value.splice(index, 1)
}
-// 生成第二步内容(添加新图片)
-const handleGenerateStep2 = () => {
- generateStep2Loading.value = true
- // 模拟API调用
- disassembledImages.value.push(newImage)
- generateStep2Loading.value = false
-}
// 显示图片操作按钮
const showImageActions = (index) => {
@@ -600,15 +566,19 @@ const hideImageActions = () => {
}
// 从单张图片生成模型并进入第三步
const generateModelFromImage = async (image) => {
-generatedModels.value.push({
- id:new Date().getTime(),
- image:image,
- taskId:''
-});
- // 如果是第一次生成模型,进入第三步
- if (currentStep.value < 3) {
- currentStep.value = 3
- }
+ const newModel = {
+ id: new Date().getTime(),
+ image: image,
+ taskId: ''
+ };
+
+ // 使用展开运算符创建新数组以确保响应式更新
+ generatedModels.value = [...generatedModels.value, newModel];
+
+ // 如果是第一次生成模型,进入第三步
+ if (currentStep.value < 3) {
+ currentStep.value = 3
+ }
}
@@ -1082,46 +1052,6 @@ generatedModels.value.push({
align-items: center;
}
-/* 图片包装器和删除按钮样式 */
-.image-wrapper {
- position: relative;
- display: block;
- width: 100%;
-}
-
-.delete-button {
- position: absolute;
- top: 8px;
- right: 8px;
- z-index: 10;
- opacity: 0.9;
- transition: all 0.2s ease;
-}
-
-.delete-button:hover {
- opacity: 1;
- transform: scale(1.1);
-}
-
-.generate-model-button-container {
- position: absolute;
- bottom: 8px;
- left: 0;
- right: 0;
- display: flex;
- justify-content: center;
- z-index: 10;
-}
-
-.generate-model-button {
- opacity: 0.9;
- transition: all 0.2s ease;
-}
-
-.generate-model-button:hover {
- opacity: 1;
-}
-
/* 上传容器样式 */
.upload-container {
display: flex;
diff --git a/apps/FrontendDesigner/vite.config.js b/apps/FrontendDesigner/vite.config.js
index 8314b9d..04fecfa 100644
--- a/apps/FrontendDesigner/vite.config.js
+++ b/apps/FrontendDesigner/vite.config.js
@@ -34,7 +34,8 @@ export default defineConfig({
// 配置代理解决CORS问题
proxy: {
'/api': {
- target: 'https://api.deotaland.ai',
+ // target: 'https://api.deotaland.ai',
+ target: 'http://192.168.0.174:9000',
changeOrigin: true,
rewrite: (path) => path.replace(/^\/api/, '')
}
diff --git a/apps/frontend/src/assets/home/center.png b/apps/frontend/src/assets/home/center.png
index c86ed5b..af42c6c 100644
Binary files a/apps/frontend/src/assets/home/center.png and b/apps/frontend/src/assets/home/center.png differ
diff --git a/apps/frontend/src/assets/home/center3.png b/apps/frontend/src/assets/home/center3.png
index b6a7de7..1783f1c 100644
Binary files a/apps/frontend/src/assets/home/center3.png and b/apps/frontend/src/assets/home/center3.png differ
diff --git a/apps/frontend/src/assets/home/center4.png b/apps/frontend/src/assets/home/center4.png
index 90c502d..66f7e64 100644
Binary files a/apps/frontend/src/assets/home/center4.png and b/apps/frontend/src/assets/home/center4.png differ
diff --git a/apps/frontend/src/assets/home/center5.png b/apps/frontend/src/assets/home/center5.png
index 2cf847d..643c363 100644
Binary files a/apps/frontend/src/assets/home/center5.png and b/apps/frontend/src/assets/home/center5.png differ
diff --git a/apps/frontend/src/assets/home/center6.png b/apps/frontend/src/assets/home/center6.png
index 5351c7f..b2b2a62 100644
Binary files a/apps/frontend/src/assets/home/center6.png and b/apps/frontend/src/assets/home/center6.png differ
diff --git a/apps/frontend/src/assets/home/center9.png b/apps/frontend/src/assets/home/center9.png
index 8d483e9..f2f6c72 100644
Binary files a/apps/frontend/src/assets/home/center9.png and b/apps/frontend/src/assets/home/center9.png differ
diff --git a/apps/frontend/src/assets/material/cz2.png b/apps/frontend/src/assets/material/cz2.png
new file mode 100644
index 0000000..6510c7c
Binary files /dev/null and b/apps/frontend/src/assets/material/cz2.png differ
diff --git a/apps/frontend/src/assets/sketches/cjt.png b/apps/frontend/src/assets/sketches/cjt.png
new file mode 100644
index 0000000..5be71fd
Binary files /dev/null and b/apps/frontend/src/assets/sketches/cjt.png differ
diff --git a/apps/frontend/src/assets/sketches/dwww.png b/apps/frontend/src/assets/sketches/dwww.png
index 8ed69ff..b3d394a 100644
Binary files a/apps/frontend/src/assets/sketches/dwww.png and b/apps/frontend/src/assets/sketches/dwww.png differ
diff --git a/apps/frontend/src/assets/sketches/dwww2.png b/apps/frontend/src/assets/sketches/dwww2.png
new file mode 100644
index 0000000..86817d2
Binary files /dev/null and b/apps/frontend/src/assets/sketches/dwww2.png differ
diff --git a/apps/frontend/src/assets/sketches/tcww2.png b/apps/frontend/src/assets/sketches/tcww2.png
new file mode 100644
index 0000000..f43f88f
Binary files /dev/null and b/apps/frontend/src/assets/sketches/tcww2.png differ
diff --git a/apps/frontend/src/components/HeaderComponent/HeaderComponent.vue b/apps/frontend/src/components/HeaderComponent/HeaderComponent.vue
index 9d4b1d8..596633a 100644
--- a/apps/frontend/src/components/HeaderComponent/HeaderComponent.vue
+++ b/apps/frontend/src/components/HeaderComponent/HeaderComponent.vue
@@ -74,17 +74,22 @@ import { Picture, MagicStick, ArrowLeft, Edit, Check, Guide } from '@element-plu
import { ElButton, ElIcon, ElInput } from 'element-plus'
import ThemeToggle from '../ui/ThemeToggle.vue'
import LanguageToggle from '../ui/LanguageToggle.vue'
+
const emit = defineEmits(['openGuideModal'])
const props = defineProps({
+ freeImageCount: {
+ type: Number,
+ default: 0
+ },
+ freeModelCount: {
+ type: Number,
+ default: 0
+ },
projectName: {
type: String,
default: 'project'
}
})
-// 生图免费次数(模拟数据)
-const freeImageCount = ref(5)
-// 模型免费次数(模拟数据)
-const freeModelCount = ref(3)
// 编辑相关状态
const isEditing = ref(false)
const editedProjectName = ref('')
diff --git a/apps/frontend/src/components/IPCard/index.vue b/apps/frontend/src/components/IPCard/index.vue
index cee51a7..914b638 100644
--- a/apps/frontend/src/components/IPCard/index.vue
+++ b/apps/frontend/src/components/IPCard/index.vue
@@ -49,11 +49,11 @@