el-table动态合并
废话就不多说了,直接上代码!!!
合并行
// 方法一
<template><div class="container"><el-table :data="dataSource" :border="true":header-cell-style="{ 'font-weight': 'normal', 'text-align': 'center' }":cell-style="{ 'text-align': 'center' }" size="mini" style="width: 100%" :span-method="arraySpanMethod"><el-table-column type="index" label="序号" width="100"></el-table-column><el-table-column prop="product_name" label="辅助"></el-table-column><el-table-column prop="cap_name" label="法师"></el-table-column><el-table-column prop="name" label="刺客"></el-table-column><el-table-column prop="name1" label="坦克"></el-table-column><el-table-column prop="name2" label="射手"></el-table-column></el-table></div>
</template>
<script>
export default {name: 'tableCom',data () {return {dataSource: [{product_name: '姜子牙',cap_name: '诸葛亮',name: '韩信',name1: '程咬金',name2: '狄仁杰'},{product_name: '蔡文姬',cap_name: '妲己',name: '孙悟空',name1: '廉颇',name2: '后裔'},{product_name: '蔡文姬',cap_name: '貂蝉',name: '橘右京',name1: '橘右京',name2: '孙尚香'},{product_name: '大桥',cap_name: '西施',name: '赵云',name1: '刘禅',name2: '刘禅'}]}},methods: {arraySpanMethod ({ row, column, rowIndex, columnIndex }) {// 合并行 产品名字相同合并if (columnIndex === 1) {if (rowIndex === 0 || row.product_name !== this.dataSource[rowIndex - 1].product_name) {let rowspan = 0this.dataSource.forEach(element => {if (element.product_name === row.product_name) {rowspan++}})return [rowspan, 1]} else {return [0, 0]}}}},created () {}
}
</script>
// 方法二
<template><div class="container"><el-table :data="tableData" :border="true":header-cell-style="{ 'font-weight': 'normal', 'text-align': 'center' }":cell-style="{ 'text-align': 'center' }" size="mini" style="width: 100%" :span-method="handleSpanMethod"><el-table-column type="index" label="序号" width="100"></el-table-column><el-table-column prop="product_name" label="辅助"></el-table-column><el-table-column prop="cap_name" label="法师"></el-table-column><el-table-column prop="name" label="刺客"></el-table-column><el-table-column prop="name1" label="坦克"></el-table-column><el-table-column prop="name2" label="射手"></el-table-column></el-table></div>
</template>
<script>
export default {name: 'tableCom',data () {return {tableData: [{product_name: '姜子牙',cap_name: '诸葛亮',name: '韩信',name1: '程咬金',name2: '狄仁杰'},{product_name: '蔡文姬',cap_name: '妲己',name: '孙悟空',name1: '廉颇',name2: '后裔'},{product_name: '蔡文姬',cap_name: '貂蝉',name: '橘右京',name1: '橘右京',name2: '孙尚香'},{product_name: '大桥',cap_name: '貂蝉',name: '赵云',name1: '刘禅',name2: '刘禅'}]}},methods: {handleSpanMethod ({ row, column, rowIndex }) {if (column.property === 'product_name' || column.property === 'cap_name') {// 获取当前行与上一行的属性值const currentProperty = row[column.property]const previousProperty = rowIndex > 0 ? this.tableData[rowIndex - 1][column.property] : null// 判断当前行与上一行的属性值是否相同if (currentProperty === previousProperty) {return {rowspan: 0, // 与上一行相同的属性值,设置跨行数为0,即不显示colspan: 1 // 不进行跨列}}// 查找后续行是否与当前行的属性值相同let rowspan = 1for (let i = rowIndex + 1; i < this.tableData.length; i++) {if (this.tableData[i][column.property] === currentProperty) {rowspan++} else {break}}return {rowspan: rowspan, // 跨行数为相同属性值的行数colspan: 1 // 不进行跨列}}}},created () {}
}
</script>
效果图:
合并列:
<template><div class="container"><el-table :data="dataSource" :border="true":header-cell-style="{ 'font-weight': 'normal', 'text-align': 'center' }":cell-style="{ 'text-align': 'center' }" size="mini" style="width: 100%" :span-method="arraySpanMethod"><el-table-column type="index" label="序号" width="100"></el-table-column><el-table-column prop="product_name" label="辅助"></el-table-column><el-table-column prop="cap_name" label="法师"></el-table-column><el-table-column prop="name" label="刺客"></el-table-column><el-table-column prop="name1" label="坦克"></el-table-column><el-table-column prop="name2" label="射手"></el-table-column></el-table></div>
</template>
<script>
export default {name: 'tableCom',data () {return {dataSource: [{product_name: '姜子牙',cap_name: '诸葛亮',name: '韩信',name1: '程咬金',name2: '狄仁杰'},{product_name: '蔡文姬',cap_name: '妲己',name: '孙悟空',name1: '廉颇',name2: '后裔'},{product_name: '蔡文姬',cap_name: '貂蝉',name: '橘右京',name1: '橘右京',name2: '孙尚香'},{product_name: '大桥',cap_name: '西施',name: '赵云',name1: '刘禅',name2: '刘禅'}]}},methods: {arraySpanMethod ({ row, column, rowIndex, columnIndex }) {// 合并列 名称值都为“橘右京”、“刘禅” 的合并if (columnIndex > 2) {let colspan = 0const colkeys = Object.keys(row)const currentindex = columnIndex - 1if (row[colkeys[currentindex]] === '橘右京' || row[colkeys[currentindex]] === '刘禅') {if (row[colkeys[currentindex - 1]] !== row[colkeys[currentindex]]) {for (let i = currentindex; i < colkeys.length; i++) {if (row[colkeys[i]] === '橘右京' || row[colkeys[i]] === '刘禅') {colspan++} else {break}}return [1, colspan]} else {return [0, 0]}}}}},created () {}
}
</script>
效果图:
相关文章:
el-table动态合并
废话就不多说了,直接上代码!!! 合并行 // 方法一 <template><div class"container"><el-table :data"dataSource" :border"true":header-cell-style"{ font-weight: normal,…...
【DevOps】产品需求文档(PRD)与常见原型软件
文章目录 1、PRD介绍1.1、概述1.2、前提条件1.3、主要目的1.4、关键内容1.5、表述方式1.6、需求评审人员1.7、一般内容结构 2、需求流程3、常见原型软件3.1、Word3.2、Axure3.2.1、详细介绍3.2.2、应用分类3.2.3、优缺点 3.3、摹客RP3.4、蓝湖3.5、GUI Design Studio 1、PRD介绍…...
【QT+QGIS跨平台编译】之十八:【Expat+Qt跨平台编译】(一套代码、一套框架,跨平台编译)
文章目录 一、Expat介绍二、文件下载三、文件分析四、pro文件五、编译实践一、Expat介绍 Expat库最初由James Clark创建,已经成为许多编程语言中常用的XML解析工具。它以其简单、快速和可靠的特点而受到广泛的认可和使用。 Expat库的优点包括: 快速:Expat的解析速度非常快…...
20240203
1.项目经理正在为新项目制订进度计划,项目的成功取决于使用需要政府颁发特殊环境许可证的设备,在网络图的设计过程中,项目经理应该做什么以确保正确的活动排序? A.使用滚动式规划考虑项目不确定性 B.分析外部依赖关系,…...
【Spark实践6】特征转换FeatureTransformers实践Scala版--补充算子
本节介绍了用于处理特征的算法,大致可以分为以下几组: 提取(Extraction):从“原始”数据中提取特征。转换(Transformation):缩放、转换或修改特征。选择(Selection&…...
【知识点】设计模式
创建型 单例模式 Singleton:确保一个类只有一个实例,并提供该实例的全局访问点 使用一个私有构造方法、一个私有静态变量以及一个公有静态方法来实现。私有构造方法确保了不能通过构造方法来创建对象实例,只能通过公有静态方法返回唯一的私…...
WPS WORD 宏导出高亮文本
WPS手机版可以直接导出高亮文本,但只能导出手机编辑的部分,如果同时在电脑上编辑过,电脑上高亮的无法导出,因为作者不一样。 但WPS电脑版没有这个功能,只能通过宏编程实现。 这里利用了审阅模式,在文字高亮…...
python 基础知识点(蓝桥杯python科目个人复习计划32)
今日复习内容:基础算法中的位运算 1.简介 位运算就是对二进制进行操作的运算方式,分为与运算,或运算,异或运算,取反,左移和右移。 (1)与运算 xyx&y000010100111 (2)或运算 …...
(算法二)滑动窗口
滑动窗口:既一块区域进行滑动,且不回退 往往解决的是一段连续空间中满足条件的最长或者最短子数组(串) 是由暴力解法(优化)——>不回退的滑动窗口解法 长度最小的子数组 无重复字符的最长子数组 此类题…...
【Go语言成长之路】Hello Go
文章目录 Hello Go一、建立工程目录二、开启代码追踪三、编写代码四、测试代码 Hello Go 一、建立工程目录 pzspzs-ubuntu22:~$ mkdir go_study/hello -p pzspzs-ubuntu22:~$ cd go_study/hello 在hello目录下,我们会编写属于自己的第一个Go demo例子࿰…...
大数据应用开发3-Scala笔记1
一、编程框架 Scala语言是在JVM上运行的,兼容Java语法 区分大小写 - Scala是大小写敏感的,这意味着标识Hello 和 hello在Scala中会有不同的含义。 类名 - 对于所有的类名的第一个字母要大写。 如果需要使用几个单词来构成一个类的名称,每个…...
android 网络拦截器统一处理请求参数和返回值加解密实现
前言 项目中遇到参数加密和返回结果加密的业务 这里写一下实现 一来加深记忆 二来为以后参考铺垫 需求 项目在开发中涉及到 登陆 发验证码 认证 等前期准备接口 这些接口需要单独处理 比如不加密 或者有其他的业务需求 剩下的是登陆成功以后的业务需求接口 针对入参和返回值…...
Jmeter直连mysql数据库教程
mysql数据库能够通过Navicat等远程连接工具连接 下载驱动并加入jmeter 1.mysql驱动下载地址:MySQL :: Download MySQL Connector/J (Archived Versions) 找到对应的驱动下载:如下图: 把驱动jar包加入jmeter 配置jmeter连接mysql数据库…...
2024美赛数学建模B题思路分析 - 搜索潜水器
1 赛题 问题B:搜索潜水器 总部位于希腊的小型海上巡航潜艇(MCMS)公司,制造能够将人类运送到海洋最深处的潜水器。潜水器被移动到该位置,并不受主船的束缚。MCMS现在希望用他们的潜水器带游客在爱奥尼亚海底探险&…...
Tomcat在Java web的应用
Tomcat在Java web的应用 本来这篇博客顺应之前的内容,应该是需要写Tomcat的简介、基本使用、配置和部署项目、Web的项目结构、创建MavenWeb、idea本地集成以及Tomcat的Maven插件的笔记内容,但是总觉得没必要,因为这些内容网上肯定很多了&…...
Python爬虫某云免费音乐——多线程批量下载
重点一:每首音乐的下载地址 重点二:如何判断是免费音乐 重点三:如何用线程下载并保存 重点四:如何规避运行错误导致子线程死掉 重点五:如何管理子线程合理运行 需要全部代码的私信或者VX:Kmwcx1109 运行效果&…...
Python实现TCP和UDP通信
目录 一:TCP 二:UDP 一:TCP 在Python中实现TCP通信可以通过使用内置的socket模块来完成。以下是一个简单的示例,展示了如何使用Python的socket模块创建一个TCP客户端和服务器。 TCP服务器 import socket def start_server(): s…...
用HTML5 + JavaScript实现下雪效果
用HTML5 JavaScript实现下雪效果 下面是用HTML5 JavaScript实现下雪效果示例,展示了如何使用 HTML5 的 <canvas> 元素以及 JavaScript 来创建下雪效果。效果如下: 源码如下: <!DOCTYPE html> <html lang"en">…...
PDF操作——批量删除末页
一、说明 由于PDF末页为空白页或者是免责声明需要删除,涉及的文件比较多,因此写了一小段代码进行处理。 二、完整架构流程 这个代码的整体架构流程可以分为以下几个步骤: 导入所需的库:首先,代码导入了PyPDF2和os两…...
Jasperreport 生成 PDF之省纸模式
省纸模式顾名思义就是节省纸张,使用 Jasper 去生成 PDF 的时候如果进行分组打印的时候,一页 A4 纸只会打印一组数据。这种情况下,如果每组数据特别少,只有几行,一页 A4 纸张根本用不了,就会另起一页继续打印…...
利用最小二乘法找圆心和半径
#include <iostream> #include <vector> #include <cmath> #include <Eigen/Dense> // 需安装Eigen库用于矩阵运算 // 定义点结构 struct Point { double x, y; Point(double x_, double y_) : x(x_), y(y_) {} }; // 最小二乘法求圆心和半径 …...
React Native 导航系统实战(React Navigation)
导航系统实战(React Navigation) React Navigation 是 React Native 应用中最常用的导航库之一,它提供了多种导航模式,如堆栈导航(Stack Navigator)、标签导航(Tab Navigator)和抽屉…...
k8s从入门到放弃之Ingress七层负载
k8s从入门到放弃之Ingress七层负载 在Kubernetes(简称K8s)中,Ingress是一个API对象,它允许你定义如何从集群外部访问集群内部的服务。Ingress可以提供负载均衡、SSL终结和基于名称的虚拟主机等功能。通过Ingress,你可…...
ssc377d修改flash分区大小
1、flash的分区默认分配16M、 / # df -h Filesystem Size Used Available Use% Mounted on /dev/root 1.9M 1.9M 0 100% / /dev/mtdblock4 3.0M...
抖音增长新引擎:品融电商,一站式全案代运营领跑者
抖音增长新引擎:品融电商,一站式全案代运营领跑者 在抖音这个日活超7亿的流量汪洋中,品牌如何破浪前行?自建团队成本高、效果难控;碎片化运营又难成合力——这正是许多企业面临的增长困局。品融电商以「抖音全案代运营…...
Vue2 第一节_Vue2上手_插值表达式{{}}_访问数据和修改数据_Vue开发者工具
文章目录 1.Vue2上手-如何创建一个Vue实例,进行初始化渲染2. 插值表达式{{}}3. 访问数据和修改数据4. vue响应式5. Vue开发者工具--方便调试 1.Vue2上手-如何创建一个Vue实例,进行初始化渲染 准备容器引包创建Vue实例 new Vue()指定配置项 ->渲染数据 准备一个容器,例如: …...
P3 QT项目----记事本(3.8)
3.8 记事本项目总结 项目源码 1.main.cpp #include "widget.h" #include <QApplication> int main(int argc, char *argv[]) {QApplication a(argc, argv);Widget w;w.show();return a.exec(); } 2.widget.cpp #include "widget.h" #include &q…...
MODBUS TCP转CANopen 技术赋能高效协同作业
在现代工业自动化领域,MODBUS TCP和CANopen两种通讯协议因其稳定性和高效性被广泛应用于各种设备和系统中。而随着科技的不断进步,这两种通讯协议也正在被逐步融合,形成了一种新型的通讯方式——开疆智能MODBUS TCP转CANopen网关KJ-TCPC-CANP…...
Python爬虫(一):爬虫伪装
一、网站防爬机制概述 在当今互联网环境中,具有一定规模或盈利性质的网站几乎都实施了各种防爬措施。这些措施主要分为两大类: 身份验证机制:直接将未经授权的爬虫阻挡在外反爬技术体系:通过各种技术手段增加爬虫获取数据的难度…...
ArcGIS Pro制作水平横向图例+多级标注
今天介绍下载ArcGIS Pro中如何设置水平横向图例。 之前我们介绍了ArcGIS的横向图例制作:ArcGIS横向、多列图例、顺序重排、符号居中、批量更改图例符号等等(ArcGIS出图图例8大技巧),那这次我们看看ArcGIS Pro如何更加快捷的操作。…...

