element-UI表格table实现表格行的动态合并

2023-11-01

本文主要举个项目中真实实例,方便各位跟我一样在实际项目开发中碰到的需求功能的开发。(可直接拿来使用的)

饿了么table组件官方实例:http://element-cn.eleme.io/#/zh-CN/component/table,在实际开发过程中,官方实例根本无法满足需求,实际需求一般都是动态的合并而不是固定怎么合并的,所以这时就需要我们对其进行处理。

大致思路就是:先将查询出的列表数据分出哪几列哪几行需要进行合并并且合并多少行或多少列,这些数据记录放进一个空数组中,合并的时候再根据这个数组进行相应的合并。

.vue文件:

<template>
  <section class="search-table">
    <el-form :model="dynamicValidateForm" ref="dynamicValidateForm" class="dynamic-table" label-width="0">
      <el-table :data="dynamicValidateForm.domains" :span-method="objectSpanMethod" v-loading.body="listLoading" 
        element-loading-text="拼命加载中" border fit highlight-current-row>
        <el-table-column label="序号" type="index" align="center" width="60%" />
        <el-table-column label="指标" prop="NAME" min-width="15%" />
        <el-table-column label="分值" prop="SCORE" min-width="8%" />
        <el-table-column label="考核内容" prop="CONTENT" min-width="15%" />
        <el-table-column label="扣分标准" prop="STANDARD" min-width="52%" />
 
        <el-table-column label="扣分" prop="MINUS_SCORE" min-width="10%">
          <template slot-scope="scope">
            <el-form-item :prop="'domains.' + scope.$index + '.MINUS_SCORE'" 
              :rules="[{pattern: validator('number'), message: '请输入数字', trigger: 'blur'} ]">
              <nv-input v-model.number="scope.row.MINUS_SCORE" :disabled="!isView" />
            </el-form-item>
          </template>
        </el-table-column>
      </el-table>
    </el-form>
  </section>
</template>

vue.js(script)文件:

<script>
import { getProjectDeductDatas } from "./api";
export default {
  name: "ProjectDeduct",
  props: {},
  data() {
    return {
      list: [],
      listLoading: true,
      dynamicValidateForm: {
        domains: []
      },
      spanArr: [], // 一个空的数组,用于存放每一行记录的合并数
      pos: 0, // spanArr 的索引
      contentSpanArr: [],
      position: 0
    };
  },
 
  computed: {},
  created() {
    this.getList();
  },
  methods: {
    // 合并单元格
    objectSpanMethod({ row, column, rowIndex, columnIndex }) {
      if (columnIndex === 1 || columnIndex === 2) {
        const _row = this.spanArr[rowIndex];
        const _col = _row > 0 ? 1 : 0;
        return {
          rowspan: _row,
          colspan: _col
        };
      } else if (columnIndex === 3) {
        const _row = this.contentSpanArr[rowIndex];
        const _col = _row > 0 ? 1 : 0;
        return {
          rowspan: _row,
          colspan: _col
        };
      }
    },
    // 获取列表数据
    getList() {
      const self = this;
      const { SCORE_ID, searchForm } = self;
      self.listLoading = true;
      getProjectDeductDatas({
        SCORE_ID: scoreId,
        NAME: searchForm.NAME
      })
        .then(({ data }) => {
          self.listLoading = false;
          this.dynamicValidateForm.domains = data || [];
 
          // 设定一个数组spanArr/contentSpanArr来存放要合并的格数,同时还要设定一个变量pos/position来记录
          this.spanArr = [];
          this.contentSpanArr = [];
          for (var i = 0; i < data.length; i++) {
            if (i === 0) {
              this.spanArr.push(1);
              this.pos = 0;
              this.contentSpanArr.push(1);
              this.position = 0;
            } else {
              // 判断当前元素与上一个元素是否相同(第1和第2列)
              if (data[i].INDEX_ID === data[i - 1].INDEX_ID) {
                this.spanArr[this.pos] += 1;
                this.spanArr.push(0);
              } else {
                this.spanArr.push(1);
                this.pos = i;
              }
              // 判断当前元素与上一个元素是否相同(第3列)
              if (data[i].CONTENT === data[i - 1].CONTENT) {
                this.contentSpanArr[this.position] += 1;
                this.contentSpanArr.push(0);
              } else {
                this.contentSpanArr.push(1);
                this.position = i;
              }
            }
          }
        })
        .catch(err => {
          self.listLoading = false;
          console.log(err);
        });
    }
  },
  watch: {}
};
</script>

在这里插入图片描述

————————————————
版权声明:本文为CSDN博主「davis_23」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/davis_23/article/details/84784911

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

element-UI表格table实现表格行的动态合并 的相关文章

  • 【论文速递】TPAMI2022 - 自蒸馏:迈向高效紧凑的神经网络

    论文速递 TPAMI2022 自蒸馏 迈向高效紧凑的神经网络 论文原文 Self Distillation Towards Efficient and Compact Neural Networks 获取地址 https ieeexplor
  • virsh help domain命令内容解析

    简介 这段时间学习热迁移 要不断的在qemu monitor和libvirt中调转使用命令 故整理virsh命令 这篇是第一篇 整理virsh help domain相关内容 span style color 656565 span sty
  • 相约清华!AI药物研发大赛总决赛明日开幕

    2022年 百度飞桨联合清华大学药学院 筹备建设 AI 药学 产学研融合创新基地 推出了一系列AI 生物计算前沿课程和人才培养计划 今年5月 百度飞桨联合清华大学药学院 百度智能云和临港实验室 共同发起了首届全球AI药物研发算法大赛 并得到
  • mac如何卸载python2.7_mac python环境的安装与卸载

    换电脑之前并没有了解很多mac 所以习惯性的安装软件都是官网或者appstore下载来安装的 so 我下载了python2 7 并安装了 后来学习的视频是3 6的版本 又下载的3 6的版本来安装 过程中知道自带python2 7版本 也看到
  • 踩坑系列—mybatis查询没有数据时返回的list是null还是空集合?

    场景 根据多个条件查询 返回list集合数据 代码 第1步 根据页面多个条件查询 List list userDao queryOrders queryParams if null list return null 第2步 有数据再追加其他
  • Photoshop 通道讲解

    我常常问我的学生 什么是Photoshop最重要 不可或缺的功能 很多人的回答是图层 Layer 其实在Photoshop3 0之前根本没有图层的功能 在Photoshop的领域中 最重要的功能是选取范围 正确的运用选取范围 才能够做出精准
  • 从CSV文件导入Hive出现中文乱码问题解决

    关于HIVE中文乱码问题的解决办法 网上有很多帖子 然而很多都是基于LINUX终端显示字符的修改 其实上对于一些条件下的HIVE中文乱码问题是无法解决的 如从CSV文件导入到HIVE中出现的中文乱码问题 大家都知道 HIVE原生的字符编码是
  • 区块链密码学之对称加密

    前言 对称加密 顾名思义就是公钥和私钥都是同一个 只有一把密钥 那么密钥的共享就需要特别注意 容易泄露 但是由于它的加密效率高 速度快 占用空间小 主要用在大量数据的加密 往往需要提前分发密钥 对称密码从实现上可以分为两种 分组密码和序列密
  • 查询Windows默认编码格式

    开始 gt cmd gt chcp 然后显示一个数字 如936 则代表是GBK简体中文
  • unity生成透明背景的截图,截图背景图透明,UGUI scrollview滑动的时候不能遮罩3d模型

    转载 Unity3D Unity3D 摄像机带透明截图 静茹 鱼 博客园 using System using UnityEngine using System IO public class CropPicture MonoBehavio
  • Sonarqube安装插件报错An error has occurred. Please contact your administrator

    报错信息 Sonarqube安装插件时提示 An error has occurred Please contact your administrator 解决方法 1 查询报错日志 使用docker logs查询Sonarqube日志 插
  • jpress代码审计分享

    声明 出品 先知社区 ID 1871162774168111 以下内容 来自先知社区的1871162774168111作者原创 由于传播 利用此文所提供的信息而造成的任何直接或间接的后果和损失 均由使用者本人负责 长白山攻防实验室以及文章作
  • 【转载】一些比较好的电子资源网站

    SkyEye Project SkyEye是一个开源软件 opensource software 项目 中文名字是 天目 SkyEye的目标是在通用的Linux和Windows平台实现一个模拟集成开发环境 模拟基于ARM的嵌入式计算机系统
  • 《Linux C++》线程池

    为什么使用线程池 线程池的出现正是着眼于减少线程本身带来的开销 避免 即时创建 即时销毁 线程池应用场合 像大多数网络服务器 包括Web服务器 Email服务器以及数据库服务器处理数目巨大的连接请求 但处理时间却相对较短 并且实时性要求比较
  • 硬见小百科」这些PCB布局布线规则,你了解多少?

    元器件布局的10条规则 遵照 先大后小 先难后易 的布置原则 即重要的单元电路 核心元器件应当优先布局 布局中应参考原理框图 根据单板的主信号流向规律安排主要元器件 元器件的排列要便于调试和维修 亦即小元件周围不能放置大元件 需调试的元 器
  • Java中的sort()

    sort的第一种格式 sort的第二种格式 sort函数中cmp函数的使用方法 自定义排序基本方法 sort的第一种格式 sort函数的基本格式 默认排序为升序排序 Arrays sort 数组名 起始下标 终止下标 例 import ja
  • 【机器学习】机器学习建模调参方法总结

    文章目录 一 前言 1 1 数据来源 1 2 理论简介 二 知识总结 2 1 回归分析 2 2 长尾分布 2 3 欠拟合与过拟合 2 4 正则化 2 5 调参方法 2 5 1 贪心调参 坐标下降 2 5 2 网格调参GridSearchCV
  • JavaScript高手进阶:详解Eval加密

    在JavaScript编程中 涉及到代码加密 在混淆加密时代之前 用的最多的应该是种Eval加密 加密后的特征是以 eval function p a c k e r 为代码开始 相信很多人都见过这种代码 Eval加密效果例程 这是一种非常
  • MFC 解决中文乱码问题

    新的编译工具默认的是unicode编码方式 许多在多字节下面显示中文的方法已经不再适用了按照道理说设置为unicode编码后应该会很好的支持中文 但是实际情况很悲惨 显示的都是乱码 看到网上的很多方法都是把CSTRING转来转去 很头疼 感
  • powershell 删除指定文件夹及文件

    删除指定的文件夹 Get ChildItem C ccccc Recurse Where Object PsIsContainer Where Object FullName like test Remove Item Force Recu

随机推荐

  • SpringBoot配置多数据源

    项目框架 SpringBoot MyBatis Mysql 项目连接两个数据库源 1 application yml配置 使用DruidDataSource 主数据库为primary 副数据库为secondary 名称可以自己定义 只要和后
  • 如何使用Git进行版本控制

    在软件开发过程中 版本控制是一个非常重要的部分 它可以让开发人员更轻松地管理代码 集成代码 以及跟踪代码的变更历史 Git是一个广泛使用的版本控制工具 它的易用性和可扩展性使得它成为了开源社区的首选 在本文中 我们将介绍如何使用Git进行版
  • 转载 -- 按位异或的性质及其妙用

    https www jianshu com p 86a7cf855e51 文章摘要 1 按位异或 可以简单理解成 不进位加法 即 1 1 0 0 0 0 1 0 1 2 任何数和自己异或结果为零 3 按位异或的自反性 两次运算操作 可以将最
  • vs code下载慢的解决方法

    1 在官网Visual Studio Code Code Editing Redefined下载 大概率会出现如下情况 2 复制以上下载的链接地址 把以上截图红框标注的部分换成vscode cdn azure cn 这样会变成采用国内的镜像
  • canvas中的save和restore方法的作用

    save方法可以理解为暂存当前画笔的状态 接下来对画笔的操作都不会被保存下来 直到restore方法被调用 讲得通俗一点 就是说 调用save方法 就是把当前的笔放笔架上 换一支笔 调用restore方法时 再把刚才放到笔架上的笔再拿下来用
  • 使用Python对图像进行不同级别量化QP,使用RLE计算压缩比,并计算对应的PSNR

    写这篇博客源于 博友的提问 1 效果图 原图 VS QP 2 VS QP 4 VS QP 8效果图如下 QP量化是指把原始图像按像素级别划分取值 如QP 2 则 lt 128 取0 gt 128取128 QP 4 则 lt 64取0 lt
  • 无线dhcp服务器静态,wifi的ip设置dhcp和静态的区别

    大家好 我是时间财富网智能客服时间君 上述问题将由我为大家进行解答 以网络为例 wifi的ip设置dhcp和静态的区别如下 1 静态IP地址 又称固定IP地址 是长期分配给一台计算机或网络设备使用的 IP 地址 一般来说 一般是特殊的服务器
  • MySQL经典入门

    MySQL数据库相关知识 数据库的基本概念 数据库的英文单词 DataBase 简称 DB 什么是数据库 用于存储和管理数据的仓库 数据库的特点 持久化存储数据的 其实数据库就是一个文件管理系统 方便存储和管理数据 使用了统一的方式操作数据
  • C++:vector中的resize()函数 VS reserve()函数

    写代码的时候无意错用了这两个函数 导致测试的时候 程序运行崩溃 发现这两个函数还是有区别的 void reserve size type n reserver函数用来给vector预分配存储区大小 即capacity的值 但是没有给这段内存
  • 三款开源工具让你的演示脱颖而出

    本文转载至 http blog callmewhy com 2014 07 02 three open source tools to make your presentations pop 不论是在商业圈还是在学术界 演示都是生活中不可或
  • 共享内存 设计原理-shm

    POSIX的shm open 在 dev shm 下打开一个文件 用mmap 映射到进程自己的内存地址 System V的shmget 得到一个共享内存对象的id 用shmat 映射到进程自己的内存地址 目前这里主要看 System V的设
  • VS无法打开 源 文件 "xxx.h" 问题

    项目属性 gt 配置属性 gt C C gt 常规 gt 附加包含目录 gt ProjectDir 即可
  • Qt QFrame

    QFrame类是带有边框部件的基类 lineWidth调整边框边界线的宽度 midLineWidth是在边框中插入一条线的宽度 用于营造3D效果 此效果只有在Box HlineVline凸起或者凹陷时有效 QFrame NoFrame 不绘
  • 【手拉手 带你准备电赛】解答小课堂——为什么要使能时钟

    大家在代码编写过程中也发现了 当我们涉及到外设时 总是需要使能其对应的时钟 那么为什么要使能时钟呢 直接用不是更简单 确实 直接使用IO 代码量可以小那么一丢丢 你可能会说 代码量算什么 这是老师少考我们一个考点 是我们可能不挂科的问题 手
  • Java数组排序:Java sort()方法

    在 Java 中实现数组排序的方式很多 除了利用 Arrays 类的 sort 方法外 还可以编写自定义方法来实现自己的排序算法 本文介绍如何使用 Arrays 类提供的 sort 方法来对数组进行排序 使用 java util Array
  • 一款基于Latex语法和MathJax渲染的零基础公式编辑器,数学公式插件

    零基础即可编辑公式 支持自定义编辑器配置和风格 支持二次编辑公式 支持作为插件和富文本编辑器一起使用 介绍 基于Latex语法和MathJax渲染的公式编辑器插件 易用 可二次编辑 内容可视化 标题为什么会开发该插件 之前调研过很多开源的公
  • log4j2配置参数详解

    1 概述 JAVA常用的日志收集api和实现框架都有多种 不同的api和实现框架之间怎么相互兼容都比较复杂 不过大部分的日志框架实现也都提供了对其他日志收集方式的兼容和切换 可以参考slf4j jcl jul log4j1 log4j2 l
  • CentOS 8:Cannot prepare internal mirrorlist: No URLs in mirrorlist

    问题 在Centos 8上因为要安装mysql5 7 需要使用yum命令 但执行yum命令时报错 No URLs in mirrorlist 经查阅资料后发现 从2022年1月31日起 CentOS开发团队将会移除官方镜像源上关于CentO
  • Linq按日期年月日分组

    var body db tbl worklist AsQueryable WorkOrderHomePageResponse model new WorkOrderHomePageResponse DateTime startDate Da
  • element-UI表格table实现表格行的动态合并

    本文主要举个项目中真实实例 方便各位跟我一样在实际项目开发中碰到的需求功能的开发 可直接拿来使用的 饿了么table组件官方实例 http element cn eleme io zh CN component table 在实际开发过程中