143 lines
4.1 KiB
Markdown
143 lines
4.1 KiB
Markdown
# 工单菜单路径配置错误修复说明
|
||
|
||
## 问题根源
|
||
找到了路由跳转问题的真正原因!问题出在**数据库菜单配置**中。
|
||
|
||
### 错误的菜单配置
|
||
```
|
||
工单管理(父菜单)
|
||
├─ 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)
|
||
- [ ] 重启后端服务
|
||
- [ ] 清除浏览器缓存
|
||
- [ ] 重新登录系统
|
||
- [ ] 测试路由跳转功能
|