<el-table id="table-content" :data="statWorkList" size="mini" show-summary="true" :summary-method="getSummaries"//加上这个,methods里引用getSummaries > <el-table-column label="充填率" prop="fillingrate" show-overflow-tooltip> <!--这行注释, <template slot-scope="scope">{{scope.row.fillingrate }}</template>--> </el-table-column>
</el-table>
注意:列的写法,要写prop="data",不然下面column.property取不到值
getSummaries(param) {
const { columns, data } = param
const sums = []
columns.forEach((column, index) => {
//第一个显示为合计
if (index === 0) {
sums[index] = '合计'
return
}
const values = data.map((item) => item[column.property])
//对表格数据进行循环
let sum = 0;
values.map((item) => {
//判断返回的是否为number数据类型
if (typeof item === 'number' && item !== Infinity && !isNaN(item)) {
//判断是否为时间戳
if (item > 160000000000) {
//若为时间戳则置为--
sums[index] = '-'
return
} else {
debugger
//对number数据进行累加
sums[index] = values.reduce((prev, curr) => {
const value = Number(curr)
if (!isNaN(value)) {
//解决js计算小数出现小数点后多位数字的问题
return Math.floor((prev + curr) * 100) / 100
} else {
return prev
}
}, 0)
}
if(typeof(item) == 'string'&&item.indexOf('%')>0){
item=Number(item.split('%')[0])
}
var aaa = Number(item)
if(!isNaN(aaa)){
sum = sum + Number(item)
}else{
sum = null
}
} else {
//不为number类型则置为--
if(typeof(item) == 'string'&&item.indexOf('%')>0){
item=Number(item.split('%')[0])
}
var aaa = Number(item)
if(!isNaN(aaa)){
sum = sum + Number(item)
}else{
sum = null
}
}
})
if (index === 13) {
sums[index] = sum.toFixed(2)+'%';
return;
}
if (index === 15) {
sums[index] = sum.toFixed(2)+'%';
return;
}
})
return sums
},