<%@ 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中权限分配和添加 前后端代码的更多相关文章

  1. 基于数据库的代码自动生成工具,生成JavaBean、生成数据库文档、生成前后端代码等(v6.0.0版)

    TableGo v6.0.0 版震撼发布,此次版本更新如下: 1.UI界面大改版,组件大调整,提升界面功能的可扩展性. 2.新增BeautyEye主题,界面更加清新美观,也可以通过配置切换到原生Jav ...

  2. [Java 开源项目]一款无需写任何代码,即可一键生成前后端代码的工具

    作者:HelloGitHub-小鱼干 JeecgBoot 是一款基于代码生成器的低代码开发平台,零代码开发.JeecgBoot 采用开发模式:Online Coding 模式-> 代码生成器模式 ...

  3. 记node前后端代码共用的一次坑

    项目背景 nodejs项目,webpack打包,用axios请求,Promise封装,nunjucks模板引擎: 之前已将nunjucks模板通过webpack打包策略,做成前后端共用: 目前需要将网 ...

  4. 实战:一键生成前后端代码,Mybatis-Plus代码生成器让我舒服了

    实战:一键生成前后端代码,Mybatis-Plus代码生成器让我舒服了 前言 在日常的软件开发中,程序员往往需要花费大量的时间写CRUD,不仅枯燥效率低,而且每个人的代码风格不统一.MyBatis-P ...

  5. asp.net中生成缩略图并添加版权实例代码

    这篇文章介绍了asp.net中生成缩略图并添加版权实例代码,有需要的朋友可以参考一下 复制代码代码如下: //定义image类的对象 Drawing.Image image,newimage; //图 ...

  6. MVC中权限的知识点及具体实现代码

    一:知识点部分 权限是做网页经常要涉及到的一个知识点,在使用MVC做权限设计时需要先了解以下知识: MVC中Url的执行是按照Controller->Action->View页面,但是我们 ...

  7. SpringCloud微服务实战——搭建企业级开发框架(三十一):自定义MybatisPlus代码生成器实现前后端代码自动生成

      理想的情况下,代码生成可以节省很多重复且没有技术含量的工作量,并且代码生成可以按照统一的代码规范和格式来生成代码,给日常的代码开发提供很大的帮助.但是,代码生成也有其局限性,当牵涉到复杂的业务逻辑 ...

  8. EasyUI中combobox的使用方法和一个代码实例

    一.easyUI中select下拉框动态添加option选项 问题:想在combobox的下拉项里动态添加一些内容,但是添加不成功.因为jquery easyui的下拉列表combobox是用DIV模 ...

  9. 微信小程序使用websocket通讯的demo,含前后端代码,亲测可用

    目录 0.概述websocket 1.app.js写法 2.后台写法 0.概述websocket (1) 个人总结:后台设置了websocket地址,服务器开启后等待有人去连接它. 一个客户端一打开就 ...

随机推荐

  1. 【鸿蒙应用开发】第三章 “颜控”时代下如何构建UI界面

    为什么是第三章,前面两章呢? 原本是以碎片化的方式将HarmonyOS应用开发快速掌握,但是在准备六大布局组合复杂UI界面Demo时,很多组件之前都没有应用.因此准备将知识体系进行细化,以章节的形式希 ...

  2. 下载centos镜像的地址

  3. go语言数据类型值--整型和浮点型

    一.整型 1.整型的分类: 有符号整型: int8.int16.int32.int64 对应的无符号整型: uint8.uint16.uint32.uint64 uint就是我们熟知的byte类型,i ...

  4. 译文:二进制序列类型 --- bytes, bytearray

    在进行一些内置函数调用时,会发现bytes类型的参数或返回值,这个类型老猿前面没有介绍过,在此就不单独介绍了,直接从Python官网的内容用翻译软件翻译过来稍微修改. 操作二进制数据的核心内置类型是 ...

  5. PyQt(Python+Qt)学习随笔:QAbstractItemView的autoScroll和autoScrollMargin属性

    老猿Python博文目录 老猿Python博客地址 QAbstractItemView的autoScroll属性用于确认鼠标在视口边缘时是否自动滚动内容,默认值为True,autoScrollMarg ...

  6. 小齐读者拿到快手、百度、网易等 offer 的独门秘籍!

    小齐说: 这篇文章来自读者冰红茶,他刚结束了秋招,拿了很多家 offer. 和他聊完之后,我觉得他的备考思路也完全适用于美国的面试,只是分值要调整一下,但是具体每一块的内容,地球村通用.所以分享给大家 ...

  7. Codeforces Edu Round 49 A-E

    A. Palindromic Twist 由于必须改变.所以要使\(a[i] = a[n - i + 1]\). 要么同向走,但必须满足之前的\(a[i] = a[n - i + 1]\). 要么相遇 ...

  8. MySQL技术内幕InnoDB存储引擎(四)——表相关

    表是什么? 就是关于特定实体地数据集合,是关系型数据库模型地核心. 索引组织表 什么是索引组织表? 表中数据都是根据主键的顺序组织存放的,这种存储方式就是索引组织表.就是存储在一个索引结构中的表. 也 ...

  9. Vue开发中的移动端适配(px转换成vw)

    1.项目根目录下,创建 .postcssrc.js 文件. 2.安装插件. -D (开发依赖) postcss-import postcss-url cssnano-preset-advanced - ...

  10. 协程gevent学习

    import gevent def f1(): print(11) gevent.sleep(2) print(33) def f2(): print(22) gevent.sleep(1) prin ...