# Bug #556 分析报告 ## Bug 描述 【门诊医生站-检验】新增检验申请单时就诊卡号/执行时间未自动回显,且项目列表冗余显示"套餐"文字 ## 三个子问题分析 ### 问题1:就诊卡号未自动回显 **位置**: `inspectionApplication.vue` 第 146 行 `formData.medicalrecordNumber` **根因**: - `initData()` 第 886 行使用 `props.patientInfo.identifierNo` 填充 - `resetForm()` 第 1526 行同样使用 `props.patientInfo.identifierNo` 填充 - `handleSave()` 第 1598-1607 行同步患者信息时,只同步了 `visitNo`(对应 `busNo`),**没有同步 `medicalrecordNumber`** - `props.patientInfo` 中就诊卡号对应的字段是 `busNo`(就诊流水号/卡号),而 `identifierNo` 是身份证号/标识号,可能为空 - **修复**: `medicalrecordNumber` 应使用 `props.patientInfo.busNo` 填充,与 `visitNo` 保持一致 ### 问题2:执行时间未自动填充 **位置**: `inspectionApplication.vue` 第 978 行 `executeTime: null` **根因**: - `formData.executeTime` 初始值为 `null` - `initData()` 和 `resetForm()` 都**没有**设置 `executeTime` 默认值 - 第 176-186 行的日期选择器 placeholder 为"选择执行时间",无默认值 - **修复**: 在 `initData()` 和 `resetForm()` 中将 `executeTime` 设置为当前时间(格式与 `applyTime` 一致) ### 问题3:项目列表冗余显示"套餐"文字 **位置**: `inspectionApplication.vue` 第 566 行 `el-tag v-if="item.isPackage"` **根因**: - `loadCategoryItems()` 第 1190 行: `const isPackage = item.feePackageId != null && item.feePackageId !== '' && item.feePackageId !== 'null'` - 数据库中 ALL 12条 lab_activity_definition 记录都有 `fee_package_id` 值 - 但通过 `inspection_package_detail` 比对,只有 **2条** 记录的名称与套餐名称匹配("肝功能12项"和"免疫组织化学染色诊断") - 其余 10 条是套餐子项或普通项目,不应显示"套餐"标签 - **修复**: 改为检查 `item.packageName && item.itemName === item.packageName`,即只有当项目名称与套餐名称匹配时才标记为套餐 ## 修复方案 ### 修复1: 就诊卡号 - `initData()`: `formData.medicalrecordNumber = props.patientInfo.busNo || ''`(替代 `identifierNo`) - `resetForm()`: 同样改为 `busNo` - `handleSave()`: 同步时增加 `formData.medicalrecordNumber` 同步 ### 修复2: 执行时间 - `initData()`: 新增 `formData.executeTime = formatDateTime(new Date())` - `resetForm()`: 将 `executeTime: null` 改为 `executeTime: formatDateTime(new Date())` ### 修复3: 套餐标签 - `loadCategoryItems()` 第1190行: 将 `isPackage` 判断改为 `item.packageName && item.name === item.packageName` ## 验证门禁 - Gate A: 根因已定位到具体代码行 - Gate B: 已读取 inspectionApplication.vue 全部代码,理解数据流 - Gate C: 修复方案与验收标准一致 - Gate D: 不涉及数据库 DDL 变更