Appearance
BizTree 业务树
基于 el-tree 封装的“展示 + 操作”形态业务树:关键字搜索过滤(命中高亮)、复选(父子关联开关)、展开层级控制、懒加载透传、内置 loading 遮罩、节点 hover 操作按钮(新增 / 编辑 / 删除事件外抛,action-filter 按节点定制)。其余属性 / 事件透传 el-tree(node-click、node-expand、check 等)。菜单管理、组织部门管理、商品 / 物料分类管理。
与 BizOrgTreeSelect 的边界:后者是表单字段级的“选出来”形态;本组件面向页面主体区的展示与维护(搜索、操作、懒加载一体的管理树)。
基础用法
搜索过滤
节点操作按钮
hover 节点显示操作按钮;新增 / 删除直接操作本地数据,编辑仅演示事件外抛
复选形态
父子不关联(checkStrictly)
已勾选叶子节点:(暂无)
懒加载
暂无数据
展开节点时延迟 600ms 模拟接口返回子级
自定义节点
Props
| 属性名 | 类型 | 默认值 | 说明 |
|---|---|---|---|
| data | BizTreeNodeData[] | [] | 树数据 |
| tree-props | TreeOptionProps | — | 字段映射(透传 el-tree props:label / children / disabled / isLeaf) |
| node-key | string | 'id' | 节点唯一键字段名,操作类方法(append / remove 等)依赖 |
| searchable | boolean | false | 顶部搜索框:输入即过滤,命中关键词高亮 |
| filter-placeholder | string | '请输入关键字' | 搜索占位文案 |
| filter-method | (query, data) => boolean | — | 自定义过滤方法(默认 label 包含匹配,不区分大小写) |
| checkable | boolean | false | 复选形态(show-checkbox) |
| check-strictly | boolean | false | 复选父子不关联 |
| default-expand-all | boolean | false | 默认展开全部(懒加载模式下仅展开已加载节点) |
| expand-level | number | 1 | 展开层级(default-expand-all 为 false 时生效,懒加载模式无效) |
| lazy | boolean | false | 懒加载模式(load 必传) |
| load | LoadFunction | — | 懒加载函数(透传 el-tree load) |
| loading | boolean | false | 加载中遮罩 |
| highlight-current | boolean | true | 高亮当前点击节点 |
| expand-on-click-node | boolean | false | 点击节点即展开 / 折叠 |
| show-actions | boolean | false | 节点 hover 显示操作按钮(事件外抛,数据变更由外部处理) |
| action-filter | (data, isLeaf) => BizTreeAction[] | — | 按节点定制可见操作(返回空数组则该节点不显示;默认 add / edit / remove) |
| empty-text | string | '暂无数据' | 空态文案 |
| height | number | string | — | 容器高度(超出滚动),如 360 / '100%' |
Events
| 事件名 | 参数 | 说明 |
|---|---|---|
| node-add | (data, node) | 点击节点「新增子级」按钮 |
| node-edit | (data, node) | 点击节点「编辑」按钮 |
| node-remove | (data, node) | 点击节点「删除」按钮 |
| node-click / node-expand / check / … | — | el-tree 原生事件透传(v-bind="$attrs" 落到内部 el-tree) |
Slots
| 插槽名 | 说明 |
|---|---|
| default | 节点内容,作用域 { node, data }(不传时渲染 label + 搜索高亮 + 操作按钮) |
| search | 搜索区整体替换,作用域 { query } |
| empty | 空态整体替换 |
Expose
| 名称 | 类型 | 说明 |
|---|---|---|
| getTree | () => TreeInstance | el-tree 实例(链式调用原生方法) |
| filter | (query: string) => void | 外部触发关键字过滤 |
| clearFilter | () => void | 清空搜索 |
| append | (data, parent) => void | 在指定父节点(key 或节点)下追加子节点 |
| remove | (node) => void | 删除节点 |
| getCheckedKeys | () => Array<string | number> | 获取勾选节点 key 集合 |
| getCheckedNodes | (leafOnly?: boolean) => BizTreeNodeData[] | 获取勾选节点数据集合 |
| setCheckedKeys | (keys) => void | 设置勾选 |
| setCurrentKey | (key) => void | 设置当前高亮节点 |
| getCurrentNode | () => BizTreeNodeData | undefined | 获取当前高亮节点数据 |
TIP
需要 node-contextmenu、node-collapse 等更多 el-tree 能力时直接在组件上绑定即可(原生透传);节点右键菜单可基于 node-contextmenu + ElDropdown 自行组合。