el-table的动态合并行和列

摘要:
1: 0}}return{rowspan:0,colspan:0}}}else{if{return{{rowspan:1,colspan:2}}else if{//删除第二列以防止数据错位return{row span:0、colspan:0}否则{return{rowspan:1,colspan:1}}}//加载方法mounted(){this.getList()},//此外,模拟数据:“list”:[{'time':“total”,“regionName”:“”,“name”:“username1”},{'time”:“cumulative”,“regionName”:”杭州“,”name“:”用户名2“},{'time:”累积“,”regionName“:”苏州“,”name':”用户名3“}”,{'time':”2012“,”区域名称“:”衡水“,”名称:”用户名4“}]

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

数据纯属虚构

el-table的动态合并行和列第1张

//表格标签 

 <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'
        }] 

免责声明:文章转载自《el-table的动态合并行和列》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇伺服驱动器UVW电机电源线相序错误Python简单密码加密程序,加盐(salt)md5下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

Qt之格栅布局(QGridLayout)

简述 QGridLayout:格栅布局,也被称作网格布局(多行多列)。 栅格布局将位于其中的窗口部件放入一个网状的栅格之中。QGridLayout需要将提供给它的空间划分成的行和列,并把每个窗口部件插入并管理到正确的单元格。 栅格布局是这样工作的: 它计算了位于其中的空间,然后将它们合理的划分成若干个行(row)和列(column),并把每个由它管理的窗口...

PHPWord生成word实现table合并(colspan和rowspan)

PHPWord(http://phpword.codeplex.com/)是一个很好处理和生成WORD文档的工具,但是生成复杂的word,如colspan和rowspan的实现,还是需要你做些修改。 第一步:在phpword/Style/Cell.php文件类中添加如下属性: private $_gridSpan;//for the colspan pri...

无服务端纯前台导出数据到Excel-JSExcelXML.js 使用指南

JSExcelXML 使用指南 先来个效果预览  a.前端显示   b.导出excel效果 表头部分   表尾部分   1.功能描述  JsExcelXml 采用js生成excel中可显示的xml格式文本,将输出文本保存为.xls格式即可,可实现所见即所得,该版本和上个版本有较多的改动,现在的版本更加灵活,该版本分别在IE8,9,10,chrome,Fir...

合并单元格式

1.上下合并(列合并)     $.fn.MergeColumns = function() {return this.each(function() {for (var i = $(this).find('tr:first td').size() - 1; i >= 0; i--) { //获取表格td的数量进行循环...