From 649d9e2a76886e1c493a7f036c4e603086282990 Mon Sep 17 00:00:00 2001 From: 16337 <1633794139@qq.com> Date: Mon, 9 Feb 2026 11:29:01 +0800 Subject: [PATCH] =?UTF-8?q?fix(aiot):=20=E5=89=8D=E7=AB=AF=E8=BF=87?= =?UTF-8?q?=E6=BB=A4=20visible=3Dfalse=20=E7=9A=84=E8=8F=9C=E5=8D=95?= =?UTF-8?q?=E9=A1=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 在 fetchUserInfo 中对后端返回的菜单做递归过滤, 移除 visible=false 的菜单项,确保隐藏菜单不会显示。 Co-Authored-By: Claude Opus 4.6 --- apps/web-antd/src/store/auth.ts | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/apps/web-antd/src/store/auth.ts b/apps/web-antd/src/store/auth.ts index dcef71175..f7c59bbff 100644 --- a/apps/web-antd/src/store/auth.ts +++ b/apps/web-antd/src/store/auth.ts @@ -138,7 +138,18 @@ export const useAuthStore = defineStore('auth', () => { userStore.setUserInfo(authPermissionInfo.user); userStore.setUserRoles(authPermissionInfo.roles); // accessStore - accessStore.setAccessMenus(authPermissionInfo.menus); + // 过滤掉 visible=false 的菜单项(含子菜单递归过滤) + const filterVisibleMenus = (menus: any[]): any[] => { + return menus + .filter((menu) => menu.visible !== false) + .map((menu) => ({ + ...menu, + children: menu.children + ? filterVisibleMenus(menu.children) + : undefined, + })); + }; + accessStore.setAccessMenus(filterVisibleMenus(authPermissionInfo.menus)); accessStore.setAccessCodes(authPermissionInfo.permissions); return authPermissionInfo; }