Merge branch 'dev_vite' of http://18.167.251.121:10003/aidlab/aida_front into dev_vite

This commit is contained in:
李志鹏
2025-11-11 14:28:44 +08:00
22 changed files with 518 additions and 275 deletions

View File

@@ -0,0 +1,2 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg xmlns="http://www.w3.org/2000/svg" id="Layer_1" data-name="Layer 1" viewBox="0 0 24 24" width="512" height="512"><path d="m16,18.5v1c0,2.481-2.019,4.5-4.5,4.5h-7c-2.481,0-4.5-2.019-4.5-4.5v-7c0-2.481,2.019-4.5,4.5-4.5h1c.276,0,.5.224.5.5s-.224.5-.5.5h-1c-1.93,0-3.5,1.57-3.5,3.5v7c0,1.93,1.57,3.5,3.5,3.5h7c1.93,0,3.5-1.57,3.5-3.5v-1c0-.276.224-.5.5-.5s.5.224.5.5Zm8-14v7c0,2.481-2.019,4.5-4.5,4.5h-7c-2.481,0-4.5-2.019-4.5-4.5v-7c0-2.481,2.019-4.5,4.5-4.5h7c2.481,0,4.5,2.019,4.5,4.5Zm-1,0c0-1.93-1.57-3.5-3.5-3.5h-7c-1.93,0-3.5,1.57-3.5,3.5v7c0,1.93,1.57,3.5,3.5,3.5h7c1.93,0,3.5-1.57,3.5-3.5v-7Z"/></svg>

After

Width:  |  Height:  |  Size: 652 B

View File

@@ -0,0 +1,2 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg xmlns="http://www.w3.org/2000/svg" id="Layer_1" data-name="Layer 1" viewBox="0 0 24 24" width="512" height="512"><path d="M23.5,24H.5c-.28,0-.5-.22-.5-.5s.22-.5,.5-.5H23.5c.28,0,.5,.22,.5,.5s-.22,.5-.5,.5Zm-8.83-4.09l6.56-7.35c.77-.77,.98-1.88,.57-2.88-.42-1.01-1.36-1.65-2.45-1.65h-2.34V3.47c0-1.92-1.57-3.47-3.51-3.47h-2.99c-1.93,0-3.51,1.56-3.51,3.47v4.55s-2.33,0-2.33,0c-1.1,0-2.04,.64-2.45,1.65s-.19,2.12,.56,2.88l6.59,7.38c.73,.73,1.68,1.09,2.64,1.09s1.93-.37,2.67-1.11ZM7.5,9.03c.13,0,.26-.05,.35-.15s.15-.22,.15-.35V3.47c0-1.36,1.12-2.47,2.5-2.47h2.99c1.38,0,2.51,1.11,2.51,2.47v5.05c0,.28,.22,.5,.5,.5h2.84c.82,0,1.33,.54,1.53,1.03,.2,.5,.21,1.23-.36,1.81,0,0-.01,.01-.02,.02l-6.55,7.34c-1.07,1.07-2.81,1.07-3.86,.02L3.49,11.86c-.58-.58-.57-1.31-.36-1.81,.2-.5,.71-1.03,1.53-1.03h2.84Z"/></svg>

After

Width:  |  Height:  |  Size: 848 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 58 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 101 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 101 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 52 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 49 KiB

View File

@@ -682,7 +682,7 @@ export default defineComponent({
this.colorList[index].gradient = ele.gradient this.colorList[index].gradient = ele.gradient
this.colorList[index].name = ele.name 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){ 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} //顔色选择器默认颜色 this.selectColor = {rgba:this.colorList[colorList.length - 1].gradient.gradientList[colorList.length - 1].rgba,hex:hex} //顔色选择器默认颜色
}else{ }else{

View File

@@ -358,7 +358,7 @@ import selectMenu from '@/component/modules/selectMenu.vue'
import { forEach } from "jszip"; import { forEach } from "jszip";
export default defineComponent({ export default defineComponent({
name: "homePage", name: "designPage",
components: { components: {
collectionModal, collectionModal,
// HeaderComponent, // HeaderComponent,
@@ -629,8 +629,6 @@ export default defineComponent({
collItemSize.collValue = Math.floor(parentWidth / collItemSize.widthValue.value) collItemSize.collValue = Math.floor(parentWidth / collItemSize.widthValue.value)
collItemSize.padding = Math.floor(parentWidth - (collItemSize.collValue * collItemSize.widthValue.value)) collItemSize.padding = Math.floor(parentWidth - (collItemSize.collValue * collItemSize.widthValue.value))
let value = collItemSize.collValue let value = collItemSize.collValue
console.log(parentWidth,collItemSize,value)
collItemSize.itemStyle.width = (parentWidth - collItemSize.padding - (value * 10)) / value collItemSize.itemStyle.width = (parentWidth - collItemSize.padding - (value * 10)) / value
collItemSize.itemStyle.height = collItemSize.itemStyle.width * 1.54 collItemSize.itemStyle.height = collItemSize.itemStyle.width * 1.54
@@ -1504,14 +1502,6 @@ export default defineComponent({
} }
}, },
methods: { methods: {
// addTeam (team:any) {
// this.likeDesignCollectionList.push(team)
// },
openSetData(){
nextTick(()=>{
this.setItemPosition()
})
},
setItemPosition(){ setItemPosition(){
this.setSystemDesigner(0) this.setSystemDesigner(0)
this.setDesignItemStyle() this.setDesignItemStyle()

View File

@@ -4,18 +4,25 @@
<a-spin size="large" /> <a-spin size="large" />
</div> </div>
<div class="show"> <div class="show">
<div v-show="openType === 'history'" class="function"> <!-- <div v-show="openType === 'history'" class="function">
<design :key="componentKey" ref="design"></design> <design :key="componentKey" ref="design"></design>
</div> </div> -->
<router-view v-if=" <router-view v-if="
(openType && openType != 'history' && !routeQuery.id) || (openType && openType != 'history' && !routeQuery.id) ||
$route.path != '/home'" $route.path != '/home'"
@setTask="setTask" @setTask="setTask"
v-slot="{ Component, route }"
> >
<keep-alive :include="cachedRoutes">
<component
:is="Component"
:key="route.name"
/>
</keep-alive>
</router-view> </router-view>
<div v-else-if="routeQuery.id" class="function"> <!-- <div v-else-if="routeQuery.id" class="function">
<design :key="componentKey" ref="design"></design> <design :key="componentKey" ref="design"></design>
</div> </div> -->
<div v-else-if="!routeQuery.history" class="function"> <div v-else-if="!routeQuery.history" class="function">
<newPorject ref="newPorject" @newProject=newProject></newPorject> <newPorject ref="newPorject" @newProject=newProject></newPorject>
</div> </div>
@@ -33,14 +40,13 @@ import { Https } from "@/tool/https";
import { useStore } from "vuex"; import { useStore } from "vuex";
import { useI18n } from 'vue-i18n' import { useI18n } from 'vue-i18n'
import { useRouter,useRoute } from 'vue-router' import { useRouter,useRoute } from 'vue-router'
import design from "./design/index.vue"
import newPorject from "./newProject/index.vue" import newPorject from "./newProject/index.vue"
import router from '@/router'; import router from '@/router';
import {getMinioUrl, getUniversalZoomLevel} from '@/tool/util' import {getMinioUrl, getUniversalZoomLevel} from '@/tool/util'
import chat from "./chat/index.vue" import chat from "./chat/index.vue"
export default defineComponent({ export default defineComponent({
components:{ components:{
design,newPorject,chat newPorject,chat
}, },
emits:['setTask','setNewProject'], emits:['setTask','setNewProject'],
setup(props,{emit}) { setup(props,{emit}) {
@@ -54,6 +60,7 @@ export default defineComponent({
selectObject:computed(()=>store.state.Workspace.probjects) as any,//选择的项目 selectObject:computed(()=>store.state.Workspace.probjects) as any,//选择的项目
chatData:null as any, chatData:null as any,
dataLoad:true as any, dataLoad:true as any,
cachedRoutes:computed(()=>store.state.Workspace.cachedRoutes),//
}) })
let settingGetHistory:any = inject('settingGetHistory') let settingGetHistory:any = inject('settingGetHistory')
const setIsShowMark = (boolean:boolean)=>{ const setIsShowMark = (boolean:boolean)=>{
@@ -72,15 +79,33 @@ export default defineComponent({
// getHistory(route.query.history) // 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, watch(() => route.query,
(query:any, oldQuery:any) => { (query:any, oldQuery:any) => {
data.routeQuery = query data.routeQuery = query
if(query.history)data.componentKey = query.history if(query.history)data.componentKey = query.history
const key = Object.keys(query)?.[0] let key = Object.keys(query)?.[0]
console.log(key) if(route.params?.id)key = 'history'
if(key){ if(key){
data.openType = Object.keys(query)[0] data.openType = key
}else{ }else{
data.openType = '' data.openType = ''
data.dataLoad = false data.dataLoad = false
@@ -90,26 +115,26 @@ export default defineComponent({
// 检查是否需要重新初始化 // 检查是否需要重新初始化
const currentPath = route.fullPath const currentPath = route.fullPath
const storedPath = store.state.Workspace.projectPath 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) store.commit('setProjectPath',route.fullPath)
} }
// 如果是同一个项目且openType为history跳过重新初始化 // 如果是同一个项目且openType为history跳过重新初始化
console.log(isSameProject,data.openType) // if(oldQuery?.id && !query?.id)return createData()
if(isSameProject || (!query.history && !query.id)){ 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 data.dataLoad = false
console.log(dataDom.design)
// dataDom.design?.init() // dataDom.design?.init()
if(query.history){
dataDom.design.openSetData()
}
return return
} }
nextTick(()=>{ nextTick(()=>{
if(query.history || query.id){ if(route.params?.id || query?.id){
//切换新项目需要清除首次design提示 //切换新项目需要清除首次design提示
sessionStorage.removeItem('firstDesign'); sessionStorage.removeItem('firstDesign');
@@ -125,7 +150,7 @@ export default defineComponent({
store.commit("createProbject"); store.commit("createProbject");
store.commit("clearAllData"); store.commit("clearAllData");
} }
getHistory(query.id || query.history) getHistory(query.id || route.params?.id)
}else{ }else{
data.dataLoad = false data.dataLoad = false
createData() createData()
@@ -201,7 +226,7 @@ export default defineComponent({
storeData.positionList = position storeData.positionList = position
store.commit('setProbject',storeData) store.commit('setProbject',storeData)
// setChatData() // setChatData()
if(route.name == 'tools'){ if(route.name == 'toolsPage'){
getCollection('tools',null) getCollection('tools',null)
}else{ }else{
getCollection('design',null) getCollection('design',null)
@@ -548,7 +573,8 @@ export default defineComponent({
}else{ }else{
chatModel = false 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() settingGetHistory()
data.chatData = value data.chatData = value

View File

@@ -171,8 +171,20 @@ export default defineComponent({
CollectionType:'PoseTransfer', CollectionType:'PoseTransfer',
}, },
waitList:[], waitList:[],
likeList:computed(()=>store.state.HomeStoreModule.poseTransfer.likedList), likeList:computed(()=>{
noLikeList:computed(()=>store.state.HomeStoreModule.poseTransfer.list), 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 isGenerate:false,//判断是否正在进行generate
remGenerate:false, remGenerate:false,
removeGenerate:false, removeGenerate:false,

View File

@@ -0,0 +1,261 @@
<template>
<div ref="modalContainer"></div>
<a-modal
class="prompt-modal generalModel"
v-model:visible="showModal"
:footer="null"
:get-container="() => $refs.modalContainer"
width="78%"
:maskClosable="false"
:centered="true"
:closable="false"
wrapClassName="#app"
:keyboard="false"
>
<div class="generalModel_btn">
<div class="generalModel_closeIcon" @click.stop="handleClose()">
<svg
width="100%"
height="100%"
viewBox="0 0 46 46"
fill="none"
xmlns="http://www.w3.org/2000/svg"
>
<circle cx="23" cy="23" r="23" fill="#000" fill-opacity="0.3" />
<rect
x="32.5063"
y="12"
width="3"
height="29"
rx="1.5"
transform="rotate(45 32.5063 12)"
fill="white"
/>
<rect
x="34.6274"
y="32.5059"
width="3"
height="29"
rx="1.5"
transform="rotate(135 34.6274 32.5059)"
fill="white"
/>
</svg>
</div>
</div>
<div class="title-container">
<div class="title">{{ $t('ProductImg.PromptAssit') }}</div>
<div class="sub-title">{{ $t('ProductImg.AssitSubTitle') }}</div>
</div>
<div class="example-content">
<div
class="example-wrapper"
v-for="item in Object.keys(exampleList)"
:key="item"
:class="item"
>
<div class="example-item" v-for="value in exampleList[item]" :key="value.title">
<img :src="value.src" />
<SvgIcon
v-if="value.isOriginal"
class="download-icon"
name="CDownload"
size="20"
color="#8E8E8E"
@click.stop="handleDownload(value)"
/>
</div>
</div>
</div>
<div class="prompt-list">
<div v-for="item in promptList" :key="item" class="prompt-item">
<SvgIcon
name="CCopy"
size="25"
color="#BCBCBC"
class="copy-icon"
@click.stop="handleCopy(item)"
/>
{{ item }}
</div>
</div>
</a-modal>
</template>
<script lang="ts" setup>
import { ref, useTemplateRef } from 'vue'
import { message } from 'ant-design-vue'
import originalDress from '@/assets/images/product/original_dress.png'
import generatedDress from '@/assets/images/product/geneated_dress.png'
import originalModel from '@/assets/images/product/original_model.png'
import generatedModel from '@/assets/images/product/generated_model.png'
import generatedSketch from '@/assets/images/product/generated_sketch.png'
import { downloadIamge } from '@/tool/util'
import { useI18n } from 'vue-i18n'
const { t, locale } = useI18n()
defineProps<{
promptList: string[]
}>()
const modalContainer = useTemplateRef('modalContainer')
const showModal = defineModel<boolean>('showModal', { required: true })
const garmentExample = [
{
title: 'originalDress',
src: originalDress,
isOriginal: true
},
{
title: 'generatedDress',
src: generatedDress
}
]
const sketchExample = [
{
title: 'origianlDress',
src: originalDress,
isOriginal: true
},
{
title: 'generatedSketch',
src: generatedSketch
}
]
const modelExample = [
{
title: 'originalModel',
src: originalModel,
isOriginal: true
},
{
title: 'generatedModel',
src: generatedModel
}
]
const exampleList = {
garmentExample,
sketchExample,
modelExample
}
const handleClose = () => {
showModal.value = false
}
const handleDownload = value => {
const { title, src } = value
downloadIamge(src, title)
}
const handleCopy = async (value: string) => {
try {
if (navigator.clipboard && navigator.clipboard.writeText) {
await navigator.clipboard.writeText(value)
message.success(t('ProductImg.CopySuccess'))
} else {
// 降级方案:使用传统的 document.execCommand 方法
const textArea = document.createElement('textarea')
textArea.value = value
textArea.style.position = 'fixed'
textArea.style.left = '-999999px'
textArea.style.top = '-999999px'
document.body.appendChild(textArea)
textArea.focus()
textArea.select()
try {
document.execCommand('copy')
message.success(t('ProductImg.CopySuccess'))
} catch (err) {
message.error(t('ProductImg.CopyFailed'))
}
document.body.removeChild(textArea)
}
} catch (err) {
message.error(t('ProductImg.CopyFailed'))
}
}
</script>
<style lang="less" scoped>
.prompt-modal {
.title-container {
.title {
font-size: 3.5rem;
color: #181818;
}
.sub-title {
font-size: 2rem;
font-weight: 400;
color: #000;
}
}
.example-content {
margin-top: 4.3rem;
padding-left: 7.4rem;
display: flex;
.example-wrapper {
display: flex;
gap: 0;
&.garmentExample {
margin-right: 9.6rem;
}
&.sketchExample {
margin-right: 1.6rem;
}
.example-item {
width: 20.3rem;
height: 38.4rem;
margin-left: -2px;
position: relative;
img {
width: 100%;
display: block;
}
.download-icon {
position: absolute;
top: 0.77rem;
right: 0.84rem;
cursor: pointer;
}
}
}
}
.prompt-list {
margin-top: 3.5rem;
display: flex;
column-gap: 6.3rem;
.prompt-item {
height: 12.8rem;
line-height: 2.3rem;
padding: 1.8rem 3.5rem 1.8rem 2rem;
color: #969696;
font-size: 1.9rem;
border: 1px solid #000;
border-radius: 0.8rem;
overflow-y: auto;
position: relative;
// &:first-child{
// width: 53.6rem;
// }
.copy-icon {
position: absolute;
top: 1.1rem;
right: 1rem;
cursor: pointer;
}
}
}
}
:deep(.generalModel .ant-modal-body) {
padding: 5rem 4.4rem 8rem 4.6rem;
}
.c-svg {
width: initial;
height: initial;
}
</style>

View File

@@ -1,16 +1,9 @@
<template> <template>
<div class="toProduct"> <div class="toProduct">
<div class="productImg_content"> <div class="productImg_content">
<!-- <div class="modal_title_text">
<div>{{$t('ProductImg.Finalize')}}</div>
<div class="modal_title_text_intro"></div>
</div> -->
<div class="productImg_content_bottom"> <div class="productImg_content_bottom">
<div class="productImg_left generalModel_state" :class="{ active: button.left }"> <div class="productImg_left generalModel_state" :class="{ active: button.left }">
<!-- <div class="productImg_content_item_title productImg_content_item_title_menu"> <div class="selectImg">
<generalMenu class="productImg_content_item_title_menubtn" :class="{hideEvents:driver__.driver}" :dataList="productimgMenuList" @setprintModel="setproduct" :item="productimgMenu"></generalMenu>
</div> -->
<div class="selectImg" style="margin-bottom: 2rem">
<div class="head"> <div class="head">
<div class="text"> <div class="text">
{{ {{
@@ -23,10 +16,6 @@
</div> </div>
</div> </div>
<div class="imgBox" v-mousewheel> <div class="imgBox" v-mousewheel>
<!-- <div class="item" :class="[item?.isChecked?'active':'']" v-for="item in selectList[productimgMenu.value]" @click="setGenerate(item)">
<img :src="item.imgUrl || item.url" alt="">
<a-checkbox v-model:checked="item.isChecked"></a-checkbox>
</div> -->
<div <div
class="item" class="item"
:class="[item?.isChecked ? 'active' : '']" :class="[item?.isChecked ? 'active' : '']"
@@ -57,7 +46,6 @@
<i class="fi fi-rr-trash icon_delete"></i> <i class="fi fi-rr-trash icon_delete"></i>
</div> </div>
</div> </div>
<!-- <a-checkbox v-model:checked="item.isChecked"></a-checkbox> -->
</div> </div>
<div class="upload_item item" v-show="!isDesignPage"> <div class="upload_item item" v-show="!isDesignPage">
<div class="upload_file_item"> <div class="upload_file_item">
@@ -76,7 +64,6 @@
> >
<div class="upload_tip_block"> <div class="upload_tip_block">
<i class="fi fi-br-upload"></i> <i class="fi fi-br-upload"></i>
<!-- <img class="upload_img_icon" src="@/assets/images/homePage/add_file.png"> -->
</div> </div>
</a-upload> </a-upload>
</div> </div>
@@ -108,13 +95,6 @@
v-model="similarity" v-model="similarity"
/> />
</div> </div>
<!-- <div v-show="productimgMenu.value == 'Relight'" class="productImg_content_item_title productImg_content_item_title_similarity">
<span>{{$t('ProductImg.SelectionFunction')}}</span>
</div> -->
<!-- 暂时去掉 -->
<!-- <div v-show="productimgMenu.value == 'Relight'" class="productImg_content_item_Direction generalModel_state_item">
<a-select size="large" style="width: 100%;" v-model:value="speedData.value" :options="speedList" :field-names="{ label: 'relightLabel', value: 'value' }"></a-select>
</div> -->
<div <div
v-show=" v-show="
productimgMenu.value == 'Relight' && productimgMenu.value == 'Relight' &&
@@ -169,51 +149,30 @@
v-model="brightenValue" v-model="brightenValue"
/> />
</div> </div>
<div class="input_border productImg_content_item_generate"> <div class="prompt-container">
<div class="input_box"> <div class="prompt-title">{{ $t('ProductImg.Prompt') }}</div>
<div class="input_box_btnBox"> <div class="input_border productImg_content_item_generate">
<!-- <input <div class="input_box">
class="search_input" <div class="input_box_btnBox">
:placeholder="productimgMenu.value == 'Relight'?$t('ProductImg.relightInput'):$t('ProductImg.productInput')" <textarea
v-model="searchName[productimgMenu.value]" class="textarea"
@keydown.enter="getPrductimg()" ref="textarea"
/> --> @input="ifMaximumLength"
<textarea :placeholder="
class="textarea" productimgMenu.value == 'Relight'
ref="textarea" ? $t('ProductImg.relightInput')
@input="ifMaximumLength" : $t('ProductImg.productInput')
:placeholder=" "
productimgMenu.value == 'Relight' @keydown.enter.prevent="getPrductimg()"
? $t('ProductImg.relightInput') v-model="searchName[productimgMenu.value]"
: $t('ProductImg.productInput') ></textarea>
" </div>
@keydown.enter.prevent="getPrductimg()"
v-model="searchName[productimgMenu.value]"
></textarea>
</div> </div>
</div> </div>
</div> <div class="asistant-btn" @click="handleClickAssistBtn">
<div <i class="fi fi-bs-magic-wand asistant-icon"></i>
class="selectText" <span>{{ $t('ProductImg.PromptAssit') }}</span>
v-show="productimgMenu.value == 'ToProductImage' && speedData.value" </div>
>
<a-tooltip
v-for="(promptText, index) in promptTextList"
:key="index"
placement="bottom"
>
<template #title>{{ promptText }}</template>
<div
@click="
() => {
searchName[productimgMenu.value] = promptText
ifMaximumLength()
}
"
>
{{ promptText }}
</div>
</a-tooltip>
</div> </div>
<div class="productImg_content_item_generate_btn input_border"> <div class="productImg_content_item_generate_btn input_border">
<div class="generage_btn_box"> <div class="generage_btn_box">
@@ -361,6 +320,7 @@
}" }"
:isProductimg="true" :isProductimg="true"
></scaleImage> ></scaleImage>
<Prompt v-model:showModal="showPromptAssist" :promptList="promptTextList" />
</div> </div>
</template> </template>
@@ -392,6 +352,7 @@ import { useStore } from 'vuex'
import scaleImage from '@/component/HomePage/scaleImage.vue' import scaleImage from '@/component/HomePage/scaleImage.vue'
import generalMenu from '@/component/HomePage/generalMenu.vue' import generalMenu from '@/component/HomePage/generalMenu.vue'
import generalDrag from '@/component/modules/generalDrag.vue' import generalDrag from '@/component/modules/generalDrag.vue'
import Prompt from './Prompt.vue'
import { List } from 'echarts' import { List } from 'echarts'
import { useRouter, useRoute } from 'vue-router' import { useRouter, useRoute } from 'vue-router'
@@ -399,7 +360,8 @@ export default defineComponent({
components: { components: {
scaleImage, scaleImage,
generalMenu, generalMenu,
generalDrag generalDrag,
Prompt
}, },
props: { props: {
setTask: { setTask: {
@@ -421,7 +383,11 @@ export default defineComponent({
isDesignPage: { isDesignPage: {
type: Boolean, type: Boolean,
default: false default: false
} },
isState:{
type:Boolean,
default:false,
},
}, },
emit: ['unLike'], emit: ['unLike'],
setup(props, { emit }) { setup(props, { emit }) {
@@ -440,7 +406,30 @@ export default defineComponent({
const createProbject: any = inject('createProbject', () => {}) const createProbject: any = inject('createProbject', () => {})
let productImgData: any = reactive({ let productImgData: any = reactive({
isShowMark: false, 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: { searchName: {
ToProductImage: '', ToProductImage: '',
Relight: '' Relight: ''
@@ -449,17 +438,37 @@ export default defineComponent({
isProductimg: false, //开始生成 isProductimg: false, //开始生成
selectProductimgList: [], selectProductimgList: [],
generateList: { generateList: {
ToProductImage: computed( ToProductImage:computed(()=>{
() => store.state.HomeStoreModule.toProductImageList.list if(!route.query?.id && route.query.tools == 'toProduct'){
), return []
Relight: computed(() => store.state.HomeStoreModule.relightList.list) }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), //选择的项目 selectObject: computed(() => store.state.Workspace.probjects), //选择的项目
likeList: { likeList: {
ToProductImage: computed( ToProductImage:computed(()=>{
() => store.state.HomeStoreModule.toProductImageList.likedList if(!route.query?.id && route.query.tools == 'toProduct'){
), return []
Relight: computed(() => store.state.HomeStoreModule.relightList.likedList) }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, } as any,
similarity: 30, similarity: 30,
brightenValue: 1, brightenValue: 1,
@@ -492,25 +501,6 @@ export default defineComponent({
value: 'advanced' 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({ const productImgDom = reactive({
generalDragLeft: null as any, generalDragLeft: null as any,
generalDragRight: null as any generalDragRight: null as any
@@ -612,7 +602,6 @@ export default defineComponent({
} }
let fileUploadChange = (data: any) => { let fileUploadChange = (data: any) => {
console.log(data)
let file = data.file let file = data.file
let bor = true let bor = true
if (file.status === 'done') { if (file.status === 'done') {
@@ -659,9 +648,6 @@ export default defineComponent({
CollectionType: props.productimgMenu.value CollectionType: props.productimgMenu.value
} }
} }
console.log(
!!((isJpgOrPng && isLt2M && productImgData.selectObject.id) || Upload.LIST_IGNORE)
)
return !!( return !!(
(isJpgOrPng && isLt2M && productImgData.selectObject.id) || (isJpgOrPng && isLt2M && productImgData.selectObject.id) ||
Upload.LIST_IGNORE Upload.LIST_IGNORE
@@ -705,7 +691,6 @@ export default defineComponent({
.then(rv => { .then(rv => {
if (str == 'like') { if (str == 'like') {
// if(rv?.sort)item.sort = rv.sort // if(rv?.sort)item.sort = rv.sort
console.log(rv)
if (rv?.sort) item.oldSort = rv.sort if (rv?.sort) item.oldSort = rv.sort
if (rv?.id) item.userLikeSortId = rv.id if (rv?.id) item.userLikeSortId = rv.id
item.newLike = true item.newLike = true
@@ -714,7 +699,6 @@ export default defineComponent({
str: 'add', str: 'add',
index: -1 index: -1
} }
console.log(value)
if (props.productimgMenu.value == 'ToProductImage') { if (props.productimgMenu.value == 'ToProductImage') {
store.commit('setToProductImage', value) store.commit('setToProductImage', value)
} else { } else {
@@ -756,7 +740,6 @@ export default defineComponent({
} }
if (productImgData.fileList[props.productimgMenu.value]) { if (productImgData.fileList[props.productimgMenu.value]) {
productImgData.fileList[props.productimgMenu.value].forEach((item: any) => { productImgData.fileList[props.productimgMenu.value].forEach((item: any) => {
console.log(item)
if (item.isChecked) { if (item.isChecked) {
if (item.resultType == 'Design') { if (item.resultType == 'Design') {
obj.elementId = item.designOutfitId obj.elementId = item.designOutfitId
@@ -872,10 +855,6 @@ export default defineComponent({
let index = productImgData.generateList[ let index = productImgData.generateList[
props.productimgMenu.value props.productimgMenu.value
].findIndex((obj: any) => obj.taskId === element.taskId) ].findIndex((obj: any) => obj.taskId === element.taskId)
console.log(
productImgData.generateList[props.productimgMenu.value][index]
)
console.log(element)
for (const key in element) { for (const key in element) {
if (element[key]) { if (element[key]) {
productImgData.generateList[props.productimgMenu.value][index][ productImgData.generateList[props.productimgMenu.value][index][
@@ -940,7 +919,6 @@ export default defineComponent({
timeZone: Intl.DateTimeFormat().resolvedOptions().timeZone, timeZone: Intl.DateTimeFormat().resolvedOptions().timeZone,
type: props.productimgMenu.value type: props.productimgMenu.value
} }
console.log(productImgData.generateList[props.productimgMenu.value].value)
Https.axiosGet(Https.httpUrls.generateStopWaiting, { params: data }) Https.axiosGet(Https.httpUrls.generateStopWaiting, { params: data })
.then(rv => { .then(rv => {
generateProceedList = [] generateProceedList = []
@@ -974,31 +952,6 @@ export default defineComponent({
scaleImage.value.init(arr, index) scaleImage.value.init(arr, index)
scaleImage.value.isComparison = true 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) => {} let setSimilarity = (num: any) => {}
//超分 //超分
@@ -1132,7 +1085,6 @@ export default defineComponent({
productImgData.isProductimg = true productImgData.isProductimg = true
productImgData.remProductimg = true productImgData.remProductimg = true
productImgData.isShowMark = false productImgData.isShowMark = false
console.log(taskIdList)
setPrductimg(arr) setPrductimg(arr)
} }
}, },
@@ -1140,22 +1092,18 @@ export default defineComponent({
) )
onMounted(() => { onMounted(() => {
ifMaximumLength() ifMaximumLength()
console.log('来源:---', props.source, props.isDesignPage)
}) })
// 计算属性:根据条件生成提示词列表 // 计算属性:根据条件生成提示词列表
const promptTextList = computed(() => { const promptTextList = computed(() => {
const isFromDesignPage = props.source === 'design' || props.isDesignPage const isFromDesignPage = props.source === 'design' || props.isDesignPage
const { ageGroup, httpType } = store.state.Workspace.probjects const { ageGroup, httpType } = store.state.Workspace.probjects
const isSingleDesign = httpType === 'SINGLE_DESIGN' const isSingleDesign = httpType === 'SINGLE_DESIGN'
const isAdult = ageGroup === 'Adult' const isAdult = ageGroup === 'Adult'
if (!isFromDesignPage) { if (!isFromDesignPage) {
// 如果不是从design来的返回两个提示词 // 如果不是从design来的返回两个提示词
return [ return [t('poseTransfer.UploadWithModel'), t('poseTransfer.UploadWithoutModel')]
t('poseTransfer.UploadWithModel'),
t('poseTransfer.UploadWithoutModel')
]
} else { } else {
// 如果是从design来的 // 如果是从design来的
if (isSingleDesign) { if (isSingleDesign) {
@@ -1163,10 +1111,7 @@ export default defineComponent({
const secondPrompt = isAdult const secondPrompt = isAdult
? t('poseTransfer.SingleAdultTryOn') ? t('poseTransfer.SingleAdultTryOn')
: t('poseTransfer.SingleChildTryOn') : t('poseTransfer.SingleChildTryOn')
return [ return [t('poseTransfer.SingleGarment'), secondPrompt]
t('poseTransfer.SingleGarment'),
secondPrompt
]
} else { } else {
// SERIES_DESIGN: 一个提示词 // SERIES_DESIGN: 一个提示词
return [ return [
@@ -1177,7 +1122,12 @@ export default defineComponent({
} }
} }
}) })
const showPromptAssist = ref(false)
const handleClickAssistBtn = () => {
showPromptAssist.value = true
}
return { return {
upload, upload,
driver__, driver__,
@@ -1189,6 +1139,7 @@ export default defineComponent({
RelightDirectionList, RelightDirectionList,
RelightDirection, RelightDirection,
promptTextList, promptTextList,
showPromptAssist,
setproduct, setproduct,
fileUploadChange, fileUploadChange,
@@ -1200,8 +1151,6 @@ export default defineComponent({
removeProductimg, removeProductimg,
scaleImage, scaleImage,
setScaleImage, setScaleImage,
setMenu,
setMenuShow,
setSimilarity, setSimilarity,
setTask, setTask,
selectSetBtn, selectSetBtn,
@@ -1211,7 +1160,8 @@ export default defineComponent({
ifMaximumLength, ifMaximumLength,
openSpeed, openSpeed,
setSpeed, setSpeed,
locale locale,
handleClickAssistBtn
} }
}, },
directives: { directives: {
@@ -1249,26 +1199,6 @@ export default defineComponent({
mounted() { mounted() {
this.token = getCookie('token') || '' this.token = getCookie('token') || ''
this.uploadUrl = getUploadUrl() 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)
// },
} }
}) })
</script> </script>
@@ -1319,68 +1249,13 @@ export default defineComponent({
.productImg_content_item_intro { .productImg_content_item_intro {
font-size: 1.4rem; 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 { .selectImg {
display: flex; display: flex;
flex-direction: column; flex-direction: column;
> .imgBox { > .imgBox {
flex: 1; flex: 1;
max-height: 45rem; max-height: 45rem;
margin-top: 2rem;
display: flex; display: flex;
flex-direction: row; flex-direction: row;
flex-wrap: nowrap; flex-wrap: nowrap;
@@ -1388,17 +1263,19 @@ export default defineComponent({
width: 100%; width: 100%;
overflow: hidden; overflow: hidden;
overflow-x: auto; overflow-x: auto;
column-gap: 1rem;
// &.active // &.active
> .item { > .item {
margin-right: 1rem; // margin-right: 1rem;
width: calc(100% / 2 - 0.5rem); // width: calc(100% / 2 - 0.5rem);
width: 9.6rem;
cursor: pointer; cursor: pointer;
overflow: hidden; overflow: hidden;
display: flex; display: flex;
justify-content: center; justify-content: center;
flex-shrink: 0; flex-shrink: 0;
height: 25rem; height: 13.4rem;
position: relative; position: relative;
// &.active{ // &.active{
// border: 2px solid; // border: 2px solid;
@@ -1453,7 +1330,8 @@ export default defineComponent({
} }
> .head { > .head {
color: #000; color: #000;
font-weight: 600; // font-weight: 600;
margin-bottom: 2rem;
> .text { > .text {
display: inline-block; display: inline-block;
font-size: 1.6rem; font-size: 1.6rem;
@@ -1500,6 +1378,7 @@ export default defineComponent({
flex-shrink: 0; flex-shrink: 0;
height: 25rem; height: 25rem;
position: relative; position: relative;
> .imgBox { > .imgBox {
width: 100%; width: 100%;
} }
@@ -1665,4 +1544,45 @@ export default defineComponent({
.designPage { .designPage {
margin-right: 4rem; 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;
}
}
}
</style> </style>

View File

@@ -92,9 +92,10 @@ export default defineComponent({
(query:any, oldQuery:any) => { (query:any, oldQuery:any) => {
if(oldQuery && query?.tools == oldQuery?.tools)return if(oldQuery && query?.tools == oldQuery?.tools)return
const key = Object.keys(query)?.[0] const key = Object.keys(query)?.[0]
if(route.name == 'tools' && key){ if(route.name == 'toolsPage' && key){
data.openType = query[key] data.openType = query[key]
nextTick(()=>{ nextTick(()=>{
if(route.fullPath === store.state.Workspace.projectPath)return
open(query[key]) open(query[key])
}) })
} }

View File

@@ -279,7 +279,12 @@ export default {
Clear: '清空', Clear: '清空',
jsContent1: '如果您离开此页,您的更改将会丢失。您确定要离开这一页吗?', jsContent1: '如果您离开此页,您的更改将会丢失。您确定要离开这一页吗?',
jsContent2: '请至少选择一张图片', jsContent2: '请至少选择一张图片',
jsContent3: '您有一张图生成失败,请重试。' jsContent3: '您有一张图生成失败,请重试。',
Prompt: '提示词',
PromptAssit: '提示词助手',
AssitSubTitle: '您可以复制并使用以下提示词:',
CopySuccess: '已复制到剪贴板',
CopyFiled: '复制失败'
}, },
poseTransfer: { poseTransfer: {
SelectDesign: '产品图', SelectDesign: '产品图',

View File

@@ -289,7 +289,12 @@ export default {
jsContent1: jsContent1:
'Your changes will be lost if you navigate away from this page. Are you sure you want to leave this page?', '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', 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: { poseTransfer: {
SelectDesign: 'Product image', SelectDesign: 'Product image',
@@ -312,7 +317,7 @@ export default {
UploadWithModel: 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.', // 上传线稿,带模特 '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: 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: { LibraryPage: {
library: 'Library', library: 'Library',

View File

@@ -67,8 +67,8 @@ const routes: Array<RouteRecordRaw> = [
children: [ children: [
{ {
path: "tools", path: "tools",
name: "tools", name: "toolsPage",
meta: { enter: "all" }, meta: { enter: "all",cache:true },
component: () => import("@/views/HomeView/Tools.vue"), component: () => import("@/views/HomeView/Tools.vue"),
}, },
// { // {
@@ -88,6 +88,18 @@ const routes: Array<RouteRecordRaw> = [
name: "history", name: "history",
meta: { enter: "all" }, meta: { enter: "all" },
component: () => import("@/views/HomeView/history.vue"), 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", path: "works",

View File

@@ -127,6 +127,7 @@ const HomeStoreModule : Module<DesignDetail,RootState> = {
} }
}, },
toolsClear(state){ toolsClear(state){
console.log('toolsClear')
state.relightList.likedList = [] state.relightList.likedList = []
state.uploadElement = [] state.uploadElement = []
state.toProductImageList.likedList = [] state.toProductImageList.likedList = []
@@ -225,6 +226,7 @@ const HomeStoreModule : Module<DesignDetail,RootState> = {
state.designId = '' state.designId = ''
}, },
clearAllCollection(state){ clearAllCollection(state){
console.log('clearAll')
state.designCollectionList=[] state.designCollectionList=[]
state.likeDesignCollectionList = [] state.likeDesignCollectionList = []
state.designCollectionId = '' state.designCollectionId = ''

View File

@@ -45,7 +45,8 @@ const Workspace: Module<DesignDetail, RootState> = {
model: [] //模特 model: [] //模特
}, },
projectList: [], //项目列表参数 projectList: [], //项目列表参数
projectPath:'' projectPath:'',
cachedRoutes: [],
}, },
mutations: { mutations: {
setWorkspace(state, files) { setWorkspace(state, files) {

View File

@@ -59,8 +59,8 @@
class="current-projct" class="current-projct"
@click="handleNavigateToCurrentProject" @click="handleNavigateToCurrentProject"
:class="{ :class="{
disabled: disabledCurrentProject, disabled: cachedRoutes.length == 0,
filled: !disabledCurrentProject, filled: cachedRoutes.length > 0,
active: currentProjectActive active: currentProjectActive
}" }"
> >
@@ -522,7 +522,8 @@ export default defineComponent({
}, },
bathGenerationList: ['poseTransfer', 'SERIES_DESIGN', 'toProduct', 'relight'], bathGenerationList: ['poseTransfer', 'SERIES_DESIGN', 'toProduct', 'relight'],
showHistory: false, showHistory: false,
isNewProject: false isNewProject: false,
cachedRoutes:computed(()=>store.state.Workspace.cachedRoutes),//
}) })
let userDetail = computed(() => { let userDetail = computed(() => {
return store.state.UserHabit.userDetail return store.state.UserHabit.userDetail
@@ -1029,6 +1030,7 @@ export default defineComponent({
if (currentProjectActive.value) return if (currentProjectActive.value) return
if (currentProjectPath.value) { if (currentProjectPath.value) {
router.push(currentProjectPath.value) router.push(currentProjectPath.value)
// router.back()
} }
} }

View File

@@ -11,6 +11,7 @@ import { useStore } from "vuex";
import { useI18n } from 'vue-i18n' import { useI18n } from 'vue-i18n'
import tools from '@/component/toolsPage/index.vue' import tools from '@/component/toolsPage/index.vue'
export default defineComponent({ export default defineComponent({
name: "toolsPage",
components:{ components:{
tools, tools,
}, },

View File

@@ -163,7 +163,7 @@ export default defineComponent({
if (record.text == 1) { if (record.text == 1) {
str = useI18n().t('newScaleImage.Original') str = useI18n().t('newScaleImage.Original')
} else { } 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') // let time = formatTime(record.text / 1000, 'YYYY-MM-DD hh:mm:ss')
return str return str
@@ -464,7 +464,8 @@ export default defineComponent({
// router.push(`/home/tools?tools=toProduct&id=${childItem.id}`) // router.push(`/home/tools?tools=toProduct&id=${childItem.id}`)
if (record.process == 'SERIES_DESIGN' || record.process == 'SINGLE_DESIGN') { 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 { } else {
let processList = { let processList = {
toProduct: 'TO_PRODUCT_IMAGE', toProduct: 'TO_PRODUCT_IMAGE',