admin/路由修复说明.md

142 lines
4.2 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 路由配置完整修复说明
## 问题描述
当前系统存在以下问题:
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` - 前端路由存储