Files
mp-vue/src/router/routes.ts
赵忠林 a485faa0e4 feat(shop): 添加商户入驻申请功能
- 在API模型中新增证件类型字段(idType)
- 修改API请求路径,移除SERVER_API_URL前缀
- 新增根据入驻申请创建商户的接口方法
- 在菜单配置中添加商城管理和商户入驻申请菜单项
- 新增商家入驻申请和申请成功页面路由
- 创建商家入驻申请表单页面,包含三步流程:基本信息、资质信息、确认提交
- 实现图片上传和预览功能,支持营业执照、身份证等资质文件上传
- 添加表单验证规则,确保必填信息完整
- 创建申请提交成功页面,提供返回首页和查看申请按钮
- 优化CMS网站搜索组件代码结构和格式
2025-12-05 23:48:16 +08:00

129 lines
3.5 KiB
TypeScript

import type { RouteRecordRaw } from 'vue-router';
import type { MenuItemType } from 'ele-admin-pro/es';
import { menuToRoutes, eachTreeData } from 'ele-admin-pro/es';
import { HOME_PATH, LAYOUT_PATH, REDIRECT_PATH } from '@/config/setting';
import EleLayout from '@/layout/index.vue';
import RedirectLayout from '@/components/RedirectLayout';
const modules = import.meta.glob('/src/views/**/index.vue');
/**
* 静态路由
*/
export const routes = [
{
path: '/login',
component: () => import('@/views/passport/login/index.vue'),
meta: { title: '登录' }
},
{
path: '/token-login',
component: () => import('@/views/passport/loginToken/index.vue'),
meta: { title: 'token登录' }
},
{
path: '/register',
component: () => import('@/views/passport/register/index.vue'),
meta: { title: '注册' }
},
{
path: '/bszx/pay-cert/:id',
component: () => import('@/views/bszx/bszxPayCert/index.vue'),
meta: { title: '查看证书' }
},
{
path: '/dealer/register',
component: () => import('@/views/passport/dealer/register.vue'),
meta: { title: '邀请注册' }
},
{
path: '/qr-confirm',
component: () => import('@/views/passport/qrConfirm/index.vue'),
meta: { title: '扫码登录确认' }
},
{
path: '/qr-demo',
component: () => import('@/components/QrLogin/demo.vue'),
meta: { title: '二维码登录演示' }
},
{
path: '/merchant/apply',
component: () => import('@/views/passport/merchant/apply.vue'),
meta: { title: '商家入驻申请' }
},
{
path: '/merchant/success',
component: () => import('@/views/passport/merchant/success.vue'),
meta: { title: '申请提交成功' }
},
// {
// path: '/forget',
// component: () => import('@/views/passport/forget/index.vue'),
// meta: { title: '忘记密码' }
// },
// {
// path: '/wx-work-login',
// component: () => import('@/views/passport/wx-work/index.vue'),
// meta: { title: '企业微信登录' }
// },
// {
// path: '/token-login',
// component: () => import('@/views/passport/token-login/index.vue'),
// meta: { title: '快捷登录' }
// },
// {
// path: '/cms/category/:id',
// component: () => import('@/views/cms/category/preview/index.vue'),
// meta: { title: '文章列表' }
// },
// {
// path: '/cms/article/:id',
// component: () => import('@/views/cms/article/preview/index.vue'),
// meta: { title: '文章详情' }
// },
// 404
{
path: '/:path(.*)*',
component: () => import('@/views/result/fail/index.vue')
}
];
/**
* 动态路由
* @param menus 菜单数据
* @param homePath 主页地址
*/
export function getMenuRoutes(menus?: MenuItemType[], homePath?: string) {
const routes: RouteRecordRaw[] = [
// 用于刷新的路由
{
path: REDIRECT_PATH + '/:path(.*)',
component: RedirectLayout,
meta: { hideFooter: true }
}
];
// 路由铺平处理
eachTreeData(menuToRoutes(menus, getComponent), (route) => {
routes.push(Object.assign({}, route, { children: void 0 }));
});
return {
path: LAYOUT_PATH,
component: EleLayout,
redirect: HOME_PATH ?? homePath,
children: routes
};
}
/**
* 解析路由组件
* @param component 组件名称
*/
function getComponent(component?: string) {
if (component) {
const module = modules[`/src/views/${component}.vue`];
if (!module) {
return modules[`/src/views/${component}/index.vue`];
}
return module;
}
}