查询控件下拉树
效果展示
配置步骤
查询控件
下拉树
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;
}