OA 权限树 核心 Js代码 Ajax Struts Jquery

本文介绍了一个权限管理系统的设计与实现过程,包括用户权限设置、权限树加载及保存等核心功能。文章详细展示了如何使用JavaScript和jQuery进行事件绑定、数据初始化、权限树加载与更新等操作。

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

var privilege = {
    /**
     * 数据的json对象
     */
    data: {
        user: {
            uid: '',
            username: ''
        }
    },
    /**
     * 初始化部分
     *     初始化事件
     *     初始化数据
     */
    init: {
        initEvent: function(){
            /**
             * 给设置权限增加单击事件
             */
            $("a").each(function(){
                if ($(this).text() == "设置权限") {
                    $(this).unbind("click");
                    $(this).bind("click", function(){
                        //显示div
                        privilege.operation.divOption.divShow();
                        //初始化数据
                        //privilege.init.initData(this);
                        //initDat函数的调用者就是this(超级链接)
                        privilege.init.initData.call(this);
                        //动态的显示用户名称
                        privilege.operation.userOption.setUserName();
                        //加载权限树
                        privilege.operation.privilegeTreeOption.loadPrivilegeTree();
                        return false;
                    });
                }
            });
            /**
             * 全选复选框增加change事件
             */
            $("#allchecked").unbind("change");
            $("#allchecked").bind("change", function(){
                privilege.operation.privilegeTreeOption.controlCheckBox.call(this);
            });
            
            /**
             * 保存的单击事件
             */
            $("#InputDetailBar img").unbind("click");
            $("#InputDetailBar img").bind("click", function(){
                privilege.operation.privilegeTreeOption.savePrivilege();
            });
        },
        initData: function(){
            //var aObj = arguments[0];
            //alert($(aObj).parent().siblings("td:first").text());
            privilege.data.user.username = $(this).parent().siblings("td:first").text();
            privilege.data.user.uid = $(this).parent().siblings("input[type='hidden']:first").val();
        }
    },
    /**
     * 业务逻辑部分
     */
    operation: {
        /*
         * div的操作
         */
        divOption: {
            /**
             * 显示div
             */
            divShow: function(){
                //让页面上所有的隐藏的div显示
                $("div").privilegeShow();
            }
        },
        /**
         * 用户的操作
         */
        userOption: {
            //动态的赋值用户名
            setUserName: function(){
                $("#userImage").text(privilege.data.user.username);
            }
        },
        /**
         * 权限树的操作
         */
        privilegeTreeOption: {
            privilegeTreePlugin: '',
            setting: {
                isSimpleData: true,
                treeNodeKey: "mid",
                treeNodeParentKey: "pid",
                showLine: true,
                root: {
                    isRoot: true,
                    nodes: []
                },
                checkable: true,
                checkType: {
                    'Y': 'p',
                    'N': 's'
                },
                callback: {
                    /**
                     * 点击树上的复选框的时候,在复选框的状态没有改变之前,触发该事件
                     */
                    beforeChange: function(){
                        privilege.operation.privilegeTreeOption.changeCheckType({
                            checkType: {
                                'Y': 'p',
                                'N': 's'
                            }
                        });
                    },
                    change: function(){
                        privilege.operation.privilegeTreeOption.changeAllCheckedState();
                    }
                }
            },
            /**
             * 加载权限树
             */
            loadPrivilegeTree: function(){
                $.post("privilegeAction_showPrivilege.action", {
uid:privilege.data.user.uid
}, function(data){
                    privilege.operation.privilegeTreeOption.privilegeTreePlugin =
$("#privilegeTree").zTree(privilege.operation.privilegeTreeOption.setting, data.privilegeList);
                    /**
                     * 当权限树加载完毕以后,使全选复选框生效
                     */
                    $("#allchecked").attr("disabled", "");
                    /**
                     * 根据加载出来的树上的复选框是否被全部选中来决定全选复选框的选中状态
                     *     设置全选复选框初始化的状态
                     */
                    privilege.operation.privilegeTreeOption.changeAllCheckedState();
                });
            },
            /**
             * 全选复选框控制zTree上的复选框是否全部选中
             */
            controlCheckBox: function(){
                /**
                 * 改变setting的checkType规则
                 *   必须是每一次点击全选复选框都要经过该代码
                 */
                privilege.operation.privilegeTreeOption.changeCheckType({
                    checkType: {
                        'Y': 'ps',
                        'N': 'ps'
                    }
                });
                if ($(this).attr("checked")) {//复选框全部选中
                    privilege.operation.privilegeTreeOption.privilegeTreePlugin.checkAllNodes(true);
                    //$("button[id$='check']").attr("class","chk checkbox_true_full");
                }
                else {//不选中
                    privilege.operation.privilegeTreeOption.privilegeTreePlugin.checkAllNodes(false);
                    //$("button[id$='check']").attr("class","chk checkbox_false_full");
                }
                
            },
            /**
             * 改变权限树中setting中checkType的规则
             */
            changeCheckType: function(checkTypeJSON){
                var setting = privilege.operation.privilegeTreeOption.privilegeTreePlugin.getSetting();
                setting.checkType = checkTypeJSON.checkType;
                privilege.operation.privilegeTreeOption.privilegeTreePlugin.updateSetting(setting);
            },
            /**
             * 当点击权限树的某一个节点的复选框的时候,判断当前权限树的复选框是否被全部选中,从而改变全选复选框的状态
             */
            changeAllCheckedState: function(){
                var uncheckedNodes = privilege.operation.privilegeTreeOption.privilegeTreePlugin.getCheckedNodes(false);
                if (uncheckedNodes.length == 0) {//说明全部选中了
                    $("#allchecked").attr("checked", "checked");
                }
                else {//没有全部选中
                    $("#allchecked").attr("checked", "");
                }
            },
            /**
             * 保存
             *    建立用户和权限之间的关系
             */
            savePrivilege: function(){
                /**
                 *获取被选中的checkbox,把id放入到数组中
                 */
                var checkedNodes = privilege.operation.privilegeTreeOption.privilegeTreePlugin.getCheckedNodes(true);
                var checkedIDS = new Array();
                for (var i = 0; i < checkedNodes.length; i++) {
                    checkedIDS.push(checkedNodes[i].mid);
                }
                var parameter = {
                    uid: privilege.data.user.uid,
                    mids: checkedIDS
                };
var para = $.toJSON(parameter);
                $.ajax({
                    type: "POST",
                    data: para,
                    url: "privilegeAction_savePrivilege.action?number=" + Math.random(),
                    contentType: "application/json",
                    success: function(data){
                        alert("aaa");
                    },
                    error: function(){
                    
                    }
                });
            }
        }
    }
};


$().ready(function(){
    privilege.init.initEvent();
});shu
内容概要:本文详细介绍了基于Simulink平台构建的锂电池供电与双向DCDC变换器智能切换工作的仿真模型。该模型能够根据锂离子电池的状态荷电(SOC)自动或手动切换两种工作模式:一是由锂离子电池通过双向DCDC变换器向负载供电;二是由直流可控电压源为负载供电并同时通过双向DCDC变换器为锂离子电池充电。文中不仅提供了模式切换的具体逻辑实现,还深入探讨了变换器内部的电压电流双环控制机制以及电池热管理模型的关键参数设定方法。此外,针对模型使用过程中可能遇到的问题给出了具体的调试建议。 适用人群:从事电力电子、新能源汽车、储能系统等领域研究和技术开发的专业人士,尤其是那些希望深入了解锂电池管理系统及其与电源转换设备交互机制的研究者和工程师。 使用场景及目标:适用于需要评估和优化锂电池供电系统的性能,特别是涉及双向DCDC变换器的应用场合。通过学习本文提供的理论知识和实践经验,可以帮助使用者更好地理解和掌握相关技术细节,从而提高实际项目的设计效率和可靠性。 其他说明:为了确保仿真的准确性,在使用该模型时需要注意一些特定条件,如仿真步长限制、电池初始SOC范围以及变换器电感参数的选择等。同时,对于可能出现的震荡发散现象,文中也提供了一种有效的解决办法。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值