From 51336fff77693b7426190517e80ea763fd745da6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9D=8E=E5=BF=97=E9=B9=8F?= <2916022834@qq.com> Date: Mon, 22 Dec 2025 16:34:43 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E5=8E=86=E5=8F=B2=E6=B5=81?= =?UTF-8?q?=E7=A8=8B=E6=95=B0=E6=8D=AE=E7=8A=B6=E6=80=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/stores/index.ts | 1 + src/stores/modules/h_generate.ts | 67 +++++++++++++++++++ src/views/Workshop/creation/creation-list.vue | 22 +++--- 3 files changed, 78 insertions(+), 12 deletions(-) create mode 100644 src/stores/modules/h_generate.ts diff --git a/src/stores/index.ts b/src/stores/index.ts index 210bc93..8838f7f 100644 --- a/src/stores/index.ts +++ b/src/stores/index.ts @@ -5,6 +5,7 @@ const store = createPinia() // 使用持久化插件(全局持久化) store.use(createPersistedState()) export default store +export * from './modules/h_generate' export * from './modules/generate' export * from './modules/overall' export * from './modules/userInfo' diff --git a/src/stores/modules/h_generate.ts b/src/stores/modules/h_generate.ts new file mode 100644 index 0000000..871bdc8 --- /dev/null +++ b/src/stores/modules/h_generate.ts @@ -0,0 +1,67 @@ +// 每一个存储的模块,命名规则use开头,store结尾 +import { defineStore } from 'pinia' +import MyEvent from '@/utils/myEvent' +MyEvent.add('clear-generate-state', () => useHGenerateStore().clearGenerateData()) + +export const useHGenerateStore = defineStore({ + id: 'h_generate', // 必须指明唯一的pinia仓库的id + state: () => { + return { + style: { + id: '', + url: '' + }, + originalTryOn: { + //生成穿好衣服的回参 + id: '', + isLike: false, //是否喜欢 + tryOnUrl: '' + }, + /** AI魔改信息 */ + customizeInfo: { + inputText: '', + count: 0, + oldInputText: '', + oldTryOnId: '', + + tryOnId: '', + tryOnUrl: '', + styleUrl: '', + isRegenerated: '', + isFavorite: false + }, + } + }, + getters: { + /** 服装id */ + styleId: (state) => state.style.id, + /** 原始试穿id不包含魔改id */ + originalTryOnIdNoRein: (state) => state.originalTryOn.id, + /** 原始试穿id-优先AI魔改 */ + originalTryOnId: (state) => state.customizeInfo.tryOnId || state.originalTryOn.id, + }, + actions: { + /** 清空 AI魔改信息 */ + clearCustomizeInfo() { + this.customizeInfo.inputText = '' + this.customizeInfo.count = 0 + this.customizeInfo.oldInputText = '' + this.customizeInfo.oldTryOnId = '' + this.customizeInfo.tryOnId = '' + this.customizeInfo.tryOnUrl = '' + this.customizeInfo.styleUrl = '' + this.customizeInfo.isRegenerated = '' + this.customizeInfo.isFavorite = false + }, + uploadCustomizeInfo(data: object) { + for (const key in data) { + this.customizeInfo[key] = data[key] + } + }, + //设置默认数据 + clearGenerateData() { + this.clearProductData() + this.clearCustomizeInfo() + }, + } +}) diff --git a/src/views/Workshop/creation/creation-list.vue b/src/views/Workshop/creation/creation-list.vue index 15f6318..9e1c179 100644 --- a/src/views/Workshop/creation/creation-list.vue +++ b/src/views/Workshop/creation/creation-list.vue @@ -14,8 +14,9 @@ const emit = defineEmits(['view-type']) const query = computed(() => router.currentRoute.value.query) const visitRecordId = computed(() => query.value.visitRecordId) // 访问记录ID - import { useGenerateStore } from '@/stores' + import { useGenerateStore, useHGenerateStore } from '@/stores' const generateStore = useGenerateStore() + const hGenerateStore = useHGenerateStore() const props = defineProps({ // 是否单选模式 isChooseOne: { type: Boolean, default: false } @@ -70,8 +71,8 @@ styleUrl: v.styleUrl, isFavorite: !!v.isFavorite, isRegenerated: !!v.isRegenerated, - url: v.url, id: v.id, + url: v.url, selected: false, loading: false, @@ -220,18 +221,15 @@ const nav = navLst.find((v) => v.value === navActive.value) if (!selectedItem || !nav) return showToast({ message: 'Please select one only.' }) if (nav.flowType !== FlowType.H_OUTFIT) { - generateStore.clearCustomizeInfoDemo() - generateStore.uploadCustomizeInfoDemo({ - tryOnId: selectedItem.id, - tryOnUrl: selectedItem.tryOnUrl, - styleUrl: selectedItem.styleUrl, - isFavorite: selectedItem.isFavorite, - isRegenerated: selectedItem.isRegenerated - }) + hGenerateStore.originalTryOn.id = selectedItem.id + hGenerateStore.originalTryOn.tryOnUrl = selectedItem.tryOnUrl + hGenerateStore.originalTryOn.isLike = selectedItem.isFavorite + hGenerateStore.style.id = ''; + hGenerateStore.style.url = selectedItem.styleUrl } else { // style - // selectedItem.id - // selectedItem.url + hGenerateStore.style.id = selectedItem.id; + hGenerateStore.style.url = selectedItem.url // selectedItem.isFavorite } router.push({ name: 'HomeNav', query: { flowType: nav.flowType } })