vue-project-tree vue3 树形结构展示组件

news2024/11/16 15:39:29

GitHub:vue-project-tree by one-ccs
Gitee:vue-project-tree by one-ccs
遵循 MIT 开源协议

文章目录

  • vue-project-tree
    • 一、使用
    • 二、API
      • 1、属性
      • 2、事件
      • 3、方法
      • 4、插槽

vue-project-tree

使用 Vue3 + TS 实现的树形结构展示组件,有拖拽、排序、自定义图标等功能

在这里插入图片描述
在这里插入图片描述

一、使用

  1. 安装

npm install vue-project-tree -S

  1. 导入

import VueProjectTree from "vue-project-tree";

  1. 使用
import { ref } from 'vue';
import VueProjectTree from "vue-project-tree";

interface TreeNode {
    id: number;
    label: string;
    children?: TreeNode[];
};

const data = ref<TreeNode[]>([
    {
        id: 1,
        label: "1 不允许拖拽",
        children: [
            {
                id: 2,
                label: "2",
                children: [
                    {
                        id: 3,
                        label: "3"
                    },
                    {
                        id: 4,
                        label: "4"
                    },
                ]
            },
            {
                id: 5,
                label: "5",
            },
        ],
    },
    {
        id: 6,
        label: "6 不允许拖拽",
    },
    {
        id: 7,
        label: "7 不允许拖拽、放下",
    },
]);
<vue-project-tree :data="data"></vue-project-tree>

二、API

1、属性

名称说明类型默认值
data树形数据,最外层必须是数组Array
idKey?主键属性名(值在树中必须唯一)string“id”
labelKey?标签属性名string“label”
childrenKey?子节点数组属性名string“children”
indent?左侧缩进值number | string24
nodeHeight?节点高度number | string35
expandIconSize?展开图标大小number | string10
nodeIcon?是否显示节点图标booleanfalse
nodeIconSize?节点图标大小number | string20
filterMethod?过滤方法(需手动调用 filter 函数执行过滤)Function() => true
draggable?是否允许拖拽booleanfalse
sortable?是否允许排序booleanfalse
allowDrag?节点是否拖拽放下处理函数(返回 true 表示允许拖拽)Function() => false
allowDrop?节点是否允许放下处理函数(返回 true 表示允许放下)Function() => false

2、事件

事件名说明回调参数
nodeClick节点点击事件(event: DragEvent, data: any, nodeElement: HTMLElement) 分别为事件数据,节点数据,节点元素
nodeRightClick节点右键点击事件(event: DragEvent, data: any, nodeElement: HTMLElement) 分别为事件数据,节点数据,节点元素
currentNodeChange当前节点改变事件(data: any) 节点数据
start拖拽开始事件(event: DragEvent, data: any, nodeElement: HTMLElement) 分别为事件数据,节点数据,节点元素
enter拖拽进入事件(event: DragEvent, data: any, nodeElement: HTMLElement) 分别为事件数据,节点数据,节点元素
over拖拽进入后在节点内持续触发(event: DragEvent, data: any, nodeElement: HTMLElement) 分别为事件数据,节点数据,节点元素
leave拖拽离开事件(event: DragEvent, data: any, nodeElement: HTMLElement) 分别为事件数据,节点数据,节点元素
dropped节点放下事件(event: DragEvent, data: any, nodeElement: HTMLElement) 分别为事件数据,节点数据,节点元素
droppedBefore放在节点前事件(dragData: any, dropData: any, index: number) 分别为拖拽节点数据,放下节点数据,移动后节点索引
droppedIn放在节点内事件(dragData: any, dropData: any, index: number) 分别为拖拽节点数据,放下节点数据,移动后节点索引
droppedAfter放在节点后事件(dragData: any, dropData: any, index: number) 分别为拖拽节点数据,放下节点数据,移动后节点索引
end拖拽结束事件(event: DragEvent, data: any, nodeElement: HTMLElement) 分别为事件数据,节点数据,节点元素

3、方法

方法描述参数返回值
getMultipleList获取选择节点的 data 数据
clearMultipleList清除选择节点
getMoveList获取多选列表,多选列表为空时返回元素为当前节点数据的列表
filter执行过滤接受一个参数并指定为 filter-method 的第一个参数
setCurrentNode设置当前选中节点的数据(data: any) 节点数据
getCurrentNode获取当前选中节点的数据
findNodeById通过节点主键值查找节点数据(id: any, data?: any[]) 分别为节点主键值,(可选)查找的节点数据
findParentById通过节点主键值查找父节点数据,没有则返回 null(id: any, data?: any[]) 分别为节点主键值,(可选)查找的节点数据
safeFindParentById通过节点主键值查找父节点数据,没有则返回 children 为根列表的节点数据(id: any) 节点主键值
moveBefore移动到节点前(dragData: any, dropData: any) 分别为拖拽节点数据,放下节点数据移动后的节点索引
moveIn移动到节点内(dragData: any, dropData: any) 分别为拖拽节点数据,放下节点数据移动后的节点索引
moveAfter移动到节点后(dragData: any, dropData: any) 分别为拖拽节点数据,放下节点数据移动后的节点索引

4、插槽

插槽名说明
nodeIcon自定义展开图标{ data, size } 分别为节点数据,展开图标大小
nodeIcon自定义节点图标{ data, size } 分别为节点数据,节点图标大小

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

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

相关文章

数字化革新:可视化墨水屏引领基板工艺MSAP贴膜阶段迈向无纸化高端制造应用背景

随着科技的飞速发展和环境保护意识的日益增强&#xff0c;制造印刷电路板&#xff08;PCB&#xff09;行业正面临着提升生产效率、降低资源消耗和推动绿色制造的迫切需求。 问题&#xff1a; PCB生产过程对洁净度要求高&#xff0c;传统打印的纸张会有粉尘&#xff0c;纸屑&am…

cookie与session区别和联系

在Web应用中&#xff0c;HTTP协议是无状态的&#xff0c;每次请求都是独立的&#xff0c;服务器无法直接识别一个用户的不同请求之间的关联。这就导致了如果我们希望在一个会话中保持一些数据的状态&#xff0c;比如用户的身份认证信息、购物车内容等&#xff0c;就需要借助Coo…

网络靶场实战-Qiling Fuzz实例分析

背景 在上一小节中&#xff0c;介绍了qiling框架的背景和基础使用&#xff0c;并以相关的CTF和qilinglab实例进行练习加深对qiling框架的使用&#xff0c;后续并简单介绍了qiling fuzz的功能。 在这一小节&#xff0c;我们将对qiling fuzz iot设备进行测试以及以实例的方式对…

【LLM】LLM API 开发

文章目录 LLM API 开发LLM入门基本概念LLM API使用实名认证创建应用使用API Prompt Engineering思考总结 参考文章 什么是提示工程&#xff08;Prompt Engineering&#xff09;&#xff1f; ChatGPT Prompt 最佳指南一 LLM API 开发 LLM入门基本概念 Prompt Prompt 最初是 NL…

EelasticSearch的介绍和基于docker安装

1.概述 Elasticsearch 是一个基于 Apache Lucene 构建的开源分布式搜索引擎和分析引擎。它专为云计算环境设计&#xff0c;提供了一个分布式的、高可用的实时分析和搜索平台。Elasticsearch 可以处理大量数据&#xff0c;并且具备横向扩展能力&#xff0c;能够通过增加更多的硬…

AR爆发的前夜,Rokid站在了门口

文&#xff5c;刘俊宏 摆脱6寸的手机屏幕&#xff0c;栖居在300寸大屏的智慧生活是什么样子&#xff1f; 4月20日&#xff0c;Rokid在新品AR Lite空间计算套装的发布会上&#xff0c;“硬刚”了苹果的Vision Pro。 Rokid AR Lite空间计算套装 Rokid AR Lite与苹果Vision Pro…

必应搜索广告与谷歌搜索广告对比那个更好?

搜索引擎广告作为企业获取潜在客户的重要渠道之一&#xff0c;其效果直接关系到营销策略的成功与否。两大搜索引擎巨头——谷歌&#xff08;Google&#xff09;和必应&#xff08;Bing&#xff09;各自提供了广告平台&#xff0c;即谷歌广告&#xff08;Google Ads&#xff09;…

eNSP-路由引入与过滤简单配置

目录 实验要求 IP配置 配置动态路由协议 RIP OSPF 查看建邻情况 双向重发布 路由过滤 地址前缀列表 静默接口 实验要求 1、按照图示配置 IP 地址&#xff0c;R1&#xff0c;R3&#xff0c;R4 上使用 loopback 口模拟业务网段 2、R1 和R2 运行 RIPv2&#xff0c;R2&am…

Mendix是谁?作为致力于企业低代码服务平台的领头羊,它解决了哪些问题?

一、Mendix 成立的背景 Mendix的成立是为了解决软件开发中最大的问题&#xff1a;业务和IT之间的脱节。这一挑战在各个行业和地区都很普遍&#xff0c;很简单&#xff1a;业务需求通常被描述为IT无法正确解释并转化为软件。业务和IT之间缺乏协作的原因是传统的代码将开发过程限…

前端开发攻略---拖动归类,将元素拖拽到相应位置

1、演示 2、代码 <!DOCTYPE html><html lang"en"><head><meta charset"UTF-8" /><meta http-equiv"X-UA-Compatible" content"IEedge" /><meta name"viewport" content"widthdevice-…

001-谷粒商城-微服务剖析

1、架构图 还是很强的&#xff0c;该有的都有 2、微服务模块 SpringCloudAlibaba组件包括 SentinelNacosRocketMQSeata 搭配SpringCloudAlibaba组件 OpenFeignGateWayRibbn gateway使用了SpringWebFlux&#xff0c;前几天研究到&#xff0c;为什么springboot不直接使用Spri…

私人密码管理储存库!Bitwarden 部署安装教程

日常生活中我们每个人都会拥有大量网站或社交平台帐号&#xff0c;时间久远了密码很容易忘记。因此&#xff0c;像 1Password 等密码管理 同步 一键登录的工具成为了很多人的首选。 然而 1Password 毕竟要付费&#xff0c;也有人会担心这类工具有隐私泄露的风险。其实&#…

【昇腾产品应用】英码科技EA500I基于昇腾Mind SDK实现实时人体关键点检测

在教育、体育、安防、交通、医疗等领域中&#xff0c;实时人体关键点检测应用发挥着至关重要的作用&#xff0c;比如在体育训练时&#xff0c;实时人体关键点检测可以精确、实时地捕捉运动员的动作&#xff0c;从而进行动作分析和优化&#xff1b;在安防应用场景中&#xff0c;…

AI边缘计算盒子+ThingSense管理平台,推动明厨亮灶智慧监管新篇章

背景随着“互联网”时代的浪潮汹涌而至&#xff0c;国家及各地政府纷纷在“十四五”规划中明确指出&#xff0c;强化食品安全管理&#xff0c;利用技术手段实现智慧监管是刻不容缓的任务。为此&#xff0c;各地正加速推进“互联网明厨亮灶”的建设步伐&#xff0c;实现系统对接…

VideoComposer: Compositional Video Synthesis with Motion Controllability

decompose videos into three distinct types of conditions: textual conditions, spatial conditions, temperal conditions 条件的内容&#xff1a; a. textual condition: coarse grained visual content and motions, 使用openclip vit-H/14的text encoder b. spatial co…

社会工程渗透测试教程(二)

原文&#xff1a;annas-archive.org/md5/db987a87e1478b8a8617c263c631b477 译者&#xff1a;飞龙 协议&#xff1a;CC BY-NC-SA 4.0 第六章&#xff1a;通过有效的威胁建模确保价值 Richard Ackroyd&#xff0c;随机风暴有限公司高级安全工程师 大多数客户意识到他们需要社会…

Linux文件chattr/lsattr/Linux权限(搭建权限测试环境实战)引申到内部原理及Linux删除系统文件原理-7539字详谈

企业高薪思维: 每一个阶段什么时候是最重要的&#xff1f;&#xff08;快速定位&#xff09; 1.学习最重要的事情 &#xff08;学生阶段&#xff0c;找工作前阶段&#xff09; 2.家庭&#xff0c;女朋友 &#xff08;工作阶段/学生阶段&#xff0c;学习不受到影响&#xff09; …

网络常识!!!

网络常识!!! 一:网络的发展史二:关键的概念三:IP地址四:端口号二级目录二级目录二级目录二级目录三级目录 一:网络的发展史 从游戏方面发展历程进行理解: 从单机游戏-----游戏支持局域网对战-------游戏支持广域网对战-------移动端 (1)局域网对战:在同一个网吧里,不同的游戏…

快速部署stable diffusion@Ubuntu

Stable Diffusion可以根据文本描述生成相关的图像&#xff0c;是当前最热门的文生图模型。 在Ubuntu下&#xff0c;可以选择快速安装&#xff0c;或者手动一步步安装。 快速安装 使用文档中的方法&#xff0c;先下载一个sh文件&#xff0c;然后执行这个文件&#xff0c;就自动…

UUPSUpgradeable部署合约和升级合约

文章目录 写一个合约1. 使用代理部署 并添加拥有者2. 没有name number为103. 使用代理升级部署 填写上面代理的合约地址4. 合约地址没有变&#xff0c;但是添加了name&#xff0c;并且保存了number的属性值 写一个合约 // SPDX-License-Identifier: MIT // Compatible with Op…