Files
lanecarford_front/src/stores/modules/generate.ts
2025-11-17 17:33:32 +08:00

181 lines
4.8 KiB
TypeScript
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
// 每一个存储的模块命名规则use开头store结尾
import { defineStore } from 'pinia'
import MyEvent from '@/utils/myEvent'
MyEvent.add('clear-generate-state', () => useGenerateStore().clearGenerateData())
export const useGenerateStore = defineStore({
id: 'generate', // 必须指明唯一的pinia仓库的id
state: () => {
return {
style: {
id: '',
oldId: '' //表示从生成页面返回回来需要调整的样式id
},
styleList: [{}, {}, {}, {}],
model: {
id: ''
},
originalTryOn: {
//生成穿好衣服的回参
id: '',
isLike: false, //是否喜欢
tryOnUrl: ''
},
isGenerate: false, //点击继续按钮后是否需要生成
/** 顾客照片信息 */
photoInfo: {
id: '',
url: '',
file: null
},
/** AI魔改信息 */
customizeInfo: {
inputText: '',
count: 0,
oldInputText: '',
oldTryOnId: '',
tryOnId: '',
tryOnUrl: '',
styleUrl: '',
isRegenerated: '',
isFavorite: false
},
/** AI魔改信息-演示 */
customizeInfoDemo: {
inputText: '',
count: 0,
oldInputText: '',
oldTryOnId: '',
tryOnId: '',
tryOnUrl: '',
styleUrl: '',
isRegenerated: '',
isFavorite: false
},
customerInfo: {
customerId: '',
visitRecordId: ''
},
chatSessionId: '' //会话id 秒级时间戳
}
},
getters: {
/** 顾客id */
customerId: (state) => state.customerInfo.customerId,
/** 进店记录id */
visitRecordId: (state) => state.customerInfo.visitRecordId,
/** 服装id */
styleId: (state) => state.style.id || state.style.oldId,
/** 模特照片id */
modelPhotoId: (state) => state.model.id,
/** 原始试穿id不包含魔改id */
originalTryOnIdNoRein: (state) => state.originalTryOn.id,
/** 原始试穿id-优先AI魔改 */
originalTryOnId: (state) => state.customizeInfo.tryOnId || state.originalTryOn.id,
/** 顾客照片id */
customerPhotoId: (state) => state.photoInfo.id,
/** 会话id */
sessionId: (state) => state.chatSessionId
},
actions: {
selectStyle(data: any) {
this.style.id = data.id
console.log(this)
},
//生成后去掉id 设置oldId来修改样式
useStyleGenerate() {
if (!this.style.id) return
this.style.oldId = this.style.id
this.style.id = ''
},
updateStyle(data) {
console.log(data)
if (data.id == this.style.oldId) {
this.style.oldId = ''
}
},
//模特相关
selectModel(data: any) {
this.model.id = data.id
},
setIsGenerate(isGenerate: boolean) {
this.isGenerate = isGenerate
},
clearProductData() {
this.styleList = [{}, {}, {}, {}]
this.style = {
id: '',
oldId: ''
}
this.model = {
id: ''
}
this.originalTryOn = {
id: '',
isLike: false,
tryOnUrl: ''
}
this.isGenerate = false
},
/** 更新顾客照片信息 */
updatePhotoInfo(data: any) {
this.photoInfo.id = data.id || ''
if (!data.photoUrl) this.photoInfo.url = ''
this.photoInfo.file = data.file || null
},
/** 清空 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
},
/** 清空 AI魔改信息-演示 */
clearCustomizeInfoDemo() {
this.customizeInfoDemo.inputText = ''
this.customizeInfoDemo.count = 0
this.customizeInfoDemo.oldInputText = ''
this.customizeInfoDemo.oldTryOnId = ''
this.customizeInfoDemo.tryOnId = ''
this.customizeInfoDemo.tryOnUrl = ''
this.customizeInfoDemo.styleUrl = ''
this.customizeInfoDemo.isRegenerated = ''
this.customizeInfoDemo.isFavorite = false
},
uploadCustomizeInfo(data: object) {
for (const key in data) {
this.customizeInfo[key] = data[key]
}
},
clearCustomerInfo() {
this.customerInfo = {
customerId: '',
visitRecordId: ''
}
},
//设置默认数据
clearGenerateData() {
this.clearProductData()
this.updatePhotoInfo({})
this.clearCustomizeInfo()
this.clearCustomizeInfoDemo()
this.clearCustomerInfo()
this.setSessionId('')
},
setCustomerInfo(data: any) {
this.customerInfo = data
},
setSessionId(data: string) {
this.chatSessionId = data
},
}
})