封装数据_方法

var simple_confNetwork={
    init:function(){
        this.loadform.initsel();
        this.loadTemp.initTemp();
        this.bindEvents.initEvent();
        this.initValidate();
    },
    ajaxData:function(datas){
        var url=datas["url"]||"";
        var data=datas["data"]||null;
        var callback=datas["callback"]||function(){};
        $.ajax({
            'url': $.baseUrl+url,
            "type":"post",
            "contentType":typeof (data)=="string"?"application/x-www-form-urlencoded":"application/json",
            "data":typeof (data)=="string"?data:JSON.stringify(data),
            "success":callback
        });
    },
    initValidate:function(){
        $("#srForm").validate({
            rules:{
                srIp:{
                    ip:true
                },
                srMask:{
                    required:true,
                    netMaskBits:true
                },
                optionTemplateId:"required"
            }
        });
    },
    //加载select子项
    loadselect:function(container,datas,cols){
        datas["callback"]=function(data){
            console.log(data);
            if($.isEmptyObject(data)){
                var $option=$('<option value="">暂无更多选项</option>');
                $option.appendTo($("#"+container));
            }else{
                $.each(data,function(i,obj){
                    var $option=$('<option value="'+obj[cols.id]+'"></option>');
                    $option.html(obj[cols.name]);
                    $option.appendTo($("#"+container));
                })
            }
        }
        simple_confNetwork.ajaxData(datas);
    },
    //加载select
    loadform:{
        allSr:{},
        //初始化select
        initsel: function () {
            this.getDhcp();
            this.getBusiness();
            this.getSR();
            this.getTemplate();
        },
        //加载dhcp
        getDhcp:function(){
            simple_confNetwork.loadselect("DHCP",{
                url:"/simpleConf/getServers",
                data:null
            },{
                id:"serverId",
                name:"serverName"
            });
        },
        //加载SR
        getSR:function(){
            var datas = {};
            datas["url"] = "/brasConfManager/findAllbrasConf";
            datas["callback"] = function (data) {
                simple_confNetwork.loadform.allSr=data;
                $("#sr").typeahead({
                    source: data,
                    displayText: function (item) {
                        return typeof item !== 'undefined' && typeof item['srname'] != 'undefined' && item['srname'] || item;
                    },
                    afterSelect: function (item) {
                        $("#sr").val(item.srinterfaceip)
                    }
                });
            }
            simple_confNetwork.ajaxData(datas);
            $.base.myTypeahead2({
                url:"/brasConfManager/findAllbrasConf",
                selector:"#sr",
                showName:"srname",
                resultName:"srinterfaceip"
            });
        },
        //加载业务
        getBusiness:function(){
            simple_confNetwork.loadselect("business",{
                url:"/simpleConf/getServices",
                data:null
            },{
                id:"serviceId",
                name:"serviceName"
            });
        },
        //加载模板名称
        getTemplate:function(){
            simple_confNetwork.loadselect("temp",{
                url:"/option_templateManager/searchTemplateName",
                data:null
            },{
                id:"templateId",
                name:"optionTemplateName"
            });
        },
    },
    //加载模板options
    loadTemp:{
        allOptions:{},
        tempOptions:["optionName","defaultValue"],
        initTemp:function(){
            this.getAllOptions();
            this.getOptionsByTempId();
        },
        getAllOptions:function(){
            var self=this;
            var datas={
                url:"/optionDictionaryManager/searchOptionName",
                data:null,
                callback:function(data){
                    self.allOptions=data;
                }
            }
            simple_confNetwork.ajaxData(datas);
        },
        getOptionsByTempId:function(){
            var datas={
                url:"/simpleConf/getOptions",
                data:"templateId="+$("#temp").val(),
                callback:function(data){
                    if($.isEmptyObject(data)){
                        $("#optionTable").attr("data-isEmpty","false");//模板是否为空
                        var $tr=$("<tr><td class='text-center'>——此模板暂无选项——</td></tr>");
                        $tr.appendTo($("#optionTable"));
                    }else{
                        $("#optionTable").attr("data-isEmpty","true");
                        $("#optionTable").empty();
                        simple_confNetwork.loadTemp.createTr($("#optionTable"),data);
                    }
                }
            }
            simple_confNetwork.ajaxData(datas);
        },
        createTr:function(container,options){
            var self=this;
            $.each(options,function(i,obj){
                var $tr=$("<tr class='info' id='"+obj.optionId+"'></tr>")
                $.each(self.tempOptions,function(k,v){
                    var temp=obj[v]==null?"":obj[v];
                    var $td=$('<td data-col="'+v+'" >'+temp+'</td>');
                    if(!($td.attr("data-col")=="optionName")){
                        $td.empty();
                            if(obj.optionId=="3"){
                            temp=$("#sr").val();
                        }
                        if(obj.optionId=="1"){
                            temp=$("#srMask").val();
                        }
                        var $input=$("<input type='text' class='form-control' value='"+temp+"' netMaskBits />");
                        $input.appendTo($td);
                    }else{
                        $td.empty();
                        var $select=$("<select class='form-control' style='border:none' disabled>" +
                            "<option>"+temp+"</option>" +
                            "</select>");
                        $select.appendTo($td);
                    }
                    $td.appendTo($tr);
                })
                $tr.appendTo(container);
            })
        },
    },
    //绑定事件
    bindEvents:{
        tempOptions:{},
        //加载事件
        initEvent:function(){
            this.temp_change();
            this.temp_addOptions();
            this.sub();
            this.preview();
            this.sr_change();
            this.preview_sub();

        },
        //模板绑定事件
        temp_change:function(){
            $("#temp").change(function(){
                simple_confNetwork.bindEvents.tempOptions={};//清空
                $("#addTempOption").removeAttr("disabled");
                $("#optionTable").empty();
                simple_confNetwork.loadTemp.getOptionsByTempId();
            });
        },
        //sr=>业务
        sr_change:function(){
          $("#sr").change(function(){

              var srs=simple_confNetwork.loadform.allSr;
              var self=this;
              $("#business").removeAttr("disabled");
              $.each(srs,function(i,obj){
                  if(obj.srname==$(self).val()){
                    $("#business").val(obj.serviceid).prop("disabled",true);
                  }
              })
          });
        },
        //模板添加事件
        temp_addOptions:function(){
            $("#addTempOption").click(function(){
                var cols=simple_confNetwork.loadTemp.tempOptions;
                var data=simple_confNetwork.loadTemp.allOptions;
                if($("#optionTable").attr("data-isEmpty")=="false"){
                    $("#optionTable").empty();
                    $("#optionTable").attr("data-isEmpty","true");
                }
                //每次增加select:option不能与之前重复
                //筛选不重复
                var options={};
                $.each(data,function(k,v){
                    var temp=true;
                    $("#optionTable tr").each(function(i,obj){
                        if(k==$(obj).find("select option:selected").text()){
                            temp=false;
                            return false;
                        }
                    })
                    if(temp){
                        options[k]=v;
                    }
                })
                console.log(options);
                if($.isEmptyObject(options)){
                    $("#addTempOption").prop("disabled",true);
                    alert("无更多Option选项,请配置!");
                }else{
                    $tr=$("<tr></tr>");
                    $.each(cols,function(k,v){
                        $td=$('<td data-col="'+v+'"></td>');
                        if(k==0){
                            var $select=$("<select class='form-control'></select>");
                            $.each(options,function(i,obj){
                                var $option=$('<option value="'+obj.optionId+'"></option>');
                                $option.html(obj.optionName);
                                $option.appendTo($select);
                            })
                            $select.change(function(){
                                var $tr=$(this).parent().parent();
                                var index=$("#optionTable tr").index($(this).parent().parent());

                                var optionId=simple_confNetwork.bindEvents.tempOptions[index];
                                var $option=$("<option value='"+optionId+"'>"+$(this).find("option[value='"+optionId+"']").text()+"</option>");
                                $tr.prop("id",$(this).val());
                                $(this).parents("tr").siblings("tr").find("select option").remove("[value='"+$(this).val()+"']");
                                $(this).parents("tr").siblings("tr").find("select").append($option);
                                simple_confNetwork.bindEvents.tempOptions[index]=$(this).val();
                            })
                            $select.appendTo($td);
                        }else{
                            var $input=$("<input type='text' class='form-control' netMaskBits />");
                            $input.appendTo($td);
                        }
                        $td.appendTo($tr);
                    })

                    $tr.appendTo($("#optionTable"));
                    $tr.find("input").focus();
                    $tr.prop("id",$tr.find("select").val());
                    $tr.siblings("tr").find("select option").remove("[value='"+$tr.find("select").val()+"']");
                    simple_confNetwork.bindEvents.tempOptions[$("#optionTable tr").index($tr)]=$tr.prop("id");
                }

            });
        },
        //按钮
        //提交
        sub:function(){
            $("#simple_btnOk").click(function(){
               if($("#srForm").valid()){
                   $("#simple_btnOk").attr("disabled","true");
                   $("#simple_btnOk span[aria-hidden]").removeClass().addClass('icon-spinner icon-spin').attr("disabled","true");
                   var url="/simpleConf/saveSubnet";
                   simple_confNetwork.bindEvents.envelopedData(url,function(data){
                       alert(data);
                       $("#simple_btnOk").removeAttr("disabled");
                       $("#simple_btnOk span[aria-hidden]").removeClass().addClass('fa fa-search');
                   });
               }
            });
        },
        //预览
        preview:function(){
            $("#preview").click(function(){
                var url="/simpleConf/showSubnet";
                simple_confNetwork.bindEvents.envelopedData(url,function(data){
                    $("#previewList").modal("show");
                    $.base.pageConf.modal_size("previewList");
                    $("#previewContent").html(data);
                });
            });
        },
        //预览=》提交
        preview_sub:function(){
            $("#preview_btnOk").click(function(){
                $("#previewList").modal("hide");
                $("#simple_btnOk").trigger('click');
            });
        },
        //封装方法
        envelopedData:function(url,subnet){
            var models=[];
            $("#optionTable").attr("data-isEmpty")=="true"&&$($("#optionTable tr")).each(function(i,obj){
                var row={};
                $($(obj).children()).each(function(k,v){
                    var key=$(v).attr("data-col");
                    key=key=="defaultValue"?"optionValue":key;
                    var content=$(v).html();
                    if($(v).children().size()>0){
                        content=$(v).children().val();
                    }
                    row[key]= content;
                });
                row["optionId"]=$(obj).prop("id");
                models.push(row);
            });
            //封装
            var data={};
            data["serverId"]=$("#DHCP").val();
            data["srIp"]=$("#sr").val();
            data["optionTemplateId"]=$("#temp").val();
            data["srMask"]=$("#srMask").val();
            data["serviceId"]=$("#business").val();
            data["models"]=models;
            var datas={
                url:url,
                data:data,
                callback:subnet
            }
            simple_confNetwork.ajaxData(datas);
        }
    },
};
simple_confNetwork.init();

猜你喜欢

转载自2560240061.iteye.com/blog/2320399