Build lightweight AI agent admin
This commit is contained in:
@@ -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 };
|
||||
Reference in New Issue
Block a user