Files
his/MD/bugs/BUG_762_ANALYSIS.md

4.8 KiB
Raw Blame History

Bug #762 诸葛亮分析报告

文档类型: Bug分析 分析时间: 2026-06-12 14:18:44 分析模型: mimo-v2.5 (LLM深度分析)


基本信息

  • Bug #: 762
  • 标题: [住院护士站-领药汇总]“汇总领药”界面的筛选标签文字丢失且功能失效
  • 模块: 病区护士工作站
  • 提出人: 陈显精

I now have a complete picture. Let me produce the analysis.


一、Bug 理解

住院护士站的"汇总领药"页面中,顶部筛选栏有两组 el-radio-group:第一组是药物类别("西药"/"中药"),第二组是展示方式("明细"/"汇总")。当前这 4 个按钮均只显示空白(无文字标签),用户无法辨识按钮功能;同时点击切换按钮不能触发数据筛选刷新,功能完全失效。

二、根因分析

根因在 drugDistribution/index.vue,涉及两个独立缺陷:

缺陷 1el-radio-button 缺少 label 属性UI 文字丢失)

文件 healthlink-his-ui/src/views/inpatientNurse/drugDistribution/index.vue,第 60-76 行:

<el-radio-group v-model="drugType" class="ml10">
  <el-radio-button value="1" />   <!-- ❌ 无 label → 空白 -->
  <el-radio-button value="2" />   <!-- ❌ 无 label → 空白 -->
</el-radio-group>
<el-radio-group v-model="isDetails" class="ml20" @change="handleRadioChange">
  <el-radio-button value="1" />   <!-- ❌ 无 label → 空白 -->
  <el-radio-button value="2" />   <!-- ❌ 无 label → 空白 -->
</el-radio-group>

Element Plus 的 el-radio-button 中,value(或旧版 label)控制内部值,但按钮显示文字来自 label prop 或 <template #default> 插槽。这里只设了 value 没设 label,导致按钮渲染为空白。

缺陷 2drugType 变更未触发数据刷新 + isDetails 切换到汇总时也不刷新(功能失效)

  • drugTypeel-radio-group 没有 @change 事件处理 → 切换西药/中药不触发任何数据请求。
  • handleRadioChange 函数(第 266 行)仅处理 value == '1'(明细模式),切换到汇总模式(value == '2')时不调用 handleGetPrescription()
  • drugType 未作为 prop 传给子组件 PrescriptionList / SummaryMedicineList,后端 API 无法区分药物类别。

三、修复方案

仅需修改 1 个文件healthlink-his-ui/src/views/inpatientNurse/drugDistribution/index.vue

修改 1 — 添加 label 属性恢复按钮文字:

<!-- 药物类别组:西药 / 中药 -->
<el-radio-group v-model="drugType" class="ml10" @change="handleDrugTypeChange">
  <el-radio-button value="1" label="西药" />
  <el-radio-button value="2" label="中药" />
</el-radio-group>

<!-- 展示方式组:明细 / 汇总 -->
<el-radio-group v-model="isDetails" class="ml20" @change="handleRadioChange">
  <el-radio-button value="1" label="明细" />
  <el-radio-button value="2" label="汇总" />
</el-radio-group>

修改 2 — 新增 handleDrugTypeChange 方法:

function handleDrugTypeChange() {
  chooseAll.value = false;
  handleGetPrescription();
}

修改 3 — 修复 handleRadioChange 使其在两种模式下都触发刷新:

// 修改前(只处理明细)
function handleRadioChange(value) {
  chooseAll.value = false;
  if (value == '1') {
    handleGetPrescription();
  }
}

// 修改后(两种模式都触发)
function handleRadioChange() {
  chooseAll.value = false;
  handleGetPrescription();
}

修改 4 — 将 drugType 传递给子组件:

<PrescriptionList
  v-if="isDetails == 1"
  ref="prescriptionRefs"
  :exe-status="exeStatus"
  :request-status="requestStatus"
  :deadline="deadline"
  :therapy-enum="therapyEnum"
  :drug-type="drugType"
/>
<SummaryMedicineList
  v-else
  ref="summaryMedicineRefs"
  :therapy-enum="therapyEnum"
  :drug-type="drugType"
/>

注意:子组件 prescriptionList.vuesummaryMedicineList.vuedefineProps 中需同步增加 drugType prop并在各自的 API 请求参数中传入 drugType,后端接口 getPrescriptionList / getMedicineSummary 也需要支持 drugType 参数进行过滤。如果后端已支持该参数(通过其他方式传入或不需要),则前端只需加 prop + 传参即可。

四、路由决策

FIXER: zhaoyun赵云 - 前端开发)

REASON: 这是纯前端 Bug——Element Plus el-radio-button 缺少 label 属性导致文字丢失,以及前端事件处理逻辑不完整导致筛选功能失效。全部修改集中在 Vue 文件(模板 + 脚本),不涉及后端接口变更(除非后端 drugType 参数也缺失,需 zhaoyun 修完前端后验证 API 调用是否生效,若不生效再转 guanyu 补后端参数)。


路由决策

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