树结构添加分组,向上向下添加同级,添加子级

树结构添加分组,向上向下添加同级,添加子级

  • 效果
  • 代码实现
    • 页面
    • js

效果

在这里插入图片描述

代码实现

页面

                <el-tree :data="treeData" :props="defaultProps" :expand-on-click-node="false":filter-node-method="filterNode" :ref="'tree_' + item.name" :id="'tree' + item.name" node-key="id":current-node-key="defaultKeys" default-expand-all highlight-current @node-click="handleNodeClick"><span class="custom-tree-node" slot-scope="{ node, data }"><el-input :key="data.id" autofocus size="mini" class=" w-75 text-left" :id="data.id"v-show="data.isEdit" v-model="form.serviceName" @keyup.enter.native="addApiGroup" @blur="addApiGroup"></el-input><el-tooltip :content="node.label" placement="right-start" transition="el-zoom-in-top" effect="light"><span v-if="!data.isEdit" class="textLine1 tree-label d-flex align-items-center"><img class="imgAlign-textBottom mr-1":src="data.isGroup == 1 ? require('../../../assets/images/folder.png') : require('../../../assets/images/code.png')"alt=""><span class=''> {{ node.label }}</span></span></el-tooltip><el-popover v-if="data.isGroup == 1" placement="bottom-start" width="100" trigger="click"id="myPopover"><div><el-link class="ml-0 mb-2" :underline="false" size="mini" type="info"@click="handleAdd('api', node, data)"><img src="../../../assets/images/code_line.png" alt="" class="mr-2" />新增接口</el-link><el-popover placement="right-start" width="100" trigger="click"><el-link class="d-block ml-0  mb-2" :underline="false" size="mini" type="info"@click="handleAdd('group', node, data, 'up', $event)">上方添加分组</el-link><el-link class="d-block mb-2 ml-0" :underline="false" size="mini" type="info"@click="handleAdd('group', node, data, 'down')">下方添加分组</el-link><el-link class="d-block ml-0" :underline="false" size="mini" type="info"@click="handleAdd('group', node, data, 'child')">添加子分组</el-link><el-link class="ml-0 mb-2 addGroup" :underline="false" size="mini" type="info"slot="reference"><span><img src="../../../assets/images/bulletpoint.png" alt="" class="mr-2" />新增分组</span><img src="../../../assets/images/chevron-right.png" alt="" class="mr-2" /></el-link></el-popover><el-link class="d-block ml-0  mb-2" :underline="false" size="mini" type="info"@click="handleEdit('group', node, data)"><img src="../../../assets/images/folder_line.png"alt="" class="mr-2" />编辑分组</el-link><el-link class="d-block ml-0" :underline="false" size="mini" type="info"@click="handleDelete(node, data)"><img src="../../../assets/images/delete.png" alt=""class="mr-2" />删除</el-link></div><el-button class="ml-2" size="mini" icon="el-icon-more" type="text" slot="reference"></el-button></el-popover></span></el-tree>

js

export default {name: 'AppCenterDetail',components: { apiList },data() {return {treeData: [],defaultProps: {children: 'children',label: 'label',},}},created() {this.form.id = this.$route.query.appIdthis.appId = this.$route.query.appIdthis.getAppDetail(this.$route.query.appId)},mounted() {},methods: {// 节点单击事件handleNodeClick(data, node) {this.form.serviceName = data.labelthis.queryParams.parentId = data.idthis.defaultKeys = data.idlet tree = {id: 0,children: this.treeData};// 调接口提交addApiGroup() {},handleAdd(node, data, pageType){const treeDOM = this.$refs['tree_' + this.activeName][0]const id = Math.ceil(Math.random() * 100);const newData = { id: id, parentId: data ? data.id : 0, label: '', isEdit: true, isNew: true, children: [] }this.$set(this.form, 'isGroup', 1)if (pageType == 'up') {this.$set(this.form, 'upOrder', data.orderNum)this.$set(this.form, 'isUp', 0)this.$set(this.form, 'orderNum', data.orderNum - 1)this.$set(this.form, 'parentId', data ? data.parentId : 0)this.$set(this.form, 'upId', data.id)treeDOM.insertBefore(newData, node)// 聚焦setTimeout(() => {document.getElementById(newData.id).focus()}, 500);} else if (pageType == 'down') {this.$set(this.form, 'upOrder', data.orderNum)this.$set(this.form, 'isUp', 1)this.$set(this.form, 'orderNum', data.orderNum + 1)this.$set(this.form, 'parentId', data ? data.parentId : 0)this.$set(this.form, 'upId', data.id)treeDOM.insertAfter(newData, node)// 聚焦setTimeout(() => {document.getElementById(newData.id).focus()}, 500);} else if (pageType == 'child') {if (this.currentNodeLevel >= 4) {this.$modal.msgWarning('当前树最多可加四级,已超出')} else {this.$set(this.form, 'upOrder', data.orderNum)this.$set(this.form, 'isUp', 2)this.$set(this.form, 'parentId', data.id)treeDOM.append(newData, node)treeDOM.store.nodesMap[data.id].expanded = true// 聚焦setTimeout(() => {document.getElementById(newData.id).focus()}, 500);}} else {this.addGroupVisible = truethis.$set(this.form, 'parentId', 0)this.$set(this.form, 'isUp', 2)}},},
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/46766.shtml

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

相关文章

IP-Guard日志数据上传至 SYSLOG 服务器操作指南

一、功能简介 服务器支持把日志数据上传到 SYSLOG 服务器。 二、功能配置 2.1 数据目录移交设置 在服务器安装目录下 OServer3.ini 文件中&#xff0c;添加工具启动配置&#xff0c;配置五分钟内生效。 Path&#xff1a;设置移交目录路径&#xff0c;IPG 服务器会把收集完成的…

六西格玛培训:控制图——洞察过程真相的利器

在追求卓越绩效与持续质量改进的征途中&#xff0c;六西格玛无疑是企业不可或缺的导航灯。作为一套严谨而系统的管理方法&#xff0c;六西格玛不仅帮助企业识别并减少过程中的变异与缺陷&#xff0c;还促进了流程的优化与创新。而在这套强大的方法论中&#xff0c;控制图作为核…

【postgresql】角色(Role)

PostgreSQL 中&#xff0c;角色&#xff08;Role&#xff09;是一个重要的概念&#xff0c;用于管理数据库的访问权限和用户身份。角色可以被视为用户或组&#xff0c;具体取决于它们的配置方。 角色属性 角色可以具有多种属性&#xff1a; LOGIN&#xff1a;允许角色登录数据…

Floyd算法——AcWing 343. 排序

目录 Floyd算法 定义 运用情况 注意事项 解题思路 基本步骤 AcWing 343. 排序 题目描述 运行代码 代码思路 改进思路 Floyd算法 定义 Floyd算法&#xff0c;全称Floyd-Warshall算法&#xff0c;是一种用于解决图中所有顶点对之间的最短路径问题的动态规划算法。…

基于java+springboot+vue实现的实验室管理系统(文末源码+Lw)127

基于SpringBootVue的实现的实验室管理系统&#xff08;源码数据库万字Lun文流程图ER图结构图演示视频软件包&#xff09; 系统功能&#xff1a; 实验室管理系统 管理员功能有个人中心&#xff0c;学生管理&#xff0c;教师管理&#xff0c;公告信息管理&#xff0c;知识库管理…

杭州高校大学智能制造实验室数字孪生可视化系统平台建设项目验收

杭州高校大学智能制造数字孪生技术作为智能制造的重要支撑&#xff0c;通过构建虚拟世界的镜像&#xff0c;实现对物理世界的实时监控、预测和优化。杭州高校大学智能制造实验室数字孪生可视化系统平台建设项目&#xff0c;旨在通过引入先进的数字孪生技术&#xff0c;构建一个…

ESP32-S3多模态交互方案在线AI语音设备应用,启明云端乐鑫代理商

随着物联网&#xff08;IoT&#xff09;和人工智能&#xff08;AI&#xff09;技术的飞速发展&#xff0c;嵌入式设备正逐渐变得智能化&#xff0c;让我们的家庭生活变得更加智能化和个性化。 随着大型语言模型的不断进步和优化&#xff0c;AI语音机器人设备能够实现更加智能、…

自定义 Java ClassLoader:深入探索

在 Java 应用程序中&#xff0c;类加载器&#xff08;ClassLoader&#xff09;是实现动态加载类和资源的关键组件。默认情况下&#xff0c;Java 提供了一个类加载器层次结构&#xff0c;但有时我们需要自定义类加载器来满足特定的需求&#xff0c;比如加载加密的类文件、从数据…

Springboot + JWT 的 Token 登录验证

目录 项目结构 一、 引入依赖 二、自定义Auth认证注解 三、 编写登录拦截器 四、定义跨域拦截器 五、 定义全局异常处理器 六、定义工具类 1. 统一错误状态码 2.统一响应类 3.Token工具类 七、 编写实体类 八、 定义控制器 1.定义登录控制器类 2 定义报错处理器 …

【单片机毕业设计选题24067】-基于STM32的智能衣控制系统

系统功能: 系统上电后OLED显示“欢迎使用智能衣服系统请稍后”两秒钟后进入正常页面显示&#xff0c; 第一行显示系统状态信息 第二行显示获取到体温值 第三行显示设定的高体温阈值和低体温阈值 第四行显示获取到心率和血氧值 短按B3按键调高心率设定高阈值 短按B4按键调…

【学术会议征稿】2024年第三届信息学,网络与计算技术国际学术会议(ICINC2024)

2024年第三届信息学&#xff0c;网络与计算技术国际学术会议(ICINC2024) 2024 3rd International Conference on Informatics,Networking and Computing (ICINC 2024) 2024年第三届信息学&#xff0c;网络与计算技术国际学术会议(ICINC2024)将于2024年10月25-27日于中国郑州召…

Vue中使用mind-map实现在线思维导图

概述 在前面的文章Vue中实现在线画流程图实现中介绍了流程图的在线绘制&#xff0c;在本文&#xff0c;给大家分享一下基于mind-map实现在线的思维导图&#xff0c;并实现&#xff1a;1. 导图导出为图片&#xff1b;2. 打开xmind文件。 实现效果 实现 1. mind-map简介 simp…

使用Druid完成SpringBoot集成MySql、DM(达梦)数据库数据源操作

业务背景 一个方法里&#xff0c;对A数据源需要进行查询&#xff0c;B数据源进行插入(切面插入访问数据&#xff0c;日志)。 详细业务是查询业务数据&#xff0c;同时主数据库记录访问日志。 第一步依赖先行 <dependency><groupId>mysql</groupId><art…

正确选择指挥中心操作台厂家的因素

在当今数字化和信息化快速发展的时代&#xff0c;指挥中心操作台在各类机构和企业的运营中发挥着至关重要的作用。然而&#xff0c;选择一个合适的指挥中心操作台厂家并非易事。以下是一些选择指挥中心操作台厂家的考虑因素。 一、产品质量与工艺 要考察厂家的产品质量和工艺水…

C语言中的指针:掌握内存的钥匙

C语言中的指针&#xff1a;掌握内存的钥匙 引言 C语言是一种结构化编程语言&#xff0c;它提供了对硬件底层的直接访问&#xff0c;其中最强大的特性之一就是指针。指针允许程序员直接操作内存地址&#xff0c;这对于理解程序的内部工作原理以及优化代码性能至关重要。本文将深…

解决宝塔Spring Boot项目获取不到环境变量的问题

问题描述 在使用宝塔面板管理Spring Boot项目时&#xff0c;可能会遇到代码无法获取 /etc/profile 文件中设置的Linux环境变量的问题。虽然在SSH终端中可以正常获取&#xff0c;但在通过宝塔面板启动的Spring Boot项目中&#xff0c;环境变量却无法被读取。 解决方案&#xf…

量化交易研究报告#13

核心公式 通过对 HS300 相对强弱指标值变化规律的梳理&#xff0c;我们制定如下的交易法则&#xff1a; &#xff08;1&#xff09;计算指标的 20 日均值变化&#xff0c;以及 20 日标准差&#xff1b; &#xff08;2&#xff09;20日均值1倍标准差作为上阈值&#xff0c;20…

【Chapter 3: Creating Minimal API Applications】

Chapter 1: Foundations of Framework Learning and Practical Strategies Chapter 2: An Introduction to ASP.NET Core in Layman‘s Terms Chapter 3: Creating Minimal API Applications 1. Overview of Minimal APIs In the vast landscape of ASP.NET Core, “Minima…

Mysql表的三范式、事务和查询

数据表的三范式 在制定数据表,需要遵循的制表规范:第一范式(1NF),第二范式(2NF),第三范式(3NF) 第一范式 属性不可分割,每一个属性(每一个单元格)都是不可再分的原子,也就是说数据表中的每一个字段必须是单独一列的,不能出现还可以再拆分的情况,也可以说成是…

数电基础 - 半导体存储

目录 一. 简介 一. 只读存储器 二. 可编程只读存储器 三. 可擦除的可编程只读存储器 四. 随机存储器 五. 存储器容量的扩展 六. 总结 一. 简介 半导体存储是数字电路中用于存储数据的重要组成部分。 半导体存储器主要分为两大类&#xff1a;随机存取存储器&#xff0…