# 路由配置完整修复说明 ## 问题描述 当前系统存在以下问题: 1. **路由名称不一致**:部分路由使用连字符(如 `user-manage`),部分使用下划线(如 `device_list`) 2. **组件路径错误**:父路由的组件路径格式不正确,导致前端报错 "Layout component not found" 3. **角色配置不匹配**:角色的菜单配置与实际路由名称不匹配,导致子菜单无法显示 ## 修复内容 ### 1. 路由名称统一(使用下划线) 所有路由名称统一使用下划线格式: - `user-manage` → `user_manage` - `my-device` → `my_device` - `my-application` → `my_application` - 子路由:`user_manage_list`, `user_manage_role`, `user_manage_permission` 等 ### 2. 组件路径修复 **父路由**(有子菜单的路由): - 格式:`layout.base$view.{folder-name}` - 文件夹名使用连字符(与实际文件夹结构一致) - 示例:`layout.base$view.user-manage`, `layout.base$view.my-device` **子路由**(叶子节点): - 格式:`view.{parent-folder}_{child-folder}` - 父文件夹用连字符,子文件夹用下划线连接 - 示例:`view.user-manage_list`, `view.my-device_status` ### 3. 角色菜单配置更新 更新所有角色的 `menus` 字段,使用正确的路由名称(下划线格式): **R_SUPER(超级管理员)**: ``` device,device_list,device_group,device_monitor,device_online,device_power, screen,screen_wall,screen_control,screen_record, user_manage,user_manage_list,user_manage_role,user_manage_permission, application,application_approval,application_history, system,system_agent,system_amt,system_log, my_device,my_device_status,my_device_remote,my_device_power, my_application,my_application_apply,my_application_list ``` **R_ADMIN(管理员)**: ``` device,device_list,device_group,device_monitor,device_online,device_power, screen,screen_wall,screen_control,screen_record, user_manage,user_manage_list,user_manage_role, application,application_approval,application_history ``` **R_USER(普通用户)**: ``` my_device,my_device_status,my_device_remote,my_device_power, my_application,my_application_apply,my_application_list ``` ## 执行步骤 ### 1. 运行修复脚本 双击运行 `fix_user_manage_routes.bat`,或在命令行执行: ```bash mysql -u root -proot < fix_user_manage_routes.sql ``` ### 2. 重启后端服务 ```bash cd backend start.bat ``` ### 3. 清除浏览器缓存 - Chrome: Ctrl + Shift + Delete,选择"缓存的图片和文件" - 或使用无痕模式测试 ### 4. 刷新浏览器 按 F5 或 Ctrl + F5 强制刷新页面 ## 验证结果 修复后应该看到: 1. ✅ 所有菜单正常显示,无重复 2. ✅ 用户管理菜单显示三个子菜单:用户列表、角色管理、权限管理 3. ✅ 控制台无 "Layout component not found" 错误 4. ✅ 点击菜单可以正常跳转 ## 技术说明 ### 路由命名规范 - **路由名称(name)**:统一使用下划线,如 `user_manage`, `device_list` - **路由路径(path)**:使用连字符,如 `/user-manage`, `/device/list` - **文件夹名称**:使用连字符,如 `user-manage/`, `my-device/` ### 组件路径规范 - **父路由组件**:`layout.base$view.{folder-name}` - 必须包含 `layout.base$` 前缀 - 文件夹名使用连字符 - **子路由组件**:`view.{parent-folder}_{child-folder}` - 不需要 `layout.base$` 前缀 - 父子文件夹用下划线连接 ### 父子关系识别 后端通过路径中的斜杠数量判断父子关系: - 1个斜杠(如 `/device`):根路由 - 2个或以上斜杠(如 `/device/list`):子路由 ## 常见问题 ### Q: 修复后菜单还是显示两次? A: 清除浏览器缓存,或使用无痕模式测试。 ### Q: 点击菜单报错 "No match for route"? A: 确认路由名称已更新,重启后端服务。 ### Q: 某些菜单看不到? A: 检查用户的角色配置,确认角色的 `menus` 字段包含对应的路由名称。 ## 相关文件 - `fix_user_manage_routes.sql` - 修复脚本 - `fix_user_manage_routes.bat` - 执行批处理 - `backend/src/main/java/com/soybean/admin/service/RouteService.java` - 路由服务 - `src/store/modules/route/index.ts` - 前端路由存储