fix(material): 修复rows.find数据结构兼容问题

This commit is contained in:
DXC
2026-04-24 15:03:01 +08:00
parent c0175e13fe
commit b002c50d81

View File

@ -1601,15 +1601,23 @@ onMounted(() => {
// 为了防止 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);
// 1. 尝试获取各种可能的数据结构
let rawData = res?.data?.list ?? res?.data?.items ?? res?.data ?? [];
// 尝试在返回的列表中精确寻找这个 ID
// 2. 如果后端聪明地直接返回了单条数据(对象),把它包装成数组
if (!Array.isArray(rawData) && typeof rawData === 'object' && rawData !== null) {
rawData = [rawData];
}
// 3. 终极兜底,确保 rows 绝对是数组
const rows = Array.isArray(rawData) ? rawData : [];
console.log('兼容处理后的数组数据:', rows);
// 4. 寻找目标行并弹窗
const targetRow = rows.find((r: any) => r.id === editId) || rows[0];
if (targetRow) {
console.log('找到目标物料,准备弹窗:', targetRow);
// 加大延迟,确保 DOM 和弹窗组件完全挂载
setTimeout(() => {
handleEdit(targetRow);
}, 800);