[TOC] # 查询控件下拉树 ## 效果展示 ![](https://img.kancloud.cn/df/00/df0072ab232b54593baf0f2f30fc3e33_1898x637.png) ## 配置步骤 >查询控件`下拉树` `version 1.3.79及以上版本` `date 20210820` > 目前只支持接口方式设置下拉树,接口需要返回如下格式的JSON数据。暂时不支持设置默认值。 ### 1、数据源配置 >在报表字段明细或报表参数中的`参数配置`中配置路径,支持domainURL固定写法{'loadTree':'路径'}或http方式 ![](https://img.kancloud.cn/a2/2e/a22ed74c222be8f9cf7712662c49363f_1847x240.png) ``` domainURL项目路径方式:{'loadTree':'{{ domainURL }}/sys/user/treeTest'} ``` ``` http或https方式: {'loadTree':'http://api.jeecg.com/mock/26/queryTree'} ``` ## 后台返回数据格式 ``` [{ id: 001, pid: '', value: 'A01' title: '节点名称1' }, { id: 002, pid: '', value: 'A02' title: '节点名称2' }] ``` ## 属性说明 | 属性 | 描述 | | --- | --- | | id | 标识 | | pid | 父节点的标识,和id一起标识上下级关系 | | value | 实际查询用到的值 | | title | 下拉树显示的文本值 | * 2.后台接口接收参数:`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; } ``` # 报表钻取回显参数 ## 效果展示 ![](https://img.kancloud.cn/f6/5a/f65a7a226fee8313325b5c4e49c69024_1911x980.png) ## 配置步骤 ### 1、数据源配置 >需要配置`loadTree`加载树结构 >[info] 在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'} ``` ![](https://img.kancloud.cn/89/52/8952fba9786a1ff6dd24af230ac19ba8_1895x897.png) ## 后台返回数据格式 ``` [{ "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; } ``` * 2. 自定义`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; } ```