el-table的动态合并行和列

//实现效果-----亲测有效

数据纯属虚构

//表格标签 

 <el-table
         v-loading="loading"
          :data="tableData"
          :span-method="objectSpanMethod"
          class="table"
          size="small"> 

//获取表格数据--从后端

 1 getList() {
 2   this.loading = true
 3   orderUseInfo().then(res => {
 4     if (res.resultCode == 100000) {
 5       this.tableData = res.data.list
 6       this.getListDataForRowAndColumn(this.tableData)
 7     } else {
 8       this.tableData = []
 9     }
10     this.loading = false
11   })
12 },

//数据整理

getListDataForRowAndColumn(data) {
  const self = this
  self.rowAndColumn = []
  self.rowRoomColumn = []
  for (var i = 0; i < data.length; i++) {
    if (i === 0) {
      // 如果是第一条记录(即索引是0的时候),向数组中加入1
      self.rowAndColumn.push(1)
      self.pos = 0
      self.rowRoomColumn.push(1)
      self.posT = 0
    } else {
      if (data[i].time === data[i - 1].time) {
        // 如果storeName相等就累加,并且push 0
        self.rowAndColumn[self.pos] += 1
        self.rowAndColumn.push(0)
      } else {
        // 不相等push 1
        self.rowAndColumn.push(1)
        self.pos = i
        self.rowRoomColumn.push(1)
        self.posT = i
      }
    }
  }
},

//表格的span-method绑定方法

objectSpanMethod({ row, column, rowIndex, columnIndex }) {
  const self = this
  if (rowIndex !== 0) {
    if (columnIndex === 0) {
      if (self.rowAndColumn[rowIndex]) {
        const rowNum = self.rowAndColumn[rowIndex]
        return {
          rowspan: rowNum,
          colspan: rowNum > 0 ? 1 : 0
        }
      }
      return {
        rowspan: 0,
        colspan: 0
      }
    }
  } else {
    if (columnIndex == 0) {
      return {
        rowspan: 1,
        colspan: 2
      }
    } else if (columnIndex == 1) {
      // 删除第二列 防止数据错位
      return {
        rowspan: 0,
        colspan: 0
      }
    } else {
      return {
        rowspan: 1,
        colspan: 1
      }
    }
  }
}

//在mounted中加载方法

  mounted() {
    this.getList()
  },

//另外mock数据:

'list': [{
          'time': '整体',
          'regionName': '',
          'name': '用户姓名1'
        }, {
          'time': '累计',
          'regionName': '杭州',
          'name': '用户姓名2'
        }, {
          'time': '累计',
          'regionName': '苏州',
          'name': '用户姓名3'
        }, {
          'time': '2012',
          'regionName': '衡水',
          'name': '用户姓名4'
        }] 

 

posted @ 2021-01-22 16:09  阿兰儿  阅读(1631)  评论(0编辑  收藏  举报