ruoyi-plus-soybean/src/router/routes.ts

179 lines
5.0 KiB
TypeScript
Raw Normal View History

2021-08-17 14:59:59 +08:00
import type { RouteRecordRaw } from 'vue-router';
import { Dashboard } from '@vicons/carbon';
import { ExceptionOutlined } from '@vicons/antd';
2021-09-11 02:34:36 +08:00
import { BasicLayout, BlankLayout } from '@/layouts';
2021-09-14 01:31:29 +08:00
import { EnumRoutePath, EnumRouteTitle } from '@/enum';
import type { CustomRoute, RoutePathKey, LoginModuleType } from '@/interface';
2021-09-11 02:34:36 +08:00
import { getLoginModuleRegExp } from '@/utils';
2021-09-09 12:00:18 +08:00
/** 路由名称 */
2021-09-11 02:34:36 +08:00
export const RouteNameMap = new Map<RoutePathKey, RoutePathKey>(
2021-09-14 01:31:29 +08:00
(Object.keys(EnumRoutePath) as RoutePathKey[]).map(v => [v, v])
2021-09-11 02:34:36 +08:00
);
const loginModuleRegExp = getLoginModuleRegExp();
2021-09-09 12:00:18 +08:00
/**
*
* @description !
*/
2021-09-14 01:31:29 +08:00
export const constantRoutes: RouteRecordRaw[] = [
2021-09-09 12:00:18 +08:00
{
2021-09-14 01:31:29 +08:00
name: RouteNameMap.get('system'),
path: EnumRoutePath.system,
2021-09-09 12:00:18 +08:00
component: BlankLayout,
2021-09-14 01:31:29 +08:00
redirect: { name: RouteNameMap.get('not-found') },
meta: {
title: EnumRouteTitle.system
},
2021-09-09 12:00:18 +08:00
children: [
// 登录
{
name: RouteNameMap.get('login'),
2021-09-14 01:31:29 +08:00
path: `${EnumRoutePath.login}/:module(/${loginModuleRegExp}/)?`,
component: () => import('@/views/system/login/index.vue'),
2021-09-11 02:34:36 +08:00
props: route => {
const moduleType: LoginModuleType = (route.params.module as LoginModuleType) || 'pwd-login';
return {
module: moduleType
};
},
meta: {
2021-09-14 01:31:29 +08:00
title: EnumRouteTitle.login,
fullPage: true
}
2021-09-09 12:00:18 +08:00
},
// 404
{
name: RouteNameMap.get('not-found'),
2021-09-14 01:31:29 +08:00
path: EnumRoutePath['not-found'],
component: () => import('@/views/system/exception/404.vue'),
meta: {
2021-09-14 01:31:29 +08:00
title: EnumRouteTitle['not-found'],
fullPage: true
}
2021-09-09 12:00:18 +08:00
},
// 403
{
name: RouteNameMap.get('no-permission'),
2021-09-14 01:31:29 +08:00
path: EnumRoutePath['no-permission'],
component: () => import('@/views/system/exception/403.vue'),
meta: {
2021-09-14 01:31:29 +08:00
title: EnumRouteTitle['no-permission'],
fullPage: true
}
2021-09-09 12:00:18 +08:00
},
// 500
{
name: RouteNameMap.get('service-error'),
2021-09-14 01:31:29 +08:00
path: EnumRoutePath['service-error'],
component: () => import('@/views/system/exception/500.vue'),
meta: {
2021-09-14 01:31:29 +08:00
title: EnumRouteTitle['service-error'],
fullPage: true
}
2021-09-09 12:00:18 +08:00
}
]
},
// 匹配无效的路径重定向404
{
path: '/:pathMatch(.*)*',
redirect: { name: 'not-found' }
}
];
2021-08-17 14:59:59 +08:00
/**
*
*/
export const customRoutes: CustomRoute[] = [
2021-08-17 14:59:59 +08:00
{
2021-09-14 01:31:29 +08:00
name: RouteNameMap.get('root'),
path: EnumRoutePath.root,
redirect: { name: RouteNameMap.get('dashboard-analysis') },
meta: {
2021-09-16 08:25:07 +08:00
isNotMenu: true
2021-09-14 01:31:29 +08:00
}
2021-09-11 02:34:36 +08:00
},
{
2021-09-14 01:31:29 +08:00
name: RouteNameMap.get('dashboard'),
path: EnumRoutePath.dashboard,
2021-09-11 02:34:36 +08:00
component: BasicLayout,
redirect: { name: RouteNameMap.get('dashboard-analysis') },
2021-09-14 01:31:29 +08:00
meta: {
title: EnumRouteTitle.dashboard,
keepAlive: true,
icon: Dashboard
2021-09-14 01:31:29 +08:00
},
2021-09-11 02:34:36 +08:00
children: [
{
name: RouteNameMap.get('dashboard-analysis'),
2021-09-14 01:31:29 +08:00
path: EnumRoutePath['dashboard-analysis'],
component: () => import('@/views/dashboard/analysis/index.vue'),
meta: {
requiresAuth: true,
2021-09-16 08:25:07 +08:00
title: EnumRouteTitle['dashboard-analysis']
2021-09-14 01:31:29 +08:00
}
2021-09-11 02:34:36 +08:00
},
{
name: RouteNameMap.get('dashboard-workbench'),
2021-09-14 01:31:29 +08:00
path: EnumRoutePath['dashboard-workbench'],
component: () => import('@/views/dashboard/workbench/index.vue'),
meta: {
requiresAuth: true,
2021-09-16 08:25:07 +08:00
title: EnumRouteTitle['dashboard-workbench']
2021-09-14 01:31:29 +08:00
}
2021-09-11 02:34:36 +08:00
}
]
},
{
2021-09-14 01:31:29 +08:00
name: RouteNameMap.get('exception'),
path: EnumRoutePath.exception,
2021-08-18 12:02:59 +08:00
component: BasicLayout,
2021-09-14 01:31:29 +08:00
meta: {
requiresAuth: true,
2021-09-14 01:31:29 +08:00
title: EnumRouteTitle.exception,
icon: ExceptionOutlined
2021-09-14 01:31:29 +08:00
},
2021-08-18 12:02:59 +08:00
children: [
{
2021-09-11 02:34:36 +08:00
name: RouteNameMap.get('exception-403'),
2021-09-14 01:31:29 +08:00
path: EnumRoutePath['exception-403'],
component: () => import('@/views/system/exception/403.vue'),
meta: {
requiresAuth: true,
2021-09-14 01:31:29 +08:00
title: EnumRouteTitle['exception-403'],
2021-09-16 08:25:07 +08:00
fullPage: true
2021-09-14 01:31:29 +08:00
}
2021-09-11 02:34:36 +08:00
},
{
name: RouteNameMap.get('exception-404'),
2021-09-14 01:31:29 +08:00
path: EnumRoutePath['exception-404'],
component: () => import('@/views/system/exception/404.vue'),
meta: {
requiresAuth: true,
2021-09-14 01:31:29 +08:00
title: EnumRouteTitle['exception-404'],
2021-09-16 08:25:07 +08:00
fullPage: true
2021-09-14 01:31:29 +08:00
}
},
{
2021-09-11 02:34:36 +08:00
name: RouteNameMap.get('exception-500'),
2021-09-14 01:31:29 +08:00
path: EnumRoutePath['exception-500'],
component: () => import('@/views/system/exception/500.vue'),
meta: {
requiresAuth: true,
2021-09-14 01:31:29 +08:00
title: EnumRouteTitle['exception-500'],
2021-09-16 08:25:07 +08:00
fullPage: true
2021-09-14 01:31:29 +08:00
}
2021-08-18 12:02:59 +08:00
}
]
2021-08-17 14:59:59 +08:00
}
];
2021-09-14 01:31:29 +08:00
/** 路由白名单(不需要登录) */
export const whitelistRoutes: string[] = [
RouteNameMap.get('login')!,
RouteNameMap.get('exception-403')!,
RouteNameMap.get('exception-404')!,
RouteNameMap.get('exception-500')!
];