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 纸张根本用不了,就会另起一页继续打印…...
未来机器人的大脑:如何用神经网络模拟器实现更智能的决策?
编辑:陈萍萍的公主一点人工一点智能 未来机器人的大脑:如何用神经网络模拟器实现更智能的决策?RWM通过双自回归机制有效解决了复合误差、部分可观测性和随机动力学等关键挑战,在不依赖领域特定归纳偏见的条件下实现了卓越的预测准…...
模型参数、模型存储精度、参数与显存
模型参数量衡量单位 M:百万(Million) B:十亿(Billion) 1 B 1000 M 1B 1000M 1B1000M 参数存储精度 模型参数是固定的,但是一个参数所表示多少字节不一定,需要看这个参数以什么…...
理解 MCP 工作流:使用 Ollama 和 LangChain 构建本地 MCP 客户端
🌟 什么是 MCP? 模型控制协议 (MCP) 是一种创新的协议,旨在无缝连接 AI 模型与应用程序。 MCP 是一个开源协议,它标准化了我们的 LLM 应用程序连接所需工具和数据源并与之协作的方式。 可以把它想象成你的 AI 模型 和想要使用它…...
视频字幕质量评估的大规模细粒度基准
大家读完觉得有帮助记得关注和点赞!!! 摘要 视频字幕在文本到视频生成任务中起着至关重要的作用,因为它们的质量直接影响所生成视频的语义连贯性和视觉保真度。尽管大型视觉-语言模型(VLMs)在字幕生成方面…...
ETLCloud可能遇到的问题有哪些?常见坑位解析
数据集成平台ETLCloud,主要用于支持数据的抽取(Extract)、转换(Transform)和加载(Load)过程。提供了一个简洁直观的界面,以便用户可以在不同的数据源之间轻松地进行数据迁移和转换。…...
ElasticSearch搜索引擎之倒排索引及其底层算法
文章目录 一、搜索引擎1、什么是搜索引擎?2、搜索引擎的分类3、常用的搜索引擎4、搜索引擎的特点二、倒排索引1、简介2、为什么倒排索引不用B+树1.创建时间长,文件大。2.其次,树深,IO次数可怕。3.索引可能会失效。4.精准度差。三. 倒排索引四、算法1、Term Index的算法2、 …...
【Zephyr 系列 10】实战项目:打造一个蓝牙传感器终端 + 网关系统(完整架构与全栈实现)
🧠关键词:Zephyr、BLE、终端、网关、广播、连接、传感器、数据采集、低功耗、系统集成 📌目标读者:希望基于 Zephyr 构建 BLE 系统架构、实现终端与网关协作、具备产品交付能力的开发者 📊篇幅字数:约 5200 字 ✨ 项目总览 在物联网实际项目中,**“终端 + 网关”**是…...
拉力测试cuda pytorch 把 4070显卡拉满
import torch import timedef stress_test_gpu(matrix_size16384, duration300):"""对GPU进行压力测试,通过持续的矩阵乘法来最大化GPU利用率参数:matrix_size: 矩阵维度大小,增大可提高计算复杂度duration: 测试持续时间(秒&…...
IoT/HCIP实验-3/LiteOS操作系统内核实验(任务、内存、信号量、CMSIS..)
文章目录 概述HelloWorld 工程C/C配置编译器主配置Makefile脚本烧录器主配置运行结果程序调用栈 任务管理实验实验结果osal 系统适配层osal_task_create 其他实验实验源码内存管理实验互斥锁实验信号量实验 CMISIS接口实验还是得JlINKCMSIS 简介LiteOS->CMSIS任务间消息交互…...
视觉slam十四讲实践部分记录——ch2、ch3
ch2 一、使用g++编译.cpp为可执行文件并运行(P30) g++ helloSLAM.cpp ./a.out运行 二、使用cmake编译 mkdir build cd build cmake .. makeCMakeCache.txt 文件仍然指向旧的目录。这表明在源代码目录中可能还存在旧的 CMakeCache.txt 文件,或者在构建过程中仍然引用了旧的路…...

