导包(记不清哪些反正在这个里面)
<link rel="stylesheet" type="text/css" media="all" href="${basePath}resource/ztree/ztree/css/zTreeStyle.css" />
<link rel="stylesheet" type="text/css" media="all" href="${basePath}resource/ztree/core/treeSelect.css" />
<script src="${basePath}resource/ztree/ztree/js/jquery.ztree.all.min.js"></script>
<script src="${basePath}resource/ztree/core/treeSelect.js"></script>
<link rel="stylesheet" href="${basePath}resource/treeselect/assets/layui/css/layui.css">
<script src="${basePath}resource/treeselect/assets/layui/layui.js"></script>
主要代码
<div id="orgOut" style="width: 130px;margin-top: -16px;" ></div>
这里是下拉树赋值地方
## js部分
var num;
var datas;
$.ajax({
url : "${basePath}/queryVehicleMovementOrganization",//路径
type : "POST",
dataType:"json",
success : function(data) {
datas=eval('(' + data + ')');
$(function() {
var zTree= $("#orgOut").treeSelect({
data: datas,
inputId: "departOut",//随便取什么名字,这相当于你后台获取值的名字
zTreeOnClick: function(event, treeId, treeNode) {
childerNodeId.length=0;
$("#departOut").val(treeNode.name);
$("#departOut").attr("readOnly","readOnly"); //我自己设置只读,可以不要
num=treeNode.id;//节点id
childerNodeId.push(num);
findAllChilderNodesIdById(num);
}
})
});
}
});
//记录字节点ID的集合对象
var childerNodeId = new Array();//这个要传到后台
// 根据ID查找当前节点下的所有子节点ID
// * nodeId:要查找的节点ID
function findAllChilderNodesIdById(nodeId) {
for(var i = 0; i < datas.length; i++) {
var id = datas[i].id;
var pId = datas[i].pId;
if(pId == nodeId) { //找到一个子节点记录起来继续递归下一个
this.childerNodeId.push(id);
this.findAllChilderNodesIdById(id);
}
}
}
后台控制层
这个是代码是你放在你接收条件查询的里面
接收那边传过来的集合对象
String childerNodeId = request.getParameter("childerNodeIds");
StringBuilder orgOut = new StringBuilder(); //这个取名字最好和div里面的id一样
if(childerNodeId != "" && !childerNodeId.equals(null)){
String[] arr = childerNodeId.split(","); // 用,分割
for (int i = 0; i < arr.length; i++) //这个FOR循环就是加单引号
{
arr[i] = "'" + arr[i]+"'"+",";
orgOut.append(arr[i]);
}
//去掉最后一个字符
orgOut.deleteCharAt(orgOut.length()-1);
}
System.out.println(orgOut.toString());//这个就是你的查询条件toString一下就可以用了
这个代码是下拉树获取数据的方法
/**
* 查询组织全部信息
* @param request
* @return Object
*/
@RequestMapping("/queryVehicleMovementOrganization")
@ResponseBody
public Object selectGrg(HttpServletRequest request){
List<Map<String, Object>> list=vehicleMovementService.queryVehicleMovementOrganization(request);
StringBuilder str=new StringBuilder();
//拼接格式
str.append("[");
for (Map<String, Object> map : list) {
str.append("{");
str.append("'name':"+"'"+map.get("NAME")+"'"+",");//对应数据库名字大写
str.append("'pId':"+map.get("PARENT_ID")+",");
str.append("'id':"+map.get("ID")+",");
str.append("'type':"+"'1'");
str.append("},");
}
str.append("]");
System.out.println("hhhh"+str.toString());
return JSON.toJSONString(str.toString());
}
业务层Service
这是我自己写的获取数据,不同的需要自己改
/**
* 查询调动信息
* @param request
* @return List集合中的对象是一个Map对象
*/
public List<Map<String, Object>> queryVehicleMovementOrganization(HttpServletRequest request) {
UserInfoPojo user = (UserInfoPojo) request.getSession().getAttribute("RealUser");// 当前操作人
String sql = " select a.id,a.parent_id,a.name"
+ " from jf_dept a "
+" start WITH a.id =(select t.dept_id from jf_dept_user t "
+ " where t.user_id = '"+user.getId()+"' )"
+ " connect by prior a.id = a.parent_id";
List<Map<String, Object>> list = jdbcTemplate.queryForList(sql);
return list;
}
注意
如果没报错数据出不来可以是页面挤了,你调一下页面大小或者间距