vue中tree-transfer树形穿梭框的使用

本文介绍了如何在Vue项目中使用Tree Transfer组件,包括安装插件、展示效果、核心代码解析及注意事项。通过示例代码和官方文档,帮助开发者掌握这一功能的使用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

首先安装插件

npm install el-tree-transfer --save
或者
npm i el-tree-transfer -S
安装

效果图

代码

  <template>
      <div>
        // 使用树形穿梭框组件
        <tree-transfer :title="title" :from_data='fromData' :to_data='toData' :defaultProps="{label:'label'}" @add-btn='add' @remove-btn='remove' :mode='mode' height='540px' :filter="false" openAll>
         <template v-slot:from>
                <el-input v-model="ruleForm.name" placeholder="搜索"></el-input>
            </template>

            <template v-slot:to>
                <el-input v-model="ruleForm.name" placeholder="搜索"></el-input>
            </template>
      </tree-transfer>
      </div>
    </template>

    <script>
      import treeTransfer from 'el-tree-transfer' // 引入

      export defult {
          components:{ treeTransfer } ,// 注册
        data(){
          return:{
            mode: "transfer", // transfer addressList
            fromData:[
              {
                id: "1",
                pid: 0,
                label: "一级 1",
                children: [
                  {
                    id: "1-1",
                    pid: "1",
                    label: "二级 1-1",
                    disabled: true,
                    children: []
                  },
                  {
                    id: "1-2",
                    pid: "1",
                    label: "二级 1-2",
                    children: [
                      {
                        id: "1-2-1",
                        pid: "1-2",
                        children: [],
                        label: "二级 1-2-1"
                      },
                      {
                        id: "1-2-2",
                        pid: "1-2",
                        children: [],
                        label: "二级 1-2-2"
                      }
                    ]
                  }
                ]
              },
            ],
            toData:[]
          }
        },
        methods:{
          // 切换模式 现有树形穿梭框模式transfer 和通讯录模式addressList
          changeMode() {
            if (this.mode == "transfer") {
              this.mode = "addressList";
            } else {
              this.mode = "transfer";
            }
          },
          // 监听穿梭框组件添加
          add(fromData,toData,obj){
            // 树形穿梭框模式transfer时,返回参数为左侧树移动后数据、右侧树移动后数据、移动的{keys,nodes,halfKeys,halfNodes}对象
            // 通讯录模式addressList时,返回参数为右侧收件人列表、右侧抄送人列表、右侧密送人列表
            console.log("fromData:", fromData);
            console.log("toData:", toData);
            console.log("obj:", obj);
          },
          // 监听穿梭框组件移除
          remove(fromData,toData,obj){
            // 树形穿梭框模式transfer时,返回参数为左侧树移动后数据、右侧树移动后数据、移动的{keys,nodes,halfKeys,halfNodes}对象
            // 通讯录模式addressList时,返回参数为右侧收件人列表、右侧抄送人列表、右侧密送人列表
            console.log("fromData:", fromData);
            console.log("toData:", toData);
            console.log("obj:", obj);
          }
        },
        
      }
    </script>

{% note info flat %}注意:数据的pid一定要存在{% endnote %}

文档

序号参数说明类型默认值补充
1width宽度String100%建议在外部盒子设定宽度和位置,否则100%不会生效
2height高度String300px-
3title标题String[“源列表”, “目标列表”]-
4button_text按钮名字Array--
5from_data源数据Array-数据格式同element-ui tree组件,但必须有id和pid
6to_data目标数据Array-数据格式同element-ui tree组件,但必须有id和pid
7defaultProps配置项-同el-tree中propsObject{ label: “label”, children: “children”, isLeaf: “leaf”, disable: “disable” }用法和el-tree的props一样
8node_key自定义node-key的值,默认为idStringid必须与treedata数据内的id参数名一致,必须唯一
9pid自定义pid的参数名,默认为"pid"Stringpid有网友提出后台给的字段名不叫pid,因此增加自定义支持
10filter是否开启筛选功能Booleanfalse根据defaultProps参数的label字段筛选
11mode设置穿梭框模式Stringtransfer-
12openAll是否默认展开全部Booleanfalse存在性能问题
13defaultCheckedKeys默认选中节点Arrayfalse只匹配初始时默认节点,不会在你操作后动态改变默认节点
14transferOpenNode是否开启筛选功能穿梭后是否展开穿梭的节点true-
15placeholder设置搜索框提示语String输入关键词进行筛选-
16defaultTransfer是否自动穿梭一次默认选中defaultCheckedKeys的节点Booleanfalse-
17addressOptions通讯录模式配置项Object{num: Number, suffix: String, connector: String}-
18lazy是否启用懒加载Booleanfalse-
19filterNode自定义搜索函数Function--
20renderAfterExpand是否在第一次展开某个树节点后才渲染其子节点Booleantrue-
21expandOnClickNode是否在点击节点的时候展开或者收缩节点Booleantrue-
22checkOnClickNode是否在点击节点的时候选中节点Booleanfalse-
23indent相邻级节点间的水平缩进,单位为像素Number16-
24icon-class自定义树节点的图标String--
25draggable是否开启拖拽节点功能Booleanfalse-
26allow-drag判断节点能否被拖拽Function(node)--
27allow-drop拖拽时判定目标节点能否被放置Function(draggingNode, dropNode, type)--

方法

序号名称说明
1addToAims手动调用添加穿梭,用于调整初始数据默认穿梭 function(useCallBack: Boolean) 本次穿梭是否需要触发@add-btn的emit回调
2clearChecked清除选中节点,默认清除全部 function(type: String) left左边 right右边 all全部 默认all
3getChecked获取选中数据,若使用了to_data,可以直接用
4setChecked设置选中数据 function(leftKeys = [], rightKeys = [])
5clearFilter清除搜索框条件,默认清除全部 function(type: String) left左边 right右边 all全部 默认all

官方文档

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值