Build lightweight AI agent admin

This commit is contained in:
Codex
2026-06-08 18:14:59 +08:00
commit e164840f43
2530 changed files with 435693 additions and 0 deletions
+66
View File
@@ -0,0 +1,66 @@
import type {
ComponentRecordType,
GenerateMenuAndRoutesOptions,
} from '@vben/types';
import { generateAccessible } from '@vben/access';
import { preferences } from '@vben/preferences';
import { ElMessage } from 'element-plus';
import { getAllMenusApi } from '#/api';
import { BasicLayout, IFrameView } from '#/layouts';
import { $t } from '#/locales';
import { useAppContextStore } from '#/store/app-context';
const forbiddenComponent = () => import('#/views/_core/fallback/forbidden.vue');
async function generateAccess(options: GenerateMenuAndRoutesOptions) {
const pageMap: ComponentRecordType = import.meta.glob([
'../views/**/*.vue',
'!../views/**/components/**',
'!../views/**/modules/**',
'!../views/ai-platform/workflow/editor/components/**/*.vue',
'!../views/ai-platform/workflow/editor/edges/**/*.vue',
'!../views/ai-platform/workflow/editor/nodes/**/*.vue',
'!../views/ai-platform/workflow/editor/panels/**/*.vue',
]);
const layoutMap: ComponentRecordType = {
BasicLayout,
IFrameView,
};
return await generateAccessible(preferences.app.accessMode, {
...options,
fetchMenuListAsync: async () => {
ElMessage({
duration: 1500,
message: `${$t('common.loadingMenu')}...`,
});
// 获取应用上下文
const appContextStore = useAppContextStore();
// 如果是子应用模式,传递 appCode 和 devMode 参数
// - 开发模式 (isDevMode=true): 只返回系统菜单
// - 正常模式 (isDevMode=false): 只返回应用专属菜单
if (appContextStore.appCode) {
return await getAllMenusApi(
appContextStore.appCode,
appContextStore.isDevMode,
);
}
// 主应用模式,不传参数
return await getAllMenusApi();
},
// 可以指定没有权限跳转403页面
forbiddenComponent,
// 如果 route.meta.menuVisibleWithForbidden = true
layoutMap,
pageMap,
});
}
export { generateAccess };