|
|
@@ -513,13 +513,62 @@ export default function Dashboard() {
|
|
|
const filteredSubMenuConfig = enhancedSubMenuConfig;
|
|
|
|
|
|
|
|
|
- // 监听路径变化,处理详情页显示
|
|
|
+ // 监听路径变化,处理详情页显示和菜单状态更新
|
|
|
useEffect(() => {
|
|
|
// 如果是详情页,设置 activeMenu 为空,直接显示详情页
|
|
|
if (location.pathname.startsWith('/lock-cabinet/detail')) {
|
|
|
setActiveMenu('');
|
|
|
+ return;
|
|
|
+ }
|
|
|
+
|
|
|
+ // 如果路径是 /dashboard,不处理(使用当前状态)
|
|
|
+ if (location.pathname === '/dashboard') {
|
|
|
+ return;
|
|
|
+ }
|
|
|
+
|
|
|
+ // 根据路径更新菜单状态
|
|
|
+ const path = location.pathname;
|
|
|
+ const menuKey = mapBackendPathToFrontendKey(path);
|
|
|
+
|
|
|
+ if (menuKey) {
|
|
|
+ console.log('根据路径更新菜单:', { path, menuKey });
|
|
|
+
|
|
|
+ // 如果是系统配置的子菜单,需要设置对应的子菜单key
|
|
|
+ if (menuKey === 'systemConfig' || menuKey === 'departmentManagement' || menuKey === 'menuManagement' ||
|
|
|
+ menuKey === 'positionManagement' || menuKey === 'roleManagement' || menuKey === 'dictionaryManagement' ||
|
|
|
+ menuKey === 'cabinetManagement') {
|
|
|
+ // 确定是哪个子菜单
|
|
|
+ let subMenuKey = 'menuManagement'; // 默认值
|
|
|
+
|
|
|
+ if (path.includes('/dept') || menuKey === 'departmentManagement') {
|
|
|
+ subMenuKey = 'departmentManagement';
|
|
|
+ } else if (path.includes('/menu') || menuKey === 'menuManagement') {
|
|
|
+ subMenuKey = 'menuManagement';
|
|
|
+ } else if (path.includes('/post') || menuKey === 'positionManagement') {
|
|
|
+ subMenuKey = 'positionManagement';
|
|
|
+ } else if (path.includes('/role') || menuKey === 'roleManagement') {
|
|
|
+ subMenuKey = 'roleManagement';
|
|
|
+ } else if (path.includes('/dict') || menuKey === 'dictionaryManagement') {
|
|
|
+ subMenuKey = 'dictionaryManagement';
|
|
|
+ } else if (path.includes('/cabinet') || menuKey === 'cabinetManagement') {
|
|
|
+ subMenuKey = 'cabinetManagement';
|
|
|
+ }
|
|
|
+
|
|
|
+ console.log('设置系统配置子菜单:', { menuKey: 'systemConfig', subMenuKey });
|
|
|
+ setActiveMenu('systemConfig');
|
|
|
+ setActiveSubMenu(subMenuKey);
|
|
|
+ } else if (menuKey === 'cabinet' || menuKey === 'key' || menuKey === 'padlock' || menuKey === 'portable') {
|
|
|
+ // 硬件管理的子菜单
|
|
|
+ setActiveMenu('hardwareManagement');
|
|
|
+ setActiveSubMenu(menuKey);
|
|
|
+ } else if (filteredSubMenuConfig[menuKey] && filteredSubMenuConfig[menuKey].length > 0) {
|
|
|
+ // 其他菜单,设置第一个子菜单
|
|
|
+ setActiveMenu(menuKey);
|
|
|
+ setActiveSubMenu(filteredSubMenuConfig[menuKey][0].key);
|
|
|
+ }
|
|
|
}
|
|
|
- }, [location.pathname]);
|
|
|
+ // eslint-disable-next-line react-hooks/exhaustive-deps
|
|
|
+ }, [location.pathname, filteredSubMenuConfig]);
|
|
|
|
|
|
// 根据URL路径初始化菜单状态(仅在首次加载时执行)
|
|
|
useEffect(() => {
|