html:
<ul id="relInfoTree" class="easyui-tree"></ul>
js:
$(document).ready(function() {
loadRelTree();
});
function loadRelTree(){
$('#relInfoTree').tree({
// checkbox: true,
animate:true,
lines:true,
url: '/CrocodileSecret/system/cisweb/loadRelTree?id=0',//这是第一次加载树的url 加载根节点
loadFilter:function(data){
return data.treeJson;
},
onBeforeExpand:function(node){
$("#relInfoTree").tree('options').url='/CrocodileSecret/system/cisweb/loadRelTree?id='+node.id;//这是点击父节点的时候发送请求去加载子节点
}
});
}
java:
-EasyuiTreeNode.java
private Integer id;//: 唯一标示;
private String text;//: 显示的文本;
private List<EasyuiTreeNode> children;//:子节点;
private String state;//:closed或open,表示节点是展开还是折叠;
private String iconCls="icon-blank";//空白图标,可选
getter...setter...
-Controller
@RequestMapping(value = "/loadRelTree", method = RequestMethod.POST)
@ResponseBody
public JSONObject loadRelTree(Integer id,@RequestParam(value = "orgid", required = false) Integer orgid,HttpServletRequest request, HttpServletResponse response) {
JSONObject json = new JSONObject();
json = cisWebApp.loadRelTree(id);
return json;
}
-service
public JSONObject loadRelTree(Integer id, Integer orgId) {
JSONObject object = new JSONObject();
List<EasyuiTreeNode> list=new ArrayList<EasyuiTreeNode>();
if(id==null || id==0) {
EasyuiTreeNode node=new EasyuiTreeNode();
CisOrg cisOrg=cisComp.getOrgById(orgId);
node.setId(cisOrg.getOwnerUserId());
node.setText(cisOrg.getOrgName());
node.setState("open");
node.setChildren(cisComp.getSublist(cisOrg.getOwnerUserId()));//start 初始显示一级
if(node.getChildren().size()>0) {
node.getChildren().stream().forEach(subNode->{
subNode.setState(crmComponent.selIsClose(subNode.getId())>0 ? "closed":"open");
});//end 如果只显示根节点,不用这段
}
list.add(node);
}else {//异步加载
list=cisComp.getSublist(id);
if(list.size()>0) {
list.stream().forEach(node->{
node.setState(crmComponent.selIsClose(node.getId())>0 ? "closed":"open");
});
}
}
object.put("treeJson", list);
object.put("status", "succeed");
return object;
}
-xml
<!-- 查询下级 -->
<select id="getSublist" parameterType="java.lang.Integer" resultType="***.util.EasyuiTreeNode">
SELECT
u.id,
u.nickname text
FROM
crm_user r
INNER JOIN cis_user u ON u.id = r.user_id
WHERE
parent_user_id = #{userId}
AND u.deleted=0
AND r.deleted=0
AND r.weight=1
</select>
<!-- 查询是否有下级 -->
<select id="selIsClose" parameterType="java.lang.Integer" resultType="java.lang.Integer">
SELECT
COUNT(*)
FROM
crm_user
WHERE
parent_user_id = #{userId}
AND deleted = 0
AND weight=1
</select>