# 快速修复工单路由问题 ## 问题现象 点击"测试中"或"已完成"按钮时,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` - 详细说明