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.rhkb.cn/news/423611.html

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

相关文章

设置使用阿里云服务器DNS

由于云服务器是从腾讯云迁移到阿里云&#xff0c;然后使用ssl验证时一直无法使用dns验证&#xff0c;也无法创建三级域名&#xff0c;原来需要把阿里云服务器改成阿里云的dns使用 如果使用其他服务器DNS会下面会显示当前DNS服务器&#xff0c;

Linux:git

hello&#xff0c;各位小伙伴&#xff0c;本篇文章跟大家一起学习《Linux&#xff1a;git》&#xff0c;感谢大家对我上一篇的支持&#xff0c;如有什么问题&#xff0c;还请多多指教 &#xff01; 如果本篇文章对你有帮助&#xff0c;还请各位点点赞&#xff01;&#xff01;&…

解决Docker镜像不可下载

使用国内可信的镜像中心 可信国内镜像网址&#xff1a;https://hub.atomgit.com/ 点击镜像仓库 搜索想要的镜像 按如图所示&#xff0c;即可查看对应的版本 点击复制&#xff0c;即可下载使用 缺点&#xff1a; 可用的镜像相比于docker官方量少 并且&#xff0c;获取的镜像名字…

【Java】方法2_Java的参数传递机制

文章目录 前言一、Java的参数传递机制都是值传递 1.基本类型的参数传递2.引用类型的参数传递总结 前言 学习Java的参数传递机制&#xff0c;基本类型的参数传递&#xff0c;引用类型的参数传递。 一、Java的参数传递机制都是值传递 值传递&#xff1a;指传输实参给方法的形参…

『功能项目』单例模式框架【37】

我们打开上一篇36C#拓展 - 优化冗余脚本的项目&#xff0c; 本章要做的事情是编写单例模式基类&#xff0c;让继承其基类的子类在运行时只存在一个&#xff0c;共有两个单例基类框架&#xff0c;分别是不继承MonoBehaviour的单例和继承MonoBehaviour的单例框架 首先编写不继承…

OpengGL教程(三)---使用VAO和VBO方式绘制三角形

本章参考官方教程&#xff1a;learnopengl-cn VertexShader.glsl #version 330 core layout(location 0) in vec3 position; layout(location 1) in vec3 color; uniform mat4 projection; // 投影矩阵 out vec4 ourColor; void main() {gl_Position projection * vec4(p…

Probabilistic Embeddings for Cross-Modal Retrieval 论文阅读

Probabilistic Embeddings for Cross-Modal Retrieval 论文阅读 Abstract1. Introduction2. Related work3. Method3.1. Building blocks for PCME3.1.1 Joint visual-textual embeddings3.1.2 Probabilistic embeddings for a single modality 3.2. Probabilistic cross-modal…

Xcode 16 RC (16A242) 发布下载,正式版下周公布

Xcode 16 RC (16A242) - Apple 平台 IDE IDE for iOS/iPadOS/macOS/watchOS/tvOS/visonOS 请访问原文链接&#xff1a;https://sysin.org/blog/apple-xcode-16/&#xff0c;查看最新版。原创作品&#xff0c;转载请保留出处。 作者主页&#xff1a;sysin.org Xcode 16 的新功…

开源项目低代码表单FormCreate中通过接口加载远程数据选项

在开源项目低代码表单 FormCreate 中&#xff0c;fetch 属性提供了强大的功能&#xff0c;允许从远程 API 加载数据并将其应用到表单组件中。通过灵活的配置&#xff0c;fetch 可以在多种场景下发挥作用&#xff0c;从简单的选项加载到复杂的动态数据处理。 源码地址: Github …

软考中项(第三版) 项目成本管理总结

前言 系统集成项目管理工程师考试&#xff08;简称软考中项&#xff09;&#xff0c;其中案例分析也是很大一部分考试内容&#xff0c;目前正在学习中&#xff0c;现总结一些可能会考到的知识点供大家参考。 1.1、项目成本管理总线索 1、项目成本失控的原因 &#xff08;1&a…

每日处理250亿个事件,Canva如何应对数据洪流

在这个数据被称为“新石油”的时代&#xff0c;如何有效地处理海量信息流显得尤为重要。作为广受欢迎的设计平台&#xff0c;Canva不仅因其用户友好的界面而备受关注&#xff0c;还因其高效利用Amazon Kinesis管理每日高达250亿个事件而成为热议焦点。让我们深入探讨Canva是如何…

Java 算法:随机抽题

✅作者简介&#xff1a;2022年博客新星 第八。热爱国学的Java后端开发者&#xff0c;修心和技术同步精进。 &#x1f34e;个人主页&#xff1a;Java Fans的博客 &#x1f34a;个人信条&#xff1a;不迁怒&#xff0c;不贰过。小知识&#xff0c;大智慧。 ✨特色专栏&#xff1a…

W外链怎么做微信推广链接?

"W外链"通常指的是一种可以创建短链接或者特殊功能的链接服务&#xff0c;这些链接可以用来在微信等社交平台上进行推广。由于微信对直接链接分享有一定的限制&#xff0c;使用这类服务可以帮助绕过这些限制&#xff0c;从而实现更有效的推广。 以下是使用W外链创建微…

Mysql JSON结果不能IN

开发中遇到这样一种场景&#xff0c;举例说音乐的专辑包含歌曲&#xff0c;假设歌曲放在music表&#xff0c;专辑放在album表&#xff0c;而专辑与歌曲的绑定关系&#xff0c;要么就存一个关联表music_ablum&#xff0c;要么就存一个json字段(music_list)在album表。 存一个关…

【Unity踩坑】使用Input System后UI EventSystem的冲突

在项目中使用Input System&#xff0c;在UI中添加了元素后&#xff0c;再次运行出现下面的错误&#xff1a; InvalidOperationException: You are trying to read Input using the UnityEngine.Input class, but you have switched active Input handling to Input System pac…

关于 vue/cli 脚手架实现项目编译运行的源码解析

1.vue项目运行命令解析 在日常开发中&#xff0c;vue 项目通过vue-cli-service脚手架包将项目运行起来&#xff0c;常用的命令例如&#xff1a; npm run serve npm run build 上述执行命令实际一般对应为项目中 package.json 文件的 scripts属性中编写的脚本命令&#xff0c;在…

亚马逊、沃尔玛、敦煌网、Target塔吉特、Temu环境搭建测评技术!

海外跨境电商各大主要平台正不断力推半托管模式&#xff0c;不断对商家开出众多吸引和扶持政策。全托管是指电商平台全面负责店铺的运营&#xff0c;包括仓储、配送、售后等&#xff0c;而商家主要负责提供货品。半托管模式则基本由商家自主经营&#xff0c;平台只负责仓配物流…

延迟退休,如何影响程序员?

随着人们对长寿的期待增加&#xff0c;延迟退休的趋势逐渐成为了现实。而对于已经面临35岁危机的程序员们来说&#xff0c;延迟退休可能是一个更常见的问题。 可以对照速查一下&#xff0c;延迟法定退休年龄时间表公布&#xff0c;你什么时候能退休&#xff1f; 对照速查&…

单机快速部署开源、免费的分布式任务调度系统——Apache DolphinScheduler

本文主要为大家介绍Apache DolphinScheduler的单机部署方式&#xff0c;方便大家快速体验。 环境准备 需要Java环境&#xff0c;这是一个老生常谈的问题&#xff0c;关于Java环境的安装与配置期望大家都可以熟练掌握。 验证java环境 java -version 下载安装包并解压 使用wg…

SRT3D: A Sparse Region-Based 3D Object Tracking Approach for the Real World

基于区域的方法在基于模型的单目3D跟踪无纹理物体的复杂场景中变得越来越流行。然而&#xff0c;尽管它们能够实现最先进的结果&#xff0c;大多数方法的计算开销很大&#xff0c;需要大量资源来实时运行。在下文中&#xff0c;我们基于之前的工作&#xff0c;开发了SRT3D&…