当前位置: 首页 > news >正文

实现Tree 树形控件的鼠标拖拽功能

1.element中的el-tree实现可拖拽节点

通过 draggable 属性可让节点变为可拖拽

 <el-tree

        :data="data"

        node-key="id"

        default-expand-all

        @node-drag-start="handleDragStart"

        @node-drag-enter="handleDragEnter"

        @node-drag-leave="handleDragLeave"

        @node-drag-over="handleDragOver"

        @node-drag-end="handleDragEnd"

        @node-drop="handleDrop"

        draggable

        :allow-drop="allowDrop"

        :allow-drag="allowDrag"

      >

      </el-tree>

  methods: {

    handleDragStart(node, ev) {

      console.log("drag start", node);

    },

    handleDragEnter(draggingNode, dropNode, ev) {

      console.log("tree drag enter: ", dropNode.label);

    },

    handleDragLeave(draggingNode, dropNode, ev) {

      console.log("tree drag leave: ", dropNode.label);

    },

    handleDragOver(draggingNode, dropNode, ev) {

      console.log("tree drag over: ", dropNode.label);

    },

    handleDragEnd(draggingNode, dropNode, dropType, ev) {

      console.log("tree drag end: ", dropNode && dropNode.label, dropType);

    },

    handleDrop(draggingNode, dropNode, dropType, ev) {

      console.log("tree drop: ", dropNode.label, dropType);

    },

    allowDrop(draggingNode, dropNode, type) {

      if (dropNode.data.label === "二级 3-1") {

        return type !== "inner";

      } else {

        return true;

      }

    },

    allowDrag(draggingNode) {

      return draggingNode.data.label.indexOf("三级 3-2-2") === -1;

    },

  },

实现一个只能在本级改变位置拖拽

使用allowDrop

   // 拖拽时判定目标节点能否被放置。

    //draggingNode(拖拽的节点)

    //dropNode(放置的目标节点)

    //type 参数有三种情况:'prev'、'inner' 和 'next',分别表示

    //放置在目标节点前、插入至目标节点和放置在目标节点后

    allowDrop(draggingNode, dropNode, type) {

      // 一级节点互相拖拽

      // if (draggingNode.level == "1") {

      //   if (dropNode.level == "1") {

      //     return type === "prev" || type === "next";

      //   }

      // }

      // // 二级节点之间互相拖拽,但是只能放在自己的二级节点

      // if (draggingNode.level == "2") {

      //   if (dropNode.level == "2") {

      //     if (dropNode.data.ParentNodes == draggingNode.data.ParentNodes) {

      //       return type === "prev" || type === "next";

      //     }

      //   }

      // }

      if (draggingNode.level == dropNode.level) {

        if (dropNode.data.ParentNodes == draggingNode.data.ParentNodes) {

          return type === "prev" || type === "next";

        }

      }

      return false;

    },

这样就可以实现,同级拖拽

相关文章:

实现Tree 树形控件的鼠标拖拽功能

1.element中的el-tree实现可拖拽节点 通过 draggable 属性可让节点变为可拖拽 <el-tree :data"data" node-key"id" default-expand-all node-drag-start"handleDragStart" node-drag-enter"handleDragEnter" node-drag-leave"…...

同为科技智能PDU助力Deepseek人工智能和数据交互的快速发展

1 2025开年&#xff0c;人工智能领域迎来了一场前所未有的变革。Deepseek成为代表“东方力量”的开年王炸&#xff0c;不仅在国内掀起了技术热潮&#xff0c;并且在全球范围内引起了高度关注。Deepseek以颠覆性技术突破和现象级应用场景席卷全球&#xff0c;这不仅重塑了产业格…...

硬件学习笔记--42 电磁兼容试验-6 传导差模电流干扰试验介绍

目录 电磁兼容试验-传导差模电流试验 1.试验目的 2.试验方法 3.判定依据及意义 电磁兼容试验-传导差模电流干扰试验 驻留时间是在规定频率下影响量施加的持续时间。被试设备&#xff08;EUT&#xff09;在经受扫频频带的电磁影响量或电磁干扰的情况下&#xff0c;在每个步进…...

基于 Filebeat 的日志收集

在现代分布式系统中&#xff0c;日志数据作为关键的监控与故障排查依据&#xff0c;越来越受到重视。本文将深入探讨 Filebeat 的技术原理、配置方法及在 ELK&#xff08;Elasticsearch、Logstash、Kibana&#xff09;生态系统中的应用&#xff0c;帮助开发者构建高效、稳定的日…...

Next.js 15【实用教程】2025最新版

官网 https://nextjs.org/docs/app/getting-started Next.js 简介 Next.js 由 Vercel 开发和维护&#xff0c;旨在解决单页应用&#xff08;SPA&#xff09;和多页应用&#xff08;MPA&#xff09;在性能和 SEO 上的不足。 核心特性 服务端渲染&#xff08;SSR&#xff09;--…...

vue学习10

1.GPT和Copilot Copilot Tab接受 删除键&#xff0c;不接受 ctrlenter更多方案 更适合的是修改方向 const submitForm async () > {//等待校验结果await formRef.value.validate()//提交修改await userUpdateInfoService(form.value)//通知user模块&#xff0c;进行数据更…...

redis 缓存击穿问题与解决方案

前言1. 什么是缓存击穿?2. 如何解决缓存击穿?怎么做?方案1: 定时刷新方案2: 自动续期方案3: 定时续期 如何选? 前言 当我们使用redis做缓存的时候,查询流程一般是先查询redis,如果redis未命中,再查询MySQL,将MySQL查询的数据同步到redis(回源),最后返回数据 流程图 为什…...

【Vue3 入门到实战】16. Vue3 非兼容性改变

目录 1. 全局 API 的变化 2. 模板指令的变化 2.1 组件v-model用法 2.2 template v-for用法 2.3 v-if 和v-for 优先级变化 2.4 v-bind"object" 顺序敏感 2.5 v-on:event.native 被移除 3. 组件的变化 3.1 功能组件只能使用普通函数创建 3.2 SFC弃用功能属性…...

20250214 随笔 Elasticsearch(ES)索引数据 vs. 业务数据库冗余双写

Elasticsearch&#xff08;ES&#xff09;索引数据 vs. 业务数据库冗余双写的区别、优缺点分析 在高并发数据查询场景下&#xff0c;Elasticsearch&#xff08;ES&#xff09; 和 业务数据库冗余双写 都是常见的数据同步方案。它们主要区别在于数据存储方式、查询性能、数据一…...

c# textbox 设置不获取光标

[DllImport("user32",EntryPoint "HideCaret")] private static extern bool HideCaret(IntPtr hWnd); //需引入命名空间using System.Runtime.InteropServices; private void Txt_RecInfo_MouseDown(object sender, MouseEventArgs e) { …...

中望CAD c#二次开发 ——VS环境配置

新建类库项目&#xff1a;下一步 下一步 下一步&#xff1a; 或直接&#xff1a; 改为&#xff1a; <Project Sdk"Microsoft.NET.Sdk"> <PropertyGroup> <TargetFramework>NET48</TargetFramework> <LangVersion>pr…...

anolis os 8.9安装jenkins

一、系统版本 # cat /etc/anolis-release Anolis OS release 8.9 二、安装 # dnf install -y epel-release # wget -O /etc/yum.repos.d/jenkins.repo https://pkg.jenkins.io/redhat-stable/jenkins.repo # rpm --import https://pkg.jenkins.io/redhat-stable/jenkins.…...

HtmlRAG:RAG系统中,HTML比纯文本效果更好

HtmlRAG 方法通过使用 HTML 而不是纯文本来增强 RAG 系统中的知识表示能力。通过 HTML 清洗和两步块树修剪方法&#xff0c;在保持关键信息的同时缩短了 HTML 文档的长度。这种方法优于现有基于纯文本的RAG的性能。 方法 其实主要看下围绕html提纯思路&#xff0c;将提纯后的…...

TypeScript 中的 reduce计算统计之和

1、计算字符串数组中最大的一项&#xff0c;比如数组&#xff1a;list ["家长会,柘城,喝士大夫","模压,手动阀,阿斯蒂"]&#xff0c;求出list中字符串长度之和最大的那项&#xff1a; // 初始化变量来存储字数之和最多的项及其字数之和let maxWord ;let…...

HTTP/2 由来及特性

HTTP/2 的由来 HTTP/1.x 的局限性 性能瓶颈 队头阻塞问题&#xff1a;在HTTP/1.x中&#xff0c;一个TCP连接在同一时间只能处理一个请求&#xff0c;后续请求必须等待前面的请求处理完成并收到响应后才能被处理。例如&#xff0c;当一个页面有多个资源&#xff08;如图片、脚…...

android 安装第三方apk自动赋予运行时权限

摘要&#xff1a;行业机使用场景点击运行时权限很麻烦&#xff0c;而随着android的演进&#xff0c;对于权限的管控越发严格。故本文通过对系统的修改实现第三方app在运行时直接获取全部权限。 通过属性ro.perms.force_grant控制功能开关。 Index: frameworks/base/services/…...

PyTorch Lightning LightningDataModule 介绍

LightningDataModule 是 PyTorch Lightning 提供的数据模块,用于统一管理数据加载流程(包括数据准备、预处理、拆分、批量加载等)。它的核心作用是将数据处理逻辑与模型解耦,提高代码的可复用性和可读性。 1. LightningDataModule 的作用 ✅ 封装数据预处理:数据下载、清…...

windows平台上 oracle简单操作手册

一 环境描述 Oracle 11g单机环境 二 基本操作 2.1 数据库的启动与停止 启动: C:\Users\Administrator>sqlplus / as sysdba SQL*Plus: Release 11.2.0.4.0 Production on 星期五 7月 31 12:19:51 2020 Copyright (c) 1982, 2013, Oracle. All rights reserved. 连接到:…...

【网络安全 | 漏洞挖掘】价值3133美元的Google IDOR

未经许可,不得转载。 文章目录 正文正文 目标URL:REDACTED.google.com。 为了深入了解其功能,我查阅了 developer.google.com 上的相关文档,并开始进行测试。 在测试过程中,我发现了一个 XSS 漏洞,但它触发的域名是经过正确沙盒化的 *.googleusercontent.com,这符合 …...

LabVIEW太阳能制冷监控系统

在全球能源需求日益增长的背景下&#xff0c;太阳能作为一种无限再生能源&#xff0c;被广泛应用于各种能源系统中。本基于LabVIEW软件和STM32F105控制器的太阳能制冷监控系统的设计与实现&#xff0c;提供一个高效、经济的太阳能利用方案&#xff0c;以应对能源消耗的挑战。 项…...

3步快速解密:让网易云音乐加密文件重获自由的完整指南

3步快速解密&#xff1a;让网易云音乐加密文件重获自由的完整指南 【免费下载链接】ncmdump 项目地址: https://gitcode.com/gh_mirrors/ncmd/ncmdump 你是否曾遇到过这样的困扰&#xff1a;从网易云音乐精心下载的歌曲&#xff0c;却只能在特定软件中播放&#xff0c;…...

马斯克投1200亿建芯片工厂,微美全息加速量子算力集群进入全球“AI军备竞赛”

据报道&#xff0c;埃隆马斯克的太空探索技术公司准备斥资1200亿美元建造一家人工智能&#xff08;AI&#xff09;芯片工厂&#xff0c;这将是世界上最大的人工智能芯片工厂。AI芯片工厂重构算力马斯克在社交媒体平台X上写道&#xff1a;“这是为建设全球最大、最先进芯片制造设…...

【Pocket Flow】源码剖析(二):批量与异步——BatchNode、AsyncNode 与并行执行

【Pocket Flow】源码剖析&#xff08;二&#xff09;&#xff1a;批量与异步——BatchNode、AsyncNode 与并行执行 写在前面&#xff1a;第一篇我们拆解了 Pocket Flow 的三大核心抽象——Node、Flow 和 Shared Store&#xff0c;理解了 100 行代码的骨架。今天&#xff0c;我们…...

Claude Code AI引擎一键切换:GLM代理、官方API、订阅与本地Ollama全攻略

1. 项目概述&#xff1a;一键切换Claude Code的四种AI引擎 如果你和我一样&#xff0c;日常重度依赖Cursor或者Vibe Code这类AI编程工具&#xff0c;那你肯定对Claude这个“大脑”又爱又恨。爱的是它的代码生成和问题分析能力确实顶尖&#xff0c;恨的是官方订阅价格不菲&#…...

手把手配置NCJ29D5:基于ARM Cortex-M33的UWB测距开发避坑指南

手把手配置NCJ29D5&#xff1a;基于ARM Cortex-M33的UWB测距开发避坑指南 在物联网和智能汽车快速发展的今天&#xff0c;超宽带(UWB)技术凭借其厘米级精度的定位能力&#xff0c;正在重塑从数字钥匙到室内导航的各类应用场景。作为NXP专为汽车电子设计的UWB芯片&#xff0c;NC…...

【大模型推理加速终极指南】:奇点智能大会首发的7大工业级优化方案,错过再等一年

更多请点击&#xff1a; https://intelliparadigm.com 第一章&#xff1a;大模型推理加速方案&#xff1a;奇点智能大会 在2024年奇点智能大会上&#xff0c;多家前沿AI基础设施团队联合发布了面向千卡级集群的大模型推理加速新范式——以“动态张量分片硬件感知调度”为核心&…...

AI音乐生成实战:从开源项目部署到高级应用全解析

1. 项目概述&#xff1a;当AI音乐创作遇上开源社区 最近在GitHub上闲逛&#xff0c;发现了一个挺有意思的项目&#xff0c;叫“openclaw-genpark-music-creator”。光看这个名字&#xff0c;就能嗅到一股混合了技术极客与艺术创作的味道。作为一个在音乐科技和开源工具领域摸爬…...

Kubernetes运维自动化最佳实践:从手动操作到智能化运维

Kubernetes运维自动化最佳实践&#xff1a;从手动操作到智能化运维 Kubernetes运维自动化概述 随着Kubernetes集群规模的增长&#xff0c;手动运维变得越来越困难。运维自动化是提高效率、降低人为错误的关键。本文将介绍Kubernetes运维自动化的最佳实践&#xff0c;包括自动化…...

CasaOS应用商店深度解析:从Docker Compose原理到社区贡献实战

1. 项目概述与核心价值 如果你正在折腾家庭服务器或者个人云&#xff0c;大概率听说过 CasaOS 这个名字。作为一个开源的、轻量级的家庭云操作系统&#xff0c;它最大的魅力就在于其极简的 Web UI 和“一键安装”应用的理念&#xff0c;让 Docker 容器化部署变得像在手机应用商…...

从Airflow到Flyte:新一代云原生MLOps编排平台的核心优势与实践

1. 从Airflow到Flyte&#xff1a;为什么我们需要新一代的MLOps编排器&#xff1f;如果你在数据科学或机器学习工程领域摸爬滚打超过三年&#xff0c;大概率用过或者至少听说过Airflow。它几乎是过去十年里任务编排领域的代名词&#xff0c;用Python写DAG&#xff0c;用Celery做…...