82.角色管理Extjs 页面
1.
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<base href="<%=basePath%>"> <title>角色权限分配</title> <meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="This is my page">
<!--
<link rel="stylesheet" type="text/css" href="styles.css">
-->
<script type="text/javascript">
var perAssign = new PerAssign();
var tabId = Ext.getCmp('mainTab').getActiveTab().id.split('_')[1];
juage(tabId,"role",perAssign,"perAssign");
var width = Ext.getCmp('mainTab').getActiveTab().getInnerWidth();
var height = Ext.getCmp('mainTab').getActiveTab().getInnerHeight();
var activeTab = Ext.getCmp('perAssignId');
if(activeTab){
activeTab.setWidth(width);
activeTab.setHeight(height);
}
</script> </head>
<body>
<div id="perAssign" ></div>
</body>
</html>
2.
PerAssign = Ext.extend(Ext.Panel,{
id: 'perAssignId',
constructor: function(){
//创建树形面板
var roleTreePanel = new Ext.tree.TreePanel({
id: 'roleTree',
//支持对树的单选
//只允许选择一个结点
//使用时,只需在声明树时,加上属性 checkModel: "single" 既可
checkModel: 'single',
rootVisible: false,
//这是个重要的参数,用于方便的构建树形菜单,用于远程调用树状数据
loader: new Ext.tree.TreeLoader({
dataUrl: 'role_list.action',
////必须有该项,不然树节点无法出现选择框
baseAttrs: { uiProvider: Ext.ux.TreeCheckNodeUI }//添加TreeCheckNodeUI插件
}),
//根节点
root: new Ext.tree.AsyncTreeNode({
id: null
}),
//单击选中事件
listeners: {'check':{
fn: function(){
Ext.getCmp('treegrid').remove();
setTimeout(this.refreshTree, 1000);
}
}
},
refreshTree: function(){
//获取所有选中的节点代码如下所示
var roleNode = Ext.getCmp('roleTree').getChecked();
if(roleNode == ""){
}
var roleId = roleNode[0].id;
///得到元素的加载对象(Ext.ElementLoader)
// var loader=Ext.get('content-div').getLoader();
Ext.getCmp('treegrid').getLoader().dataUrl='permission_list.action?roleId='+roleId;
//获取根节点;treeGrid.getRootNode()
Ext.getCmp('treegrid').getLoader().load(treeGrid.getRootNode(), function(){});
}
});
PerAssign.superclass.constructor.call(this,{
layout: 'border',
items:[{
region: 'west',
width: 200,
layout: 'fit',//· fit 一个子元素将充满整个容器(如果多个子元素则只有一个元素充满整个容器)
border: true,
frame: true,
title: '角色列表',
collapsible: true,
//左边树形面板
items: [roleTreePanel]
},{
region: 'center',
layout: 'fit',
items: [{
title: '角色权限分配',
//width: 500,
frame: 'true',
id: 'treegridPanel',
autoScroll: false,
xtype: 'panel',
items: [treeGrid],
buttonAlign: 'center',
buttons: [{
text: '保存',
handler: saveRoleFn
},{
text: '取消',
handler: function(){
// var obj = Ext.query('*[name$=_rs]');
// for(var i = 0; i < obj.length; i++){
// var id = obj[i].id;
// Ext.get(obj[i].id).on('click', function(event,obj){
// var flag = false;
// var menu_id = obj.id.split('_')[0];
// var node = Ext.getCmp("perTree").getNodeById(menu_id);
// //alert(node);
// //alert(node.attributes.checked);
// Ext.getCmp("perTree").getNodeById(menu_id).attributes.checked = true;
// })
// }
}
}] }]
}],
tbar: new Ext.Toolbar({
items: [{
text: '新建角色',
iconCls: 'add',
id: 'role_add',
hidden: 'true',
handler: newRoleFn
},{
text: '修改角色',
iconCls: 'update',
id: 'role_update',
hidden: 'true',
handler: updateRoleFn
},{
text: '删除角色',
iconCls: 'delete',
id: 'role_delete',
hidden: 'true',
handler: deleteRoleFn
}]
})
});
}
});
saveRoleFn = function(){
var roleNode = Ext.getCmp('roleTree').getChecked();
if(roleNode == ""){
Ext.Msg.alert('提示','请先选择角色');
return;
}
var checkedNodesIds = roleNode[0].id;
var objs = Ext.query('*[name$=_rs]');
Ext.each(objs, function(obj){
if(obj.checked){
checkedNodesIds +=","+obj.id;
}
});
if(checkedNodesIds == "") {
Ext.Msg.alert('提示','没有为角色分配权限');
return;
}
Ext.Ajax.request({
url: 'rolePer_save.action',
params: {
checkedNodesIds: checkedNodesIds
},
success: saveRoleSuccessFn,
failure: saveRoleFailureFn
});
};
saveRoleSuccessFn = function(response, options){
var datas = Ext.util.JSON.decode(response.responseText);
Ext.Msg.confirm('提示',datas.msg,function(){ })
};
saveRoleFailureFn = function(response, options){
Ext.Msg.alert('提示','连接后台失败');
};
newRoleFn = function(){
var roleAddWin = new RoleAddWin();
roleAddWin.show();
};
updateRoleFn = function(){
var roleNode = Ext.getCmp('roleTree').getChecked();
if(roleNode == ""){
Ext.Msg.alert('提示','请先选择角色!');
return;
}
var roleId = roleNode[0].id;
var roleAddWin = new RoleAddWin();
roleAddWin.text = '修改角色';
roleAddWin.show();
Ext.get('role_roleId').dom.value = roleId;
Ext.get('role_roleName').dom.value = roleNode[0].text;
};
deleteRoleFn = function(){
var roleNode = Ext.getCmp('roleTree').getChecked();
if(roleNode == ""){
Ext.Msg.alert('提示','请先选择角色!');
return;
}
Ext.Msg.confirm('提示','将删除所有具有该角色的用户!',function(button, text){
if(button == 'yes'){
var roleId = roleNode[0].id;
Ext.Ajax.request({
url: 'role_delete.action',
params: {
id : roleId
},
success: function(response, options){
var datas = Ext.util.JSON.decode(response.responseText);
Ext.Msg.alert('提示',datas.msg,function(){
Ext.getCmp('roleTree').getLoader().dataUrl='role_list.action';
Ext.getCmp('roleTree').getLoader().load(Ext.getCmp('roleTree').getRootNode(), function(){});
});
},
failure: saveRoleFailureFn
})
}
});
}
var treeGrid = new Ext.ux.tree.TreeGrid({
width: 900,
height:400,
id: 'treegrid',
autoScroll: false,
enableColumnMove: false,
enableColumnResize: false,
columns: [{
header: '模块',
dataIndex: 'text',
width: 190,
fixed:true,
resizable: false,
align: 'center'
},{
header: '功能',
width: 700,
resizable: false,
fixed:true,
dataIndex: 'functions',
align: 'center'
}],
root: new Ext.tree.AsyncTreeNode({
expanded :true,
id: '0'
}),
//获取子节点的URL地址
dataUrl: 'permission_list.action'
});
/**
* 传入roleId显示出checked出已有权限
*/
3
package com.hrmsys.action; import java.util.HashMap;
import java.util.List;
import java.util.Map; import com.hrmsys.model.Menu;
import com.hrmsys.model.User;
import com.hrmsys.service.MenuService;
import com.hrmsys.service.PermissionService; public class PermissionAction extends BaseAction{
private PermissionService permissionService;
private MenuService menuService;
private String node;//树形传入的id
private String menuId;
private String roleId; public void list(){
String permissionJson = permissionService.list(node, roleId);
this.setRoleId(null);
this.out(permissionJson);
} public void permission(){
Map permission = (Map)this.getSession().get("permission");
String per = (String) permission.get(Integer.parseInt(menuId));
//String per = permissionService.getPermission(roleId, menuId);
this.out(per);
} public void initPermission(){
List<Menu> menus = menuService.getAllLeaf();
User user = (User)this.getSession().get("user");
int roleId = user.getRole().getRoleId();
Map map = new HashMap();
for(Menu menu : menus){
int menuId = menu.getMenuId();
String permission = permissionService.getPermission(roleId, String.valueOf(menuId));
map.put(menuId, permission);
}
this.getSession().put("permission", map);
this.out("{success: true}");
} public PermissionService getPermissionService() {
return permissionService;
} public void setPermissionService(PermissionService permissionService) {
this.permissionService = permissionService;
} public String getNode() {
return node;
} public void setNode(String node) {
this.node = node;
}
public String getMenuId() {
return menuId;
}
public void setMenuId(String menuId) {
this.menuId = menuId;
}
public String getRoleId() {
return roleId;
}
public void setRoleId(String roleId) {
this.roleId = roleId;
} public MenuService getMenuService() {
return menuService;
} public void setMenuService(MenuService menuService) {
this.menuService = menuService;
}
}
4.
package com.hrmsys.service.impl; import java.util.ArrayList;
import java.util.List; import net.sf.json.JSONArray; import com.hrmsys.bean.MenuBean;
import com.hrmsys.dao.MenuDAO;
import com.hrmsys.dao.PermissionDAO;
import com.hrmsys.dao.RolePermissionDAO;
import com.hrmsys.model.Menu;
import com.hrmsys.model.Permission;
import com.hrmsys.model.RolePermission;
import com.hrmsys.service.PermissionService;
import com.hrmsys.util.ConditionValidate; public class PermissionServiceImpl implements PermissionService{
private PermissionDAO permissionDAO;
private MenuDAO menuDAO;
private RolePermissionDAO rolePerDAO; @Override
public synchronized String list(String id, String roleId) {
//取出节点为0的总根节点
List<Menu> menus = menuDAO.findNoeById(Integer.parseInt(id));
List<MenuBean> menuBeans = new ArrayList<MenuBean>();
for(Menu menu: menus){
MenuBean menuBean = new MenuBean();
menuBean.setId(menu.getMenuId());
menuBean.setLeaf(menu.getMenuLeaf());
menuBean.setMenuParentId(menu.getMenuParentId());
menuBean.setMenuUrl(menu.getMenuUrl());
menuBean.setText(menu.getMenuTitle());
menuBean.setMenuIcon(menu.getMenuIcon());
menuBean.setExpanded(true);
//若为叶子结点查找其功能点
//1查询 2添加 3修改 4删除 5详情 6保存或修改
if(menu.getMenuLeaf() == 1){
List<Permission> pers = permissionDAO.findByMnueId(menu.getMenuId());
StringBuffer funcs = new StringBuffer("<table style='margin-left: 100px;'><tr>");
int menuId = menu.getMenuId();
for(Permission per : pers){
int perId = per.getPerId();
RolePermission rolePer = null;
if(ConditionValidate.isEmpty(roleId)){
rolePer = rolePerDAO.findByPerIdAndRoleId(perId, roleId);
}
switch(per.getPerFunction()){
case 1:
funcs.append("<td><input type='checkbox' name='"+menuId+"_rs' id='"+perId+"'");
if(null != rolePer){
funcs.append(" checked ");
}
funcs.append("/>查询 </td>");break;
case 2:
funcs.append("<td><input type='checkbox' name='"+menuId+"_rs' id='"+perId+"'");
if(null != rolePer){
funcs.append(" checked ");
}
funcs.append("/>添加 </td>");break;
case 3:
funcs.append("<td><input type='checkbox' name='"+menuId+"_rs' id='"+perId+"'");
if(null != rolePer){
funcs.append(" checked ");
}
funcs.append("/>修改 </td>");break;
case 4:
funcs.append("<td><input type='checkbox' name='"+menuId+"_rs' id='"+perId+"'");
if(null != rolePer){
funcs.append(" checked ");
}
funcs.append("/>删除 </td>");break;
case 5:
funcs.append("<td><input type='checkbox' name='"+menuId+"_rs' id='"+perId+"'");
if(null != rolePer){
funcs.append(" checked ");
}
funcs.append("/>详情 </td>");break;
case 6:
funcs.append("<td><input type='checkbox' name='"+menuId+"_rs' id='"+perId+"'");
if(null != rolePer){
funcs.append(" checked ");
}
funcs.append("/>保存或修改 </td>");break;
}
}
funcs.append("</tr></table>");
menuBean.setFunctions(funcs.toString());
}
menuBeans.add(menuBean);
}
return JSONArray.fromObject(menuBeans).toString();
} @Override
public String getPermission(int roleId, String menuId) {
List<RolePermission> rolePers = rolePerDAO.findByRoleId(roleId);
StringBuffer sb = new StringBuffer();
for(RolePermission rolePer : rolePers){
int perId = rolePer.getPermission().getPerId();
Permission per = permissionDAO.findByPer(new Integer[]{perId, Integer.parseInt(menuId)});
if(null!= per && per.getPerFunction() > 0){
switch(per.getPerFunction()){
case 1: sb.append(" query"); break;
case 2: sb.append(" add"); break;
case 3: sb.append(" update"); break;
case 4: sb.append(" delete"); break;
case 5: sb.append(" detail"); break;
case 6: sb.append(" saveorupdate"); break;
}
}
}
return sb.toString().trim();
} public PermissionDAO getPermissionDAO() {
return permissionDAO;
} public void setPermissionDAO(PermissionDAO permissionDAO) {
this.permissionDAO = permissionDAO;
} public MenuDAO getMenuDAO() {
return menuDAO;
} public void setMenuDAO(MenuDAO menuDAO) {
this.menuDAO = menuDAO;
} public RolePermissionDAO getRolePerDAO() {
return rolePerDAO;
} public void setRolePerDAO(RolePermissionDAO rolePerDAO) {
this.rolePerDAO = rolePerDAO;
}
}
82.角色管理Extjs 页面的更多相关文章
- 80.用户管理 Extjs 页面
1 <%@ page language="java" import="java.util.*" pageEncoding="UTF-8" ...
- 70.资金管理-福利表管理 Extjs 页面
1. <%@ page language="java" import="java.util.*" pageEncoding="UTF-8&quo ...
- 69.资金管理-税率表管理extjs 页面
1. <%@ page language="java" import="java.util.*" pageEncoding="UTF-8&quo ...
- 七天学会ASP.NET MVC (五)——Layout页面使用和用户角色管理
系列文章 七天学会ASP.NET MVC (一)——深入理解ASP.NET MVC 七天学会ASP.NET MVC (二)——ASP.NET MVC 数据传递 七天学会ASP.NET MVC (三)— ...
- selenium之测试角色管理页面举例
# 测试角色权限管理页面功能 # author:xr # date:2017-07-20 from selenium import webdriver from login_page import L ...
- 七天学会ASP.NET MVC (五)——Layout页面使用和用户角色管理 【转】
http://www.cnblogs.com/powertoolsteam/p/MVC_five.html 系列文章 七天学会ASP.NET MVC (一)——深入理解ASP.NET MVC 七天学会 ...
- roleManager与角色管理授权
总览地址 https://msdn.microsoft.com/zh-cn/library/9ab2fxh0.aspx 其中基本概述是第一篇:了解角色管理 来自 <https://msdn.mi ...
- LigerUI权限系统之角色管理
角色管理比前面几个页面都稍显复杂点.好吧,还是先看图. 左边是角色列表,右边是页面列表,它们也是多对多的关系,即一个角色可以访问多个页面,同时一个页面也可以被多个角色访问. 点击左边的角色,刷新右边页 ...
- SpringSecurity实现权限管理和页面导航栏动态实现
用户模块. 3 1.1 需求:获取用户名. 3 1.1.1 分析. 3 1.1.2 服务端获取用户信息. 4 1.1.3 页面获取用户信息. 5 1.2 给用户分配角色. ...
随机推荐
- JVM 内存设置大小(Xms Xmx PermSize MaxPermSize 区别)
Eclipse崩溃,错误提示:MyEclipse has detected that less than 5% of the 64MB of Perm Gen (Non-heap memory) sp ...
- hint: not have locally. This is usually caused by another repository pushing
git 提交代码前先pull代码,否则会报如下错误 wangju@wangju-HP-348-G4:~/test/reponselogiccheck$ git statusOn branch mast ...
- cocos自动图集
对于图像资源,为什么要用图集,cocos官网的解释: 1.合成图集时会去除每张图片周围的空白区域,加上可以在整体上实施各种优化算法,合成图集后可以大大减少游戏包体和内存占用2.多个 Sprite 如果 ...
- 18清明校内测试T1
消失的数字(number) Time Limit:1000ms Memory Limit:128MB 题目描述 rsy拥有n个数,这n个数分别是a1,a2,…,an. 后来出现了一个熊孩子zhw, ...
- Coefficient Computation (大整数、Java解决)
Coefficient Computation UVALive8265 题意:计算组合数C(n,k)的值并将值按给定的进制输出. 思路:Java大整数类硬上. PS:刚刚学完Java的大整数类,结果却 ...
- 一篇入门Node.js
目录 1.Node.js 简介 2.Node.js NPM 3.Node.js 模块 4.Node.js 事件 5.Node.js Buffer 6.Node.js 文件系统 7.Node.js St ...
- 微信小程序·前端-锦囊
========================== flex[盒子] display: flex; flex-direction: column; [从上到下排列]↓ justify-conte ...
- 01派【北京大学ACM/ICPC竞赛训练暑期课】
01:派 总时间限制: 1000ms 内存限制: 65536kB 描述 我的生日要到了!根据习俗,我需要将一些派分给大家.我有N个不同口味.不同大小的派.有F个朋友会来参加我的派对,每个人会拿到一 ...
- Java基础学习总结(24)——Java单元测试之JUnit4详解
Java单元测试之JUnit4详解 与JUnit3不同,JUnit4通过注解的方式来识别测试方法.目前支持的主要注解有: @BeforeClass 全局只会执行一次,而且是第一个运行 @Before ...
- 创建Spark执行环境SparkEnv
SparkDriver 用于提交用户的应用程序, 一.SparkConf 负责SparkContext的配置参数加载, 主要通过ConcurrentHashMap来维护各种`spark.*`的配置属性 ...