vue + Element UI table动态合并单元格

一、功能需求

      1、根据名称相同的合并工作阶段和主要任务合并这两列,但主要任务内容一样,但要考虑主要任务一样,但工作阶段不一样的情况。(枞向合并)

    2、落实情况里的定量内容和定性内容值一样则合并。(横向合并)

二、功能实现

<template>

  <div class="effect">

    <el-table :data="tableData" border style="width: 100%" :span-method="objectSpanMethod">

      <el-table-column type="index" label="序号" align="center" width="180">

      </el-table-column>

      <el-table-column prop="name" label="工作阶段" align="center" min-width="180">

      </el-table-column>

      <el-table-column prop="address" label="主要任务" align="center" min-width="180">

      </el-table-column>

    </el-table>

  </div>

</template>

<script>

export default {

  data () {

    return {

     

tableData: [

        {

          name: 'a',

          address: '1',

          age:'1',

          six:'2'

        },

        {

          name: 'a',

          address: '1',

          age:'1',

          six:'2'

        },

        {

          name: 'a',

          address: '1',

          age:'1',

          six:'2'

        },

        {

          name: 'a',

          address: '1',

          age:'1',

          six:'2'

        },

        {

          name: 'a',

          address: '2',

          age:'1',

          six:'2'

        },

        {

          name: 'a',

          address: '2',

          age:'1',

          six:'1'

        },

        {

          name: 'a',

          address: '3',

          age:'1',

          six:'1'

        },

        {

          name: 'a',

          address: '3',

          age:'1',

          six:'1'

        },

        {

          name: 'b',

          address: '3',

          age:'1',

          six:'1'

        },

        {

          name: 'b',

          address: '3',

          age:'1',

          six:'1'

        },

        {

          name: 'b',

          address: '3',

          age:'1',

          six:'1'

        },

        {

          name: 'b',

          address: '4',

          age:'1',

          six:'1'

        },

        {

          name: 'b',

          address: '4',

          age:'1',

          six:'1'

        },

        {

          name: 'b',

          address: '5',

          age:'2',

          six:'1'

        },

        {

          name: 'b',

          address: '5',

          age:'',

          six:''

        },

      ]

    }

  },

  mounted () {

    // 处理第二列的合并

    for (let i = 0; i < this.tableData.length; i++) {

      //第一个单元格合并列为1

      this.tableData[i].nameSpan = 1

       //和后面值的比较,

      for (let j = i+1; j < this.tableData.length; j++) {

          //如果值一样,则合并列为+1

        if(this.tableData[i].name != this.tableData[j].name){

           //如果遇到值不一样,则将 i = k -1  因为 下次循环i会+1

          i = j-1

          // 结束循环

          break;

        }else{

          this.tableData[i].nameSpan += 1

           // 最后一行了,将k的值赋给i,结束循环

          if(j == this.tableData.length-1){

            i = j

            // 结束循环

            break;

          }

        }

      }

    }

    // 处理第三列的合并

    for (let i = 0; i < this.tableData.length; i++) {

     //第一个单元格合并列为1

      this.tableData[i].addressSpan = 1

     //和后面值的比较,

      for (let k = i+1; k < this.tableData.length; k++) {

        //如果值一样,则合并列为+1

        if(this.tableData[i].address == this.tableData[k].address && this.tableData[i].name ==  this.tableData[k].name){

          this.tableData[i].addressSpan += 1

          // 最后一行了,将k的值赋给i,结束循环

          if(k == this.tableData.length-1){

            i = k

            // 结束循环

            break;

          }

        }else{

          //如果遇到值不一样,则将 i = k -1  因为 下次循环i会+1

          i = k-1

          // 结束循环

          break;

        }

      }

    }

    

   // 处理第四列和第五列横向合并

    for (let i = 0; i < this.tableData.length; i++) {

      this.tableData[i].ageColspan = 1

      if(this.tableData[i].age && this.tableData[i].six && this.tableData[i].age ==    this.tableData[i].six){

        this.tableData[i].ageColspan += 1

      }

    }

    console.log(this.tableData);

  },

  methods: {

   //合并方法

    objectSpanMethod ({ row, column, rowIndex, columnIndex }) {

      if (columnIndex === 1) {

        return {rowspan:row.nameSpan,colspan: 1}

      }

      if (columnIndex === 2) {

        return {rowspan:row.addressSpan,colspan: 1}

      }

      if (columnIndex === 3) {

        return {rowspan:1,colspan: row.ageColspan}

      }

    }

  },

}

</script>

<style lang="scss" scoped>

.effect {

  width: 100%;

  height: calc(100vh - 90px);

  padding: 5px;

}

</style>

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

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

相关文章

9.11 QT ( Day 4)

一、作业 1.Widget.h #ifndef WIDGET_H #define WIDGET_H#include <QWidget> #include <QTimerEvent> //定时器类 #include <QTime> #include <QtTextToSpeech> //文本转语音类QT_BEGIN_NAMESPACE namespace Ui { class Widget; } QT_END_NAMESPACEcl…

杨氏矩阵中查找某个数字是否存在(不能使用遍历)

杨氏矩阵&#xff1a; 有一个数字矩阵&#xff0c;矩阵的每行从左到右是递增的&#xff0c;矩阵从上到下是递增的 如图所示&#xff1a; i为行&#xff0c;j为列 如果要找9&#xff0c;先从arr【0】【2】处开始找&#xff0c;3<9,i,排除第一行&#xff0c;6<9,i,排除第…

上海亚商投顾:沪指探底回升 华为产业链午后爆发

上海亚商投顾前言&#xff1a;无惧大盘涨跌&#xff0c;解密龙虎榜资金&#xff0c;跟踪一线游资和机构资金动向&#xff0c;识别短期热点和强势个股。 一.市场情绪 沪指昨日探底回升&#xff0c;深成指、创业板指盘中跌逾1%&#xff0c;午后集体拉升翻红。华为产业链午后走强…

B-树底层原理

一、B-树介绍 定义&#xff1a; B-树&#xff08;B-Tree&#xff09;是一种自平衡的树形数据结构&#xff0c;广泛应用于数据库和操作系统中。它的设计目标是减少搜索、顺序访问、插入和删除操作中比较次数和移动次数&#xff0c;特别适合于磁盘中数据的存储和检索。 性质&a…

RabbitMQ练习(AMQP 0-9-1 Overview)

1、What is AMQP 0-9-1 AMQP 0-9-1&#xff08;高级消息队列协议&#xff09;是一种网络协议&#xff0c;它允许遵从该协议的客户端&#xff08;Publisher或者Consumer&#xff09;应用程序与遵从该协议的消息中间件代理&#xff08;Broker&#xff0c;如RabbitMQ&#xff09;…

欺诈文本分类检测(十四):GPTQ量化模型

1. 引言 量化的本质&#xff1a;通过将模型参数从高精度&#xff08;例如32位&#xff09;降低到低精度&#xff08;例如8位&#xff09;&#xff0c;来缩小模型体积。 本文将采用一种训练后量化方法GPTQ&#xff0c;对前文已经训练并合并过的模型文件进行量化&#xff0c;通…

【电子通识】规格书上的%FS和%RD具体指什么?

在仪器仪表类的手册上&#xff0c;常见的精度表达规格显示方式&#xff1a;%FS 和%RD 究竟如何解读呢&#xff1f; 术语解说 %RD(Reading)&#xff1a;用于表示对比显示值(读值)存在多少(%)的误差 %FS(Full Scale)&#xff1a;用于表示对比全量程存在多少(%)的误差 %SP(Set Poi…

基于ssm+vue+uniapp的电影交流平台小程序

开发语言&#xff1a;Java框架&#xff1a;ssmuniappJDK版本&#xff1a;JDK1.8服务器&#xff1a;tomcat7数据库&#xff1a;mysql 5.7&#xff08;一定要5.7版本&#xff09;数据库工具&#xff1a;Navicat11开发软件&#xff1a;eclipse/myeclipse/ideaMaven包&#xff1a;M…

多文件编程实现链表创建,插入,输出(上)

linklist.c #include "linklist.h" //创建空的链表&#xff0c;为头结点在堆区分配空间 linklist_t *creat_empty_linklist() {linklist_t *head NULL;head (linklist_t *) malloc(sizeof(linknode_t));if(NULL head){printf("malloc is fail!\n");ret…

项目小结二()

一.个人信息的界面 这里可以进行用户信息的修改&#xff0c;并渲染数据上去 二.这两天&#xff0c;出现的问题&#xff1a; 1.mybatis中 字段取别名 &#xff08;还没验证&#xff0c;是否正确&#xff09; 问题描述&#xff1a;由于实体类中的变量名&#xff0c;与数据库中…

CTF—杂项题目

1.ctfshow-Misc入门-misc17 1 用010editer打开图片后没有直接搜到ctf&#xff1b; 2 用binwalk分析文件发现有一个bzip2的隐藏文件并将其分离&#xff1b; 3 得到一个压缩文件D86.bz2&#xff1b; 4 但使用解压命令进行解压时&#xff0c;显示文件受损&#xff1b; 5 参考别人…

SpringBoot学习(8)RabbitMQ详解

RabbitMQ 即一个消息队列&#xff0c;主要是用来实现应用程序的异步和解耦&#xff0c;同时也能起到消息缓冲&#xff0c;消息分发的作用。 消息中间件最主要的作用是解耦&#xff0c;中间件最标准的用法是生产者生产消息传送到队列&#xff0c;消费者从队列中拿取消息并处理&…

Docker高级管理--Compose容器编排与私有仓库(Docker技术集群与应用)

本文介绍了Docker的三大工具&#xff1a;Docker Machine用于创建和管理Docker主机&#xff0c;Docker Compose用于单引擎模式下的多容器应用部署和管理&#xff0c;而Docker Swarm则是一个集群管理工具&#xff0c;提供微服务应用编排功能。Docker Machine支持在不同环境配置Do…

技术成神之路:设计模式(十三)访问者模式

介绍 访问者模式&#xff08;Visitor Pattern&#xff09;是一种行为型设计模式&#xff0c;它允许你在不改变对象结构的前提下&#xff0c;定义作用于这些对象的新操作。这种模式通过将操作逻辑从对象结构中抽离出来&#xff0c;使得新的操作可以无缝地添加到现有对象中。 1.定…

PDF转Excel小达人养成记

在现代职场&#xff0c;数据管理与格式转换可谓是日常任务的重头戏&#xff1b;有时我们手头有一份PDF文件&#xff0c;但需要将其中的数据整理成Excel表格&#xff0c;这该如何是好&#xff1f;别急&#xff0c;今天我就来给大家介绍几款好用的PDF转Excel工具&#xff0c;以及…

【CanMV K230 AI视觉】 人体关键点检测

【CanMV K230 AI视觉】 人体关键点检测 人体关键点检测 动态测试效果可以去下面网站自己看。 B站视频链接&#xff1a;已做成合集 抖音链接&#xff1a;已做成合集 人体关键点检测 人体关键点检测是指标注出人体关节等关键信息&#xff0c;分析人体姿态、运动轨迹、动作角度等…

【python】OpenCV—Age and Gender Classification

文章目录 1、任务描述2、网络结构2.1 人脸检测2.2 性别分类2.3 年龄分类 3、代码实现4、结果展示5、参考 1、任务描述 性别分类和年龄分类预测 2、网络结构 2.1 人脸检测 输出最高的 200 个 RoI&#xff0c;每个 RoI 7 个值&#xff0c;&#xff08;xx&#xff0c;xx&#x…

chapter14-集合——(List-HashSet)——day18

目录 519-HashSet全面说明 520-数组链表模拟 521-HashSet扩容机制 重要 522-HashSet源码解读1 526-HashSet最佳实践 527-hashSet思考题 519-HashSet全面说明 题一、 两个tom都可以添加成功是因为这是两个对象 看源码做分析&#xff1a;不是直接指向常量池的吗&#xff1f;…

【Python篇】matplotlib超详细教程-由入门到精通(下篇)

文章目录 前言第六部分&#xff1a;保存与导出图表6.1 保存为图片文件示例&#xff1a;保存图表为 PNG 文件解释&#xff1a;关键点&#xff1a; 6.2 保存为高分辨率图片示例&#xff1a;保存为高分辨率图片解释&#xff1a; 6.3 保存为不同文件格式示例&#xff1a;保存为不同…

程序员问题社区

CSDN有问必答 – 程序员问题社区 ★★★★★ 点击我进入程序员问题社区 ★★★★★