vue+element项目中动态表格合并
需求:elementui里的table虽然有合并函数(:span-method),单基本都是设置固定值合并.现在有一个树型结构的数据,要求我们将里面的某个list和其他属性一起展开展示,并且list中的长度不确定.如下图
数据结构:

效果图:

方案:
1.数据平铺,我这里只做一层嵌套的.多层的可递归操作.
实际上elementui的table只有合没有分.所有将list里的每条item属性拿出来和外面的属性拼成新数据
//数据展开
openList:function(list,attr){
var list=JSON.parse(JSON.stringify(list));
var arr=[]
if(list.length>0){
list.forEach(function(item){
item[attr].length>0 && item[attr].forEach(function(item1){
var obj=JSON.parse(JSON.stringify(item));
obj['no']=item1['no']
obj['avgA']=item1['avgA']
obj['avgV']=item1['avgV']
obj['homogeneity']=item1['homogeneity']
arr.push(obj)
})
})
}
return arr;
},
2.拿到展开的数据后需要给特定的数据加上标识,因为elementui合并的时候是单独的一条数据进行识别的
需要记录的数据有,合并之后的序号、需要合并的数据当前是第几条、需要合并几行
//表头合并函数
mergeHead:function(list,attr,colspan){
//记录已经处理过的条数
//合并之后的序号标识
var number=0
//记录上次合并的索引
var didNum=0
if(list.length==1){
//rowspan为合并的行数
list[0].rowspan=1
//index为当前数据的索引
list[0].index=1 }else{
for(var i = 0 ;i<list.length-1;i++){
if(list[i][attr]!=list[i+1][attr]){
list[didNum].rowspan=i+1-didNum
number+=1
list[didNum].index=number
didNum=i+1
}else{ }
if(i==list.length-2){
list[didNum].rowspan=i+2-didNum
number+=1
list[didNum].index=number
}
}
}
},
3.落实到elementui的table上

objectSpanMethod( {row, column, rowIndex, columnIndex }) {
if (columnIndex <= 4) {
if(row.rowspan){
return {
rowspan: row.rowspan,
colspan: 1
};
}else{
return[0,0]
}
} else if(columnIndex == 11){
if (row.rowspan) {
return {
rowspan: row.rowspan,
colspan: 1
};
}
}else{
return [1,1]
}
},
注意点:objectSpanMethod函数中合并行要先判断columnIndex,合并列要先判断rowIndex.而且在写判断的时候,你必须清晰的写出每一行或者每一列.多条件写完,必须写else{return [0,0]}或者else{return [1,1]}.不然table不是你想看到的样子.
vue+element项目中动态表格合并的更多相关文章
- 在基于ABP框架的前端项目Vue&Element项目中采用电子签名的处理
在前面随笔介绍了<在基于ABP框架的前端项目Vue&Element项目中采用电子签章处理文件和打印处理>的处理,有的时候,我们在流程中或者一些文件签署的时候,需要签上自己的大名,一 ...
- 在基于ABP框架的前端项目Vue&Element项目中采用电子签章处理文件和打印处理
在一些内部OA或者流转的文件,或者给一些客户的报价文件.合同,或者一些医院出示的给保险机构的病历资料等,有时候可能都希望快速的使用电子签章的处理方式来给文件盖上特定的印章,本篇随笔介绍基于Vue&am ...
- 在基于ABP框架的前端项目Vue&Element项目中采用日期格式处理,对比Moment.js和day.js的处理
Day.js 是一个轻量的处理时间和日期的 JavaScript 库,和 Moment.js 的 API 设计保持完全一样. 如果您曾经用过 Moment.js, 那么您已经知道如何使用 Day.js ...
- vue+element项目中过滤输入框特殊字符小结
可以在main.js中写入方法 Vue.prototype.validSe = function (value, number = 255) { value = value.replace(/[`-* ...
- vue+element项目中使用el-dialog弹出Tree控件报错问题
1. 按正常的点击按钮,显示dialog弹出的Tree控件,然后把该条数据下的已经选中的checkbox , 用setCheckedNodes或者setCheckedKeys方法选择上 , 报下面这个 ...
- vue+element项目中 给input赋值之后无法修改
点击修改按钮 将值赋值给 input 但是无法修改,input不可编辑,部分input可以编辑 , 解决方法一. 改变data数据初始值 解决方法二. 用this.$set input:{ descr ...
- 新书上线:《Spring Boot+Spring Cloud+Vue+Element项目实战:手把手教你开发权限管理系统》,欢迎大家买回去垫椅子垫桌脚
新书上线 大家好,笔者的新书<Spring Boot+Spring Cloud+Vue+Element项目实战:手把手教你开发权限管理系统>已上线,此书内容充实.材质优良,乃家中必备垫桌脚 ...
- Vue&Element开发框架中增加工作流处理,查看申请单中整合多个处理类型的处理
关于我在Winform框架.混合框架.Bootstrap开发框架中的简易审批性工作流模块,我写过不少文章,有兴趣可以参考<工作流模块>的随笔进行了解,本篇随笔在完成了Vue&Ele ...
- Vue&Element开发框架中增加工作流处理,工作流的各个管理页面的界面处理
我在起前面的几篇随笔中,大概介绍了工作流的一些场景化处理,包括如何把具体业务表单组件化,并在查看和编辑界面中,动态加载组件内容,以及对于查看申请单的主页面,把审批.取消.发起会签.会签.批示分阅.阅办 ...
随机推荐
- go 错误处理设计思考
前段时间准备对线上一个golang系统服务进行内部开源,对代码里面的错误处理进行了一波优化. 优化的几个原因: 错误处理信息随意,未分类未定义.看到错误日志不能第一时间定位 错误的日志重复,有时候一个 ...
- 14-1-Unsupervised Learning ---dimension reduction
无监督学习(Unsupervised Learning)可以分为两种: 化繁为简 聚类(Clustering) 降维(Dimension Reduction) 无中生有(Generation) 所谓的 ...
- python实现开闭操作
目录: 开闭操作的作用 (一)开操作 (二)闭操作 (三)开操作完成其他任务 (1)提取水平垂直线 (2)消除干扰线 (3)提取满足要求的形状 开闭操作的作用: (一)开操作(特点作用:消除噪点--- ...
- MySQL 1064 错误
ERROR 1064 : You have an error in your SQL syntax; check the manual that corresponds to your MySQL s ...
- <C#任务导引教程>练习一
//1,定位显示ASCI码值为30到119的字符using System;class Program{ static void Main() { int i, n = 0; ...
- SQL语句修改字段类型与第一次SQLServer试验解答
SQL语句修改字段类型 mysql中 alert table name modify column name type; 例子:修改user表中的name属性类型为varchar(50) alert ...
- [bzoj1145]图腾
如果将关系用一个数字来表示(相等表示不确定),那么题目相当于要计算$1324-1243-1432$=$(1323-1423)-(1233-1234)-(1322-1423)$=$1323+1234-( ...
- R语言矩阵相关性计算及其可视化?
目录 1. 矩阵相关性计算方法 base::cor/cor.test psych::corr.test Hmisc::rcorr 其他工具 2. 相关性矩阵转化为两两相关 3. 可视化 corrplo ...
- php5.6升级7
1. 检查当前安装的 PHP查看当前 PHP 版本 php -v查看当前 PHP 相关的安装包 yum list installed | grep php2. 更换 RPM 源#Centos 5.X: ...
- php header下载文件 无法查看原因
php header下载文件 无法查看原因 php header下载文件 下方函数可以下载单个文件 function download($file_url){ if(!isset($file_url) ...