4.8 KiB
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,涉及两个独立缺陷:
缺陷 1:el-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,导致按钮渲染为空白。
缺陷 2:drugType 变更未触发数据刷新 + isDetails 切换到汇总时也不刷新(功能失效)
drugType的el-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.vue 和 summaryMedicineList.vue 的 defineProps 中需同步增加 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 分析决策