el-table合并单元格之后,再进行隔行换色的且覆盖表格行鼠标移入的背景色的实现

el-table 中有现成的隔行换色功能,只要增加 stripe 属性即可。但是如果有单元格合并的话,这个属性就不可用了。这时候我们就需要动点小心思了。

基于相同字段进行合并
单元格合并:基于表头中的某一列,具有相同值的个数相加进行合并

隔行换色:基于表头中的某一列 ,放到一个集合里,根据下标 判断奇偶行

实现效果如图:

代码实现:

<template>
  <div class="version-contrast__content">
    <el-table :data="tableData" :stripe="false" :span-method="spanMethod" :row-class-name="rowClass">
        <el-table-column prop="num" width="60" label="序号"></el-table-column>
        <el-table-column prop="indexType" label="指标类别"></el-table-column>
        <el-table-column prop="indexName" label="指标名称"></el-table-column>
        <el-table-column prop="unit" label="单位"></el-table-column>
        <el-table-column prop="panoramicMeeting" label="全景会"></el-table-column>
        <el-table-column prop="lastMonthDynamic" label="上月动态"></el-table-column>
        <el-table-column prop="thisMonthDynamic" label="本月动态"></el-table-column>
        <el-table-column width="170" prop="difference" label="差异(本月动态版-全景会)"></el-table-column>
        <el-table-column prop="differenceRate" label="差异率">
            <template slot-scope="scope">
                <span>{{scope.row.differenceRate}}%</span>
            </template>
        </el-table-column>
    </el-table>
  </div>
</template>

<script>
export default {
  data() {
        return {
            tableData: [
                {
                    "indexName": "总货值",
                    "num": "1.00",
                    "indexType": "货值指标",
                    "unit": "万元",
                    "panoramicMeeting": "202930",
                    "lastMonthDynamic": "52695",
                    "thisMonthDynamic": "23125",
                    "difference": "25362",
                    "differenceRate": "-88.6"
                },
                {
                    "indexName": "项目开发成本投入",
                    "num": "2.00",
                    "indexType": "成本指标",
                    "unit": "万元",
                    "panoramicMeeting": "202960",
                    "lastMonthDynamic": "51569",
                    "thisMonthDynamic": "23569",
                    "difference": "222",
                    "differenceRate": "-88.4"
                },
                {
                    "indexName": "项目总成本单方",
                    "num": "3.00",
                    "indexType": "成本指标",
                    "unit": "万元",
                    "panoramicMeeting": "3500",
                    "lastMonthDynamic": "632",
                    "thisMonthDynamic": "6326",
                    "difference": "3333",
                    "differenceRate": "80.7"
                }
            ],
            spanMethodOption: {}
        }
    },
    methods: {
        rowClass({row, rowIndex}) {
            var arr = []
            Object.keys(this.spanMethodOption).forEach((item, index)=>{
              // console.log('itemtt', item, index)
                if(row.indexType == item) {
                    if(index %2 === 0) {
                        arr.push('even-rows')
                        //return 'even-rows'//注意:这里return不回起到效果
                    }else{
                        arr.push('odd-rows')
                        //return 'odd-rows' //注意:这里return不回起到效果
                    }
                }
            })
            return arr
        },
        spanMethod ({ row, column, rowIndex, columnIndex }) {
            if(columnIndex === 1) {
                if (row.isShow) {
                    return [this.spanMethodOption[row.indexType], 1]
                }else{
                    return [0, 0]
                }
            }
            // console.log('this.spanMethodOption', this.spanMethodOption)
        },
    },
    created() {
        this.tableData = this.tableData.map(item => {
            if (this.spanMethodOption[item.indexType]) {
                this.spanMethodOption[item.indexType] += 1
                item.isShow = false;
            } else {
                this.spanMethodOption[item.indexType] = 1
                item.isShow = true;
            }
            return item;
        })
    }
}
</script>

<style lang="scss">
::v-deep .el-table {
    .version-table th {
        background-color:#797979;
        .cell {
            color:#fff;
        }
    }
   .even-rows {
      background-color: #fff;
    }

    .odd-rows {
      background-color: #F7F8FA;
    }
    .red {
        color:#ed5327;
    }
     /* 覆盖表格行鼠标移入的背景色 */
      .el-table__body tr.hover-row>td.el-table__cell{
        background-color: transparent !important;
      }
}
</style>

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

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

相关文章

ChatGPT学术专用版,一键润色纠错+中英互译+批量翻译PDF

ChatGPT academic项目是由中科院团队基于ChatGPT专属定制。论文润色、语法检查、中英互译、代码解释等可一键搞定&#xff0c;堪称科研神器。 功能介绍 我们以3.5版本为例&#xff0c;ChatGPT学术版总共分为五个区域&#xff1a;输入控制区、输出对话区、基础功能区、函数插件…

【大数据技术基础 | 实验十】Hive实验:部署Hive

文章目录 一、实验目的二、实验要求三、实验原理四、实验环境五、实验内容和步骤&#xff08;一&#xff09;安装部署&#xff08;二&#xff09;配置HDFS&#xff08;三&#xff09;启动Hive 六、实验结果&#xff08;一&#xff09;启动结果&#xff08;二&#xff09;Hive基…

【MyBatis操作数据库】XML配置

【配置连接字符串和MyBatis】 注意&#xff0c;这行代码代表着xml必须在mapper文件夹的下面&#xff08;路径必须保持一致&#xff09; 配置完文件后&#xff0c;需要写持久层代码 添加 mapper 接⼝&#xff1a; 添加 UserInfoXMLMapper这样的xml文件&#xff1a; 单元测试&a…

引领豪华MPV新趋势,比亚迪夏内饰科技广州车展全球首发

11月15日&#xff0c;比亚迪第五代DM技术中大型旗舰MPV夏内饰科技在广州车展正式发布。作为王朝网全新IP夏的首款同名车型&#xff0c;夏采用王朝新一代内饰设计语言&#xff0c;传承华夏文化深厚底蕴&#xff0c;从技术、平台、安全、设计、空间、智享、智驾七大维度&#xff…

flutter字体大小切换案例 小字体,标准字体,大字体,超大字体案例

flutter字体大小切换案例 小字体&#xff0c;标准字体&#xff0c;大字体&#xff0c;超大字体案例 Android iOS设备带有选择记录 我的flutter项目版本 environment: sdk: ‘>3.4.4 <4.0.0’ 图片案例 pubspec.yaml 添加依赖 # 屏幕尺寸适配 https://github.com/OpenF…

Schnorr 和 BLS 算法详解

Schnorr 签名和 BLS 签名在区块链技术中都有着重要的应用。它们各自具备独特的优势&#xff0c;使其在不同的区块链应用场景中得到广泛使用。 Schnorr签名算法 Schnorr签名算法是一种基于离散对数问题的数字签名算法&#xff0c; 由德国密码学家 克劳斯施诺尔 &#xff08;Cl…

OpenHarmony的公共事件

OpenHarmony的公共事件 公共事件简介 CES&#xff08;Common Event Service&#xff0c;公共事件服务&#xff09;为应用程序提供订阅、发布、退订公共事件的能力。 公共事件分类 公共事件从系统角度可分为&#xff1a;系统公共事件和自定义公共事件。 系统公共事件&#…

vue3中ElementPlus引入下载icon图标不显示透明问题解决教程方法

问题&#xff1a;今天用vue3开发&#xff0c;使用ElementPlus图标引入了但是不显示&#xff0c;是空白透明 解决&#xff1a; 1、在main.js中引入element-plus/icons-vue图标库 import * as ElIcons from element-plus/icons-vue; // 引入图标库 2、注册所有图标 // 注册所有…

性能测试中的核心指标

在性能测试中&#xff0c;核心指标是用来评估系统性能和表现的关键指标。这些指标可以帮助测试人员了解系统在不同负载和场景下的表现&#xff0c;以便发现系统的瓶颈和问题。以下是性能测试中的几个核心指标。 1、响应时间 响应时间是指系统在收到请求后&#xff0c;从接收请…

星际流浪的大模型

种子世界还在太空漫游&#xff0c;航线上捡到一个铁盒子&#xff0c;那是一块硬盘&#xff0c;古老的东西。 长老就安排歌者&#xff0c;你去研究&#xff0c;查查硬盘的来源坐标。 费好大劲&#xff0c;歌者把硬盘中的程序和数据激活&#xff0c;运行了起来。 很有意思&#x…

Docker部署Kafka SASL_SSL认证,并集成到Spring Boot

1&#xff0c;创建证书和密钥 需要openssl环境&#xff0c;如果是Window下&#xff0c;下载openssl Win32/Win64 OpenSSL Installer for Windows - Shining Light Productions 还需要keytool环境&#xff0c;此环境是在jdk环境下 本案例所使用的账号密码均为&#xff1a; ka…

每日论文20-24RFIC四核三模带自动模式跟踪输出缓冲器的VCO

前段时间赶tapeout要死要活&#xff0c;有一段时间没看&#xff0c;现在继续。 《An 18.5-to-36.5 GHz 206.8 dBc/Hz FoMT Quad-Core Triple-Mode VCO with Automatic-Mode-Tracking Output Buffers 》24RFIC 今年的RFIC&#xff0c;四核三模&#xff0c;桥位于每个线圈的中心…

Vue3 虚拟列表组件库 virtual-list-vue3 的使用

Vue3 虚拟列表组件库 virtual-list-vue3 的基本使用 分享个人写的一个基于 Vue3 的虚拟列表组件库&#xff0c;欢迎各位来进行使用与给予一些更好的建议&#x1f60a; 概述&#xff1a;该组件组件库用于提供虚拟化列表能力的组件&#xff0c;用于解决展示大量数据渲染时首屏渲…

rust逆向初探

rust 逆向葵花宝典 rust逆向技巧 rust逆向三板斧&#xff1a; [!NOTE] 快速定位关键函数 (真正的main函数)&#xff1a;观察输出、输入&#xff0c;字符串搜索&#xff0c;断点等方法。定位关键 加密区 &#xff1a;根据输入的flag&#xff0c;打硬件断点&#xff0c;快速捕获…

SPIRiT-Diffusion:基于自一致性驱动的加速MRI扩散模型|文献速递-基于深度学习的病灶分割与数据超分辨率

Title 题目 SPIRiT-Diffusion: Self-Consistency Driven Diffusion Model for Accelerated MRI SPIRiT-Diffusion&#xff1a;基于自一致性驱动的加速MRI扩散模型 01 文献速递介绍 磁共振成像&#xff08;MRI&#xff09; 在临床和研究领域被广泛应用。然而&#xff0c;其…

微信小程序_小程序视图与逻辑_day3

一、目标 A. 能够知道如何实现页面之间的导航跳转 B. 能够知道如何实现下拉刷新效果 C. 能够知道如何实现上拉加载更多效果 D. 能够知道小程序中常用的生命周期 二、目录 A. 页面导航 B. 页面事件 C. 生命周期 D. WXS脚本 E. 案例-本地生活&#xff08;列表页面&#xff09;…

数字化转型企业架构设计手册(交付版),企业数字化转型建设思路、本质、数字化架构、数字化规划蓝图(PPT原件获取)

1、企业架构现状分析 2、企业架构内容框架 3、企业架构设计方法 3.1 、业务架构设计方法 3.2 、数据架构设计方法 3.3 、应用架构设计方法 3.4 、技术架构设计方法 软件全套资料部分文档清单&#xff1a; 工作安排任务书&#xff0c;可行性分析报告&#xff0c;立项申请审批表&…

maven的optional选项说明以及具体应用

写在前面 本文看下maven的optional选项的作用和用法。 1&#xff1a;什么作用 考虑这样的场景&#xff0c;A依赖B&#xff0c;B依赖C&#xff0c;正常的按照依赖的传递性&#xff0c;A也会间接的依赖C&#xff0c;但是在一些特定的场景中项目A只希望依赖B&#xff0c;而不依…

FPGA使用Verilog实现CAN通信

FPGA实现CAN通信&#xff08;Verilog&#xff09; 1.作者使用的方法是通过FPGA芯片&#xff08;如Xilinx公司的型号为XC7K325TFFG676-2&#xff09;控制SJA1000T芯片&#xff08;CAN控制器芯片&#xff09;实现CAN通信&#xff0c;如下图所示&#xff1a; 2.熟悉连接方式之后&…

1Panel 推送 SSL 证书到阿里云、腾讯云

本文首发于 Anyeの小站&#xff0c;点击链接 访问原文体验更佳 前言 都用 CDN 了还在乎那点 1 年证书钱么&#xff1f; 开句玩笑话&#xff0c;按照 Apple 的说法&#xff0c;证书有效期不该超过 45 天。那么证书有效期的缩短意味着要更频繁地更新证书。对于我这样的“裸奔”…