组织树实现新增、修改、删除

js树形数据的增删改查(递归) js 树形结构的增删改查 阅读详情

首先先来看一下数据结构

 

 

这是典型的树结构,组织树接口返回的结构都是这样的,每个对象下都有个children字段,这个children就是子节点,如果需要实现添加只需要在点击添加时给点击对象的children字段下在push一条数据就行

新增

    // 递归算法 创建用户树结构
    // 递归遍历树,通过map遍历直接修改原数组数据,数组其他的数据不变
    getNewTree(obj) {
      obj.map(item => {
        if (item.id == this.addId) {
          // console.log('打印', item.id, this.addId)
          item.children.push({
            bzValue: this.form.region,
            zbname: this.treeName,
            level: item.level + 1,
            // id: this.form.name,
            zbid: this.form.name,
            zbrange: { describes: '' },
            fzbid: item.id,
            children: []
          })
          this.$message.success('新增成功')

        }

        if (item.children && item.children.length > 0) {
          this.getNewTree(item.children)
        }
      })
      return obj
    },

这里使用的是递归函数,一层一层往下匹配,当匹配不到时把children当成数组传给方法本身,自身在调用一次,直到匹配到数据,然后使用数组方法push在children下添加数据

删除

    // 递归取fzbid
    deleteTreeCode(obj, id) {
      obj.map((item, index) => {
        if (item.id == id) {
          this.handleDelete(this.treeList, item.fzbid, item.id)
        }
        if (item.children && item.children.length > 0) {
          this.deleteTreeCode(item.children, id)
        }
      })
      return obj
    },
    // 递归删除节点
    handleDelete(obj, fzbid, id) {
      obj.map((item) => {
        if (item.id == fzbid) {
          console.log(item.children.length, 789);
          for (let v = 0; v < item.children.length; v++) {
            if (item.children[v].id == id) {
              console.log(v.id, id);
              item.children.splice(v, 1)
              this.$message.success('删除成功')
              this.handleTreeInfo()

            }
          }
        } else if (fzbid == 1) {
          this.treeList = []
          this.$message.success('删除成功')
          this.handleTreeInfo()

        }
        if (item.children && item.children.length > 0) {
          this.handleDelete(item.children, fzbid, id)
        }
      })
      return obj
    },

因为我这里的需求是删除的时候点击的节点也需要删除,思路就是获取到点击节点的父id通过父id去查找节点的父级把children置空就能实现删除,这里接口返回的父id字段是fzbid

修改

  // 指标树节点打开弹框
    onClick(v, data, type) {
      this.addId = data.id
      this.drawer = true
      this.type = type
      if (type == 2) {
        this.form.name = data.zbname
        this.form.region = data.bzValue
      }
    },

修改时需要先回显数据,打开弹窗的时候判断状态,1是新增2是修改,修改时给v-model赋值

   // 新增指标树节点提交数据
    onSubmit() {
      if (this.type == 1) {
        console.log(this.getNewTree(this.treeList), "新增成功");/* 新增 */
        this.handleTreeInfo()
      } else {
        console.log(this.onEdit(this.treeList), "修改成功"); /* 修改 */
      }
      this.drawer = false/* 关闭弹窗 */

    },
    // 修改指标树
    onEdit(obj) {
      obj.map((item, index) => {
        if (item.id == this.addId) {
          // item.zbname = this.form.name
          this.zbList.map(v => {
            console.log(v.id, "iddd", this.form.name);
            if (v.id == this.form.name) {
              item.zbname = this.treeName
              item.bzValue = this.form.region
              item.zbid = this.zbid
            }
          })
          this.$message.success('修改成功')
          this.handleTreeInfo()

        }
        if (item.children && item.children.length > 0) {
          this.onEdit(item.children)
        }
      })
      return obj

    },

组织树结构后端实现 前言 最近遇到一个显示树结构的问题,需要将结果以树的形式进行展示,想着这个东西其实很普遍很常见,所以在网上找了两个方法+自己想的一个笨办法,现此进行简单思路说明总结。 参考链接 https://blog.csdn.net/ldllovegyh/article/details/102692948 https://blog.csdn.net/weixin_39819191/article/details/84180652?utm_medium=distribute.pc_relevant.none-ta 阅读详情

相关推荐

一文带你吃透js处理树状结构数据的增删改查

最近在开发一个后台管理系统的权限管理模块,涉及到各种树状结构的数据处理逻辑,例如:增,删,改,查等;相比普通的数组结构数据,树状结构的处理就没有数组那么的直观,但是也没那么复杂,需要多一步——递归查找来对数据进行深度遍历操作,那么这里呢,博主也将开发过程中总结出来的方法分享给大家,一文带你吃透JS树装结构数据处理: 1、新增节点 2、删除节点 3、修改节点 4、查找节点.........

风中追风 6370

JS树形数据递归改造

递归改造树形数据

qq_45232251的博客 2512

HC32F460的GPIO重映射实战:如何用3步搞定SPI引脚冲突问题

本文详细介绍了HC32F460的GPIO重映射功能,通过三步操作解决SPI引脚冲突问题。文章解析了HC32F460的FuncGroup功能分组机制,提供了具体的寄存器配置步骤和验证技巧,并对比了与传统方案的性能优势,帮助工程师灵活配置引脚,优化硬件设计。

t4y5u6i7o的博客 918

【vue】设计组织机构树,增删改查,右键导航树弹出菜单对点前节点增删改,特殊字符校验

设计组织机构树,增删改查,右键导航树弹出菜单对点前节点增删改,特殊字符校验

fruge365的博客 1275

从零搭建云手机:基于Docker与KVM的实战指南

本文提供了一份基于Docker与KVM从零搭建私有云手机的实战指南。详细介绍了服务器配置选择、KVM虚拟化环境检查、Docker容器部署以及通过VNC进行远程访问的全过程。该方案轻量高效,适合应用测试、手游多开及自动化脚本运行等场景,帮助用户低成本拥有高性能云端安卓设备。

weixin_29208327的博客 558

魔百和CM211-1刷Armbian全流程:从安卓盒子到Linux服务器的完美变身

本文详细介绍了如何将魔百和CM211-1机顶盒刷入Armbian系统,实现从安卓盒子到Linux服务器的完美变身。涵盖硬件兼容性验证、固件选择、刷机流程、系统优化及常见问题解决,特别适合技术爱好者低成本搭建家庭NAS或开发环境。

weixin_30329623的博客 240

mysql建立的一个自动更新组织树案案例

组织树实现案例 一、实现功能: 根据组织基表organizitions,更新组织树子树表orgs,子树表包括每个组织树的节点为顶点子树,以及带层级格式子树。新增,删除,修改组织树基表organizitions,同时修改组织树子树表orgs。删除organizitions时,如果该节点具有子树节点,需要完成所有的子树删除后,才能删除该节点。 组织树举例: 子树排序顺序:1,2,4,6,3,...

weixin_30500289的博客 214

保姆级教程:在RK3588开发板上驱动多路MIPI摄像头(从VICAP配置到ISP调优)

本文详细介绍了在RK3588开发板上驱动多路MIPI摄像头的完整流程,从VICAP配置到ISP调优的全方位解析。通过硬件架构分析、开发环境搭建、设备树配置、V4L2数据采集以及ISP图像调优等步骤,帮助开发者高效实现多路摄像头驱动,适用于工业检测和智能安防等领域。

weixin_42552315的博客 390

实现组织树和增删改查 国电南瑞前端考试题目

这是一个非常基础的 组织树 前端项目,不需要搭建环境,只需要引入一个 vue 库即可,复制粘贴代码块到 TXT 文本另存为 html 双击打开就能用。我是没想到这次考试内容居然是在 A4 纸上用水性笔手写出来一棵树并带有增删改查功能。1个半小时的考试时间,提示可以用任意框架,我就是个傻X非要钻牛角尖偏不使用成熟的框架、或者内置写好的组件,导致代码只写完了一部分,最后喜提50分,就差10分及格气死我了,所以考完试复盘写下了这个 Demo 顺便复习一下 CSS、JS。1.展示默认树内容;2.鼠标悬浮选中树节点右

a35038438的博客 3123

ADS仿真功率放大器实例学习笔记

ADS仿真功率放大器实例学习笔记

qq_36521926的博客 1万+

使用trae自动生成前后端分离的web应用程序

使用ai自动生成前后端分离的web应用程序

一介书生 2528

mysql建立数据库并自动更新_mysql建立的一个自动更新组织树案案例

组织树实现案例一、实现功能:根据组织基表organizitions,更新组织树子树表orgs,子树表包括每个组织树的节点为顶点子树,以及带层级格式子树。新增,删除,修改组织树基表organizitions,同时修改组织树子树表orgs。删除organizitions时,如果该节点具有子树节点,需要完成所有的子树删除后,才能删除该节点。组织树举例:子树排序顺序:1,2,4,6,3,5,7 (穷尽每一...

weixin_34190683的博客 308

远距离长航时低成本泡沫垂直起降固定翼无人机技术详解

该技术通过采用泡沫材料制造无人机机体,并结合高效的垂直起降与固定翼飞行机制,实现了低成本、长航时、远距离的飞行能力。然而,需要注意的是,泡沫材料在强度和耐候性方面可能较传统金属材料有所不足,因此在设计和制造过程中需要采取额外的加固和防护措施。用于森林防火、水域监测、空气质量检测等场景,通过搭载相应的传感器和摄像设备,对大范围区域进行高效、精准的监测。- 增强智能化水平:集成更多先进的传感器、算法和人工智能技术,提升无人机的自主决策能力和作业效率。

专注多旋翼、复合翼无人机技术研究,从事低空经济行业。 1201

轻松管理组织结构:Vue2组织树节点增删改查及上传txt文本解析

轻松管理组织结构:Vue2组织树节点增删改查及上传txt文本解析 去发现同类优质开源项目:https://gitcode.com/ 项目介绍 在现代企业管理中,组织结构的清晰展示与高效管理是至关重要的。为了满足这一需求,我们推出了基于Vue2的组织树组件,该组件不仅支持节点的增删改查操作,还提供了上传txt文本进行解析的功能。通过这一组件,用户可以轻松管理组织结构,并根据需要进行数据的导入和导出,...

gitblog_09813的博客 676

告别卡顿!用LVGL+DMA刷新STM32F407的SPI屏幕,性能提升实战

本文详细介绍了如何通过LVGL+DMA技术优化STM32F407驱动SPI屏幕的性能,实现接近60FPS的流畅刷新。从硬件瓶颈分析到SPI与DMA的精细化配置,再到LVGL的双缓冲机制与局部刷新优化,提供了一套完整的性能提升方案。特别适合嵌入式GUI开发中面临卡顿问题的工程师参考。

weixin_42531588的博客 379

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

spring boot 与 Ant Design of Vue 实现修改组织(二十五)

@[TOC](spring boot 与 Ant Design of Vue 实现修改组织(二十五)) 公众号 大家可以直接微信扫描上面的二维码关注我的公众号,然后回复【ant25】 里面就会给到源代码的下载地址同时会附上相应的视频教程,并定期在我的公众号上给大家推送相应的技术文章,欢迎大家关注我的公众号。 前后端系列视频文章汇总帖 大家可以直接单击以下的链接地址前往汇总贴来看这个系列的视频教程...

笨鸟不会飞 602

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

zm-org-tree可拖拽的组织树,简易好上手

整体拖拽、自定义展开组织树展开层级; 节点搜索,显示搜索节点相关的组织树; 自定义节点样式,自定义新增、编辑、删除、节点是否拖拽、拖拽节点副本/节点;

weixin_53582738的博客 8364

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

小例子-组织树加上右键菜单添加删除组织,vue2,el-tree

修改删除新增

u011864362的博客 1434

Vue.js组织树组件zm-org-tree:从数据驱动到拖拽交互的实战指南

在前端开发中,树形结构组件是展示层级关系数据的核心UI元素,广泛应用于后台管理系统、企业组织架构图等场景。其设计原理基于数据驱动视图的响应式编程模型,通过递归算法将嵌套的JSON数据渲染为可视化节点树。这类组件的技术价值在于提供了高效、可维护的数据组织与交互方式,能够显著提升复杂信息架构的可读性和操作性。在实际工程实践中,开发者常需实现节点的动态增删改查、懒加载以及关键的拖拽排序功能,以满足业务需求。本文聚焦于Vue.js生态中的zm-org-tree组件,深入解析其如何通过简洁的API设计,优雅地实现数据

weixin_30423977的博客 389

vue——zm-tree-org 组织架构图实现层级展示+编辑功能——技能提升

vue——zm-tree-org 组织架构图实现层级展示+编辑功能——技能提升

yehaocheng520的博客 4179

萤石开放平台 国标级联上联 | 常见问题

本文介绍了萤石云"国标级联-上联"服务的相关概念和常见问题。主要内容包括:1)基本概念区分(平台、组织、通道)和组织树结构;2)号段编码的作用及服务开通流程;3)上级配置环节问题(如公函模板、多平台级联);4)组织树配置问题(编码类型、NVR通道为空等);5)对接问题(端口修改、IP端口信息、传输协议要求等)。文章提供了详细的问题分类和解决方案,特别强调了编码规则和防火墙设置对级联成功的重要性。

hq123897的博客 1111

el-tree 异步树局部刷新(新增,删除,编辑,上下移动)

目录树数据绑定有两种方式,同步和异步。同步:一次性返回所有组织树数据,一次绑定;异步:点击节点,只返回该节点的第一级子节点数据进行绑定,其他节点数据需要点击对应的父节点获取; 同步树和异步树进行更新的方式自然也不同;比如实现如下增删改查上下移动操作 如果是同步树:对目录树进行增删改查操作后,要实现及时刷新效果,需要重新请求一次接口,然后通过设置展开属性 展开到编辑节点即可; 如果是异步树:目录树实现增删改查操作,要及时刷新效果,只能通过触发点击父节点load函数实现;怎么实现及时刷新效果呢;

popstarqq的博客 3669

Module-Zero之组织单元(OU)管理【新增】

返回《Module Zero学习目录》 概览介绍 OrganizationUnit实体 OrganizationUnit管理者 公共用例 设置 概览介绍 组织单元(Organization Unit【简称OU】)可以有层次地给用户和实体分组。 OrganizationUnit实体 一个OU是通过OrganizationUnit实体表示的。该实体的基本属性如下: TenantId:该OU...

weixin_30677617的博客 173

JSP实现树型组织架构(3)--管理页面orgManage.jsp

//orgManage.jsp 管理页面,在前一个页面修改一下,加上可以插入和删除的功能request.setCharacterEncoding("big5");PreparedStatement ps=null;ResultSet rs=null;String  queryCount=" select count(*) "+                   " from ngb_org "+

理性的浪漫的程序人生 1638

JSP实现树型组织架构(7)--修改orgManage.jsp

 request.setCharacterEncoding("big5");PreparedStatement ps=null;ResultSet rs=null;String  queryCount=" select count(*) "+                   " from ngb_org "+                   " where total like ? ORD

vbscript1981的专栏 776

vue3+ts项目antd-vue中实现树节点添加,编辑,删除等操作

对vue3,ts和antd-vue的使用。

yunzhan_wurao的博客 1818
上一篇: uniapp实现局部刷新,scroll-view组件
下一篇: 对象套对象处理数据格式
菜菜籽油
博客等级 码龄4年 220粉丝 17原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值