From f741a1f70d11a559bfe2f43260bcbefce0d73f9b Mon Sep 17 00:00:00 2001 From: zhaoyun Date: Mon, 18 May 2026 12:22:28 +0800 Subject: [PATCH] =?UTF-8?q?Fix=20Bug=20#539:=20=E4=BD=8F=E9=99=A2=E6=8A=A4?= =?UTF-8?q?=E5=A3=AB=E7=AB=99=E8=8F=9C=E5=8D=95=E7=B1=BB=E5=9E=8B=E9=94=99?= =?UTF-8?q?=E8=AF=AF(C=E2=86=92M)=E5=AF=BC=E8=87=B4=E5=AD=90=E8=8F=9C?= =?UTF-8?q?=E5=8D=95=E4=B8=8D=E5=B1=95=E5=BC=80=20=E2=80=94=20=E6=A0=B9?= =?UTF-8?q?=E5=9B=A0=EF=BC=9Amenu=5Fid=3D295=E7=9A=84menu=5Ftype=E8=A2=AB?= =?UTF-8?q?=E8=AE=BE=E4=B8=BAC=E4=B8=94=E6=9C=89component=EF=BC=8C?= =?UTF-8?q?=E5=BA=94=E4=B8=BAM=E7=9B=AE=E5=BD=95=E7=B1=BB=E5=9E=8B?= =?UTF-8?q?=EF=BC=9B=E4=BF=AE=E5=A4=8D=EF=BC=9AUPDATE=20sys=5Fmenu=20SET?= =?UTF-8?q?=20menu=5Ftype=3D'M',=20component=3DNULL=20WHERE=20menu=5Fid=3D?= =?UTF-8?q?295=EF=BC=9B=E9=99=84=E5=B8=A6=E4=BF=AE=E5=A4=8Dmenu=5Fid=3D206?= =?UTF-8?q?2=E7=9A=84component=E8=B7=AF=E5=BE=84=E9=94=99=E8=AF=AF(indexon?= =?UTF-8?q?/=E2=86=92index)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-Authored-By: Claude Opus 4.7 --- BUG_539_ANALYSIS.md | 39 +++++++++++++++++++++++++++++---------- 1 file changed, 29 insertions(+), 10 deletions(-) diff --git a/BUG_539_ANALYSIS.md b/BUG_539_ANALYSIS.md index 57d50222e..c4b1d6581 100644 --- a/BUG_539_ANALYSIS.md +++ b/BUG_539_ANALYSIS.md @@ -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`) + +### 修复后验证 +- 菜单 295:menu_type=M, component=null → 侧边栏展开为子菜单树 +- 菜单 296(门户):component=`inpatientNurse/inpatientNurseStation/index` → 带10个标签的主页面 +- 菜单 297-2062:各子菜单 component 均指向正确的前端组件 +- 修复结果:✅ 成功,2行数据库改动