跳到主要内容

查询控件下拉树

效果展示

配置步骤

查询控件下拉树 version 1.3.79及以上版本 date 20210820

目前只支持接口方式设置下拉树,接口需要返回如下格式的JSON数据。暂时不支持设置默认值。

1、数据源配置

在报表字段明细或报表参数中的参数配置中配置路径,支持domainURL固定写法{'loadTree':'路径'}或http方式

domainURL项目路径方式:{'loadTree':'{{ domainURL }}/sys/user/treeTest'}
http或https方式: {'loadTree':'https://api.jeecg.com/mock/26/queryTree'}
请求方式:get

后台返回数据格式

[{
id: 001,
pid: '',
value: 'A01'
title: '节点名称1'
}, {
id: 002,
pid: '',
value: 'A02'
title: '节点名称2'
}]

属性说明

属性描述
id标识
pid父节点的标识,和id一起标识上下级关系
value实际查询用到的值
title下拉树显示的文本值

后台接口接收参数:pid 为空查询一级节点

接口示例代码:

//参考代码 loadTree
@GetMapping("/treeTest")
public List<TreeModel> treeTest(@RequestParam(name="pid",required = false) String pid){
LambdaQueryWrapper<SysCategory> queryWrapper = new LambdaQueryWrapper<>();
if(pid==null || "".equals(pid)){
// 在这里 一级节点的pid是0,其他情况自己判断
queryWrapper.eq(SysCategory::getPid, "0");
}else{
queryWrapper.eq(SysCategory::getPid, pid);
}
List<SysCategory> ls = this.sysCategoryService.list(queryWrapper);
// 本例中 是先找原数据再转化成 前端下拉树需要的数据,实际可以自定义sql,返回model即可
List<TreeModel> result = new ArrayList<>();
for(SysCategory c: ls){
TreeModel mode = new TreeModel(c.getId(), c.getPid(), c.getCode(), c.getName());
result.add(mode);
}
return result;
}

/**
* 参考代码:loadTreeByValue
* 通过value值获取树集合
* @param value 多个值,用逗号分割
* @return List<TreeModel> 树集合
*/
@GetMapping(value = "/loadTreeByValue")
public List<TreeModel> loadTreeByValue(@RequestParam(name="value") String value) {
List<TreeModel> treeModelList = new ArrayList<>();
LambdaQueryWrapper<WsControlTree> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.in(WsControlTree::getCode,Arrays.asList(value.split(",")));
List<WsControlTree> ls = wsControlTreeService.list(queryWrapper);
// 本例中 是先找原数据再转化成 前端下拉树需要的数据,实际可以自定义sql,返回model即可
for(WsControlTree tree: ls){
TreeModel mode = new TreeModel(tree.getId(), tree.getPid(), tree.getCode(), tree.getName());
treeModelList.add(mode);
}
return treeModelList;
}

报表钻取回显参数

效果展示

配置步骤

1、数据源配置

需要配置loadTree加载树结构

在1.5.0以后的版本,还需要添加通过value值获取树集合,属性名为loadTreeByValue

domainURL项目路径方式:{'loadTree':'{{ domainURL }}/sys/user/treeTest','loadTreeByValue':'{{ domainURL }}/demo/wsControlTree/loadTreeByValue'}
http或https方式:{'loadTree':'http://192.168.1.109:8080/jeecg-boot/demo/wsControlTree/treeTest','loadTreeByValue':'http://192.168.1.109:8080/jeecg-boot/demo/wsControlTree/loadTreeByValue'}

后台返回数据格式

[{
"title": "一级菜单",
"value": "A01",
"pid": "0",
"id": "1537703191145512962"
}]

属性说明

  • 1.返回值属性说明
属性描述
id标识
pid父节点的标识,和id一起标识上下级关系
value实际查询用到的值
title下拉树显示的文本值
  • 2.自定义loadTree路径代码参考,后台接口接收参数:pid为空时查询一级节点
/**
* 通过pid查询树集合
*
* @param pid 父级id
* @return List<TreeModel> 树集合
*/
@GetMapping(value = "/treeTest")
public List<TreeModel> treeTest(@RequestParam(name = "pid", required = false) String pid) {
List<TreeModel> treeModelList = new ArrayList<>();
LambdaQueryWrapper<WsControlTree> queryWrapper = new LambdaQueryWrapper<>();
if (pid == null || "".equals(pid)) {
// 在这里 一级节点的pid是0,其他情况自己判断
queryWrapper.eq(WsControlTree::getPid, "0");
} else {
queryWrapper.eq(WsControlTree::getPid, pid);
}
List<WsControlTree> ls = wsControlTreeService.list(queryWrapper);
// 本例中 是先找原数据再转化成 前端下拉树需要的数据,实际可以自定义sql,返回model即可
List<WsControlTree> result = new ArrayList<>();
for (WsControlTree tree : ls) {
TreeModel mode = new TreeModel(tree.getId(), tree.getPid(), tree.getCode(), tree.getName());
treeModelList.add(mode);
}
return treeModelList;

}
  • 3.自定义loadTreeByValue路径代码参考,后台接口接收参数:value查询的值,多个以逗号分割
/**
* 通过value值过去树集合
*
* @param value
* @return
*/
@GetMapping(value = "/loadTreeByValue")
public List<TreeModel> loadTreeByValue(@RequestParam(name = "value") String value) {
List<TreeModel> treeModelList = new ArrayList<>();
LambdaQueryWrapper<WsControlTree> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.in(WsControlTree::getCode, Arrays.asList(value.split(",")));
List<WsControlTree> ls = wsControlTreeService.list(queryWrapper);
// 本例中 是先找原数据再转化成 前端下拉树需要的数据,实际可以自定义sql,返回model即可
List<WsControlTree> result = new ArrayList<>();
for (WsControlTree tree : ls) {
TreeModel mode = new TreeModel(tree.getId(), tree.getPid(), tree.getCode(), tree.getName());
treeModelList.add(mode);
}
return treeModelList;
}