fix(material): 修复rows.find数据结构兼容问题
This commit is contained in:
@ -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);
|
||||
|
||||
Reference in New Issue
Block a user