有这么一个需求,要求人员可以跨部门的权限管理,我们解决方案是,在用户表中增加depLimmit字段(长度要稍微设置点哟),保存部门的id逗号分隔,使用的时候就用in(id1,id2)方式查询使用,
页面分配使用到了ztree树,回显,分配,ajax查看管理部门,这些功能,
<div style="margin-left:305px;" id="permissionTreeParentDiv">
<div style="border:1px solid #B8D0D6;width:100%; background:#fff; float:left ">
<div class="pageHeader" style="background-color: #EFF3F6;">
<h3>分配权限</h3>
</div>
<div layoutH="71">
<ul class="ztree" id='deparmentPermissionTree'>
</ul>
<%-- <ul class="tree treeFolder treeCheck expand">
<s:iterator value="departmentList" var="department">
<li>
<c:remove var="roleFlag"/>
<c:forEach items="${depPermissionList}" var="oldDeparment">
<c:if test="${oldDeparment.id == department.id}">
<c:set var="roleFlag" value="checked='true'"/>
</c:if>
</c:forEach>
<a ${roleFlag} tvalue="${department.id }" tname="departmentIds">${department.name}</a>
</li>
</s:iterator>
</ul>--%>
</div>
<div class="formBar">
<ul>
<p:url url="adminChangeUser_doUserChangRoleDpLimit.action">
<li>
<div class="buttonActive">
<div class="buttonContent">
<button class="close" id="depRoleManagementSave" type="button">保存</button>
</div>
</div>
</li>
</p:url>
<li>
<div class="buttonActive">
<div class="buttonContent">
<button class="close" type="button">
取消
</button>
</div>
</div>
</li>
</ul>
</div>
</div>
</div>
js控制
<script type="text/javascript">
var permissionTree = {
//异步请求
async: {
enable: true,
/*url: "system/role_usersJson.action",
autoParam: ["id"]*/
},
//选择框
check: {
enable: true,
chkboxType: {Y: "ps", N: "s"}
},
//数据格式
data: {
simpleData: {
enable: true
}
}
};
//初始化部门的树形结构
$.getJSON("system/department_treeDataJsonForCommon.action?_t=" + new Date().getTime()+"&id="+${user.id}, function (json) {
var permissionTrees = $.fn.zTree.init($("#deparmentPermissionTree"), permissionTree, json);
var allNodes = permissionTrees.getNodes();
$.each(allNodes,function(i,n){
permissionTrees.checkNode(n, false, true);
})
//要选中的id
var perCheckNodes = [];
var inputs = $(":input[name='dp']");
//构建json串
var s="{";
for(var i=0;i<inputs.length;i++){
//if(inputs[i].value!=''){}
if(i>0){
s+= ",\"id"+i+"\""+":"+"{\"id\":"+inputs[i].value+"}";
}else{
<span style="white-space:pre"> </span>s+= "\"id"+i+"\""+":"+"{\"id\":"+inputs[i].value+"}";
}
}
s+="}"
var exts = jQuery.parseJSON(s)
// var exts = JSON.parse(s);
//var exts=eval(s)
//alert(JSON.stringify(exts))
$.each(exts, function (i, n) {
perCheckNodes.push(permissionTrees.getNodeByParam("id", n.id, null));
})
$.each(perCheckNodes, function (i, n) {
permissionTrees.checkNode(n, true, false);
})
})
$(function(){
$("#depRoleManagementSave").click(function(){
var userId = $("#userId");
var permissionTree = $.fn.zTree.getZTreeObj("deparmentPermissionTree");
var nodes = permissionTree.getCheckedNodes(true);
var data = "";
$.each( nodes,function (index, node) {
data += "depPermissionList[" + index + "].id=" + node.id + "&";
});
data += "user.id=" + userId.attr("value")+"&date="+new Date().getTime();
$.ajax({
type: "POST",
data: data,
dataType: "text",
url: 'adminChangeUser_doUserChangRoleDpLimit.action',
success: function (data) {
DWZ.ajaxDone($.parseJSON(data));
}
});
})
})
</script>