5.写vue遇到的问题及解决方法:为表格增加合计功能,计算指定列的总和。

问题描述:

要求为表格添加合计功能,若后端传出的数字带逗号,需要去掉逗号再计算。
修改之前:
在这里插入图片描述
修改之后:
在这里插入图片描述

解决方法:

1.页面表格代码如下,为表格添加getTotal方法

<el-table show-summary
		  :summary-method="getTotal"
		  ref="filterTable"
		  :data="dataTable"
		  stripe>
	<el-table-column prop="eventname" label="事件名称" min-width="120"></el-table-column>
	<el-table-column prop="cost" label="损失金额" min-width="120"></el-table-column>
</el-table>

2.js方法如下:

getTotal(param){
	const {columns,data} = param;
	const sums = [];
	columns.forEach((column,index) => {
		//将合计两个字放在列表下方的第一格
		if(index === 0){
			sums[index] = '合计';
			return;
		}
		const values = data.map(item =>){
			if(item[column.property] !=null){
				//去掉数字中的逗号,并将数据类型转为数字类型
				return Number(item[column.property].replace(/,/g,""))
			}
		});
		if(column.property === 'cost'){
			sums[index] = values.reduce((prev,curr) => {
				const value = Number(curr);
				if(!isNaN(value)){
					return prev + curr;
				} else {
					return prev;
				}
			}, 0);
			//保留两位小数
			sums[index] = sums[index].toFixed(2);
		} else {
			sums[index] = '';
		}
	});
	return sums;
}

注意:经过toFixed()方法,来进行数据处理之后,还要进行数值计算的话,那么一定要转成Number类型


版权声明:本文为qq_52999833原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。