赞
踩
最近在写项目的时候用到了合计行,本篇文章提供了el-table使用合计行的方案。
- 合计行单元格合并3格。
- 合计行金额四舍五入保留两位小数。
- 合计行样式修改。
首先,先看一下Element的el-table组件的相关代码:
<el-table
:data="tableData"
ref="tableRef"
show-summary
:summary-method="summaryMethod"
:span-method="spanMethod">
<!-- 内容省略 -->
</el-table>
这些属性或事件都是Element自带的,是本文章需要用到的,使用ElementPlus的用户可能有所差异,自行根据官方文档替换即可。
ok,基本属性与方法介绍完毕,下面我们直接展示代码,复制即可使用。
methods:{ spanMethod({ row, column, rowIndex, columnIndex }) { this.$nextTick(() => { if (this.$refs.tableRef.$el) { let current = this.$refs.tableRef.$el .querySelector(".el-table__footer-wrapper") .querySelector(".el-table__footer"); let cell = current.rows[0].cells; cell[0].style.textAlign = "center"; // 合计行第一列字段居中显示。 cell[1].style.display = "none"; cell[2].style.display = "none"; // 隐藏被合并的单元格,不隐藏的话还会占着位置。 cell[0].colSpan = "3"; // 合并单元格 cell[cell.length - 3].style.color = "red"; // 修改合计行某一个单元格的样式。 } }); }, }
methods:{ summaryMethod(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] = sums[index].toFixed(2); } }); return sums; }, }
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。