Recommended
Try-on
Come and try face swapping!
+
+ diff --git a/src/api/workshop.ts b/src/api/workshop.ts index 95216e2..65dd215 100644 --- a/src/api/workshop.ts +++ b/src/api/workshop.ts @@ -49,6 +49,25 @@ export function generateTryOnEffect(data: Object) { data, }) } +/** + * 生成试穿效果-演示 + * @param data 试穿效果数据 + * @param data.customerId 顾客ID + * @param data.visitRecordId 进店记录id + * @param data.styleId 样式id + * @param data.modelPhotoId 模型照片id + * @param data.customerPhotoId 顾客照片id + * @param data.prompt 提示词 + * @param data.originalTryOnId 原始试穿效果id + * @param data.isRegenerated 是否重新生成 0-否,1-是 +*/ +export function generateTryOnEffectDemo(data: Object) { + return request({ + url: '/api/try-on-effects/reFace/{customerPhotold}o', + method: 'post', + data, + }) +} /** 上传图片-AI换脸 * @param data 图片数据 diff --git a/src/assets/images/workshop/template.png b/src/assets/images/workshop/template.png new file mode 100644 index 0000000..15c90dc Binary files /dev/null and b/src/assets/images/workshop/template.png differ diff --git a/src/router/index.ts b/src/router/index.ts index 9138748..5e98295 100644 --- a/src/router/index.ts +++ b/src/router/index.ts @@ -1,6 +1,7 @@ import { createRouter, createWebHistory } from 'vue-router' import { useGenerateStore } from '@/stores/modules/generate' const VerifyIDs = (num: number) => { + return true const ids = [ !!useGenerateStore().customerId, !!useGenerateStore().visitRecordId, @@ -130,6 +131,13 @@ const router = createRouter({ component: () => import('../views/Workshop/product.vue'), meta: { verify: ()=> VerifyIDs(4) } }, + { + // 推荐try on + path: '/workshop/recommended', + name: 'recommended', + component: () => import('../views/Workshop/recommended.vue'), + meta: { verify: ()=> VerifyIDs(5) } + }, { // 上传照片1 path: '/workshop/uploadFace', diff --git a/src/stores/modules/generate.ts b/src/stores/modules/generate.ts index db03932..67bd9aa 100644 --- a/src/stores/modules/generate.ts +++ b/src/stores/modules/generate.ts @@ -42,6 +42,19 @@ export const useGenerateStore = defineStore({ isRegenerated: '', isFavorite: false }, + /** AI魔改信息-演示 */ + customizeInfoDemo: { + inputText: '', + count: 0, + oldInputText: '', + oldTryOnId: '', + + tryOnId: '', + tryOnUrl: '', + styleUrl: '', + isRegenerated: '', + isFavorite: false + }, customerInfo: { customerId: '', visitRecordId: '' @@ -124,6 +137,18 @@ export const useGenerateStore = defineStore({ 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) { @@ -141,6 +166,7 @@ export const useGenerateStore = defineStore({ this.clearProductData() this.updatePhotoInfo({}) this.clearCustomizeInfo() + this.clearCustomizeInfoDemo() this.clearCustomerInfo() this.setSessionId('') }, diff --git a/src/views/Workshop/customize.vue b/src/views/Workshop/customize.vue index b893be7..932ba05 100644 --- a/src/views/Workshop/customize.vue +++ b/src/views/Workshop/customize.vue @@ -2,19 +2,22 @@ import HeaderTitle from '@/components/HeaderTitle.vue' import FooterNavigation from '@/components/FooterNavigation.vue' import GenerateLoading from '@/views/asistant/components/GenerateLoading.vue' - import { ref, onMounted } from 'vue' + import { ref, onMounted, computed } from 'vue' import { generateTryOnEffect, + generateTryOnEffectDemo, setTryOnEffectFavorite, cancelTryOnEffectFavorite } from '@/api/workshop' const emit = defineEmits(['viewType']) - import { useRouter } from 'vue-router' + import { useRouter, useRoute } from 'vue-router' import { useGenerateStore } from '@/stores' const generateStore = useGenerateStore() - - const customizeInfo = generateStore.customizeInfo const router = useRouter() + const route = useRoute() + + const isDemo = computed(() => route.query.demo === '1') + const customizeInfo = isDemo.value ? generateStore.customizeInfoDemo : generateStore.customizeInfo const loading = ref(false) const onSend = () => { if (customizeInfo.inputText === '') return @@ -45,8 +48,8 @@ } if (generateStore.customerPhotoId && customizeInfo.count === 0) data['customerPhotoId'] = generateStore.customerPhotoId - loading.value = true - generateTryOnEffect(data) + loading.value = true; + (isDemo.value ? generateTryOnEffectDemo : generateTryOnEffect)(data) .then((res: any) => { customizeInfo.count++ customizeInfo.tryOnId = res.tryOnId @@ -66,6 +69,7 @@ // 喜欢 const isLoveLoading = ref(false) const onLove = () => { + if (isDemo.value) return if (isLoveLoading.value) return const http = customizeInfo.isFavorite ? cancelTryOnEffectFavorite : setTryOnEffectFavorite customizeInfo.isFavorite = !customizeInfo.isFavorite @@ -86,7 +90,11 @@ router.back() } const onFinish = () => { - router.push({ name: 'creation' }) + if (isDemo.value) { + router.push({ name: 'end' }) + } else { + router.push({ name: 'creation' }) + } } @@ -114,7 +122,7 @@
+ Recommended
Try-on
Come and try face swapping!
+
+