1.首先前端所需数据结构->核心是 hasChildren
2.使用组件
//异步树结构
import JTreeTable from '@/components/jeecg/JTreeTable'
components: {
JTreeTable,
},
computed: {
tableProps() {
let _this = this
return {
// 列表项是否可选择
// 配置项见:https://vue.ant.design/components/table-cn/#rowSelection
rowSelection: {
selectedRowKeys: _this.selectedRowKeys,
onChange: (selectedRowKeys) => _this.selectedRowKeys = selectedRowKeys
}
}
}
},
<div>
<j-tree-table
:url="urlItem"
:childrenUrl='childrenUrl'
:columns="columns"
:tableProps="tableProps"
queryKey='parentCode'
/>
</div>
url指定根节点请求路径
childrenUrl 指定子节点请求接口
queryKey 指定根据哪个字段来去查询
官网连接:http://doc.jeecg.com/2044021
VO结构
/**
* 用于区域管理的VO结构
*/
@Data
@NoArgsConstructor
public class NjtAreaVO extends NjtArea {
private Boolean hasChildren;
public NjtAreaVO(NjtArea njtArea) {
//设置是否有子节点(这里只要类型小于2都默认有子节点)
setHasChildren(njtArea.getUnit()<2);
// 父类属性
this.setId(njtArea.getId());
this.setCode(njtArea.getCode());
this.setParentCode(njtArea.getParentCode());
this.setName(njtArea.getName());
this.setUnit(njtArea.getUnit());
this.setStatus(njtArea.getStatus());
this.setCreateBy(njtArea.getCreateBy());
this.setCreateTime(njtArea.getCreateTime());
this.setUpdateBy(njtArea.getUpdateBy());
this.setUpdateTime(njtArea.getUpdateTime());
}
}
后台接口:
@AutoLog(value = "地区层级关系表-列表异步查询")
@ApiOperation(value = "地区层级关系表-列表异步查询",notes = "地区层级关系表-列表异步查询")
@GetMapping(value = "/list3")
public Result<?> list3(){
//查询出所有父节点
QueryWrapper<NjtArea> queryWrapper = new QueryWrapper<>();
queryWrapper.isNull("parent_code");
List<NjtArea> list = njtAreaService.list(queryWrapper);
//包装成Vo
List<NjtAreaVO> voList = new ArrayList<>(list.size());
for (NjtArea njtArea : list) {
NjtAreaVO njtAreaVO = new NjtAreaVO(njtArea);
//设置是否有子节点(这里只要类型小于2都默认有子节点)
njtAreaVO.setHasChildren(njtAreaVO.getUnit()<2);
voList.add(njtAreaVO);
}
return Result.OK(voList);
}
/**
* 根据父节点code获取子节点数据
*
* @param parentCode
* @return
*/
@AutoLog(value = "地区层级关系表-列表查询")
@ApiOperation(value = "地区层级关系表-列表查询", notes = "地区层级关系表-列表查询")
@GetMapping(value = "/listChildren2")
public Result<?> listChildren2(@RequestParam String parentCode) {
QueryWrapper<NjtArea> queryWrapper = new QueryWrapper<>();
queryWrapper.eq("parent_code", parentCode);
List<NjtArea> list = njtAreaService.list(queryWrapper);
List<NjtAreaVO> voList = new ArrayList<>(list.size());
for (NjtArea njtArea : list) {
NjtAreaVO njtAreaVO = new NjtAreaVO(njtArea);
//设置是否有子节点(这里只要类型小于2都默认有子节点)
njtAreaVO.setHasChildren(njtAreaVO.getUnit()<2);
voList.add(njtAreaVO);
}
return Result.OK(voList);
}