Vue结合el-table实现合并单元格(以及高亮单元表头和指定行)

实现效果如下:

思路:
1.首先使用动态表头表格。
2.其次实现动态计算合并单元格。(计算规则 传递需要合并的字段)
3.然后封装公共的计算单元格方法 export导出供多个页面使用。
4.同时需要封装成公共的组件供多个页面使用。
5.组件内写指定表头行高亮颜色以及指定行高亮颜色方法。

封装公共计算单元格合并方法


/*** 合并相同数据,导出合并行所需的方法(只适合el-table)* @param {Array} dataArray el-table表数据源* @param {Array} mergeRowProp 合并行的列prop* @param {Array} sameRuleRowProp 相同合并规则行的列prop*/
export function getSpanMethod(dataArray, mergeRowProp, sameRuleRowProp) {/*** 要合并行的数据*/const rowspanNumObject = {}// 初始化 rowspanNumObjectmergeRowProp.map(item => {rowspanNumObject[item] = new Array(dataArray.length).fill(1, 0, 1).fill(0, 1)rowspanNumObject[`${item}-index`] = 0})// 计算相关的合并信息for (let i = 1; i < dataArray.length; i++) {mergeRowProp.map(key => {const index = rowspanNumObject[`${key}-index`]if (dataArray[i][key] === dataArray[i - 1][key]) {rowspanNumObject[key][index]++} else {rowspanNumObject[`${key}-index`] = irowspanNumObject[key][i] = 1}})}/*** 添加同规则合并行的数据*/if (sameRuleRowProp !== undefined) {const k = Object.keys(rowspanNumObject).filter(key => {if (!key.includes('index')) {return key}})[0]for (const prop of sameRuleRowProp) {rowspanNumObject[prop] = rowspanNumObject[k]rowspanNumObject[`${prop}-index`] = rowspanNumObject[`${k}-index`]mergeRowProp.push(prop)}}/*** 导出合并方法*/const spanMethod = function({ row, column, rowIndex, columnIndex }) {if (mergeRowProp.includes(column['property'])) {const rowspan = rowspanNumObject[column['property']][rowIndex]if (rowspan > 0) {return { rowspan: rowspan, colspan: 1 }}return { rowspan: 0, colspan: 0 }}return { rowspan: 1, colspan: 1 }}return spanMethod
}

简单使用代码案例


<template><div class="container"><el-card><el-buttontype="text">vue2合并单元格多列或指定列<iclass="el-icon-s-order"/></el-button><el-table :data="tableData" :span-method="spanMethod" border><el-table-column prop="title" label="测试合并单元格多列" align="center"><el-table-columnprop="name"label="姓名"width="100"align="center"/><el-table-columnprop="gradeName"label="成绩指标"width="100"align="center"/><el-table-columnprop="unit"label="单位"width="100"align="center"/><el-table-column prop="weight" label="权重" align="center" /><el-table-column prop="amount1" label="数值 1(元)" align="center" /><el-table-column prop="amount2" label="数值 2(元)" align="center" /></el-table-column></el-table></el-card></div>
</template><script>
import { getSpanMethod } from '@/utils/commonunit.js'
export default {name: 'Index',data() {return {tableData: []}},computed: {spanMethod() {return getSpanMethod(this.tableData,['name'],['gradeName', 'unit', 'weight'])}},created() {this.getPageList()},methods: {getPageList() {const getTableDatas = [{id: '1',name: '王小虎',gradeName: '指标库',unit: '单位',weight: '权重',amount1: '234',amount2: '165'},{id: '1',name: '王小虎',gradeName: '指标库',unit: '单位',weight: '权重',amount1: '234',amount2: '165'},{id: '1',name: '王小虎',gradeName: '指标库',unit: '单位',weight: '权重',amount1: '234',amount2: '165'},{id: '1',name: '王小虎',gradeName: '指标库',unit: '单位',weight: '权重',amount1: '234',amount2: '165'},{id: '1',name: '黎明',gradeName: '指标库',unit: '单位',weight: '权重',amount1: '234',amount2: '165'},{id: '1',name: '黎明',gradeName: '指标库',unit: '单位',weight: '权重',amount1: '234',amount2: '165'},{id: '1',name: '黎明',gradeName: '指标库',unit: '单位',weight: '权重',amount1: '234',amount2: '165'},{id: '1',name: '李红',gradeName: '指标库',unit: '单位',weight: '权重',amount1: '234',amount2: '165'},{id: '1',name: '李红',gradeName: '指标库',unit: '单位',weight: '权重',amount1: '234',amount2: '165'}]this.tableData = getTableDatas}}
}
</script><style scoped lang="scss">
.container {width: 100%;
}
</style>

高亮指定表头行数据样式 高亮表头行样式 方法

 tableRowClassName({ row, rowIndex }) { // 高亮指定数据行if (row.valueAttributes === 'Y') {console.log(rowIndex)return 'warning-row'}return ''},headerRowCell(e) {if (e.column && e.column.property === 'title') { // 指定表头行样式return this.customHeaderCellStyle} else {return {}}}

下面是封装组件代码,详细可以私信我哈,看到必回!!!

vue3同理哈,都可以使用

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

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

相关文章

电动车新国标迎来修订机会,用户的真实需求能被满足吗?

文&#xff5c;新熔财经 作者&#xff5c;宏一 自2019年4月《电动自行车安全技术规范》发布至今&#xff0c;电动车的新国标标准已经实施5年&#xff0c;市场上的争议也此起彼伏地持续了5年。 因为新国标对电动车的各项技术标准提出的明确要求&#xff0c;其中&#xff0c;最…

Nifi同步过程中报错create_time字段找不到_实际目标表和源表中没有这个字段---大数据之Nifi工作笔记0066

很奇怪的问题,在使用nifi的时候碰到的,这里是用NIFI,把数据从postgresql中同步到mysql中, 首先postgresql中的源表,中是没有create_time这个字段的,但是同步的过程中报错了. 报错的内容是说,目标表中有个create_time字段,这个字段是必填的,但是传过来的flowfile文件中,的数据没…

[RK3399 Linux] 使用ubuntu 20.04.5制作rootfs

一、ubuntu base ubuntu base是用于为特定需求创建自定义映像的最小rootfs,是ubuntu可以运行的最小环境。 1.1 下载源码 下载ubuntu-base的方式有很多,可以从官方的地址:ttp://cdimage.ubuntu.com/ubuntu-base/releases。 也可以其它镜像地址下载,如清华源:https://mi…

使用shell管理和配置网络服务_1

1、请使用nmcli命令配置仅主机模式网络环境&#xff0c;要求如下: 1) 创建一个新的网卡连接eth1&#xff0c;该连接映射到ens32网卡上; 首先&#xff0c;确保 ens32 网卡没有被其他网络配置文件使用。然后&#xff0c;使用 nmcli 创建一个新的连接&#xff0c;并将其绑定到 e…

在Linux中使用dpkg -i离线安装下载的deb软件包

“dpkg -i” 是 Debian 系统中用于安装 .deb 格式软件包的命令。它是 Debian Package Management System&#xff08;DPMS&#xff09;的一部分&#xff0c;允许用户通过命令行界面来管理软件包。 使用该命令时&#xff0c;需要提供要安装的软件包的路径作为参数。例如&#…

实战纪实 | 编辑器漏洞之Ueditor-任意文件上传漏洞 (老洞新谈)

UEditor 任意文件上传漏洞 前言 前段时间在做某政府单位的项目的时候发现存在该漏洞&#xff0c;虽然是一个老洞&#xff0c;但这也是容易被忽视&#xff0c;且能快速拿到shell的漏洞&#xff0c;在利用方式上有一些不一样的心得&#xff0c;希望能帮助到一些还不太了解的小伙…

大模型日报|今日必读的9篇大模型论文

大家好&#xff0c;今日必读的大模型论文来啦&#xff01; 1.Google DeepMind 提出 RecurrentGemma&#xff1a;超越 Transformer&#xff0c;迈向高效开放语言模型 Google DeepMind 团队提出了 RecurrentGemma&#xff0c;一个使用 Google 新颖的 Griffin 架构的开放语言模型…

PHP01——php快速入门 之 使用phpstudy快速搭建PHP环境

PHP01——php快速入门 之 使用phpstudy快速搭建PHP环境 0. 前言1. 下载小皮面板1.1 下载phpstudy&#xff08;小皮面板&#xff09;1.2 启动、简单访问1.2.1 启动Apache1.2.2 访问1.2.3 访问自定义文件或页面 2. 创建网站2.1 创建网站2.2 可能遇到的问题2.2.1 hosts权限问题&am…

【新版HI3559AV100开发注意事项(四)】

新版HI3559AV100开发注意事项&#xff08;四&#xff09; 三十、HI3559A参数中对输入分辨率限制的原因是&#xff1f; 答&#xff1a;分辨率限制有两个来源&#xff1a; 一个是时钟频率最高为600M&#xff0c;开启一拍两像素之后相当于1200M。你这个数据量太大了&#xff0c;6…

[大模型]基于 ChatGLM3 和 LangChain 搭建知识库助手

基于 ChatGLM3 和 LangChain 搭建知识库助手 环境配置 在已完成 ChatGLM3 的部署基础上&#xff0c;还需要安装以下依赖包&#xff1a; pip install langchain0.0.292 pip install gradio4.4.0 pip install chromadb0.4.15 pip install sentence-transformers2.2.2 pip inst…

微服务项目实战-黑马头条(一):环境搭建 + APP登录功能【前端静态资源+nginx反向代理+网关+过滤器】

文章目录 一、搭建nacos二、初始工程的搭建2.1 环境准备2.2主体结构 三、APP登录3.1 需求分析3.2 表结构分析3.3 接口定义3.4 功能实现 四、接口工具postman、swagger、knife4j4.1 postman4.2 swagger4.3 knife4j 五、网关5.1 网关搭建5.2 全局过滤器实现jwt校验 六、前端集成6…

目前电视盒子哪个最好?测评工作室盘点超强电视盒子推荐

每年我们会进行数十次电视盒子测评&#xff0c;对各个品牌的产品都有深入的了解&#xff0c;最近我们收到了很多私信不知道目前电视盒子哪个最好&#xff0c;这次我们结合配置总结了五款性能超强的电视盒子推荐给各位&#xff0c;预算足够想买高配电视盒子的朋友们可不要错过啦…

高级Java开发工程师手把手教你用AI人工智能帮你写JAVA代码实际案例二(生成自定义springboot定时器组件)全网唯一

高级Java开发工程师手把手教你用AI人工智能帮你写JAVA代码实际案例二全网唯一 一、需求背景案例说明 笔者有个实际的生产项目&#xff0c;想自己自定义定时器到数据库表里面&#xff0c;不想配置到配置文件里面&#xff0c;很麻烦&#xff01;这次想用AI帮我写代码&#xff0…

蓝桥杯算法题:栈(Stack)

这道题考的是递推动态规划&#xff0c;可能不是很难&#xff0c;不过这是自己第一次靠自己想出状态转移方程&#xff0c;所以纪念一下&#xff1a; 要做这些题目&#xff0c;首先要把题目中会出现什么状态给找出来&#xff0c;然后想想他们的状态可以通过什么操作转移&#xf…

学习数通HCIE选择誉天有什么优势?

誉天数通课程亮点 课程内容详实&#xff0c;千万级实训环境 涵盖数通技术全场景热门技术&#xff0c;涉及传统园区网&#xff0c;虚拟化园区网&#xff0c;广域互联技术&#xff0c;数据中心网络&#xff0c;网络自动化运维 专业机房环境&#xff0c;全真机教学演示&#xf…

模块化组合优势凸显钡铼IOy系列轻松应对大规模工业自动化工程

模块化组合是钡铼IOy系列独立式I/O模块的一大优势&#xff0c;它为大规模工业自动化工程提供了灵活性、可扩展性和定制性&#xff0c;从而轻松应对不同规模和复杂度的工厂应用。以下是关于模块化组合优势的详细解析&#xff1a; 1. 灵活性和定制性 模块化设计使得钡铼IOy系列…

小鸡宝宝考考你每匹斑马身上的条纹都不相同吗?蚂蚁庄园4.13答案

蚂蚁庄园是一款爱心公益游戏&#xff0c;用户可以通过喂养小鸡&#xff0c;产生鸡蛋&#xff0c;并通过捐赠鸡蛋参与公益项目。用户每日完成答题就可以领取鸡饲料&#xff0c;使用鸡饲料喂鸡之后&#xff0c;会可以获得鸡蛋&#xff0c;可以通过鸡蛋来进行爱心捐赠。其中&#…

【工具-工具指南】

项目-开发工具 ■ 编辑器■ Xmind ■ UI交互设计■ AxureRP9 ■ 项目管理■ boardmix■ excalidraw ■ Markdown■ MarkText■ Typora■ Ulysses■ Notable■ VNote■ Mou■ Bears■ Notion■ 有道云■ 印象笔记 ■ 硬件画图■ AD■ Allegro■ PADS■ Eagle■ Altium■ Fritzin…

大型网站系统架构演化

大型网站质量属性优先级&#xff1a;高性能 高可用 可维护 应变 安全 一、单体架构 应用程序&#xff0c;数据库&#xff0c;文件等所有资源都在一台服务器上。 二、垂直架构 应用和数据分离&#xff0c;使用三台服务器&#xff1a;应用服务器、文件服务器、数据服务器 应用服…

Mongo 报错 Can‘t canonicalize query: BadValue $in needs an array

一、遇到的问题 Mongo in查询 [ UserId > array($in>$userIds)] $userIds数组不是连续索引&#xff0c;报错Cant canonicalize query: BadValue $in needs an array 二、解决 array_values($userIds) 重新索引一下变成连续索引即可。 Mongo in查询的数组要是连续索…