项目要求:

(1)第一列合并的行数根据后台传来的数据进行判断,同一类的就进行合并,所以这个需要判断每一类都多少个数据,就合并多少行 getSpanArr方法功能就是知道合并的行数

(2)每一类的最后一行都进行合并,合并除了第一列之外的所有的列,所以这个需要知道你要合并的所有的列是在第几行

代码以及注释如下:

html:

 <!--注意:列表这里比较特殊,数据结构比较特殊,第一:接接口的时候让后台按照死数据的数据结构进行传送,第二:每页只显示三种门店-->
<el-table :data="tableData" class="ems-table borderstyle" :span-method="objectSpanMethod"  style="width: 100%;"><el-table-column prop="sellerName" label="商品名称" width="180"></el-table-column><el-table-column prop="typeName" label="分类类型" :class="'ddd'"></el-table-column><el-table-column prop="date" label="月份"></el-table-column><el-table-column prop="total" label="总用量"></el-table-column><el-table-column prop="money" label="金额(元)"></el-table-column>
</el-table>

js:

 // 1、 发请求获取数据 这个方法放到created或者是mounted中进行调用,默认页面打开就开始获取数据dataList () {billManage(query).then(res => {// 合并行数函数的调用this.getSpanArr(res.data)})}// 2、 因为要合并的行数是不固定的,此函数是实现合并随意行数的功能getSpanArr (data) {console.log(data)//从后台获取的数据this.spanArr = []for (var i = 0; i < data.length; i++) {if (i === 0) {// 如果是第一条记录(即索引是0的时候),向数组中加入1this.spanArr.push(1)this.pos = 0} else {if (data[i].sellerName === data[i - 1].sellerName) {// 如果useName相等就累加,并且push 0this.spanArr[this.pos] += 1this.spanArr.push(0)} else {// 不相等push 1this.spanArr.push(1)this.pos = i}}}console.log(this.spanArr)}
// 3、合并行数objectSpanMethod ({ row, column, rowIndex, columnIndex }) {// columnIndex === 0 找到第一列,实现合并随机出现的行数if (columnIndex === 0) {const _row = this.spanArr[rowIndex]const _col = _row > 0 ? 1 : 0return {rowspan: _row,colspan: _col}// columnIndex === 1 找到第二列,实现合并第2到4列} else if (columnIndex === 1) {for (var i = 0; i < this.spanArr.length; i++) {// 筛选数组中数值不是0的数if (this.spanArr[i] > 1) {// console.log(i, this.spanArr[i])// 发现的规律:当前索引 + 索引所对应的数值 - 1 = 所要合并的第几行if (rowIndex === (i + this.spanArr[i] - 1)) {setTimeout(() => {console.log(document.querySelectorAll(`tr:nth-of-type(${i + this.spanArr[i]})`), i + this.spanArr[i])document.querySelectorAll(`tr:nth-of-type(${i + this.spanArr[i]}) td div`)[0].style.float = 'right'document.querySelectorAll(`tr:nth-of-type(${i + this.spanArr[i]}) td div`)[0].style.marginRight = '10%'}, 0)return {rowspan: 1,colspan: 4}}}}}}

最终效果以及后台数据格式展示:

2019/5/13 更

今天看了vue官网的api才发现,api提供了一种 nextTick方法,其功能是在数据响应完全之后再对数据进行操作,所以上面的代码中,我用setTimeout定时器来完成的功能完全可以使用nextTick来完成,具体的demo在我的博客中:https://blog.csdn.net/zhumizhumi/article/details/90718990

element动态合并行和列相关推荐

  1. hutool 导出复杂excel(动态合并行和列)

    实现效果: 基础表格导出:其中的查询及实体类未贴出,白嫖党请自行修改导出数据及表头 public void excelExport(@RequestBody QueryAttendanceStatis ...

  2. element ui 表格合并行和列

    element ui 表格合并行和列 <el-table:data="tableData":span-method="arraySpanMethod"bo ...

  3. element table表格合并行和列

    element-ui 官网案例: table合并行或列 通过给table传入span-method方法可以实现合并行或列,方法的参数是一个对象,里面包含当前行row.当前列column.当前行号row ...

  4. JS给table动态添加行和列

    效果图: input为动态添加 <botton onclick="AddTableCell()">添加一列</botton><table id=&qu ...

  5. 使用jquery实现table表格的动态添加行和列

    <table class="table" border="1px" cellspacing="0" cellpadding=" ...

  6. 动态合并Repeater控件数据列

    前天Insus.NET实现<动态合并GridView数据行DataRow的列>.今天再玩玩Repeater控件,功能也是动态合并某列栏位. Repeater控件跟GridView控件一样集 ...

  7. element表格攻略大全,表头合并,表格合并,动态添加一列

    elementui表格攻略大全,表头合并,表格合并,动态添加一列 element合并表头与合并表格,需求就是这样,数据结构中需要有一个大类集合,由于数据结构是我定的,图二是这个表格的数据结构 [{fu ...

  8. VUE element ui 动态合并单元格问题

    ** VUE element ui 动态合并单元格问题** 1.基础方法 //最开始从网上找到了一个基本的可以同时兼顾行和列的方法,时间太久忘记出自哪里了.如下: //效果 //绑定 :span-me ...

  9. vue element ui合并表格(合并某列的行数据)

    需求:按需合并某些列的数据 自定义数据: tableData:[ { num:0, new_subject_name:"new_subject_name1", count1:&qu ...

最新文章

  1. ListView数据项隔行换色控制实现详解
  2. 用 C 语言实现面向对象编程
  3. TC SRM 562 div2 B 题
  4. python 内置递归
  5. Jmeter(二十五)Jmeter之系统函数
  6. bootstrap-multiselect加载本地数据
  7. 经验 | 深度学习如何挑选GPU?
  8. Impatient JavaScript 中文版校对活动期待大家的参与
  9. 什么是pisa测试_什么是好作业?十年前,上海开启一项作业改革探索,专家发现了这些问题……...
  10. oracle 体系结构初步认识(一)
  11. 基于51单片机+DS1302时钟模块+LCD1602显示
  12. excel如何批量查询手机号归属地
  13. 时间格式转化大汇总各种类型
  14. python机器人仿真软件_最火的Python语言也能做机器人仿真,你会不?
  15. ArcGIS数据编辑操作
  16. 你必须知道的html5的基本特征和用法--基础必会
  17. java三色球问题_三色球问题,Java,算法
  18. 2019新征程 | SMIA新一批会员公示
  19. Error:403 No valid crumb was included in the request
  20. 搭建可以通过外网访问本地服务器CentOS7,这一篇就够了

热门文章

  1. 通过API发送信息到微信上
  2. 企业微信小程序wx.qy.login 的调用调试踩坑
  3. pyhon 函数 输入输出
  4. (LInux)network网卡重启失败原因及解决方法
  5. JavaScript赋值运算符,比较运算符,逻辑运算符
  6. Lytro转行挺进 虚拟现实领域 推出Immerge相机
  7. Unity中用Shader实现镜子效果
  8. 创建MFC对话框Dlg工程项目
  9. python多目标跟踪卡尔曼滤波_卡尔曼滤波+单目标追踪+python-opencv
  10. 爬取迷你mp4各个电影信息