Files
his/bug556-analysis.md

37 lines
2.3 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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