在列表页面增加所属材料列,不考虑数据,可以现在column里增加:

{
title: '所属材料',
dataIndex: 'materials',
key: 'materials'
},

然后得到数据,处理数据:

state = {
data: [],
materialData: [], // 添加materialData属性
loading: true,
currentPage: 1,
totalPages: 1,
totalCount: 0
}

接口中得到数据:
 

async fetchMaterialsData() {
try {
const response = await axios.get(`${Config.BASE_URL}/api/v1/all_materials`, {
withCredentials: true
})
if (response.data.message == "ok") {
let materialData = response.data.data
this.setState({ materialData }) // 存储材料数据到state中
}
} catch (error) {
console.error(error)
// removeToken()
// window.location.href = '/'
}

以及和列表页面的数据关联:

async fetchData(page = 1) {
try {
const response = await axios.get(`${Config.BASE_URL}/api/v1/calculation_results?page=${page}`, {
withCredentials: true
})
if (response.data.message == "ok") {
const data = response.data.data.map((item) => ({
key: item.id,
id: item.id,
algorithm_name: item.algorithm_name,
calculation_plan_name: item.calculation_plans.name,
calculation_plan_id: item.calculation_plans.id,
calculated_at: moment(item.calculated_at).format('YYYY-MM-DD HH:mm:ss'),
materialName: this.getMaterialName(item.materials) // 添加materialName属性
}));
data.sort((a, b) => new Date(b.id) - new Date(a.id));
this.setState({
data,
loading: false,
totalPages: response.data.totalPages,
totalCount: response.data.totalCount,
});
}
} catch (error) {
console.error(error)
// removeToken()
// window.location.href = '/'
}
}

增加一个函数,用来把材料的ID和名称进行匹配:

getMaterialName(materialIds) {
const { materialData } = this.state;
const material = materialData.find((item) => item.id === materialIds[0]);
return material ? material.name : '';
}

修改数据:

const columns = [
// ...
{
title: '所属材料',
dataIndex: 'materialName', // 修改为materialName
key: 'materialName'
},
// ...
];

考虑到材料是多个(数组),可以修改函数:
 

getMaterialName(materialIds) {
const { materialData } = this.state;
const materialNames = materialIds.map(materialId => {
const material = materialData.find(item => item.id === materialId);
return material ? material.name : '';
});
return materialNames.join(', '); // 将多个材料名称用逗号分隔
}