2025-10-09 09:29:36 +08:00
|
|
|
|
import { createRouter, createWebHistory } from 'vue-router'
|
2025-10-31 14:41:07 +08:00
|
|
|
|
import { useGenerateStore } from '@/stores/modules/generate'
|
2025-10-31 14:41:40 +08:00
|
|
|
|
const VerifyIDs = (num: number) => {
|
|
|
|
|
|
const ids = [
|
|
|
|
|
|
!!useGenerateStore().customerId,
|
|
|
|
|
|
!!useGenerateStore().visitRecordId,
|
|
|
|
|
|
!!useGenerateStore().styleId,
|
|
|
|
|
|
// !!useGenerateStore().modelPhotoId,
|
|
|
|
|
|
true,
|
|
|
|
|
|
!!useGenerateStore().originalTryOnId,
|
|
|
|
|
|
];
|
|
|
|
|
|
return ids.splice(0, num).every(id => id) ? true : "/stylist/customer";
|
|
|
|
|
|
}
|
2025-10-21 11:28:12 +08:00
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
|
* 路由缓存机制:
|
|
|
|
|
|
* 1. 设置路由的meta属性为{ cache: true },表示需要缓存
|
|
|
|
|
|
* 2. App.vue中使用RouteCache组件,通过路由的name来进行匹配
|
|
|
|
|
|
* 3. 路由的name默认是文件名,如果文件名与name不一致,通过defineOptions({ name: 'componentName' })来设置
|
2025-10-31 14:41:07 +08:00
|
|
|
|
*
|
|
|
|
|
|
* 自定义验证规则:
|
|
|
|
|
|
* meta:{ verify: ()=> boolean || string }
|
|
|
|
|
|
* 1. boolean true 跳转 false 不跳转
|
|
|
|
|
|
* 2. string 跳转的路由path
|
2025-10-21 11:28:12 +08:00
|
|
|
|
*/
|
|
|
|
|
|
|
2025-10-31 14:41:07 +08:00
|
|
|
|
/** 验证id
|
|
|
|
|
|
* @param num 验证id的数量1-5
|
|
|
|
|
|
* 1. 顾客id
|
|
|
|
|
|
* 2. 进店记录id
|
|
|
|
|
|
* 3. 服装id
|
|
|
|
|
|
* 4. 模特照片id
|
|
|
|
|
|
* 5. 原始试穿id-优先AI魔改
|
|
|
|
|
|
* @returns boolean
|
|
|
|
|
|
*/
|
2025-10-09 09:29:36 +08:00
|
|
|
|
const router = createRouter({
|
|
|
|
|
|
history: createWebHistory('/'),
|
2025-10-10 11:00:08 +08:00
|
|
|
|
// history: createWebHistory(import.meta.env.VITE_APP_URL),
|
2025-10-09 09:29:36 +08:00
|
|
|
|
routes: [
|
|
|
|
|
|
{
|
2025-10-10 11:00:08 +08:00
|
|
|
|
path: '/',
|
2025-10-16 13:59:18 +08:00
|
|
|
|
redirect: '/welcome'
|
2025-10-10 11:00:08 +08:00
|
|
|
|
},
|
2025-10-10 11:01:17 +08:00
|
|
|
|
{
|
|
|
|
|
|
path: '/login',
|
2025-10-13 10:13:54 +08:00
|
|
|
|
name: 'LoginPage',
|
2025-10-10 11:01:17 +08:00
|
|
|
|
component: () => import('@/views/login/LoginPage.vue')
|
|
|
|
|
|
},
|
2025-10-22 14:03:57 +08:00
|
|
|
|
{
|
|
|
|
|
|
path:'/reset',
|
|
|
|
|
|
name:'ResetPage',
|
|
|
|
|
|
component: () => import('@/views/login/ResetPage.vue')
|
|
|
|
|
|
},
|
2025-10-10 11:01:17 +08:00
|
|
|
|
{
|
|
|
|
|
|
path: '/signup',
|
2025-10-13 10:13:54 +08:00
|
|
|
|
name: 'SignupPage',
|
2025-10-10 11:01:17 +08:00
|
|
|
|
component: () => import('@/views/login/SignupPage.vue')
|
|
|
|
|
|
},
|
2025-10-13 10:13:54 +08:00
|
|
|
|
{
|
|
|
|
|
|
path: '/welcome',
|
|
|
|
|
|
name: 'WelcomePage',
|
|
|
|
|
|
component: () => import('@/views/login/WelcomePage.vue')
|
|
|
|
|
|
},
|
2025-11-17 14:13:39 +08:00
|
|
|
|
{
|
|
|
|
|
|
path: '/homeNav',
|
|
|
|
|
|
name: 'HomeNav',
|
|
|
|
|
|
component: () => import('@/views/Workshop/home.vue')
|
|
|
|
|
|
},
|
2025-10-10 11:01:17 +08:00
|
|
|
|
{
|
|
|
|
|
|
path: '/stylist',
|
2025-10-13 10:13:54 +08:00
|
|
|
|
name: 'StylistPage',
|
2025-10-21 11:21:15 +08:00
|
|
|
|
redirect: '/stylist/index',
|
2025-10-14 16:42:09 +08:00
|
|
|
|
component: () => import('@/views/stylist/container.vue'),
|
2025-10-13 10:13:54 +08:00
|
|
|
|
children: [
|
|
|
|
|
|
{
|
2025-10-14 16:42:09 +08:00
|
|
|
|
path: 'index',
|
|
|
|
|
|
name: 'index',
|
2025-10-31 14:41:07 +08:00
|
|
|
|
component: () => import('@/views/stylist/index.vue'),
|
|
|
|
|
|
meta: { verify: ()=> VerifyIDs(2) }
|
2025-10-14 16:42:09 +08:00
|
|
|
|
},
|
|
|
|
|
|
{
|
|
|
|
|
|
path: 'sex',
|
2025-10-13 10:26:33 +08:00
|
|
|
|
name: 'sex',
|
2025-10-31 14:41:07 +08:00
|
|
|
|
component: () => import('@/views/stylist/sex.vue'),
|
|
|
|
|
|
meta: { verify: ()=> VerifyIDs(2) }
|
2025-10-13 10:13:54 +08:00
|
|
|
|
},
|
|
|
|
|
|
{
|
2025-10-14 16:42:09 +08:00
|
|
|
|
path: 'dressfor',
|
2025-10-13 10:26:33 +08:00
|
|
|
|
name: 'dressfor',
|
2025-10-31 14:41:07 +08:00
|
|
|
|
component: () => import('@/views/stylist/dressfor.vue'),
|
|
|
|
|
|
meta: { verify: ()=> VerifyIDs(2) }
|
2025-10-13 10:13:54 +08:00
|
|
|
|
},
|
|
|
|
|
|
{
|
2025-10-14 16:42:09 +08:00
|
|
|
|
path: 'customer',
|
2025-10-13 10:26:33 +08:00
|
|
|
|
name: 'customer',
|
2025-10-31 14:41:07 +08:00
|
|
|
|
component: () => import('@/views/stylist/customer.vue'),
|
2025-10-13 10:13:54 +08:00
|
|
|
|
}
|
|
|
|
|
|
]
|
2025-10-10 11:01:17 +08:00
|
|
|
|
},
|
2025-10-14 16:42:09 +08:00
|
|
|
|
{
|
|
|
|
|
|
path: '/asistant',
|
|
|
|
|
|
name: 'asistant',
|
2025-10-21 11:21:15 +08:00
|
|
|
|
component: () => import('../views/asistant/index.vue'),
|
2025-10-31 14:41:07 +08:00
|
|
|
|
meta: { cache: true, verify: ()=> VerifyIDs(2) }
|
2025-10-14 16:42:09 +08:00
|
|
|
|
},
|
2025-10-10 11:00:08 +08:00
|
|
|
|
{
|
|
|
|
|
|
path: '/workshop',
|
|
|
|
|
|
name: 'Workshop',
|
|
|
|
|
|
component: () => import('../views/Workshop/index.vue'),
|
|
|
|
|
|
children: [
|
2025-10-16 14:49:01 +08:00
|
|
|
|
{
|
2025-10-21 11:21:15 +08:00
|
|
|
|
path: '/workshop',
|
|
|
|
|
|
redirect: '/workshop/selectStyle'
|
2025-10-16 14:49:01 +08:00
|
|
|
|
},
|
2025-10-10 11:00:08 +08:00
|
|
|
|
{
|
|
|
|
|
|
path: '/workshop/selectStyle',
|
|
|
|
|
|
name: 'SelectStyle',
|
2025-10-24 11:48:15 +08:00
|
|
|
|
component: () => import('../views/Workshop/selectStyle.vue'),
|
2025-10-31 14:41:07 +08:00
|
|
|
|
meta: { verify: ()=> VerifyIDs(2) }
|
2025-10-10 11:01:17 +08:00
|
|
|
|
},
|
|
|
|
|
|
{
|
|
|
|
|
|
path: '/workshop/selectModel',
|
|
|
|
|
|
name: 'SelectModel',
|
2025-10-31 14:41:07 +08:00
|
|
|
|
component: () => import('../views/Workshop/selectModel.vue'),
|
|
|
|
|
|
meta: { verify: ()=> VerifyIDs(3) }
|
2025-10-10 11:01:17 +08:00
|
|
|
|
},
|
|
|
|
|
|
{
|
2025-10-21 13:46:27 +08:00
|
|
|
|
path: '/workshop/product',
|
|
|
|
|
|
name: 'Product',
|
2025-10-31 14:41:07 +08:00
|
|
|
|
component: () => import('../views/Workshop/product.vue'),
|
|
|
|
|
|
meta: { verify: ()=> VerifyIDs(4) }
|
2025-10-10 11:01:17 +08:00
|
|
|
|
},
|
2025-10-13 10:13:54 +08:00
|
|
|
|
{
|
2025-10-16 13:57:00 +08:00
|
|
|
|
// 上传照片1
|
2025-10-13 10:13:54 +08:00
|
|
|
|
path: '/workshop/uploadFace',
|
|
|
|
|
|
name: 'uploadFace',
|
2025-10-31 14:41:07 +08:00
|
|
|
|
component: () => import('../views/Workshop/uploadFace1.vue'),
|
|
|
|
|
|
meta: { verify: ()=> VerifyIDs(5) }
|
2025-10-16 13:57:00 +08:00
|
|
|
|
},
|
|
|
|
|
|
{
|
|
|
|
|
|
// 上传照片2
|
|
|
|
|
|
path: '/workshop/uploadFace2',
|
|
|
|
|
|
name: 'uploadFace2',
|
2025-10-31 14:41:07 +08:00
|
|
|
|
component: () => import('../views/Workshop/uploadFace2.vue'),
|
|
|
|
|
|
meta: { verify: ()=> VerifyIDs(5) }
|
2025-10-13 10:13:54 +08:00
|
|
|
|
},
|
|
|
|
|
|
{
|
|
|
|
|
|
// 自定义创作
|
|
|
|
|
|
path: '/workshop/customize',
|
|
|
|
|
|
name: 'customize',
|
2025-10-31 14:41:07 +08:00
|
|
|
|
component: () => import('../views/Workshop/customize.vue'),
|
|
|
|
|
|
meta: { verify: ()=> VerifyIDs(5) }
|
2025-10-13 10:13:54 +08:00
|
|
|
|
},
|
2025-10-16 11:01:54 +08:00
|
|
|
|
{
|
|
|
|
|
|
// library
|
|
|
|
|
|
path: '/workshop/library',
|
2025-10-21 11:21:15 +08:00
|
|
|
|
name: 'library',
|
2025-10-31 14:41:07 +08:00
|
|
|
|
component: () => import('../views/Workshop/library.vue'),
|
|
|
|
|
|
meta: { verify: ()=> VerifyIDs(2) }
|
2025-10-21 11:21:15 +08:00
|
|
|
|
},
|
2025-10-21 16:40:13 +08:00
|
|
|
|
{
|
|
|
|
|
|
path: '/workshop/profile',
|
|
|
|
|
|
name: 'profile',
|
2025-10-31 14:41:07 +08:00
|
|
|
|
component: () => import('../views/Workshop/profile.vue'),
|
|
|
|
|
|
meta: { verify: ()=> VerifyIDs(1) }
|
2025-10-21 16:40:13 +08:00
|
|
|
|
},
|
2025-10-21 11:21:15 +08:00
|
|
|
|
{
|
|
|
|
|
|
// creation
|
|
|
|
|
|
path: '/workshop/creation',
|
|
|
|
|
|
name: 'creation',
|
2025-10-31 14:41:07 +08:00
|
|
|
|
component: () => import('../views/Workshop/creation/index.vue'),
|
|
|
|
|
|
meta: { verify: ()=> VerifyIDs(2) }
|
2025-10-16 11:01:54 +08:00
|
|
|
|
},
|
2025-10-13 10:13:54 +08:00
|
|
|
|
{
|
|
|
|
|
|
// 完成创建
|
|
|
|
|
|
path: '/workshop/end',
|
|
|
|
|
|
name: 'end',
|
2025-10-31 14:41:07 +08:00
|
|
|
|
component: () => import('../views/Workshop/end.vue'),
|
|
|
|
|
|
meta: { verify: ()=> VerifyIDs(2) }
|
2025-10-13 10:13:54 +08:00
|
|
|
|
}
|
2025-10-10 11:00:08 +08:00
|
|
|
|
]
|
|
|
|
|
|
}
|
2025-10-09 09:29:36 +08:00
|
|
|
|
]
|
|
|
|
|
|
})
|
|
|
|
|
|
|
|
|
|
|
|
export default router
|