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

143 lines
4.1 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

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