关于表格合并span-method方法的补充(表格数据由后台动态返回)

// 模拟后台返回的值
getTable () {
this.tableData = [{
id: 1,
region: '中国',
type: [{
sortName: '器械',
sortList: [{
name: '器械1'
}, {
name: '器械2'
}]
}, {
sortName: '软件',
sortList: [{
name: '软件1'
}, {
name: '软件2'
}, {
name: '软件3'
}]
}]
}, {
id: 2,
region: '美国',
type: [{
sortName: '器械',
sortList: [{
name: '器械1'
}, {
name: '器械2'
}]
}, {
sortName: '软件',
sortList: [{
name: '软件1'
}, {
name: '软件2'
}]
}]
}]
this.dealTable()
}, // 处理表格数据
dealTable () {
let getDate = [] // 存储新表格数据
let typeIndex = [0] // 保存id,地区需要合并的值
let nameIndex = [0] // 保存类型需要合并的值
let a // id,地区需要合并的行是所有类型的长度
this.tableData.forEach((v, index) => {
if (v.type && v.type.length) {
a = 0
v.type.forEach((subV, i, typeData) => {
if (subV.sortList && subV.sortList.length) {
subV.sortList.forEach((ss, k, data) => {
if (k === data.length - 1) {
typeIndex.push(data.length) // 把每一个类型下面数据长度存起来
a += data.length // 把所有类型下面的数据长度相加
if (i === typeData.length - 1) {
nameIndex.push(a) // 类型循环完成后把数据长度存起来
}
}
getDate.push({
id: v.id,
region: v.region,
type: subV.sortName,
name: ss.name
})
})
}
})
}
}) console.log(nameIndex)
// [0, 5, 4]
// 看一下打印出来的规律,除去第一项,5是第一次需要合并的行
// 第二次合并又是从第五行开始合并4行 console.log(typeIndex)
// [0, 2, 3, 2, 2]
// 类型的数据存储规律也是一样,第一次合并2行
// 第二次从2行开始,合并3行,以此类推 // 根据这个规则,只需要给数据加上两个额外的属性控制是否合并就OK
let k = 0
let t = 0
nameIndex.forEach((v, i, nameArr) => {
if (nameArr[i + 1]) {
getDate[k].nameIndex = nameArr[i + 1]
k += nameArr[i + 1]
}
}) typeIndex.forEach((v, i, typeArr) => {
if (typeArr[i + 1]) {
getDate[t].typeIndex = typeArr[i + 1]
t += typeArr[i + 1]
}
})
this.tableData6 = getDate
console.log(getDate)
// 0: {id: 1, name: "器械1", nameIndex: 5, region: "中国", type: "器械", typeIndex: 2},
// 1: {id: 1, name: "器械2", region: "中国", type: "器械"}
// ....
// 5: {id: 2, name: "器械1", nameIndex: 4, region: "美国", type: "器械", typeIndex: 2}
}, // 表格合并方法
arraySpanMethod ({ row, column, rowIndex, columnIndex }) {
if (columnIndex === 0 || columnIndex === 1) {
if (row.nameIndex) { // 如果有值,说明需要合并
return [row.nameIndex, 1]
} else return [0, 0]
}
if (columnIndex === 2) {
if (row.typeIndex) {
return [row.typeIndex, 1]
} else return [0, 0]
}
},


<el-table
:data="tableData6"
:span-method="arraySpanMethod"
border
style="width: 100%">
<el-table-column
prop="id"
label="ID"
width="180">
</el-table-column>
<el-table-column
prop="region"
label="深圳">
</el-table-column>
<el-table-column
prop="type"
label="类型">
</el-table-column>
<el-table-column
prop="company"
label="企业名称">
</el-table-column>
</el-table>

getIndex () {
let arr = []
let s = 0
let table = this.tableData6
let getTable = []
table.forEach((item, i, data) => {
if (arr.length) {
s = arr[arr.length - 1].row + data[i - 1].company.length
}
arr.push({
row: s,
index: item.company.length
})
if (item.company && item.company.length) {
item.company.forEach(subItem => {
getTable.push({
id: item.id,
region: item.region,
type: item.type,
company: subItem.name
})
})
}
})
this.arr = arr
this.tableData6 = getTable
},
// 合并表格方法
arraySpanMethod ({ row, column, rowIndex, columnIndex }) {
if (columnIndex === 0 || columnIndex === 1 || columnIndex === 2) {
let obj = [0, 0]
this.arr.some(v => {
if (rowIndex === v.row) {
obj = [v.index, 1]
}
}) return obj
}
}




关于表格合并span-method方法的补充(表格数据由后台动态返回)的更多相关文章
- QTableWidget表格合并若干问题及解决方法
Qt提供 QTableWidget作为表格的类以实现表格的基本功能,表格中所装载的每一个单元格由类QTableWidgetItem提供.这是基于表格实现 Qt提供的一个基础类,若想实现定制表格和单元格 ...
- ASP.NET中重复表格列合并的实现方法(转自脚本之家)
这几天做一个项目有用到表格显示数据的地方,客户要求重复的数据列需要合并,就总结了一下.NET控件GridView 和 Repeater 关于重复数据合并的方法. 这是合并之前的效果: 合并之后的效果图 ...
- jquery操作表格 合并单元格
jquery操作table,合并单元格,合并相同的行 合并的方法 $("#tableid").mergeCell({ cols:[X,X] ///参数为要合并的列}) /** * ...
- element-ui 使用span-method表格合并后hover样式的处理
在使用element表格合并后,发现鼠标只有移入第一个合并行时,合并的部分会高亮,移入其他行,不会高亮,这样效果看起来不是很好.查看了文档也没有直接的解决方法,就通过现有的方法处理了一下,解决了hov ...
- html table表格导出excel的方法 html5 table导出Excel HTML用JS导出Excel的五种方法 html中table导出Excel 前端开发 将table内容导出到excel HTML table导出到Excel中的解决办法 js实现table导出Excel,保留table样式
先上代码 <script type="text/javascript" language="javascript"> var idTmr; ...
- element-ui表格合并span-method
先看一下合并后的样式,表格第二行,二三四列合并 官网给我们提供了span-method的方法可以进行表格合并,有4个参数返回:row,column,rowIndex,columnIndex;row和c ...
- Bootstrap-table表格插件的使用方法
前言 上次写了一个可拖动列表的插件,但除了这个特点没什么优点了,接下写的是我们常用的Bootstrap-table表格插件 正文 官网:https://bootstrap-table.com/ 有两个 ...
- 使用POI创建word表格合并单元格兼容wps
poi创建word表格合并单元格代码如下: /** * @Description: 跨列合并 */ public void mergeCellsHorizontal(XWPFTable table, ...
- Python将多个excel表格合并为一个表格
Python将多个excel表格合并为一个表格 生活中经常会碰到多个excel表格汇总成一个表格的情况,比如你发放了一份表格让班级所有同学填写,而你负责将大家的结果合并成一个.诸如此类的问题有很多.除 ...
随机推荐
- oracle数据库之数据插入、修改和删除
作为一合格的测试人员对数据库的单表查询.多表查询.分组查询.子查询等等这些基本查询方法还是要会的.不然到企业中,容易被一些人鄙视,或者说如果数据库学不好,表查不明白,那么对自己能力来说也是一种侮辱,因 ...
- (转)什么?你还不会写JQuery 插件
原文地址:http://www.cnblogs.com/joey0210/p/3408349.html 前言 如今做web开发,jquery 几乎是必不可少的,就连vs神器在2010版本开始将Jque ...
- 请教一个Jquery ligerui 框架的小问题
关闭子窗体时,要刷新父窗体,百度了很多像使用“window.opener.location.reload();”都不行,和easyui框架是有区别的 在子窗体里写Response.Write(&quo ...
- whereis libjpeg.so.7
在服务器上调用import ImageFont时报如下错误 ImportError: The _imagingft C module is not installed (服务器为Centos5.5, ...
- python 读取mysql存储的文件路径下载文件,内容解析,上传七牛云,内容入es
#!/usr/bin/env python # -*- coding: utf-8 -*- import ConfigParser import json import os import re fr ...
- 在iis7.5上部署asp.net mvc5
部署mvc5跟部署mvc4是一样的,唯一不同的是需要修改一下web.config的配置 在web.config中加入一下节点即可 <system.webServer> <module ...
- C#中base的作用
using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threa ...
- 趣图:TCP 与 UDP 的差别
趣图:程序猿和运维狗的工作日常…… 趣图:Java 和 PHP 之间的战斗
- Kylin -- Dup key found 问题
kylin 构建 cube 时,抛出了如下的错误: org.apache.kylin.engine.mr.exception.HadoopShellException: java.lang.Runti ...
- 条目十二《切勿对slt容器的线性安全性又不切实际的依赖》
条目十二<切勿对slt容器的线性安全性又不切实际的依赖> 这一条目,我想用简短而有力的语句来总结. stl库是为了照顾大多数情况,而不是某一领域,如果在库层次实现线性安全,很大可能是对性能 ...