ETest-Vue-FastAPI/工单菜单路径配置错误修复说明.md

4.1 KiB
Raw Permalink Blame History

工单菜单路径配置错误修复说明

问题根源

找到了路由跳转问题的真正原因!问题出在数据库菜单配置中。

错误的菜单配置

工单管理(父菜单)
├─ menu_id: 2098
├─ menu_name: 工单管理
├─ path: testWorkOrder  ❌ 错误!应该是 test_work_order
└─ menu_type: M (目录)

测试工单(子菜单)
├─ menu_id: 2092
├─ menu_name: 测试工单
├─ path: test_work_order  ✅ 正确
├─ component: system/test_work_order/index  ✅ 正确
└─ menu_type: C (菜单)

问题分析

  1. 父菜单路径错误testWorkOrder(驼峰命名)
  2. 子菜单路径正确test_work_order(下划线命名)
  3. 路径不一致导致路由匹配混乱

当点击"测试中"按钮时Vue Router 尝试匹配路由,但由于父菜单路径是 testWorkOrder,导致生成了错误的 URL

http://127.0.0.1/testWorkOrder/testOrder01?page=work_order&state=0

修复方案

方法1执行SQL脚本推荐

运行 fix_workorder_menu_path.sql 脚本:

UPDATE sys_menu
SET 
    path = 'test_work_order',
    update_time = NOW()
WHERE menu_id = 2098;

方法2在后台管理界面修改

  1. 登录后台管理系统
  2. 进入"系统管理" -> "菜单管理"
  3. 找到"工单管理"菜单menu_id: 2098
  4. 点击"修改"
  5. 将"路由地址"从 testWorkOrder 改为 test_work_order
  6. 点击"确定"保存

修复步骤

1. 执行SQL修复脚本

mysql -h127.0.0.1 -P3306 -uroot -p123456 ry-fastapi < fix_workorder_menu_path.sql

2. 清除后端缓存

如果后端有菜单缓存,需要重启后端服务:

# 停止后端服务
# 重新启动后端服务
cd ruoyi-fastapi-backend
python main.py

3. 清除前端缓存

  • Ctrl + Shift + R 强制刷新页面
  • 或者清除浏览器缓存

4. 重新登录

  • 退出当前登录
  • 重新登录系统
  • 这样可以重新加载菜单配置

验证步骤

1. 检查菜单配置

SELECT 
    menu_id,
    menu_name,
    parent_id,
    path,
    component,
    menu_type
FROM sys_menu
WHERE menu_id IN (2098, 2092);

预期结果:

menu_id | menu_name | parent_id | path            | component                      | menu_type
--------|-----------|-----------|-----------------|--------------------------------|----------
2098    | 工单管理   | 0         | test_work_order | (空)                           | M
2092    | 测试工单   | 2098      | test_work_order | system/test_work_order/index   | C

2. 测试路由跳转

  1. 访问工单管理页面
  2. URL 应该是:http://127.0.0.1/system/test_work_order
  3. 点击"测试中"按钮
  4. URL 应该保持不变
  5. 数据列表正确显示 testStep=1 的工单

为什么会出现这个问题?

命名规范不一致

  • 数据库表名:使用下划线命名 test_work_order
  • 前端组件路径:使用下划线命名 system/test_work_order/index
  • 菜单路径:应该使用下划线命名 test_work_order
  • 错误配置:使用了驼峰命名 testWorkOrder

建议的命名规范

在整个系统中统一使用下划线命名:

  • 数据库表名:test_work_order
  • API路径/system/test_work_order
  • 前端路由:/system/test_work_order
  • 菜单路径:test_work_order
  • 组件路径:system/test_work_order/index

相关文件

  • fix_workorder_menu_path.sql - SQL修复脚本
  • check_menu_routes.sql - 菜单配置查询脚本
  • 工单页面路由跳转问题诊断.md - 详细诊断文档
  • 工单页面路由跳转问题修复说明.md - 之前的修复说明(删除了错误的路由配置)

注意事项

  1. 必须修改数据库菜单配置:这是问题的根源
  2. 必须重新登录:菜单配置在登录时加载
  3. 必须清除缓存:前端和后端都可能有缓存
  4. 检查其他菜单:确保其他菜单的路径配置也是正确的

完整的修复清单

  • 删除 router/index.js 中的错误路由配置
  • 修改数据库菜单配置menu_id: 2098
  • 重启后端服务
  • 清除浏览器缓存
  • 重新登录系统
  • 测试路由跳转功能