+
@@ -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 fbd09484..79fe3a57 100644
--- a/src/component/home/tools/toProduct/index.vue
+++ b/src/component/home/tools/toProduct/index.vue
@@ -383,7 +383,11 @@ export default defineComponent({
isDesignPage: {
type: Boolean,
default: false
- }
+ },
+ isState:{
+ type:Boolean,
+ default:false,
+ },
},
emit: ['unLike'],
setup(props, { emit }) {
@@ -402,7 +406,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: ''
@@ -411,17 +438,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,
@@ -454,18 +501,6 @@ export default defineComponent({
value: 'advanced'
}
})
-
- 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
@@ -567,7 +602,6 @@ export default defineComponent({
}
let fileUploadChange = (data: any) => {
- console.log(data)
let file = data.file
let bor = true
if (file.status === 'done') {
@@ -614,9 +648,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
@@ -660,7 +691,6 @@ export default defineComponent({
.then(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
@@ -669,7 +699,6 @@ export default defineComponent({
str: 'add',
index: -1
}
- console.log(value)
if (props.productimgMenu.value == 'ToProductImage') {
store.commit('setToProductImage', value)
} else {
@@ -711,7 +740,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
@@ -827,10 +855,6 @@ export default defineComponent({
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][
@@ -895,7 +919,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 = []
@@ -1062,7 +1085,6 @@ export default defineComponent({
productImgData.isProductimg = true
productImgData.remProductimg = true
productImgData.isShowMark = false
- console.log(taskIdList)
setPrductimg(arr)
}
},
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 38a4b3f5..1d3e2791 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
@@ -464,7 +464,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',