2.8 KiB
2.8 KiB
Bug #765 诸葛亮分析报告
文档类型: Bug分析 分析时间: 2026-06-12 15:58:59 分析模型: mimo-v2.5 (LLM深度分析)
基本信息
- Bug #: 765
- 标题: [收费工作站-门诊挂号] 在“患者身份信息”框中选中检索的患者后,患者列表浮窗未自动隐藏
- 模块: 建档挂号管理
- 提出人: 陈显精
Now I have the complete picture. Here's my analysis:
一、Bug 理解
在门诊挂号页面的"患者身份信息"输入框中,用户输入关键字后弹出患者列表浮窗(el-popover),点击选中某行患者后,表单信息已正确回填,但浮窗没有自动关闭,继续遮挡下方录入项。用户期望选中后浮窗自动收起。
二、根因分析
问题出在 outpatientregistration/index.vue 中的 popover 可见性控制逻辑。
关键代码链路:
| 位置 | 代码 | 作用 |
|---|---|---|
index.vue:118 |
:visible="showPopover" |
popover 显隐由 showPopover 控制 |
index.vue:125 |
@mousedown.prevent |
阻止 mousedown 冒泡到 input,防止点击列表时 input 失焦 |
index.vue:1990 |
handleFocus() → showPopover = true |
input 获焦显示浮窗 |
index.vue:1996 |
handleBlur() → showPopover = false |
input 失焦隐藏浮窗 |
index.vue:2228 |
selsectPatient(row) — 只回填表单,未关闭浮窗 |
⬅️ 根因 |
根因:selsectPatient 函数只做了 Object.assign(form.value, row) 等字段回填,没有设置 showPopover.value = false。由于 @mousedown.prevent 阻止了点击列表时 input 的 blur 事件,handleBlur 不会被触发,浮窗就一直保持显示。
三、修复方案
修改文件:healthlink-his-ui/src/views/charge/outpatientregistration/index.vue
修改内容:在 selsectPatient 函数末尾添加一行,关闭 popover:
function selsectPatient(row) {
Object.assign(form.value, row);
form.value.patientId = row.id;
form.value.searchKey = row.name;
form.value.name = row.name;
form.value.idCard = row.idCard;
form.value.genderEnum_enumText = row.genderEnum_enumText;
form.value.phone = row.phone;
form.value.firstEnum_enumText = row.firstEnum_enumText;
form.value.age = row.age;
form.value.identifierNo = row.identifierNo;
showPopover.value = false; // ← 新增:选中患者后关闭浮窗
}
影响范围:仅一处,不涉及后端、不涉及数据库、不涉及其他组件。
四、路由决策
FIXER: zhaoyun(前端开发)
REASON: 纯前端 Vue 组件修复,只需在 index.vue 的 selsectPatient 函数中增加一行 showPopover.value = false;,属于 Element Plus popover 交互问题,赵云负责前端界面修复。
路由决策
- 修复 Agent: guanyu
- 原因: LLM 分析决策