返回顶部
首页 > 资讯 > 前端开发 > VUE >表格合并span-method方法的示例分析
  • 970
分享到

表格合并span-method方法的示例分析

2024-04-02 19:04:59 970人浏览 安东尼
摘要

这篇文章将为大家详细讲解有关表格合并span-method方法的示例分析,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。之前写了一些关于element-ui表格合并的方法,

这篇文章将为大家详细讲解有关表格合并span-method方法的示例分析,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。

之前写了一些关于element-ui表格合并的方法,不过用的数据都是确定的数据(死数据),但是很多时候我们的数据都是通过后台获得的,数据不稳定,这个时候使用表格合并就需要先处理一下数据,先看一下一种很常见的数据展示场景

表格合并span-method方法的示例分析

直接上代码,html代码就不放了,都是差不多的,下面另一种场景有

// 模拟后台返回的值
  getTable () {
   this.tableData = [{
    id: 1,
    region: '中国',
    type: [{
     sortName: '器械',
     sortList: [{
      name: '器械1'
     }, {
      name: '器械2'
     }]
    }, {
     sortName: '软件',
     sortList: [{
      name: '软件1'
     }, {
      name: '软件2'
     }, {
      name: '软件3'
     }]
    }]
   }, {
    id: 2,
    region: '美国',
    type: [{
     sortName: '器械',
     sortList: [{
      name: '器械1'
     }, {
      name: '器械2'
     }]
    }, {
     sortName: '软件',
     sortList: [{
      name: '软件1'
     }, {
      name: '软件2'
     }]
    }]
   }]
   this.dealTable()
  },

  // 处理表格数据
  dealTable () {
   let getDate = [] // 存储新表格数据
   let typeIndex = [0] // 保存id,地区需要合并的值
   let nameIndex = [0] // 保存类型需要合并的值
   let a // id,地区需要合并的行是所有类型的长度
   this.tableData.forEach((v, index) => {
    if (v.type && v.type.length) {
     a = 0
     v.type.forEach((subV, i, typeData) => {
      if (subV.sortList && subV.sortList.length) {
       subV.sortList.forEach((ss, k, data) => {
        if (k === data.length - 1) {
         typeIndex.push(data.length) // 把每一个类型下面数据长度存起来
         a += data.length // 把所有类型下面的数据长度相加
         if (i === typeData.length - 1) {
          nameIndex.push(a) // 类型循环完成后把数据长度存起来
         }
        }
        getDate.push({
         id: v.id,
         region: v.region,
         type: subV.sortName,
         name: ss.name
        })
       })
      }
     })
    }
   })

   console.log(nameIndex)
   // [0, 5, 4]
   // 看一下打印出来的规律,除去第一项,5是第一次需要合并的行
   // 第二次合并又是从第五行开始合并4行

   console.log(typeIndex)
   // [0, 2, 3, 2, 2]
   // 类型的数据存储规律也是一样,第一次合并2行
   // 第二次从2行开始,合并3行,以此类推

   // 根据这个规则,只需要给数据加上两个额外的属性控制是否合并就OK
   let k = 0
   let t = 0
   nameIndex.forEach((v, i, nameArr) => {
    if (nameArr[i + 1]) {
     getDate[k].nameIndex = nameArr[i + 1]
     k += nameArr[i + 1]
    }
   })

   typeIndex.forEach((v, i, typeArr) => {
    if (typeArr[i + 1]) {
     getDate[t].typeIndex = typeArr[i + 1]
     t += typeArr[i + 1]
    }
   })
   this.tableData6 = getDate
   console.log(getDate)
   // 0: {id: 1, name: "器械1", nameIndex: 5, region: "中国", type: "器械", typeIndex: 2},
   // 1: {id: 1, name: "器械2", region: "中国", type: "器械"}
   // ....
   // 5: {id: 2, name: "器械1", nameIndex: 4, region: "美国", type: "器械", typeIndex: 2}
  },

  // 表格合并方法
  arraySpanMethod ({ row, column, rowIndex, columnIndex }) {
   if (columnIndex === 0 || columnIndex === 1) {
    if (row.nameIndex) { // 如果有值,说明需要合并
     return [row.nameIndex, 1]
    } else return [0, 0]
   }
   if (columnIndex === 2) {
    if (row.typeIndex) {
     return [row.typeIndex, 1]
    } else return [0, 0]
   }
  },

再说一下另一种场景,用的另一种方法实现,原理都是大同小异

表格合并span-method方法的示例分析

假设后台返回的数据是这样的:

表格合并span-method方法的示例分析

在这种情况下,一般我们会选择对行进行合并,因为这时候表格的列是知道的,只要把需要合并的列提取出来,合并行就OK,下面看代码

<el-table
  :data="tableData6"
  :span-method="arraySpanMethod"
  border
  >
  <el-table-column
   prop="id"
   label="ID"
   width="180">
  </el-table-column>
  <el-table-column
   prop="region"
   label="深圳">
  </el-table-column>
  <el-table-column
   prop="type"
   label="类型">
  </el-table-column>
  <el-table-column
   prop="company"
   label="企业名称">
  </el-table-column>
 </el-table>

js代码,首先需要处理一下后台数据

表格合并span-method方法的示例分析

getIndex () {
   let arr = []
   let s = 0
   let table = this.tableData6
   let getTable = []
   table.forEach((item, i, data) => {
    if (arr.length) {
     s = arr[arr.length - 1].row + data[i - 1].company.length
    }
    arr.push({
     row: s,
     index: item.company.length
    })
    if (item.company && item.company.length) {
     item.company.forEach(subItem => {
      getTable.push({
       id: item.id,
       region: item.region,
       type: item.type,
       company: subItem.name
      })
     })
    }
   })
   this.arr = arr
   this.tableData6 = getTable
  },

数据处理之后就进行表格合并

// 合并表格方法
  arraySpanMethod ({ row, column, rowIndex, columnIndex }) {
   if (columnIndex === 0 || columnIndex === 1 || columnIndex === 2) {
    let obj = [0, 0]
    this.arr.some(v => {
     if (rowIndex === v.row) {
      obj = [v.index, 1]
     }
    })

    return obj
   }
  }

PS: 在这里说一下楼主遇到的一个坑,其实也是因为对函数的return不熟悉造成的,一开始我是这样写的,

表格合并span-method方法的示例分析

结果页面一直不对,debugger了一下,发现函数中根本没接收到return回去的数据,这是因为我return之后又写了代码,函数真正结束时没有返回值.所以在函数中,return之后就不要在写执行代码了.

表格合并span-method方法的示例分析

表格合并span-method方法的示例分析

正确的写法后debugger就能接收到正确的返回值了

表格合并span-method方法的示例分析

关于“表格合并span-method方法的示例分析”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,使各位可以学到更多知识,如果觉得文章不错,请把它分享出去让更多的人看到。

--结束END--

本文标题: 表格合并span-method方法的示例分析

本文链接: https://lsjlt.com/news/80414.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • 表格合并span-method方法的示例分析
    这篇文章将为大家详细讲解有关表格合并span-method方法的示例分析,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。之前写了一些关于element-ui表格合并的方法,...
    99+
    2024-04-02
  • layui数据表格跨行自动合并的示例分析
    这篇文章将为大家详细讲解有关layui数据表格跨行自动合并的示例分析,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。需求描述:在数据表格中,对于按某个分类展示数据其分类下又...
    99+
    2024-04-02
  • navicat合并表格的方法
    这篇文章主要介绍navicat合并表格的方法,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!  可应用操作系统:Windows、macOS、Linux  可应用 Navicat 产品:...
    99+
    2024-04-02
  • getdata table表格数据join mysql方法的示例分析
    这篇文章主要为大家展示了“getdata table表格数据join mysql方法的示例分析”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“getdata ta...
    99+
    2024-04-02
  • awk多行合并的示例分析
    今天就跟大家聊聊有关awk多行合并的示例分析,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。awknext语句使用:在循环逐行匹配,如果遇到next,就会跳过当前行,直接忽略下面语句。...
    99+
    2023-06-13
  • Git高级合并方法实例分析
    本篇内容介绍了“Git高级合并方法实例分析”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!高级合并在 Git 中合并是相当容易的。 因为 Gi...
    99+
    2023-06-29
  • element表格行列的动态合并示例详解
    目录效果图代码详解数据结构行合并列合并完整代码+注释效果图 合并行 合并列 element的table提供了合并行或者列的方法,并且有一个示例,传送入口:element.elem...
    99+
    2024-04-02
  • Layui数据表格之单元格编辑方式的示例分析
    这篇文章将为大家详细讲解有关Layui数据表格之单元格编辑方式的示例分析,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。开发工具与关键技术:VS、layui数据表格之单元格...
    99+
    2024-04-02
  • 支持Angular2表格控件的示例分析
    这篇文章主要为大家展示了“支持Angular2表格控件的示例分析”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“支持Angular2表格控件的示例分析”这篇文章吧...
    99+
    2024-04-02
  • 前端把html表格生成为excel表格的示例分析
    这篇文章主要介绍前端把html表格生成为excel表格的示例分析,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!<!DOCTYPE html> <html&...
    99+
    2024-04-02
  • css魔法组合的示例分析
    这篇文章主要介绍css魔法组合的示例分析,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!魔法组合这个小组合实际上可以防止你在 HTML 中遇到的大多数布局错误的问题。我们确实不希望水平滑块或绝对定位的项目做他们想做的事...
    99+
    2023-06-27
  • python字典合并操作符的示例分析
    这篇文章主要介绍了python字典合并操作符的示例分析,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。python的五大特点是什么python的五大特点:1.简单易学,开发程序...
    99+
    2023-06-14
  • Vue elementUI表单嵌套表格并对每行进行校验的示例分析
    这篇文章主要介绍Vue elementUI表单嵌套表格并对每行进行校验的示例分析,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!效果展示先看看这是不是需要的效果^_^如图,ElementUI 表单里嵌套了表格...
    99+
    2023-06-22
  • JavaScript方法的示例分析
    小编给大家分享一下JavaScript方法的示例分析,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!在一个对象中绑定函数,称为这个...
    99+
    2024-04-02
  • JavaScript中合并和克隆对象的示例分析
    小编给大家分享一下JavaScript中合并和克隆对象的示例分析,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!当我们想要复制原始值和引用值(对象)时,它们的行为会大不相同。原始值我们假设一个变量 name 具有一个与之关联...
    99+
    2023-06-15
  • java集合的示例分析
    这篇文章主要介绍了java集合的示例分析,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。一、简介1、java集合框架图从上面的集合框架图可以看到,Java 集合框架主要包括两种...
    99+
    2023-06-20
  • html5中div与span html块级元素的示例分析
    这篇文章主要为大家展示了“html5中div与span html块级元素的示例分析”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“html5中div与span h...
    99+
    2024-04-02
  • CSS样式表与格式布局的示例分析
    小编给大家分享一下CSS样式表与格式布局的示例分析,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!样式表CSS(Cascading Style Sheets&nbs...
    99+
    2023-06-08
  • Java中方法的示例分析
    这篇文章给大家分享的是有关Java中方法的示例分析的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。什么是方法例如:System.out.println();其结构为-->类.对象.方法;其含义为-->调...
    99+
    2023-06-20
  • java8集合求差集、并集、交集的示例分析
    这篇文章将为大家详细讲解有关java8集合求差集、并集、交集的示例分析,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。前言java8里最大亮点是lambda,让我们用习惯C# linq的语法,也能眼前一亮。...
    99+
    2023-05-30
    java8
软考高级职称资格查询
推荐阅读
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作