37 lines
2.3 KiB
Markdown
37 lines
2.3 KiB
Markdown
# 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` 联合判断。
|