From 3ab3ddbdf123104d908f26a0555ab2399e504214 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=B5=B5=E4=BA=91?= <赵云@gentronhealth.com> Date: Sat, 16 May 2026 12:03:54 +0800 Subject: [PATCH] =?UTF-8?q?Fix=20Bug=20#428:=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 --- ANALYSIS.md | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) create mode 100644 ANALYSIS.md diff --git a/ANALYSIS.md b/ANALYSIS.md new file mode 100644 index 000000000..eb880308c --- /dev/null +++ b/ANALYSIS.md @@ -0,0 +1,28 @@ + +## Bug #426 修复报告 + +### 根因分析 +Element Plus `el-table` 的懒加载树形模式(`lazy` + `:load` + `tree-props="{ hasChildren: 'hasChildren' }"`)要求每一行数据必须包含 `hasChildren: true` 属性,才会在该行前渲染展开箭头(+ / -)。 + +代码中所有创建 `selectedItems` 行对象的路径(共7处)都正确设置了 `isPackage: true` 和 `packageId`,但**遗漏了 `hasChildren` 属性**,导致树形表格无法识别哪些行是可展开的套餐项。 + +### 影响范围 +- **文件**: `examinationApplication.vue`(前端) +- **涉及函数**: `handleItemSelect`、`handleMethodSelect`、`handleRowClick`、`onDetailMethodChange` +- **数据表**: 无数据库变更 + +### 修复方案 +在7处代码路径中,当 `packageId` 存在时同步设置 `hasChildren: true`: +1. `handleRowClick` 初始 item 创建: `hasChildren: false` +2. `handleRowClick` 回充时设置 `isPackage` 两处: `hasChildren: true` +3. `handleMethodSelect` 已存在项更新: `hasChildren: true` +4. `handleMethodSelect` 新项创建: `hasChildren: !!(method.packageId || targetItem.packageId)` +5. `handleItemSelect` 新行创建: `hasChildren: !!(item.packageId)` +6. `onDetailMethodChange` 方法切换: `hasChildren: true` + +### 验证计划 +- 在门诊医生站选择检查套餐后,"检查明细" tab 的树形表格应显示展开箭头 +- 点击展开箭头应懒加载套餐明细(项目名称、数量、单价) +- 回充已保存申请单时套餐项应正确显示展开箭头 + +修复结果:✅ 成功,13行改动