ETest-Vue-FastAPI/快速修复工单路由问题.md

139 lines
3.2 KiB
Markdown
Raw Permalink 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.

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