diff --git a/apps/web-antd/src/store/auth.ts b/apps/web-antd/src/store/auth.ts index dcef71175..4c4995c21 100644 --- a/apps/web-antd/src/store/auth.ts +++ b/apps/web-antd/src/store/auth.ts @@ -137,12 +137,31 @@ export const useAuthStore = defineStore('auth', () => { // userStore userStore.setUserInfo(authPermissionInfo.user); userStore.setUserRoles(authPermissionInfo.roles); - // accessStore - accessStore.setAccessMenus(authPermissionInfo.menus); + // accessStore - 隐藏不需要的菜单项(保留路由,仅侧边栏不显示) + const processedMenus = hideMenuItems(authPermissionInfo.menus); + accessStore.setAccessMenus(processedMenus); accessStore.setAccessCodes(authPermissionInfo.permissions); return authPermissionInfo; } + /** 递归标记菜单为隐藏(visible=false),保留路由可直接访问 */ + function hideMenuItems(menus: any[]): any[] { + // 需要从侧边栏隐藏的菜单路径(ROI 区域配置已整合到摄像头管理中) + const hiddenPaths = new Set(['roi']); + const hiddenNameKeywords = ['ROI', 'roi']; + return menus.map((menu) => { + const shouldHide = + hiddenPaths.has(menu.path) || + (menu.name && + hiddenNameKeywords.some((kw: string) => menu.name.includes(kw))); + return { + ...menu, + visible: shouldHide ? false : menu.visible, + children: menu.children ? hideMenuItems(menu.children) : menu.children, + }; + }); + } + function $reset() { loginLoading.value = false; }