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

183 lines
4.0 KiB
TypeScript
Raw Normal View History

2023-12-14 21:45:29 +08:00
import type { CustomRoute, ElegantConstRoute, ElegantRoute } from '@elegant-router/types';
2023-11-17 08:45:00 +08:00
import { generatedRoutes } from '../elegant/routes';
import { layouts, views } from '../elegant/imports';
2024-03-25 02:42:50 +08:00
import { transformElegantRoutesToVueRoutes } from '../elegant/transform';
2024-03-25 02:42:50 +08:00
/**
* custom routes
*
* @link https://github.com/soybeanjs/elegant-router?tab=readme-ov-file#custom-route
*/
const customRoutes: CustomRoute[] = [];
2023-11-17 08:45:00 +08:00
2024-03-25 02:42:50 +08:00
/** create routes when the auth route mode is static */
export function createStaticRoutes() {
2023-11-17 08:45:00 +08:00
const constantRoutes: ElegantRoute[] = [];
const authRoutes: ElegantRoute[] = [];
[...customRoutes, ...generatedRoutes].forEach(item => {
if (item.meta?.constant) {
constantRoutes.push(item);
} else {
authRoutes.push(item);
}
});
return {
2024-03-25 02:42:50 +08:00
constantRoutes,
2023-11-17 08:45:00 +08:00
authRoutes
};
}
2024-08-16 16:33:11 +08:00
const dynamicConstantRoutes: ElegantRoute[] = [
{
name: 'home',
path: '/home',
component: 'layout.base$view.home',
meta: {
title: 'home',
i18nKey: 'route.home',
icon: 'mdi:monitor-dashboard',
2024-09-03 15:27:10 +08:00
order: -1
2024-08-16 16:33:11 +08:00
}
},
{
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'
}
2025-04-24 17:36:38 +08:00
},
{
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'
}
2025-04-27 14:53:55 +08:00
},
2025-04-28 23:52:26 +08:00
{
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
}
},
2025-04-27 14:53:55 +08:00
{
name: 'system',
path: '/system',
component: 'layout.base',
meta: {
title: 'system',
i18nKey: 'route.system',
localIcon: 'menu-system',
order: 1,
hideInMenu: true
2025-04-27 14:53:55 +08:00
},
children: [
{
name: 'system_oss-config',
2025-04-27 17:06:19 +08:00
path: '/system/oss-config',
2025-04-27 14:53:55 +08:00
component: 'view.system_oss-config',
meta: {
title: 'system_oss-config',
i18nKey: 'route.system_oss-config',
constant: true,
hideInMenu: true,
icon: 'hugeicons:configuration-01'
}
}
]
2024-08-16 16:33:11 +08:00
}
];
/** 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
};
}
2023-11-17 08:45:00 +08:00
/**
2023-12-14 21:45:29 +08:00
* Get auth vue routes
*
* @param routes Elegant routes
2023-11-17 08:45:00 +08:00
*/
export function getAuthVueRoutes(routes: ElegantConstRoute[]) {
return transformElegantRoutesToVueRoutes(routes, layouts, views);
}