diff --git a/src/assets/images/female_thumb.png b/src/assets/images/female_thumb.png new file mode 100644 index 0000000..7e8f324 Binary files /dev/null and b/src/assets/images/female_thumb.png differ diff --git a/src/assets/images/male_thumb.png b/src/assets/images/male_thumb.png new file mode 100644 index 0000000..7c6092a Binary files /dev/null and b/src/assets/images/male_thumb.png differ diff --git a/src/components/HeaderTitle.vue b/src/components/HeaderTitle.vue index f813324..a2d67f9 100644 --- a/src/components/HeaderTitle.vue +++ b/src/components/HeaderTitle.vue @@ -3,7 +3,7 @@ const router = useRouter() defineProps({ - title: { type: String, default: 'AI STYLING ASSISTANT' } + title: { type: String, default: 'STYLING ASSISTANT' } }) const emit = defineEmits(['clickReturn', 'clickProfile']) diff --git a/src/router/index.ts b/src/router/index.ts index f5ecdf9..307d257 100644 --- a/src/router/index.ts +++ b/src/router/index.ts @@ -1,16 +1,16 @@ import { createRouter, createWebHistory } from 'vue-router' import { useGenerateStore } from '@/stores/modules/generate' const VerifyIDs = (num: number) => { - return true + return true const ids = [ - !!useGenerateStore().customerId, - !!useGenerateStore().visitRecordId, - !!useGenerateStore().styleId, - // !!useGenerateStore().modelPhotoId, - true, - !!useGenerateStore().originalTryOnId, - ]; - return ids.splice(0, num).every(id => id) ? true : "/stylist/customer"; + !!useGenerateStore().customerId, + !!useGenerateStore().visitRecordId, + !!useGenerateStore().styleId, + // !!useGenerateStore().modelPhotoId, + true, + !!useGenerateStore().originalTryOnId + ] + return ids.splice(0, num).every((id) => id) ? true : '/stylist/customer' } /** @@ -18,7 +18,7 @@ const VerifyIDs = (num: number) => { * 1. 设置路由的meta属性为{ cache: true },表示需要缓存 * 2. App.vue中使用RouteCache组件,通过路由的name来进行匹配 * 3. 路由的name默认是文件名,如果文件名与name不一致,通过defineOptions({ name: 'componentName' })来设置 - * + * * 自定义验证规则: * meta:{ verify: ()=> boolean || string } * 1. boolean true 跳转 false 不跳转 @@ -48,8 +48,8 @@ const router = createRouter({ component: () => import('@/views/login/LoginPage.vue') }, { - path:'/reset', - name:'ResetPage', + path: '/reset', + name: 'ResetPage', component: () => import('@/views/login/ResetPage.vue') }, { @@ -62,16 +62,16 @@ const router = createRouter({ name: 'WelcomePage', component: () => import('@/views/login/WelcomePage.vue') }, - { - path: '/customer', - name: 'customer', - component: () => import('@/views/login/customer.vue'), - }, + { + path: '/customer', + name: 'customer', + component: () => import('@/views/login/customer.vue') + }, { path: '/asistant', name: 'asistant', component: () => import('../views/asistant/index.vue'), - meta: { cache: true, verify: ()=> VerifyIDs(2) } + meta: { cache: true, verify: () => VerifyIDs(2) } }, { path: '/workshop', @@ -82,115 +82,114 @@ const router = createRouter({ // path: '/workshop', // redirect: '/workshop/selectStyle' // }, - { - path: '/workshop/home', - name: 'Home', - component: () => import('@/views/Workshop/home.vue') - }, - { - path: '/workshop/homeNav', - name: 'HomeNav', - component: () => import('@/views/Workshop/homeNav.vue') - }, - { - path: '/workshop/stylist', - name: 'StylistPage', - redirect: '/workshop/stylist/index', - component: () => import('@/views/stylist/container.vue'), - children: [ - { - path: 'index', - name: 'index', - component: () => import('@/views/stylist/index.vue'), - meta: { verify: ()=> VerifyIDs(2) } - }, - { - path: 'sex', - name: 'sex', - component: () => import('@/views/stylist/sex.vue'), - meta: { verify: ()=> VerifyIDs(2) } - }, - { - path: 'dressfor', - name: 'dressfor', - component: () => import('@/views/stylist/dressfor.vue'), - meta: { verify: ()=> VerifyIDs(2) } - }, - - ] - }, + { + path: '/workshop/home', + name: 'Home', + component: () => import('@/views/Workshop/home.vue') + }, + { + path: '/workshop/homeNav', + name: 'HomeNav', + component: () => import('@/views/Workshop/homeNav.vue') + }, + { + path: '/workshop/stylist', + name: 'StylistPage', + redirect: '/workshop/stylist/index', + component: () => import('@/views/stylist/container.vue'), + children: [ + { + path: 'index', + name: 'index', + component: () => import('@/views/stylist/index.vue'), + meta: { verify: () => VerifyIDs(2) } + }, + { + path: 'sex', + name: 'sex', + component: () => import('@/views/stylist/sex.vue'), + meta: { verify: () => VerifyIDs(2) } + }, + { + path: 'dressfor', + name: 'dressfor', + component: () => import('@/views/stylist/dressfor.vue'), + meta: { verify: () => VerifyIDs(2) } + } + ] + }, { path: '/workshop/selectStyle', name: 'selectStyle', component: () => import('../views/Workshop/selectStyle.vue'), - meta: { verify: ()=> VerifyIDs(2) } + meta: { verify: () => VerifyIDs(2) } }, { path: '/workshop/selectModel', name: 'SelectModel', component: () => import('../views/Workshop/selectModel.vue'), - meta: { verify: ()=> VerifyIDs(3) } + meta: { verify: () => VerifyIDs(3) } }, { path: '/workshop/product', name: 'product', component: () => import('../views/Workshop/product.vue'), - meta: { verify: ()=> VerifyIDs(4) } + meta: { verify: () => VerifyIDs(4) } }, { // 推荐try on path: '/workshop/recommended', name: 'recommended', component: () => import('../views/Workshop/recommended.vue'), - meta: { verify: ()=> VerifyIDs(5) } + meta: { verify: () => VerifyIDs(5) } }, { // 上传照片1 path: '/workshop/uploadFace', name: 'uploadFace', component: () => import('../views/Workshop/uploadFace1.vue'), - meta: { verify: ()=> VerifyIDs(5) } + meta: { verify: () => VerifyIDs(5) } }, { // 上传照片2 path: '/workshop/uploadFace2', name: 'uploadFace2', component: () => import('../views/Workshop/uploadFace2.vue'), - meta: { verify: ()=> VerifyIDs(5) } + meta: { verify: () => VerifyIDs(5) } }, { // 自定义创作 path: '/workshop/customize', name: 'customize', component: () => import('../views/Workshop/customize.vue'), - meta: { verify: ()=> VerifyIDs(5) } + meta: { verify: () => VerifyIDs(5) } }, { // library path: '/workshop/library', name: 'library', component: () => import('../views/Workshop/library.vue'), - meta: { verify: ()=> VerifyIDs(2) } + meta: { verify: () => VerifyIDs(2) } }, { path: '/workshop/profile', name: 'profile', component: () => import('../views/Workshop/profile.vue'), - meta: { verify: ()=> VerifyIDs(1) } + meta: { verify: () => VerifyIDs(1) } }, { // creation path: '/workshop/creation', name: 'creation', component: () => import('../views/Workshop/creation/index.vue'), - meta: { verify: ()=> VerifyIDs(2) } + meta: { verify: () => VerifyIDs(2) } }, { // 完成创建 path: '/workshop/end', name: 'end', component: () => import('../views/Workshop/end.vue'), - meta: { verify: ()=> VerifyIDs(2) } + meta: { verify: () => VerifyIDs(2) } } ] } diff --git a/src/stores/modules/generate.ts b/src/stores/modules/generate.ts index 72bf0f4..4be5501 100644 --- a/src/stores/modules/generate.ts +++ b/src/stores/modules/generate.ts @@ -2,6 +2,7 @@ import { defineStore } from 'pinia' import MyEvent from '@/utils/myEvent' MyEvent.add('clear-generate-state', () => useGenerateStore().clearGenerateData()) +MyEvent.add('clear-client-state', () => useGenerateStore().clearCustomerInfo()) export const useGenerateStore = defineStore({ id: 'generate', // 必须指明唯一的pinia仓库的id @@ -176,7 +177,7 @@ export const useGenerateStore = defineStore({ this.updatePhotoInfo({}) this.clearCustomizeInfo() this.clearCustomizeInfoDemo() - this.clearCustomerInfo() + // this.clearCustomerInfo() this.setSessionId('') }, setCustomerInfo(data: any) { diff --git a/src/stores/modules/userInfo.ts b/src/stores/modules/userInfo.ts index f6d3e36..3ce85a0 100644 --- a/src/stores/modules/userInfo.ts +++ b/src/stores/modules/userInfo.ts @@ -9,7 +9,8 @@ export const useUserInfoStore = defineStore('userInfo', () => { token: '', generateParams: { stylist: '', - sex: '' + sex: '', + stylistImage: '' } }) @@ -37,7 +38,8 @@ export const useUserInfoStore = defineStore('userInfo', () => { const resetGenerateParams = () => { state.value.generateParams = { stylist: '', - sex: '' + sex: '', + stylistImage: '' } } @@ -49,6 +51,7 @@ export const useUserInfoStore = defineStore('userInfo', () => { removeLocal('token') resetGenerateParams() MyEvent.emit('clear-generate-state') + MyEvent.emit('clear-client-state') MyEvent.emit('clearAllCache') resolve('') }) diff --git a/src/views/Workshop/creation/creation-list.vue b/src/views/Workshop/creation/creation-list.vue index c1f59b3..b5cc31d 100644 --- a/src/views/Workshop/creation/creation-list.vue +++ b/src/views/Workshop/creation/creation-list.vue @@ -10,6 +10,7 @@ cancelTryOnEffectFavorite } from '@/api/workshop' import { useRouter } from 'vue-router' + import MyEvent from '@/utils/myEvent' const router = useRouter() const emit = defineEmits(['view-type']) const query = computed(() => router.currentRoute.value.query) @@ -243,6 +244,7 @@ hGenerateStore.style.url = selectedItem.url // selectedItem.isFavorite } + MyEvent.emit('clear-generate-state') router.push({ name: 'HomeNav', query: { flowType: nav.flowType } }) } else { router.push({ name: 'end' }) diff --git a/src/views/Workshop/product.vue b/src/views/Workshop/product.vue index 7b867ce..0e08c59 100644 --- a/src/views/Workshop/product.vue +++ b/src/views/Workshop/product.vue @@ -5,6 +5,7 @@ import GenerateLoading from '@/views/asistant/components/GenerateLoading.vue' import { useGenerateStore, useHGenerateStore } from '@/stores' import { generateTryOnEffect, setTryOnEffectFavorite, cancelTryOnEffectFavorite, addTryOnEffectComment } from '@/api/workshop' import { FlowType, IsHistoryFlow } from '@/types/enum' +import gradientButton from '@/components/gradientButton.vue' const router = useRouter() //const props = defineProps({ @@ -64,7 +65,6 @@ const startGenerate = ()=>{ generateStore.originalTryOn.id = res.id generateStore.originalTryOn.tryOnUrl = res.tryOnUrl // generateStore.useStyleGenerate()//生成后需要对选择衣服页面设置不可选中样式 - generateStore.setIsGenerate(false) generateStore.clearCustomizeInfo() }).catch((error)=>{ @@ -121,7 +121,7 @@ const handleSubmit = ()=>{ onMounted(() => { emit('view-type', 1) - if (generateStore.isGenerate) { + if (!generateStore.originalTryOn.id) { startGenerate() } }) @@ -134,7 +134,7 @@ const { isLoading } = toRefs(data);
- Go with this Look? + Generate Result
@@ -150,14 +150,25 @@ const { isLoading } = toRefs(data);
-
-
- - +
+
+ + + +
+
Continue
@@ -190,18 +201,18 @@ const { isLoading } = toRefs(data);