| | |
| | | }; |
| | | |
| | | const fetchAreaNames = async () => { |
| | | if (!record?.areas || record.areas.length === 0) return; |
| | | const areasData = record?.areaIds || record?.areas; |
| | | if (!areasData || areasData.length === 0) return; |
| | | |
| | | setLoading(true); |
| | | try { |
| | | // 提取排序信息和ID |
| | | // Old format: [1, 2, 3] (array of integers) |
| | | // New format: [{id: 1, sort: 1}, {id: 2, sort: 2}] (array of objects) |
| | | const isObjectArray = record.areas.length > 0 && |
| | | typeof record.areas[0] === 'object' && |
| | | record.areas[0] !== null && |
| | | 'id' in record.areas[0]; |
| | | const isObjectArray = areasData.length > 0 && |
| | | typeof areasData[0] === 'object' && |
| | | areasData[0] !== null && |
| | | 'id' in areasData[0]; |
| | | |
| | | let areaIds = []; |
| | | let sortMap = new Map(); // 存储 id -> sort 的映射 |
| | | |
| | | if (isObjectArray) { |
| | | // 对象数组格式,提取ID和排序信息 |
| | | areaIds = record.areas.map(area => { |
| | | areaIds = areasData.map(area => { |
| | | const id = area.id; |
| | | sortMap.set(id, area.sort || 0); |
| | | return id; |
| | | }); |
| | | } else { |
| | | // 纯ID数组格式 |
| | | areaIds = record.areas.map(id => Number(id)); |
| | | areaIds = areasData.map(id => Number(id)); |
| | | } |
| | | |
| | | const res = await request.post(`/warehouseAreas/many/${areaIds.join(',')}`); |
| | |
| | | }; |
| | | |
| | | useEffect(() => { |
| | | if (record?.areas && record.areas.length !== 0 && record.areas.length > 0) { |
| | | const areasData = record?.areaIds || record?.areas; |
| | | if (areasData && areasData.length > 0) { |
| | | fetchAreaNames(); |
| | | } |
| | | }, [record]); |
| | |
| | | label={`+${areaNames.length - 1}`} |
| | | /> |
| | | )} |
| | | {areaNames.length === 0 && record.areas && record.areas.length > 0 && ( |
| | | {areaNames.length === 0 && (record?.areaIds || record?.areas) && (record?.areaIds || record?.areas).length > 0 && ( |
| | | <Chip |
| | | size="small" |
| | | label={`${record.areas.length} 个区域`} |
| | | label={`${(record?.areaIds || record?.areas).length} 个区域`} |
| | | /> |
| | | )} |
| | | </Stack> |