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 经…

find_shape_model

*形状匹配 find_shape_model (ImageEmphasize, ModelID, -0.39, 0.78, 0.5, 1, 0.5, least_squares, [4,-2], 0.9, Row, Column, Angle, Score) *创建一个初始化矩阵 hom_mat2d_identity (HomMat2D) *从点和角度计算刚性仿射变换&#xff0c;找出模板和卡尺工具…

网页屏幕适配通透了

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

JavaScript 之 位运算

一、简介 ​ JavaScript的位运算符是将进行运算的数字&#xff08;八进制、十进制、十六进制等&#xff09;转换为32位的二进制串&#xff0c;超过 32 位的数字会丢弃其最高有效位&#xff0c;只保留后32位二进制串。然后再对每一位进行运算。但运算后得出的结果&#xff0c;会…

Python 元类 metaclass 详解

元类&#xff08;metaclass&#xff09;是 Python 中一个高级且相对较少使用的概念。元类可以被视为类的类&#xff0c;它控制类的创建过程。 一、基本概念 在 Python 中&#xff0c;一切皆对象。为了避免混淆&#xff0c;我们约定两个术语&#xff1a; 类实例&#xff1a;当…

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…

Referring Expression Comprehension(REC)任务介绍以及相关数据集

Referring Expression Comprehension&#xff08;REC&#xff09;&#xff0c;即指称表达理解&#xff0c;任务是根据文本描述框出文本中提到的一个特定目标相关数据集&#xff1a; 是三个从 MSCOCO 中选取图像得到的数据集&#xff0c;数据集中对所有的 phrase 都有 bbox 的标…

【html】Video元素的属性介绍和用法

简言 HTML <video> 元素 用于在 HTML 或者 XHTML 文档中嵌入媒体播放器&#xff0c;用于支持文档内的视频播放。 平常若涉及到视频内容&#xff0c;就会使用到它。 video Video使用 只有一个视频源 只有一个视频的话&#xff0c;在\video元素中的src属性填入即可。 …