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刷新框架子页面的七种方法代码
Nov 20 Javascript
基于JavaScript实现 获取鼠标点击位置坐标的方法
Apr 12 Javascript
JSON传递bool类型数据的处理方式介绍
Sep 18 Javascript
Jquery 点击按钮自动高亮实现原理及代码
Apr 25 Javascript
JS原型、原型链深入理解
Feb 27 Javascript
js判断是否为空和typeof的用法(详解)
Oct 07 Javascript
基于JavaScript实现无缝滚动效果
Jul 21 Javascript
bootstrap3-dialog-master模态框使用详解
Aug 22 Javascript
javascript中join方法实例讲解
Feb 21 Javascript
layui字体图标 loading图标静止不旋转的解决方法
Sep 23 Javascript
JavaScript实现Tab选项卡切换
Feb 13 Javascript
JS如何在数组指定位置插入元素
Mar 10 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下删除字符串中HTML标签的函数
2008/08/27 PHP
PHP下利用header()函数设置浏览器缓存的代码
2010/09/01 PHP
php输出1000以内质数(素数)示例
2014/02/16 PHP
PHP 使用二进制保存用户状态的实例
2018/01/29 PHP
驱动事件的addEvent.js代码
2007/03/27 Javascript
JavaScript 判断浏览器类型及版本
2009/02/21 Javascript
学习JS面向对象成果 借国庆发布个最新作品与大家交流
2009/10/03 Javascript
跟我一起学写jQuery插件开发方法(附完整实例及下载)
2010/04/01 Javascript
按给定几率进行随机抽取的js代码
2010/12/28 Javascript
jquery中ajax学习笔记3
2011/10/16 Javascript
JavaScript实现获取某个元素相邻兄弟节点的prev与next方法
2016/01/25 Javascript
jquery过滤特殊字符',防sql注入的实现方法
2016/08/17 Javascript
Angular directive递归实现目录树结构代码实例
2017/05/05 Javascript
JavaScript实现简单的星星评分效果
2017/05/18 Javascript
JavaScript变量类型以及变量作用域详解
2017/08/14 Javascript
微信小程序入门之广告条实现方法示例
2018/12/05 Javascript
vue强制刷新组件的方法示例
2019/02/28 Javascript
JavaScript遍历查找数组中最大值与最小值的方法示例
2019/05/24 Javascript
通过实例学习React中事件节流防抖
2019/06/17 Javascript
ant-design-vue 时间选择器赋值默认时间的操作
2020/10/27 Javascript
python如何定义带参数的装饰器
2018/03/20 Python
基于python神经卷积网络的人脸识别
2018/05/24 Python
python mysql断开重连的实现方法
2019/07/26 Python
sklearn的predict_proba使用说明
2020/06/28 Python
Python实现爬取网页中动态加载的数据
2020/08/17 Python
Python+OpenCV图像处理—— 色彩空间转换
2020/10/22 Python
英国历史最悠久的DJ设备供应商:DJ Finance、DJ Warehouse、The DJ Shop
2019/09/04 全球购物
集体婚礼证婚词
2014/01/13 职场文书
幼儿园亲子活动方案
2014/01/29 职场文书
大三学生做职业规划:给未来找个方向
2014/02/24 职场文书
党员批评与自我批评(5篇)
2014/09/23 职场文书
党员“四风”方面存在问题及整改措施
2014/09/24 职场文书
2014年体育部工作总结
2014/11/13 职场文书
实习计划书范文
2015/01/16 职场文书
react如何快速设置文件路径别名
2021/04/28 Javascript
Vue.js中v-bind指令的用法介绍
2022/03/13 Vue.js