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 相关文章推荐
js字符编码函数区别分析
Jun 05 Javascript
在AngularJS中使用AJAX的方法
Jun 17 Javascript
js滑动提示效果代码分享
Mar 10 Javascript
谈谈PHP中相对路径的问题与绝对路径的使用
Aug 16 Javascript
jQuery插件FusionCharts绘制2D双折线图效果示例【附demo源码】
Apr 14 jQuery
vue省市区三联动下拉选择组件的实现
Apr 28 Javascript
JavaScript继承定义与用法实践分析
May 28 Javascript
微信小程序利用canvas 绘制幸运大转盘功能
Jul 06 Javascript
ES6 Array常用扩展的应用实例分析
Jun 26 Javascript
在vue中利用v-html按分号将文本换行的例子
Nov 14 Javascript
vue组件实现移动端九宫格转盘抽奖
Oct 16 Javascript
关于Js中new操作符的作用详解
Feb 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设置一边执行一边输出结果的代码
2013/09/30 PHP
php配合jquery实现增删操作具体实例
2013/12/12 PHP
php处理restful请求的路由类分享
2014/02/27 PHP
解密ThinkPHP3.1.2版本之模块和操作映射
2014/06/19 PHP
PHP使用CURL实现多线程抓取网页
2015/04/30 PHP
PHP内核探索之变量
2015/12/22 PHP
PHP实现动态执行代码的方法
2016/03/25 PHP
PHP入门教程之图像处理技巧分析
2016/09/11 PHP
thinkphp框架实现路由重定义简化url访问地址的方法分析
2020/04/04 PHP
JS中彻底删除JSON对象组成的数组中的元素
2020/09/22 PHP
ExtJs之带图片的下拉列表框插件
2010/03/04 Javascript
jquery动态添加删除div 具体实现
2013/07/20 Javascript
JQuery对class属性的操作实现按钮开关效果
2013/10/11 Javascript
javascript抖动元素的小例子
2013/10/28 Javascript
在页面上用action传递参数到后台出现乱码的解决方法
2013/12/31 Javascript
BootStrap实用代码片段之一
2016/03/22 Javascript
BootStrap TreeView使用实例详解
2017/11/01 Javascript
五步轻松实现zTree的使用
2017/11/01 Javascript
vue使用iframe嵌入网页的示例代码
2020/06/09 Javascript
vue中注册自定义的全局js方法
2019/11/15 Javascript
webpack中的模式(mode)使用详解
2020/02/20 Javascript
vue 使用 canvas 实现手写电子签名
2020/03/06 Javascript
[01:08]2014DOTA2展望TI 剑指西雅图LGD战队专访
2014/06/30 DOTA
Python Web程序部署到Ubuntu服务器上的方法
2018/02/22 Python
Python学习_几种存取xls/xlsx文件的方法总结
2018/05/03 Python
python库lxml在linux和WIN系统下的安装
2018/06/24 Python
Django如何实现网站注册用户邮箱验证功能
2019/08/14 Python
win10子系统python开发环境准备及kenlm和nltk的使用教程
2019/10/14 Python
pytorch torch.nn.AdaptiveAvgPool2d()自适应平均池化函数详解
2020/01/03 Python
介绍一下Python中webbrowser的用法
2013/05/07 面试题
报关专员求职信范文
2014/02/22 职场文书
个人廉洁自律承诺书
2014/03/27 职场文书
优秀团员事迹材料1000字
2014/08/20 职场文书
群众路线领导班子整改方案
2014/10/25 职场文书
银行竞聘报告范文
2014/11/06 职场文书
Python中基础数据类型 set集合知识点总结
2021/08/02 Python