tree-transfer-vue3插件(树形数据穿梭框)

tree-transfer-vue3

效果图

tree-transfer-vue3效果图

简介

tree-transfer-vue3 是一个基于 VUE 和 element-plus 的树形穿梭框组件,使用前请确认已经引入element-plus!
此组件功能类似于element-plus的transfer组件,但是里面的数据是树形结构!
实际上,tree-transfer-vue3 依赖的 element-plus 组件分别是Checkbox 多选框,Button 按钮,和最主要的Tree 树形控件写成!并非是在 element-plus 的穿梭框组件上的扩展,而仅仅是参照了其外观样式和功能。

我命油我不油天,仿写一个 vue3 版本的树形穿梭框组件玩玩;参考el-tree-transfer

NPM - GitHub - CSDN

快速上手

npm 下载插件

npm install tree-transfer-vue3 --save

npm i tree-transfer-vue3 -S

然后你可以像使用普通组件一样使用 tree-transfer-vue3

<template><tree-transferref="transferRef"v-model:fromData="fromData"v-model:toData="toData":defaultProps="{id: 'id', // 节点idparentId: 'parentId', // 父节点idlabel: 'label',children: 'children',disabled: 'disabled',}"rootPid="0"@add="handleAdd"@remove="handleremove"/>
</template><script setup>
import { ref } from 'vue';
import TreeTransfer from 'tree-transfer-vue3'; // 引入const transferRef = ref(null); // 穿梭框Ref
const fromData = ref([{id: '1',parentId: 0,label: '一级 1',children: [{id: '1-1',parentId: '1',label: '二级 1-1',children: [],},{id: '1-2',parentId: '1',label: '二级 1-2',children: [{id: '1-2-1',parentId: '1-2',disabled: true,children: [],label: '二级 1-2-1',},{id: '1-2-2',parentId: '1-2',children: [],label: '二级 1-2-2',},{id: '1-2-3',parentId: '1-2',children: [],label: '二级 1-2-3',},],},],},{id: '2',parentId: 0,label: '一级 2',children: [{id: '2-1',parentId: '2',label: '二级 2-1',},{id: '2-2',parentId: '2',label: '二级 2-2',},],},{id: '4',parentId: 0,label: '一级 4',children: [{id: '4-1',parentId: '4',label: '二级 4-1',},{id: '4-2',parentId: '4',label: '二级 4-2',},],},
]);
const toData = ref([]);const handleAdd = (_fromData, _toData, { checkedKeys, checkedNodes, harfKeys, harfNodes }) => {console.log('handleAdd', checkedKeys, checkedNodes, harfKeys, harfNodes);
};
const handleremove = (_fromData, _toData, { checkedKeys, checkedNodes, harfKeys, harfNodes }) => {console.log('handleremove', checkedKeys, checkedNodes, harfKeys, harfNodes);
};
</script>

属性

属性名说明类型默认值
titleList标题列表Array[‘源列表’, ‘目标列表’]
showFilter是否显示过滤框Booleantrue
placeholder搜索框提示文字(注意:如果 placeholderList 里面有值,优先采用 placeholderList)String请输入关键字搜索
placeholderList搜索框提示文字列表Array[]
showBtnTxt是否显示按钮文字Booleanfalse
btnTitleList按钮文字(在 showBtnTxt 为 true 的情况下展示)Array[‘添加’, ‘移除’]
defaultProps树节点的属性配置Object见下表
rootPid根节点 pid,用于结束递归String/Number0
renderAfterExpand是否在第一次展开某个树节点后才渲染其子节点Booleantrue
load加载子树数据的方法,仅当 lazy 属性为 true 时生效Function
fromRenderContent左侧 from 树节点的内容区的渲染函数Function
toRenderContent右侧 to 树节点的内容区的渲染Function
highlightCurrent是否高亮当前选中节点Booleanfalse
defaultExpandAll是否默认展开所有节点Booleantrue
expandOnClickNode是否在点击节点的时候展开或者收缩节点Booleanfalse
checkOnClickNode是否在点击节点的时候选中节点Booleantrue
autoExpandParent是否自动展开父节点Booleantrue
checkStrictly是否严格的遵守父子节点不互相关联Booleanfalse
accordion是否每次只打开一个同级树节点Booleanfalse
indent相邻级节点的水平缩进,单位为像素Number18
icon自定义显示节点前的展开箭头String
lazy是否懒加载子节点数据Booleanfalse
draggable是否开启拖拽节点功能Booleanfalse
fromAllowDrag左侧树判断节点能否被拖拽 如果返回 false ,节点不能被拖动Function
toAllowDrag右侧树判断节点能否被拖拽 如果返回 false ,节点不能被拖动Function

defaultProps

defaultProps说明类型
id指定节点 id 为节点对象的某个属性值string
parentId指定节点的父节点 id 为节点对象的某个属性值string
label指定节点标签为节点对象的某个属性值string/Function
children指定子树为节点对象的某个属性值string
disabled指定节点选择框是否禁用为节点对象的某个属性值string/Function
isLeaf指定节点是否为叶子节点,仅在指定了 lazy 属性的情况下生效string/Function
class自定义节点类名string/Function

事件

序号事件名称说明回调参数
1add点击添加按钮时触发的事件(2.4.0 以前为 addBtn)function(fromData,toData,obj),树形穿梭框 transfer 模式分别为 1.移动后左侧数据,2.移动后右侧数据,3.移动的节点 keys、nodes、halfKeys、halfNodes 对象;
2remove点击移除按钮时触发的事件(2.4.0 以前为 removeBtn)function(fromData,toData,obj),树形穿梭框 transfer 模式分别为 1.移动后左侧数据,2.移动后右侧数据,3.移动的节点 keys、nodes、halfKeys、halfNodes 对象;
3nodeDragStart开始拖拽时触发的事件共 3 个参数,依次为:“from”/“to”、对应被拖拽节点对应的 Node、event
4nodeDragEnter拖拽进入其他节点时触发的事件共 4 个参数,依次为:“from”/“to”、对应被拖拽节点对应的 Node、所进入节点对应的 Node、event
5nodeDragLeave拖拽离开某个节点时触发的事件共 4 个参数,依次为:“from”/“to”、对应被拖拽节点对应的 Node、所离开节点对应的 Node、event
6nodeDragOver在拖拽节点时触发的事件(类似浏览器的 mouseover 事件)共 4 个参数,依次为:“from”/“to”、对应被拖拽节点对应的 Node、当前进入节点对应的 Node、event
7nodeDragEnd拖拽结束时(可能未成功)触发的事件共 5 个参数,依次为:“from”/“to”、对应被拖拽节点对应的 Node、结束拖拽时最后进入的节点(可能为空)、被拖拽节点的放置位置(before、after、inner)、event
8nodeDrop拖拽成功完成时触发的事件共 5 个参数,依次为:“from”/“to”、对应被拖拽节点对应的 Node、结束拖拽时最后进入的节点、被拖拽节点的放置位置(before、after、inner)、event

方法

序号名称说明
1fromTreeRef左侧 from 树 ref 对象
2toTreeRef右侧 to 树 ref 对象
3addToAims手动调用添加穿梭,用于调整初始数据默认穿梭 function(useCallBack: Boolean) 本次穿梭是否需要触发@add 的 emit 回调; 默认 true 触发
4removeToSource手动调用添加穿梭,用于调整初始数据默认穿梭 function(useCallBack: Boolean) 本次穿梭是否需要触发@remove 的 emit 回调; 默认 true 触发
5clearFilter清除选中节点,默认清除全部 function(type: String) from 左边; to 右边; all 全部; 默认 all
6clearCheck清除选中节点,默认清除全部 function(type: String) from 左边; to 右边; all 全部; 默认 all

插槽

插槽名说明
from-titlefrom 穿梭框顶部标题
to-titleto 穿梭框顶部标题
from-tree-contentfrom 穿梭框 tree 节点内容
to-tree-contentto 穿梭框 tree 节点内容
from-footerfrom 穿梭框底部
to-footerto 穿梭框底部

版本说明

1.1.0 添加说明文档,更新事件、方法、插槽

GitHub demo 代码地址 欢迎 star 谢谢

有 BUG 请随时联系我,可以在我的博客下面留言!

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

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

相关文章

临床检验方法与仪器 第一部分作业:光谱分析仪器与技术的总结与归纳+新型光谱仪的调研

临床检验方法与仪器 第一部分作业 列表归纳紫外-可见分光光度计、荧光光谱分析仪、原子吸收光谱仪、原子发射光谱仪的原理、特点、技术优势和主要应用对象&#xff1b;调研新型光谱仪&#xff0c;每一类至少提供1个例子&#xff0c;列出图片、厂家、型号、主要技术特点和优势。…

Linux系统编程-多线程线程属性

如何查看有那些多线程系统调用属性api 线程属性系统api举例 /* int pthead_attr_init(pthread_attr_t *attr); -对属性变量初始化int pthread_attr_destroy(pthread_attr_t *attr); -使用完毕需要销毁int pthread_attr_getdetachstate(const pthread_attr_t *attr, int*detach…

LVGL加入外围字库

一、首先lvgl是有自带字库的 lvgl/src/font 如下图 二、但如果这个字库不能满足我们的需求我们就要外建字库。 1、字库生成软件LVGL官网,字体转换器 — LVGL如下图: 最后按“提交”就可以看到有一个字体被下载到你电脑里。他是以.c文件的型式,把它COPY到lvgl的根目录下 2、…

【Steam登录】protobuf协议逆向

https://api.steampowered.com/IAuthenticationService/GetPasswordRSAPublicKey/v1 搜索 input_protobuf_encoded定位 input_protobuf_encoded的值就是 o s r.SerializeBody() o i.iI(s) 精准定位 打上条件断点&#xff1a;t ‘Authentication.GetPasswordRSAPublicKey…

ML 系列:第 21 节 — 离散概率分布(二项分布)

一、说明 二项分布描述了在固定数量的独立伯努利试验中一定数量的成功的概率&#xff0c;其中每个试验只有两种可能的结果&#xff08;通常标记为成功和失败&#xff09;。 二、探讨伯努利模型 例如&#xff0c;假设您正在抛一枚公平的硬币 &#xff08;其中正面成功&#xff…

【模拟集成电路】知识点笔记_1

知识点笔记_1 零极点相关1 PM和GM相关概念2零极点 温度系数五种常见噪声源MOS管和BJT选取BJT刨面图工艺角衬底主要噪声来源共模反馈三种常用CMFB1 工作在线性区MOS作为CMFB&#xff08;匹配决定输出电压&#xff09;2 电阻反馈&#xff08;Buf&#xff09;3 电流差分对&#xf…

资产管理:SpringBoot框架的高效解决方案

6系统测试 6.1概念和意义 测试的定义&#xff1a;程序测试是为了发现错误而执行程序的过程。测试(Testing)的任务与目的可以描述为&#xff1a; 目的&#xff1a;发现程序的错误&#xff1b; 任务&#xff1a;通过在计算机上执行程序&#xff0c;暴露程序中潜在的错误。 另一个…

Redis - 集群(Cluster)

一、基本概念 上述的哨兵模式,提⾼了系统的可⽤性.但是真正⽤来存储数据的还是master和slave节点.所有的数 据都需要存储在单个master和slave节点中. 如果数据量很⼤,接近超出了master/slave所在机器的物理内存,就可能出现严重问题了. 如何获取更⼤的空间?加机器即可!所谓&q…

基于springboot的高校科研管理系统(源码+调试+LW)

项目描述 临近学期结束&#xff0c;还是毕业设计&#xff0c;你还在做java程序网络编程&#xff0c;期末作业&#xff0c;老师的作业要求觉得大了吗?不知道毕业设计该怎么办?网页功能的数量是否太多?没有合适的类型或系统?等等。这里根据你想解决的问题&#xff0c;今天给…

pwn学习笔记(11)--off_by_one

pwn学习笔记&#xff08;11&#xff09;–off_by_one ​ 在处理for循环或者while循环的时候&#xff0c;有的可能会遇到如下情况&#xff1a; #include<stdio.h>int main(){char buf[0x10];for (int i 0 ; i < 0x10 ; i ){buf[i] getchar();}puts(buf);}​ 多次输…

YOLOv8模型改进 第十九讲 添加倒置残差移动块iRMB(Inverted Residual Mobile Block,) 去除图像噪声

本文这次分享的是倒置残差移动块iRMB&#xff0c;iRMB&#xff08;Inverted Residual Mobile Block&#xff09;的作用主要是在神经网络中实现高效的特征提取&#xff0c;它融合了卷积神经网络&#xff08;CNN&#xff09;捕捉局部特征的高效性和 Transformer 动态建模长距离交…

express项目中使用MySQL

一、安装mysql 模块 1.1 先配置包管理工具 npm init -y1.2、安装mysql 模块 npm install mysql2二、配置mysql // 1、导入mysql模块 const mysql require("mysql2");// 2、建立与mysql 数据库的链接 const db mysql.createPool({host: "127.0.0.1", …

泛微E9 OA与金蝶云的差旅费报销接口集成

FD001-差旅费报销申请 泛微>金蝶--498 集成案例分享 在企业日常运营中&#xff0c;差旅费报销申请的处理效率直接影响到员工满意度和财务管理的精确性。为了实现泛微OA-Http系统与金蝶云星空平台之间的数据无缝对接&#xff0c;我们设计并实施了FD001-差旅费报销申请集成方…

新疆高校大数据实验室案例分享

高校大数据实验室建设&#xff0c;企业可以提供技术支持、实训平台和项目案例&#xff0c;高校则提供科研和教学资源&#xff0c;实现产学研一体化。不仅有利于大数据技术的应用和人才培养也有利于区域发展。 泰迪与新疆合作的院校包括新疆大学、昌吉学院等 新疆大…

11.9.2024刷华为

文章目录 HJ31 单词倒排HJ32 密码提取语法知识记录 傻逼OD题目又不全又要收费&#xff0c;看毛线&#xff0c;莫名奇妙 HW这叼机构别搁这儿害人得不得&#xff1f; 我觉得我刷完原来的题目 过一遍华为机考的ED卷出处&#xff0c;就行了 HJ31 单词倒排 游戏本做过了好像 HJ3…

C语言--结构体的大小与内存对齐,位段详解

一.前言 为了保证文章的质量和长度&#xff0c;小编将会分两篇介绍&#xff0c;思维导图如下&#xff0c;上篇已经讲过了概念部分&#xff0c;本文主要讲解剩余部分&#xff0c;希望大家有所收获&#x1f339;&#x1f339; 二.结构体的大小与内存对齐 2.1 存在对齐的原因 平…

腾讯混元3D模型Hunyuan3D-1.0部署与推理优化指南

腾讯混元3D模型Hunyuan3D-1.0部署与推理优化指南 摘要&#xff1a; 本文将详细介绍如何部署腾讯混元3D模型Hunyuan3D-1.0&#xff0c;并针对不同硬件配置提供优化的推理方案。我们将探讨如何在有限的GPU内存下&#xff0c;通过调整配置来优化模型的推理性能。 1. 项目概览 腾…

第18篇 :深入剖析systemverilog中 randomize 失败案例启示录(二)

今天我们继续修改之前的例子&#xff0c;你会有意想不到的收获。程序源代码&#xff0c;和上一节文章一样。 症状3&#xff1a; 这里&#xff0c;我们没有显式调用类的randomize() 函数&#xff0c;而是定义了一个类函数。在函数中 &#xff0c;重新约束了类内的随机变量。请…

CC音乐 1.0 | 纯净版音乐软件,内置3条音源,支持无损和母带下载

CC音乐是一款全新上架的第三方音乐软件&#xff0c;界面纯净简洁且无广告。内置三条音源接口&#xff0c;用户可以畅听全网音乐。软件涵盖了电台、排行榜、歌单分类、视频、歌手等多个栏目&#xff0c;即使是会员和灰色歌曲也能随意畅听。此外&#xff0c;CC音乐还支持下载无损…

【销帮帮-注册_登录安全分析报告-试用页面存在安全隐患】

联通支付注册/登录安全分析报告 前言 由于网站注册入口容易被黑客攻击&#xff0c;存在如下安全问题&#xff1a; 暴力破解密码&#xff0c;造成用户信息泄露短信盗刷的安全问题&#xff0c;影响业务及导致用户投诉带来经济损失&#xff0c;尤其是后付费客户&#xff0c;风险巨…