Files
ai-agent-admin/web/apps/web-ele/src/router/routes/index.ts
T
2026-06-09 11:02:08 +08:00

76 lines
3.1 KiB
TypeScript

import type { RouteRecordRaw } from 'vue-router';
import { mergeRouteModules, traverseTreeValues } from '@vben/utils';
import { coreRoutes, fallbackNotFoundRoute } from './core';
import aiPlatformRoutes from './modules/ai-platform';
// 有需要可以自行打开注释,并创建文件夹
// const externalRouteFiles = import.meta.glob('./external/**/*.ts', { eager: true });
// const staticRouteFiles = import.meta.glob('./static/**/*.ts', { eager: true });
/** 动态路由 */
const dynamicRoutes: RouteRecordRaw[] = mergeRouteModules({
'./modules/ai-platform.ts': { default: aiPlatformRoutes },
});
/** 外部路由列表,访问这些页面可以不需要Layout,可能用于内嵌在别的系统(不会显示在菜单中) */
// const externalRoutes: RouteRecordRaw[] = mergeRouteModules(externalRouteFiles);
// const staticRoutes: RouteRecordRaw[] = mergeRouteModules(staticRouteFiles);
const staticRoutes: RouteRecordRaw[] = [];
const externalRoutes: RouteRecordRaw[] = [];
/** 路由列表,由基本路由、外部路由和404兜底路由组成
* 无需走权限验证(会一直显示在菜单中) */
const routes: RouteRecordRaw[] = [
...coreRoutes,
...externalRoutes,
fallbackNotFoundRoute,
];
/** 基本路由列表,这些路由不需要进入权限拦截 */
const coreRouteNames = traverseTreeValues(coreRoutes, (route) => route.name);
/** 有权限校验的路由列表,包含动态路由和静态路由 */
const accessRoutes = [...dynamicRoutes, ...staticRoutes];
const componentKeys: string[] = Object.keys(
import.meta.glob([
'../../views/_core/account-settings/**/*.vue',
'../../views/_core/agent-chat/**/*.vue',
'../../views/_core/announcement/index.vue',
'../../views/_core/announcement/list.vue',
'../../views/_core/authentication/login.vue',
'../../views/_core/authentication/oauth-callback.vue',
'../../views/_core/control-center/index.vue',
'../../views/_core/dept/index.vue',
'../../views/_core/dict/index.vue',
'../../views/_core/fallback/**/*.vue',
'../../views/_core/file-manager/index.vue',
'../../views/_core/login-log/index.vue',
'../../views/_core/menu/index.vue',
'../../views/_core/message/index.vue',
'../../views/_core/org-chart/index.vue',
'../../views/_core/post/index.vue',
'../../views/_core/permission/index.vue',
'../../views/_core/role/index.vue',
'../../views/_core/system-config/index.vue',
'../../views/_core/ui-config/index.vue',
'../../views/_core/user/index.vue',
'../../views/ai-platform/agent/editor/index.vue',
'../../views/ai-platform/agent/index.vue',
'../../views/ai-platform/knowledge/detail/index.vue',
'../../views/ai-platform/knowledge/index.vue',
'../../views/ai-platform/workflow/editor/index.vue',
'../../views/ai-platform/workflow/index.vue',
'../../views/ai-platform/workflow-runs/index.vue',
]),
)
.filter((item) => !item.includes('/modules/'))
.map((v) => {
const path = v.replace('../../views/', '/');
return path.endsWith('.vue') ? path.slice(0, -4) : path;
});
export { accessRoutes, componentKeys, coreRouteNames, routes };