3.3 KiB
3.3 KiB
菜单显示问题修复说明
问题原因
在实现动态路由权限时,我们将路由名称从连字符改为下划线格式:
user-manage→user_managemy-device→my_devicemy-application→my_application
但是,组件路径(component)必须与实际文件夹结构保持一致,而实际文件夹使用的是连字符:
src/views/user-manage/src/views/my-device/src/views/my-application/
这导致前端无法找到对应的组件文件,出现错误和菜单显示异常。
解决方案
保持以下规则:
- 路由名称(name) 使用下划线:
user_manage,my_device,my_application - 组件路径(component) 使用连字符匹配实际文件夹:
view.user-manage,view.my-device
修复步骤
方法一:使用批处理脚本(推荐)
- 双击运行
fix_database.bat - 按任意键开始执行
- 等待修复完成
- 重启后端服务
- 刷新浏览器测试
方法二:手动执行 SQL
-
打开 MySQL 客户端或命令行
-
连接到数据库:
mysql -h localhost -P 3306 -u root -proot soybean_admin -
执行 SQL 文件:
source EXECUTE_THIS_FIX.sql;或者直接复制
EXECUTE_THIS_FIX.sql中的 SQL 语句执行 -
重启后端服务
-
刷新浏览器测试
验证修复
执行 SQL 后,应该看到类似以下的结果:
| 路由名称(下划线) | 路径 | 组件路径(连字符) |
|---|---|---|
| user_manage | /user-manage | layout.base$view.user-manage |
| user_manage_list | /user-manage/list | layout.base$view.user-manage_list |
| my_device | /my-device | layout.base$view.my-device |
| my_device_status | /my-device/status | layout.base$view.my-device_status |
重启服务
修复数据库后,必须重启后端服务:
cd backend
start.bat
测试
- 清除浏览器缓存(Ctrl+Shift+Delete)
- 强制刷新页面(Ctrl+Shift+R)
- 重新登录
- 检查菜单是否正常显示
- 检查是否还有重复菜单
- 检查父子菜单层级是否正确
如果还有问题
如果修复后仍有问题,请检查:
- 后端日志中是否有错误信息
- 浏览器控制台是否有错误
- 数据库中的 component 字段是否已正确更新
- 是否已重启后端服务
- 是否已清除浏览器缓存
技术细节
路由名称规则(用于权限判断)
- 使用下划线分隔
- 父菜单:0-1个下划线(如
user_manage,device) - 子菜单:2个或以上下划线(如
user_manage_list,device_online)
组件路径规则(用于加载 Vue 组件)
- 必须与实际文件夹结构完全一致
- 文件夹使用连字符:
user-manage,my-device - 子文件夹也使用连字符:
power-control,my-list - 格式:
layout.base$view.{folder}_{subfolder}
示例对照表
| 路由名称 | 文件夹路径 | 组件路径 |
|---|---|---|
| user_manage | src/views/user-manage/ | layout.base$view.user-manage |
| user_manage_list | src/views/user-manage/list/ | layout.base$view.user-manage_list |
| my_device | src/views/my-device/ | layout.base$view.my-device |
| my_device_status | src/views/my-device/status/ | layout.base$view.my-device_status |
| my_device_power | src/views/my-device/power-control/ | layout.base$view.my-device_power-control |