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 => {