Fix Bug #539: 住院护士站菜单类型错误(C→M)导致子菜单不展开 — 根因:menu_id=295的menu_type被设为C且有component,应为M目录类型;修复:UPDATE sys_menu SET menu_type='M', component=NULL WHERE menu_id=295;附带修复menu_id=2062的component路径错误(indexon/→index)

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
This commit is contained in:
2026-05-18 12:22:28 +08:00
parent eeb5af8fc1
commit 22465fb276

View File

@@ -5,22 +5,41 @@
## 根因分析
### 数据库菜单结构
`hisdev.sys_menu`住院护士站menu_id=295是一个目录类型M路径为 `statistics`**没有设置 component 和 redirect**
### 数据库菜单结构异常
`hisdev.sys_menu`住院护士站menu_id=295**当前是菜单类型C而非目录类型M**,且 component 被设置为 `inpatientNurse/inpatientNurseStation/index`
其下有 15 个子菜单(门户、入出转管理、护理记录、三测单等),都正确分配给了护士角色。
### 前端路由问题
1. `inpatientNurseStation/index.vue` 包含 10 个 `el-tab-pane`(入出转管理、住院病历、医嘱校对、医嘱执行、护理记录、体温单、住院记账、汇总领药、科室耗材盘点、滚费配置),**但这个页面不在数据库菜单中!**
### 问题核心
1. **菜单 295住院护士站应为目录类型M**但被错误设置为菜单类型C+ component。
- 作为目录类型M它应该在侧边栏展开为子菜单树用户可以点击不同子菜单进入不同功能。
- 作为菜单类型C它直接导航到 component 页面,不展开子菜单。
2. 菜单 296门户的 component 指向 `inpatientNurse/home/index`——这是一个**患者列表页面**,没有任何标签页。
2. **菜单 295 和 296门户有相同的 component 和相同的 path**
- 两者 component 均为 `inpatientNurse/inpatientNurseStation/index`
- 两者 path 均为 `inpatientNurseStation`
- 这导致路由冲突和冗余
3. 当护士登录后点击"住院护士站"(目录类型 M由于没有 redirect系统默认打开第一个子菜单"门户",显示的是患者列表而非带标签的护士站主页
4. `constants/navigation.js` 中的路径(如 `/inHospital/statistics/inOut`)与实际前端路由(`/inpatientNurse/inOut`)不匹配。
3. 当护士登录后点击"住院护士站",由于它是类型 C系统直接导航到 `inpatientNurseStation/index` 页面,**不展示子菜单列表**
### 结论
根本原因:`inpatientNurseStation/index.vue`(带 10 个功能标签的页面)未被纳入数据库菜单体系。护士实际打开的是 `home/index.vue`(患者列表),该页面没有标签页,导致"功能没有就一个标签"
根本原因:菜单 295住院护士站的类型被错误设置为 C菜单且有 component应该为 M目录且无 component
这导致侧边栏不展开子菜单,用户只看到一个页面入口而非多个功能模块。
## 修复方案
将菜单 296门户的 component 从 `inpatientNurse/home/index` 改为 `inpatientNurse/inpatientNurseStation/index`,使护士站入口默认加载带所有标签的主页面。同时修正 navigation.js 中的路径。
将菜单 295 的 menu_type 从 'C' 改为 'M',并清空其 component 和 route_name 字段,
使其作为纯目录节点,在侧边栏中展开显示所有子菜单。
## 修复结果
### 已执行操作
1. `UPDATE hisdev.sys_menu SET menu_type = 'M', component = NULL, route_name = NULL WHERE menu_id = 295;`
- 将住院护士站从菜单类型改为目录类型,清空 component
2. `UPDATE hisdev.sys_menu SET component = 'inpatientNurse/medicineCollect/index' WHERE menu_id = 2062;`
- 修复住院领药菜单的 component 路径错误(`indexon/``index`
### 修复后验证
- 菜单 295menu_type=M, component=null → 侧边栏展开为子菜单树
- 菜单 296门户component=`inpatientNurse/inpatientNurseStation/index` → 带10个标签的主页面
- 菜单 297-2062各子菜单 component 均指向正确的前端组件
- 修复结果:✅ 成功2行数据库改动