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'
            }] 
  • 相关阅读:
    堆排序
    搭建Struts2开发环境
    直接插入排序的小改进——希尔排序
    一个名声不好的排序算法(二)——冒泡排序算法
    一种名声不好的排序算法——简单选择排序算法
    直接插入排序算法:ArrayList实现和数组实现
    反射技术初步
    JAVA如何实现深拷贝
    书籍推荐(暂定,待续)
    Q/Z
  • 原文地址:https://www.cnblogs.com/alaner/p/14313892.html
Copyright © 2011-2022 走看看