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 相关文章推荐
vuex页面刷新导致数据丢失的解决方案
Dec 10 Vue.js
8个非常实用的Vue自定义指令
Dec 15 Vue.js
Vue-router中hash模式与history模式的区别详解
Dec 15 Vue.js
vue 在单页面应用里使用二级套嵌路由
Dec 19 Vue.js
vue实现简易的双向数据绑定
Dec 29 Vue.js
如何在vue 中使用柱状图 并自修改配置
Jan 21 Vue.js
浅谈vue2的$refs在vue3组合式API中的替代方法
Apr 18 Vue.js
vue中使用mockjs配置和使用方式
Apr 06 Vue.js
vue cli4中mockjs在dev环境和build环境的配置详情
Apr 06 Vue.js
vue二维数组循环嵌套方式 循环数组、循环嵌套数组
Apr 24 Vue.js
vue生命周期钩子函数以及触发时机
Apr 26 Vue.js
vue使用element-ui按需引入
May 20 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安装问题
2006/10/09 PHP
JoshChen_php新手进阶高手不可或缺的规范介绍
2013/08/16 PHP
PHP命名空间(Namespace)简明教程
2014/06/11 PHP
postfixadmin忘记密码后的修改密码方法详解
2016/07/20 PHP
写入cookie的JavaScript代码库 cookieLibrary.js
2009/10/24 Javascript
js解析json读取List中的实体对象示例
2014/03/11 Javascript
jQuery 中国省市两级联动选择附图
2014/05/14 Javascript
jquery 中的each()跳出循环的语句
2014/05/23 Javascript
JavaScript DOM节点添加示例
2014/07/16 Javascript
js兼容火狐显示上传图片预览效果的方法
2015/05/21 Javascript
KnockoutJS 3.X API 第四章之数据控制流with绑定
2016/10/10 Javascript
JS实现重新加载当前页面或者父页面的几种方法
2016/11/30 Javascript
jquery实现tab键进行选择后enter键触发click行为
2017/03/29 jQuery
移动端web滚动分页的实现方法
2017/05/05 Javascript
利用Blob进行文件上传的完整步骤
2018/08/02 Javascript
CentOS7中源码编译安装NodeJS的完整步骤
2018/10/13 NodeJs
JavaScript中.min.js和.js文件的区别讲解
2019/02/13 Javascript
用node撸一个监测复联4开售短信提醒的实现代码
2019/04/10 Javascript
vue 移动端注入骨架屏的配置方法
2019/06/25 Javascript
vue+element-ui+axios实现图片上传
2019/08/20 Javascript
Vue中Table组件行内右键菜单实现方法(基于 vue + AntDesign)
2019/11/21 Javascript
[47:20]DAC2018 4.4 淘汰赛 Optic vs Mineski 第一场
2018/04/05 DOTA
python脚本监控docker容器
2016/04/27 Python
python匹配两个短语之间的字符实例
2018/12/25 Python
python3实现高效的端口扫描
2019/08/31 Python
Python SELENIUM上传文件或图片实现过程
2019/10/28 Python
使用 PyTorch 实现 MLP 并在 MNIST 数据集上验证方式
2020/01/08 Python
requests在python中发送请求的实例讲解
2021/02/17 Python
介绍一下.net和Java的特点和区别
2012/09/26 面试题
校园奶茶店创业计划书
2014/01/23 职场文书
音乐教学案例
2014/01/30 职场文书
市场营销个人求职信范文
2014/02/02 职场文书
竞选班长的演讲稿
2014/04/24 职场文书
班子成员四风问题自我剖析材料
2014/09/29 职场文书
党的群众路线教育实践活动对照检查剖析材料
2014/10/09 职场文书
2014年大学班长工作总结
2014/11/14 职场文书