From e747f5b8e9f72a8bb2810c97124522b189ea7911 Mon Sep 17 00:00:00 2001 From: zhaoyun Date: Tue, 19 May 2026 19:07:35 +0800 Subject: [PATCH] =?UTF-8?q?Fix=20Bug=20#557:=20=E6=A0=B9=E5=9B=A0+?= =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E6=96=B9=E6=A1=88=E6=91=98=E8=A6=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- BUG_556_ANALYSIS.md | 55 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 55 insertions(+) create mode 100644 BUG_556_ANALYSIS.md diff --git a/BUG_556_ANALYSIS.md b/BUG_556_ANALYSIS.md new file mode 100644 index 00000000..8e80e505 --- /dev/null +++ b/BUG_556_ANALYSIS.md @@ -0,0 +1,55 @@ +# 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 变更