element-ui、vue-easytable,table动态合并单元格


这里使用的是vue-easytable,将数据相同的单元各进行合并,话不多说直接上代码。
 

   <ve-table fixed-header borderY  :scroll-width="1600" :columns="columnsWeek" :table-data="tableData" :bodyCellClass="bodyCellClass" :cell-span-option="cellSpanOption" :cell-style-option="cellStyleOption" stripe />

data中定义合并单元格方法

      cellSpanOption: {
        bodyCellSpan: this.bodyCellSpan,
      },

合并方法

    bodyCellSpan({ row, column, rowIndex }) {
      if (column.field === "lotteryType") {
        const _row = (this.flitterTableData(this.tableData,'lotteryType')).arr[rowIndex];
        const _col = _row > 0 ? 1 :0;
        return {
          rowspan: _row,
          colspan: _col
        }
      }
    },
    //传入需要处理的表格数据和列的key值 返回数组 每一行需要合并的单元格数
    // 例:[2,0] 合并第一行和第二行 [3,0,0,2,0] 合并一到三 四到五行
    flitterTableData (data, key) {
      let arr = []
      let concat = 0
      data.forEach((item, index) => { // 循环表格数据
        if (index === 0) {
          arr.push(1)
        } else {
          if (item[key] === data[index - 1][key]) { // 每一列需合并相同内容的字段
            arr[concat] += 1
            arr.push(0)
          } else {
            arr.push(1)
            concat = index
          }
        }
      })
      return {
        arr
      }
    },

  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值