From c0175e13fe128222d1289f5dca39728ada9e423c Mon Sep 17 00:00:00 2001 From: DXC Date: Fri, 24 Apr 2026 14:52:45 +0800 Subject: [PATCH] =?UTF-8?q?fix(material):=20=E5=A2=9E=E5=BC=BAedit=5Fid?= =?UTF-8?q?=E8=87=AA=E5=8A=A8=E5=BC=B9=E7=AA=97=E7=9A=84=E8=B0=83=E8=AF=95?= =?UTF-8?q?=E6=97=A5=E5=BF=97=E5=92=8C=E5=AE=B9=E9=94=99=E9=80=BB=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- inventory-web/src/views/material/list.vue | 42 +++++++++++++++-------- 1 file changed, 28 insertions(+), 14 deletions(-) diff --git a/inventory-web/src/views/material/list.vue b/inventory-web/src/views/material/list.vue index d9af0e8..0a7e473 100644 --- a/inventory-web/src/views/material/list.vue +++ b/inventory-web/src/views/material/list.vue @@ -1592,20 +1592,34 @@ onMounted(() => { getList(); getOptionsList(); - // 【新增】:处理外部跳转自动打开编辑弹窗(来自入库编辑的'前往修改基础信息') - if (route.query.edit_id) { - const editId = Number(route.query.edit_id); - listMaterialBase({ id: editId }).then((res: any) => { - const rows = res?.data?.list ?? res?.data ?? []; - if (rows.length > 0) { - setTimeout(() => { - handleEdit(rows[0]); - }, 300); - } - }).catch((error: any) => { - console.error('自动获取物料详情失败', error); - }); - } + // 【优化】:处理外部跳转自动打开编辑弹窗 + console.log('--- 准备检测外部跳转参数 ---', route.query); + if (route.query.edit_id) { + const editId = Number(route.query.edit_id); + console.log('检测到 edit_id:', editId); + + // 为了防止 API 不支持直接传 id,我们改用 keyword 搜索(因为大部分 list 接口都支持 keyword) + // 或者直接请求列表,拿到第一页数据进行比对 + listMaterialBase({ page: 1, pageSize: 50, id: editId }).then((res: any) => { + const rows = res?.data?.list ?? res?.data ?? []; + console.log('API 返回的匹配数据:', rows); + + // 尝试在返回的列表中精确寻找这个 ID + const targetRow = rows.find((r: any) => r.id === editId) || rows[0]; + + if (targetRow) { + console.log('找到目标物料,准备弹窗:', targetRow); + // 加大延迟,确保 DOM 和弹窗组件完全挂载 + setTimeout(() => { + handleEdit(targetRow); + }, 800); + } else { + console.warn('未在返回数据中找到该物料'); + } + }).catch((error: any) => { + console.error('自动获取物料详情失败', error); + }); + } });