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

server/2024/9/20 7:26:53/ 标签: vue.js, 前端, javascript

一、功能需求

      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.ppmy.cn/server/117678.html

相关文章

golang学习笔记24——golang微服务中配置管理问题的深度剖析

推荐学习文档 golang应用级os框架&#xff0c;欢迎stargolang应用级os框架使用案例&#xff0c;欢迎star案例&#xff1a;基于golang开发的一款超有个性的旅游计划app经历golang实战大纲golang优秀开发常用开源库汇总想学习更多golang知识&#xff0c;这里有免费的golang学习笔…

labview串口大数据量报错的一种解决思路(通过tcp进行写入和读取串口数据)

因为项目要求&#xff0c;用labview给客户开发了一个上位机&#xff0c;在现场给客户调试上位机时&#xff0c;发现了几种奇怪的现象 1&#xff1a;客户样件有两路串口&#xff0c;一路串口可以多字节进行发送数据&#xff0c;一路只能单字节发送数据&#xff0c;每次单字节数据…

安全工具 | 使用Burp Suite的10个小tips

Burp Suite 应用程序中有用功能的集合 img Burp Suite 是一款出色的分析工具&#xff0c;用于测试 Web 应用程序和系统的安全漏洞。它有很多很棒的功能可以在渗透测试中使用。您使用它的次数越多&#xff0c;您就越发现它的便利功能。 本文内容是我在测试期间学到并经常的主要…

floodfill+DFS(1)

文章目录 图像渲染岛屿数量岛屿的最大面积被围绕的岛屿 图像渲染 class Solution { public:int m 0, n 0;bool check[51][51] {false};vector<vector<int>> floodFill(vector<vector<int>>& image, int sr, int sc, int color) {m image.size…

SpringSecurity 5

Spring认证和授权异常处理_exceptionhandling().authenticationentrypoint-CSDN博客 springSecurity是spring的一个顶级项目 也是一个安全框架&#xff0c;可以在spring框架中直接引用。 springSecurity基于RBAC用来处理登录功能和各种权限校验。 〇、配置和运行springSecurit…

SVN笔记-SVN安装

SVN笔记-SVN安装 1、在windows下安装 SVN 1、准备svn的安装文件 下载地址&#xff1a;https://sourceforge.net/projects/win32svn/ 2、下载完成后&#xff0c;在相应的盘符中会有一个Setup-Subversion-1.8.17.msi的文件&#xff0c;目前最新的版本是1.8.17&#xff0c; 这里…

Windows 安装 ZooKeeper 以及 IDEA 安装 zoolytic 连接工具

目录 前言 下载 解压 配置 启动服务 zoolytic 前言 在前公司做微服务开发时&#xff0c;使用的都是 Spring Cloud 的生态&#xff0c;服务的注册与发现中心用的 Eureka&#xff0c;也有使用 Nacos 的&#xff0c;远程调用则是用的 OpenFeign&#xff0c;换工作后&#x…

http网络请求与下载进度

Http_request 目录 一、XMLHttpRequest 在使用 Fetch API 进行网络请求时&#xff0c;原生的 Fetch API 并不直接支持获取下载进度的功能&#xff0c;因为 Fetch API 主要是基于 Promise 的&#xff0c;它主要关注于请求的成功或失败&#xff0c;以及响应数据的处理&#xff…

xml中SQL执行错误(使用另外一张表的两个字段,组装SQL的where查询条件)

SQL实现功能描述&#xff1a;根据系统设置中的商店到期提醒周期、单位&#xff0c;在过期提醒的列表中&#xff0c;对数据进行周期展示 错误复现&#xff1a; Mapper接口中抽象方法的定义如下&#xff1a; Page<ShopVo> queryList(Param(“vo”) ShopVo shopVo ,Page&…

四个pdf软件分享,你更爱哪一款?

如果说现在用的最多的电子文档是什么&#xff0c;不是Word就是PDF&#xff0c;所以PDF编辑器几乎成了我们日常工作中不可或缺的工具。但面对市面上琳琅满目的PDF编辑器&#xff0c;到底哪一款才是你的菜呢&#xff1f;今天&#xff0c;我就来和大家聊聊我用过的四款编辑器&…

部署Prometheus+Grafana批量监控Linux服务器

在 Linux 服务器上使用 Docker 容器快速部署 Prometheus 和 Grafana 监控系统&#xff0c;同时通过 node_exporter 采集全面的系统性能数据。整个流程涵盖了从环境配置到搭建一个全面监控平台的每个步骤。 一键安装Node Exporter Node Exporter 是 Prometheus 生态系统中的一个…

Nacos与Eureka的区别:深入解析微服务中的服务注册与发现

在微服务架构中&#xff0c;服务注册与发现是确保各个服务之间高效通信与协调的重要机制。随着云原生应用的快速发展&#xff0c;服务治理的需求也在不断增长。在这一背景下&#xff0c;Nacos和Eureka作为两种主流的服务注册与发现工具&#xff0c;各具特色和优势。本文将深入分…

除了字符串前导的*号之外,将串中其它*号全部删除

要求 假定输入的字符串中只包含字母和*号。请编写函数fun&#xff0c;它的功能是:除了字符串前导的*号之外&#xff0c;将串中其它*号全部删除。在编写函数时&#xff0c;不得使用C语言提供的字符串函数。函数fun中给出的语句仅供参考。 例如&#xff0c;字符串中的内容为:-**…

GBase 8s数据类型与java.sql.Types对应关系

GBase 8s数据类型与java.sql.Types对应关系 GBase 8s类型类型java.sql.Typesjava类型名称SMALLINT5SMALLINTINTEGER4INTEGERBIGINT-5BIGINTINT8-5BIGINTSMALLFLOAT7REALFLOAT8DOUBLEDECIMAL3DECIMALMONEY3DECIMALCHAR1CHARNCHAR1CHARVARCHAR12VARCHARNVARCHAR12VARCHARVARCHAR…

基于Vue.js的超市商品管理导购中心设计与实现(任务书)

本科毕业论文&#xff08;设计&#xff09;任务书 学院&#xff1a;数学与数据科学学院 学生姓名 专业班级 信息与计算科学202班 学号 校内指导教师姓名 职称/职务 副教授 签名 校外指导教师姓名 职称/职务 工程师 签名 论文题目 基于Vue.js的超市商品管理导购中心 起始日期…

Web安全与网络安全:SQL漏洞注入

Web安全与网络安全&#xff1a;SQL漏洞注入 引言 在Web安全领域&#xff0c;SQL注入漏洞&#xff08;SQL Injection Vulnerability&#xff09;是一种极具破坏性的安全威胁。它允许攻击者通过向Web应用程序的输入字段中插入或“注入”恶意的SQL代码片段&#xff0c;从而操纵后…

uni-app 应用名称 跟随系统语言 改变

官方已确认BUG:&#xff1a;https://ask.dcloud.net.cn/question/164804 { "name" : "%app.name%",//这里随便写&#xff0c;配置了 locales,name 就不生效了 "appid" : "", "description" : "", "versi…

Pytorch详解-Pytorch核心模块

Pytorch核心模块 一、Pytorch模块结构_pycache__Cincludelibautogradnnoptimutils 二、Lib\site-packages\torchvisiondatasetsmodelsopstransforms 三、核心数据结构——Tensor&#xff08;张量&#xff09;在深度学习中&#xff0c;时间序列数据为什么是三维张量&#xff1f;…

基于鸿蒙API10的RTSP播放器(七:亮度调节功能测试)

目标&#xff1a; 当我的手指在设备左方进行上下移动的时候&#xff0c;可以进行屏幕亮度的调节&#xff0c;在调节的同时&#xff0c;有实时的调节进度条显示 步骤&#xff1a; 界面逻辑&#xff1a;使用Stack() 组件&#xff0c;完成音量图标和进度条的组合显示&#xff0c…

Kubernetes Pod镜像的3种状态

Kubernetes Pod镜像的3种状态 1. Pending状态2. Running状态3. Unknown状态💖The Begin💖点点关注,收藏不迷路💖 1. Pending状态 定义:Pod已被创建但尚未启动。 原因: 资源不足(CPU、内存等)。调度策略或标签选择器不匹配。镜像正在从仓库下载中。解决方案:检查资…