树形组件
用于处理树形数据的组件.
配置说明
注解配置
- 配置注解:
@dev.fastball.ui.components.tree.config.TreeConfig
- 属性说明:
- keyField:
- 类型:
String
- 默认值:
id
- 配置作用: 数据的标识字段, 默认是 id
- 类型:
- titleField:
- 类型:
String
- 默认值: 无
- 配置作用: 展示字段, 即节点展示在树上的名称
- 类型:
- childrenField:
- 类型:
String
- 默认值: 无
- 配置作用: 子字段, 用于声明树形数据的子孙数据字段
- 类型:
- defaultExpandAll:
- 类型:
boolean
- 默认值:
false
- 配置作用: 是否默认展开所有节点, 仅在同步树情况下生效
- 类型:
- keyField:
记录操作配置
- RecordAction:
- 是否支持: 是
- 作用: 生成树形节点后的操作按钮, 操作相关详见操作
基础树形组件
- 实现接口:
dev.fastball.ui.components.tree.Tree<Model>
- 使用场景: 可用于一次性获取的树形数据展示, 比如组织机构
- 方法说明:
Model loadData()
: 用于返回树形结构的数据
- 示例代码链接:
java
@UIComponent
@TreeConfig(
titleField = "name",
childrenField = "subOrg",
defaultExpandAll = true
)
public class OrgTree implements Tree<Org> {
private final OrgRepository orgRepository;
@Override
public DataResult<Org> loadData() {
return DataResult.build(orgRepository.findRootAndLoadSubOrg());
}
}
异步树形组件
- 实现接口:
dev.fastball.ui.components.tree.AsyncTree<Model>
- 使用场景: 可用于异步获取的树形数据展示, 比如大型的组织机构
- 方法说明:
Model loadData(Model)
: 返回入参节点的所有子节点, 入参是点击展开时传入的父节点
- 示例代码链接:
java
@UIComponent
@TreeConfig(
titleField = "name",
childrenField = "subOrg"
)
public class OrgAsyncTree implements AsyncTree<Org> {
private final OrgRepository orgRepository;
@Override
public DataResult<Org> loadData(Org parent) {
if (parent == null) {
return DataResult.build(orgRepository.findRoot());
}
return DataResult.build(orgRepository.findByParentId(parent.getId()));
}
}
有参树形组件
- 实现接口:
dev.fastball.ui.components.tree.VariableTree<Model, Param>
- 使用场景: 有参数的树形列表组件, 可用于某数据的子树查询, 比如查询某人的下级部门结构
- 方法说明:
Model loadData(Param)
: 用于返回树形结构的数据
- 示例代码链接:
java
@UIComponent
@TreeConfig(
titleField = "name",
childrenField = "subOrg"
)
public class OrgAsyncTree implements VariableTree<Org, OrgType> {
private final OrgRepository orgRepository;
@Override
public DataResult<Org> loadData(OrgType orgType) {
return DataResult.build(orgRepository.findByType(orgType));
}
}
有参异步树形组件
- 实现接口:
dev.fastball.ui.components.tree.VariableAsyncTree<Model, Param>
- 使用场景: 有参数的树形列表组件, 可用于异步获取的树形数据展示, 比如大型的组织机构基于组织类型查询
- 方法说明:
Model loadData(Model, Param)
: 用于返回树形结构的数据, 入参分别为父节点和组件参数
- 示例代码链接:
java
@UIComponent
@TreeConfig(
titleField = "name",
childrenField = "subOrg"
)
public class OrgAsyncTree implements VariableAsyncTree<Org, OrgType> {
private final OrgRepository orgRepository;
@Override
public DataResult<Org> loadData(Org parent, OrgType orgType) {
if (parent == null) {
return DataResult.build(orgRepository.findRootByType(orgType));
}
return DataResult.build(orgRepository.findByParentIdAndType(parent.getId(), orgType));
}
}