element实现合并单元格通用方法


Posted in Javascript onNovember 13, 2019

主要思路:

  1. 对数据进行处理,写了一个getSpanData通用方法。
  2. 用api中提供的span-method方法。

span-method方法用法:

通过给table传入span-method方法可以实现合并行或列,方法的参数是一个对象,里面包含当前行row、当前列column、当前行号rowIndex、当前列号columnIndex四个属性。该函数可以返回一个包含两个元素的数组,第一个元素代表rowspan,第二个元素代表colspan。 也可以返回一个键名为rowspan和colspan的对象。

通用实例

demo.vue

<el-table
   v-loading="loading"
   ref="singleTable"
   :data="tableData"
   :span-method="handleObjectSpanMethod"
   highlight-current-row
   border
   style="width: 100%;margin-top:10px;"
   max-height="730"
  >

JavaScript

// 查询列表
 queryTableList() {
  getNeeds().then(res => {
   if (res.code === 0) {
   // 表格数据
    this.tableData = res.data
    // 对表格数据进行处理,找出需要合并的单元格
    this.getSpanData(this.tableData)
   } 
  })
 },
// 计算需要合并的单元格
getSpanData(data) {
 // 存放计算好的合并单元格的规则
 this.spanData = []
 for (var i = 0; i < data.length; i++) {
  if (i === 0) {
   this.spanData.push(1)
   this.pos = 0
  } else {
   // 判断当前元素与上一个元素是否相同
   if (data[i].realOpenDate === data[i - 1].realOpenDate) {
    this.spanData[this.pos] += 1
    this.spanData.push(0)
   } else {
    this.spanData.push(1)
    this.pos = i
   }
  }
 }
}
// 合并单元格
handleObjectSpanMethod({ row, column, rowIndex, columnIndex }) {
 // 需要合并的列
 // [0, 1, 2].includes(columnIndex ), 表示合并前三列
 if (columnIndex === 1) {
  const _row = this.spanData[rowIndex]
  const _col = _row > 0 ? 1 : 0
  return {
   rowspan: _row,
   colspan: _col
  }
 }
}

getSpanData中spanData处理后的结构:

element实现合并单元格通用方法

数组中12的值表示需要合并的地方,很好理解,就是找到每行中columnIndex对应要合并的位置。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
javascript字母大小写转换的4个函数详解
May 09 Javascript
jQuery的text()方法用法分析
Dec 20 Javascript
jQuery实现3D文字特效的方法
Mar 10 Javascript
jquery+CSS3实现淘宝移动网页菜单效果
Aug 31 Javascript
基于Jquery和html5实现炫酷的3D焦点图动画
Mar 02 Javascript
谈一谈jQuery核心架构设计
Mar 28 Javascript
js 颜色选择插件
Jan 23 Javascript
AngularJS 最常用的八种功能(基础知识)
Jun 26 Javascript
详解React之key的使用和实践
Sep 29 Javascript
Koa 中的错误处理解析
Apr 09 Javascript
JavaScript使用localStorage存储数据
Sep 25 Javascript
基于vue实现简易打地鼠游戏
Aug 21 Javascript
vue之debounce属性被移除及处理详解
Nov 13 #Javascript
Vue的click事件防抖和节流处理详解
Nov 13 #Javascript
vue表单数据交互提交演示教程
Nov 13 #Javascript
解决vuex数据异步造成初始化的时候没值报错问题
Nov 13 #Javascript
前端vue-cli项目中使用img图片和background背景图的几种方法
Nov 13 #Javascript
基于vue-cli3和element实现登陆页面
Nov 13 #Javascript
vue data引入本地图片的两种方式小结
Nov 13 #Javascript
You might like
PHP中time(),date(),mktime()区别介绍
2013/09/28 PHP
你可能不知道PHP get_meta_tags()函数
2014/05/12 PHP
PHP大文件分割上传 PHP分片上传
2017/08/28 PHP
利用jQuery简单实现产品展示图片左右滚动功能(示例代码)
2014/01/02 Javascript
AngularJS基础学习笔记之指令
2015/05/10 Javascript
浅谈javascript中的闭包
2015/05/13 Javascript
JQuery节点元素属性操作方法
2015/06/11 Javascript
JavaScript实现cookie的写入、读取、删除功能
2015/11/05 Javascript
jQuery+css实现炫目的动态块漂移效果
2016/01/28 Javascript
jQuery中借助deferred来请求及判断AJAX加载的实例讲解
2016/05/24 Javascript
jQuery延迟执行的实现方法
2016/12/21 Javascript
springMVC + easyui + $.ajaxFileUpload实现文件上传注意事项
2017/04/23 Javascript
BootStrap 获得轮播中的索引和当前活动的焦点对象
2017/05/11 Javascript
强大的 Angular 表单验证功能详细介绍
2017/05/23 Javascript
用js将long型数据转换成date型或datetime型的实例
2017/07/03 Javascript
vue采用EventBus实现跨组件通信及注意事项小结
2018/06/14 Javascript
在vue中v-bind使用三目运算符绑定class的实例
2018/09/29 Javascript
ios中视频的最后一桢问题解决
2019/05/14 Javascript
vue把输入框的内容添加到页面的实例讲解
2019/11/11 Javascript
python使用urllib2模块获取gravatar头像实例
2013/12/18 Python
Java中重定向输出流实现用文件记录程序日志
2015/06/12 Python
python dict.get()和dict['key']的区别详解
2016/06/30 Python
对numpy和pandas中数组的合并和拆分详解
2018/04/11 Python
python中将\\uxxxx转换为Unicode字符串的方法
2018/09/06 Python
Django 实现将图片转为Base64,然后使用json传输
2020/03/27 Python
如何在sublime编辑器中安装python
2020/05/20 Python
Python实现列表中非负数保留,负数转化为指定的数值方式
2020/06/04 Python
详解移动端HTML5音频与视频问题及解决方案
2018/08/22 HTML / CSS
垃圾回收的优点和原理
2014/05/16 面试题
机械专业毕业生自荐信
2013/11/02 职场文书
幼儿师范毕业生自荐信
2013/11/09 职场文书
机械设计毕业生自荐信
2014/02/02 职场文书
超市创业计划书
2014/04/24 职场文书
匿名检举信范文
2015/03/02 职场文书
七一表彰大会简报
2015/07/20 职场文书
Redis Stream类型的使用详解
2021/11/11 Redis