diff --git a/src/assets/icons/CCopy.svg b/src/assets/icons/CCopy.svg new file mode 100644 index 00000000..0c3cad55 --- /dev/null +++ b/src/assets/icons/CCopy.svg @@ -0,0 +1,2 @@ + + diff --git a/src/assets/icons/CDownload.svg b/src/assets/icons/CDownload.svg new file mode 100644 index 00000000..5e2793ba --- /dev/null +++ b/src/assets/icons/CDownload.svg @@ -0,0 +1,2 @@ + + diff --git a/src/assets/images/product/geneated_dress.png b/src/assets/images/product/geneated_dress.png new file mode 100644 index 00000000..cbbdfa01 Binary files /dev/null and b/src/assets/images/product/geneated_dress.png differ diff --git a/src/assets/images/product/generated_model.png b/src/assets/images/product/generated_model.png new file mode 100644 index 00000000..15c3d176 Binary files /dev/null and b/src/assets/images/product/generated_model.png differ diff --git a/src/assets/images/product/generated_sketch.png b/src/assets/images/product/generated_sketch.png new file mode 100644 index 00000000..37c8d36d Binary files /dev/null and b/src/assets/images/product/generated_sketch.png differ diff --git a/src/assets/images/product/original_dress.png b/src/assets/images/product/original_dress.png new file mode 100644 index 00000000..2ad7f2e5 Binary files /dev/null and b/src/assets/images/product/original_dress.png differ diff --git a/src/assets/images/product/original_model.png b/src/assets/images/product/original_model.png new file mode 100644 index 00000000..c61590d9 Binary files /dev/null and b/src/assets/images/product/original_model.png differ diff --git a/src/component/home/design/collection/ColorboardUpload.vue b/src/component/home/design/collection/ColorboardUpload.vue index 18c9df22..b4abda29 100644 --- a/src/component/home/design/collection/ColorboardUpload.vue +++ b/src/component/home/design/collection/ColorboardUpload.vue @@ -682,7 +682,7 @@ export default defineComponent({ this.colorList[index].gradient = ele.gradient this.colorList[index].name = ele.name }); - this.selectIndex = colorList.length - 1 + this.selectIndex = !colorList.length? 0 : colorList.length - 1 if(this.colorList[colorList.length - 1]?.gradient && this.colorList[colorList.length - 1]?.gradient?.selectIndex>-1 && this.colorList[colorList.length - 1]?.gradient?.gradientShow){ this.selectColor = {rgba:this.colorList[colorList.length - 1].gradient.gradientList[colorList.length - 1].rgba,hex:hex} //顔色选择器默认颜色 }else{ diff --git a/src/component/home/design/index.vue b/src/component/home/design/index.vue index effe0258..8790f4d2 100644 --- a/src/component/home/design/index.vue +++ b/src/component/home/design/index.vue @@ -358,7 +358,7 @@ import selectMenu from '@/component/modules/selectMenu.vue' import { forEach } from "jszip"; export default defineComponent({ - name: "homePage", + name: "designPage", components: { collectionModal, // HeaderComponent, @@ -629,8 +629,6 @@ export default defineComponent({ collItemSize.collValue = Math.floor(parentWidth / collItemSize.widthValue.value) collItemSize.padding = Math.floor(parentWidth - (collItemSize.collValue * collItemSize.widthValue.value)) let value = collItemSize.collValue - console.log(parentWidth,collItemSize,value) - collItemSize.itemStyle.width = (parentWidth - collItemSize.padding - (value * 10)) / value collItemSize.itemStyle.height = collItemSize.itemStyle.width * 1.54 @@ -1504,14 +1502,6 @@ export default defineComponent({ } }, methods: { - // addTeam (team:any) { - // this.likeDesignCollectionList.push(team) - // }, - openSetData(){ - nextTick(()=>{ - this.setItemPosition() - }) - }, setItemPosition(){ this.setSystemDesigner(0) this.setDesignItemStyle() diff --git a/src/component/home/index.vue b/src/component/home/index.vue index 183a4e63..43fcf4fe 100644 --- a/src/component/home/index.vue +++ b/src/component/home/index.vue @@ -4,18 +4,25 @@
-
+ + + + -
+
@@ -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/Prompt.vue b/src/component/home/tools/toProduct/Prompt.vue new file mode 100644 index 00000000..15e20576 --- /dev/null +++ b/src/component/home/tools/toProduct/Prompt.vue @@ -0,0 +1,261 @@ + + + + + diff --git a/src/component/home/tools/toProduct/index.vue b/src/component/home/tools/toProduct/index.vue index baa5dcb5..79fe3a57 100644 --- a/src/component/home/tools/toProduct/index.vue +++ b/src/component/home/tools/toProduct/index.vue @@ -1,16 +1,9 @@ @@ -392,6 +352,7 @@ import { useStore } from 'vuex' import scaleImage from '@/component/HomePage/scaleImage.vue' import generalMenu from '@/component/HomePage/generalMenu.vue' import generalDrag from '@/component/modules/generalDrag.vue' +import Prompt from './Prompt.vue' import { List } from 'echarts' import { useRouter, useRoute } from 'vue-router' @@ -399,7 +360,8 @@ export default defineComponent({ components: { scaleImage, generalMenu, - generalDrag + generalDrag, + Prompt }, props: { setTask: { @@ -421,7 +383,11 @@ export default defineComponent({ isDesignPage: { type: Boolean, default: false - } + }, + isState:{ + type:Boolean, + default:false, + }, }, emit: ['unLike'], setup(props, { emit }) { @@ -440,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: '' @@ -449,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, @@ -492,25 +501,6 @@ export default defineComponent({ value: 'advanced' } }) - - // 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 - } - } - ) const productImgDom = reactive({ generalDragLeft: null as any, generalDragRight: null as any @@ -612,7 +602,6 @@ export default defineComponent({ } let fileUploadChange = (data: any) => { - console.log(data) let file = data.file let bor = true if (file.status === 'done') { @@ -659,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 @@ -705,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 @@ -714,7 +699,6 @@ export default defineComponent({ str: 'add', index: -1 } - console.log(value) if (props.productimgMenu.value == 'ToProductImage') { store.commit('setToProductImage', value) } else { @@ -756,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 @@ -872,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][ @@ -940,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 = [] @@ -974,31 +952,6 @@ export default defineComponent({ scaleImage.value.init(arr, index) scaleImage.value.isComparison = true } - let generalIsMenuShow: any = {} - let setMenuShow = (item: any) => { - item.menuShow = true - generalIsMenuShow = item - document.addEventListener('click', removeMenuShow) - } - let setMenu = (menuItem: any, item: any) => { - // props.productimgMenu = menuItem - // if(!selectList.value[props.productimgMenu.value]){ - // selectList.value[props.productimgMenu.value] = [] - // } - // selectList.value[props.productimgMenu.value].forEach((item:any) => { - // item.isChecked = false - // }); - // if(selectList.value[menuItem.value].indexOf(item) == -1){ - // item.isChecked = true - // selectList.value[menuItem.value].push(item) - // } - // generalIsMenuShow.menuShow = false - } - let removeMenuShow = () => { - generalIsMenuShow.menuShow = false - generalIsMenuShow = {} - document.removeEventListener('click', removeMenuShow) - } let setSimilarity = (num: any) => {} //超分 @@ -1132,7 +1085,6 @@ export default defineComponent({ productImgData.isProductimg = true productImgData.remProductimg = true productImgData.isShowMark = false - console.log(taskIdList) setPrductimg(arr) } }, @@ -1140,22 +1092,18 @@ export default defineComponent({ ) onMounted(() => { ifMaximumLength() - console.log('来源:---', props.source, props.isDesignPage) }) - + // 计算属性:根据条件生成提示词列表 const promptTextList = computed(() => { const isFromDesignPage = props.source === 'design' || props.isDesignPage const { ageGroup, httpType } = store.state.Workspace.probjects const isSingleDesign = httpType === 'SINGLE_DESIGN' const isAdult = ageGroup === 'Adult' - + if (!isFromDesignPage) { // 如果不是从design来的,返回两个提示词 - return [ - t('poseTransfer.UploadWithModel'), - t('poseTransfer.UploadWithoutModel') - ] + return [t('poseTransfer.UploadWithModel'), t('poseTransfer.UploadWithoutModel')] } else { // 如果是从design来的 if (isSingleDesign) { @@ -1163,10 +1111,7 @@ export default defineComponent({ const secondPrompt = isAdult ? t('poseTransfer.SingleAdultTryOn') : t('poseTransfer.SingleChildTryOn') - return [ - t('poseTransfer.SingleGarment'), - secondPrompt - ] + return [t('poseTransfer.SingleGarment'), secondPrompt] } else { // SERIES_DESIGN: 一个提示词 return [ @@ -1177,7 +1122,12 @@ export default defineComponent({ } } }) - + + const showPromptAssist = ref(false) + const handleClickAssistBtn = () => { + showPromptAssist.value = true + } + return { upload, driver__, @@ -1189,6 +1139,7 @@ export default defineComponent({ RelightDirectionList, RelightDirection, promptTextList, + showPromptAssist, setproduct, fileUploadChange, @@ -1200,8 +1151,6 @@ export default defineComponent({ removeProductimg, scaleImage, setScaleImage, - setMenu, - setMenuShow, setSimilarity, setTask, selectSetBtn, @@ -1211,7 +1160,8 @@ export default defineComponent({ ifMaximumLength, openSpeed, setSpeed, - locale + locale, + handleClickAssistBtn } }, directives: { @@ -1249,26 +1199,6 @@ export default defineComponent({ mounted() { this.token = getCookie('token') || '' this.uploadUrl = getUploadUrl() - }, - methods: { - // init(list:any,index:any,dialogueIndex:any){ - // }, - // cancelDsign(){ - // this.productImg = false - // // this.productImgList = [] - // // this.productImgIndex = 0 - // }, - // download(){ - // // downloadIamge(this.productImgList[this.productImgIndex].imgUrl) - // }, - // setScaleImageIndex(index:any){ - // // this.productImgIndex = index - // // console.log(this.productImgIndex); - // }, - // LikeFile(item:any,str:string){ - // let parent:any = this.$parent - // parent.likeFile(item,str) - // }, } }) @@ -1319,68 +1249,13 @@ export default defineComponent({ .productImg_content_item_intro { font-size: 1.4rem; } -// .productImg_content_item_imgBox{ -// display: flex; -// overflow-x: auto; -// width: auto; -// margin-bottom: 2rem; -// align-items: center; -// flex-wrap: nowrap; -// .content_item_imgBox_itemImg{ -// display: flex; -// margin-right: 1rem; -// position: relative; -// height: 36rem; -// max-height: 100%; -// position: relative; -// img{ -// height: 100%; -// width: 100%; -// cursor: pointer; -// object-fit: contain; -// opacity: .5; -// &.active{ -// opacity: 1; -// } -// } -// .ant-checkbox-wrapper{ -// position: absolute; -// right: 0; -// top: 0; -// } -// &.content_item_imgBox_itemImg:hover{ -// .content_item_imgBox_itemImg_delete{ -// display: block; -// cursor: pointer; -// } -// } -// .content_item_imgBox_itemImg_delete{ -// display: none; -// width: 100%; -// height: 100%; -// background: rgba(0,0,0,.2); -// position: absolute; -// i{ -// position: absolute; -// left: 50%; -// top: 50%; -// transform: translate(-50%,-50%); -// color: #fff; -// } -// } -// } -// .content_item_imgBox_itemImg:last-child{ -// margin-right: 0; -// } -// } .selectImg { display: flex; flex-direction: column; > .imgBox { flex: 1; max-height: 45rem; - margin-top: 2rem; display: flex; flex-direction: row; flex-wrap: nowrap; @@ -1388,17 +1263,19 @@ export default defineComponent({ width: 100%; overflow: hidden; overflow-x: auto; + column-gap: 1rem; // &.active > .item { - margin-right: 1rem; - width: calc(100% / 2 - 0.5rem); + // margin-right: 1rem; + // width: calc(100% / 2 - 0.5rem); + width: 9.6rem; cursor: pointer; overflow: hidden; display: flex; justify-content: center; flex-shrink: 0; - height: 25rem; + height: 13.4rem; position: relative; // &.active{ // border: 2px solid; @@ -1453,7 +1330,8 @@ export default defineComponent({ } > .head { color: #000; - font-weight: 600; + // font-weight: 600; + margin-bottom: 2rem; > .text { display: inline-block; font-size: 1.6rem; @@ -1500,6 +1378,7 @@ export default defineComponent({ flex-shrink: 0; height: 25rem; position: relative; + > .imgBox { width: 100%; } @@ -1665,4 +1544,45 @@ export default defineComponent({ .designPage { margin-right: 4rem; } + + +.prompt-container { + margin-top: 4rem; + margin-bottom: 3rem; + position: relative; + .prompt-title { + margin-bottom: 1.4rem; + font-size: 1.6rem; + // margin-bottom: 1rem; + } + .input_border { + padding-bottom: 0; + .input_box { + .input_box_btnBox .textarea { + min-height: 12.7rem; + } + } + } + .asistant-btn { + // width: 9rem; + padding: 0.45rem 0.6rem; + font-size: 1rem; + font-weight: 400; + color: #313131; + position: absolute; + bottom: 1.3rem; + left: 1.3rem; + display: flex; + column-gap: 0.3rem; + justify-content: center; + align-items: center; + background-color: #f2f2f2; + border: 1px solid #dfdfdf; + border-radius: 0.5rem; + cursor: pointer; + .asistant-icon { + font-size: 1rem; + } + } +} 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/lang/cn.ts b/src/lang/cn.ts index 129c5fc5..ba944cda 100644 --- a/src/lang/cn.ts +++ b/src/lang/cn.ts @@ -279,7 +279,12 @@ export default { Clear: '清空', jsContent1: '如果您离开此页,您的更改将会丢失。您确定要离开这一页吗?', jsContent2: '请至少选择一张图片', - jsContent3: '您有一张图生成失败,请重试。' + jsContent3: '您有一张图生成失败,请重试。', + Prompt: '提示词', + PromptAssit: '提示词助手', + AssitSubTitle: '您可以复制并使用以下提示词:', + CopySuccess: '已复制到剪贴板', + CopyFiled: '复制失败' }, poseTransfer: { SelectDesign: '产品图', diff --git a/src/lang/en.ts b/src/lang/en.ts index 87cb88aa..3dea1eea 100644 --- a/src/lang/en.ts +++ b/src/lang/en.ts @@ -289,7 +289,12 @@ export default { jsContent1: 'Your changes will be lost if you navigate away from this page. Are you sure you want to leave this page?', jsContent2: 'Please select at least one picture', - jsContent3: 'One of your images failed to generate. Please try again.' + jsContent3: 'One of your images failed to generate. Please try again.', + Prompt: 'Prompt', + PromptAssit: 'Prompt Assit', + AssitSubTitle: 'You can copy following prompt and try:', + CopySuccess: 'Copied to clipboard', + CopyFiled: 'Failed to copy' }, poseTransfer: { SelectDesign: 'Product image', @@ -312,7 +317,7 @@ export default { UploadWithModel: 'Create realistic studio photo with model wearing this garment. Keep original model if present, or generate appropriate model. Standing pose, facing camera. Preserve exact garment details - patterns, colors, textures, embellishments.', // 上传线稿,带模特 UploadWithoutModel: - 'Professional product photo: garment displayed with natural shape, no model. Studio lighting. Preserve exact details - patterns, colors, textures, embellishments.', // 上传线稿,不带模特 + 'Professional product photo: garment displayed with natural shape, no model. Studio lighting. Preserve exact details - patterns, colors, textures, embellishments.' // 上传线稿,不带模特 }, LibraryPage: { library: 'Library', 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',