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

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

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
highlightCurrent?是否高亮当前选中节点booleantrue
expandIcon?是否显示展开图标booleantrue
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) 分别为事件数据,节点数据,节点元素
nodeDblclick节点双击事件(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, preventDefault: Function, _default: Function) 分别为拖拽节点数据列表,放下节点数据,回调函数(调用后阻止默认的移动操作),回调函数(调用后移动节点)
droppedIn放在节点内事件(dragData: any[], dropData: any, preventDefault: Function, _default: Function) 分别为拖拽节点数据列表,放下节点数据,回调函数(调用后阻止默认的移动操作),回调函数(调用后移动节点)
droppedAfter放在节点后事件(dragData: any[], dropData: any, preventDefault: Function, _default: Function) 分别为拖拽节点数据列表,放下节点数据,回调函数(调用后阻止默认的移动操作),回调函数(调用后移动节点)
end拖拽结束事件(event: DragEvent, data: any, nodeElement: HTMLElement) 分别为事件数据,节点数据,节点元素

3、方法

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

4、插槽

插槽名说明
nodeIcon自定义展开图标{ data, size } 分别为节点数据,展开图标大小
nodeIcon自定义节点图标{ data, size } 分别为节点数据,节点图标大小
  • 32
    点赞
  • 29
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值