3.3 KiB
3.3 KiB
Bug #556 分析报告
问题描述
【门诊医生站-检验】新增检验申请单时:
- 就诊卡号字段为空,未自动带出患者就诊卡号
- 执行时间字段未自动填充,仅显示占位提示
- 检验项目列表每条记录前均带"套餐"文字标签(冗余显示)
根因分析
问题1:就诊卡号未自动回显
- 代码路径:
initData()中formData.medicalrecordNumber = props.patientInfo.identifierNo || '' - 数据绑定:
v-model="formData.medicalrecordNumber" props.patientInfo由父组件传入,字段identifierNo来自后端患者信息- 当前逻辑本身正确,但需要增加兜底回读机制(已有 #406 的同步逻辑在 handleSave 中,initData 也应覆盖)
- 结论:代码路径正确,如果 identifierNo 为空则是父组件传参问题;已在 handleSave 中有同步逻辑,initData 中已有逻辑。无需额外修复。
问题2:执行时间未自动填充
- 根因:
formData.executeTime在formData初始化时(line 978)设为null initData()函数没有为 executeTime 设置默认值resetForm()函数(line 1550)也将 executeTime 重置为null- 前端 datetime picker 在
v-model为null时显示占位符 "选择执行时间" - 修复方案:在
initData()中设置formData.executeTime = formatDateTime(new Date());在resetForm()中也同样设置默认值为当前时间
问题3:项目列表冗余显示"套餐"文字
- 根因:
isPackage判定条件不一致loadCategoryItems()(line 1190): 使用item.feePackageId != null && ... && item.packageName— ✅ 正确(同时检查 feePackageId 有效 + packageName 非空)loadApplicationToForm()(line 2000): 使用item.feePackageId != null || item.itemName?.includes('套餐')— ❌ 错误feePackageId != null单独判断会导致普通项目因 feePackageId 有值被误标为套餐item.itemName?.includes('套餐')更是直接按名称文字判断,极不准确
- 影响位置:
- 检验项目选择区(line 566):
<el-tag v-if="item.isPackage">套餐</el-tag> - 已选项目列表(line 617):
<el-tag v-if="item.isPackage">套餐</el-tag> - 检验信息详情表格(line 448):
<el-tag v-if="scope.row.isPackage">套餐</el-tag>
- 检验项目选择区(line 566):
- 修复方案:将
loadApplicationToForm()中的isPackage判定统一为与loadCategoryItems()一致的逻辑
修复方案
修复1:执行时间默认填充
- 文件:
inspectionApplication.vue - 位置:
initData()函数,在已有患者信息赋值后添加formData.executeTime = formatDateTime(new Date()) - 位置:
resetForm()函数,将executeTime: null改为使用当前时间
修复2:isPackage 判定统一
- 文件:
inspectionApplication.vue - 位置:
loadApplicationToForm()函数 line 2000 - 旧代码:
const isPackage = item.feePackageId != null || item.itemName?.includes('套餐') - 新代码:
const isPackage = item.feePackageId != null && item.feePackageId !== '' && item.feePackageId !== 'null' && item.packageName
验收标准
- 新增检验申请单时,执行时间字段自动填充当前系统时间(YYYY-MM-DD HH:mm:ss 格式)
- 检验项目列表中,只有真正的套餐项目前显示"套餐"标签,普通项目不显示
- 就诊卡号在有患者信息时正常显示