4.2 KiB
4.2 KiB
路由配置完整修复说明
问题描述
当前系统存在以下问题:
- 路由名称不一致:部分路由使用连字符(如
user-manage),部分使用下划线(如device_list) - 组件路径错误:父路由的组件路径格式不正确,导致前端报错 "Layout component not found"
- 角色配置不匹配:角色的菜单配置与实际路由名称不匹配,导致子菜单无法显示
修复内容
1. 路由名称统一(使用下划线)
所有路由名称统一使用下划线格式:
user-manage→user_managemy-device→my_devicemy-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,或在命令行执行:
mysql -u root -proot < fix_user_manage_routes.sql
2. 重启后端服务
cd backend
start.bat
3. 清除浏览器缓存
- Chrome: Ctrl + Shift + Delete,选择"缓存的图片和文件"
- 或使用无痕模式测试
4. 刷新浏览器
按 F5 或 Ctrl + F5 强制刷新页面
验证结果
修复后应该看到:
- ✅ 所有菜单正常显示,无重复
- ✅ 用户管理菜单显示三个子菜单:用户列表、角色管理、权限管理
- ✅ 控制台无 "Layout component not found" 错误
- ✅ 点击菜单可以正常跳转
技术说明
路由命名规范
- 路由名称(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- 前端路由存储