+
@@ -33,14 +40,13 @@ import { Https } from "@/tool/https";
import { useStore } from "vuex";
import { useI18n } from 'vue-i18n'
import { useRouter,useRoute } from 'vue-router'
-import design from "./design/index.vue"
import newPorject from "./newProject/index.vue"
import router from '@/router';
import {getMinioUrl, getUniversalZoomLevel} from '@/tool/util'
import chat from "./chat/index.vue"
export default defineComponent({
components:{
- design,newPorject,chat
+ newPorject,chat
},
emits:['setTask','setNewProject'],
setup(props,{emit}) {
@@ -54,6 +60,7 @@ export default defineComponent({
selectObject:computed(()=>store.state.Workspace.probjects) as any,//选择的项目
chatData:null as any,
dataLoad:true as any,
+ cachedRoutes:computed(()=>store.state.Workspace.cachedRoutes),//
})
let settingGetHistory:any = inject('settingGetHistory')
const setIsShowMark = (boolean:boolean)=>{
@@ -72,15 +79,33 @@ export default defineComponent({
// getHistory(route.query.history)
// }
// })
-
+ watch(
+ () => route,
+ (newRoute) => {
+ const routeName = newRoute.name as string
+ const shouldCache = newRoute.meta?.cache === true
+ if (shouldCache && routeName && !data.cachedRoutes.includes(routeName)) {
+ if(routeName == 'toolsPage' && !route.query?.id)return
+ 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 }
+ )
watch(() => route.query,
(query:any, oldQuery:any) => {
data.routeQuery = query
if(query.history)data.componentKey = query.history
- const key = Object.keys(query)?.[0]
- console.log(key)
+ let key = Object.keys(query)?.[0]
+ if(route.params?.id)key = 'history'
if(key){
- data.openType = Object.keys(query)[0]
+ data.openType = key
}else{
data.openType = ''
data.dataLoad = false
@@ -90,26 +115,26 @@ export default defineComponent({
// 检查是否需要重新初始化
const currentPath = route.fullPath
const storedPath = store.state.Workspace.projectPath
- const isSameProject = currentPath === storedPath && data.openType === 'history'
+ const isSameProject = currentPath === storedPath
- if(data.openType == 'history'){
+ if((data.openType == 'history' && route.params?.id) || (data.openType == 'tools' && query.id)){
store.commit('setProjectPath',route.fullPath)
}
// 如果是同一个项目且openType为history,跳过重新初始化
- console.log(isSameProject,data.openType)
- if(isSameProject || (!query.history && !query.id)){
+ // 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){
data.dataLoad = false
- console.log(dataDom.design)
// dataDom.design?.init()
- if(query.history){
- dataDom.design.openSetData()
- }
return
}
-
nextTick(()=>{
- if(query.history || query.id){
+ if(route.params?.id || query?.id){
//切换新项目需要清除首次design提示
sessionStorage.removeItem('firstDesign');
@@ -125,7 +150,7 @@ export default defineComponent({
store.commit("createProbject");
store.commit("clearAllData");
}
- getHistory(query.id || query.history)
+ getHistory(query.id || route.params?.id)
}else{
data.dataLoad = false
createData()
@@ -201,7 +226,7 @@ export default defineComponent({
storeData.positionList = position
store.commit('setProbject',storeData)
// setChatData()
- if(route.name == 'tools'){
+ if(route.name == 'toolsPage'){
getCollection('tools',null)
}else{
getCollection('design',null)
@@ -548,7 +573,8 @@ export default defineComponent({
}else{
chatModel = false
}
- router.push(`home?history=${value.id}&chatMode=${chatModel}`)
+ router.push(`/home/history/${value?.id}`)
+ // router.push(`home?history=${value.id}&chatMode=${chatModel}`)
settingGetHistory()
data.chatData = value
diff --git a/src/component/home/tools/poseTransfer/index.vue b/src/component/home/tools/poseTransfer/index.vue
index 94ad1517..3d27c509 100644
--- a/src/component/home/tools/poseTransfer/index.vue
+++ b/src/component/home/tools/poseTransfer/index.vue
@@ -171,8 +171,20 @@ export default defineComponent({
CollectionType:'PoseTransfer',
},
waitList:[],
- likeList:computed(()=>store.state.HomeStoreModule.poseTransfer.likedList),
- noLikeList:computed(()=>store.state.HomeStoreModule.poseTransfer.list),
+ likeList:computed(()=>{
+ if(!route.query?.id && route.query.tools == 'poseTransfer'){
+ return []
+ }else{
+ return store.state.HomeStoreModule.poseTransfer.likedList
+ }
+ }),
+ noLikeList:computed(()=>{
+ if(!route.query?.id && route.query.tools == 'poseTransfer'){
+ return []
+ }else{
+ return store.state.HomeStoreModule.poseTransfer.list
+ }
+ }),
isGenerate:false,//判断是否正在进行generate
remGenerate:false,
removeGenerate:false,
diff --git a/src/component/home/tools/toProduct/index.vue b/src/component/home/tools/toProduct/index.vue
index e66397bf..6c60ce63 100644
--- a/src/component/home/tools/toProduct/index.vue
+++ b/src/component/home/tools/toProduct/index.vue
@@ -246,6 +246,10 @@ export default defineComponent({
type:Boolean,
default:false,
},
+ isState:{
+ type:Boolean,
+ default:false,
+ },
},
emit:['unLike'],
setup(props,{emit}) {
@@ -264,7 +268,30 @@ export default defineComponent({
const createProbject:any = inject('createProbject',()=>{})
let productImgData:any = reactive({
isShowMark:false,
- fileList:{},
+ fileList:{
+ ToProductImage:computed(()=>{
+ if(!route.query?.id && route.query.tools == 'toProduct'){
+ return []
+ }else{
+ if(props.isDesignPage)return []
+ if(store.state.HomeStoreModule.uploadElement?.[0]){
+ store.state.HomeStoreModule.uploadElement[0].isChecked = true
+ }
+ return store.state.HomeStoreModule.uploadElement
+ }
+ }),
+ Relight:computed(()=>{
+ if(!route.query?.id && route.query.tools == 'relight'){
+ return []
+ }else{
+ if(props.isDesignPage)return []
+ if(store.state.HomeStoreModule.uploadElement?.[0]){
+ store.state.HomeStoreModule.uploadElement[0].isChecked = true
+ }
+ return store.state.HomeStoreModule.uploadElement
+ }
+ }),
+ },
searchName:{
ToProductImage:'',
Relight:'',
@@ -273,13 +300,37 @@ export default defineComponent({
isProductimg:false,//开始生成
selectProductimgList:[],
generateList:{
- ToProductImage:computed(()=>store.state.HomeStoreModule.toProductImageList.list),
- Relight:computed(()=>store.state.HomeStoreModule.relightList.list),
+ ToProductImage:computed(()=>{
+ if(!route.query?.id && route.query.tools == 'toProduct'){
+ return []
+ }else{
+ return store.state.HomeStoreModule.toProductImageList.list
+ }
+ }),
+ Relight:computed(()=>{
+ if(!route.query?.id && route.query.tools == 'relight'){
+ return []
+ }else{
+ return store.state.HomeStoreModule.relightList.list
+ }
+ }),
},
selectObject:computed(()=>store.state.Workspace.probjects),//选择的项目
likeList:{
- ToProductImage:computed(()=>store.state.HomeStoreModule.toProductImageList.likedList),
- Relight:computed(()=>store.state.HomeStoreModule.relightList.likedList),
+ ToProductImage:computed(()=>{
+ if(!route.query?.id && route.query.tools == 'toProduct'){
+ return []
+ }else{
+ return store.state.HomeStoreModule.toProductImageList.likedList
+ }
+ }),
+ Relight:computed(()=>{
+ if(!route.query?.id && route.query.tools == 'relight'){
+ return []
+ }else{
+ return store.state.HomeStoreModule.relightList.likedList
+ }
+ }),
} as any,
similarity:30,
brightenValue:1,
@@ -312,20 +363,14 @@ export default defineComponent({
},
})
- // watch(() => route.query.id,
- // (query:any, oldQuery:any) => {
- // if(oldQuery && query != oldQuery){
- // productImgData.generateList = []
- // }
- // },
- // );
- watch(()=>store.state.HomeStoreModule.uploadElement.length,(newVal,oldVal)=>{
- if(props.isDesignPage)return
- productImgData.fileList[props.productimgMenu.value] = store.state.HomeStoreModule.uploadElement
- if(productImgData.fileList[props.productimgMenu.value][0]){
- productImgData.fileList[props.productimgMenu.value][0].isChecked = true
- }
- })
+
+ // watch(()=>store.state.HomeStoreModule.uploadElement.length,(newVal,oldVal)=>{
+ // if(props.isDesignPage)return
+ // productImgData.fileList[props.productimgMenu.value] = store.state.HomeStoreModule.uploadElement
+ // if(productImgData.fileList[props.productimgMenu.value][0]){
+ // productImgData.fileList[props.productimgMenu.value][0].isChecked = true
+ // }
+ // })
const productImgDom = reactive({
generalDragLeft:null as any,
generalDragRight:null as any,
@@ -425,7 +470,6 @@ export default defineComponent({
}
let fileUploadChange = (data: any)=> {
- console.log(data)
let file = data.file;
let bor = true
if (file.status === "done") {
@@ -472,7 +516,6 @@ export default defineComponent({
CollectionType:props.productimgMenu.value,
}
}
- console.log(!!((isJpgOrPng && isLt2M && productImgData.selectObject.id) || Upload.LIST_IGNORE))
return !!((isJpgOrPng && isLt2M && productImgData.selectObject.id) || Upload.LIST_IGNORE);
}
let setGenerate = (item:any)=>{
@@ -509,7 +552,6 @@ export default defineComponent({
(rv) => {
if(str == 'like'){
// if(rv?.sort)item.sort = rv.sort
- console.log(rv)
if(rv?.sort)item.oldSort = rv.sort
if(rv?.id)item.userLikeSortId = rv.id
item.newLike = true
@@ -518,7 +560,6 @@ export default defineComponent({
str:'add',
index:-1,
}
- console.log(value)
if(props.productimgMenu.value == 'ToProductImage'){
store.commit("setToProductImage", value);
}else{
@@ -562,7 +603,6 @@ export default defineComponent({
}
if(productImgData.fileList[props.productimgMenu.value]){
productImgData.fileList[props.productimgMenu.value].forEach((item:any)=>{
- console.log(item)
if(item.isChecked){
if(item.resultType == 'Design'){
obj.elementId = item.designOutfitId
@@ -662,8 +702,6 @@ export default defineComponent({
if(element.status == 'Success'){
element.imgUrl = element.url
let index = productImgData.generateList[props.productimgMenu.value].findIndex((obj:any) => obj.taskId === element.taskId);
- console.log(productImgData.generateList[props.productimgMenu.value][index])
- console.log(element)
for (const key in element) {
if(element[key]){
productImgData.generateList[props.productimgMenu.value][index][key] = element[key]
@@ -716,7 +754,6 @@ export default defineComponent({
timeZone:Intl.DateTimeFormat().resolvedOptions().timeZone,
type:props.productimgMenu.value,
}
- console.log(productImgData.generateList[props.productimgMenu.value].value,)
Https.axiosGet(Https.httpUrls.generateStopWaiting, {params:data}).then(
(rv) => {
generateProceedList = []
@@ -888,7 +925,6 @@ export default defineComponent({
productImgData.isProductimg = true
productImgData.remProductimg = true
productImgData.isShowMark = false
- console.log(taskIdList)
setPrductimg(arr)
}
},{immediate: true })
diff --git a/src/component/toolsPage/index.vue b/src/component/toolsPage/index.vue
index 35210fcb..f3caccac 100644
--- a/src/component/toolsPage/index.vue
+++ b/src/component/toolsPage/index.vue
@@ -92,9 +92,10 @@ export default defineComponent({
(query:any, oldQuery:any) => {
if(oldQuery && query?.tools == oldQuery?.tools)return
const key = Object.keys(query)?.[0]
- if(route.name == 'tools' && key){
+ if(route.name == 'toolsPage' && key){
data.openType = query[key]
nextTick(()=>{
+ if(route.fullPath === store.state.Workspace.projectPath)return
open(query[key])
})
}
diff --git a/src/router/index.ts b/src/router/index.ts
index 88a0dbdd..a28a7f9d 100644
--- a/src/router/index.ts
+++ b/src/router/index.ts
@@ -67,8 +67,8 @@ const routes: Array
= [
children: [
{
path: "tools",
- name: "tools",
- meta: { enter: "all" },
+ name: "toolsPage",
+ meta: { enter: "all",cache:true },
component: () => import("@/views/HomeView/Tools.vue"),
},
// {
@@ -88,6 +88,18 @@ const routes: Array = [
name: "history",
meta: { enter: "all" },
component: () => import("@/views/HomeView/history.vue"),
+ },
+ // {
+ // path: "history/:type/:id",
+ // name: "toolsPage",
+ // meta: { enter: "all",cache:true },
+ // component: () => import("@/views/HomeView/Tools.vue"),
+ // },
+ {
+ path: "history/:id",
+ name: "designPage",
+ meta: { enter: "all",cache:true },
+ component: () => import("@/component/home/design/index.vue"),
},
{
path: "works",
diff --git a/src/store/homeStore/homeStore.ts b/src/store/homeStore/homeStore.ts
index 58052261..a46cda3c 100644
--- a/src/store/homeStore/homeStore.ts
+++ b/src/store/homeStore/homeStore.ts
@@ -127,6 +127,7 @@ const HomeStoreModule : Module = {
}
},
toolsClear(state){
+ console.log('toolsClear')
state.relightList.likedList = []
state.uploadElement = []
state.toProductImageList.likedList = []
@@ -225,6 +226,7 @@ const HomeStoreModule : Module = {
state.designId = ''
},
clearAllCollection(state){
+ console.log('clearAll')
state.designCollectionList=[]
state.likeDesignCollectionList = []
state.designCollectionId = ''
diff --git a/src/store/workspace/workspace.ts b/src/store/workspace/workspace.ts
index 626f1c29..e74c9ecf 100644
--- a/src/store/workspace/workspace.ts
+++ b/src/store/workspace/workspace.ts
@@ -45,7 +45,8 @@ const Workspace: Module = {
model: [] //模特
},
projectList: [], //项目列表参数
- projectPath:''
+ projectPath:'',
+ cachedRoutes: [],
},
mutations: {
setWorkspace(state, files) {
diff --git a/src/views/HomeMain.vue b/src/views/HomeMain.vue
index 786745f9..1cdd34af 100644
--- a/src/views/HomeMain.vue
+++ b/src/views/HomeMain.vue
@@ -59,8 +59,8 @@
class="current-projct"
@click="handleNavigateToCurrentProject"
:class="{
- disabled: disabledCurrentProject,
- filled: !disabledCurrentProject,
+ disabled: cachedRoutes.length == 0,
+ filled: cachedRoutes.length > 0,
active: currentProjectActive
}"
>
@@ -522,7 +522,8 @@ export default defineComponent({
},
bathGenerationList: ['poseTransfer', 'SERIES_DESIGN', 'toProduct', 'relight'],
showHistory: false,
- isNewProject: false
+ isNewProject: false,
+ cachedRoutes:computed(()=>store.state.Workspace.cachedRoutes),//
})
let userDetail = computed(() => {
return store.state.UserHabit.userDetail
@@ -1029,6 +1030,7 @@ export default defineComponent({
if (currentProjectActive.value) return
if (currentProjectPath.value) {
router.push(currentProjectPath.value)
+ // router.back()
}
}
diff --git a/src/views/HomeView/Tools.vue b/src/views/HomeView/Tools.vue
index d8a0b2e4..d705c3e5 100644
--- a/src/views/HomeView/Tools.vue
+++ b/src/views/HomeView/Tools.vue
@@ -11,6 +11,7 @@ import { useStore } from "vuex";
import { useI18n } from 'vue-i18n'
import tools from '@/component/toolsPage/index.vue'
export default defineComponent({
+ name: "toolsPage",
components:{
tools,
},
diff --git a/src/views/HomeView/history.vue b/src/views/HomeView/history.vue
index 1537edd5..936bf617 100644
--- a/src/views/HomeView/history.vue
+++ b/src/views/HomeView/history.vue
@@ -163,7 +163,7 @@ export default defineComponent({
if (record.text == 1) {
str = useI18n().t('newScaleImage.Original')
} else {
- str = `@${record.record.originalAccountName}/${record.record.originalPortfolioName}`
+ str = `@${record.record.userLikeGroupVO.originalAccountName}/${record.record.userLikeGroupVO.originalPortfolioName}`
}
// let time = formatTime(record.text / 1000, 'YYYY-MM-DD hh:mm:ss')
return str
@@ -463,7 +463,8 @@ export default defineComponent({
// router.push(`/home/tools?tools=toProduct&id=${childItem.id}`)
if (record.process == 'SERIES_DESIGN' || record.process == 'SINGLE_DESIGN') {
- this.$router.push(`/home?history=${record?.id}`)
+ this.$router.push(`/home/history/${record?.id}`)
+ // this.$router.push(`/home?history=${record?.id}`)
} else {
let processList = {
toProduct: 'TO_PRODUCT_IMAGE',