3.2 KiB
3.2 KiB
快速修复工单路由问题
问题现象
点击"测试中"或"已完成"按钮时,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)中执行:
mysql -u your_username -p your_database < fix_workorder_routing_complete.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:
redis-cli
FLUSHDB
exit
重启后端服务:
# 停止后端服务
# 启动后端服务
第3步:清除浏览器缓存并重新登录
- 按
Ctrl + Shift + R强制刷新页面 - 退出登录
- 重新登录系统
测试验证
测试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:删除后还是跳转错误
原因:缓存未清除 解决:
- 确认已清除Redis缓存
- 确认已重启后端服务
- 确认已清除浏览器缓存
- 确认已重新登录
问题2:找不到菜单
原因:误删了正确的菜单 解决:恢复备份或重新添加菜单
问题3:权限不足
原因:菜单权限配置错误
解决:检查菜单的 perms 字段是否为 system:test_work_order:list
诊断命令
如果修复后还有问题,运行以下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- 详细说明