1.
1 <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> 2 <% 3 String path = request.getContextPath(); 4 String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/"; 5 %> 6 7 8 9 1011 12 角色权限分配 13 14 15 16 17 18 19 22 34 35 36 37 38 39
2.
1 PerAssign = Ext.extend(Ext.Panel,{ 2 id: 'perAssignId', 3 constructor: function(){ 4 //创建树形面板 5 var roleTreePanel = new Ext.tree.TreePanel({ 6 id: 'roleTree', 7 //支持对树的单选 8 //只允许选择一个结点 9 //使用时,只需在声明树时,加上属性 checkModel: "single" 既可 10 checkModel: 'single', 11 rootVisible: false, 12 //这是个重要的参数,用于方便的构建树形菜单,用于远程调用树状数据 13 loader: new Ext.tree.TreeLoader({ 14 dataUrl: 'role_list.action', 15 必须有该项,不然树节点无法出现选择框 16 baseAttrs: { uiProvider: Ext.ux.TreeCheckNodeUI }//添加TreeCheckNodeUI插件 17 }), 18 //根节点 19 root: new Ext.tree.AsyncTreeNode({ 20 id: null 21 }), 22 //单击选中事件 23 listeners: {'check':{ 24 fn: function(){ 25 Ext.getCmp('treegrid').remove(); 26 setTimeout(this.refreshTree, 1000); 27 } 28 } 29 }, 30 refreshTree: function(){ 31 //获取所有选中的节点代码如下所示 32 var roleNode = Ext.getCmp('roleTree').getChecked(); 33 if(roleNode == ""){ 34 } 35 var roleId = roleNode[0].id; 36 ///得到元素的加载对象(Ext.ElementLoader) 37 // var loader=Ext.get('content-div').getLoader(); 38 Ext.getCmp('treegrid').getLoader().dataUrl='permission_list.action?roleId='+roleId; 39 //获取根节点;treeGrid.getRootNode() 40 Ext.getCmp('treegrid').getLoader().load(treeGrid.getRootNode(), function(){}); 41 } 42 }); 43 PerAssign.superclass.constructor.call(this,{ 44 layout: 'border', 45 items:[{ 46 region: 'west', 47 width: 200, 48 layout: 'fit',//· fit 一个子元素将充满整个容器(如果多个子元素则只有一个元素充满整个容器) 49 border: true, 50 frame: true, 51 title: '角色列表', 52 collapsible: true, 53 //左边树形面板 54 items: [roleTreePanel] 55 },{ 56 region: 'center', 57 layout: 'fit', 58 items: [{ 59 title: '角色权限分配', 60 //width: 500, 61 frame: 'true', 62 id: 'treegridPanel', 63 autoScroll: false, 64 xtype: 'panel', 65 items: [treeGrid], 66 buttonAlign: 'center', 67 buttons: [{ 68 text: '保存', 69 handler: saveRoleFn 70 },{ 71 text: '取消', 72 handler: function(){ 73 // var obj = Ext.query('*[name$=_rs]'); 74 // for(var i = 0; i < obj.length; i++){ 75 // var id = obj[i].id; 76 // Ext.get(obj[i].id).on('click', function(event,obj){ 77 // var flag = false; 78 // var menu_id = obj.id.split('_')[0]; 79 // var node = Ext.getCmp("perTree").getNodeById(menu_id); 80 // //alert(node); 81 // //alert(node.attributes.checked); 82 // Ext.getCmp("perTree").getNodeById(menu_id).attributes.checked = true; 83 // }) 84 // } 85 } 86 }] 87 88 }] 89 }], 90 tbar: new Ext.Toolbar({ 91 items: [{ 92 text: '新建角色', 93 iconCls: 'add', 94 id: 'role_add', 95 hidden: 'true', 96 handler: newRoleFn 97 },{ 98 text: '修改角色', 99 iconCls: 'update',100 id: 'role_update',101 hidden: 'true',102 handler: updateRoleFn103 },{104 text: '删除角色',105 iconCls: 'delete',106 id: 'role_delete',107 hidden: 'true',108 handler: deleteRoleFn109 }] 110 })111 });112 }113 });114 saveRoleFn = function(){115 var roleNode = Ext.getCmp('roleTree').getChecked();116 if(roleNode == ""){117 Ext.Msg.alert('提示','请先选择角色');118 return;119 }120 var checkedNodesIds = roleNode[0].id;121 var objs = Ext.query('*[name$=_rs]');122 Ext.each(objs, function(obj){123 if(obj.checked){124 checkedNodesIds +=","+obj.id;125 }126 });127 if(checkedNodesIds == "") {128 Ext.Msg.alert('提示','没有为角色分配权限');129 return;130 }131 Ext.Ajax.request({132 url: 'rolePer_save.action',133 params: {134 checkedNodesIds: checkedNodesIds135 },136 success: saveRoleSuccessFn,137 failure: saveRoleFailureFn138 });139 };140 saveRoleSuccessFn = function(response, options){141 var datas = Ext.util.JSON.decode(response.responseText);142 Ext.Msg.confirm('提示',datas.msg,function(){143 144 })145 };146 saveRoleFailureFn = function(response, options){147 Ext.Msg.alert('提示','连接后台失败');148 };149 newRoleFn = function(){150 var roleAddWin = new RoleAddWin();151 roleAddWin.show();152 };153 updateRoleFn = function(){154 var roleNode = Ext.getCmp('roleTree').getChecked();155 if(roleNode == ""){156 Ext.Msg.alert('提示','请先选择角色!');157 return;158 }159 var roleId = roleNode[0].id;160 var roleAddWin = new RoleAddWin();161 roleAddWin.text = '修改角色';162 roleAddWin.show();163 Ext.get('role_roleId').dom.value = roleId;164 Ext.get('role_roleName').dom.value = roleNode[0].text;165 };166 deleteRoleFn = function(){167 var roleNode = Ext.getCmp('roleTree').getChecked();168 if(roleNode == ""){169 Ext.Msg.alert('提示','请先选择角色!');170 return;171 }172 Ext.Msg.confirm('提示','将删除所有具有该角色的用户!',function(button, text){173 if(button == 'yes'){174 var roleId = roleNode[0].id;175 Ext.Ajax.request({176 url: 'role_delete.action',177 params: {178 id : roleId179 },180 success: function(response, options){181 var datas = Ext.util.JSON.decode(response.responseText);182 Ext.Msg.alert('提示',datas.msg,function(){183 Ext.getCmp('roleTree').getLoader().dataUrl='role_list.action';184 Ext.getCmp('roleTree').getLoader().load(Ext.getCmp('roleTree').getRootNode(), function(){});185 });186 },187 failure: saveRoleFailureFn188 })189 }190 });191 }192 var treeGrid = new Ext.ux.tree.TreeGrid({193 width: 900,194 height:400,195 id: 'treegrid',196 autoScroll: false,197 enableColumnMove: false,198 enableColumnResize: false,199 columns: [{200 header: '模块',201 dataIndex: 'text',202 width: 190,203 fixed:true,204 resizable: false,205 align: 'center'206 },{207 header: '功能',208 width: 700,209 resizable: false,210 fixed:true,211 dataIndex: 'functions',212 align: 'center'213 }],214 root: new Ext.tree.AsyncTreeNode({215 expanded :true, 216 id: '0'217 }),218 //获取子节点的URL地址219 dataUrl: 'permission_list.action'220 });221 /**222 * 传入roleId显示出checked出已有权限223 */
3
1 package com.hrmsys.action; 2 3 import java.util.HashMap; 4 import java.util.List; 5 import java.util.Map; 6 7 import com.hrmsys.model.Menu; 8 import com.hrmsys.model.User; 9 import com.hrmsys.service.MenuService;10 import com.hrmsys.service.PermissionService;11 12 public class PermissionAction extends BaseAction{13 private PermissionService permissionService;14 private MenuService menuService;15 private String node;//树形传入的id16 private String menuId;17 private String roleId;18 19 public void list(){20 String permissionJson = permissionService.list(node, roleId);21 this.setRoleId(null);22 this.out(permissionJson);23 }24 25 public void permission(){26 Map permission = (Map)this.getSession().get("permission");27 String per = (String) permission.get(Integer.parseInt(menuId));28 //String per = permissionService.getPermission(roleId, menuId);29 this.out(per);30 }31 32 public void initPermission(){33 List
4.
1 package com.hrmsys.service.impl; 2 3 import java.util.ArrayList; 4 import java.util.List; 5 6 import net.sf.json.JSONArray; 7 8 import com.hrmsys.bean.MenuBean; 9 import com.hrmsys.dao.MenuDAO; 10 import com.hrmsys.dao.PermissionDAO; 11 import com.hrmsys.dao.RolePermissionDAO; 12 import com.hrmsys.model.Menu; 13 import com.hrmsys.model.Permission; 14 import com.hrmsys.model.RolePermission; 15 import com.hrmsys.service.PermissionService; 16 import com.hrmsys.util.ConditionValidate; 17 18 public class PermissionServiceImpl implements PermissionService{ 19 private PermissionDAO permissionDAO; 20 private MenuDAO menuDAO; 21 private RolePermissionDAO rolePerDAO; 22 23 @Override 24 public synchronized String list(String id, String roleId) { 25 //取出节点为0的总根节点 26 List