element 动态合并表格列

在工作中需要对列进行合并操作,而element提供的方法是写死的并不符合实际的工作需求

element合并列
而下面的这种方法可以通过后端传来的数据进行比较,拥有相同属性的合并为一列

    getSpanArr(data) {
      this.spanArr = [];
      for (var i = 0; i < data.length; i++) {
        if (i === 0) {
          // 如果是第一条记录(即索引是0的时候),向数组中加入1
          this.spanArr.push(1);
          this.pos = 0;
        } else {
          // console.log(data[i].id, data[i - 1].id)
          if (data[i].id === data[i - 1].id) {
            // 如果parent相等就累加,并且push 0  这里是根据一样的parent匹配
            this.spanArr[this.pos] += 1;
            this.spanArr.push(0);
          } else {
            // 不相等push 1
            this.spanArr.push(1);
            this.pos = i;
          }
        }
      }
    },

在获取数据时调用上面的方法得到处理后的数据

  watch: {
    data: {
      handler() {
        if(!this.data) return;
        this.getSpanArr(this.data);
      },
      deep: true,
      immediate: true
    }
  },

然后再在element自带的合并列方法中使用

    spanMethod({ row, column, rowIndex, columnIndex }) {
      if(columnIndex === 0) {
        const _row = this.spanArr[rowIndex];
        const _col = _row > 0 ? 1 : 0;
        return {
          rowspan: _row,
          colspan: _col
        }
      }
    },

得到的效果

你可能感兴趣的:(vue,elementui,js)