当前位置: 首页 > article >正文

Ant Design Vue 的表格数据,第一列项目区域,项目区域相同的行数据,第一列项目区域合并

在 Ant Design Vue 的表格中,如果需要根据第一列(如“项目区域”)的值进行动态合并,可以通过 customCell 方法实现。以下是完整的代码示例,展示如何根据“项目区域”相同的行数据,合并第一列单元格。


代码示例

<template><a-table :columns="columns" :data-source="data" :pagination="false" bordered><!-- 自定义单元格 --><template slot="region" slot-scope="text, record, index"><span>{{ text }}</span></template></a-table>
</template><script>
export default {data() {return {// 数据源data: [{ key: "1", region: "华东区", project: "项目A", manager: "张三" },{ key: "2", region: "华东区", project: "项目B", manager: "李四" },{ key: "3", region: "华南区", project: "项目C", manager: "王五" },{ key: "4", region: "华南区", project: "项目D", manager: "赵六" },{ key: "5", region: "华北区", project: "项目E", manager: "孙七" },],// 表格列配置columns: [{title: "项目区域",dataIndex: "region",key: "region",scopedSlots: { customRender: "region" },customCell: (record, rowIndex) => {const currentRegion = record.region;const nextRegion = this.data[rowIndex + 1]?.region;// 如果当前行与下一行的区域相同,则跳过(rowSpan: 0)if (currentRegion === nextRegion) {return {rowSpan: 0,};}// 计算当前区域连续的行数let rowSpan = 1;for (let i = rowIndex + 1; i < this.data.length; i++) {if (this.data[i].region === currentRegion) {rowSpan++;} else {break;}}return {rowSpan: rowSpan,};},},{title: "项目名称",dataIndex: "project",key: "project",},{title: "负责人",dataIndex: "manager",key: "manager",},],};},
};
</script><style scoped>
/* 可以根据需要添加样式 */
</style>

代码解析

  1. 数据源 (data)

    • 数据源是一个数组,每条数据包含 region(项目区域)、project(项目名称)和 manager(负责人)字段。
    • 示例数据中,“华东区”和“华南区”分别有两行数据,“华北区”只有一行数据。
  2. 列配置 (columns)

    • 第一列(region)使用了 customCell 方法。
    • customCell 中,通过比较当前行与下一行的 region 值,决定是否需要合并:
      • 如果当前行与下一行的 region 相同,则设置 rowSpan: 0,表示跳过该行。
      • 如果不同,则计算当前 region 连续的行数,并设置 rowSpan
  3. 模板部分 (template)

    • 使用 slotslot-scope 渲染单元格内容。
  4. 动态计算 rowSpan

    • 从当前行开始,向后遍历数据,统计连续相同的 region 数量,作为 rowSpan 的值。

运行效果

  • 第一列“项目区域”中,相同区域的行会合并为一个单元格。
    • “华东区”合并两行。
    • “华南区”合并两行。
    • “华北区”单独显示一行。
  • 其他列(如“项目名称”和“负责人”)保持正常显示。

注意事项

  1. 数据顺序

    • 合并逻辑依赖于数据的顺序。如果数据未按区域排序,可能导致合并错误。
    • 确保数据按照“项目区域”排序后再渲染表格。
  2. 动态数据处理

    • 如果数据是动态加载的,可以在加载完成后对数据进行预处理(如排序或分组),然后再渲染表格。
  3. 性能优化

    • 当数据量较大时,遍历数据可能会对性能产生影响,建议对数据进行预处理,减少重复计算。
  4. 跨页合并

    • 如果表格分页,rowSpan 只能在当前页内生效,无法跨页合并。

通过上述方法,你可以轻松实现 Ant Design Vue 表格中根据“项目区域”动态合并单元格的功能。如果有其他需求或问题,请随时补充说明!

相关文章:

Ant Design Vue 的表格数据,第一列项目区域,项目区域相同的行数据,第一列项目区域合并

在 Ant Design Vue 的表格中&#xff0c;如果需要根据第一列&#xff08;如“项目区域”&#xff09;的值进行动态合并&#xff0c;可以通过 customCell 方法实现。以下是完整的代码示例&#xff0c;展示如何根据“项目区域”相同的行数据&#xff0c;合并第一列单元格。 代码示…...

SFOS2:常用容器(布局)介绍

一、前言 最近在进行sailfish os的开发&#xff0c;由于在此之前并没有从事过QT开发的工作&#xff0c;所以对这一套颇为生疏&#xff0c;以此记录一下。以下内容不一定完全准确&#xff0c;开发所使用的是Qt Quick 2.6与Sailfish.Silica 1.0两个库。 二、布局 1.Qt Quick 2.…...

C++ 核心进阶

模块九&#xff1a;进一步学习 (指引方向) 目录 标准模板库 (STL) 深入 1.1. std::map (进阶) 1.1.1. 迭代器的更多用法 1.1.2. 自定义比较函数 1.1.3. std::multimap 1.2. std::set (进阶) 1.2.1. 迭代器的更多用法 1.2.2. 自定义比较函数 1.2.3. std::multiset 和 std::un…...

守护进程编程

守护进程编程 1. 守护进程的含义 守护进程的含义&#xff1a; 守护进程&#xff08;Daemon&#xff09;是指一种在后台运行的进程&#xff0c;通常不与用户交互&#xff0c;用于执行一些常驻任务&#xff0c;如系统监控、日志管理、定时任务等。它通常在操作系统启动时就被启…...

[特殊字符] MySQL MCP 开发实战:打造智能数据库操作助手

&#x1f4a1; 简介&#xff1a;本文详细介绍如何利用MCP&#xff08;Model-Control-Panel&#xff09;框架开发MySQL数据库操作工具&#xff0c;使AI助手能够直接执行数据库操作。 &#x1f4da; 目录 引言MCP框架简介项目架构设计开发环境搭建核心代码实现错误处理策略运行和…...

element-ui自定义主题

此处的element-ui为基于vue2.x的 由于https://element.eleme.cn/#/zh-CN/theme/preview&#xff08;element的主题&#xff09;报错503&#xff0c; 所以使用https://element.eleme.cn/#/zh-CN/component/custom-theme 自定义主题文档中&#xff0c;在项目中改变scss变量的方…...

windows下使用nginx + waitress 部署django

架构介绍 linux一般采用nginx uwsgi部署django&#xff0c;在Windows下&#xff0c;可以取代uwsgi的选项包括Waitressa、Daphnea、Hypercoma和Gunicorna(通过WSLa 运行)。windows服务器一般采用nginx waitress 部署django&#xff0c;,他们的关系如下 django是WEB应用…...

MySQL-多版本并发控制MVCC

文章目录 一、多版本并发控制MVCC二、undo log&#xff08;回滚日志&#xff09;二、已提交读三、可重复读总结 一、多版本并发控制MVCC MVCC是多版本并发控制&#xff08;Multi-Version Concurrency Control&#xff09;&#xff0c;是MySQL中基于乐观锁理论实现隔离级别的方…...

Sherpa简介

Sherpa 是一个由 K2-FSA 团队 开发的 开源语音处理框架&#xff0c;旨在解决传统语音识别工具&#xff08;如 Kaldi&#xff09;在模型部署和跨平台适配中的复杂性问题。它通过整合现代深度学习技术和高效推理引擎&#xff0c;提供了从语音识别、合成到说话人识别的一站式解决方…...

4.15redis点评项目下

--->接redis点评项目上 Redis优化秒杀方案 下单流程为&#xff1a;用户请求nginx--->访问tomcat--->查询优惠券--->判断秒杀库存是否足够--->查询订单--->校验是否是一人一单--->扣减库存--->创建订单 以上流程如果要串行执行耗时会很多&#xff0c…...

目标检测与分割:深度学习在视觉中的应用

&#x1f50d; PART 1&#xff1a;目标检测&#xff08;Object Detection&#xff09; 1️⃣ 什么是目标检测&#xff1f; 目标检测是计算机视觉中的一个任务&#xff0c;目标是让模型“在图像中找到物体”&#xff0c;并且判断&#xff1a; 它是什么类别&#xff08;classif…...

SpringBoot 与 Vue3 实现前后端互联全解析

在当前的互联网时代&#xff0c;前后端分离架构已经成为构建高效、可维护且易于扩展应用系统的主流方式。本文将详细介绍如何利用 SpringBoot 与 Vue3 构建一个前后端分离的项目&#xff0c;展示两者如何通过 RESTful API 实现无缝通信&#xff0c;让读者了解从环境搭建、代码实…...

HEIF、HEIC、JPG 和 PNG是什么?

1. HEIF (High Efficiency Image Format) 定义&#xff1a;HEIF 是一种用于存储单张图像和图像序列&#xff08;如连拍照片&#xff09;的图像文件格式。优势&#xff1a;相比传统的图像格式&#xff0c;HEIF 提供了更高的压缩效率和更好的图像质量。压缩算法&#xff1a;HEI…...

第一层、第二层与第三层隧道协议

&#xff08;本文由deepseek生成&#xff0c;特此声明&#xff09; 隧道协议是网络通信中用于在不同网络间安全传输数据的关键技术&#xff0c;其工作层次决定了封装方式、功能特性及应用场景。本文将详细介绍物理层&#xff08;第一层&#xff09;、数据链路层&#xff08;第…...

部署qwen2.5-VL-7B

简单串行执行 from transformers import Qwen2_5_VLForConditionalGeneration, AutoProcessor from qwen_vl_utils import process_vision_info import torch, time, threadingdef llm(model_path,promptNone,imageNone,videoNone,imagesNone,videosNone,max_new_tokens2048,t…...

记录jdk8->jdk17 遇到的坑和解决方案

最近项目在升级jdk8->jdk17 springboot2->springboot3 顺序先升级业务服务&#xff0c;后升级组件服务。跟随迭代开发一起验证功能。 1. 使用parent pom 版本管理 spring相关组件的版本。 组件依赖低版本parent不变。 业务服务依赖高版本parent。 2. 修改maven jdk…...

vue3 uniapp vite 配置之定义指令

动态引入指令 // src/directives/index.js import trim from ./trim;const directives {trim, };export default {install(app) {console.log([✔] 自定义指令插件 install 触发了&#xff01;);Object.entries(directives).forEach(([key, directive]) > {app.directive(…...

杰弗里·辛顿:深度学习教父

名人说&#xff1a;路漫漫其修远兮&#xff0c;吾将上下而求索。—— 屈原《离骚》 创作者&#xff1a;Code_流苏(CSDN)&#xff08;一个喜欢古诗词和编程的Coder&#x1f60a;&#xff09; 杰弗里辛顿&#xff1a;当坚持遇见突破&#xff0c;AI迎来新纪元 一、人物简介 杰弗…...

STM32蓝牙连接Android实现云端数据通信(电机控制-开源)

引言 基于 STM32F103C8T6 最小系统板完成电机控制。这个小项目采用 HAL 库方法实现&#xff0c;通过 CubeMAX 配置相关引脚&#xff0c;步进电机使用 28BYJ-48 &#xff08;四相五线式步进电机&#xff09;&#xff0c;程序通过蓝牙连接手机 APP 端进行数据收发&#xff0c; OL…...

第一个Qt开发的OpenCV程序

OpenCV计算机视觉开发实践&#xff1a;基于Qt C - 商品搜索 - 京东 下载安装Qt&#xff1a;https://download.qt.io/archive/qt/5.14/5.14.2/qt-opensource-windows-x86-5.14.2.exe 下载安装OpenCV&#xff1a;https://opencv.org/releases/ 下载安装CMake&#xff1a;Downl…...

如何编写爬取网络上的视频文件

网络爬虫程序&#xff0c;可以爬取某些网站上的视频&#xff0c;音频&#xff0c;图片或其它文件&#xff0c;然后保存到本地电脑上&#xff1b; 有时在工作中非常有用&#xff0c;那在技术上如何进行爬取文件和保存到本地呢&#xff1f;下面以python语言为例&#xff0c;讲解p…...

TCP 如何在网络 “江湖” 立威建交?

一、特点&#xff1a; &#xff08;一&#xff09;面向连接 在进行数据传输之前&#xff0c;TCP 需要在发送方和接收方之间建立一条逻辑连接。这一过程类似于打电话&#xff0c;双方在通话前需要先拨号建立连接。建立连接的过程通过三次握手来完成&#xff0c;确保通信双方都…...

【小白训练日记——2025/4/15】

变化检测常用的性能指标 变化检测&#xff08;Change Detection&#xff09;的性能评估依赖于多种指标&#xff0c;每种指标从不同角度衡量模型的准确性。以下是常用的性能指标及其含义&#xff1a; 1. 混淆矩阵&#xff08;Confusion Matrix&#xff09; 定义&#xff1a;统…...

交叉熵在机器学习中的应用解析

文章目录 核心概念香农信息量&#xff08;自信息&#xff09;熵&#xff08;Entropy&#xff09;KL散度&#xff08;Kullback-Leibler Divergence&#xff09;交叉熵 在机器学习中的应用作为损失函数对于二分类&#xff08;Binary Classification&#xff09;&#xff1a;对于多…...

ARM Cortex汇编指令

在ARM架构的MCU开发中&#xff0c;汇编指令集是底层编程的核心。以下是针对Cortex-M系列&#xff08;如M0/M3/M4/M7/M85&#xff09;的指令集体系、分类及查询方法的详细说明&#xff1a; 一、指令集体系与核心差异 1. 架构版本与指令集特性 处理器架构指令集特点典型应用场…...

数据结构——二叉树(中)

接上一篇&#xff0c;上一篇主要讲解了关于二叉树的基本知识&#xff0c;也是为了接下来讲解关于堆结构和链式二叉树结构打基础&#xff0c;其实无论是堆结构还是链式二叉树结构&#xff0c;都是二叉树的存储结构&#xff0c;那么今天这一篇主要讲解关于堆结构的实现与应用 堆…...

InnoDB的MVCC实现原理?MVCC如何实现不同事务隔离级别?MVCC优缺点?

概念 InnoDB的MVCC&#xff08;Multi-Version Concurrency Control&#xff09;即多版本并发控制&#xff0c;是一种用于处理并发事务的机制。它通过保存数据在不同时间点的多个版本&#xff0c;让不同事务在同一时刻可以看到不同版本的数据&#xff0c;以此来减少锁竞争&…...

UDP目标IP不存在时的发送行为分析

当网络程序使用UDP协议发送数据时&#xff0c;如果目标IP不存在&#xff0c;发送程序的行为取决于网络环境和操作系统的处理机制。以下是详细分析&#xff1a; 1. UDP的无连接特性 UDP是无连接的传输协议&#xff0c;发送方不会预先建立连接&#xff0c;也不会收到对方是否存在…...

WHAT - 动态导入模块遇到版本更新解决方案

文章目录 一、动态导入模块二、常见原因与解决方案1. 模块 URL 错误2. 开发人员发版用户停留在旧页面问题背景解决方案思路1. 监听错误&#xff0c;提示用户刷新2. 使用缓存控制策略&#xff1a;强制刷新3. 动态模块加载失败时兜底4. 使用 import.meta.glob() 或 webpack 的 __…...

02-MySQL 面试题-mk

文章目录 1.mysql 有哪些存储引擎、区别是什么?1.如何定位慢查询?2.SQL语句执行很慢,如何分析?3.索引概念以及索引底层的数据结构4.什么是聚簇索引什么是非聚簇索引?5.知道什么叫覆盖索引嘛 ?6.索引创建原则有哪些?7.什么情况下索引会失效 ?8.谈一谈你对sql的优化的经验…...