修复ErrorModule中间件中logger因为formatter为空
xxred 编写于 2019-02-13 20:28:36
NewLife.Cube
// 以下时间用于魔方判断是否需要更新脚本
// 2017-12-07 00:00:00

$(function () {

    window.infoDialog = parent['infoDialog'] || function (title, msg) { alert(msg); };
    window.confirmDialog = parent['confirmDialog'] || function (msg, func) { if (confirm(msg)) func(); };
    window.tips = parent['tips'] || function (msg, modal, time, jumpUrl) { alert(msg); location.reload(); };

    //根据data-action的值确定操作类型 action为请求后端执行业务操作,url为直接跳转指定url地址
    //按钮请求action
    $(document).on('click',
        'button[data-action="action"], input[data-action="action"], a[data-action="action"]',
        function (e) {
            $this = $(this);
            //动态设置标签参数
            var url = $this.attr('href');
            if (url && url.length > 0) {
                $this.data('url', url);
                $this.attr('href', 'javascript:void(0);');
            }

            var cf = $this.data('confirm');

            if (cf && cf.length > 0) {
                confirmDialog(cf, () => doClickAction($this));
                return false;
            }

            doClickAction($this);
            //阻止按钮本身的事件冒泡
            return false;
        });
    //直接执行Url地址
    $(document).on('click'
        , 'button[data-action="url"],input[data-action="url"],a[data-action="url"]'
        , function (data) {
            $this = $(this);
            var url = $this.attr('href');
            if (url && url.length > 0) {
                $this.data('url', url);
            }
            location = url;
        });
});

function doClickAction($this) {
    var fields = $this.data('fields');
    //参数
    var parameter = '';
    if (fields && fields.length > 0) {
        var fieldArr = fields.split(',');
        for (var i = 0; i < fieldArr.length; i++) {
            var detailArr = $('[name=' + fieldArr[i] + ']');
            //不对name容器标签进行限制,直接进行序列化
            //如果有特殊需求,可以再指定筛选器进行筛选
            parameter += ((parameter.length > 0 ? '&' : '') + detailArr.serialize());
        }
    }

    //method
    var cmethod = $this.data('method');
    var method = 'GET';
    if (cmethod && cmethod.length > 0) {
        method = cmethod;
    }

    //url
    var curl = $this.data('url');
    if (!curl || curl.length <= 0) {
        if ($this[0].tagName == 'A') {
            curl = $this.attr('href');
        }
    }
    doAction(method, curl, parameter);
}

//ajax请求 methodName 指定GET与POST
function doAction(methodName, actionUrl, actionParamter) {
    if (!methodName || methodName.length <= 0 || !actionUrl || actionUrl.length <= 0) {
        tips('请求参数异常,请保证请求的地址跟参数正确!', 0, 1000);
        return;
    }

    $.ajax({
        url: actionUrl,
        type: methodName,
        async: false,
        dataType: 'json',
        data: actionParamter,
        error: function (ex) {
            tips('请求异常!', 0, 1000);
            //console.log(ex);
        },
        beforeSend: function () {
            tips('正在操作中,请稍候...', 0, 2000);
        },
        success: function (s) {
            //console.log(s);
        },
        complete: function (result) {
            var rs = result.responseJSON;
            if (rs.data && rs.data.length > 0) {
                tips(rs.data, 0, 1000);
            }
            if (rs.url && rs.url.length > 0) {
                if (rs.url == '[refresh]') {
                    //刷新页面但不重新加载页面的所有静态资源
                    location.reload(false);
                } else {
                    window.location.href = rs.url;
                }
            }
        }
    });
}