Files
his/MD/bugs/BUG_765_ANALYSIS.md

2.8 KiB
Raw Blame History

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.vueselsectPatient 函数中增加一行 showPopover.value = false;,属于 Element Plus popover 交互问题,赵云负责前端界面修复。


路由决策

  • 修复 Agent: guanyu
  • 原因: LLM 分析决策