admin/路由修复说明.md

4.2 KiB
Raw Permalink Blame History

路由配置完整修复说明

问题描述

当前系统存在以下问题:

  1. 路由名称不一致:部分路由使用连字符(如 user-manage),部分使用下划线(如 device_list
  2. 组件路径错误:父路由的组件路径格式不正确,导致前端报错 "Layout component not found"
  3. 角色配置不匹配:角色的菜单配置与实际路由名称不匹配,导致子菜单无法显示

修复内容

1. 路由名称统一(使用下划线)

所有路由名称统一使用下划线格式:

  • user-manageuser_manage
  • my-devicemy_device
  • my-applicationmy_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 强制刷新页面

验证结果

修复后应该看到:

  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 - 前端路由存储