139 lines
3.2 KiB
Markdown
139 lines
3.2 KiB
Markdown
# 快速修复工单路由问题
|
||
|
||
## 问题现象
|
||
|
||
点击"测试中"或"已完成"按钮时,URL跳转到:
|
||
```
|
||
http://123.56.98.4:8081/test_work_order/testWorkOrder02?page=work_order&state=1
|
||
```
|
||
|
||
应该是:
|
||
```
|
||
http://123.56.98.4:8081/system/test_work_order?state=1
|
||
```
|
||
|
||
## 快速修复(3步)
|
||
|
||
### 第1步:执行SQL修复脚本
|
||
|
||
在数据库客户端(如Navicat、DBeaver)中执行:
|
||
|
||
```bash
|
||
mysql -u your_username -p your_database < fix_workorder_routing_complete.sql
|
||
```
|
||
|
||
或者直接复制以下SQL到数据库客户端执行:
|
||
|
||
```sql
|
||
-- 删除错误的子菜单
|
||
DELETE FROM sys_menu
|
||
WHERE parent_id = 2098
|
||
AND menu_type = 'C'
|
||
AND menu_name IN ('进行中', '已完成', '测试中', '待领取', '一审中', '二审中', '三审中', '全部工单');
|
||
|
||
-- 删除错误路径的菜单
|
||
DELETE FROM sys_menu
|
||
WHERE parent_id = 2098
|
||
AND path IN ('testOrder01', 'testWorkOrder02');
|
||
|
||
-- 修复父菜单路径
|
||
UPDATE sys_menu
|
||
SET path = 'test_work_order', update_time = NOW()
|
||
WHERE menu_id = 2098;
|
||
|
||
-- 验证结果(应该只有一个子菜单"测试工单")
|
||
SELECT menu_id, menu_name, path, component
|
||
FROM sys_menu
|
||
WHERE parent_id = 2098;
|
||
```
|
||
|
||
### 第2步:清除缓存
|
||
|
||
**如果使用Redis**:
|
||
```bash
|
||
redis-cli
|
||
FLUSHDB
|
||
exit
|
||
```
|
||
|
||
**重启后端服务**:
|
||
```bash
|
||
# 停止后端服务
|
||
# 启动后端服务
|
||
```
|
||
|
||
### 第3步:清除浏览器缓存并重新登录
|
||
|
||
1. 按 `Ctrl + Shift + R` 强制刷新页面
|
||
2. 退出登录
|
||
3. 重新登录系统
|
||
|
||
## 测试验证
|
||
|
||
### 测试1:菜单导航
|
||
- 点击左侧菜单"工单管理" → "测试工单"
|
||
- ✅ URL应该是:`http://123.56.98.4:8081/system/test_work_order`
|
||
|
||
### 测试2:状态筛选按钮
|
||
- 点击"测试中"按钮
|
||
- ✅ URL保持不变(不跳转)
|
||
- ✅ 只显示 testStep=1 的工单
|
||
|
||
- 点击"已完成"按钮
|
||
- ✅ URL保持不变(不跳转)
|
||
- ✅ 只显示 testStep=5 的工单
|
||
|
||
### 测试3:URL参数
|
||
- 访问:`http://123.56.98.4:8081/system/test_work_order?state=0`
|
||
- ✅ 显示测试中的工单
|
||
|
||
- 访问:`http://123.56.98.4:8081/system/test_work_order?state=1`
|
||
- ✅ 显示已完成的工单
|
||
|
||
## 如果还有问题
|
||
|
||
### 问题1:删除后还是跳转错误
|
||
**原因**:缓存未清除
|
||
**解决**:
|
||
1. 确认已清除Redis缓存
|
||
2. 确认已重启后端服务
|
||
3. 确认已清除浏览器缓存
|
||
4. 确认已重新登录
|
||
|
||
### 问题2:找不到菜单
|
||
**原因**:误删了正确的菜单
|
||
**解决**:恢复备份或重新添加菜单
|
||
|
||
### 问题3:权限不足
|
||
**原因**:菜单权限配置错误
|
||
**解决**:检查菜单的 `perms` 字段是否为 `system:test_work_order:list`
|
||
|
||
## 诊断命令
|
||
|
||
如果修复后还有问题,运行以下SQL诊断:
|
||
|
||
```sql
|
||
-- 查看工单管理的所有菜单
|
||
SELECT
|
||
menu_id,
|
||
menu_name,
|
||
parent_id,
|
||
path,
|
||
component,
|
||
query,
|
||
menu_type
|
||
FROM sys_menu
|
||
WHERE menu_id = 2098 OR parent_id = 2098
|
||
ORDER BY parent_id, order_num;
|
||
```
|
||
|
||
**正确的结果应该是**:
|
||
- 1个父菜单:工单管理(menu_id=2098, path=test_work_order)
|
||
- 1个子菜单:测试工单(menu_id=2092, path=test_work_order, component=system/test_work_order/index)
|
||
|
||
## 相关文件
|
||
|
||
- `fix_workorder_routing_complete.sql` - 一键修复脚本
|
||
- `check_workorder_submenu.sql` - 诊断脚本
|
||
- `工单路由跳转问题完整修复方案.md` - 详细说明
|