Files
his/.agentforge/bugs/556-analysis.md

3.3 KiB
Raw Blame History

Bug #556 分析报告

问题描述

【门诊医生站-检验】新增检验申请单时:

  1. 就诊卡号字段为空,未自动带出患者就诊卡号
  2. 执行时间字段未自动填充,仅显示占位提示
  3. 检验项目列表每条记录前均带"套餐"文字标签(冗余显示)

根因分析

问题1就诊卡号未自动回显

  • 代码路径:initData()formData.medicalrecordNumber = props.patientInfo.identifierNo || ''
  • 数据绑定:v-model="formData.medicalrecordNumber"
  • props.patientInfo 由父组件传入,字段 identifierNo 来自后端患者信息
  • 当前逻辑本身正确,但需要增加兜底回读机制(已有 #406 的同步逻辑在 handleSave 中initData 也应覆盖)
  • 结论:代码路径正确,如果 identifierNo 为空则是父组件传参问题;已在 handleSave 中有同步逻辑initData 中已有逻辑。无需额外修复。

问题2执行时间未自动填充

  • 根因:formData.executeTimeformData 初始化时line 978设为 null
  • initData() 函数没有为 executeTime 设置默认值
  • resetForm() 函数line 1550也将 executeTime 重置为 null
  • 前端 datetime picker 在 v-modelnull 时显示占位符 "选择执行时间"
  • 修复方案:在 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>
  • 修复方案:将 loadApplicationToForm() 中的 isPackage 判定统一为与 loadCategoryItems() 一致的逻辑

修复方案

修复1执行时间默认填充

  • 文件:inspectionApplication.vue
  • 位置:initData() 函数,在已有患者信息赋值后添加 formData.executeTime = formatDateTime(new Date())
  • 位置:resetForm() 函数,将 executeTime: null 改为使用当前时间

修复2isPackage 判定统一

  • 文件: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

验收标准

  1. 新增检验申请单时执行时间字段自动填充当前系统时间YYYY-MM-DD HH:mm:ss 格式)
  2. 检验项目列表中,只有真正的套餐项目前显示"套餐"标签,普通项目不显示
  3. 就诊卡号在有患者信息时正常显示