Appearance
BizTreeTransfer 树形穿梭框
左右双树的树形穿梭框:左树全量勾选 → 右树实时投影已选(勾选节点按层级嵌套显示,半选祖先作纯容器节点),右树节点 hover 移除按钮反向取消勾选。v-model 为已选 key 集合(受控),check-strictly 支持父子不关联模式,双侧搜索过滤,标题栏计数。菜单授权、数据权限配置、角色资源分配——替代 el-transfer 仅支持平铺列表的场景。
采用即时同步交互(勾选即穿梭,无中间确认按钮),左右状态始终一致,适合授权类配置页;提交时机由业务方在保存按钮上自行决定。
基础用法
待选择2 / 9
已选择已选 2 项
已选 keys:12、21
父子不关联
可选区域2 / 8
已授权区域已选 2 项
双侧搜索
待选择2 / 11
已选择已选 2 项
自定义节点
待选择0 / 6
已选择已选 0 项
暂无数据
外部受控
待选择2 / 7
已选择已选 2 项
禁用与空态
禁用
待选择3 / 4
已选择已选 3 项
Props
| 属性名 | 类型 | 默认值 | 说明 |
|---|---|---|---|
| data | BizTreeTransferNodeData[] | [] | 左树全量数据(右树由勾选结果投影生成) |
| v-model | Array<string | number> | [] | 已选节点 key 集合(受控,外部变更自动回写左树) |
| tree-props | TreeOptionProps | — | 字段映射(透传 el-tree props:label / children / disabled / isLeaf) |
| node-key | string | 'id' | 节点唯一键字段名 |
| check-strictly | boolean | false | 复选父子不关联(勾父不含子,右树仅显示所勾节点本身) |
| searchable | boolean | false | 双侧搜索框 |
| filter-placeholder | string | '请输入关键字' | 搜索占位文案 |
| filter-method | (query, data) => boolean | — | 自定义过滤方法(默认 label 包含匹配,不区分大小写) |
| titles | [string, string] | ['待选择', '已选择'] | 双侧面板标题 |
| height | number | string | 320 | 面板主体高度(超出滚动) |
| disabled | boolean | false | 整体禁用 |
| empty-text | string | '暂无数据' | 空态文案 |
Events
| 事件名 | 参数 | 说明 |
|---|---|---|
| update:model-value | (keys: Array<string | number>) | 已选集合变化(v-model) |
| change | (keys: Array<string | number>) | 已选集合变化(勾选 / 移除 / 清空后触发) |
Slots
| 插槽名 | 说明 |
|---|---|
| default | 节点内容双侧生效,作用域 { node, data }(不传时渲染 label) |
Expose
| 名称 | 类型 | 说明 |
|---|---|---|
| getLeftTree | () => TreeInstance | 左树 el-tree 实例 |
| getCheckedNodes | () => BizTreeTransferNodeData[] | 已选完整节点数据集合(含各级勾选节点) |
| clear | () => void | 清空已选 |
TIP
已选项回显依赖 data 中包含对应节点(组件从全量树投影右树);若后端仅返回 key 列表,先反查补全数据结构再传入。