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地址,服务器开启后等待有人去连接它. 一个客户端一打开就 ...
随机推荐
- [Docker]Docker与Linux ip_forward数据包转发
背景 今天在一台新虚拟机上需要临时启动一个consul服务,安装Docker后使用docker启动,但是在执行启动命令后发现docker有一个警告: WARNING: IPv4 forwarding ...
- Spring Cloud 学习 (六) Spring Cloud Config
在实际开发过程中,每个服务都有大量的配置文件,例如数据库的配置.日志输出级别的配置等,而往往这些配置在不同的环境中也是不一样的.随着服务数量的增加,配置文件的管理也是一件非常复杂的事 在微服务架构中, ...
- 不是程序员,代码也不能太丑!python官方书写规范:任何人都该了解的 pep8
不是程序员,代码也不能太丑!python官方书写规范:任何人都该了解的 pep8 简介:为什么要强调 书写规范 ?这其实并不关乎"美丑",而是为了 更高的效率(代码阅读.开发.维护 ...
- 团队作业4-Day1
团队作业4-Day1 1. 各个成员在 Alpha 阶段认领的任务 Alpha任务分配 人员 小程序样式实现 吴安冬+吴梓华 小程序js代码及云数据实现 庾艺锋+白军强 项目测试 王泽鑫+赵玮锋 2. ...
- Raft概述
Raft 1. 概述 Raft是一种一致性(共识)算法,相比Paxos,Raft更容易理解和实现,它将分布式一致性问题分解成多个子问题,Leader选举(Leader election).日志复制(L ...
- 利用神经网络算法的C#手写数字识别(一)
利用神经网络算法的C#手写数字识别 转发来自云加社区,用于学习机器学习与神经网络 欢迎大家前往云+社区,获取更多腾讯海量技术实践干货哦~ 下载Demo - 2.77 MB (原始地址):handwri ...
- 题解-[SDOI2017]数字表格
题解-[SDOI2017]数字表格 前置知识: 莫比乌斯反演</> [SDOI2017]数字表格 \(T\) 组测试数据,\(f_i\) 表示 \(\texttt{Fibonacci}\) ...
- Java并发编程的艺术(三)——synchronized
什么是synchronized synchronized可以保证某个代码块或者方法被一个线程占有,保证了一个线程的可先性.java 1.6之前是重量级锁,在1.6进行了各种优化,就不那么重了,并引入了 ...
- deepstrem编译缺少gst/gst.h解决方案
Deepstream在编译程序的程序的显示缺少gst/gst.h 具体情况是Deepstream运行已编译好的deepstream-app可以正常运行,但对源码编译的时候出现以述情况,初步分析是我们安 ...
- 搞定MySQL安装难安装贵问题
背景 本方案解决了windows下安装MySQL过程繁琐的问题. 是真正的免安装绿色方法,不用配环境变量,不用执行install命令,不用配置my.ini文件. 步骤 下载 下载mysql-8.0.2 ...