:summary-method="getSummaries"
<el-table
:data="reformtableData"
style="width: 100%"
show-summary
:summary-method="getSummaries"
ref="reformtableRef"
>
<el-table-column label="序号" type="index" width="60" align="center">
</el-table-column>
<el-table-column prop="itemType" label="改造类型" width="130" align="center">
<template #default="scope">
{{ reformItemStatus.filter(rs => rs.value == scope.row.itemType)[0]?.label }}
</template>
</el-table-column>
</el-table>
const getSummaries=(param)=>{
const { columns, data } = param;
const sums = [];
columns.forEach((column, index) => {
if (index === 0) {
sums[index] = '合计';
} else {
// console.log("values",values)
const values = data.map(item => Number(item.price));
if (!values.every(value => isNaN(value))) {
sums[index] = values.reduce((prev, curr) => {
const value = Number(curr);
if (!isNaN(value)) {
return prev + curr;
} else {
return prev;
}
}, 0);
} else {
sums[index] = 'N/A';
}
filters.totalAmount=sums[index]
}
});
nextTick(()=>{
reformtableRef.value.doLayout(); // 重新渲染表格
})
return sums;
}
如果想添加一行合计本来可以按照上面的方法写的。
因为我用了summary-method他在计算最后一行的时候使用
:span-method="objectSpanMethod"
根本这一行没有算进去。找了半天没有找到原因。开始以为是没有重新渲染使用了
// nextTick(()=>{
// reformtableRef.value.doLayout(); // 重新渲染表格
// })
也不起作用。最后想的可以使用这个append插槽。而且样式还可以自己设置加个class就行了。方便很多啊
<template #append >
<span>合计</span>
<span>{{getAllPrice}}</span>
</template>
getAllPrice用个计算属性取值就可以了