这是用jquery ztree做的二级权限树,互联二版代码,原理主要:
1.框架基于struts2、spring3、ibatIS2.3
2.主要是TEmployeePriv表的三个字段(PRIV_NUM、MENU_ID_1、PRIV_TYPE):
privNum为id(子id),menuId1为pId(父id),
privType为权限菜单类型[权限菜单(60),权限集合(61),权限动作(62)]即60一级菜单、61二级菜单、62三级菜单
一、action代码
/**
* 打开授权
*/
public String openImpower()
{
role = service.queryById(roleNum);
TRolePriv rp = new TRolePriv();
rp.setRoleNum(roleNum);
List<TRolePriv> rpList = service.queryRolePriv(rp);//权限中间表List
List<TEmployeePriv> privList = service.queryAllPriv(new TEmployeePriv());//查询所有TEmployeePriv
/**合成权限树*/
List<PrivJSON> jsonList = new ArrayList<PrivJSON>();
for( TEmployeePriv priv : privList ){
if("60".equals(priv.getPrivType())){
PrivJSON json = new PrivJSON();//一级菜单
json.setId(priv.getPrivNum());
json.setpId("0");
json.setName(priv.getPrivName());
json.setOpen(false);//默认不展开
jsonList.add(json);
}
else{
PrivJSON json2 = new PrivJSON();
json2.setId(priv.getPrivNum());
json2.setpId(priv.getMenuId1());
json2.setName(priv.getPrivName());
json2.setPrivNum(priv.getPrivNum());
for(TRolePriv trp : rpList){
if(trp.getPrivNum().equals(priv.getPrivNum())){
json2.setOpen(false);//默认不展开
json2.setChecked(true);
}
}
jsonList.add(json2);
}
}
JSONArray myjsonObj = JSONArray.fromObject(jsonList);//将权限集合,转成JSON数组
this.getRequest().setAttribute("myjsonObj",myjsonObj);
successPath = "/jsp/phone/priv/role/impowerRole.jsp";
return SUCCESS;
}
二、jsp页面代码
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>角色授权</title>
<%@ include file="/cssBasePage.jsp"%>
<link rel="stylesheet" href="BaseInfo/ztree/demoStyle/demo.css" type="text/css"/>
<link rel="stylesheet" href="BaseInfo/ztree/zTreeStyle/zTreeStyle.css" type="text/css"/>
<script type="text/javascript" src="BaseInfo/ztree/jquery.ztree-2.6.js"></script>
<script type="text/javascript" src="<%=path%>/jsp/phone/priv/role/impowerRole.js"></script>
<script type="text/javascript">
var zTreeObj;
var setting = {checkable:true,treeNodeKey:"id",treeNodeParentKey:"pId",isSimpleData:true}; //zTree的参数配置,深入使用请参考 API 文档(参数说明 -- setting 详解)
/*var zNodes = [
{name:"test1", open:true, nodes:[
{name:"test1_1"}, {name:"test1_2"}]},
{name:"test2", open:true, nodes:[
{name:"test2_1"}, {name:"test2_2"}]}
];*/ //zTree的数据属性,深入使用请参考 API 文档(参数说明 -- zTreeNodes 详解)
var myjsonObj = ${requestScope.myjsonObj};
var zNodes = myjsonObj;
$(document).ready(function(){
zTreeObj = $("#treeDemo").zTree(setting, zNodes);
});
function expandAll(expandSign) {
zTreeObj.expandAll(expandSign);
}
function checkAllTreeNode(checked) {
var oldNodes = zTreeObj.getNodes();
var oldcheckNum = zTreeObj.getCheckedNodes(checked).length;
zTreeObj.checkAllNodes(checked);
var newcheckNum = zTreeObj.getCheckedNodes(checked).length;
if (newcheckNum != oldcheckNum) zTreeObj.checkAllNodes(checked);
}
/*测试用树授权*/
function testImpower()
{
var temp ="";
var nodes = zTreeObj.getCheckedNodes();
for( var i=0; i<nodes.length; i++ ){
if(nodes[i].privNum != ''){
temp = temp+";"+nodes[i].privNum;
}
}
alert(temp);
document.getElementById('privSelect').value=temp;
}
/*分配运维权限*/
function allotYunwei()
{
checkAllTreeNode(false);
var privNum = ["menu_0101","menu_0102"];//数组不能包含一级菜单,包含将会选中整个节点
for(var i=0;i<privNum.length;i++){
var node = zTreeObj.getNodeByParam("privNum", privNum[i]);
node.checked=true;
zTreeObj.updateNode(node,true);
//zTreeObj.selectNode(node);//选中指定的节点
}
}
</script>
</head>
<body>
<hp:HpNavigate TValue="工号及权限管理,角色管理,角色授权"></hp:HpNavigate>
<hp:HpSearch namekey="site.page.update.title">
<br/>
<table>
<tr>
<td class="txtright">当前角色名称:</td>
<td class="txtleft">
${ role.roleName }
</td>
</tr>
<tr>
<td class="txtleft" colspan="2"> </td>
</tr>
<tr>
<td class="txtleft" colspan="2">
<div class="zTreeDemoBackground">
<button onclick="expandAll(true);">全展开</button>|<button onclick="expandAll(false);">全关闭</button>
<button onclick="checkAllTreeNode(true);">全选</button>|<button onclick="checkAllTreeNode(false);">全不选</button>
<button onclick="testImpower();">测试</button>
<button onclick="allotYunwei();">运维授权</button><br/><br/>
<ul id="treeDemo" class="tree"></ul>
</div>
</td>
</tr>
</table>
<form method="post" name="form1" id="form1">
<input type="hidden" name="roleNum" value="${role.roleNum}"/>
<input id="privSelect" name="privSelect" type="hidden"/> <!-- 真正提交时的list,后台Action中得到此项,修改权限 -->
<br/>
<table>
<tr>
<td class="txtright">修改原因:</td>
<td class="txtleft">
<hp:HpTextarea TRows="6" name="alterReason" id="alterReason" TValue=""
TCols="75" TClass="text-input inputbox"
TOnBlur="onBlurValiTextArea3(this.value,'role\\\\.alterReasonDiv')"
TMaxLength="50" />
<div class="DivShowInfoCss" id="role.alterReasonDiv" style="display: inline" ></div>
</td>
</tr>
<tr>
<td class="txtright">业务密码:</td>
<td class="txtleft">
<hp:HpInputPass name="password2" TClass="inputbox" id="password2"
TMaxLength="16" TOnBlur="onBlurValiPass2(this.value,'password2Div')" ></hp:HpInputPass>
<div class="DivShowInfoCss" id="password2Div" style="display: inline" ></div>
</td>
</tr>
<tr>
<td></td>
<td class="txtleft">
<hp:HpButton TJsClick="impower()" TValue="save" id=""></hp:HpButton>
<hp:HpButton TJsClick="$('.DivShowInfoCss').html('');" TValue="reset" id=""></hp:HpButton>
<hp:HpButton TJsClick="$.hpDialog.close();" TValue="return" id=""></hp:HpButton>
</td>
<td></td>
</tr>
</table>
</form>
</hp:HpSearch>
</body>
</html>
分享到:
相关推荐
使用zTree实现树形菜单,具体可参见zTree的API,此文档给出示例。
多级可展开闭合的树形菜单,代码很简单直观,一目了然。
基于最新版本ztree而开发的下拉树插件,还拥有搜索功能
非常好用的Jquery-ztree树形菜单代码并适应移动端,可以自动配置图标
ztree 后台树java代码组装 数据库建表sql jdbc连接,树节点数据保存方法,生成树方法采用递归算法实现。
bootstrap风格的zTree树形菜单代码 一款支持自定义编辑,添加列表,删除列表等功能的bootstrap风格的zTree树形菜单代码,jQuery树形结构菜单插件下载。
ztree树形菜单demo
使用了zTree框架,完成树形结构。实现增删改,链接到底层数据库
Ztree+treeTable实现 Java实现 树形菜单 树形表格 有丰富的实例 和官方开发文档,也有官方api 不懂的可以查询官方api,实现很简单,按照实例做就可以
jquery ztree自定义编辑的树形菜单插件----------------------------------------------------------
ztree的树形菜单
经过亲测,这个ztree插件的确好用,由于刚开始用的是以前的版本,所以会导致效果出不来,但这个可以使用,使用时记得将类名写为ztree
zTree 是一个依靠 jQuery 实现的多功能 “树插件”。优异的性能、灵活的配置、多种功能的组合是 zTree 最大优点。
Jquery-ztree树形菜单代码并适应移动端
zTree 是一个依靠 jQuery 实现的多功能 “树插件”。优异的性能、灵活的配置、多种功能的组合是 zTree 最大优点。适合项目开发,尤其是 树状菜单、树状数据的Web显示、权限管理等等。 zTree v3.0 将核心代码按照...
ztree动态异步数据树加载,并且附带右键菜单功能,对树节点进行操作
前端框架 zTree 从数据库中动态加载树形菜单前端框架
真实企业架构,完整代码、jar包及注释 使用的Oracle数据库,连接用户可在 applicationContext-db.xml文件里进行修改; 运行时自动创建数据表;