1.HTML代码
<select id="useraccount" name="useraccount" class="easyui-combotree" data-options="valueField:'account', textField:'text',multiple:true"></select>
2.JS
$('#useraccount').combotree({
onlyLeafCheck:true,
url: sname+'/FlowVerController/getDeptAndStaff',
onBeforeCheck:function(node){
debugger
var rows = node.children;
var id = node.id;//部门就是数字,人员是字母
var domId = node.domId;
var num = parseInt(id);
var flage = IsNum(num);
if((rows == undefined && flage) || (rows != undefined && rows.length>0)){
$('#'+domId+' .tree-checkbox').remove();//删除复选框
$("#useraccount").combotree("unselect");//不选中
}
},
loadFilter: function(res){
var data = res.treeNodes;
debugger;
return commonConvert(data,'id','name','parentId');
},onShowPanel:function(){//
var tree = $("#useraccount").combotree("tree");
var root = tree.tree('getRoot'); //获取根节点
var nodes = tree.tree('getChildren',root.target);//获取所有的节点
for(var i=0,len=nodes.length;i<len;i++){
if(!nodes[i].children){//最后一级
var num = nodes[i].id-0;
var domId = nodes[i].domId;
var flage = IsNum(num);
if(flage){//是数字
$('#'+domId+' .tree-checkbox').remove();
}
}
}
}
});
//初始化树
/**
* rows : 接口返回的结果 id :rows中对象的主键id textname:rows中单个对象中用于显示的字段名
* superid:rows中单个对象中用于定位父级的字段名
*/
function commonConvert(rows, id, textname, superid) {
function exists(rows, ParentDepartId) {
for (var i = 0; i < rows.length; i++) {
if (rows[i][id] === ParentDepartId)
return true;
}
return false;
}
var nodes = [];
for (var i = 0; i < rows.length; i++) {
var row = rows[i];
if (!exists(rows, row[superid])) {
nodes.push({
id : row[id],
text : row[textname],
iconCls : 'userGroup'
});
}
}
var toDo = [];
for (var i = 0; i < nodes.length; i++) {
toDo.push(nodes[i]);
}
while (toDo.length) {
var node = toDo.shift();
for (var i = 0; i < rows.length; i++) {
var row = rows[i];
if (row[superid] == node.id) {
var child = {
id : row[id],
text : row[textname],
iconCls : 'userGroup'
};
if (node.children) {
node.children.push(child);
} else {
node.children = [ child ];
}
node.state = 'closed';
if (node.id == nodes[0].id) {
node.state = 'open';
}
toDo.push(child);
}
}
}
return nodes;
}