`
kongxiantao
  • 浏览: 108490 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

jQuery 系统授权

阅读更多


前些天做了一个利用Jquery做了一个系统授权的东东,个人感觉不错,主要是感觉代码很精简,留个纪念吧,公司有规定,我只截了一部分吧的图片,看图直观啊


 

上代码:

 

jsp页面代码:

         <div id="listRolePermission">
            <c:forEach var="item" items="${result.map.items}">
            <div class="dialogPermissionContent">
                    <input type="checkbox" class="permission_grandpa" <c:if test="${item['selected'] eq 'selected' }">checked="checked"</c:if> />${item['key']}
                    <c:forEach items="${item['list']}" var="permission">
                    <div class="permissionFather">
                        <input type="checkbox" class="permission_father"<c:if test="${permission.selected eq 'selected' }">checked="checked"</c:if> />${permission.name}
                        <div class="permissionSon">
                        <c:forEach items="${permission['list']}" var="permissionItem">
                            <input type="checkbox" class="permission_son" value="${permissionItem.permissionId}" <c:if test="${permissionItem.selected eq 'selected' }">checked="checked"</c:if> />${permissionItem.label}
                        </c:forEach>
                        </div>
                    </div>
                    </c:forEach>
            </div>
            </c:forEach>
        </div>

js代码://这里不难,在这里真真感觉到了jQuery的强大啊,尤其是那选择器,太NX了

 

$("#listRolePermission").find("input").each(function(){
            if($(this).attr("checked") == true){
                $(this).addClass("select");
                $(this).parentsUntil("#listRolePermission").find(".permission_grandpa").attr("checked",true);
            }
        });
       
        $(".permissionFather").children().find("input").each(function(){
            if($(this).attr("checked") == true){
                $(this).addClass("select");
                $(this).parentsUntil(".permissionFather").parent().children("input").attr("checked",true);
            }
        });
       
       
       
        $(".permission_grandpa").live("click",function() {
            var flag = $(this).attr("checked");
            $(this).parent().children().find("input").each(function() {
              $(this).attr("checked", flag);
              if(flag){$(this).addClass("select");}else{ $(this).removeClass("select");}
            });
        });
       
        $(".permission_father").live("click",function() {
            var flag = $(this).attr("checked");
            var $grandpa = $(this).parent().parent();
            $(this).parent().children().find("input").each(function() {
              $(this).attr("checked", flag);
              if(flag){$(this).addClass("select");}else{ $(this).removeClass("select");}
             });
            $(this).siblings().find("input").attr("checked", flag);
            $grandpa.children("input").attr("checked", flag);
            if(!flag){
                if($grandpa.children("div").find("input").hasClass("select")){
                    $grandpa.children("input").attr("checked", !flag);
                   }else{
                       $grandpa.children("input").attr("checked", flag);
                   }
            }
        });
       
        $(".permission_son").live("click",function() {
            var flag = $(this).attr("checked");
            var $father = $(this).parent().siblings("input");
            $(this).attr("checked", flag);
            $father.attr("checked", flag);
            if(flag){$(this).addClass("select"); }else{ $(this).removeClass("select");}
            if(!flag){
                if(!$(this).siblings().hasClass("select")){
                    $father.attr("checked", flag);
                    $father.removeClass("select");
                    $("#listRolePermission").find("input").each(function(){
                        if($(this).attr("checked") == flag){
                            $(this).removeClass("select");
                            $(this).parentsUntil("#listRolePermission").find(".permission_grandpa").attr("checked",flag);
                        }
                    });
                }else{
                    $father.attr("checked", !flag);
                    $father.addClass("select");
                }
            }else{
                $father.addClass("select");
            }
            $("#listRolePermission").find("input").each(function(){
                if($(this).attr("checked") == true){
                    $(this).addClass("select");
                    $(this).parentsUntil("#listRolePermission").find(".permission_grandpa").attr("checked",true);
                }
            });
        });

 

后台处理代码:

@RequestMapping(params="action=permission") 
    public ModelAndView permission(HttpServletRequest request) throws Exception {
        ModelAndView mav = new ModelAndView(PageView.SYSTEM_ROLE_PERMISSION);
        QueryCondition conds = new QueryCondition(new Pager());
        DataResult dataResult = new DataResult();
        conds.getPager().setPageSize(conds.getPager().getTotalCount());
        QueryCondition configConds =  new QueryCondition();
        DataModelList alllist = roleService.findPermission(configConds);
        List<PermissionVO> allListP = alllist.getList();
        List<PermissionVO> listSelected =null;
        String roleIdString = request.getParameter("roleId");
        if(UtilValidate.isNotEmpty(roleIdString)){
            QueryCondition selectedConds=new QueryCondition();
            selectedConds.put("roleId",roleIdString);
            listSelected = roleService.findRolePermission(selectedConds).getList();
            dataResult.addObject("roleId",roleIdString);
        }
        List list = new ArrayList();

        //这一块处理的好啊,吴大哥就是厉害啊,就应为这个Map使jsp界面很简洁,很优雅。第一回感觉到map的强大啊
        Map<String,String> mapType = new HashMap<String,String>();
        mapType.put("系统", "system_");
        mapType.put( "***","user_");
        mapType.put("---", "club_"); 

        //初始化时,判断是否选中
        for(int k=0;k<listSelected.size();k++){
            for(int i=0;i<allListP.size();i++){
                if(listSelected.get(k).getPermissionId() == allListP.get(i).getPermissionId()){
                    allListP.get(i).setSelected("selected");
                }
            }
        }
       
        for(Map.Entry<String,String> m: mapType.entrySet()){
            Map map = new HashMap();
            List itemList = new ArrayList();
            for(int i=0;i<allListP.size();i++){
                PermissionVO permissionVO=allListP.get(i);
                if(UtilValidate.isNotEmpty(permissionVO.getCode()) && permissionVO.getCode().indexOf(m.getValue().toString())==0){
                    checkPermission(itemList,permissionVO,listSelected);
                }
            }
            map.put("key",m.getKey().toString());
            map.put("list", itemList);
            list.add(map);
        }
        dataResult.addObject("items",list);
        mav.addObject("result", dataResult);
        return mav;   
    }

//因为里面套着2个层,所以还得有两个list

private boolean checkPermission(List itemList,PermissionVO permissionVO,List<PermissionVO> listSelected){
        boolean check = false;
        List<PermissionVO> perList = null;
        for(int i=0;i<itemList.size();i++){
            Map perMap = (Map) itemList.get(i);
            perList =  (List) perMap.get("list");
            if(UtilValidate.isNotEmpty(perList)){
                if(permissionVO.getPermissionUnion().equals(((PermissionVO)perList.get(0)).getPermissionUnion())){
                    check = true;
                    if(!checkPermissionItem(perList,permissionVO)){
                        perList.add(permissionVO);
                    }
                }
            }
        }
        if(!check){
            perList =  new ArrayList();
            perList.add(permissionVO);
            Map perMap = new HashMap();
            perMap.put("list", perList);
            perMap.put("key", permissionVO.getPermissionUnion());
            perMap.put("name", permissionVO.getPermissionUnionName());
            perMap.put("id", permissionVO.getPermissionId());
            itemList.add(perMap);
        }
        return check;
    }
   
    private boolean checkPermissionItem(List<PermissionVO> itemList,PermissionVO permissionVO ){
        for(int i=0;i<itemList.size();i++){
            PermissionVO itemPermissionVO = (PermissionVO)itemList.get(i);
            if(permissionVO.getCode().equals(itemPermissionVO.getCode())){
                return true;
            }
        }
        return false;
    }

 

  • 大小: 5.9 KB
分享到:
评论

相关推荐

    基于asp.net的后台管理系统(Bootstrap)(源码+数据库).zip

    5. 集成系统认证授权模块 6. 提供角色,部门,用户,菜单,前台应用程序授权 角色对用户授权 角色对菜单授权 角色对部门授权 角色对应用程序授权(多个前台应用公用一个后台权限管理系统) 部门对用户授权 7. ...

    j2ee+spring mvc+Mybatis+mysql+easy ui+Jquery主流框架集成后台管理系统

    系统管理:菜单管理,操作员管理,角色管理,操作员授权。 站点管理:站点信息管理,站点类型。 由于密码是涉及加密,请勿在数据库中任意修改密码 简要说明 使用Java平台,采用SpringMVC+Mybatis等主流框架 ...

    SE防伪代理授权查询系统 v1.3

    代理防伪授权查询系统SECMS是以php+MySQL进行开发的防伪码查询系统。系统特点1、系统参数配置2、用户角色管理3、用户管理4、菜单管理5、权限管理登录日志、调试日志、登录日志、蜘蛛访问8、数据库管理精确记录记录...

    使用 NET Core + Bootstrap + PetaPoco + HTML 5 + jQuery 构建的后台管理平台源码

    使用 ...前台系统不用编写登录、授权、认证模块;只负责编写业务模块即可 后台系统无需任何二次开发,直接发布即可使用 前台与后台系统分离,分别为不同的系统(域名可独立) 可扩展为多租户应用

    这是一个SSM(Spring+SpringMVC+Mybatis)+jQuery EasyUI开发的ERP系统。.zip

    安全系统: 旨在保护计算机系统免受恶意攻击、未经授权访问、数据泄露等安全威胁的措施和工具,包括防火墙、入侵检测系统、防病毒软件、身份认证与访问控制机制、数据加密技术等。 综上所述,计算机领域的“系统”...

    springboot2+mybatis+thymeleaf+layui整合开发物流仓库后台管理系统

    不同角色拥有不同的权限,使用shiro完成认证和授权。 该系统主要分为个模块:基础管理模块、进货管理模块、销售管理模块、系统管理模块。基本上除了超级管理员角色外,每一个角色对应管理一个模块。 主要的业务...

    OA办公自动化系统-权限管理系统(JAVA)

    权限管理是基于RBAC设计模式进行设计和改造的,借助DWR、JQuery等框架实现授权和认证功能。 之所以开放源代码,是想跟大家分享经验,系统对有需要的朋友有所帮助。 源码和开发文档都存在与项目中,开发文档都放在...

    代理防伪授权查询系统WODECMS

    代理防伪授权查询系统WODECMS是以php+MySQL进行开发的防伪码查询系统。 系统特点: 软件代码全开源,完美支持二次开发,采用大的系统架构,容易扩展,支持海量数据,UI界面体验好。 软件功能: 1、系统参数配置 2、用户...

    基于C#和JQeury easyui的通用权限管理平台

    基于角色的访问控制(RBAC)技术的特点,在综合运用ASP.NET、jQuery和三层架构开发模式等相关技术的基础上,按照软件工程的设计开发思想从需求分析,系统功能设计与实现,测试三方面对系统进行详细阐述,最终实现了一...

    积分管理系统java源码-ERP-ssm:这是一个SSM(Spring+SpringMVC+Mybatis)+jQueryEasyUI开发的E

    shiro权限控制,结合ajax实现了异步认证与异步授权,同时实现了细粒度的权限动态分配(到按钮级别);添加了shiro session过期的登录跳转 jQuery EasyUI开发前端页面,利用jQuery文件上传插件实现拖拽上传的效果并对...

    YXBOOKCMS院校图书管控系统普及版 v1.0.2.zip

    7、易迅工作室不保证您所下载系统功能的完整性,如需使用完整的功能请您选择授权版 YXBOOKCMS院校图书管控系统登录界面 YXBOOKCMS院校图书管控系统后台管理 后台路径:域名/index.php/index/index 用户名与...

    Java springboot仓库管理系统源码

    项目技术:springboot2+mybatisplus+layui+jquery+shiro 仓库管理系统主要用到的技术有springboot,mybatisplus,shiro。主要角色有超级管理员、基础数据管理员、仓库管理员、销售管理员、系统管理员。不同角色拥有...

    基于spring+java的教务管理系统.7z,SSM框架

    在安全性方面,该教务管理系统采用了 SSL 证书进行加密传输,并实现了用户身份验证和授权等功能,以确保用户数据的安全性。 在该系统中,采用了前后端分离的架构,前端使用了 Bootstrap 和 jQuery 等前端框架,可以...

    基于SSM框架的生产管理ERP系统源码+数据库+项目文档,含计划进度、设备管理、工艺监控、物料监控、人员监控、质量监控、系统管理

    jQuery EasyUI开发前端页面,利用jQuery文件上传插件实现拖拽上传的效果并对文件 类型、大小、数量进行控制;利用search­box实现查找功能 Druid(数据源配置 sql防注入 sql性能监控) 统一的异常处理 JSP JSTL ...

    spring+spring mvc+hibernate开发工程财务管理辅助系统

    如添加湖北分公司,公司编号HB001(会生成分公司系统管理员HB001_admin,密码:admin),再用分公司系统管理员给分公司添加业务人员(初始化密码:000000),系统管理员是没有业务功能菜单的,只能给业务人员授权业务...

    H+后台UI 框架 4.1 已授权版带文档演示无压缩

    也集成了很多功能强大,用途广泛的jQuery插件,她可以用于所有的Web应用程序,如网站管理后台,网站会员中心,CMS,CRM,OA等等,当然,您也可以对她进行深度定制,以做出更强系统。 当前版本:v4.1.0 企业授权版,...

    java ssm开发的生产管理ERP系统

    - jQuery EasyUI开发前端页面,利用jQuery文件上传插件实现拖拽上传的效果并对文件类型、大小、数量进行控制;利用search-box实现查找功能 - [Druid(数据源配置 sql防注入 sql性能监控)] - 统一的异常处理 - JSP ...

    后台权限管理系统

    这个权限系统demo没有MVC、没有ORM、数据库表都没设外键关系、级联删除等,所有需要级联操作的地方都是事务提交。界面上的所有操作基本都是jquery发ajax请求ashx处理,ashx处理后输出json前台接收处理并配合easyui的...

Global site tag (gtag.js) - Google Analytics