element + table 每两行对比相同值列合并

在这里插入图片描述
在开始之前先要明确几个概念:
保持不变:{ rowspan: 1, colspan: 1 }
删除一个单元格:{ rowspan: 0, colspan: 0 }
合并一个单元格:{ rowspan: 2, colspan: 1 }

<template><div><el-table:data="tableData":span-method="mergeSpanMethod"border:header-cell-style="{ textAlign: 'center', backgroundColor: '#F5F7FA' }"><el-table-column prop="School" label="学校" align="center" /><el-table-column prop="Chinese" label="语文" align="center" /><el-table-column prop="Math" label="数学" align="center" /><el-table-column prop="English" label="英语" align="center" /></el-table></div>
</template>
<script>
export default {name: 'HelloWorld',data() {return {tableData: [{School: "第1小学",Chinese: "180",Math: 0,English: "180"},{School: "第1小学",Chinese: 0,Math: 0,English: "180"},{School: "第2小学",Chinese: "290",Math: "200",English: "180"},{School: "第2小学",Chinese: "295",Math: "200",English: "280"},{School: "第3小学",Chinese: "398",Math: "385",English: "380"},{School: "第3小学",Grade: "2年级",Chinese: "398",Math: "100",English: "80"},{School: "第4小学",Grade: "3年级",Chinese: "91",Math: 0,English: "80"},{School: "第4小学",Grade: "3年级",Chinese: "91",Math: 0,English: "87"},{School: "第5小学",Grade: "3年级",Chinese: "79",Math: 0,English: "80"}],};},props: {msg: String},mounted() {},methods: {mergeSpanMethod({ row, column, rowIndex, columnIndex }) {// 如果某些列不需要合并, 在此排除if (columnIndex === 1) return {rowspan: 1, colspan: 1};// 两两对比 相同的列合并const num = 2;const times = Math.ceil(this.tableData.length / num);for (let k = 0 ; k < times; k++) {const one = k * num;const two = k * num + 1;if (rowIndex === one || rowIndex === two) {const currentValue = row[column.property];const arr = [this.tableData[one], this.tableData[two]];// 获取上一行相同列的值const preRow = arr[rowIndex - 1 - (k * num)];const preValue = preRow ? preRow[column.property] : null;// 如果当前值和上一行的值相同,则将当前单元格隐藏if (currentValue === preValue) {return { rowspan: 0, colspan: 0 };} else {let rowspan = 1;for (let i = (rowIndex - (k * num)) + 1; i < arr.length; i++) {const nextRow = arr[i];const nextValue = nextRow ? nextRow[column.property] : null;if (nextValue === currentValue) {rowspan++;} else {break;}}return { rowspan, colspan: 1 };}}}return {rowspan: 1, colspan: 1};// 这下面是在解题时的思路,也是一步步的慢慢推导出来的// 先写死数据一组组的对比,再从中找共性,如果上面看不懂,可以把上面注释,解开下面 就明白了// if (rowIndex === 0 || rowIndex === 1) {//   const currentValue = row[column.property];//   const arr = [this.tableData[0], this.tableData[1]];//   // 获取上一行相同列的值//   const preRow = arr[rowIndex - 1];//   const preValue = preRow ? preRow[column.property] : null;////   // 如果当前值和上一行的值相同,则将当前单元格隐藏//   if (currentValue === preValue) {//     return { rowspan: 0, colspan: 0 };//   } else {//     let rowspan = 1;//     for (let i = rowIndex + 1; i < arr.length; i++) {//       const nextRow = arr[i];//       const nextValue = nextRow[column.property];//       if (nextValue === currentValue) {//         rowspan++;//       } else {//         break;//       }//     }//     return { rowspan, colspan: 1 };//   }// }// if (rowIndex === 2 || rowIndex === 3) {//   const currentValue = row[column.property];//   const arr = [this.tableData[2], this.tableData[3]];////   const preRow = arr[rowIndex - 1 - 2];//   const preValue = preRow ? preRow[column.property] : null;////   // 如果当前值和上一行的值相同,则将当前单元格隐藏//   if (currentValue === preValue) {//     return { rowspan: 0, colspan: 0 };//   } else {//     let rowspan = 1;//     for (let i = (rowIndex - 2) + 1; i < arr.length; i++) {//       const nextRow = arr[i];//       const nextValue = nextRow[column.property];//       if (nextValue === currentValue) {//         rowspan++;//       }//     }//     return { rowspan, colspan: 1 };//   }// }// if (rowIndex === 4 || rowIndex === 5) {//   const currentValue = row[column.property];//   const arr = [this.tableData[4], this.tableData[5]];////   const preRow = arr[rowIndex - 1 - 4];//   const preValue = preRow ? preRow[column.property] : null;////   // 如果当前值和上一行的值相同,则将当前单元格隐藏//   if (currentValue === preValue) {//     return { rowspan: 0, colspan: 0 };//   } else {//     let rowspan = 1;//     for (let i = (rowIndex - 4) + 1; i < arr.length; i++) {//       const nextRow = arr[i];//       const nextValue = nextRow[column.property];//       if (nextValue === currentValue) {//         rowspan++;//       }//     }//     return { rowspan, colspan: 1 };//   }// }// console.log('rowIndex', rowIndex);// return {rowspan: 1, colspan: 1}}}
}
</script>

如果需要所有的列都对比合并单元格可以看下面的文章
element + table 行列合并

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/624542.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Appium 自动化测试

1.Appium介绍 1&#xff0c;appium是开源的移动端自动化测试框架&#xff1b; 2&#xff0c;appium可以测试原生的、混合的、以及移动端的web项目&#xff1b; 3&#xff0c;appium可以测试ios&#xff0c;android应用&#xff08;当然了&#xff0c;还有firefoxos&#xff09;…

web自动化实现登录的几种方式

目录 前言 一、pythonunittest框架实现登录功能 二、pythonselenium实现登录功能 三、pythonrequests库实现登录功能 前言 今天主要想介绍python语言不同的自动化测试框架的结合方式来模拟登录功能。想了解自动化测试框架的同学不要错过哦&#xff01; 一、pythonunittest框…

Windows 下 QT开发环境的搭建:

下载QT:Index of /archive/qt/5.14 下载Cmake :CMake - Upgrade Your Software Build System (1)QT在windows,C, 打包exe&#xff1a; step1:window上安装QT软件&#xff1a; Windows下的QT系统开发环境搭建_qt windows-CSDN博客. step2:新建一个界面工程&#xff1a; (1)打…

【css】渐变效果

css渐变效果 使用 CSS 渐变可以在两种颜色间制造出平滑的渐变效果。 用它代替图片&#xff0c;可以加快页面的载入时间、减小带宽占用。同时&#xff0c;因为渐变是由浏览器直接生成的&#xff0c;它在页面缩放时的效果比图片更好&#xff0c;因此你可以更加灵活、便捷的调整页…

postgresql16 物理复制与逻辑复制的实现和对比

本文面向想要练习 PostgreSQL 中数据库复制基础知识但可能无法访问远程服务器的初学者。我认为学习新技术时&#xff0c;在自己的机器上运行示例以巩固概念是至关重要的。对于副本来说&#xff0c;这可能很困难&#xff0c;因为许多可用的资源假设用户具有一定的 PostgreSQL 经…

网页屏幕适配通透了

一&#xff0c;如果设计尺寸固定 那就按照固定尺寸开发 一般都是1920*1080 二&#xff0c;需要适配多种像素屏幕&#xff08;大屏可视化&#xff09; 可使用媒体查询设置多套css样式或者使用自适应单位&#xff0c;%&#xff0c;vw&#xff0c;vh 最好解决方案rem&#xff…

IPv6路由综合运用

一、基础配置: SWA: sw1(config)#host swA swA(config)#ipv6 ena swA(config)# vlan 100 swA(config-vlan100)#int vlan 100 swA(config-if-vlan100)#ipv6 ena swA(config-vlan100)#ip add 172.16.1.1 255.255.255.252 swA(config-if-vlan100)#int e1/0/24 swA(conf…

教育科学杂志教育科学杂志社教育科学编辑部2023年第12期部分目录

“思政教育联合思维导图”教学模式在肝病感染控制护理临床教学中的应用 黄雪霞;陈海涵;蒋雅文 中职语文教学中厚植爱国主义情怀的要点分析 苏琴 职业素养视角下中职计算机专业课程教学改革实践 李石 产教融合背景下高职院校产业学院建设模式的实践探索 郭洋 《工程制图与CAD》课…

数据结构学习 jz31 栈的压入、弹出序列

关键词&#xff1a;模拟 栈 不太熟&#xff0c;调了好一阵子。 题目&#xff1a;https://leetcode.cn/problems/zhan-de-ya-ru-dan-chu-xu-lie-lcof/ 思路&#xff1a; 主要是利用一个辅助栈&#xff0c;来模拟这个过程&#xff0c;如果过程不行就返回失败。 int sig 0;如…

Java研学-分页查询

一 分页概述 1 介绍 将大量数据分段显示&#xff0c;避免一次性加载造成的内存溢出风险 2 真假分页 ① 真分页   一次性查询出所有数据存到内存&#xff0c;翻页从内存中获取数据&#xff0c;性能高但易造成内存溢出 ② 假分页   每次翻页从数据库中查询数据&#xff0c…

解决计算机中vcruntime140.dll错误!六种方法教你修复

什么是vcruntime140.dll文件呢&#xff1f;为什么会出现丢失的情况&#xff1f;如何解决这个问题呢&#xff1f;本文将为您详细介绍vcruntime140.dll文件的作用、丢失原因以及6个快速解决方法。 一、vcruntime140.dll是什么文件&#xff1f; vcruntime140.dll是Visual C Redi…

聚合收益协议 InsFi :打开铭文赛道全新叙事的旋转门

​“InsFi 协议构建了一套以铭文资产为基础的聚合收益体系&#xff0c;该体系正在为铭文资产捕获流动性、释放价值提供基础&#xff0c;该生态也正在成为铭文赛道掘金的新热土。” 在 2023 年年初&#xff0c;Ordinals 协议在比特币链上被推出后&#xff0c;为比特币链上带来了…

STC51+TLC2543+ADXL335+proteus

51单片机解析adxl335振动检测蜂鸣器报警课设 通过按键调整振动检测阈值 传感器介绍 TLC2543&#xff1a;12 位精密模数转换器&#xff0c;原理图与引脚功能描述如下所示&#xff1a; 引脚功能1~9、11、12模拟量输入通道10GND电源地13REF-为负基准电压端14REF为正基准电压端…

基于ssm的课程在线教学平台设计与实现论文

摘 要 如今社会上各行各业&#xff0c;都喜欢用自己行业的专属软件工作&#xff0c;互联网发展到这个时候&#xff0c;人们已经发现离不开了互联网。新技术的产生&#xff0c;往往能解决一些老技术的弊端问题。因为传统Java课程教学信息管理难度大&#xff0c;容错率低&#x…

数据资产入表背后:中国To B数字化驶入“数据时代”

数据资产“入表”&#xff0c;更像是一剂通过颠覆旧的生产关系&#xff0c;从根上医治数字化转型的“良方”。 那么&#xff0c;数据资产到底是什么&#xff1f;以及在愈发被规范的数据市场大背景下&#xff0c;对中国的To B企业和To B服务商而言&#xff0c;正在或者即将发生…

【记忆化搜索】

欢迎来到Cefler的博客&#x1f601; &#x1f54c;博客主页&#xff1a;那个传说中的man的主页 &#x1f3e0;个人专栏&#xff1a;题目解析 &#x1f30e;推荐文章&#xff1a;【LeetCode】winter vacation training 前言 记忆化搜索是一种优化搜索算法的方法&#xff0c;它可…

基于JavaWeb+BS架构+SpringBoot+Vue基于hive旅游数据的分析与应用系统的设计和实现

基于JavaWebBS架构SpringBootVue基于hive旅游数据的分析与应用系统的设计和实现 文末获取源码Lun文目录前言主要技术系统设计功能截图订阅经典源码专栏Java项目精品实战案例《500套》 源码获取 文末获取源码 Lun文目录 1 概 述 5 1.1 研究背景 5 1.2 研究意义 5 1.3 研究内容…

Java实现二维码、条形码生成器

文章目录 前言 在数字化时代&#xff0c;二维码已经成为了信息交流的一种常见方式。它们被广泛用于各种应用&#xff0c;从产品标签到活动传单&#xff0c;以及电子支付。本文将向您展示如何在Spring Boot应用程序中整合ZXing库&#xff0c;以创建和解析QR码。无论您是想为您的…

常用文件文档能做二维码吗?多种文件在线做二维码的方法

二维码是现在工作和生活中随处可见&#xff0c;可以用来展现很多不同的内容。现在很多下发通知的文件、教程或者其他文件内容&#xff0c;也会制作成二维码图片后&#xff0c;让其他人通过扫码来获取文件内容。最简单的制作方法就是通过二维码生成器来制作&#xff0c;支持多种…