vue+element table 合并列

vue+element table 合并列
在这里插入图片描述

<el-table
      ref="multipleTable"
      v-loading="listLoading"
      :data="tableData"
      tooltip-effect="dark"
      :header-cell-style="{background:'#eff3f6'}"
      :height="system.innerHeight-130-searchBoxHeight-75"
      :span-method="arraySpanMethod"
      style="width: 100%"
      border
    >

needMergeAttr为需要合并项的列
在这里插入图片描述
this.tableData为获取到后台返回的数据
在这里插入图片描述
arraySpanMethod方法

arraySpanMethod({ row, column, rowIndex, columnIndex }) {
	//这里不能直接循环needMergeAttr
      if (column.property === 'resourcetype') {
        return this.mergeAction('resourcetype', rowIndex, column);
      }
      if (column.property === 'serviceattr') {
        return this.mergeAction('serviceattr', rowIndex, column);
      }
      if (column.property === 'servicetype') {
        return this.mergeAction('servicetype', rowIndex, column);
      }
      if (column.property === 'majorcategory') {
        return this.mergeAction('majorcategory', rowIndex, column);
      }
      if (column.property === 'majorsubcategory') {
        return this.mergeAction('majorsubcategory', rowIndex, column);
      }
      if (column.property === 'remark') {
        return this.mergeAction('remark', rowIndex, column);
      }
	},
    mergeAction(val, rowIndex, colData) {
      const _row = this.rowMergeArrs[val].rowArr[rowIndex];
      const _col = _row > 0 ? 1 : 0;
      return [_row, _col];
	},
    rowMergeHandle(arr, data) {
      if (!Array.isArray(arr) && !arr.length) return false;
      if (!Array.isArray(data) && !data.length) return false;
      const needMerge = {};
      arr.forEach(i => {
        needMerge[i] = {
          rowArr: [],
          rowMergeNum: 0
        };
        data.forEach((item, index) => {
          if (index === 0) {
            needMerge[i].rowArr.push(1);
            needMerge[i].rowMergeNum = 0;
          } else {
            if (item[i] === data[index - 1][i]) {
              needMerge[i].rowArr[needMerge[i].rowMergeNum] += 1;
              needMerge[i].rowArr.push(0);
            } else {
              needMerge[i].rowArr.push(1);
              needMerge[i].rowMergeNum = index;
            }
          }
        });
      });
      return needMerge;
    }

效果图
在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值