项目需求:工资表实现合计行
开发前牢骚一下
合计行和列这么基础的东西 ant-table 居然没有(element 是有的),查了文档,ant 还是留了一手,支持slot footer。这就需要自己手动去实现了。
分析
我们要知道那些列是合计列, 那些列不需要。1. 合计列需要手动计算 总和。 2.而不需要合计的列需要做列合并。
3.再有合计列的实现实际上是利用slot 插入一个a-table (去除表头的)和 上边正统的a-table, 如果出现滚动条,这两个表格是需要一同联动的。
这就是实现合计行的三个要点,其余应该是写样式上的调整美化。
下面直接给出几段关键代码
1.合计表格 和正统表格的滚动 联动
if (this.isTotal) {
// 同步表与footer滚动
let dom = document.querySelector(".ant-table-body");
window.setTimeout(function() {
var lastScrollLeft = 0;
dom.addEventListener("scroll", function() {
if (lastScrollLeft != dom.scrollLeft) {
lastScrollLeft = dom.scrollLeft;
_this.$refs["total-table"].$el.querySelectorAll(".ant-table-body")[0].scrollLeft