el-table span-method动态合并行

最近项目中需要用到table 动态合并行,官方文档给出的方法是固定合并不是动态的但是大致思路算是给出来了,开干。。。

效果是这样的额

 //table展示
<el-table :data="dataList" border :span-method="spanMethod">
     <el-table-column prop="name" label="第一列" ></el-table-column>
     <el-table-column prop="synonyms" label="第二列" ></el-table-column>
 </el-table>

 模拟一段已经排好序的数据(要么让后端排好序返回,要么自己处理)

dataList:[
   {name:'同义词',synonyms:'电视剧活动结束'},
   {name:'同义词',synonyms:'电视剧活动结束'},
   {name:'同义词',synonyms:'电视剧活动结束'},
   {name:'阿莎',synonyms:'速度还是啊实打实'},
   {name:'阿莎',synonyms:'速度还是啊实打实'},
   {name:'重生的机会',synonyms:'恶如让他服务活动'},
   {name:'重生的机会',synonyms:'恶如让他服务活动'},
   {name:'重生的机会',synonyms:'恶如让他服务活动'},
   {name:'重生的机会',synonyms:'恶如让他服务活动'},
],
getNum:new Map(),

定义一个map对象存储相同name出现的次数

count(){
    let dataMap = new Map();
    for (let i= 0; i< this.dataList.length;i++){
        let key = this.dataList[i].name;
        if(dataMap.has(key)){
            dataMap.set(key,dataMap.get(key)+1)
        } else{
            dataMap.set(key,1);
        }
    }
    this.getNum = dataMap;
},

关键点来了 对el-table 自带的span-method方法略加修改,var num = 0;num定义在export 外面防止在组件中报红 

spanMethod({ row, column, rowIndex, columnIndex }){
    if (columnIndex === 0) {
        let initNum = num;
        if(initNum+1 ==this.getNum.get(row.name)){
            num = 0;
        }else{
            num++;
        }
        if(initNum  % this.getNum.get(row.name) === 0){
            return{
                rowspan:this.getNum.get(row.name),
                colspan: 1
            } 
        }else{
            return{
                rowspan:0,
                colspan: 0
            } 
        }
    }
},

 大致思路就是这样,欢迎指导交流。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值