vue3.2 对el-table 树型结构数据的处理(干货)

2023-11-15

vue3.2 对el-table 树型结构数据的处理(干货)

将偏平数据转为树状结构的数据(封装了两种方法)

将一维数组处理成带children的el-tree树状数据结构

第一种方法:使用递归的方式处理偏平化数据

/**
 * @Method 使用递归的方式处理偏平化数据
 * @param {*} list 为需要处理的数组
 * @param {*} pid  为传入的顶级id
 */
const transTreeData = (list, pid) => {
  const treeData2 = []
  list.forEach((item) => {
    // 判断每一项的 ParentId 是否等于传入的顶级 pid 一致
    if (item.parent_id === pid) {
      /*  //tag: 如果有一致的数据,在将当前这一项的 id 作为顶级id对象传入   transTreeData */
      //    查看自己本身是否依然有子级分类,以此递归
      const children = transTreeData(list, item.good_type_id)
      // 判断返回的 children 进行判断
      // 如果返回空数组,说明没有子级分类,不做任何处理
      if (children.length) {
        item.children = children
      }
      /* 最终直接将当前数据 push 到treeData2即可 */
      treeData2.push(item)
    }
  })
  return treeData2
}

注意:parent_id 是后端传过来的父级id

​ good_type_id 是后端传过来的自身的id

第二种方法:通过使用filter的方法

/**
 * @methed 使用filter方法 把偏平数据结构处理成el-tree的树状数据格式
 * @param {*} list 为需要处理的数组
 */
function transTree(list) {
  const treeDataList = []
  list.forEach((item) => {
    if (item.parent_id === 0) {
      treeDataList.push(item)
    }
    const children = list.filter(
      (data) => data.parent_id === item.permission_id
    )
    if (!children.length) {
      return
    }
    item.children = children
  })
  return treeDataList
}

将下拉的按钮换到指定的列去

不知道大家在开发的过程中有没遇到中这种情况,就是要把下拉按钮放在el-table的指定那一列去,在通过element plus官网了解到一个type属性,其实方法很简单,看下图

这是正常树形数据table

image-20220702152340219

部分代码如下

image-20220702152727964

可以看到所有的下拉按钮都在第一列,目前需求是j将下拉按钮需要在第二列分类名称显示,只需要在分类名称前一个el-table-column分类ID上面添加个type属性就可以实现以下效果:

image-20220702153017955

image-20220702153051176

希望此文章对你有帮助,有什么问题可以提出来互相交流,谢谢

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

vue3.2 对el-table 树型结构数据的处理(干货) 的相关文章

  • 从 JavaScript 加载图像

    在我的专辑幻灯片放映页面上 我有类似的代码 span style display none img src imageUrl span span show loader span in showImage 我确定图像已加载 因此我显示图像并
  • Javascript 闭包 - 变量范围问题

    我正在阅读 Mozilla 开发者网站上有关闭包的内容 我注意到在他们的常见错误示例中 他们有以下代码 p Helpful notes will appear here p p E mail p
  • React hooks 状态变量在重新渲染后未更新

    在下面的示例中 我有一个想要更新的元素 水果 数组 并使用更新后的数组执行其他操作 在本例中保存更新后的列表 我的理解是重新渲染状态将更新 但它不在这里 或者状态更新和我的操作之间存在延迟 In the addFruit功能我可以看到 Pe
  • 为什么 IE9+ 上的网络浏览器不支持 document.createEvent 以及如何修复它?

    我使用的是 Windows 8 Internet Explorer 10 Visual Studio 2013 这是 JavaScript 代码 function simulate element eventName var options
  • 如何在 Lambda 中将对象上传到 S3?

    似乎无法将对象上传到 Lambda 中的 S3 本地一切正常 日志中没有错误可以显示出了什么问题 代码如下 console log Loading function var AWS require aws sdk var s3 new AW
  • Javascript“this”在 IE 中丢失上下文

    以下在 firefox safari chrome 中工作正常 在 IE 中 this 似乎在 handleEvent 函数中丢失上下文 警报的结果是 object Window 这不是我想要的 当从handleEvent 输出时 this
  • 如何使传单圆圈标记可拖动?

    使用传单 我创建了一个L circleMarker我希望它是可拖动的 var marker L circleMarker new L LatLng 48 94603 2 25912 draggable true bindPopup Circ
  • CryptoJS 使用密码加密 AES,但 PHP 解密需要密钥

    我在用CryptoJS https code google com p crypto js AES加密字符串 function doHash msg msg String msg var passphrase aggourakia var
  • JS文件中的System.register是什么意思?

    在 Angular 2 中使用指令时 JS 文件中的 System register 是什么意思 我认为这个问题并不特定于 Angular2 中的指令 它是关于 ES6 TypeScript 和其他使用 SystemJS 的现代编译器的一般
  • 在 Cordova 中合并文件的多个部分

    在我的 Cordova 应用程序中 我正在下载任意文件 例如图像或视频文件 这是通过 Cordova 文件传输插件和 Range 标头完成的 因为我需要分段下载文件 我的问题是 我想将几 个小 字节 文件合并回原来的文件中 他们曾经在其中使
  • vue-chartjs 反应数据错误

    我正在尝试使用反应式数据混合vue chartjs http vue chartjs org home id reactive data 用于设置初始数据的已安装函数正在运行 我可以使用 API 响应正确查看图表 fetchSessionT
  • 有没有办法在 React 中自动播放音频而不使用 onClick 事件?

    我在尝试在 componentDidMount 中播放音频时收到此错误 未捕获 承诺中 DOMException play 失败 因为用户没有先与文档交互 componentDidMount document getElementById
  • 由于 MIME 类型而导致资源被阻止?

    多年来我已经成功地包含动态创建的 javascript 文件 这是一个例子 https granadainfo com sups php locs 95 https granadainfo com sups php locs 95 正如你所
  • Twitter Bootstrap - 下拉菜单 - 箭头键不适用于 Firefox 中的输入标签

    要求 我想在带有用户名和密码字段的下拉菜单中放置一个登录表单 我可以做到这一点 除了以下问题之外 一切正常 Issue 打字时我无法使用箭头键 上 下 firefox 当输入位于下拉代码之外时 这很有效 这适用于其他浏览器 例如 googl
  • jslint 配置 |传递全局变量

    我如何提醒 jshint 我有全局变量 即命名它们 我知道你可以做到这一点 但我不记得语法了 我在这里定义了一个全局的 function window glob1 local var 稍后像这样使用 不同的 IIFE function gl
  • 纯 JS 相当于 Jquery eq()

    jquery 的纯等价物是什么eq 例如 我怎样才能实现 class1 class2 eq 0 text 1254 在纯 JavaScript 中 要获取数组中的元素索引 可以使用 在 JavaScript 中 因此 要重现您的代码 您可以
  • Angular UI-Router:多个 URL 到单一状态

    我已经开始使用 Angular 的 ui router 并且我正在尝试弄清楚如何让多个 URL 引用单个状态 例如 orgs 12354 overview retyrns the same pages as org overview 我的
  • 在 UIWebView 中禁用复制和粘贴

    几乎 我已经尝试了一切方法来禁用复制 粘贴UIWebView但对我来说没有任何作用 我正在加载我的UIWebView来自字符串 字符串数组 如下所示 webView loadHTMLString NSString stringWithFor
  • 对使用“new”创建的数组上“map”的行为感到困惑[重复]

    这个问题在这里已经有答案了 我对结果感到困惑mapping 使用创建的数组new function returnsFourteen return 14 var a new Array 4 gt undefined x 4 in Chrome
  • 如何将数据推送到嵌套对象

    如何将另一个元素推入variables来自以下对象的属性 var request name Name id 3 rules name Rule name tags tagId 1 variables variable var1 matchT

随机推荐

  • 【云原生之Docker实战】使用Docker部署个人FireflyIII财务系统

    云原生之Docker实战 使用Docker部署个人FireflyIII财务系统 一 FireflyIII介绍 1 FireflyIII简介 2 FireflyIII特点 二 检查本地环境 1 检查系统版本 2 检查docker版本 3 检查
  • 数据可视化各个图表

    阶梯图 import pandas as pd from matplotlib import pyplot as plt postage pd read csv r http datasets flowingdata com us post
  • 请说说接口和抽象类的区别?

    1 从使用目的来看 接口只是一个类间的协议 它并没有规定怎么去实现 抽象类可以重用你代码使你的代码更加简洁 2 从行为来看 接口可以多继承 multi implement 抽象类不能实例化 必须子类化才能实例化 3 从属性来看 接口的属性必
  • VOSviewer

    1 文献下载 按需求搜索 wos一次只能导出500条文献信息 如果相关文献过多 可以按被引排序 导出 制表符分隔文件 全记录与引用的参考文献 2 可视化实现 打开VOSviewer软件 单击左区Map下的create 选择 create a
  • 计算机页面设置代码,计算机二级考试Access辅导:页面设置模块代码分享

    Dim up dn le ri si liAs Single co As string 定义边距及页面函数 Sub ymszmk strName As String 页面设置模块On Error GoTo Err ymszmkIf Nz D
  • 【软件测试】如何在笔试中设计一个好的测试用例

    测试用例的重要性 如何以最少的人力 资源投入 在最短的时间内完成测试 发现软件系统的缺陷 保证软件的优良品质 则是软件公司探索和追求的目标 软件测试是有组织性 步骤性和计划性的 为了能将软件测试的行为转换为可管理的 具体量化的模式 需要创建
  • DNS介绍,哪个好,速度快稳定

    介绍 打个比方 你电脑是你家 你家地址是一个IP 你要拜访百度的家 那肯定要知道百度家在哪里 你知道baidu com 但是电脑访问的是网络地址 是数字 其它的他都不认识 百度家IP是220 181 38 148 但是你记不住 你电脑也不知
  • el-dialog弹出层扩展拖拽及拉伸以及双击全屏

    import Vue from vue 使用方法 将以下代码复制到一个js文件中 然后在入口文件main js中import引入即可 给elementUI的dialog上加上 v dialogDrag 指令就可以实现弹窗的全屏和拉伸了 给d
  • Python之虚拟环境venv实战详解

    目录 简介 虚拟环境实战 创建虚拟环境 激活虚拟环境 虚拟环境测试 停止虚拟环境 小结 简介 Python 应用程序通常会使用不属于标准库的包和模块 应用程序有时需要特定版本的库 因为应用程序可能需要修复特定的错误 或者应用程序可能使用库接
  • 我与边缘计算 - [Jetson Xavier] - [浪潮边缘主机环境拓荒]

    目录 目的 过程 1 opencv 2 darknet 3 TensorRT 附录1 blas lapack cblas在Ubuntu上的安装 1 确保机器上安装了gfortran编译器 如果没有安装的话 可以使用 2 下载blas cbl
  • 日常小记,待转语雀

    java中的fast fail机制 r1 12king 博客园概念 fail fast 机制是java集合 Collection 中的一种错误机制 当多个线程对同一个集合的内容进行操作时 就可能会产生fail fast事件 分析 先看一个代
  • 如何在IDEA中创建一个项目

    首先双击IDEAjava运行环境 也就是双击程序啦 点击Create New Project 开始创建一个新的项目 然后点击下一步 next 然后作为小白 不需要勾选下面选项 接着下一步即可 多动动手啦 然后就是给项目名命 名命完以后直接F
  • C++ 多线程编程

    转自 C 标准线程库之共享资源 1 带普通互斥锁的多线程案例 include
  • 4.5创建型模式—————建造者模式(Bulider模式)

    在软件开发过程中有时需要创建一个复杂的对象 这个复杂对象通常由多个子部件按一定的步骤组合而成 例如 计算机是由 OPU 主板 内存 硬盘 显卡 机箱 显示器 键盘 鼠标等部件组装而成的 采购员不可能自己去组装计算机 而是将计算机的配置要求告
  • iOS快捷指令:执行Python脚本(利用iSH Shell)

    文章目录 前言 核心逻辑 配置iSH 安装Python 创建Python脚本 配置启动文件 测试效果 快捷指令 前言 iOS快捷指令所能做的操作极为有限 假如快捷指令能运行Python程序 那么可操作空间就瞬间变大了 iSH是一款免费的iO
  • 恶意代码分析——基础技术篇

    文章目录 恶意代码分析目的 恶意代码分析方法 恶意代码种类 恶意代码静态分析 环境 在线反病毒引擎 获取哈希值 certutil hanshfile path MD5 查找字符串hive string ida火绒剑 加壳 查壳 文件加壳 使
  • mac下使用brew下载软件卡住的处理办法

    方法1 control c 方法2 换成其他的镜像源 比较麻烦 以后再整理 先能用就行
  • [课程复习] 软件工程导论之经典题目回顾 (一)选择题、填空题1

    作者最近在复习考博 乘此机会分享一些计算机科学与技术 软件工程等相关专业课程考题 一方面分享给考研 考博 找工作的博友 另一方面也是自己今后完成这些课程的复习资料 同时也是在线笔记 基础知识 希望对您有所帮助 不喜勿喷 软件工程导论 张海藩
  • docker nexus3磁盘空间满,扩容后导致NullPointerException问题

    文章目录 Nexus修复文档 问题描述 修复过程 遇到的坑 Nexus修复文档 问题描述 公司内部一个私有jar无法上传至服务器 后进入nexus 查看日志 发现报disk异常 查看磁盘占用 只剩几百兆的磁盘在那边瑟瑟发抖了 后公司网管在双
  • vue3.2 对el-table 树型结构数据的处理(干货)

    vue3 2 对el table 树型结构数据的处理 干货 将偏平数据转为树状结构的数据 封装了两种方法 将一维数组处理成带children的el tree树状数据结构 第一种方法 使用递归的方式处理偏平化数据 Method 使用递归的方式