element -table,多行或列合并

  • 需求:后端返回的表格数据,如果某列值一样,前端表格样式需要合并他们,需要合并的列的行数未知(所以需要有数据后遍历后端数据对需要合并的属性进行计数)即动态遍历表格合并

  • 效果
    -在这里插入图片描述

  • 重点方法;table自带的:span-method="objectSpanMethod"方法

  • 代码环境:vue2 ,element

  • 代码

    // tempalte 里
    <el-table
          :data="tableData"
          style="width: 100%"
          :span-method="objectSpanMethod"
        >
    	  <el-table-column prop="Name" label="名称" align="center"></el-table-column>  
          <el-table-column prop="Level" label="等级" align="center" ></el-table-column>  
    	  <el-table-column prop="currenttime" label="时间" align="center" ></el-table-column>  
    </el-table>
    
    // script
    data(){
    	return{
    		tableData:[
    		{
              Name: 'AAA',
              Level: '1',
              currenttime: '2024-1-29',
            },
            {
              Name: 'AAA',
              Level: '2',
              currenttime: '2024-1-29',
            },
           {
              Name: 'AAA',
              Level: '2',
              currenttime: '2024-1-29',
            },
            {
              Name: 'CCC',
              Level: '2',
              currenttime: '2024-1-29',
            },
          ],
    
    	}
    },
    
    method:{
     // 表格合并列
        objectSpanMethod({ row, column, rowIndex, columnIndex }){
          // 判断第一列的行合并
          if (columnIndex === 0 ) {
              const _row = this.getSpanArr(this.tableData,'Name')[rowIndex];
              const _col = _row > 0 ? 1 : 0;
              return {
                  rowspan: _row,
                  colspan: _col
              }
          }
    
          // 判断第二列的行合并
          if (columnIndex === 1 ) {
              const _row = this.getSpanArr(this.tableData,'Level','Name')[rowIndex];
              const _col = _row > 0 ? 1 : 0;
              return {
                  rowspan: _row,
                  colspan: _col
              }
          }
    
        },
        // 计算合并行数
        getSpanArr(data,key,faKey) {
          /**
           * data 表身数据
           * key当前需要合并的属性名称
           * faKey :如果有多列属性需要行合并,此时需要判断第二个属性需不需再第一个属性相同的条件下才合并,不需要就不用传,需要就穿第一个属性名
           * 
           */
           
          // 遍历数据
          let spanArr=[]
          let pos = 0
          for (let i = 0; i < data.length; i++) {
              // 如果是第一个数据,就将列表spanArr添加一个1,表示暂时只有一个名字相同的、且将索引pos赋值为0
              if (i === 0) {
                  spanArr.push(1);
                  pos = 0
              } else {
                  // 判断当前元素与上一个元素是否相同(且只有同faKey 下的第二列才能合并,不同faKey 下的第二列重新计数,如果不需要这样判断,就去除&&后面的判断)
                 
                  if (data[i][key] === data[i - 1][key] && data[i][faKey] === data[i - 1][faKey] ) {
                      // 如果相同就将索引为 pos 的值加一
                      spanArr[pos] += 1;
                      // 且将数组添加 0 
                      spanArr.push(0);
                  } else {
                      // 如果元素不同了,就可以通过索引为 pos 的值知晓应该需要合并的行数
                      // 同时,我们再次添加一个值1,表示重新开始判断重复姓名的次数
                      spanArr.push(1);
                      // 同时 索引加一
                      pos = i;
                  }
              }
          }
          console.log("索引数组:")
          console.log(spanArr,key)
          return spanArr
        },
    
    }
    

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

《金融电子化》昆仑银行在应用性能监控(APM)平台的实践与探索

《金融电子化》昆仑银行在应用性能监控&#xff08;APM&#xff09;平台的实践与探索 中国人民银行印发的《金融科技发展规划&#xff08;2022-2025年&#xff09;》是对金融科技发展的重要引领。规划强调了金融科技在推动金融行业现代化转型、提升金融服务效率和风险防控水平…

【LeetCode: 25. K 个一组翻转链表 + 链表 + 递归】

&#x1f680; 算法题 &#x1f680; &#x1f332; 算法刷题专栏 | 面试必备算法 | 面试高频算法 &#x1f340; &#x1f332; 越难的东西,越要努力坚持&#xff0c;因为它具有很高的价值&#xff0c;算法就是这样✨ &#x1f332; 作者简介&#xff1a;硕风和炜&#xff0c;…

大数据学习之Redis,十大数据类型的具体应用(三)

目录 3.7 Redis位图&#xff08;bitmap&#xff09; 概念 需求 是什么 说明 能干嘛? 基本命令 3.7 Redis位图&#xff08;bitmap&#xff09; 概念 由0和1状态表现的二进制位的bit数组 需求 用户是否登陆过&#xff1f;Y / N 广告是否被点击过&#xff1f; 钉钉打…

Swift Vapor 教程(项目创建)

The future of web development. 在初次接触 Swift Vapor 时&#xff0c;感觉代码比较清爽&#xff0c;用起来逻辑比较清晰。 困难点&#xff1a; Swift Vapor 使用了JWT管理三方库&#xff0c;比较吃网络Swift Vapor 搭建环境比较复杂初次使用Swift Vapor 尽量不要使用MySql。…

关于 IntelliJ IDEA 中 Schedule for Addition 的问题

IntelliJ IDEA是一款强大的Java集成开发环境&#xff0c;由JetBrAIns公司开发。它以其智能代码编辑、代码分析工具、自动代码补全、强大的调试功能和内建的版本控制等特性而闻名。此外&#xff0c;它还支持Kotlin、Groovy、Scala和Android开发等多种语言和框架。 IntelliJ IDE…

Django模型(五)

一、数据的条件查询 参考文档:QuerySet API 参考 | Django 文档 | Django 1.1、常用检索字段 字段检索,是在字段名后加 __ 双下划线,再加关键字,类似 SQL 语句中的 where 后面的部分, 如: 字段名__关键字 exact :判断是否等于value,一般不使用,而直接使用 =contai…

【QT】坐标系统和坐标变换

目录 1 坐标变换函数 1.1 坐标平移 1.2 坐标旋转 1.3 缩放 1.4 状态保存与恢复 2 坐标变换绘图实例 2.1 绘制3个五角星的程序 2.2 绘制五角星的PainterPath的定义 3 视口和窗口 3.1 视口和窗口的定义与原理 3.2 视口和窗口的使用实例 4 绘图叠加的效果 1 坐标变换函数 QPainter…

高通GAIA V3命令参考手册的研读学习(十三):GAIA通知

如前文《高通GAIA V3命令参考手册的研读学习&#xff08;四&#xff09;》所述&#xff0c;PDU一共有四种&#xff0c;前面已经讲了命令、回应以及错误码&#xff0c;现在来看最后一种&#xff1a;通知。 4. QTIL GAIA通知 通知发送的方向&#xff0c;是由设备发送到移动应用…

CI/CD 管道安全:构建和部署之外的最佳实践

鉴于对快速创新和敏捷方法论采用的需求&#xff0c;持续集成/持续部署 (CI/CD) 管道已成为构建所有 DevOps 流程的基础。他们是高效交付的支柱。 事实上&#xff0c;根据持续交付状态报告&#xff0c;使用 CI/CD 工具与所有指标上更好的软件交付性能相关。 这些管道给组织带…

java代码中调用自定义函数

定义函数 CREATE DEFINERrootlocalhost FUNCTION test_fun1(num1 FLOAT,num2 FLOAT) RETURNS float BEGINDECLARE SUM FLOAT DEFAULT 0;SET SUMnum1num2;RETURN SUM; END <select id"cunchu" resultType"java.util.Map">SELECT test_fun1(1,2) as r…

MySQL索引原理以及SQL优化

案例 struct index_failure_t{int id;string name;int cid;int score;string phonenumber;}Map<int,index_failure>; 熟悉C的同学知道&#xff0c;上述案例中&#xff0c;我们map底层是一颗红黑树&#xff0c;一个节点存储了一对kv&#xff08;键值对&#xff09;&…

WPF应用程序(.Net Framework 4.8) 国际化

1、新建两个资源字典文件zh-CN.xaml和en-US.xaml&#xff0c;分别存储中文模板和英文模板 (1) zh-CN.xaml <ResourceDictionary xmlns"http://schemas.microsoft.com/winfx/2006/xaml/presentation"xmlns:x"http://schemas.microsoft.com/winfx/2006/xaml&q…

机器学习:Logistic回归(Python)

Logistic回归&#xff08;二分类&#xff09; logistic_regression_class2.py import numpy as np import matplotlib.pyplot as pltclass LogisticRegression:"""逻辑回归&#xff0c;采用梯度下降算法 正则化&#xff0c;交叉熵损失函数&#xff0c;实现二分…

机器学习 强化学习 深度学习的区别与联系

机器学习 强化学习 深度学习 机器学习 按道理来说&#xff0c; 这个领域&#xff08;机器学习&#xff09;应该叫做 统计学习 &#xff08;Statistical Learning&#xff09;&#xff0c;因为它的方法都是由概率统计领域拿来的。这些人中的领军人物很有商业头脑&#xff0c; 把…

[docker] 利用Dockerfile多级构建缩减镜像大小

一、nginx FROM centos:7 as build #基于centos7镜像 MAINTAINER nginx on centos7 by lxy-20240125 #注释信息 ADD nginx-1.24.0.tar.gz /opt/ #将nginx安装包传输到镜像中 RUN yum -y install pcre-devel zlib-devel gcc gcc-c make && \cd /opt/nginx-1.24.0 &…

什么是DDOS流量攻击,DDoS防护安全方案

随着互联网的发展普及&#xff0c;云计算成新趋势&#xff0c;人们对生活方式逐渐发生改变的同时&#xff0c;随之而来的网络安全威胁也日益严重&#xff01; 目前在网络安全方面&#xff0c;网络攻击是最主要的威胁之一&#xff0c;其中DDoS攻击是目前最为常见的网络攻击手段…

Android studio打包apk比较大

1.遇到的问题 在集成linphone打包时发现有118m&#xff0c;为什么如此之大额。用studio打开后发现都是c不同的pu架构。 2.解决办法 增加ndk配置&#xff0c;不选配置那么多的cpu结构&#xff0c;根据自己需要调整。 defaultConfig { applicationId "com.matt.linphoneca…

2023美赛A题之Lotka-Volterra【完整思路+代码】

这是2023年的成功&#xff0c;考虑到曾经付费用户的负责&#xff0c;2024年可以发出来了。去年我辅导队伍数量&#xff1a;15&#xff0c;获奖M为主&#xff0c;个别F&#xff0c;H&#xff0c;零S。言归正传&#xff0c;这里我开始分享去年的方案。由于时间久远&#xff0c;我…

FPGA——芯片手册学习(AD7606)

芯片手册学习&#xff08;AD7606&#xff09; 芯片封装图引脚功能图总结要操作的端口芯片时序 芯片封装图 引脚功能图 总结要操作的端口 6 PAR/SER/BYTE/ SEL :并行、串行、字节选择&#xff0c;我们使用并行&#xff0c;设置为0 7 STBY:睡眠控制&#xff0c;0电平睡眠 9 10 C…

8-小程序数据promise化、共享、分包、自定义tabbar

小程序API Promise化 wx.requet 官网入口 默认情况下&#xff0c;小程序官方异步API都是基于回调函数实现的 wx.request({method: , url: , data: {},header: {content-type: application/json // 默认值},success (res) {console.log(res.data)},fail () {},complete () { }…