@@ -361,6 +320,7 @@
}"
:isProductimg="true"
>
+
@@ -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',