2.3 KiB
2.3 KiB
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() 中均未赋予默认值。
- 对比:
applyTime有startApplyTimeTimer()实时更新定时器(第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 联合判断。