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中使用inheritAttrs实现组件的扩展性介绍
Dec 07 Vue.js
Vue 组件注册全解析
Dec 17 Vue.js
vue 通过base64实现图片下载功能
Dec 19 Vue.js
vue项目如何监听localStorage或sessionStorage的变化
Jan 04 Vue.js
vue3中轻松实现switch功能组件的全过程
Jan 07 Vue.js
Vue 实例中使用$refs的注意事项
Jan 29 Vue.js
Vue中避免滥用this去读取data中数据
Mar 02 Vue.js
Vue项目中如何封装axios(统一管理http请求)
May 02 Vue.js
vue实现同时设置多个倒计时
May 20 Vue.js
vue ref如何获取子组件属性值
Mar 31 Vue.js
vue route新窗口跳转页面并且携带与接收参数
Apr 10 Vue.js
Vue组件化(ref,props, mixin,.插件)详解
May 15 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
利用递归把多维数组转为一维数组的函数
2006/10/09 PHP
PHP 身份验证方面的函数
2009/10/11 PHP
PHP 循环列出目录内容的函数代码
2010/05/26 PHP
PHP中PDO的错误处理
2011/09/04 PHP
PHP中的str_repeat函数在JavaScript中的实现
2013/09/16 PHP
Win7 64位系统下PHP连接Oracle数据库
2014/08/20 PHP
PHP实现从上往下打印二叉树的方法
2018/01/18 PHP
获取JavaScript用户自定义类的类名称的代码
2007/03/08 Javascript
extjs 学习笔记(三) 最基本的grid
2009/10/15 Javascript
解决ExtJS在chrome或火狐中正常显示在ie中不显示的浏览器兼容问题
2013/01/11 Javascript
php跨域调用json的例子
2013/11/13 Javascript
confirm的用法示例用于按钮操作时确定是否执行
2014/06/19 Javascript
Javascript验证用户输入URL地址是否为空及格式是否正确
2014/10/09 Javascript
再次谈论Javascript中的this
2016/06/23 Javascript
浅谈jQuery为哪般去掉了浏览器检测
2016/08/29 Javascript
JS表单提交验证、input(type=number) 去三角 刷新验证码
2017/06/21 Javascript
jQuery的时间datetime控件在AngularJs中的使用实例(分享)
2017/08/17 jQuery
javascript实现Java中的Map对象功能的实例详解
2017/08/21 Javascript
vue.js根据代码运行环境选择baseurl的方法
2018/02/28 Javascript
vue在自定义组件中使用v-model进行数据绑定的方法
2019/03/25 Javascript
AngularJs中$cookies简单用法分析
2019/05/30 Javascript
微信小程序与webview交互实现支付功能
2019/06/07 Javascript
Python 的类、继承和多态详解
2017/07/16 Python
深入理解Python单元测试unittest的使用示例
2017/11/18 Python
Django ORM多对多查询方法(自定义第三张表&ManyToManyField)
2019/08/09 Python
python 利用pyttsx3文字转语音过程详解
2019/09/25 Python
linux环境下安装python虚拟环境及注意事项
2020/01/07 Python
python按顺序重命名文件并分类转移到各个文件夹中的实现代码
2020/07/21 Python
加拿大在线隐形眼镜专家:PerfectLens.ca
2016/11/19 全球购物
德国街头和运动文化高品质商店:BSTN Store
2017/08/26 全球购物
公共场所禁烟标语
2014/06/25 职场文书
国家税务局领导班子对照检查材料思想汇报
2014/10/04 职场文书
职工宿舍管理制度
2015/08/05 职场文书
安全主题班会教案
2015/08/12 职场文书
环保建议书作文500字
2015/09/14 职场文书
Vue2项目中对百度地图的封装使用详解
2022/06/16 Vue.js