Vue 项目中 ElementUI 使用 Table 组件 , 列求和问题傻瓜指南 !!
一.目标
使用ElementUI的Table组件, 通过内置的summary-method传入一个方法来完成金额的求和.

二.步骤
1.在Table组件的 <el-table> 标签内加入属性 show-summary 和 :summary-method=“getSummaries”’
<el-table ref="multipleTable" :data="dataList"
show-summary :summary-method="getSummaries"
<el-table-column>
2.在method中完成 getSummaries 函数
这是官网(ElementUI官方文档)的提供方案,通过这个方法可以在Table最后一行每列数据的求和结果,需要做一些更改才能使用, 要快速使用的伙伴可以继续向下看.
methods: {
getSummaries(param) {
const { columns, data } = param;
const sums = [];
columns.forEach((column, index) => {
if (index === 0) {
sums[index] = '总价';
return;
}
const values = data.map(item => Number(item[column.property]));
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);
sums[index] += ' 元';
} else {
sums[index] = 'N/A';
}
});
return sums;
}
}
};
以下是我使用的方案
methods: {
getSummaries(param) {
const {
columns,
data
} = param;
const sums = [];
columns.forEach((column, index) => {
if (index === 5) {
sums[index] = '商品金额:';
return
}
if (index == 6) {
const values = data.map(item => Number(item['num']));
const price = data.map(item=>Number(item['price']))
sums[index] = values.reduce((prev, curr, index) => {
const value = Number(curr);
if (!isNaN(value)) {
return prev + curr*price[index];
} else {
return prev;
}
}, 0);
}
else {
sums[index] = '';
}
});
return sums;
},
};
console.log的参考 
三.总结
ElementUI Table组件的效果非常不错 , 但是使用起来要对单元格和内部的操作都要依靠它内置的函数来执行, 本文对他提供的一种自定义列表内容的方案进行修改,解决了每列数据求和困难的问题,并对组件使用提供了一些思路, 希望对各位有用.
|