Files
his/bug556-analysis.md

2.3 KiB
Raw Blame History

Bug #556 分析报告

Bug 描述

【门诊医生站-检验】新增检验申请单时就诊卡号/执行时间未自动回显,且项目列表冗余显示"套餐"文字

根因分析

问题1就诊卡号字段为空

根因formData.medicalrecordNumber 绑定到前端"就诊卡号"字段,但数据来源映射错误。

  • initData() 第886行formData.medicalrecordNumber = props.patientInfo.identifierNo || ''
  • resetForm() 第1526行medicalrecordNumber: props.patientInfo.identifierNo || ''

identifierNo 是身份证号/标识号字段,通常为空。实际的就诊卡号/业务编号是 props.patientInfo.busNo。代码中 formData.visitNo 已经正确映射了 busNo,但 medicalrecordNumber 映射到了错误的字段。

问题2执行时间未自动填充

根因formData.executeTime 初始值为 null第978行initData()resetForm() 中均未赋予默认值。

  • 对比:applyTimestartApplyTimeTimer() 实时更新定时器第1489行executeTime 没有类似初始化。
  • 用户期望:新增申请单时执行时间应默认填充当前系统时间。

问题3项目列表冗余显示"套餐"文字

根因loadApplicationToForm() 第2000行的 isPackage 判断条件过于宽松。

  • 第2000行const isPackage = item.feePackageId != null || item.itemName?.includes('套餐')
  • 对比:loadCategoryItems() 第1190行已经做了正确修复item.feePackageId != null && ... && item.packageName
  • 差异第2000行只用 feePackageId != null 判断,缺少 packageName 联合判断。如果后端返回的非套餐项目 feePackageId 有值但 packageName 为空,仍会被误标为套餐。

修复方案

修复1就诊卡号映射

medicalrecordNumber 的数据源从 props.patientInfo.identifierNo 改为 props.patientInfo.busNo。 涉及位置:initData() 第886行、resetForm() 第1526行

修复2执行时间默认值

initData()resetForm() 中,将 executeTime 设置为当前时间。使用 formatDateTime(new Date()) 格式化为 YYYY-MM-DD HH:mm:ss

修复3套餐标识判断

loadApplicationToForm() 第2000行的 isPackage 判断条件与 loadCategoryItems() 第1190行保持一致增加 item.packageName 联合判断。