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