使用el-table中span-method合並列(根據某一列進行相同合並)


效果圖

代碼

<el-table
      :data="tableData"
      :span-method="objectSpanMethod"
      border
      style="width: 100%;"
      height="53vh"
      v-loading="dataListLoading"
    >

  

this.getSpanArr(this.tableData);//后台獲取到數據后進行數據處理

getSpanArr(data) {
      this.spanArr=[]
for (var i = 0; i < data.length; i++) {
        if (i === 0) {
          this.spanArr.push(1);
          this.pos = 0
        } else {
          // 判斷當前元素與上一個元素是否相同  inAccessCode(批次字段)
          if (data[i].inAccessCode === data[i - 1].inAccessCode) {
            this.spanArr[this.pos] += 1;
            this.spanArr.push(0);
          } else {
            this.spanArr.push(1);
            this.pos = i;
          }
        }
      }
    },
//進行表格合並
objectSpanMethod({ row, column, rowIndex, columnIndex }) {
      if (columnIndex === 0) {
        const _row = this.spanArr[rowIndex];
        const _col = _row > 0 ? 1 : 0;
        return {
          rowspan: _row,
          colspan: _col
        }
      }
    },

原理

getSpanArr(data)方法 data就是我們從后台拿到的數據,通常是一個數組;spanArr是一個空的數組,用於存放每一行記錄的合並數;pos是spanArr的索引。

如果是第一條記錄(索引為0),向數組中加入1,並設置索引位置;如果不是第一條記錄,則判斷它與前一條記錄是否相等,如果相等,則向spanArr中添入元素0,並將前一位元素+1,表示合並行數+1,

以此往復,得到所有行的合並數,0即表示該行不顯示

[0,0] 表示這一行不顯示, [2,1]表示行的合並數(該原理引用https://www.cnblogs.com/mmzuo-798/p/11686021.html )


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM