183 lines
4.0 KiB
TypeScript
183 lines
4.0 KiB
TypeScript
import type { CustomRoute, ElegantConstRoute, ElegantRoute } from '@elegant-router/types';
|
|
import { generatedRoutes } from '../elegant/routes';
|
|
import { layouts, views } from '../elegant/imports';
|
|
import { transformElegantRoutesToVueRoutes } from '../elegant/transform';
|
|
|
|
/**
|
|
* custom routes
|
|
*
|
|
* @link https://github.com/soybeanjs/elegant-router?tab=readme-ov-file#custom-route
|
|
*/
|
|
const customRoutes: CustomRoute[] = [];
|
|
|
|
/** create routes when the auth route mode is static */
|
|
export function createStaticRoutes() {
|
|
const constantRoutes: ElegantRoute[] = [];
|
|
|
|
const authRoutes: ElegantRoute[] = [];
|
|
|
|
[...customRoutes, ...generatedRoutes].forEach(item => {
|
|
if (item.meta?.constant) {
|
|
constantRoutes.push(item);
|
|
} else {
|
|
authRoutes.push(item);
|
|
}
|
|
});
|
|
|
|
return {
|
|
constantRoutes,
|
|
authRoutes
|
|
};
|
|
}
|
|
|
|
const dynamicConstantRoutes: ElegantRoute[] = [
|
|
{
|
|
name: 'home',
|
|
path: '/home',
|
|
component: 'layout.base$view.home',
|
|
meta: {
|
|
title: 'home',
|
|
i18nKey: 'route.home',
|
|
icon: 'mdi:monitor-dashboard',
|
|
order: -1
|
|
}
|
|
},
|
|
{
|
|
name: '403',
|
|
path: '/403',
|
|
component: 'layout.blank$view.403',
|
|
meta: {
|
|
title: '403',
|
|
i18nKey: 'route.403',
|
|
constant: true,
|
|
hideInMenu: true
|
|
}
|
|
},
|
|
{
|
|
name: '404',
|
|
path: '/404',
|
|
component: 'layout.blank$view.404',
|
|
meta: {
|
|
title: '404',
|
|
i18nKey: 'route.404',
|
|
constant: true,
|
|
hideInMenu: true
|
|
}
|
|
},
|
|
{
|
|
name: '500',
|
|
path: '/500',
|
|
component: 'layout.blank$view.500',
|
|
meta: {
|
|
title: '500',
|
|
i18nKey: 'route.500',
|
|
constant: true,
|
|
hideInMenu: true
|
|
}
|
|
},
|
|
{
|
|
name: 'login',
|
|
path: '/login/:module(pwd-login|code-login|register|reset-pwd|bind-wechat)?',
|
|
component: 'layout.blank$view.login',
|
|
props: true,
|
|
meta: {
|
|
title: 'login',
|
|
i18nKey: 'route.login',
|
|
constant: true,
|
|
hideInMenu: true
|
|
}
|
|
},
|
|
{
|
|
name: 'iframe-page',
|
|
path: '/iframe-page/:url',
|
|
component: 'layout.base$view.iframe-page',
|
|
props: true,
|
|
meta: {
|
|
title: 'iframe-page',
|
|
i18nKey: 'route.iframe-page',
|
|
constant: true,
|
|
hideInMenu: true,
|
|
keepAlive: true,
|
|
icon: 'material-symbols:iframe-outline'
|
|
}
|
|
},
|
|
{
|
|
name: 'social-callback',
|
|
path: '/social-callback',
|
|
component: 'layout.blank$view.social-callback',
|
|
meta: {
|
|
title: 'social-callback',
|
|
i18nKey: 'route.social-callback',
|
|
constant: true,
|
|
hideInMenu: true,
|
|
icon: 'simple-icons:authy'
|
|
}
|
|
},
|
|
{
|
|
name: 'user-center',
|
|
path: '/user-center',
|
|
component: 'layout.base$view.user-center',
|
|
meta: {
|
|
title: 'user-center',
|
|
i18nKey: 'route.user-center',
|
|
icon: 'material-symbols:account-circle-full',
|
|
hideInMenu: true
|
|
}
|
|
},
|
|
{
|
|
name: 'system',
|
|
path: '/system',
|
|
component: 'layout.base',
|
|
meta: {
|
|
title: 'system',
|
|
i18nKey: 'route.system',
|
|
localIcon: 'menu-system',
|
|
order: 1,
|
|
hideInMenu: true
|
|
},
|
|
children: [
|
|
{
|
|
name: 'system_oss-config',
|
|
path: '/system/oss-config',
|
|
component: 'view.system_oss-config',
|
|
meta: {
|
|
title: 'system_oss-config',
|
|
i18nKey: 'route.system_oss-config',
|
|
constant: true,
|
|
hideInMenu: true,
|
|
icon: 'hugeicons:configuration-01'
|
|
}
|
|
}
|
|
]
|
|
}
|
|
];
|
|
|
|
/** create routes when the auth route mode is static */
|
|
export function createDynamicRoutes() {
|
|
const constantRoutes: ElegantConstRoute[] = [];
|
|
|
|
const authRoutes: ElegantConstRoute[] = [];
|
|
|
|
[...customRoutes, ...dynamicConstantRoutes].forEach(item => {
|
|
if (item.meta?.constant) {
|
|
constantRoutes.push(item);
|
|
} else {
|
|
authRoutes.push(item);
|
|
}
|
|
});
|
|
|
|
return {
|
|
constantRoutes,
|
|
authRoutes
|
|
};
|
|
}
|
|
|
|
/**
|
|
* Get auth vue routes
|
|
*
|
|
* @param routes Elegant routes
|
|
*/
|
|
export function getAuthVueRoutes(routes: ElegantConstRoute[]) {
|
|
return transformElegantRoutesToVueRoutes(routes, layouts, views);
|
|
}
|