element的表头动态合并

**

element的表头自定义动态合并

**

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

//用来合并的方法:span-method="objectSpanMethod"
  <el-table
        :data="tableData"
        :span-method="objectSpanMethod"
        border
        stripe
        show-summary
        style="width: 100%;"
      >
        <el-table-column prop="couponType" label="类别"> </el-table-column>
        <el-table-column prop="couponName" label="名称"> </el-table-column>
        <el-table-column prop="issue" label="下发"> </el-table-column>
        <el-table-column prop="writeOff" label="核销"> </el-table-column>
      </el-table>

封装方法用来,组装后台返回的数据,按什么合并

//根据某个字段排序table表格,让指定表格的数据重新排列table
export const tableSort = function (table, val) {
    let data = [];
    let types = [];

    table.forEach((item, index) => {
        if (types.includes(item[val]) == false) {
            types.push(item[val]);
        }
    });
    types.forEach((item, index) => {
        for (let i = 0; i < table.length; i++) {
            if (item == table[i][val]) {
                data.push(table[i]);
            }
        }
    });
    // console.log(types);
    // console.log(data);
    return data;
};

//根据某个字段来组装table合并数据
export const assemble = function (data, val) {
    let date = {
        merge: [],
        pos:0
    }
    for (var i = 0; i < data.length; i++) {
        if (i === 0) {
            date.merge.push(1);
            date.pos = 0;
        } else {
          // 判断当前元素与上一个元素是否相同
          //根据相同id进行合并,根据需要可进行修改
            if (data[i][val] === data[i - 1][val]) {
             date.merge[date.pos] += 1;
            date.merge.push(0);
          } else {
            date.merge.push(1);
            date.pos = i;
          }
        }
    }
    return date;
}

element合并的方法

 objectSpanMethod({ row, column, rowIndex, columnIndex }) {
      if (columnIndex === 0) {//合并第几列
        const _row = this.merge[rowIndex]; //上边的table合并数据返回的merge
        const _col = _row > 0 ? 1 : 0;
        return {
          rowspan: _row,//几行合并成一行
          colspan: _col,//1为合并,0为隐藏
        };
      }
    },
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值