zoukankan      html  css  js  c++  java
  • 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'
            }] 
  • 相关阅读:
    169. Majority Element
    283. Move Zeroes
    1331. Rank Transform of an Array
    566. Reshape the Matrix
    985. Sum of Even Numbers After Queries
    1185. Day of the Week
    867. Transpose Matrix
    1217. Play with Chips
    766. Toeplitz Matrix
    1413. Minimum Value to Get Positive Step by Step Sum
  • 原文地址:https://www.cnblogs.com/alaner/p/14313892.html
Copyright © 2011-2022 走看看