feat: 添加服务类型适配不同的显示菜单内容

This commit is contained in:
TsMask
2025-08-21 19:49:56 +08:00
parent 7916cc5a54
commit 2319cdf36b
69 changed files with 821 additions and 296 deletions

View File

@@ -16,6 +16,11 @@ import {
MENU_COMPONENT_LAYOUT_LINK,
} from '@/constants/menu-constants';
import { RESULT_CODE_SUCCESS } from '@/constants/result-constants';
import useAppStore from '@/store/modules/app';
import {
APP_SERVER_TYPE_M,
APP_SERVER_TYPE_O,
} from '@/constants/app-constants';
/**路由构建参数类型 */
type RouterStore = {
@@ -58,16 +63,36 @@ const useRouterStore = defineStore('router', {
/**
* 根据网元类型过滤菜单
* @param routes 经过clearMenuItem(router.getRoutes())处理
* @param coreUid 核心网元uid
* @param neTypes 网元类型
* @returns 过滤后的菜单
*/
clearMenuItemByNeList(
routes: RouteRecord[] | RouteRecordRaw[],
coreUid: string,
neTypes: string[]
): RouteRecordRaw[] {
return routes
.map((item: RouteRecord | RouteRecordRaw) => {
const finalItem = { ...item };
// 过滤核心网菜单
switch (useAppStore().serverType) {
case APP_SERVER_TYPE_O:
break;
case APP_SERVER_TYPE_M:
// 过滤核心网菜单
if (coreUid.length < 8 && finalItem.meta?.core == true) {
// 全局 网元菜单
return null;
}
if (coreUid.length == 8 && finalItem.meta?.core == false) {
// 核心网 非网元菜单
return null;
}
break;
}
// 过滤网元类型
if (
Array.isArray(finalItem.meta?.neType) &&
@@ -96,6 +121,7 @@ const useRouterStore = defineStore('router', {
if (finalItem.children && finalItem.children.length > 0) {
const children = this.clearMenuItemByNeList(
finalItem.children,
coreUid,
neTypes
);
// 如果子菜单都被过滤掉了,就不显示