2025-05-20 16:47:27 +08:00
|
|
|
|
<template>
|
|
|
|
|
|
<div class="homeBox">
|
2025-06-09 10:25:54 +08:00
|
|
|
|
<div class="mark_loading" v-show="isShowMark || dataLoad">
|
2025-05-20 16:47:27 +08:00
|
|
|
|
<a-spin size="large" />
|
|
|
|
|
|
</div>
|
|
|
|
|
|
<div class="show">
|
2025-11-11 13:38:36 +08:00
|
|
|
|
<!-- <div v-show="openType === 'history'" class="function">
|
2025-10-23 13:51:29 +08:00
|
|
|
|
<design :key="componentKey" ref="design"></design>
|
2025-11-11 13:38:36 +08:00
|
|
|
|
</div> -->
|
2025-12-15 15:34:04 +08:00
|
|
|
|
<router-view v-show="
|
2025-07-22 18:16:33 +08:00
|
|
|
|
(openType && openType != 'history' && !routeQuery.id) ||
|
|
|
|
|
|
$route.path != '/home'"
|
|
|
|
|
|
@setTask="setTask"
|
2025-11-11 13:38:36 +08:00
|
|
|
|
v-slot="{ Component, route }"
|
2025-07-22 18:16:33 +08:00
|
|
|
|
>
|
2025-11-11 13:38:36 +08:00
|
|
|
|
<keep-alive :include="cachedRoutes">
|
|
|
|
|
|
<component
|
|
|
|
|
|
:is="Component"
|
|
|
|
|
|
:key="route.name"
|
|
|
|
|
|
/>
|
|
|
|
|
|
</keep-alive>
|
2025-05-20 16:47:27 +08:00
|
|
|
|
</router-view>
|
2025-11-11 13:38:36 +08:00
|
|
|
|
<!-- <div v-else-if="routeQuery.id" class="function">
|
2025-06-11 15:08:17 +08:00
|
|
|
|
<design :key="componentKey" ref="design"></design>
|
2025-11-11 13:38:36 +08:00
|
|
|
|
</div> -->
|
2025-12-17 15:33:31 +08:00
|
|
|
|
<div v-if="!$route.params.id && !routeQuery.id" class="function">
|
2025-05-21 20:05:08 +08:00
|
|
|
|
<newPorject ref="newPorject" @newProject=newProject></newPorject>
|
2025-05-20 16:47:27 +08:00
|
|
|
|
</div>
|
2025-08-22 10:27:48 +08:00
|
|
|
|
<!-- <iframe src="https://kaput-relative-4bb.notion.site/ebd/22a8f755cedd809e98a2c8c6366ee701" width="100%" height="100%" frameborder="0" allowfullscreen /> -->
|
|
|
|
|
|
|
|
|
|
|
|
|
2025-05-20 16:47:27 +08:00
|
|
|
|
</div>
|
|
|
|
|
|
</div>
|
2025-08-22 10:27:48 +08:00
|
|
|
|
<!-- <chat ref="chatDom" @chatChange="chatChange" v-show="openType == 'history'"></chat> -->
|
2025-05-20 16:47:27 +08:00
|
|
|
|
</template>
|
|
|
|
|
|
<script lang="ts">
|
2025-06-03 14:57:18 +08:00
|
|
|
|
import { defineComponent,computed,inject,watch,nextTick,provide,toRefs, reactive, onMounted} from 'vue'
|
2025-05-20 16:47:27 +08:00
|
|
|
|
import { ExclamationCircleOutlined } from '@ant-design/icons-vue';
|
|
|
|
|
|
import { Https } from "@/tool/https";
|
|
|
|
|
|
import { useStore } from "vuex";
|
|
|
|
|
|
import { useI18n } from 'vue-i18n'
|
|
|
|
|
|
import { useRouter,useRoute } from 'vue-router'
|
|
|
|
|
|
import newPorject from "./newProject/index.vue"
|
2025-05-21 20:05:08 +08:00
|
|
|
|
import router from '@/router';
|
2025-07-19 14:04:48 +08:00
|
|
|
|
import {getMinioUrl, getUniversalZoomLevel} from '@/tool/util'
|
2025-05-20 16:47:27 +08:00
|
|
|
|
import chat from "./chat/index.vue"
|
|
|
|
|
|
export default defineComponent({
|
|
|
|
|
|
components:{
|
2025-11-11 13:38:36 +08:00
|
|
|
|
newPorject,chat
|
2025-05-20 16:47:27 +08:00
|
|
|
|
},
|
2025-06-18 11:05:23 +08:00
|
|
|
|
emits:['setTask','setNewProject'],
|
2025-05-20 16:47:27 +08:00
|
|
|
|
setup(props,{emit}) {
|
|
|
|
|
|
const store = useStore();
|
|
|
|
|
|
const route = useRoute()
|
|
|
|
|
|
const data = reactive({
|
|
|
|
|
|
openType:'',
|
2025-06-11 15:08:17 +08:00
|
|
|
|
componentKey:null,
|
2025-12-09 11:25:25 +08:00
|
|
|
|
isShowMark:true,
|
2025-05-20 16:47:27 +08:00
|
|
|
|
routeQuery:{} as any,
|
|
|
|
|
|
selectObject:computed(()=>store.state.Workspace.probjects) as any,//选择的项目
|
2025-05-22 14:26:47 +08:00
|
|
|
|
chatData:null as any,
|
2025-06-09 10:25:54 +08:00
|
|
|
|
dataLoad:true as any,
|
2025-11-11 13:38:36 +08:00
|
|
|
|
cachedRoutes:computed(()=>store.state.Workspace.cachedRoutes),//
|
2025-05-20 16:47:27 +08:00
|
|
|
|
})
|
2025-12-09 11:25:25 +08:00
|
|
|
|
onMounted(()=>{
|
|
|
|
|
|
data.isShowMark = false
|
|
|
|
|
|
})
|
2025-06-03 14:57:18 +08:00
|
|
|
|
let settingGetHistory:any = inject('settingGetHistory')
|
2025-05-20 16:47:27 +08:00
|
|
|
|
const setIsShowMark = (boolean:boolean)=>{
|
|
|
|
|
|
data.isShowMark = boolean
|
|
|
|
|
|
}
|
|
|
|
|
|
provide('setIsShowMark',setIsShowMark)
|
|
|
|
|
|
const dataDom = reactive({
|
|
|
|
|
|
design:null as any,
|
|
|
|
|
|
newPorject:null as any,
|
2025-05-22 14:26:47 +08:00
|
|
|
|
chatDom:null as any,
|
2025-05-20 16:47:27 +08:00
|
|
|
|
})
|
2025-10-13 17:12:58 +08:00
|
|
|
|
//切换风格更新模特 更新设置交互变更
|
|
|
|
|
|
// watch(() => data.selectObject.styleId,(newVal,oldVal)=>{
|
|
|
|
|
|
// if(newVal == oldVal || !oldVal)return
|
|
|
|
|
|
// if((data.selectObject?.id == route.query?.history) && route.query?.history){
|
|
|
|
|
|
// getHistory(route.query.history)
|
|
|
|
|
|
// }
|
|
|
|
|
|
// })
|
2025-11-11 13:38:36 +08:00
|
|
|
|
watch(
|
|
|
|
|
|
() => route,
|
|
|
|
|
|
(newRoute) => {
|
|
|
|
|
|
const routeName = newRoute.name as string
|
|
|
|
|
|
const shouldCache = newRoute.meta?.cache === true
|
|
|
|
|
|
if (shouldCache && routeName && !data.cachedRoutes.includes(routeName)) {
|
2025-11-12 10:05:00 +08:00
|
|
|
|
if(routeName == 'tools' && !route.query?.id)return
|
2025-11-11 13:38:36 +08:00
|
|
|
|
data.cachedRoutes.push(routeName)// 保证缓存只有一个项目
|
|
|
|
|
|
} else if ((!route.query?.id && shouldCache) || (!shouldCache && routeName && data.cachedRoutes.includes(routeName))) {
|
|
|
|
|
|
// } else if (!shouldCache && routeName && data.cachedRoutes.includes(routeName)) {
|
|
|
|
|
|
for (let i = data.cachedRoutes.length - 1; i >= 0; i--) {
|
|
|
|
|
|
if (data.cachedRoutes[i] !== routeName) {
|
|
|
|
|
|
data.cachedRoutes.splice(i, 1);
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
},
|
|
|
|
|
|
{ immediate: true, deep: true }
|
|
|
|
|
|
)
|
2025-05-20 16:47:27 +08:00
|
|
|
|
watch(() => route.query,
|
2025-06-03 14:57:18 +08:00
|
|
|
|
(query:any, oldQuery:any) => {
|
2025-05-20 16:47:27 +08:00
|
|
|
|
data.routeQuery = query
|
2025-06-11 15:08:17 +08:00
|
|
|
|
if(query.history)data.componentKey = query.history
|
2025-11-11 13:38:36 +08:00
|
|
|
|
let key = Object.keys(query)?.[0]
|
|
|
|
|
|
if(route.params?.id)key = 'history'
|
2025-05-20 16:47:27 +08:00
|
|
|
|
if(key){
|
2025-11-11 13:38:36 +08:00
|
|
|
|
data.openType = key
|
2025-05-20 16:47:27 +08:00
|
|
|
|
}else{
|
|
|
|
|
|
data.openType = ''
|
2025-06-09 10:25:54 +08:00
|
|
|
|
data.dataLoad = false
|
2025-06-19 09:21:32 +08:00
|
|
|
|
return
|
2025-05-20 16:47:27 +08:00
|
|
|
|
}
|
2025-06-11 15:08:17 +08:00
|
|
|
|
|
2025-10-27 16:22:55 +08:00
|
|
|
|
// 检查是否需要重新初始化
|
|
|
|
|
|
const currentPath = route.fullPath
|
|
|
|
|
|
const storedPath = store.state.Workspace.projectPath
|
2025-11-11 13:38:36 +08:00
|
|
|
|
const isSameProject = currentPath === storedPath
|
2025-10-27 16:22:55 +08:00
|
|
|
|
|
2025-11-11 13:38:36 +08:00
|
|
|
|
if((data.openType == 'history' && route.params?.id) || (data.openType == 'tools' && query.id)){
|
2025-10-23 13:51:29 +08:00
|
|
|
|
store.commit('setProjectPath',route.fullPath)
|
2025-06-11 15:08:17 +08:00
|
|
|
|
}
|
2025-10-23 13:51:29 +08:00
|
|
|
|
|
2025-10-27 16:22:55 +08:00
|
|
|
|
// 如果是同一个项目且openType为history,跳过重新初始化
|
2025-11-11 13:38:36 +08:00
|
|
|
|
// if(oldQuery?.id && !query?.id)return createData()
|
|
|
|
|
|
const tempUrl = new URL(storedPath, window.location.origin);
|
|
|
|
|
|
const params2 = {
|
|
|
|
|
|
tools: tempUrl.searchParams.get('tools'),
|
|
|
|
|
|
id: tempUrl.searchParams.get('id')
|
|
|
|
|
|
};
|
|
|
|
|
|
if(isSameProject || (!route.params?.id && !query.id) || params2.id){
|
2025-10-27 16:22:55 +08:00
|
|
|
|
data.dataLoad = false
|
2025-10-30 14:00:09 +08:00
|
|
|
|
// dataDom.design?.init()
|
2025-10-27 16:22:55 +08:00
|
|
|
|
return
|
|
|
|
|
|
}
|
2025-05-20 16:47:27 +08:00
|
|
|
|
nextTick(()=>{
|
2025-11-11 13:38:36 +08:00
|
|
|
|
if(route.params?.id || query?.id){
|
2025-10-20 15:45:13 +08:00
|
|
|
|
//切换新项目需要清除首次design提示
|
|
|
|
|
|
sessionStorage.removeItem('firstDesign');
|
|
|
|
|
|
|
2025-06-09 10:25:54 +08:00
|
|
|
|
if(data.openType == 'tools')data.isShowMark = true
|
|
|
|
|
|
data.dataLoad = true
|
2025-07-19 14:04:48 +08:00
|
|
|
|
if(query?.source != 'batch'){
|
|
|
|
|
|
createData()
|
|
|
|
|
|
}else{
|
|
|
|
|
|
let arr = ['moodBoard','printBoard','sketchBoard','colorBoard']
|
|
|
|
|
|
arr.forEach((item:any)=>{
|
|
|
|
|
|
store.commit("clearAllBoardData",item);
|
|
|
|
|
|
})
|
|
|
|
|
|
store.commit("createProbject");
|
|
|
|
|
|
store.commit("clearAllData");
|
|
|
|
|
|
}
|
2025-11-11 13:38:36 +08:00
|
|
|
|
getHistory(query.id || route.params?.id)
|
2025-06-03 14:57:18 +08:00
|
|
|
|
}else{
|
2025-06-09 10:25:54 +08:00
|
|
|
|
data.dataLoad = false
|
2025-06-03 14:57:18 +08:00
|
|
|
|
createData()
|
2025-05-20 16:47:27 +08:00
|
|
|
|
}
|
|
|
|
|
|
})
|
|
|
|
|
|
|
|
|
|
|
|
},
|
|
|
|
|
|
{ immediate: true } // 立即触发一次以处理初始参数
|
|
|
|
|
|
);
|
|
|
|
|
|
const createData = ()=>{
|
2025-06-03 14:57:18 +08:00
|
|
|
|
store.commit("createProbject");
|
2025-05-20 16:47:27 +08:00
|
|
|
|
store.commit("clearAllData");
|
|
|
|
|
|
store.commit("clearAllCollection");
|
|
|
|
|
|
store.commit("setAllBoardDataChoose",{});
|
|
|
|
|
|
store.commit("clearShowSketchboard",{});
|
2025-06-18 11:05:23 +08:00
|
|
|
|
store.commit("clearAllCloudList");
|
|
|
|
|
|
let arr = ['moodBoard','printBoard','sketchBoard','colorBoard']
|
|
|
|
|
|
arr.forEach((item:any)=>{
|
|
|
|
|
|
store.commit("clearAllBoardData",item);
|
|
|
|
|
|
})
|
2025-05-20 16:47:27 +08:00
|
|
|
|
}
|
|
|
|
|
|
const getHistory = (id:any)=>{
|
|
|
|
|
|
let value = {
|
|
|
|
|
|
id,
|
|
|
|
|
|
}
|
2025-10-13 17:12:58 +08:00
|
|
|
|
if(!id)return data.isShowMark = false
|
2025-05-20 16:47:27 +08:00
|
|
|
|
Https.axiosPost(Https.httpUrls.selectHistoryProject,value).then((rv: any) => {
|
|
|
|
|
|
setProjectData(rv)
|
|
|
|
|
|
}).catch((res)=>{
|
|
|
|
|
|
data.isShowMark = false
|
|
|
|
|
|
})
|
|
|
|
|
|
}
|
|
|
|
|
|
const setTask = (item:any)=>{
|
|
|
|
|
|
emit('setTask',item)
|
|
|
|
|
|
}
|
|
|
|
|
|
const setProjectData = (rv:any)=>{
|
|
|
|
|
|
let storeData = {
|
|
|
|
|
|
name:rv.name,
|
|
|
|
|
|
id:rv.id,
|
2025-05-21 20:05:08 +08:00
|
|
|
|
type:rv.process == 'SERIES_DESIGN'?'seriesDesign':'singleProductDesign',
|
2025-05-20 16:47:27 +08:00
|
|
|
|
httpType:rv.process,//项目类型
|
2025-06-03 14:57:18 +08:00
|
|
|
|
ageGroup:rv.workspaceVO?.ageGroup,
|
|
|
|
|
|
style:rv.workspaceVO?.style,
|
|
|
|
|
|
styleId:rv.workspaceVO?.styleId,
|
|
|
|
|
|
styleName:rv.workspaceVO?.styleName,
|
|
|
|
|
|
sex:rv.workspaceVO?.sex,
|
|
|
|
|
|
userBrandDnaImg:rv.workspaceVO?.userBrandDnaImg,
|
|
|
|
|
|
userBrandDnaName:rv.workspaceVO?.userBrandDnaName,
|
|
|
|
|
|
brandPercentage:rv.workspaceVO?.brandPercentage,
|
|
|
|
|
|
userBrandDna:rv.workspaceVO?.userBrandDna,
|
|
|
|
|
|
systemDesignerPercentage:rv.workspaceVO?.systemDesignerPercentage,
|
2025-05-20 16:47:27 +08:00
|
|
|
|
position:{
|
2025-06-03 14:57:18 +08:00
|
|
|
|
label:rv.workspaceVO?.positionEnum?.value,
|
|
|
|
|
|
value:rv.workspaceVO?.positionEnum?.name
|
2025-05-20 16:47:27 +08:00
|
|
|
|
},
|
2025-06-30 10:53:25 +08:00
|
|
|
|
workspaceId:rv.workspaceVO?.id,
|
2025-05-20 16:47:27 +08:00
|
|
|
|
positionList:[],
|
|
|
|
|
|
publishData:{
|
2025-06-03 14:57:18 +08:00
|
|
|
|
id:rv.portfolioDTO?.id?rv.portfolioDTO?.id:'',
|
|
|
|
|
|
portfolioDes:rv.portfolioDTO?.portfolioDes?rv.portfolioDTO?.portfolioDes:'',
|
|
|
|
|
|
portfolioName:rv.portfolioDTO?.portfolioName?rv.portfolioDTO?.portfolioName:'',
|
|
|
|
|
|
tagsDTO:rv.portfolioDTO?.tagsDTO?rv.portfolioDTO?.tagsDTO:[],
|
2025-05-20 16:47:27 +08:00
|
|
|
|
},
|
2025-09-08 14:50:59 +08:00
|
|
|
|
// model:[]
|
2025-05-20 16:47:27 +08:00
|
|
|
|
}
|
|
|
|
|
|
let position = []
|
|
|
|
|
|
if(storeData.sex == "Female"){
|
|
|
|
|
|
position = store.state.UserHabit.FemalePosition
|
|
|
|
|
|
}else{
|
|
|
|
|
|
position = store.state.UserHabit.MalePosition
|
|
|
|
|
|
}
|
|
|
|
|
|
data.selectObject.positionList = position
|
|
|
|
|
|
storeData.positionList = position
|
|
|
|
|
|
store.commit('setProbject',storeData)
|
2025-08-22 10:27:48 +08:00
|
|
|
|
// setChatData()
|
2025-11-20 13:56:25 +08:00
|
|
|
|
if(route.name == 'tools'){
|
2025-06-09 10:25:54 +08:00
|
|
|
|
getCollection('tools',null)
|
2025-06-03 14:57:18 +08:00
|
|
|
|
}else{
|
2025-06-09 10:25:54 +08:00
|
|
|
|
getCollection('design',null)
|
2025-06-03 14:57:18 +08:00
|
|
|
|
}
|
2025-05-20 16:47:27 +08:00
|
|
|
|
}
|
2025-05-22 14:26:47 +08:00
|
|
|
|
const setChatData = ()=>{
|
|
|
|
|
|
if(!data.chatData)return
|
|
|
|
|
|
nextTick(()=>{
|
|
|
|
|
|
dataDom.chatDom.enableThinking = data.chatData.enableThinking
|
|
|
|
|
|
dataDom.chatDom.filList = data.chatData.filList
|
|
|
|
|
|
dataDom.chatDom.chatContent = data.chatData.chatContent
|
|
|
|
|
|
dataDom.chatDom.isFinish = true
|
|
|
|
|
|
dataDom.chatDom.isChattingRecords = true
|
|
|
|
|
|
dataDom.chatDom.sendChat()
|
|
|
|
|
|
data.chatData = null
|
|
|
|
|
|
})
|
|
|
|
|
|
|
|
|
|
|
|
}
|
2025-05-20 16:47:27 +08:00
|
|
|
|
// const setitemData = (arr:any)=>{
|
|
|
|
|
|
// return new Promise((resolve,reject)=>{
|
|
|
|
|
|
// nextTick(()=>{
|
|
|
|
|
|
// arr.forEach((rv:any)=>{
|
|
|
|
|
|
// if(arr.indexOf(rv) > -1 || !dataDom[rv])return
|
|
|
|
|
|
// dataDom[rv].openSetData()
|
|
|
|
|
|
// })
|
|
|
|
|
|
// resolve('')
|
|
|
|
|
|
// })
|
|
|
|
|
|
// })
|
|
|
|
|
|
// }
|
2025-06-09 10:25:54 +08:00
|
|
|
|
const getCollection = (type:string,module:any)=>{
|
2025-06-18 11:05:23 +08:00
|
|
|
|
return new Promise((resolve, reject) => {
|
|
|
|
|
|
let moduleList = [] as any
|
|
|
|
|
|
if(type == 'design'){
|
2025-07-19 14:04:48 +08:00
|
|
|
|
moduleList = ["moodBoard", "printBoard", "colorBoard", "sketchBoard",'design','mannequin','toProduct','relight','poseTransfer']
|
2025-06-18 11:05:23 +08:00
|
|
|
|
}else{
|
|
|
|
|
|
moduleList = ["printBoard", "colorBoard", "sketchBoard",'design','toProduct','relight','poseTransfer','mannequin',"patternMaking3D",'deReconstruction','uploadElement']
|
2025-05-28 10:28:07 +08:00
|
|
|
|
}
|
2025-06-18 11:05:23 +08:00
|
|
|
|
if(module)moduleList = [module]
|
|
|
|
|
|
let value:any = {
|
|
|
|
|
|
"id":data.selectObject.id,
|
|
|
|
|
|
"moduleList":moduleList,
|
2025-05-20 16:47:27 +08:00
|
|
|
|
}
|
2025-09-03 16:36:06 +08:00
|
|
|
|
data.isShowMark = true
|
2025-06-18 11:05:23 +08:00
|
|
|
|
Https.axiosPost(Https.httpUrls.getModuleContent,value).then(async (rv)=>{
|
2025-10-13 17:12:58 +08:00
|
|
|
|
store.commit('clearAllCollection')
|
2025-06-18 11:05:23 +08:00
|
|
|
|
if(rv.uploadElement){//toproduct、relight、poseTransfer
|
|
|
|
|
|
let uploadElementData = {
|
|
|
|
|
|
str:'add',
|
|
|
|
|
|
list:rv.uploadElement,
|
2025-09-23 13:45:11 +08:00
|
|
|
|
isGetModule:true,
|
2025-06-18 11:05:23 +08:00
|
|
|
|
}
|
|
|
|
|
|
store.commit('setUploadElement',uploadElementData)
|
|
|
|
|
|
|
2025-05-20 16:47:27 +08:00
|
|
|
|
}
|
2025-06-18 11:05:23 +08:00
|
|
|
|
historyChooseData(rv)//设置历史数据
|
|
|
|
|
|
if(rv.mannequin.length>0){
|
|
|
|
|
|
let arr = [] as any
|
|
|
|
|
|
rv.mannequin.forEach((item:any)=>{
|
|
|
|
|
|
arr.push({
|
|
|
|
|
|
url:item.url,
|
|
|
|
|
|
id:item.mannequinRelationId,
|
|
|
|
|
|
type:item.mannequinRelationType,
|
2025-10-10 13:03:21 +08:00
|
|
|
|
collectionElementId:item.collectionId,
|
|
|
|
|
|
level3Type:item.level3Type
|
2025-06-18 11:05:23 +08:00
|
|
|
|
})
|
|
|
|
|
|
})
|
|
|
|
|
|
store.commit('setProbject',{model:arr})
|
2025-05-20 16:47:27 +08:00
|
|
|
|
}
|
2025-06-18 11:05:23 +08:00
|
|
|
|
let allBoardData = ['sketchBoard','moodBoard','printBoard','colorBoard']
|
|
|
|
|
|
// let allBoardData = ['sketchBoard','moodBoard','printBoard','colorBoard','toProduct','relight','poseTransfer','mannequin']
|
2025-08-22 10:27:48 +08:00
|
|
|
|
let canvasData = ['deReconstruction']
|
|
|
|
|
|
// let canvasData = ['canvas','deReconstruction']
|
2025-06-26 15:41:08 +08:00
|
|
|
|
for (let index = 0; index < canvasData.length; index++) {
|
|
|
|
|
|
const item = canvasData[index];
|
|
|
|
|
|
await getCanvasData(item)
|
2025-06-18 11:05:23 +08:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// await setitemData(allBoardData)
|
|
|
|
|
|
//还有一个canvas
|
|
|
|
|
|
if(rv.boundingBox)store.commit('setShowSketchboard',rv.boundingBox)
|
|
|
|
|
|
|
|
|
|
|
|
allBoardData.forEach((item)=>{
|
|
|
|
|
|
let value = {
|
|
|
|
|
|
type:item,
|
|
|
|
|
|
objectName:data.selectObject.type,
|
|
|
|
|
|
}
|
|
|
|
|
|
let arr = ['sketchBoard','moodBoard','printBoard','colorBoard']
|
|
|
|
|
|
if(arr.indexOf(item) != -1){
|
|
|
|
|
|
// store.dispatch('setAllBoardData',value)
|
|
|
|
|
|
}else{
|
|
|
|
|
|
store.dispatch('setModularData',value)
|
|
|
|
|
|
}
|
2025-06-09 10:25:54 +08:00
|
|
|
|
})
|
2025-06-18 11:05:23 +08:00
|
|
|
|
data.isShowMark = false
|
|
|
|
|
|
data.dataLoad = false
|
2025-07-19 14:04:48 +08:00
|
|
|
|
if(type == 'design' && dataDom.design){
|
2025-06-18 11:05:23 +08:00
|
|
|
|
nextTick(()=>{
|
|
|
|
|
|
dataDom.design.openSetData()
|
|
|
|
|
|
})
|
|
|
|
|
|
}
|
|
|
|
|
|
resolve('')
|
|
|
|
|
|
}).catch(()=>{
|
|
|
|
|
|
data.isShowMark = false
|
|
|
|
|
|
data.dataLoad = false
|
|
|
|
|
|
resolve('')
|
|
|
|
|
|
})
|
2025-05-20 16:47:27 +08:00
|
|
|
|
})
|
2025-06-18 11:05:23 +08:00
|
|
|
|
|
2025-05-20 16:47:27 +08:00
|
|
|
|
}
|
|
|
|
|
|
const getCanvasData = (str:any)=>{
|
|
|
|
|
|
return new Promise((resolve, reject) => {
|
|
|
|
|
|
let value = {
|
|
|
|
|
|
module:str,
|
|
|
|
|
|
projectId:data.selectObject.id,
|
|
|
|
|
|
}
|
|
|
|
|
|
Https.axiosPost(Https.httpUrls.exportSearch, value)
|
|
|
|
|
|
.then((rv) => {
|
|
|
|
|
|
store.commit("setCanvasData", {type:str,file:rv});
|
|
|
|
|
|
resolve('')
|
|
|
|
|
|
})
|
|
|
|
|
|
.catch((rv) => {
|
|
|
|
|
|
resolve(null)
|
|
|
|
|
|
});
|
|
|
|
|
|
})
|
|
|
|
|
|
}
|
2025-09-01 14:03:30 +08:00
|
|
|
|
const historyChooseData = async (dataValue:any)=>{
|
|
|
|
|
|
let ifMoodTemplateUrl = true
|
|
|
|
|
|
if(dataValue?.moodBoard?.moodTemplateUrl){
|
|
|
|
|
|
await new Promise<void>((resolve, reject) => {
|
|
|
|
|
|
let img = new Image()
|
|
|
|
|
|
img.src = dataValue.moodBoard?.moodTemplateUrl
|
|
|
|
|
|
img.onload = ()=>{
|
|
|
|
|
|
resolve()
|
|
|
|
|
|
}
|
|
|
|
|
|
img.onerror = ()=>{
|
|
|
|
|
|
ifMoodTemplateUrl = false
|
|
|
|
|
|
resolve()
|
|
|
|
|
|
}
|
|
|
|
|
|
})
|
|
|
|
|
|
}
|
2025-05-20 16:47:27 +08:00
|
|
|
|
let collectionData = {
|
2025-09-01 14:03:30 +08:00
|
|
|
|
disposeMoodboard: (dataValue.moodBoard?.moodTemplateId && ifMoodTemplateUrl)?[{
|
2025-06-18 13:36:11 +08:00
|
|
|
|
id:dataValue.moodBoard?.moodTemplateId,
|
|
|
|
|
|
imgUrl:dataValue.moodBoard?.moodTemplateUrl,
|
2025-05-20 16:47:27 +08:00
|
|
|
|
resData:{
|
2025-06-18 13:36:11 +08:00
|
|
|
|
name:dataValue.moodBoard?.moodTemplateName,
|
2025-05-20 16:47:27 +08:00
|
|
|
|
}
|
|
|
|
|
|
}]:[],
|
2025-06-18 13:36:11 +08:00
|
|
|
|
moodboardPosition:dataValue.moodBoard?.moodboardPosition?JSON.parse(dataValue.moodBoard?.moodboardPosition):{},
|
2025-05-20 16:47:27 +08:00
|
|
|
|
moodboardFiles: dealViewChooseData(
|
|
|
|
|
|
dataValue.moodBoard?.moodBoards,"Moodboard"
|
|
|
|
|
|
),
|
|
|
|
|
|
printboardFiles: dealViewChooseData(
|
|
|
|
|
|
dataValue.printBoard,"Printboard"
|
|
|
|
|
|
),
|
|
|
|
|
|
generatePrintFiles: [],
|
|
|
|
|
|
colorBoards: dealViewChooseColor(
|
2025-06-18 11:05:23 +08:00
|
|
|
|
dataValue.colorBoard
|
2025-05-20 16:47:27 +08:00
|
|
|
|
),
|
|
|
|
|
|
sketchboardFiles: dealViewChooseData(
|
|
|
|
|
|
dataValue.sketchBoard,"Sketchboard"
|
|
|
|
|
|
),
|
|
|
|
|
|
};
|
|
|
|
|
|
if(dataValue.moodBoard?.moodTemplateId)store.commit("setMoodTemplateId", dataValue.moodBoard.moodTemplateId);
|
|
|
|
|
|
store.commit("setAllBoardDataChoose", collectionData);
|
2025-06-18 11:05:23 +08:00
|
|
|
|
if(dataValue.sketchBoards)store.commit("setShowSketchboard", dataValue.sketchBoards);
|
2025-05-20 16:47:27 +08:00
|
|
|
|
let likeDesignCollectionList:any = []
|
|
|
|
|
|
if(dataValue.design?.userLikeDetails){
|
|
|
|
|
|
dataValue.design?.userLikeDetails.map(
|
|
|
|
|
|
(v: any) => {
|
|
|
|
|
|
let dataValue = {
|
|
|
|
|
|
...v,
|
|
|
|
|
|
groupDetailId: v.id,
|
|
|
|
|
|
designItemUrl: v.designOutfitUrl,
|
|
|
|
|
|
designItemId: v.designItemId,
|
|
|
|
|
|
};
|
|
|
|
|
|
return dataValue;
|
|
|
|
|
|
}
|
|
|
|
|
|
);
|
|
|
|
|
|
}
|
2025-06-18 13:36:11 +08:00
|
|
|
|
if(dataValue.design?.userLikeDetails)store.commit("setLikeDesignCollectionList",dataValue.design?.userLikeDetails);
|
|
|
|
|
|
store.commit("setUserGroupId", dataValue.design?.userGroupId);
|
2025-05-20 16:47:27 +08:00
|
|
|
|
if(dataValue.toProduct){
|
|
|
|
|
|
let value = {
|
2025-07-19 14:04:48 +08:00
|
|
|
|
list:dataValue.toProduct.list.filter((rv)=>rv.status != 'Invalid' && rv.status != 'Fail'),
|
|
|
|
|
|
likedList:dataValue.toProduct.likedList,
|
2025-05-20 16:47:27 +08:00
|
|
|
|
str:'add',
|
|
|
|
|
|
index:-1,
|
|
|
|
|
|
}
|
|
|
|
|
|
store.commit("setToProductImage", value);
|
|
|
|
|
|
}
|
|
|
|
|
|
if(dataValue.relight){
|
|
|
|
|
|
let value = {
|
2025-07-19 14:04:48 +08:00
|
|
|
|
list:dataValue.relight.list.filter((rv)=>rv.status != 'Invalid' && rv.status != 'Fail'),
|
|
|
|
|
|
likedList:dataValue.relight.likedList,
|
2025-05-20 16:47:27 +08:00
|
|
|
|
str:'add',
|
|
|
|
|
|
index:-1,
|
|
|
|
|
|
}
|
|
|
|
|
|
store.commit("setRelightList", value);
|
|
|
|
|
|
}
|
|
|
|
|
|
if(dataValue.poseTransfer){
|
|
|
|
|
|
let value = {
|
2025-06-22 13:52:28 +08:00
|
|
|
|
list:dataValue.poseTransfer.list.filter((rv)=>rv.status != 'Invalid' && rv.status != 'Fail'),
|
2025-06-18 11:05:23 +08:00
|
|
|
|
likedList:dataValue.poseTransfer.likedList,
|
2025-05-20 16:47:27 +08:00
|
|
|
|
str:'add',
|
|
|
|
|
|
index:-1,
|
|
|
|
|
|
}
|
|
|
|
|
|
store.commit("setPoseTransfer", value);
|
|
|
|
|
|
}
|
2025-06-09 10:25:54 +08:00
|
|
|
|
if(dataValue.patternMaking3D){
|
|
|
|
|
|
let patternMaking3DData = {
|
2025-06-18 11:05:23 +08:00
|
|
|
|
collectionElementId:dataValue.patternMaking3D.collectionElementId,
|
2025-06-09 10:25:54 +08:00
|
|
|
|
threeDSimpleId:dataValue.patternMaking3D.threeDSimpleId,
|
|
|
|
|
|
url:dataValue.patternMaking3D.printMinioUrl,
|
|
|
|
|
|
printMinioUrl:getMinioUrl(dataValue.patternMaking3D.printMinioUrl),
|
|
|
|
|
|
x:dataValue.patternMaking3D.x,
|
|
|
|
|
|
y:dataValue.patternMaking3D.y,
|
|
|
|
|
|
};
|
|
|
|
|
|
store.commit('setPatternMaking3D',patternMaking3DData)
|
|
|
|
|
|
}
|
2025-07-19 14:04:48 +08:00
|
|
|
|
if(dataValue.deReconstruction){
|
|
|
|
|
|
let deReconstruction = {
|
|
|
|
|
|
str:'add',
|
|
|
|
|
|
list:[
|
|
|
|
|
|
{
|
|
|
|
|
|
isLike:dataValue.deReconstruction.liked,
|
|
|
|
|
|
category:dataValue.deReconstruction.category,
|
|
|
|
|
|
url:dataValue.deReconstruction.collageSketchUrl,
|
|
|
|
|
|
categoryValue:dataValue.deReconstruction.categoryValue,
|
|
|
|
|
|
}
|
|
|
|
|
|
]
|
|
|
|
|
|
};
|
|
|
|
|
|
let uploadImages = {
|
|
|
|
|
|
str:'add',
|
|
|
|
|
|
list:dataValue.deReconstruction?.uploadImages
|
|
|
|
|
|
};
|
|
|
|
|
|
store.commit('setDeReconstructionUploadImages',uploadImages)
|
|
|
|
|
|
}
|
2025-05-20 16:47:27 +08:00
|
|
|
|
}
|
|
|
|
|
|
//统一处理选择组的渲染数据
|
|
|
|
|
|
const dealViewChooseData = (dataValue: any,str:string)=> {
|
|
|
|
|
|
if (!dataValue) {
|
|
|
|
|
|
return [];
|
|
|
|
|
|
}
|
|
|
|
|
|
let filesList = dataValue.map((v: any) => {
|
|
|
|
|
|
let newData: any = {
|
|
|
|
|
|
imgUrl: v.url?v.url:v.designOutfitUrl,
|
|
|
|
|
|
id: v.id,
|
|
|
|
|
|
status: "done",
|
|
|
|
|
|
resData: v,
|
|
|
|
|
|
type_:{
|
|
|
|
|
|
type1:'material',
|
|
|
|
|
|
type2:v.level1Type
|
|
|
|
|
|
}
|
|
|
|
|
|
};
|
|
|
|
|
|
if (v.level1Type === "Sketchboard") {
|
|
|
|
|
|
newData.pin = v.isPin;
|
|
|
|
|
|
newData.categoryValue = v.level2Type;
|
|
|
|
|
|
newData.level2Type = v.level2Type;
|
|
|
|
|
|
}
|
|
|
|
|
|
if (v.level1Type === "Printboard") {
|
|
|
|
|
|
newData.pin = v.isPin;
|
|
|
|
|
|
newData.level2Type = v.level2Type;
|
|
|
|
|
|
newData.categoryValue = v.level2Type;
|
|
|
|
|
|
}
|
|
|
|
|
|
return newData;
|
|
|
|
|
|
});
|
|
|
|
|
|
return filesList;
|
|
|
|
|
|
}
|
|
|
|
|
|
//统一处理选择组的渲染数据
|
|
|
|
|
|
const dealViewChooseColor = (dataValue: any)=>{
|
2025-06-09 10:25:54 +08:00
|
|
|
|
if(!dataValue)return [];
|
2025-05-20 16:47:27 +08:00
|
|
|
|
let colorList = dataValue.map((v: any) => {
|
|
|
|
|
|
let rgbValue = v.rgbValue.split(" ");
|
|
|
|
|
|
let newData: any = {
|
|
|
|
|
|
id: v.id,
|
|
|
|
|
|
name: v.name,
|
|
|
|
|
|
tcx: v.tcx || "",
|
|
|
|
|
|
rgbValue: {
|
|
|
|
|
|
r: rgbValue[0],
|
|
|
|
|
|
g: rgbValue[1],
|
|
|
|
|
|
b: rgbValue[2],
|
|
|
|
|
|
a: 1,
|
|
|
|
|
|
},
|
|
|
|
|
|
};
|
|
|
|
|
|
if(v.gradient){
|
|
|
|
|
|
newData.gradient = v.gradient;
|
|
|
|
|
|
}else{
|
|
|
|
|
|
delete newData.gradient;
|
|
|
|
|
|
}
|
|
|
|
|
|
return newData;
|
|
|
|
|
|
});
|
|
|
|
|
|
return colorList;
|
|
|
|
|
|
}
|
2025-06-18 11:05:23 +08:00
|
|
|
|
let queue = [] as any
|
|
|
|
|
|
let start = false
|
2025-05-20 16:47:27 +08:00
|
|
|
|
const chatChange = (value:any)=>{
|
2025-06-20 11:36:44 +08:00
|
|
|
|
|
2025-06-09 10:25:54 +08:00
|
|
|
|
if(value.type == 'design_control_signal' && dataDom.design){
|
2025-06-18 11:05:23 +08:00
|
|
|
|
queue.push(
|
|
|
|
|
|
{
|
|
|
|
|
|
type:'design',
|
|
|
|
|
|
fun:dataDom.design.designNewCollection,
|
|
|
|
|
|
}
|
|
|
|
|
|
)
|
|
|
|
|
|
// dataDom.design.designNewCollection()
|
|
|
|
|
|
}else{
|
|
|
|
|
|
queue.push(
|
|
|
|
|
|
{
|
|
|
|
|
|
type:'promise',
|
|
|
|
|
|
fun:getCollection,
|
|
|
|
|
|
module:value.module,
|
|
|
|
|
|
str:'design'
|
|
|
|
|
|
}
|
|
|
|
|
|
)
|
|
|
|
|
|
// getCollection('design',value.module)
|
|
|
|
|
|
}
|
|
|
|
|
|
if(!start){
|
|
|
|
|
|
startQueue()
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
const startQueue = async ()=>{
|
|
|
|
|
|
start = true
|
|
|
|
|
|
if(queue[0].type){
|
|
|
|
|
|
if(queue[0].type == 'promise'){
|
|
|
|
|
|
await queue[0].fun(queue[0].str,queue[0].module)
|
|
|
|
|
|
}else{
|
|
|
|
|
|
await queue[0].fun()
|
|
|
|
|
|
}
|
|
|
|
|
|
queue.splice(0,1)
|
|
|
|
|
|
}
|
|
|
|
|
|
if(queue.length>0){
|
|
|
|
|
|
startQueue()
|
2025-05-20 16:47:27 +08:00
|
|
|
|
}else{
|
2025-06-18 11:05:23 +08:00
|
|
|
|
start = false
|
|
|
|
|
|
|
2025-05-20 16:47:27 +08:00
|
|
|
|
}
|
|
|
|
|
|
}
|
2025-05-22 14:26:47 +08:00
|
|
|
|
const newProject = (value:any)=>{
|
2025-06-18 11:05:23 +08:00
|
|
|
|
emit('setNewProject')
|
2025-06-26 15:41:08 +08:00
|
|
|
|
let chatModel = false
|
|
|
|
|
|
if(value.newMode == 'chat'){
|
|
|
|
|
|
chatModel = true
|
|
|
|
|
|
}else{
|
|
|
|
|
|
chatModel = false
|
|
|
|
|
|
}
|
2025-11-11 13:38:36 +08:00
|
|
|
|
router.push(`/home/history/${value?.id}`)
|
|
|
|
|
|
// router.push(`home?history=${value.id}&chatMode=${chatModel}`)
|
2025-09-08 14:50:59 +08:00
|
|
|
|
settingGetHistory()
|
2025-05-22 14:26:47 +08:00
|
|
|
|
data.chatData = value
|
|
|
|
|
|
|
2025-05-21 20:05:08 +08:00
|
|
|
|
}
|
2025-05-20 16:47:27 +08:00
|
|
|
|
return{
|
|
|
|
|
|
...toRefs(dataDom),
|
|
|
|
|
|
...toRefs(data),
|
|
|
|
|
|
setTask,
|
|
|
|
|
|
chatChange,
|
2025-05-21 20:05:08 +08:00
|
|
|
|
newProject,
|
2025-05-20 16:47:27 +08:00
|
|
|
|
}
|
|
|
|
|
|
},
|
|
|
|
|
|
provide() {
|
|
|
|
|
|
return {
|
|
|
|
|
|
}
|
|
|
|
|
|
},
|
|
|
|
|
|
})
|
|
|
|
|
|
</script>
|
|
|
|
|
|
<style lang="less" scoped>
|
|
|
|
|
|
.homeBox{
|
|
|
|
|
|
width: 100%;
|
|
|
|
|
|
height: 100%;
|
|
|
|
|
|
position: relative;
|
|
|
|
|
|
> .show{
|
|
|
|
|
|
width: 100%;
|
|
|
|
|
|
height: 100%;
|
|
|
|
|
|
> .function{
|
|
|
|
|
|
width: 100%;
|
|
|
|
|
|
height: 100%;
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
</style>
|