Skip to content

MlTreeSelect 树形选择

树形选择组件,支持单选、多选、搜索等功能,是 MlTreeSelectDialogMlTreeSelectDrawer 的核心组件。

基础用法

基础的树形选择用法,通过 treeData 传入树形数据。

一级节点 1
二级节点 1-1
三级节点 1-1-1
二级节点 1-2
一级节点 2
二级节点 2-1
二级节点 2-2

多选模式

通过 multiple 属性支持多选功能。

一级节点 1
二级节点 1-1
三级节点 1-1-1
二级节点 1-2
一级节点 2
二级节点 2-1
二级节点 2-2

搜索功能

通过 showSearch 属性启用搜索功能,支持对树节点进行关键词过滤。

产品部
产品经理
张三
李四
设计师
王五
技术部
前端开发
赵六
后端开发
钱七

搜索原理

组件会递归过滤树形节点,匹配节点的 label 字段或其子节点有匹配时,该节点会被保留并显示。

Props

参数说明类型可选值默认值
treeData树形数据T[][]
treeProps树形配置(同 el-tree)Record<string, any>{ label: 'label', children: 'children' }
multiple是否多选booleanfalse
defaultExpandAll是否默认展开所有节点booleantrue
defaultSelectedKeys默认选中的节点keyany[][]
nodeKey节点唯一标识字段string'id'
showSearch是否显示搜索框booleantrue
expandOnClickNode是否点击节点展开booleanundefined
placeholder搜索框占位符string'请输入关键词搜索'

组件继承 el-tree 的所有属性,可以通过 v-bind 透传。

Events

事件名说明回调参数
confirm确认选择时触发(selectedData: T | T[]) => void
cancel取消选择时触发() => void
input搜索输入变化时触发(value: string) => void

el-tree 透传事件

所有 el-tree 的事件都会自动透传,包括:

事件名说明回调参数
node-click节点被点击时触发(data, node, instance)
node-contextmenu节点被鼠标右键点击时触发(event, data, node, instance)
check-change节点选中状态发生变化时触发(data, checked, indeterminate)
check点击复选框时触发(data, checkState)
current-change当前选中节点变化时触发(data, node)
node-expand节点被展开时触发(data, node, instance)
node-collapse节点被关闭时触发(data, node, instance)

方法

组件通过 defineExpose 暴露以下方法:

基础方法

方法名说明参数返回值
reset重置选择void
getSelectedData获取选中数据T | T[]
getSelectedKeys获取选中节点keyany[]
input触发输入事件value: stringvoid

el-tree 方法透传

方法名说明参数返回值
getCheckedNodes获取被勾选的节点any[]
getCheckedKeys获取被勾选节点的 keyany[]
getHalfCheckedNodes获取半选节点any[]
getHalfCheckedKeys获取半选节点的 keyany[]
getCurrentKey获取当前选中节点的 keystring | number | undefined
getCurrentNode获取当前选中节点any
setCheckedKeys设置勾选的节点keys: any[]void
setCheckedNodes设置勾选的节点对象nodes: any[]void
setCurrentKey设置当前选中节点的 keykey: string | number | undefinedvoid
setCurrentNode设置当前选中节点node: anyvoid
getNode获取指定 key 对应的节点key: string | numberany
filter对树节点进行筛选操作value: stringvoid
updateKeyChildren为 lazy 树更新某节点子节点key: string | number, children: any[]void
remove删除节点node: anyvoid
append插入一个新的节点data: any, parentNode?: anyvoid
insertBefore在指定节点前插入节点data: any, refNode: anyvoid
insertAfter在指定节点后插入节点data: any, refNode: anyvoid

Slots

插槽名说明作用域参数
footer底部按钮区

默认底部包含"取消"和"确定"按钮,可以通过 footer 插槽自定义。

使用场景

  • 作为独立的树形选择组件使用
  • 作为 MlTreeSelectDialogMlTreeSelectDrawer 的核心组件
  • 需要内嵌在页面中的树形选择功能
  • 组织架构选择、菜单选择、分类选择等

注意事项

  1. 数据结构:确保 treeData 的数据结构与 treeProps 配置匹配
  2. 节点唯一标识nodeKey 必须对应树节点中的唯一标识字段
  3. 单选与多选:单选模式下点击节点即可选中,多选模式下需要勾选复选框
  4. 搜索过滤:搜索基于 treeProps.label 字段进行模糊匹配
  5. 方法调用:需要通过 ref 获取组件实例后调用暴露的方法