ETest-Vue-FastAPI/工单菜单路径配置错误修复说明.md

143 lines
4.1 KiB
Markdown
Raw Normal View History

# 工单菜单路径配置错误修复说明
## 问题根源
找到了路由跳转问题的真正原因!问题出在**数据库菜单配置**中。
### 错误的菜单配置
```
工单管理(父菜单)
├─ menu_id: 2098
├─ menu_name: 工单管理
├─ path: testWorkOrder ❌ 错误!应该是 test_work_order
└─ menu_type: M (目录)
测试工单(子菜单)
├─ menu_id: 2092
├─ menu_name: 测试工单
├─ path: test_work_order ✅ 正确
├─ component: system/test_work_order/index ✅ 正确
└─ menu_type: C (菜单)
```
### 问题分析
1. **父菜单路径错误**`testWorkOrder`(驼峰命名)
2. **子菜单路径正确**`test_work_order`(下划线命名)
3. **路径不一致**导致路由匹配混乱
当点击"测试中"按钮时Vue Router 尝试匹配路由,但由于父菜单路径是 `testWorkOrder`,导致生成了错误的 URL
```
http://127.0.0.1/testWorkOrder/testOrder01?page=work_order&state=0
```
## 修复方案
### 方法1执行SQL脚本推荐
运行 `fix_workorder_menu_path.sql` 脚本:
```sql
UPDATE sys_menu
SET
path = 'test_work_order',
update_time = NOW()
WHERE menu_id = 2098;
```
### 方法2在后台管理界面修改
1. 登录后台管理系统
2. 进入"系统管理" -> "菜单管理"
3. 找到"工单管理"菜单menu_id: 2098
4. 点击"修改"
5. 将"路由地址"从 `testWorkOrder` 改为 `test_work_order`
6. 点击"确定"保存
## 修复步骤
### 1. 执行SQL修复脚本
```bash
mysql -h127.0.0.1 -P3306 -uroot -p123456 ry-fastapi < fix_workorder_menu_path.sql
```
### 2. 清除后端缓存
如果后端有菜单缓存,需要重启后端服务:
```bash
# 停止后端服务
# 重新启动后端服务
cd ruoyi-fastapi-backend
python main.py
```
### 3. 清除前端缓存
-`Ctrl + Shift + R` 强制刷新页面
- 或者清除浏览器缓存
### 4. 重新登录
- 退出当前登录
- 重新登录系统
- 这样可以重新加载菜单配置
## 验证步骤
### 1. 检查菜单配置
```sql
SELECT
menu_id,
menu_name,
parent_id,
path,
component,
menu_type
FROM sys_menu
WHERE menu_id IN (2098, 2092);
```
预期结果:
```
menu_id | menu_name | parent_id | path | component | menu_type
--------|-----------|-----------|-----------------|--------------------------------|----------
2098 | 工单管理 | 0 | test_work_order | (空) | M
2092 | 测试工单 | 2098 | test_work_order | system/test_work_order/index | C
```
### 2. 测试路由跳转
1. 访问工单管理页面
2. URL 应该是:`http://127.0.0.1/system/test_work_order`
3. 点击"测试中"按钮
4. URL 应该保持不变
5. 数据列表正确显示 testStep=1 的工单
## 为什么会出现这个问题?
### 命名规范不一致
- **数据库表名**:使用下划线命名 `test_work_order`
- **前端组件路径**:使用下划线命名 `system/test_work_order/index`
- **菜单路径**:应该使用下划线命名 `test_work_order`
- **错误配置**:使用了驼峰命名 `testWorkOrder`
### 建议的命名规范
在整个系统中统一使用下划线命名:
- 数据库表名:`test_work_order`
- API路径`/system/test_work_order`
- 前端路由:`/system/test_work_order`
- 菜单路径:`test_work_order`
- 组件路径:`system/test_work_order/index`
## 相关文件
- `fix_workorder_menu_path.sql` - SQL修复脚本
- `check_menu_routes.sql` - 菜单配置查询脚本
- `工单页面路由跳转问题诊断.md` - 详细诊断文档
- `工单页面路由跳转问题修复说明.md` - 之前的修复说明(删除了错误的路由配置)
## 注意事项
1. **必须修改数据库菜单配置**:这是问题的根源
2. **必须重新登录**:菜单配置在登录时加载
3. **必须清除缓存**:前端和后端都可能有缓存
4. **检查其他菜单**:确保其他菜单的路径配置也是正确的
## 完整的修复清单
- [x] 删除 router/index.js 中的错误路由配置
- [ ] 修改数据库菜单配置menu_id: 2098
- [ ] 重启后端服务
- [ ] 清除浏览器缓存
- [ ] 重新登录系统
- [ ] 测试路由跳转功能