# 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` 联合判断。