Fix Bug #557: 根因+修复方案摘要

This commit is contained in:
2026-05-20 10:08:36 +08:00
parent e5b85c733d
commit 9f0e69177c

36
bug556-analysis.md Normal file
View File

@@ -0,0 +1,36 @@
# 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` 联合判断。