vue单元格多列合并的实现


Posted in Vue.js onNovember 26, 2020

一.多列合并

1.在el-table中添加:span-method="objectSpanMethod"属性来控制合并单元格,如下图

vue单元格多列合并的实现

2.合并代码,每一列都要设置一个不同的key,这样可以防止合并的时候上下内容一样导致错误的问题

objectSpanMethod({ row, column, rowIndex, columnIndex }) {
   if (columnIndex === 0) {
    if (this.myObj[row.channel_type].start === rowIndex) {
     return {
      rowspan: this.myObj[row.channel_type].step,
      colspan: 1
     };
    } else {
     return {
      rowspan: 0,
      colspan: 0
     };
    }
   }
   if (columnIndex === 1) {
    if (
     this.myObj_two[row.channel_name_chinese + row.channel_type].start ===
     rowIndex
    ) {
     return {
      rowspan: this.myObj_two[row.channel_name_chinese + row.channel_type]
       .step,
      colspan: 1
     };
    } else {
     return {
      rowspan: 0,
      colspan: 0
     };
    }
   }
  },
   // 合并单元格第一列
  resolveData(arr) {
   var obj = {};
   arr.forEach((val, key) => {
    if (!obj[val.channel_type]) {
     obj[val.channel_type] = {
      start: key,
      step: 1
     };
    } else {
     obj[val.channel_type].step++;
    }
   });
   this.myObj = obj;
   console.log(obj);
  },
  // 合并单元格第二列
  resolveData_two(arr) {
   var obj = {};
   arr.forEach((val, key) => {
    if (!obj[val.channel_name_chinese + val.channel_type]) {
     obj[val.channel_name_chinese + val.channel_type] = {
      start: key,
      step: 1
     };
    } else {
     obj[val.channel_name_chinese + val.channel_type].step++;
    }
   });
   this.myObj_two = obj;
   console.log(this.myObj_two, "this.myObj");
  },

3.需要调用一下下面两个函数,data为你所获取的所有数据

this.resolveData_two(data);
     this.resolveData(data);

4.合并结果如下图

vue单元格多列合并的实现

到此这篇关于vue单元格多列合并的实现的文章就介绍到这了,更多相关vue单元格多列合并内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Vue.js 相关文章推荐
如何使用 vue-cli 创建模板项目
Nov 19 Vue.js
Vue 实现一个简单的鼠标拖拽滚动效果插件
Dec 10 Vue.js
Vue+penlayers实现多边形绘制及展示
Dec 24 Vue.js
Vue 简单实现前端权限控制的示例
Dec 25 Vue.js
vue中使用echarts的示例
Jan 03 Vue.js
如何在vue中使用HTML 5 拖放API
Jan 14 Vue.js
vue 实现click同时传入事件对象和自定义参数
Jan 29 Vue.js
详解Vue3.0 + TypeScript + Vite初体验
Feb 22 Vue.js
使用这 6个Vue加载动画库来减少我们网站的跳出率
May 18 Vue.js
前端vue+express实现文件的上传下载示例
Feb 18 Vue.js
vue3使用vuedraggable实现拖拽功能
Apr 06 Vue.js
Vue 打包后相对路径的引用问题
Jun 05 Vue.js
VUE项目实现主题切换的多种方法
Nov 26 #Vue.js
Vue项目如何引入bootstrap、elementUI、echarts
Nov 26 #Vue.js
vue实现广告栏上下滚动效果
Nov 26 #Vue.js
Vue组件生命周期运行原理解析
Nov 25 #Vue.js
vue element-ul实现展开和收起功能的实例代码
Nov 25 #Vue.js
在Vue中使用mockjs代码实例
Nov 25 #Vue.js
Vue3配置axios跨域实现过程解析
Nov 25 #Vue.js
You might like
用PHP的超级变量$_GET获取HTML表单(Form) 数据
2011/05/07 PHP
php file_put_contents()功能函数(集成了fopen、fwrite、fclose)
2011/05/24 PHP
解决ajax+php中文乱码的方法详解
2013/06/09 PHP
ThinkPHP实现将本地文件打包成zip下载
2014/06/26 PHP
php生成rss类用法实例
2015/04/14 PHP
解读PHP中上传文件的处理问题
2016/05/29 PHP
thinkPHP分组后模板无法加载问题解决方法
2016/07/12 PHP
PHP编写简单的App接口
2016/08/28 PHP
如何优雅的使用 laravel 的 validator验证方法
2018/11/11 PHP
jQuery点击后一组图片左右滑动的实现代码
2012/08/16 Javascript
jquery easyUI中ajax异步校验用户名
2016/08/19 Javascript
JAVA Web实时消息后台服务器推送技术---GoEasy
2016/11/04 Javascript
ES6概念 Symbol.keyFor()方法
2016/12/25 Javascript
推荐三款日期选择插件(My97DatePicker、jquery.datepicker、Mobiscroll)
2017/04/21 jQuery
详解vue-cli下ESlint 配置说明
2018/09/03 Javascript
[05:06]TI4西雅图DOTA2前线报道 海涛密探LGD训练
2014/07/09 DOTA
[01:07:13]TNC vs Pain 2018国际邀请赛小组赛BO2 第一场 8.17
2018/08/20 DOTA
Python中if __name__ == '__main__'作用解析
2015/06/29 Python
python访问抓取网页常用命令总结
2017/04/11 Python
Python获取二维矩阵每列最大值的方法
2018/04/03 Python
Python查看微信撤回消息代码
2018/06/07 Python
Windows 8.1 64bit下搭建 Scrapy 0.22 环境
2018/11/18 Python
PyGame贪吃蛇的实现代码示例
2018/11/21 Python
详解pandas删除缺失数据(pd.dropna()方法)
2019/06/25 Python
python异步Web框架sanic的实现
2020/04/27 Python
Matplotlib自定义坐标轴刻度的实现示例
2020/06/18 Python
CSS3实现多样的边框效果
2018/05/04 HTML / CSS
阿玛尼意大利官网:Armani意大利
2018/10/30 全球购物
FC-Moto英国:欧洲最大的摩托车服装和头盔商店之一
2019/08/25 全球购物
包装类的功能、种类、常用方法
2012/01/27 面试题
公司担保书格式范文
2014/05/12 职场文书
小学清明节活动总结
2014/07/04 职场文书
入党自荐书范文
2015/03/05 职场文书
紧急迫降观后感
2015/06/15 职场文书
浅谈Laravel中使用Slack进行异常通知
2021/05/29 PHP
20180830晚上第一届KSL半决赛 雨神vs解冻(二龙 三炮解说)
2022/04/01 星际争霸