element-plus 表格-合并单元格

利用表格:span-method="" 方法实现合并单元格

合并前

合并后

重点代码generateIndexGroups ,找到合并的单元格的index号

代码实现如下

<template>
  <h2>实现表格的合并</h2>
  <div>
    <!--  :span-method="arraySpanMethod" -->
    <el-button type="primary" @click="testf">合并 </el-button>
    <el-table
      :data="tableData"
      border
      :span-method="arraySpanMethod"
      style="width: 100%"
      @cell-click="cellClick"
    >
      <el-table-column
        align="center"
        v-for="(item, index) in tabHeader"
        :key="index"
        :prop="item.prop"
        :label="item.label"
        :width="item.width"
      >
      </el-table-column>
    </el-table>
    
  </div>
</template>

<script setup>
import { onMounted, reactive, ref } from "vue";
const tabHeader = [
  { prop: "dept", label: "部门", width: 180 },
  { prop: "name", label: "姓名" },
  { prop: "area", label: "所属地" },
];

const tableData = reactive([
  {
    dept: "部门1",
    name: "李1",
    area: "1",
  },
  {
    dept: "部门1",
    name: "李2",
    area: "1",
  },
  {
    dept: "部门1",
    name: "李3",
    area: "3",
  },
  {
    dept: "部门1",
    name: "李4",
    area: "2",
  },
  {
    dept: "部门2",
    name: "李1",
    area: "5",
  },
  {
    dept: "部门2",
    name: "李想3",
    area: "5",
  },
  {
    dept: "部门3",
    name: "李想33",
    area: "7",
  },
]);

let mindexGroups = reactive([]);
let mnameGroups = reactive([]);
const merge = ref(false)

onMounted(() => {
  mindexGroups = generateIndexGroups(tableData, ["dept"]);
  mnameGroups = generateIndexGroups(tableData, ["dept", "area"]);
});
function testf() {
  console.log(mindexGroups);
  merge.value = !merge.value;
}

function arraySpanMethod({ row, column, rowIndex, columnIndex }) {

  if (merge.value != true)
  {
    return;
  }
  //第0列
  if (columnIndex == 0) {
    for (let i = 0; i < mindexGroups.length; ++i) {
      if (rowIndex == mindexGroups[i].start) {
        return [mindexGroups[i].end - mindexGroups[i].start + 1, 1];
      }
    }

    return [0, 0];
  }

  //第2列
  if (columnIndex == 2) {
    for (let i = 0; i < mnameGroups.length; ++i) {
      if (rowIndex == mnameGroups[i].start) {
        return [mnameGroups[i].end - mnameGroups[i].start + 1, 1];
      }
    }
    return [0, 0];
  }
}

function generateIndexGroups(data, field) {
  let tmp = data.map((i) => {
    let rstr = "";
    for (let j = 0; j < field.length; ++j) {
      rstr += "+" + i[field[j]];
    }
    console.log(i, rstr);
    return rstr;
  }); //排序
  return findIndexs(tmp);
}

function findIndexs(array) {
  /* 
          @params:数组
          return:一个包含重复序列,开始索引和结束索引的数组
          如:
          [
            {start:0;end:2
            },
            {start:3;end:5}
          ]

      */
  let current = array[0];
  let result = []; //返回结果
  let startIndex = 0;
  for (let i = 1; i < array.length; i++) {
    if (array[i] != current) {
      //if (startIndex == i -1) continue;
      result.push({ start: startIndex, end: i - 1 });
      current = array[i];
      startIndex = i;
    }
  }
  result.push({ start: startIndex, end: array.length - 1 });

  return result;
}
</script>

<style lang="scss" scoped></style>

参考:element-ui 合并行单元格,列-CSDN博客

element-ui 合并表格行_elementui表格合并行_nuise_的博客-CSDN博客

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

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

相关文章

【Python数据结构与算法】——(线性结构)精选好题分享,不挂科必看系列

&#x1f308;个人主页: Aileen_0v0&#x1f525;系列专栏:<<Python数据结构与算法专栏>>&#x1f4ab;个人格言:"没有罗马,那就自己创造罗马~" 时间复杂度大小比较 1.time complexity of algorithm A is O(n^3) while algorithm B is O(2^n). Which o…

八、Linux关机重启和用户登录注销

1.Linux关机、重启 基本介绍 shutdown -h now 立即进行关机 shutdown -h 1 “hello&#xff0c;1分钟后会关机了”(h&#xff1a;halt) shutdown 默认就是&#xff08;shutdown -h 1&#xff09; shutdown -r now 现在重新启动计算机(r : reboot) halt 关机&#xff0c;作用和…

用向量数据库Milvus Cloud搭建GPT大模型+私有知识库的定制AI助手——PPT大纲助手

随着人工智能技术的不断发展,AI助手在各行各业中扮演着越来越重要的角色。在商业领域,PPT演示是一种常见的沟通方式,而定制化的PPT大纲助手能够极大地提高PPT制作效率和质量。本文将介绍如何利用向量数据库Milvus Cloud搭建GPT大模型和私有知识库,构建一款高效的PPT大纲助手…

计算机系统的层次结构和性能指标

目录 五层结构三个级别语言 计算机性能指标CPU性能指标系统整体的性能指标 五层结构 三个级别语言 编译程序&#xff1a;将高级语言编写的源程序全部语句一次全部翻译成机器语言程序&#xff0c;而后再执行机器语言程序&#xff08;只需翻译一次&#xff09; 解释程序&#xff…

庖丁解牛:NIO核心概念与机制详解 03 _ 缓冲区分配、包装和分片

文章目录 Pre概述缓冲区分配和包装 &#xff08;allocate 、 wrap&#xff09;缓冲区分片 (slice)缓冲区份片和数据共享只读缓冲区 &#xff08;asReadOnlyBuffer&#xff09;直接和间接缓冲区内存映射文件 I/O将文件映射到内存 Pre 庖丁解牛&#xff1a;NIO核心概念与机制详解…

【Hello Go】Go语言异常处理

Go语言异常处理 异常处理error接口panicrecover延时调用错误问题 异常处理 error接口 Go语言引入了一个关于错误处理的标准模式 它是Go语言内建的接口类型 它的定义如下 type error interface {Error() string }Go语言的标准库代码包errors为用户提供了以下方法 package e…

【算法基础】动态规划

背包问题 01背包 每个物品只能放一次 2. 01背包问题 - AcWing题库 二维dp #include<bits/stdc.h> const int N1010; int f[N][N]; int v[N],w[N]; signed main() {int n,m;std::cin>>n>>m; for(int i1;i<n;i) std::cin>>v[i]>>w[i];for…

2024年csdn最新最全的web自动化测试思路及实战

Page Objects 设计模式 Page Objects概念&#xff1a; Page Objects是指UI界面上用于与用户进行交互的对象 pageobjects 设计模式概念&#xff1a; pageobjects 模式是Selenium中的一种测试设计模式&#xff0c;主要是将每一个页面设计为一个Class&#xff0c;其中包含页面中…

AVL树实现

目录 ​编辑 一&#xff0c;AVL树的概念 二&#xff0c;实现AVL树&#xff08;部分&#xff09; 1.AVL树的节点 2.AVL数的插入 1.当根节点为nullptr时要执行如下代码&#xff1a; 2.当根节点不为nullptr时 1.当parent的_bf变为0时&#xff0c;parent之前的_bf的大小就是…

十、Linux运行级别

1.基本介绍 运行级别说明&#xff1a; 0&#xff1a;关机 1&#xff1a;单用户【找回丢失密码】 2&#xff1a;多用户状态没有网络服务 【非常少】 3&#xff1a;多用户状态有网络服务 【最多】 4&#xff1a;系统未使用保留给用户 5&#xff1a;图形界面【Linux一启动自动进入…

lambda表达式c++

介绍 可调用对象 对于一个表达式&#xff0c;如果可以对其使用调用运算符&#xff08;&#xff09;&#xff0c;则称它为可调用对象。如函数就是一个可调用对象&#xff0c;当我们定义了一个函数f(int)时&#xff0c;我们可以通过f(5)来调用它。 可调用对象有&#xff1a; …

【Redis】zset常用命令集合间操作内部编码使用场景

文章目录 前置知识列表、集合、有序集合三者的异同点 普通命令ZADDZCARDZCOUNTZRANGEZREVRANGEZRANGEBYSCOREZPOPMAXBZPOPMAXZPOPMINBZPOPMINZRANKZREVRANKZSCOREZREMZREMRANGEBYRANKZREMRANGEBYSCOREZINCRBY 集合之间的操作ZINTERSTOREZUNIONSTORE 命令小结内部编码测试内部编…

滑动窗口练习(一)— 固定窗口最大值问题

题目 假设一个固定大小为W的窗口&#xff0c;依次划过arr&#xff0c; 返回每一次滑出状况的最大值 例如&#xff0c;arr [4,3,5,4,3,3,6,7], W 3 返回&#xff1a;[5,5,5,4,6,7] 暴力对数器 暴力对数器方法主要是用来做校验&#xff0c;不在乎时间复杂度&#xff0c;逻辑上…

GitHub如何删除仓库

GitHub如何删除仓库 删除方法第一步第二步第三步 删除方法 第一步 在仓库的界面选择Settings 第二步 选择General,页面拉到最后。 第三步 删除仓库。

七,vi和vim

Linux系统会内置vi文本编辑器 Vim具有程序编辑的能力&#xff0c;可以看做是Vi的增强版本&#xff0c;可以主动的以字体颜色辨别语法的正确性&#xff0c;方便程序设计。代码补完、编译及错误跳转等方便编程的功能特别丰富&#xff0c;在程序员中被广泛使用。 vi和vim常用的三…

CICD 持续集成与持续交付——gitlab

部署 虚拟机最小需求&#xff1a;4G内存 4核cpu 下载&#xff1a;https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el7/ 安装依赖性 [rootcicd1 ~]# yum install -y curl policycoreutils-python openssh-server perl[rootcicd1 ~]# yum install -y gitlab-ce-15.9.3-ce.0…

LinkWeChat V4.9.8 版本发布

LinkWeChat v4.9.8 已经发布&#xff0c;基于企业微信的 SCRM 系统 LinkWeChat 是国内首个基于企业微信的开源 SCRM&#xff0c;在集成了企微强大的开放能力的基础上&#xff0c;进一步升级拓展灵活高效的客户运营能力及多元化精准营销能力&#xff0c;让客户与企业之间建立强…

Java概述

接触Java后会发现它的体系有一个特点&#xff0c;就是非常喜欢用“J”字母开头的缩写&#xff0c;比如JCP, JSR, JMS, JPA, JSP, JAX-RS......它们有些是规范&#xff0c;有些是组织的名称&#xff0c;表意多样&#xff0c;对第一次接触的人来说很可能会觉得混乱&#xff0c;本…

快速修改ppt | 显得不单调

做完ppt&#xff0c;怎样不显得单调 ----> 加个 主题&#xff0c;首页 改下 字体&#xff08;如 华文行楷&#xff0c;96&#xff0c;字体颜色&#xff09;

开拓经验专栏:从十来天的晨型人体验开始

文章目录 拓新缘起契机实践心得 拓新 确定要新开一个板块&#xff0c;用来记录持续自我提升的经验和教训&#xff0c;着实遭遇了不少阻力。 首先&#xff0c;我的语文功底一向不行&#xff0c;当年高考前&#xff0c;语文分数在及格线上下跳动都是常事&#xff0c;现在却要通…
最新文章