gtsoft-snail-job-admin/src/router/routes/index.ts

102 lines
2.3 KiB
TypeScript
Raw Normal View History

2024-03-08 17:59:45 +08:00
import type { CustomRoute, ElegantConstRoute, ElegantRoute } from '@elegant-router/types';
import { generatedRoutes } from '../elegant/routes';
import { layouts, views } from '../elegant/imports';
2024-03-21 10:57:53 +08:00
import { getRoutePath, transformElegantRoutesToVueRoutes } from '../elegant/transform';
2024-03-08 17:59:45 +08:00
export const ROOT_ROUTE: CustomRoute = {
name: 'root',
path: '/',
2024-03-21 10:57:53 +08:00
redirect: getRoutePath(import.meta.env.VITE_ROUTE_HOME) || '/home',
2024-03-08 17:59:45 +08:00
meta: {
title: 'root',
constant: true
}
};
const customRoutes: CustomRoute[] = [
ROOT_ROUTE,
{
name: 'not-found',
path: '/:pathMatch(.*)*',
component: 'layout.blank$view.404',
meta: {
title: 'not-found',
constant: true
}
},
{
name: 'exception',
path: '/exception',
component: 'layout.base',
meta: {
title: 'exception',
i18nKey: 'route.exception',
icon: 'ant-design:exception-outlined',
order: 7
},
children: [
{
name: 'exception_403',
path: '/exception/403',
component: 'view.403',
meta: {
title: 'exception_403',
i18nKey: 'route.exception_403',
icon: 'ic:baseline-block'
}
},
{
name: 'exception_404',
path: '/exception/404',
component: 'view.404',
meta: {
title: 'exception_404',
i18nKey: 'route.exception_404',
icon: 'ic:baseline-web-asset-off'
}
},
{
name: 'exception_500',
path: '/exception/500',
component: 'view.500',
meta: {
title: 'exception_500',
i18nKey: 'route.exception_500',
icon: 'ic:baseline-wifi-off'
}
}
]
}
];
/** Create routes */
export function createRoutes() {
const constantRoutes: ElegantRoute[] = [];
const authRoutes: ElegantRoute[] = [];
[...customRoutes, ...generatedRoutes].forEach(item => {
if (item.meta?.constant) {
constantRoutes.push(item);
} else {
authRoutes.push(item);
}
});
const constantVueRoutes = transformElegantRoutesToVueRoutes(constantRoutes, layouts, views);
return {
constantVueRoutes,
authRoutes
};
}
/**
* Get auth vue routes
*
* @param routes Elegant routes
*/
export function getAuthVueRoutes(routes: ElegantConstRoute[]) {
return transformElegantRoutesToVueRoutes(routes, layouts, views);
}