自定义合并列:el-table

    objectSpanMethod({ row, column, rowIndex, columnIndex }) {//合并规则
      //当前行row、当前列column、当前行号rowIndex、当前列号columnIndex
      if (columnIndex === 0) {//第一列:参数column.property,内容:row.name,合并数量this.columnDatas[row.name]
        console.log(this.columnDatas[rowIndex],column.property,row.name,"读取参数")
        const _row = this.columnDatas[rowIndex];//每一列的数目:[1,2,0,1]
        if (_row) {
          return {
            rowspan: _row,
            colspan: 1
          };
        } else {
          return {
            rowspan: 0,
            colspan: 0
          };
        }
      }
    },

注:目标是计算合并相同key的数量_row,而且是一个数组格式

    //合并相同key的数据data:如:this.getSpanArr(this.dataSource,"name");//[1,2,0,1]
    getSpanArr(data,key) {
      let spanArr = [];
      let spanIndex = null;
      if (data == null) {
        return [];
      } else {
        for (let i = 0; i < data.length; i++) {
          if (i === 0) {
            spanArr.push(1);
            spanIndex = 0;
          } else {
            if (data[i][key]=== data[i - 1][key]) {
              spanArr[spanIndex] += 1;
              spanArr.push(0);
            } else {
              spanArr.push(1);
              spanIndex = i;
            }
          }
        }
        return spanArr;
      }
    },

附:常见合并key,读取value与num

    //计算相同key的数量num:{value:num},value是内容
    handleSpand(data,key) {
      let obj = {};
      data.forEach(val => {
        if (obj[val.key]) {
          obj[val.key]++;
        } else {
          obj[val.key] = 1;
        }
      });
      return obj;
    },

 

posted @ 2019-03-14 15:41  桥南小院  阅读(1653)  评论(0编辑  收藏  举报