方法一、使用Element的summary-method,这边不讲
方法二、
用官网自带的例子为例,下面是官网的代码:
<template>
<el-table
:data="tableData"
border
show-summary
style="width: 100%">
<el-table-column
prop="id"
label="ID"
width="180">
</el-table-column>
<el-table-column
prop="name"
label="姓名">
</el-table-column>
<el-table-column
prop="amount1"
sortable
label="数值 1">
</el-table-column>
<el-table-column
prop="amount2"
sortable
label="数值 2">
</el-table-column>
<el-table-column
prop="amount3"
sortable
label="数值 3">
</el-table-column>
</el-table>
<el-table
:data="tableData"
border
height="200"
:summary-method="getSummaries"
show-summary
style="width: 100%; margin-top: 20px">
<el-table-column
prop="id"
label="ID"
width="180">
</el-table-column>
<el-table-column
prop="name"
label="姓名">
</el-table-column>
<el-table-column
prop="amount1"
label="数值 1(元)">
</el-table-column>
<el-table-column
prop="amount2"
label="数值 2(元)">
</el-table-column>
<el-table-column
prop="amount3"
label="数值 3(元)">
</el-table-column>
</el-table>
</template>
<script>
export default {
data() {
return {
tableData: [{
id: '12987122',
name: '王小虎',
amount1: '234',
amount2: '3.2',
amount3: 10
}, {
id: '12987123',
name: '王小虎',
amount1: '165',
amount2: '4.43',
amount3: 12
}, {
id: '12987124',
name: '王小虎',
amount1: '324',
amount2: '1.9',
amount3: 9
}, {
id: '12987125',
name: '王小虎',
amount1: '621',
amount2: '2.2',
amount3: 17
}, {
id: '12987126',
name: '王小虎',
amount1: '539',
amount2: '4.1',
amount3: 15
}]
};
},
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;
}
}
};
</script>
更改后:
(动态行表格可以用这个方法,动态列不行)
getSummaries2(){
this.$nextTick(() => {
//tableList是ref中定义的,footerWrapper是F12看出来的
// const faterNode = this.$refs.tableList.$refs.footerWrapper
//获取合计数值1node
let amountNode = this.$refs.tableList.$refs.footerWrapper.querySelector('.el-table_1_column_3');
//获取数值1合计值
let amountSum = parseFloat(amountNode.innerText);
setTimeout(() => {
//值除以10,保留三位小数
let newSum = (amountSum/10).toFixed(3)
//把新的值回显到数值1合计中
amountNode.innerHTML = "<div class=\"cell\">" + newSum + "</div>";
},100);
})
},
this.$refs.tableList.$refs.footerWrapper 中footerWrapper是取下图el-table__footer-wrapper是属于哪个的,属于哪个这边选哪个,tableList是ref中自己定义的,图一
querySelector方法里面的值就是F12点出来的,想要改变哪个合计就点哪个
版权声明:本文为weixin_43085797原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。