/**
 * ajax请求的代理类 1、系统在一般情况都使用本类进行ajax请求不在使用原生的或者jQuery的ajax 原因:
 * 1、本类对异常信息,错误信息进行了信息提示处理 2、本类与服务器端的AjaxResult.java 对应,接收的数据格式是AjaxResult.java
 * 的json格式数据
 *
 * author :姜友瑶; 2016-06-02
 */
var AjaxProxy = {
    requst: function (option) {
        // 是否开启遮罩
        var params = {
            url: '',
            type: 'post',
            dataType: 'json',
            data: {},
            cache: false,
            async: true,
            callback: null,
            contentType: 'application/json;charset=utf-8',
            processData: true,
            showLoad: true,
            showLoadTip: '提交中',
        };
        params = $.extend(params, option);
        if (params.contentType && params.contentType.indexOf('application/json') > -1 && params.type == 'post') {
            params.data = JSON.stringify(params.data)
        }
        let loading = {};
        if (params.showLoad) {
            layer.open({type: 2});
        }
        return xhr = $.ajax({
            url: params.url,
            type: params.type,
            data: params.data,
            dataType: params.dataType,
            contentType: params.contentType,
            processData: params.processData,
            async: params.async,
            success: function (data) {
                if (params.showLoad) {
                    layer.closeAll();
                }
                if (data.status && data.status != '200') {
                    if (data.info) {
                        layer.open({
                            content: data.info
                            ,skin: 'msg'
                            ,time: 2 //2秒后自动关闭
                        });
                    }
                } else {
                    params.callback && params.callback(data);
                }
            },
            error: function (XMLHttpRequest, textStatus, errorThrown) {
                layer.open({
                    content: '网络连接失败,请稍后重试!'
                    ,skin: 'msg'
                    ,time: 2 //2秒后自动关闭
                });
                if (params.showLoad) {
                    layer.closeAll();
                }
            },
        });
    }
}
var MTools = {
    padLeftZero: function (str) {
        return ('00' + str).substr(str.length)
    },
    formatDate: function (date, fmt) {
        var date = new Date(date);
        if (/(y+)/.test(fmt)) {
            fmt = fmt.replace(RegExp.$1, (date.getFullYear() + '').substr(4 - RegExp.$1.length))
        }
        let o = {
            'M+': date.getMonth() + 1,
            'd+': date.getDate(),
            'h+': date.getHours(),
            'm+': date.getMinutes(),
            's+': date.getSeconds()
        }
        for (let k in o) {
            if (new RegExp(`(${k})`).test(fmt)) {
                let str = o[k] + ''
                fmt = fmt.replace(RegExp.$1, RegExp.$1.length === 1 ? str : this.padLeftZero(str))
            }
        }
        return fmt
    },
    /** 图片在上传的时候,需要在页面嵌套一个jspifram页面 页面处理完图片后服务器返回脚本代码控制父窗口显示图片。 */
    upolad : function(img_id, file_id) {
        if ($("#" + file_id).val() == '') {
            layer.open({
                content: '请先选择要上传的文件!'
                ,skin: 'msg'
                ,time: 2 //2秒后自动关闭
            });
            return;
        }
        $("#" + img_id).attr("src", basePath + "/plat/images/loading.gif");
        $("#" + img_id).show();
    },
    /**
     * 初始化文件上传
     * 需要传一个input框的选择器,支持多个文件同时初始化
     * 编辑时input框value值应该是图片是src路径,这样控件会自动创建图片回显
     * 实现原理:在页面创建一个ifram用于提交文件,每个input框会对应的创建一个隐藏input,把原始
     * input的值复制给隐藏input这个input会用于最后的提交。
     * 还会创建一个form表单,表单中有一个文件选择框。
     * 点击原始input会触发文件选择器的点击事件弹出文件选择框。
     * 文件上传后会改变隐藏input框架的value值。
     * by jyy
     */
    initImgUpload:function(selected){
        //文件类型
        var fileTypes="gif,jpg,jpeg,png,bmp";
        //最大5M
        var maxSize=5*1024*1024;
        //在界面创建一个iframe
        var iframe = $('');
        iframe.css("display", "none");
        $("body").append(iframe);
        $(selected).each(function(i){
            //文件类型
            var fileTypes="gif,jpg,jpeg,png,bmp";
            var $input=$(this);
            var id=$input.attr("id");
            var hideInputId=id+"_hide";
            if($input.data("filetypes")){
                fileTypes=$input.data("filetypes");
            }
            //创建一个隐藏控件,如果input有值创建一个img
            if($input.val()!=null &&$input.val().length>0 ){
                $input.next("a").after("")
                $input.before(" ")
            }else{
                $input.before(" ")
            }
            //删除控件本身的name属性
            $input.removeAttr("name");
            //添加点form表单
            var form = $('
 ")
                }
                //提交表单
                form.submit();
            });
            // 绑定事件
            $input.click(function(){
                file.trigger("click");
            });
            $input.next("a").click(function(){
                file.trigger("click");
            });
            //把组件添加到文档中
            $("body").append(form);
        });
    },
    /**
     * 删除上传图片
     */
    removeUpload:function(node,inputId){
        $(node).remove();
        var textId=inputId.substring(0,inputId.indexOf("_"));
        $("#"+textId).val("");
        $("#"+inputId).val("");
    },
    /**
     * 上传服务器回调函数
     */
    uploadCallBack:function(id,path){
        console.log(path);
        $("#"+id+"_hide").val(path);
        $("#"+id).next().next().attr("src" ,path);
        $("#showImgUrl").hide();
    },
    /** 页面定向 */
    redirect : function(url) {
        window.location.href = url;
    },
}
")
                }
                //提交表单
                form.submit();
            });
            // 绑定事件
            $input.click(function(){
                file.trigger("click");
            });
            $input.next("a").click(function(){
                file.trigger("click");
            });
            //把组件添加到文档中
            $("body").append(form);
        });
    },
    /**
     * 删除上传图片
     */
    removeUpload:function(node,inputId){
        $(node).remove();
        var textId=inputId.substring(0,inputId.indexOf("_"));
        $("#"+textId).val("");
        $("#"+inputId).val("");
    },
    /**
     * 上传服务器回调函数
     */
    uploadCallBack:function(id,path){
        console.log(path);
        $("#"+id+"_hide").val(path);
        $("#"+id).next().next().attr("src" ,path);
        $("#showImgUrl").hide();
    },
    /** 页面定向 */
    redirect : function(url) {
        window.location.href = url;
    },
}
 ")
                }
                //提交表单
                form.submit();
            });
            // 绑定事件
            $input.click(function(){
                file.trigger("click");
            });
            $input.next("a").click(function(){
                file.trigger("click");
            });
            //把组件添加到文档中
            $("body").append(form);
        });
    },
    /**
     * 删除上传图片
     */
    removeUpload:function(node,inputId){
        $(node).remove();
        var textId=inputId.substring(0,inputId.indexOf("_"));
        $("#"+textId).val("");
        $("#"+inputId).val("");
    },
    /**
     * 上传服务器回调函数
     */
    uploadCallBack:function(id,path){
        console.log(path);
        $("#"+id+"_hide").val(path);
        $("#"+id).next().next().attr("src" ,path);
        $("#showImgUrl").hide();
    },
    /** 页面定向 */
    redirect : function(url) {
        window.location.href = url;
    },
}
")
                }
                //提交表单
                form.submit();
            });
            // 绑定事件
            $input.click(function(){
                file.trigger("click");
            });
            $input.next("a").click(function(){
                file.trigger("click");
            });
            //把组件添加到文档中
            $("body").append(form);
        });
    },
    /**
     * 删除上传图片
     */
    removeUpload:function(node,inputId){
        $(node).remove();
        var textId=inputId.substring(0,inputId.indexOf("_"));
        $("#"+textId).val("");
        $("#"+inputId).val("");
    },
    /**
     * 上传服务器回调函数
     */
    uploadCallBack:function(id,path){
        console.log(path);
        $("#"+id+"_hide").val(path);
        $("#"+id).next().next().attr("src" ,path);
        $("#showImgUrl").hide();
    },
    /** 页面定向 */
    redirect : function(url) {
        window.location.href = url;
    },
}