废话不说直接上干货
先看下效果吧

<span >组织:</span>
<input class="easyui-combotree" id="left_org_code" name="left_org_code" data-options="prompt:'请选择组织'" style="width:200px;height:30px">
//组织异步加载下拉框,支持多选
$('#left_org_code').combotree({
width:300,//下拉框宽度
multiple:true,//多选
// required:true,//是否必选
cascadeCheck : true,//true(有个问题,若父节点没有展开,则多选失效)选中父节点时,子节点也全部选中,全选子节点时,父节点也选中;false所有节点都需手动选择(不联动),默认true
editable:true,//是否可编辑,默认false,可编辑状态下支持模糊搜索
panelHeight:'400px',//下拉框高度
//第一次应该先加载顶级的节点(inIt这个参数是我为了限制选择范围加的,如果不需要可以不加)
url: '请求后台获取数据的url?action=getDeptlist&parentNo='+"parentNo"+'&inIt='+"inIt",
onBeforeExpand: function (node) {
$(this).tree('options').url =
'请求后台获取数据的url?action=getDeptlist&parentNo='+node.id+'&inIt='+"inIt";
},
onSelect:function (node) {
//单选情况下直接使用,多选需要循环
if(node.id=="1"){
layer.alert("该节点不可选中");
$('#left_org_code').combotree('clear');//清空选中
}
},
});
获取并处理选择的信息
//处理多选组织
var left_org_code_Temp = $('#left_org_code').combobox('getValues');
if (left_org_code_Temp.length==0 || (left_org_code_Temp.length==1 && left_org_code_Temp[0] == '')){
deptCode='';
}else {
deptCode="'" + left_org_code_Temp.join("','") + "'";
}
//处理单选组织
var org_code = $('#left_org_code').combobox('getValue');
后台获取数据就不写了,获取json格式数据,生成json数据注意:字段须为id text state(其中state必须有:open指不能再打开,closed:能再打开,我是统一设置成了closed,你如果能判断出最末一级的话,那就更好了,将最末一级设置成open,这样就更完美了)
要不还是写一下执行sql吧
//初始加载时,parentNo传根节点,后续每点击一下就传当前节点
select org_code "id", org_name "text", 'closed' "state"
from 组织表 p
where 1 = 1
and p.parent_org_code = #parentNo#
order by sort