js对权限的控制

本文由刘维于2013年11月27日撰写,详细探讨了JavaScript在权限控制方面的实现和应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

/****************************************************************刘维   2013/11/27******************************************************************/



var privilege={          //权限变量
/**************************************************************************************************/    
        //数据
        data:{            
            user:{
                username:'',
                userid:''                
            }        
        },        
/**************************************************************************************************/
        //初始化
        init:{
            //初始化数据
            initdata:function(){                
            },
            //给设置权限的标签添加点击事件    
            initevent:function(){
                $("a").each(function(){
                    if($(this).text=="设置权限"){
                        $(this).unbind("click");
                        $(this).bind("click",function(){
                            privilege.privilegeoption.divoption.showdiv();//把隐藏的div显示出来
                            privilege.privilegeoption.useroption.assignUser.apply(this);
                            privilege.privilegeoption.useroption.showuser();//把用户名动态的显示出来    
                            privilege.privilegeoption.ztreeload.loadPrivilegeTree();
                            return false;
                        });
                    }    
                });
                
                $("allchecked").unbind("change");     //为全选框  按钮   绑定  是否选中事件
                $("allchecked").bind("change",function(){
                    privilege.privilegeoption.ztreeload.allCheckFun.apply(this);
                });
                
                $("#savePrivilege").unbind("click");         //加载保存(用户和菜单之间的关系)事件
                $("#savePrivilege").bind("click",function(){
                    privilege.privilegeoption.ztreeload.saveprivilege();
                });
            }
        },
        //业务逻辑的操作
/**************************************************************************************************/        
        privilegeoption:{
            //关于div的操作
            divoption:{
                showdiv:function(){
                    $("div:hidden").show();
                }
            },
            //关于用户的操作
            useroption:{
                assignUser:function(){
                    privilege.data.user.username=$(this).parent().siblings("td:first").text();
                    privilege.data.user.uid = $(this).parent().siblings("input[type=hidden]").val();
                },
                showuser:function(){
                    $("#userImage").text("用户:" + privilege.data.user.username);
                }
            },
            ztreeload:{   //关于权限树的操作
                        zTree:'',//权限树
                        setting: {
                            isSimpleData: true,
                            treeNodeKey: "mid",
                            treeNodeParentKey: "pid",
                            showLine: true,
                            root: {
                                isRoot: true,
                                nodes: []
                            },
                            checkable:true,
                            callback:{
                                beforeChange:function(){
                                    privilege.privilegeoption.ztreeload.changeCheckType({
                                        "Y": "p", "N": "s"
                                    });
                                    
                                },change:function(){
                                    privilege.privilegeoption.ztreeload.initCheckFun();
                                }
                            }
                           },
                        loadPrivilegeTree:function(){   //加载权限树
                               $.post("privilegeAction_showAllPrivileges.action",{uid:privilege.data.user.uid},function(data){    
                                   privilege.privilegeoption.ztreeload.zTree= $("#privilegeTree")
                                                       .zTree(privilege.privilegeOption.privilegeTree.setting,data.privilegeList);
                                });
                               // 把页面上<img id="loading" src="${pageContext.request.contextPath}/css/images/loading.gif">元素隐藏
                               privilege.privilegeoption.ztreeload.controlLoadingAndPrivilegeTree({
                                   img:false,     //让图片隐藏
                                   treeload:true    //让树显示
                                   
                               });
                               $("#allchecked").attr("disabled","");    //显示全选复选框
                               privilege.privilegeoption.ztreeload.initCheckFun();   //给全选复选框设置初始值
                               
                        },
                        saveprivilege:function(){
                            var checkedNodes=privilege.privilegeoption.ztreeload.zTree.getCheckedNodes(true);
                            var mids="";
                            for(var i=0;i<checkedNodes.length;i++){
                                if(i==checkedNodes.length-1){
                                    mids=mids+checkedNodes[i].mid;
                                }else{
                                    mids=mids+checkedNodes[i].mid+",";
                                }
                            };
                            var parameter = {
                                    uid:privilege.data.user.uid,
                                    mids:mids
                                };    
                            $.post("privilegeAction_savePrivilege.action",parameter,function(data){
                                alert(data.message); 
                            });
                        },
                        allCheckFun:function(){     
                            privilege.privilegeoption.ztreeload.changeCheckType({
                                 "Y": "ps", "N": "ps"
                            });
                            if(this.checked){        //判断全选复选框是否被选中   //被选中时  所有的子复选框被选中         
                                privilege.privilegeoption.ztreeload.zTree.checkAllNodes(true);    
                            }else{                     //未被选中时  所有的子复选框未被选中      
                                privilege.privilegeoption.ztreeload.zTree.checkAllNodes(false);
                            };
                        },
                        initCheckFun:function(){       // 判断全选复选框里面的子复选框是否被选中 
                                var array=privilege.privilegeoption.ztreeload.zTree.getCheckedNodes(false);
                                if(array.length==0){   //全选中
                                    $("#allchecked").attr("checked",true);
                                }else{
                                    $("#allchecked").attr("checked",false);
                                }
                                
                         },
                         changeCheckType:function(checkType){              //改变setting中checkType的规则
                             var settings=privilege.privilegeoption.ztreeload.zTree.getSetting();
                             settings.checkType=checkType;
                             privilege.privilegeoption.ztreeload.zTree.updateSetting(settings);
                         },
                        controlLoadingAndPrivilegeTree:function(json){   //等待加载权限树的图片和权限树的隐藏与显示
                                if(json.img){
                                    $("#loading").show();
                                }else{
                                    $("#loading").hide();
                                }
                                if(json.treeload){
                                    $("#privilegeTree").show();
                                }else{
                                    $("#privilegeTree").hide();
                                }
                       }
            }
            
        }
/**************************************************************************************************/        
        
        
};




$().ready(function (){
    
    privilege.init.initevent();
});
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值