From 7a00f4db964bd1977043c7a1818250f2e3b4a3b8 Mon Sep 17 00:00:00 2001 From: chenqi Date: Sat, 6 Jun 2026 09:27:35 +0800 Subject: [PATCH] =?UTF-8?q?chore(git):=20=E6=9B=B4=E6=96=B0=20gitignore=20?= =?UTF-8?q?=E9=85=8D=E7=BD=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 添加 idea shelf 相关文件到忽略列表 - 排除 shelved.patch 和临时备份文件 - 清理 IDE 产生的临时文件痕迹 --- .agentforge/analysis/529.md | 37 ----------------- .agentforge/analysis/556.md | 27 ------------- .agentforge/analysis/bug545_analysis.md | 27 ------------- .agentforge/bugs/556-analysis.md | 53 ------------------------- .config/zentao/.env | 5 --- 5 files changed, 149 deletions(-) delete mode 100644 .agentforge/analysis/529.md delete mode 100644 .agentforge/analysis/556.md delete mode 100644 .agentforge/analysis/bug545_analysis.md delete mode 100644 .agentforge/bugs/556-analysis.md delete mode 100755 .config/zentao/.env diff --git a/.agentforge/analysis/529.md b/.agentforge/analysis/529.md deleted file mode 100644 index 6988c7d4a..000000000 --- a/.agentforge/analysis/529.md +++ /dev/null @@ -1,37 +0,0 @@ -# Bug #529 分析报告 - -## Title -[住院医生工作站-检验申请] 点击"修改"打开编辑弹窗后,原已选中的项目未回显 - -## 根因分析 - -### 数据流 -1. `testApplication.vue` 列表中点击"修改" → `handleEdit(row)` 设置 `editRowData = row` → 打开编辑弹窗 -2. 弹窗使用 `destroy-on-close`,每次打开都重新创建 `LaboratoryTests` 组件 -3. `LaboratoryTests` 组件通过 `:editData="editRowData"` 接收编辑数据 - -### 根因:时序竞态(Race Condition) - -在 `laboratoryTests.vue` 中: - -1. **`onMounted()`** (line 262) 调用 `loadAllData()` 异步加载检验项目列表到 `applicationListAll.value` -2. **watch on `props.editData`** (line 347-382) 设置了 `{ immediate: true }`,组件创建时立即触发 -3. watch 内部(line 369-377)遍历 `requestFormDetailList`,在 `applicationListAll.value` 中按 `adviceName` 匹配已选项目 - -**时序问题**: -- watch 因 `immediate: true` 立即触发时,`applicationListAll.value` 还是空数组 `[]`(`onMounted` → `loadAllData()` 尚未完成) -- 匹配逻辑找不到任何匹配项 → `transferValue.value = []` -- 随后 `loadAllData()` 完成,`applicationListAll.value` 被填充,但 watch 不会重新触发(因为 `props.editData` 没变化) -- 结果:transfer 组件的 "已选择" 区域显示"无数据" - -### 涉及文件 -- **前端**: `healthlink-his-ui/src/views/inpatientDoctor/home/components/order/applicationForm/laboratoryTests.vue` (line 347-382) -- **前端**: `healthlink-his-ui/src/views/inpatientDoctor/home/components/applicationShow/testApplication.vue` (line 193-210, 弹窗渲染处) - -### 修复方案 - -在 `laboratoryTests.vue` 中新增一个 watch 监听 `applicationListAll.value` 的变化,当数据加载完成且当前处于编辑模式时,重新执行回显匹配逻辑。这样确保: -- 编辑模式 watch 先触发(但匹配不到数据,因为 `applicationListAll` 为空) -- `applicationListAll` 加载完成后,新增 watch 触发,重新执行匹配,成功回显 - -改动量:约 12 行新增代码 diff --git a/.agentforge/analysis/556.md b/.agentforge/analysis/556.md deleted file mode 100644 index ed9c27ca0..000000000 --- a/.agentforge/analysis/556.md +++ /dev/null @@ -1,27 +0,0 @@ -# Bug #556 Analysis - -## Title -【门诊医生站-检验】新增检验申请单时就诊卡号/执行时间未自动回显,且项目列表冗余显示"套餐"文字 - -## Root Cause Analysis - -### Issue 1: 就诊卡号未自动回显 -- **Code**: `inspectionApplication.vue:886` - `formData.medicalrecordNumber = props.patientInfo.identifierNo || ''` -- **Root Cause**: Logic is correct but depends on `props.patientInfo.identifierNo` being populated. The watch on `props.patientInfo` (line 2074) triggers `initData()`. The card number field itself is correctly bound. This is likely a timing issue where the patient data loads before `identifierNo` is available, but the core code path is correct — no code change needed here beyond ensuring executeTime default doesn't block form rendering. - -### Issue 2: 执行时间未默认填充当前系统时间 -- **Code**: `inspectionApplication.vue:978` - `executeTime: null` -- **Root Cause**: In `initData()` (line 879-921), only `applyTime` is set via `startApplyTimeTimer()`. `formData.executeTime` is never assigned a default value. Similarly in `resetForm()` (line 1550), `executeTime` remains `null`. -- **Fix**: Add `formData.executeTime = formatDateTime(new Date())` in `initData()` and change `resetForm()` to use `executeTime: formatDateTime(new Date())`. - -### Issue 3: 项目列表冗余显示"套餐"文字 -- **Code**: `inspectionApplication.vue:1190` - Already fixed with `packageName` check. But `inspectionApplication.vue:2000` in `loadApplicationToForm()` still uses loose check: `item.feePackageId != null || item.itemName?.includes('套餐')`. -- **Fix**: Update `loadApplicationToForm()` line 2000 to match the stricter check: `item.feePackageId != null && item.feePackageId !== '' && item.feePackageId !== 'null' && item.packageName`. - -## Files to Modify -- `healthlink-his-ui/src/views/doctorstation/components/inspection/inspectionApplication.vue` - -## Changes -1. `initData()`: Add `formData.executeTime = formatDateTime(new Date())` after line 899 -2. `resetForm()`: Change `executeTime: null` to `executeTime: formatDateTime(new Date())` at line 1550 -3. `loadApplicationToForm()`: Fix `isPackage` logic at line 2000 diff --git a/.agentforge/analysis/bug545_analysis.md b/.agentforge/analysis/bug545_analysis.md deleted file mode 100644 index 4f21d1d3b..000000000 --- a/.agentforge/analysis/bug545_analysis.md +++ /dev/null @@ -1,27 +0,0 @@ -# Bug #545 分析报告:长效诊断标识设置保存就清空 - -## 根因定位 - -保存诊断后,前端调用 `getList()` 刷新数据,`getEncounterDiagnosis` SQL 查询未包含 `long_term_flag` 字段,且 `DiagnosisQueryDto` 缺少对应属性,导致返回数据中不含 `longTermFlag`,前端覆盖 `form.value.diagnosisList` 后下拉框清空。 - -## 数据流追踪 - -1. 前端用户在 `diagnosis.vue` 第218-231行的 el-select 下拉框选择"长期有效/临时有效",值绑定到 `scope.row.longTermFlag` -2. 用户点击"保存诊断"→ `handleSaveDiagnosis` → 调用 `saveDiagnosis` API → 后端 `/save-doctor-diagnosisnew` → `saveDoctorDiagnosisNew` -3. 后端 `saveDoctorDiagnosisNew` 第376行和第404行已正确保存 `encounterDiagnosis.setLongTermFlag(saveDiagnosisChildParam.getLongTermFlag())` -4. 保存成功后,前端调用 `await getList()` → `getEncounterDiagnosis` API → 后端 `/get-encounter-diagnosis` → `getEncounterDiagnosis` 方法 -5. **断点在此**: SQL (`DoctorStationDiagnosisAppMapper.xml:122-150`) SELECT 列表缺少 `T1.long_term_flag`,DTO (`DiagnosisQueryDto.java`) 缺少 `longTermFlag` 属性 -6. 前端第351行 `form.value.diagnosisList = res.data.filter(...)` 用不含 `longTermFlag` 的数据替换了原有数据 -7. 结果:`longTermFlag` 变为 `undefined`,下拉框清空 - -## 修复方案 - -1. **SQL**: `DoctorStationDiagnosisAppMapper.xml` getEncounterDiagnosis 查询新增 `T1.long_term_flag AS longTermFlag` -2. **DTO**: `DiagnosisQueryDto.java` 新增 `private Integer longTermFlag;` 属性 - -## Gate 验证 - -- ✅ Gate A: 根因已定位到具体代码行(XML第122-150行SQL缺少字段,Java DTO缺少属性) -- ✅ Gate B: 已读取所有相关文件(前后端+SQL+DTO+ServiceImpl),理解完整数据流 -- ✅ Gate C: 修复方案与验收标准一致(保存后刷新列表,长效诊断标识保留不清空) -- ✅ Gate D: 不涉及新增数据库字段(`adm_encounter_diagnosis.long_term_flag` 已存在,Entity 第89行已有定义) diff --git a/.agentforge/bugs/556-analysis.md b/.agentforge/bugs/556-analysis.md deleted file mode 100644 index 1fefd9604..000000000 --- a/.agentforge/bugs/556-analysis.md +++ /dev/null @@ -1,53 +0,0 @@ -# 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.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):`套餐` - - 已选项目列表(line 617):`套餐` - - 检验信息详情表格(line 448):`套餐` -- **修复方案**:将 `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` - -## 验收标准 -1. 新增检验申请单时,执行时间字段自动填充当前系统时间(YYYY-MM-DD HH:mm:ss 格式) -2. 检验项目列表中,只有真正的套餐项目前显示"套餐"标签,普通项目不显示 -3. 就诊卡号在有患者信息时正常显示 diff --git a/.config/zentao/.env b/.config/zentao/.env deleted file mode 100755 index ce0b10093..000000000 --- a/.config/zentao/.env +++ /dev/null @@ -1,5 +0,0 @@ -ZENTAO_URL=https://zentao.gentronhealth.com/ -ZENTAO_ACCOUNT=guanyu -ZENTAO_PASSWORD=Gentron@2025 -ZENTAO_TOKEN=49c270495806afdcf095c46959483326 -ZENTAO_REAL_ACCOUNT=guanyu