150 lines
4.5 KiB
Markdown
150 lines
4.5 KiB
Markdown
# 工单菜单错误子菜单修复说明
|
||
|
||
## 问题根源(已找到!)
|
||
|
||
在数据库菜单配置中,工单管理菜单下有一个**错误的子菜单**:
|
||
|
||
```
|
||
菜单名称:进行中
|
||
上级菜单:工单管理
|
||
菜单类型:菜单(C)
|
||
路由地址:testOrder01 ❌ 错误!
|
||
组件路径:system/test_order/index ❌ 错误!指向了订单页面
|
||
路由参数:{"page":"work_order","state":0} ❌ 错误!
|
||
```
|
||
|
||
这就是导致点击"测试中"按钮时跳转到错误URL的根本原因:
|
||
```
|
||
http://127.0.0.1/test_work_order/testOrder01?page=work_order&state=0
|
||
^^^^^^^^^^^^^^^^ ^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^
|
||
父菜单路径 子菜单路径 路由参数
|
||
```
|
||
|
||
## 为什么会触发跳转?
|
||
|
||
1. 工单管理菜单(父菜单)的 path 是 `test_work_order`
|
||
2. "进行中"子菜单的 path 是 `testOrder01`
|
||
3. 路由参数是 `{"page":"work_order","state":0}`
|
||
4. 当点击按钮时,Vue Router 可能匹配到了这个子菜单的路由
|
||
5. 导致跳转到:`/test_work_order/testOrder01?page=work_order&state=0`
|
||
|
||
## 修复方案
|
||
|
||
### 方案1:删除这个错误的子菜单(强烈推荐)
|
||
|
||
**原因:**
|
||
- 工单管理页面已经有"测试中"按钮了,不需要这个子菜单
|
||
- 这个子菜单的配置完全错误
|
||
- 组件路径指向了订单页面,而不是工单页面
|
||
|
||
**操作步骤:**
|
||
1. 在后台管理界面,进入"系统管理" -> "菜单管理"
|
||
2. 找到"工单管理"菜单,展开子菜单
|
||
3. 找到"进行中"子菜单
|
||
4. 点击"删除"按钮
|
||
5. 确认删除
|
||
6. 重新登录系统
|
||
|
||
### 方案2:隐藏这个子菜单
|
||
|
||
如果暂时不想删除,可以先隐藏:
|
||
|
||
**操作步骤:**
|
||
1. 在当前的"修改菜单"对话框中
|
||
2. 找到"显示状态"选项
|
||
3. 选择"隐藏"
|
||
4. 点击"确定"保存
|
||
5. 重新登录系统
|
||
|
||
### 方案3:使用SQL删除
|
||
|
||
运行 `delete_wrong_submenu.sql` 脚本:
|
||
|
||
```bash
|
||
mysql -h127.0.0.1 -P3306 -uroot -p123456 ry-fastapi < delete_wrong_submenu.sql
|
||
```
|
||
|
||
## 检查是否还有其他错误的子菜单
|
||
|
||
在"工单管理"菜单下,可能还有其他类似的错误子菜单:
|
||
- 已完成
|
||
- 待领取
|
||
- 一审中
|
||
- 二审中
|
||
- 三审中
|
||
|
||
**检查方法:**
|
||
1. 在菜单管理中,展开"工单管理"菜单
|
||
2. 查看所有子菜单
|
||
3. 如果有类似的子菜单(路由地址不是 `test_work_order`),都应该删除或隐藏
|
||
|
||
**正确的菜单结构应该是:**
|
||
```
|
||
工单管理(目录 M)
|
||
├─ 测试工单(菜单 C)
|
||
├─ 测试工单查询(按钮 F)
|
||
├─ 测试工单新增(按钮 F)
|
||
├─ 测试工单修改(按钮 F)
|
||
├─ 测试工单删除(按钮 F)
|
||
└─ 测试工单导出(按钮 F)
|
||
```
|
||
|
||
**不应该有的子菜单:**
|
||
- ❌ 进行中
|
||
- ❌ 已完成
|
||
- ❌ 待领取
|
||
- ❌ 一审中
|
||
- ❌ 二审中
|
||
- ❌ 三审中
|
||
|
||
这些状态筛选应该通过页面上的按钮来实现,而不是通过菜单。
|
||
|
||
## 修复后的验证步骤
|
||
|
||
### 1. 重新登录
|
||
删除或隐藏菜单后,必须重新登录系统,以重新加载菜单配置。
|
||
|
||
### 2. 测试路由跳转
|
||
1. 访问工单管理页面
|
||
2. URL 应该是:`http://127.0.0.1/system/test_work_order`
|
||
3. 点击"测试中"按钮
|
||
4. URL 应该保持不变
|
||
5. 数据列表应该显示 testStep=1 的工单
|
||
|
||
### 3. 检查浏览器控制台
|
||
打开浏览器开发者工具(F12),检查:
|
||
- Console 标签:不应该有路由错误
|
||
- Network 标签:API 请求应该正常
|
||
|
||
### 4. 测试所有按钮
|
||
依次点击以下按钮,验证都不会触发路由跳转:
|
||
- 全部工单
|
||
- 待领取
|
||
- 测试中
|
||
- 一审中
|
||
- 二审中
|
||
- 三审中
|
||
- 已完成
|
||
|
||
## 为什么会有这个错误的子菜单?
|
||
|
||
可能的原因:
|
||
1. **误操作**:在配置菜单时,错误地创建了子菜单
|
||
2. **复制粘贴错误**:从订单管理菜单复制配置时,没有修改正确
|
||
3. **需求变更**:最初的设计可能是通过菜单来切换状态,后来改为按钮,但忘记删除菜单
|
||
|
||
## 相关文件
|
||
- `delete_wrong_submenu.sql` - SQL删除脚本
|
||
- `check_workorder_submenu.sql` - 菜单配置查询脚本
|
||
- `工单按钮点击事件修复说明.md` - 按钮点击事件修复说明
|
||
- `工单菜单路径配置错误修复说明.md` - 菜单路径修复说明
|
||
|
||
## 总结
|
||
|
||
问题的完整链条:
|
||
1. ✅ 父菜单路径错误(`testWorkOrder` -> `test_work_order`)- 已修复
|
||
2. ✅ 按钮点击事件需要阻止默认行为 - 已修复
|
||
3. ❌ **错误的子菜单导致路由跳转** - 需要删除
|
||
|
||
删除这个错误的"进行中"子菜单后,路由跳转问题应该就完全解决了!
|