diff --git a/src/api/workshop.ts b/src/api/workshop.ts index 7236d3c..57ec94e 100644 --- a/src/api/workshop.ts +++ b/src/api/workshop.ts @@ -175,6 +175,41 @@ export const createCustomer = (data: CreateCustomerParams) => { url: '/api/customers/createCustomer', method: 'get', params: data + }) +} + +// /** 查询收藏列表 +// * @param visitRecordId 进店记录id +// */ +// export function getTryOnEffectFavoriteList(visitRecordId: string | number) { +// if (!visitRecordId) return Promise.reject('进店记录id不能为空'); +// return request({ +// url: `/api/try-on-effects/favorites/${visitRecordId}`, +// method: 'get', +// }) +// } +// /** 查询某套试穿效果列表 +// * @param styleId 服装id +// */ +// export function getTryOnEffectStyleList(styleId: string | number) { +// if (!styleId) return Promise.reject('服装id不能为空'); +// return request({ +// url: `/api/try-on-effects/style/${styleId}`, +// method: 'get', +// }) +// } +/** 获取历史生成记录 + * @param params 获取历史生成记录参数 + * @param params.visitRecordId 进店记录id + * @param params.type 类型 + * @param params.isLibrary 是否是收藏 + */ +export function getGenerateHistoricals(params: Object) { + if (!params) return Promise.reject('参数不能为空'); + return request({ + url: `/api/try-on-effects/getHistoricals`, + method: 'get', + params, }) } 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..cbb76b8 --- /dev/null +++ b/src/stores/modules/h_generate.ts @@ -0,0 +1,66 @@ +// 每一个存储的模块,命名规则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.clearCustomizeInfo() + }, + } +}) diff --git a/src/views/Workshop/creation/creation-list.vue b/src/views/Workshop/creation/creation-list.vue index 238d09c..793a6ad 100644 --- a/src/views/Workshop/creation/creation-list.vue +++ b/src/views/Workshop/creation/creation-list.vue @@ -2,10 +2,10 @@ import { ref, reactive, onMounted, computed } from 'vue' import MyList from '@/components/MyList.vue' import { DownloadImages } from '@/utils/tools' + import { showToast } from 'vant' import { FlowType } from '@/types/enum' import { - getTryOnEffectFavoriteList, - getTryOnEffectStyleList, + getGenerateHistoricals, setTryOnEffectFavorite, cancelTryOnEffectFavorite } from '@/api/workshop' @@ -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 } @@ -31,32 +32,51 @@ const isChooseSave = ref(false) //是否选择保存模式 const navLst = [ - { label: 'Outfit', value: 'outfit', flowType: FlowType.H_OUTFIT }, - { label: 'Try-on', value: 'tryOn', flowType: FlowType.H_TRYON }, - { label: 'Gen-AI', value: 'genAi', flowType: FlowType.H_AI } + { label: 'Outfit', value: 'Outfit', flowType: FlowType.H_OUTFIT }, + { label: 'Try-on', value: 'Try-on', flowType: FlowType.H_TRYON }, + { label: 'Gen-AI', value: 'Gen-AI', flowType: FlowType.H_AI } ] - const navActive = ref('outfit'); + const navActive = ref('Outfit') navLst.forEach((v) => { if (v.flowType === query.value.flowType) navActive.value = v.value }) + navLst.forEach((v) => { + if (v.flowType === query.value.active) navActive.value = v.value + }) + const clickNav = (v) => { + if (v.value === navActive.value || loading.value) return navActive.value = v.value - console.log(v) + onLoad() } const onLoad = () => { - console.log(navActive.value) loading.value = true - const http = visitRecordId.value ? getTryOnEffectFavoriteList : getTryOnEffectStyleList - const id = visitRecordId.value || generateStore.styleId - http(id) + finish.value = false + list.splice(0, list.length) + const params = { + customerId: generateStore.customerId, + type: navActive.value, + isLibrary: false + } + if (props.isChooseOne) { + params['visitRecordId'] = '' + } else if (visitRecordId.value) { + params['visitRecordId'] = visitRecordId.value + params.isLibrary = true + } else { + params['visitRecordId'] = generateStore.visitRecordId + } + getGenerateHistoricals(params) .then((data) => { data?.forEach((v) => { const obj = { - tryOnId: v.tryOnId, + // tryOnId: v.tryOnId, tryOnUrl: v.tryOnUrl, styleUrl: v.styleUrl, isFavorite: !!v.isFavorite, isRegenerated: !!v.isRegenerated, + id: v.id, + url: v.url, selected: false, loading: false, @@ -203,15 +223,19 @@ if (props.isChooseOne) { const selectedItem = list.find((v) => v.selected) const nav = navLst.find((v) => v.value === navActive.value) - if (!selectedItem || !nav) return - generateStore.clearCustomizeInfoDemo(); - generateStore.uploadCustomizeInfoDemo({ - tryOnId: selectedItem.tryOnId, - tryOnUrl: selectedItem.tryOnUrl, - styleUrl: selectedItem.styleUrl, - isFavorite: selectedItem.isFavorite, - isRegenerated: selectedItem.isRegenerated, - }) + if (!selectedItem || !nav) return showToast({ message: 'Please select one only.' }) + if (nav.flowType !== FlowType.H_OUTFIT) { + 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 + hGenerateStore.style.id = selectedItem.id; + hGenerateStore.style.url = selectedItem.url + // selectedItem.isFavorite + } router.push({ name: 'HomeNav', query: { flowType: nav.flowType } }) } else { router.push({ name: 'end' }) @@ -236,8 +260,8 @@
-
- +
+