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 相关文章推荐
解决FLASH需要点击激活的代码
Dec 20 Javascript
javascript 类定义的4种方法
Sep 12 Javascript
javascript 多浏览器 事件大全
Mar 23 Javascript
window.opener用法和用途实例介绍
Aug 19 Javascript
在Node.js中使用HTTP上传文件的方法
Jun 23 Javascript
jQuery实现侧浮窗与中浮窗切换效果的方法
Sep 05 Javascript
Three.js开发实现3D地图的实践过程总结
Nov 20 Javascript
Angular实现的进度条功能示例
Feb 18 Javascript
vue如何判断dom的class
Apr 26 Javascript
vue实现点击选中,其他的不选中方法
Sep 05 Javascript
微信小程序 scroll-view 实现锚点跳转功能
Dec 12 Javascript
js+canvas实现转盘效果(两个版本)
Sep 13 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
【动漫杂谈】关于《请在T台上微笑》
2020/03/03 日漫
实现了一个PHP5的getter/setter基类的代码
2007/02/25 PHP
使用PHP批量生成随机用户名
2008/07/10 PHP
php xml留言板 xml存储数据的简单例子
2009/08/24 PHP
CakePHP框架Model函数定义方法示例
2017/08/04 PHP
JavaScript日历实现代码
2010/09/12 Javascript
基于javascript 闭包基础分享
2013/07/10 Javascript
基于mouseout和mouseover等类似事件的冒泡问题解决方法
2013/11/18 Javascript
纯js实现仿QQ邮箱弹出确认框
2015/04/29 Javascript
Js制作点击输入框时默认文字消失的效果
2015/09/05 Javascript
JS基于clipBoard.js插件实现剪切、复制、粘贴
2016/05/03 Javascript
详谈JS中实现种子随机数及作用
2016/07/19 Javascript
Jquery调用iframe父页面中的元素及方法
2016/08/23 Javascript
JS中常用的正则表达式
2016/09/29 Javascript
简单实现JS计算器功能
2016/12/21 Javascript
Node.JS文件系统解析实例详解
2017/05/15 Javascript
基于vue cli 通过命令行传参实现多环境配置
2018/07/12 Javascript
layui type2 通过url给iframe子页面传值的例子
2019/09/06 Javascript
javascript中的offsetWidth、clientWidth、innerWidth及相关属性方法
2020/05/14 Javascript
在Python中的Django框架中进行字符串翻译
2015/07/27 Python
Python自动化测试ConfigParser模块读写配置文件
2016/08/15 Python
python在ubuntu中的几种安装方法(小结)
2017/12/08 Python
在Mac上删除自己安装的Python方法
2018/10/29 Python
浅谈python函数调用返回两个或多个变量的方法
2019/01/23 Python
关于windows下Tensorflow和pytorch安装教程
2020/02/04 Python
浅谈Python3多线程之间的执行顺序问题
2020/05/02 Python
python opencv把一张图片嵌入(叠加)到另一张图片上的实现代码
2020/06/11 Python
Python的scikit-image模块实例讲解
2020/12/30 Python
button在IE6/7下的黑边去除方案
2012/12/24 HTML / CSS
德国珠宝和配件商店:Styleserver
2021/02/23 全球购物
空字符串(“”)和null的区别
2012/11/13 面试题
如何开启linux的ssh服务
2013/06/03 面试题
大学生文员专业个人求职信范文
2014/01/05 职场文书
销售人才自我评价范文
2014/09/27 职场文书
消费者投诉书范文
2015/07/02 职场文书
交通事故协议书范本
2016/03/19 职场文书