Skip to content
本页目录

树形组件

用于处理树形数据的组件.

tree.png

配置说明

注解配置

  • 配置注解: @dev.fastball.ui.components.tree.config.TreeConfig
  • 属性说明:
    • keyField:
      • 类型: String
      • 默认值: id
      • 配置作用: 数据的标识字段, 默认是 id
    • titleField:
      • 类型: String
      • 默认值: 无
      • 配置作用: 展示字段, 即节点展示在树上的名称
    • childrenField:
      • 类型: String
      • 默认值: 无
      • 配置作用: 子字段, 用于声明树形数据的子孙数据字段
    • defaultExpandAll:
      • 类型: boolean
      • 默认值: false
      • 配置作用: 是否默认展开所有节点, 仅在同步树情况下生效

记录操作配置

  • 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));
    }
}