问题1:默认数据为空时,element认为不需要总计,当接口调用结束赋上数据时,总计行才会渲染,但因为之前element没有计算好高度,导致总计行从底部上升出来这一样式bug,解决方法是设置tableData:[{}]为初始值,使初始状态下具有总计行,这样初始计算过总计行高度后,后续在修改数据也不会产生样式bug了
问题2:在总计行结尾添加按钮,类似runder的写法,使用的是this.$createElement()方法,个人认为这种情境下,iview ui做的更好
代码:
getSummaries(param) {标签:index,return,sums,value,element,总计,组件,table,const From: https://www.cnblogs.com/bkk2h5l0/p/18338379
const { columns, data } = param
const sums = []
columns.forEach((column, index) => {
if (index === 0) {
sums[index] = '总计'
return
} else if (index === columns.length - 1) {
// 最后一列加个按钮
sums[index] = this.$createElement('el-button', {
props: {
type: 'text'
},
on: {
click: () => {
this.showRoll({ name: '', id: '' }, 'all')
}
}
}, '查看明细')
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)
} else {
sums[index] = ''
}
})
return sums
},