element-ui中table函数合并单元格

10 篇文章 1 订阅
<el-table :data="tableData"
                  style="width:100%;"
                  :height="tableHeight"
                  border
                  :span-method="objSpanMethod"></el-table>

在这里插入图片描述

mergeLineMethod () {//处理合并表格数据
      let mergeLine = this.tableData
      mergeLine.forEach((res, i) => {
        if (i === 0) {
          // 二
          this.mergeLineArrSec.push(1);
          this.mergeLineIndexSec = 0
          // 一
          this.mergeLineArrFir.push(1);
          this.mergeLineIndexFir = 0
        } else {
          // 判断当前元素与上一个元素是否相同,是就给之前相同的第一个+1,并且数组添加一个0
          // 判断第二列的数据相同
          if (mergeLine[i].firClass === mergeLine[i - 1].firClass) {
            if (mergeLine[i].secClass === mergeLine[i - 1].secClass) {
              this.mergeLineArrSec[this.mergeLineIndexSec] += 1;
              this.mergeLineArrSec.push(0);
            } else {//如果与前一个不相同,则追加一个新从1开始的数字,此时更新mergeLineIndex的值
              this.mergeLineArrSec.push(1);
              this.mergeLineIndexSec = i;
            }
          } else {
            this.mergeLineArrSec.push(1);
            this.mergeLineIndexSec = i;
          }
          // 判断第一列的数据相同
          if (mergeLine[i].firClass === mergeLine[i - 1].firClass) {
            this.mergeLineArrFir[this.mergeLineIndexFir] += 1;
            this.mergeLineArrFir.push(0);
          } else {//如果与前一个不相同,则追加一个新从1开始的数字,此时更新mergeLineIndex的值
            this.mergeLineArrFir.push(1);
            this.mergeLineIndexFir = i;
          }
        }
      });
    },
// 合并单元格
    objSpanMethod ({
      row,
      column,
      rowIndex,
      columnIndex
    }) {
      //  * row 表格每一行的数据
      //  * column 表格每一列的数据
      //  * rowIndex 表格的行索引,不包括表头,从0开始
      //  * columnIndex 表格的列索引,从0开始
      if (columnIndex === 0 || columnIndex === 1) {
        if (columnIndex === 0) {
          const _row = this.mergeLineArrFir[rowIndex];
          const _col = _row > 0 ? 1 : 0;
          return {
            rowspan: _row,
            colspan: _col
          }
        } else if (columnIndex === 1) {
          const _row = this.mergeLineArrSec[rowIndex];
          const _col = _row > 0 ? 1 : 0;
          return {
            rowspan: _row,
            colspan: _col
          }
        }
      }
    },

效果是 把前两列的所有相同的一级标题进行合并,在一级标题的基础上在把二级标题响应的合并。
在这里插入图片描述

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值