本帖最后由 purple 于 2012-7-16 18:13 编辑
根据直接领导关系产生的,用了递归函数。 由于在固定资产管理中经常要将资产分类,特做了这个函数,共享之。
效果如图:
如下代码直接贴进 下拉框选项脚本即可
function createLayeredCategory(domainid,opts,id,level)
{
var sql="SELECT a.id item_id,a.NAME item_name,'"+getDomainid()+"' domainid,COUNT(*) cnt FROM obpm.t_user a left join obpm.t_user b ";
sql=sql+"on a.id=b.superior where a.superior='"+id+"' GROUP BY a.id,a.name ORDER BY cnt";
var datas = queryBySQL(sql);
var rec=null;var str="|"; var id="";
for(var it = datas.iterator();it.hasNext();){
rec = it.next();str="";
if(level>1 && level<3) str = str +"&"+"n"+"b"+"s"+"p"+";"+"&"+"n"+"b"+"s"+"p"+";"+"&"+"n"+"b"+"s"+"p"+";"+"&"+"n"+"b"+"s"+"p"+";"+"|--";
else if(level>2){
str = "";
for (var count=0;count<level-1;count++) {
str = str+"&"+"n"+"b"+"s"+"p"+";"+"&"+"n"+"b"+"s"+"p"+";"+"&"+"n"+"b"+"s"+"p"+";"+"&"+"n"+"b"+"s"+"p"+";"+"|";
}
str += "--";
}else str="|--";
str += rec.getItemValueAsString("name");
id = rec.getItemValueAsString("id");
opts.add(str,id); //println(id+str);
createLayeredCategory(domainid,opts,id,level+1);
}
}
var domainid = getDomainid();
var datas =queryBySQL("SELECT id item_id,superior item_idp,NAME item_name,'" + domainid +"' domainid FROM obpm.t_user where superior is null or superior=''");
var opts=$TOOLS.createOptions();
for(var iter = datas.iterator();iter.hasNext();){
doc = iter.next();
opts.add(doc.getItemValueAsString("name"), doc.getItemValueAsString("id"));
createLayeredCategory(domainid,opts,doc.getItemValueAsString("id"),1);
}
opts; |