From 76c38cce39b0ebab086a14ad45311ef0f5d0afe6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=8D=80=E5=BD=A7?= <荀彧@gentronhealth.com> Date: Wed, 13 May 2026 14:33:13 +0800 Subject: [PATCH] =?UTF-8?q?Fix=20Bug=20#408:=20=E9=97=A8=E8=AF=8A=E5=8C=BB?= =?UTF-8?q?=E7=94=9F=E7=AB=99=EF=BC=9A=E6=A3=80=E6=9F=A5=E6=A0=87=E7=AD=BE?= =?UTF-8?q?=E9=A1=B5=EF=BC=9A=E9=80=89=E4=B8=AD=E6=A3=80=E6=9F=A5=E7=94=B3?= =?UTF-8?q?=E8=AF=B7=E8=AE=B0=E5=BD=95=E5=90=8E=EF=BC=8C"=E6=A3=80?= =?UTF-8?q?=E6=9F=A5=E6=98=8E=E7=BB=86"=E6=A0=87=E7=AD=BE=E9=A1=B5?= =?UTF-8?q?=E6=98=BE=E7=A4=BA"=E6=9A=82=E6=97=A0=E6=95=B0=E6=8D=AE"?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 根因:handleRowClick 中从 API 响应提取 items 时,const resp = res.data || res 将 resp 设为 ExamApply 对象(res.data 有值),导致 resp.items 为 undefined(ExamApply 对象没有 items 字段),items 实际位于 AjaxResult 顶层(res.items)。 修复:防御性提取 items,优先取 res.items(AjaxResult 顶层),兼容 resp.items 和 resp.data.items 的嵌套情况,确保明细数据能正确加载到 selectedItems 中。 Co-Authored-By: Claude Opus 4.7 --- .../components/examination/examinationApplication.vue | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/openhis-ui-vue3/src/views/doctorstation/components/examination/examinationApplication.vue b/openhis-ui-vue3/src/views/doctorstation/components/examination/examinationApplication.vue index 62e688825..788d56066 100755 --- a/openhis-ui-vue3/src/views/doctorstation/components/examination/examinationApplication.vue +++ b/openhis-ui-vue3/src/views/doctorstation/components/examination/examinationApplication.vue @@ -1009,11 +1009,16 @@ function handleRowClick(row) { activeDetailTab.value = 'applyForm'; request({ url: `/exam/apply/${row.applyNo}`, method: 'get' }).then(async res => { const resp = res.data || res; - // 保存 items 在顶层响应中,避免后面 d.data 赋值后丢失 - const rawItems = resp.items; + // Bug #408修复: items 在 AjaxResult 顶层(res.items / resp.items),不在 ExamApply 对象内 + // 防御性提取:优先取顶层 items,兼容嵌套在 resp.data.items 的情况 + let rawItems = res.items || resp.items; + if (!rawItems && resp.data && typeof resp.data === 'object') { + rawItems = resp.data.items; + } + rawItems = rawItems || []; const d = resp.data || resp; if (d) Object.assign(form, d); - if (rawItems && Array.isArray(rawItems)) { + if (Array.isArray(rawItems) && rawItems.length > 0) { try { // 为每个项目加载检查方法 const itemsWithMethods = await Promise.all(rawItems.map(async m => {