Fix Bug #408: 门诊医生站:检查标签页:选中检查申请记录后,"检查明细"标签页显示"暂无数据"
根因: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 <noreply@anthropic.com>
This commit is contained in:
@@ -1009,11 +1009,16 @@ function handleRowClick(row) {
|
|||||||
activeDetailTab.value = 'applyForm';
|
activeDetailTab.value = 'applyForm';
|
||||||
request({ url: `/exam/apply/${row.applyNo}`, method: 'get' }).then(async res => {
|
request({ url: `/exam/apply/${row.applyNo}`, method: 'get' }).then(async res => {
|
||||||
const resp = res.data || res;
|
const resp = res.data || res;
|
||||||
// 保存 items 在顶层响应中,避免后面 d.data 赋值后丢失
|
// Bug #408修复: items 在 AjaxResult 顶层(res.items / resp.items),不在 ExamApply 对象内
|
||||||
const rawItems = resp.items;
|
// 防御性提取:优先取顶层 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;
|
const d = resp.data || resp;
|
||||||
if (d) Object.assign(form, d);
|
if (d) Object.assign(form, d);
|
||||||
if (rawItems && Array.isArray(rawItems)) {
|
if (Array.isArray(rawItems) && rawItems.length > 0) {
|
||||||
try {
|
try {
|
||||||
// 为每个项目加载检查方法
|
// 为每个项目加载检查方法
|
||||||
const itemsWithMethods = await Promise.all(rawItems.map(async m => {
|
const itemsWithMethods = await Promise.all(rawItems.map(async m => {
|
||||||
|
|||||||
Reference in New Issue
Block a user