el-table :span-method 合并单元格(2.0)

2024.11.23今天我学习了如何使用el-table组件的合并单元格方法,效果如下:

代码如下:

<template><div class="container"><el-table :data="table_data" :span-method="object_merge" border><el-table-column label="名称" prop="name" align="center"/><el-table-column label="单价" prop="price" align="center"/><el-table-column label="时间" prop="time" align="center"/></el-table></div>
</template>
<script>
export default {data() {return {table_data: [],//存放表格数据length_data: [],//存放相同数据的个数}},created() {this.get_list();},methods: {get_list() {let demo = [{ name: '苹果', price: 20, time: '07:00:00', id: 1 },{ name: '香蕉', price: 12, time: '08:00:00', id: 2 },{ name: '苹果', price: 23, time: '09:00:00', id: 1 },{ name: '西瓜', price: 30, time: '07:00:00', id: 3 },{ name: '苹果', price: 11, time: '19:00:00', id: 1 },{ name: '香蕉', price: 20, time: '10:00:00', id: 2 },];// 合并相同的idlet new_demo = demo.reduce((arr, cur) => {if (!arr[cur.id]) {arr[cur.id] = [];}arr[cur.id].push(cur);return arr;//注意返回}, {});this.table_data = Object.values(new_demo).flat();//数组扁平化,如[[1,2],3]变成一维数组[1,2,3]// 获取相同数据的长度,如果长度大于1,需要填充n-1个0let length_data = [];Object.values(new_demo).forEach(item => {length_data.push(item.length);if (item.length > 1) {length_data.push(...new Array(item.length - 1).fill(0));}})this.length_data = length_data;},// 合并数组object_merge({ row, column, rowIndex, columnIndex}) {if (columnIndex === 0) {//判断第一列const row_span = this.length_data[rowIndex];const col_span = row_span > 0 ? 1 : 0;return {rowspan: row_span,colspan: col_span}}}}
}
</script>

封装方法:

1.utils  el-table-span-method.js文件
// el-table合并单元格方法
// repeat_data_length 重复数据长度如[1,2,0,1,1,3,0,0];长度大于1需要填充n-1个0
export function el_table_merge_cell({row, column, rowIndex, columnIndex}, repeat_data_length) {if (columnIndex === 0) {//判断第一列const row_span = repeat_data_length[rowIndex];const col_span = row_span > 0 ? 1 : 0;return {rowspan: row_span,colspan: col_span}}
}

页面代码:

<template><div class="container"><el-table :data="table_data" :span-method="object_merge" border><el-table-column label="名称" prop="name" align="center"/><el-table-column label="单价" prop="price" align="center"/><el-table-column label="时间" prop="time" align="center"/></el-table></div>
</template>
<script>
import { el_table_merge_cell } from '@/utils/el-table-span-method'export default {data() {return {table_data: [],//存放表格数据length_data: [],//存放相同数据的个数}},created() {this.get_list();},methods: {get_list() {let demo = [{ name: '苹果', price: 20, time: '07:00:00', id: 1 },{ name: '香蕉', price: 12, time: '08:00:00', id: 2 },{ name: '苹果', price: 23, time: '09:00:00', id: 1 },{ name: '西瓜', price: 30, time: '07:00:00', id: 3 },{ name: '苹果', price: 11, time: '19:00:00', id: 1 },{ name: '香蕉', price: 20, time: '10:00:00', id: 2 },];// 合并相同的idlet new_demo = demo.reduce((arr, cur) => {if (!arr[cur.id]) {arr[cur.id] = [];}arr[cur.id].push(cur);return arr;//注意返回}, {});this.table_data = Object.values(new_demo).flat();//数组扁平化,如[[1,2],3]变成一维数组[1,2,3]// 获取相同数据的长度,如果长度大于1,需要填充n-1个0let length_data = [];Object.values(new_demo).forEach(item => {length_data.push(item.length);if (item.length > 1) {length_data.push(...new Array(item.length - 1).fill(0));}})this.length_data = length_data;},// 合并数组object_merge({ row, column, rowIndex, columnIndex }) {return el_table_merge_cell({ row, column, rowIndex, columnIndex }, this.length_data)}}
}
</script>

 

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

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

相关文章

Shell 脚本基础(7):重定向详解

内容预览 ≧∀≦ゞ Shell 脚本基础&#xff08;7&#xff09;&#xff1a;重定向详解声明1. 重定向基础概念1.1 输出重定向&#xff08;> 和 >>&#xff09;覆盖写入&#xff08;>&#xff09;追加写入&#xff08;>>&#xff09;输出到终端和文件&#xff0…

CWT-CNN-SABO-LSSVM | Matlab实现基于CWT-CNN-SABO-LSSVM对滚动轴承的故障诊断

CWT-CNN-SABO-LSSVM | Matlab实现基于CWT-CNN-SABO-LSSVM对滚动轴承的故障诊断 目录 CWT-CNN-SABO-LSSVM | Matlab实现基于CWT-CNN-SABO-LSSVM对滚动轴承的故障诊断分类效果基本描述程序设计参考资料 分类效果 基本描述 基于CWT-CNN-SABO-LSSVM对滚动轴承的故障诊断 matlab代码…

Java基于SSM框架的校园综合服务小程序【附源码、文档】

博主介绍&#xff1a;✌IT徐师兄、7年大厂程序员经历。全网粉丝15W、csdn博客专家、掘金/华为云//InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ &#x1f345;文末获取源码联系&#x1f345; &#x1f447;&#x1f3fb; 精彩专栏推荐订阅&#x1f447;&#x1f3…

WPF——ICON按钮制作

前言 首先ICON按钮&#xff0c;即带图标按钮&#xff0c;即图标按钮。 图标按钮在开发时&#xff0c;主要是有两种方式来进行。一是在Button的Content内添加Image&#xff0c;然后设置Image的属性Source来实现&#xff0c;这种方式主要是简单易操作&#xff0c;对于初学者来说…

LlamaIndex ollama 搭建本地RAG应用,建立本地知识库

目录 简介安装前的准备下载ollama创建llamaindex conda环境&#xff0c;为后面编码作准备 环境变量迁移ollama到其他盘运行ollama方式一方式二禁止ollama开机自启动运行第一个模型 Chatbox聊天下载Chatbox配置ollama地址和模型验证 建立自身特定知识数据搭配大语言模型创建项目…

[RabbitMQ] 重试机制+TTL+死信队列

&#x1f338;个人主页:https://blog.csdn.net/2301_80050796?spm1000.2115.3001.5343 &#x1f3f5;️热门专栏: &#x1f9ca; Java基本语法(97平均质量分)https://blog.csdn.net/2301_80050796/category_12615970.html?spm1001.2014.3001.5482 &#x1f355; Collection与…

ChatGPT 桌面版发布了,如何安装?

本章教程教大家如何进行安装。 一、下载安装包 官网地址地址&#xff1a;https://openai.com/chatgpt/desktop/ 支持Windows和MacOS操作系统 二、安装步骤 Windows用户下载之后&#xff0c;会有一个exe安装包&#xff0c;点击运行安装即可。 注意事项&#xff0c;如果Windows操…

真实网络安全面试场景题

1.公司内部搭建了2台DNS服务器做主辅同步&#xff0c;公司的业务官网地址为 www.chinaddic.com。小明作为网络管理员把域名添加至DNS服务器进行测试。 问题1:使用自己电脑可以正常访问刚添加的域名&#xff0c;但处于同样网络环境同事电脑却访问不了。 出现此问题原因…

uniapp vue2项目迁移vue3项目

uniapp vue2项目迁移vue3项目&#xff0c;必须适配的部分 一、main.js 创建应用实例 // 之前 - Vue 2 import Vue from vue import App from ./App Vue.config.productionTip false // vue3 不再需要 App.mpType app // vue3 不再需要 const app new Vue({ ...App }) …

Brain.js 用于浏览器的 GPU 加速神经网络

Brain.js 是一个强大的 JavaScript 库&#xff0c;它允许开发者在浏览器和 Node.js 环境中构建和训练神经网络 。这个库的目的是简化机器学习模型的集成过程&#xff0c;使得即使是没有深厚机器学习背景的开发者也能快速上手 。 概述 Brain.js 提供了易于使用的 API&#xff…

群核科技首次公开“双核技术引擎”,发布多模态CAD大模型

11月20日&#xff0c;群核科技在杭州举办了第九届酷科技峰会。现场&#xff0c;群核科技首次正式介绍其技术底层核心&#xff1a;基于GPU高性能计算的物理世界模拟器。并对外公开了两大技术引擎&#xff1a;群核启真&#xff08;渲染&#xff09;引擎和群核矩阵&#xff08;CAD…

oracle会话追踪

一 跟踪当前会话 1.1 查看当前会话的SID,SERIAL# #在当前会话里执行 示例&#xff1a; SQL> select distinct userenv(sid) from v$mystat; USERENV(SID) -------------- 1945 SQL> select distinct sid,serial# from v$session where sid1945; SID SERIAL# …

操作系统加码主动防护:数智化有了“安全底座”

开发者圈子里流行着一个有意思的观点&#xff1a;操作系统每过20年左右&#xff0c;就会出现一次跨越式发展机遇。 上世纪六十年代开始的大型机&#xff0c;到上世纪八十年代的个人计算机&#xff0c;再到本世纪初互联网的崛起&#xff0c;无不和上述观点相吻合&#xff1a;操…

算法-快速排序-Python版详解

原题如下&#xff1a; 给定你一个长度为 n 的整数数列。请你使用快速排序对这个数列按照从小到大进行排序。并将排好序的数列按顺序输出。 输入格式 输入共两行&#xff0c;第一行包含整数 n。 第二行包含 n 个整数&#xff08;所有整数均在 1∼10^9 范围内&#xff09;&am…

【Apache paimon】-- 7 -- tag 创建与管理

目录 1、前言 2、操作说明 2.1、自动创建与删除 Tag 2.2、手动创建和删除 tag 2.3、回退到指定Tag 2.4、查询 tag 元数据和数据 2.4.1、查询 tag 元数据 2.4.2、查询 tag 数据 2.4.3、情景1:读取指定 tag 的数据 2.4.4、情景2:读取两个 tag 间的增量数据 3、其他配…

C++笔记之函数入参传递std::unique_ptr 时使用 std::move的场景

C++笔记之函数入参传递std::unique_ptr 时使用 std::move的场景 code review! 参考笔记 C++笔记之unique_ptr转移堆内空间的所有权 文章目录 C++笔记之函数入参传递std::unique_ptr 时使用 std::move的场景一.使用 std::unique_ptr 作为函数参数时的主要场景二.一个完整示例一…

找到最大“葫芦”组合

文章目录 问题描述解题思路分析1. 数据预处理2. 特殊情况处理3. 普通情况计算4. 结果输出 Java代码实现复杂度分析与优化 在经典德州扑克中&#xff0c;“葫芦”是一种较强的牌型。它由五张牌组成&#xff0c;其中三张牌面值相同&#xff0c;另外两张牌面值也相同。本文将探讨一…

strlwr(arr);的模拟实现(c基础)

hi , I am 36 适合对象c语言初学者 strlwr(arr)&#xff1b;函数是把arr数组变为小写字母,并返回arr 链接介绍一下strlwr(arr)&#xff1b;(c基础)-CSDN博客 下面进行My__strlwr(arr);模拟实现 #include<stdio.h> //返回值为arr(地址),于是用指针变量,原数组为字符型…

Hadoop分布式文件系统(一)——HDFS简介

目录 1. HDFS设计目标2. HDFS组件3. HDFS数据复制4. HDFS健壮性4.1 磁盘数据错误&#xff0c;心跳检测和重新复制4.2 集群均衡4.3 数据完整性4.4 元数据磁盘错误4.5 快照 5. HDFS数据组织5.1 数据块存储5.2 流水线复制5.3 文件的删除和恢复 参考 1. HDFS设计目标 1.错误检测和快…

基于UDP和TCP实现回显服务器

目录 一. UDP 回显服务器 1. UDP Echo Server 2. UDP Echo Client 二. TCP 回显服务器 1. TCP Echo Server 2. TCP Echo Client 回显服务器 (Echo Server) 就是客户端发送什么样的请求, 服务器就返回什么样的响应, 没有任何的计算和处理逻辑. 一. UDP 回显服务器 1. UD…