easyui中权限分配和添加 前后端代码
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" %>
<!DOCTYPE html>
<html>
<head>
<%
    String path = request.getContextPath();
    String basePath = request.getScheme() + "://" + request.getServerName() + ":" + request.getServerPort()
            + path + "/";
%>
<meta charset="utf-8">
 <link href="<%=basePath%>css/themes/default/easyui.css" rel="stylesheet" type="text/css"/>
<%--  <link href="<%=basePath%>css/themes/icon.css" rel="stylesheet" type="text/css"/> --%>
 <link href="<%=basePath%>css/themes/color.css" rel="stylesheet" type="text/css"/>
<%--  <link href="<%=basePath%>css/themes/mobile.css" rel="stylesheet" type="text/css"/> --%>
 
 
<script type="text/javascript" src="<%=basePath%>js/jquery.min.js"></script>
<script type="text/javascript" src="<%=basePath%>js/easyloader.js"></script>
<script type="text/javascript" src="<%=basePath%>js/jquery.easyui.min.js"></script>
<script type="text/javascript" src="<%=basePath%>js/jquery.easyui.mobile.js"></script>
<script type="text/javascript" src="<%=basePath%>js/plugins/jquery.parser.js"></script>
<script type="text/javascript" src="<%=basePath%>js/plugins/jquery.pagination.js"></script>
<script type="text/javascript" src="<%=basePath%>js/plugins/jquery.form.js"></script>
<style type="text/css">
 #producttable{
    width: 90%;
    border-collapse:separate; border-spacing:0px 20px;
 }
  #producttable input{
    height:32px;
 }
</style>
</head>
<body>
	<div style="height: 50%;width:70%;float: left;display:inline-block;margin-top: 35px;">
		<table id="allotControltable">
		
		</table>
	</div>
	<!-- 添加角色 -->
	<div id="allotControlAdd">
	   <form id="allotControlAddform">
		       <table id="producttable">
			   		<tr>
						<td align="right">角色名称: </td>
						<td>
						   <input id="REMARK" name="REMARK"></input>
						</td>
						<td align="right">类型生效标志:</td>
						<td> 
						   <select id="EFFECT_STS" name="EFFECT_STS" >
						         <option value="1" selected="selected">生效</option>
						         <option value="2">无效</option>
						   </select> 
						</td>
				    </tr>
			    </table>
	   </form>
	</div>
	<!-- 修改角色 -->
	<div id="allotControlUpdate">
	   <form id="allotControlUpdateform">
		      <table id="producttable">
			   		<tr>
						<td align="right">角色名称: </td>
						<td>
						   <input id="remark1" name="REMARK"></input>
						</td>
						<td align="right">类型生效标志:</td>
						<td> 
						   <select id="effect_STS1" name="EFFECT_STS" >
						         <option value="1" selected="selected">生效</option>
						         <option value="2">无效</option>
						   </select> 
						</td>
				    </tr>
				    <tr>
						<td align="right">时间戳: </td>
						<td>
						   <input id="tm_SMP1" name="TM_SMP" readonly="readonly"></input>
						</td>
						
				    </tr>
			    </table>
	   </form>
	</div>
	
	<div id="container"
		style="width: 12%; height: 800px;display:inline-block; float: left !important;">
		<div class="easyui-panel" title="权限列表"
			style="width: 100%; height: 99%; float: right !important; overflow-y: scroll; background-color: #fff">
			<ul>
				<input type="checkbox" id="tree_select" name="tree_select"
					onclick="allselect()" />
				<a>全选或者取消全选</a>
			</ul>
			<ul id="dgMenu" class="easyui-tree" style="width: 200px"></ul>
		</div>
	</div>
	<script type="text/javascript">
	//全选或者取消全选
	function allselect(){
		var tree_select = $('#tree_select').is(':checked');
		 var roots = $('#dgMenu').tree('getRoots');//返回tree的所有根节点数组  
		 console.log(tree_select);
		    if (tree_select==true) {  
		        for ( var i = 0; i < roots.length; i++) {  
		            var node = $('#dgMenu').tree('find', roots[i].id);//查找节点  
		            $('#dgMenu').tree('check', node.target);//将得到的节点选中  
		        }  
		    } else {  
		        for ( var i = 0; i < roots.length; i++) {  
		            var node = $('#dgMenu').tree('find', roots[i].id);  
		            $('#dgMenu').tree('uncheck', node.target);  
		        }  
		    }  
	}
	
	$('#dgMenu').tree({
	    checkbox: 'checked',
        cascadeCheck: true,
	    url: '<%=basePath%>user/getMenu.do',
	    loadFilter: function(data){
	    	console.log(data);
	    	return data;
	    },
		/* onBeforeLoad:function(node,param){
            param.categoryId = "13";
        } */
	});
	
	$("#allotControltable").datagrid({  
		//var row = $('#xyData_userListlk').datagrid('getSelected');
	       onClickRow: function (index, row) {
	    	   var categoryId=row.tm_SMP;//用户类别ID
	    	   //alert("查询已经有的权限======"+categoryId);
	   	     $('#dgMenu').tree({
	     	    checkbox: true,
	            cascadeCheck: true,
	     	    url: '<%=basePath%>user/getMenu.do?categoryId='+categoryId,
	     	    loadFilter: function(data){
	     	    	return data;
	     	    }
	     	});
	       }
	    
	    });
	
	
	//添加用户
	$('#allotControlAdd').dialog({
		title:'添加用户',
		width:'50%',
		height:'300px',
		iconCls:'icon-add',
		closed:true,
		closable: true,
		draggable: false,
		modal: true,
		buttons:[ {
			text : '保存',
			iconCls : 'icon-ok',
			handler : function() {
				$('#allotControlAddform').form('submit',{
					onSubmit:function(){
						return $(this).form('enableValidation').form('validate');
					},
					url:'<%=basePath%>user/allotControlAdd.do',
					success : function(data) {
						data = eval("(" + data + ")");//JSON字符串转对象
						$.messager.show({
							title:'提示',
							msg: data.msg,
							showType:'show'
						});
						$('#allotControlAdd').dialog('close');
						$('#allotControltable').datagrid('reload');
					},
		    		error: function(){
		    			$.messager.show({
							title:'提示',
							msg: '添加失败',
							showType:'show'
						});
		    		}
				});
			}
		}, {
			text : '取消',
			iconCls : 'icon-cancel',
			handler : function() {
				$('#allotControlAdd').dialog('close');
			}
		} ]
	});
	//修改产品
	
	$('#allotControlUpdate').dialog({
		title:'添加用户',
		width:'50%',
		height:'300px',
		iconCls:'icon-add',
		closed:true,
		closable: true,
		draggable: false,
		modal: true,
		buttons:[ {
			text : '保存',
			iconCls : 'icon-ok',
			handler : function() {
				$('#allotControlUpdateform').form('submit',{
					onSubmit:function(){
						return $(this).form('enableValidation').form('validate');
					},
					url:'<%=basePath%>user/allotControlUpdate.do',
					success : function(data) {
						data = eval("(" + data + ")");//JSON字符串转对象
						$.messager.show({
							title:'提示',
							msg: data.msg,
							showType:'show'
						});
						$('#allotControlUpdate').dialog('close');
						$('#allotControltable').datagrid('reload');
					},
		    		error: function(){
		    			$.messager.show({
							title:'提示',
							msg: data.msg,
							showType:'show'
						});
		    		}
				});
			}
		}, {
			text : '取消',
			iconCls : 'icon-cancel',
			handler : function() {
				$('#allotControlUpdate').dialog('close');
			}
		} ]
	});
	$('#').dialog('close');
	$('#allotControlUpdate').dialog('close');
	 $('#allotControltable').datagrid({
	        width: 'auto',
	        height:'auto',
	        striped: true,
	        fit: true,
	        pagination: true,
	        scrollbarSize: 0,
	        singleSelect: true,
	        url: '<%=basePath%>user/findAllotControl.do',
	        loadMsg: '数据加载中请稍后……',
	        columns: [[{
	            field: 'category_ID',
	            title: '产品编号',
	            align: 'center',
	            resizable: false,
	            width: '10%'
	        },{
	                field: 'remark',
	                title: '角色名称',
	                align: 'center',
	                resizable: false,
	                width: '15%'
	            }, {
	                field: 'effect_STS',
	                title: '类型生效标志',
	                align: 'center',
	                resizable: false,
	                width: '15%'
	            }, {
	                field: 'tm_SMP',
	                title: '时间戳',
	                align: 'center',
	                resizable: false,
	                width: '15%'
	            }, {
	                field: 'upd_OPER',
	                title: '维护操作员',
	                align: 'center',
	                resizable: false,
	                width: '15%'
	            }, {
	                field: 'org_NO',
	                title: '机构编号',
	                align: 'center',
	                resizable: false,
	                width: '15%'
	            }, {
	                field: 'del_STATUS',
	                title: '删除状态',
	                align: 'center',
	                resizable: false,
	                width: '15%'
	            }
	        ]],
	        method: 'post',
	        toolbar: [{
	        	text:'添加',
	    		iconCls: 'icon-edit',
	    		handler: function(){
	    			$('#allotControlAddform').form('clear');
	    			$('#allotControlAdd').dialog('open').dialog('setTitle', '添加产品');
	    			$("#EFFECT_STS").val(Array('1'))
	    		}
	    	},'-',{
	    		text:'修改',
	    		iconCls: 'icon-help',
	    		handler: function(){
	    			var row=$('#allotControltable').datagrid('getSelected');
	    			if(row){
	    				
	    				$('#allotControlUpdateform').form('load',row);
	    				$('#remark1').val(row.remark);
	    				$('#tm_SMP1').val(row.tm_SMP);
	    				$('#effect_STS1').val(row.effect_STS);
	    				//alert(row.remark+"--"+row.tm_SMP+"--"+row.effect_STS)
	    				
	    				$('#allotControlUpdate').dialog('open').dialog('setTitle', '添加产品');
	    				
	    			}else{
	    				$.messager.show({
							title:'提示',
							msg: '至少选择一条',
							showType:'show'
						});
	    			}
	    			
	    		}
	    	},'-',{
	    		text:'删除',
	    		iconCls: 'icon-help',
	    		handler: function(){
	    			var row=$('#allotControltable').datagrid('getSelected');
	    			if(row){
	    				$.messager.confirm('删除数据', '您确定删除此用户吗?', function(r){
        					if (r){
        						$.post('<%=basePath%>user/deleteAllotControltable.do?TM_SMP=' + row.tm_SMP+"&CATEGORY_ID="+ row.tm_SMP, 
   								function (result) {
        							$.messager.show({
        								title:'提示',
        								msg: result.msg,
        								showType:'show'
        							});
                                   		$('#allotControltable').datagrid('reload'); 
                                    
                           		},'json');
        					}
        				});
}else{
	    				$.messager.show({
							title:'提示',
							msg: '至少选择一条',
							showType:'show'
						});
	    			}
	    			
	    		}
	    	},'-',{
	    		text:'保存权限',
	    		iconCls: 'icon-help',
	    		handler: function(){
	    			var row=$('#allotControltable').datagrid('getSelected');
	    			
	    			if(row){
	    				//获取选中的树状结构项
	    				var nodes = $('#dgMenu').tree('getChecked', ['checked','indeterminate']);
	    				
	    				console.log('nodes=='+nodes);
	    				var checkNod='';
	    				for(var i=0;i<nodes.length;i++){
	    					if(i==nodes.length-1){
	    						checkNod+=nodes[i].id;
	    					}else{
	    						checkNod+=nodes[i].id+',';
	    					}
	    				}
	    				console.log('checkNod=='+checkNod);
	    				$.messager.confirm('保存权限', '确认保存此权限吗?', function(r){
	    					$.post('<%=basePath%>user/saveMenus.do?checkNod=' + checkNod+"&CATEGORY_ID="+ row.tm_SMP+'&UPD_OPER='+row.upd_OPER,
	    							function(result){
			    						$.messager.show({
			    							title:'提示',
			    							msg: result.msg,
			    							showType:'show'
			    						});
	    					        },'json')
	    				})
	    			}else{
	    				$.messager.show({
							title:'提示',
							msg: '至少选择一条',
							showType:'show'
						});
	    			}
	    			
	    		}
	    	}
	    	
	      ]
	    });
	  
	 var p = $('#allotControltable').datagrid('getPager');
	    $(p).pagination({
	        pageSize : 10,//每页显示的记录条数,默认为10
	        pageList : [10, 20, 30],//可以设置每页记录条数的列表
	        beforePageText : '第',//页数文本框前显示的汉字
	        afterPageText : '页    共 {pages} 页',
	        displayMsg : '当前显示 {from} - {to} 条记录   共 {total} 条记录',
	    });
	</script>
</body>
</html>
java代码==============
/**
	 * 查询权限列表
	 * @param categoryId
	 * @return
	 */
	@Override
	public List<Map<String, Object>> getMenus(String categoryId) {
		List<Map<String, Object>>menuallist= userDao.selectMenuAllList();
		List<String> meunSelectedList = null;
		if (StringUtils.isNotBlank(categoryId)) {
			//查询已有权限
			meunSelectedList = userDao.selectMenuSelectedList(categoryId);
		}
		//获取树状结构
		List<Map<String, Object>>listTree=getTreeList(menuallist,meunSelectedList,"id","pre_id","children");
		return listTree;
	}
	public List<Map<String,Object>> getTreeList(List<Map<String, Object>>menuaList,List<String> idlist,String id,String pre_id,String children) {
		System.out.println("获取树状结构开始》》》》》》》》》》》》》》》》》》》");
		/**
		 * 给获取数组的每一项添加一个子项
		 */
		for(int i=0;i<menuaList.size();i++) {//checked
			menuaList.get(i).put("checked","");
			menuaList.get(i).put(children, new ArrayList<Map<String, Object>>());
		}
		System.out.println("menuaList=="+menuaList);
		List<Map<String,Object>>treeList=new ArrayList<Map<String,Object>>();
		for(Map<String,Object>outMap:menuaList) {
			for(Map<String,Object>inMap:menuaList) {
				String outid=outMap.get(id).toString();
				String inPre_id=inMap.get(pre_id).toString();
				if(outid.equals(inPre_id)) {
					List<Map<String,Object>> listMap=(ArrayList<Map<String,Object>>)outMap.get(children);
					listMap.add(inMap);
					String inId=inMap.get("id").toString();
					//判断查询获取的id和内循环id是否相同 如果相同给checked赋值为true
					if(null!=idlist) {
						if(isFaseOrTrue(inId,idlist)) {
							inMap.put("checked", "true");
						}
					}
				}
			}
			String outPid=outMap.get(pre_id).toString();
			if(StringUtils.isAllBlank(outPid)) {
				treeList.add(outMap);
				String outId=outMap.get(id).toString();
				if(null!=idlist) {
					if(isFaseOrTrue(outId,idlist)) {
						outMap.put("checked", "true");
					}
				}
			}
		}
		return treeList;
		
	}
	//判断表达式
	private Boolean isFaseOrTrue(String id,List<String>list) {
		Boolean flag=false;
		for(String str:list) {
			if(id.equals(str)) {
				flag=true;
				break;
			}
		}
		return flag;
	}
easyui中权限分配和添加 前后端代码的更多相关文章
- 基于数据库的代码自动生成工具,生成JavaBean、生成数据库文档、生成前后端代码等(v6.0.0版)
		TableGo v6.0.0 版震撼发布,此次版本更新如下: 1.UI界面大改版,组件大调整,提升界面功能的可扩展性. 2.新增BeautyEye主题,界面更加清新美观,也可以通过配置切换到原生Jav ... 
- [Java 开源项目]一款无需写任何代码,即可一键生成前后端代码的工具
		作者:HelloGitHub-小鱼干 JeecgBoot 是一款基于代码生成器的低代码开发平台,零代码开发.JeecgBoot 采用开发模式:Online Coding 模式-> 代码生成器模式 ... 
- 记node前后端代码共用的一次坑
		项目背景 nodejs项目,webpack打包,用axios请求,Promise封装,nunjucks模板引擎: 之前已将nunjucks模板通过webpack打包策略,做成前后端共用: 目前需要将网 ... 
- 实战:一键生成前后端代码,Mybatis-Plus代码生成器让我舒服了
		实战:一键生成前后端代码,Mybatis-Plus代码生成器让我舒服了 前言 在日常的软件开发中,程序员往往需要花费大量的时间写CRUD,不仅枯燥效率低,而且每个人的代码风格不统一.MyBatis-P ... 
- asp.net中生成缩略图并添加版权实例代码
		这篇文章介绍了asp.net中生成缩略图并添加版权实例代码,有需要的朋友可以参考一下 复制代码代码如下: //定义image类的对象 Drawing.Image image,newimage; //图 ... 
- MVC中权限的知识点及具体实现代码
		一:知识点部分 权限是做网页经常要涉及到的一个知识点,在使用MVC做权限设计时需要先了解以下知识: MVC中Url的执行是按照Controller->Action->View页面,但是我们 ... 
- SpringCloud微服务实战——搭建企业级开发框架(三十一):自定义MybatisPlus代码生成器实现前后端代码自动生成
		理想的情况下,代码生成可以节省很多重复且没有技术含量的工作量,并且代码生成可以按照统一的代码规范和格式来生成代码,给日常的代码开发提供很大的帮助.但是,代码生成也有其局限性,当牵涉到复杂的业务逻辑 ... 
- EasyUI中combobox的使用方法和一个代码实例
		一.easyUI中select下拉框动态添加option选项 问题:想在combobox的下拉项里动态添加一些内容,但是添加不成功.因为jquery easyui的下拉列表combobox是用DIV模 ... 
- 微信小程序使用websocket通讯的demo,含前后端代码,亲测可用
		目录 0.概述websocket 1.app.js写法 2.后台写法 0.概述websocket (1) 个人总结:后台设置了websocket地址,服务器开启后等待有人去连接它. 一个客户端一打开就 ... 
随机推荐
- python大数问题
			python不需要特殊的声明,可以直接进行大数运算 验证: 
- String、StringBUffer和StringBuilder的区别与使用
			一.区别 String是一个不可变的类,即创建String对象后,该对象中的字符串是不可变的,平时我们改变String对象中的字符串实际上是通过StringBuffer实现的,所以StringBuff ... 
- Splay树求第k大模板
			今天上午借着休息日得机会手撸了一下模板,终于对着模板调出来了.prev和next占用了std namespace里面的东西,然后报警我上次给关了所以.....就花了3个小时吧. inline加不加无所 ... 
- EF优缺点解析
			原先用的是三层架构中ADO.NET做底层开发,纯手工sql语句拼装.后来遇到一个MVC+EF项目,体会到了EF的强大性. 它是微软封装好一种ADO.NET数据实体模型,将数据库结构以ORM模式映射到应 ... 
- 团队作业4-Day6
			团队作业4-Day6 项目git地址 1. 站立式会议 2. 项目燃尽图 3. 适当的项目截图 4. 代码/文档签入记录(部分) 5. 每人每日总结 吴梓华:今日修复了图片显示BUG,补充了排位模式出 ... 
- java视频流的断点续传功能
			项目中需要实现浏览器中视频的拖动问题解决 /** * 视频文件的断点续传功能 * @param path 文件路径 * @param request request * @param response ... 
- CSS基础-背景
			CSS背景 background 纯色背景 {background-colcor:gray; padding:20px} 为元素设置背景色,并设置了内边距,使得元素中的文本向外少有延伸. 用rgba设 ... 
- chrome打开Axure Rp导出的html文件提示需要安装Axure Rp插件解决办法
			1.确保chrome安装了Axure Rp扩展插件,如果按照页面的提示去下载,但是打不开的话就是被墙了,贴上科学的上网梯子https://www.lanzous.com/i7i0wuh,直接下载打开就 ... 
- NOI 2020 D1T3 本人题解
			我看了出题人本题的做法,感觉很难写,就自己胡了一个\(O((n + m) \sqrt n)\)的做法. 第一步我的想法与出题人一样,都是考虑容斥降维.对第\(i\)组询问,我们枚举两个事件中较大的一个 ... 
- mysql 迁移数据库到 oracle  (sql注意问题)
			http://ykdn2010.iteye.com/blog/1511349 一. 项目已用到 oracle 函数的转换 1. Oracle 中的 TO_DATE (),TO_CHAR () 示例: ... 
