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

news2025/7/5 20:03:53

在 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 表格中根据“项目区域”动态合并单元格的功能。如果有其他需求或问题,请随时补充说明!

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

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

相关文章

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中基于乐观锁理论实现隔离级别的方…

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

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

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

名人说&#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…

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

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

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

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

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

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

02-MySQL 面试题-mk

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

#include<bits/stdc++.h>

#include<bits/stdc.h> 是 C 中一个特殊的头文件&#xff0c;其作用如下&#xff1a; 核心作用 ​​包含所有标准库头文件​​ 该头文件会自动引入 C 标准库中的几乎全部头文件&#xff08;如 <iostream>、<vector>、<algorithm> 等&#xff09;&…

在企业级部署中如何优化NVIDIA GPU和容器环境配置:最佳实践与常见误区20250414

在企业级部署中如何优化NVIDIA GPU和容器环境配置&#xff1a;最佳实践与常见误区 引言 随着AI和深度学习技术的迅速发展&#xff0c;企业对GPU加速计算的需求愈加迫切。在此过程中&#xff0c;如何高效地配置宿主机与容器化环境&#xff0c;特别是利用NVIDIA GPU和相关工具&…

Spring Boot 项目三种打印日志的方法详解。Logger,log,logger 解读。

目录 一. 打印日志的常见三种方法&#xff1f; 1.1 手动创建 Logger 对象&#xff08;基于SLF4J API&#xff09; 1.2 使用 Lombok 插件的 Slf4j 注解 1.3 使用 Spring 的 Log 接口&#xff08;使用频率较低&#xff09; 二. 常见的 Logger&#xff0c;logger&#xff0c;…

[react]Next.js之自适应布局和高清屏幕适配解决方案

序言 阅读前首先了解即将要用到的两个包的作用 1.postcss-pxtorem 自动将 CSS 中的 px 单位转换为 rem 单位按照设计稿尺寸直接写 px 值&#xff0c;由插件自动计算 rem 值 2.amfe-flexible 动态设置根元素的 font-size&#xff08;即 1rem 的值&#xff09;根据设备屏幕宽度和…

STM32H503CB升级BootLoader

首先&#xff0c;使用SWD接口&#xff0c;ST-LINK连接电脑和板子。 安装SetupSTM32CubeProgrammer_win64 版本2.19。 以下是接线和软件操作截图。

在Apple Silicon上部署Spark-TTS:四大核心库的技术魔法解析!!!

在Apple Silicon上部署Spark-TTS&#xff1a;四大核心库的技术魔法解析 &#x1f680; &#xff08;M2芯片实测&#xff5c;Python 3.12.9PyTorch 2.6.0全流程解析&#xff09; 一、核心库功能全景图 &#x1f50d; 在Spark-TTS的部署过程中&#xff0c;pip install numpy li…

VMWare 16 PRO 安装 Rocky8 并部署 MySQL8

VMWare 16 PRO 安装 Rocky8 并部署 MySQL8 一.Rocky OS 下载1.官网二.配置 Rocky1.创建新的虚拟机2.稍后安装系统3.选择系统模板4.设置名字和位置5.设置大小6.自定义硬件设置核心、运存和系统镜像7.完成三.启动安装1.上下键直接选择安装2.回车安装3.设置分区(默认即可)和 roo…

cursor如何回退一键回退多个文件的修改

当我们使用 Cursor 写代码时&#xff0c;起初可能操作得很顺利&#xff0c;但某次更改或许会让代码变得面目全非。这时候如果没有使用 Git 该怎么办呢&#xff1f;别担心&#xff0c;Cursor 已经为我们考虑到了。 具体的操作如下&#xff1a; 当我们要取消某次操作时&#xf…

基于RV1126开发板的口罩识别算法开发

1. 口罩识别简介 口罩识别是一种基于深度学习的判断人员有没有戴口罩的分类算法&#xff0c;能广泛的用于安防、生产安全等多种场景。本算法先基于人脸检测和人脸标准化获取的标准人脸&#xff0c;然后输入到口罩识别分类算法进行识别。 本人脸检测算法在数据集表现如下所示&am…