| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260 | define(['fast', 'template', 'moment'], function (Fast, Template, Moment) {    var Backend = {        api: {            sidebar: function (params) {                colorArr = ['red', 'green', 'yellow', 'blue', 'teal', 'orange', 'purple'];                $colorNums = colorArr.length;                badgeList = {};                $.each(params, function (k, v) {                    $url = Fast.api.fixurl(k);                    if ($.isArray(v)) {                        $nums = typeof v[0] !== 'undefined' ? v[0] : 0;                        $color = typeof v[1] !== 'undefined' ? v[1] : colorArr[(!isNaN($nums) ? $nums : $nums.length) % $colorNums];                        $class = typeof v[2] !== 'undefined' ? v[2] : 'label';                    } else {                        $nums = v;                        $color = colorArr[(!isNaN($nums) ? $nums : $nums.length) % $colorNums];                        $class = 'label';                    }                    //必须nums大于0才显示                    badgeList[$url] = $nums > 0 ? '<small class="' + $class + ' pull-right bg-' + $color + '">' + $nums + '</small>' : '';                });                $.each(badgeList, function (k, v) {                    var anchor = top.window.$("li a[addtabs][url='" + k + "']");                    if (anchor) {                        top.window.$(".pull-right-container", anchor).html(v);                        top.window.$(".nav-addtabs li a[node-id='" + anchor.attr("addtabs") + "'] .pull-right-container").html(v);                    }                });            },            addtabs: function (url, title, icon) {                var dom = "a[url='{url}']"                var leftlink = top.window.$(dom.replace(/\{url\}/, url));                if (leftlink.length > 0) {                    leftlink.trigger("click");                } else {                    url = Fast.api.fixurl(url);                    leftlink = top.window.$(dom.replace(/\{url\}/, url));                    if (leftlink.length > 0) {                        var event = leftlink.parent().hasClass("active") ? "dblclick" : "click";                        leftlink.trigger(event);                    } else {                        var baseurl = url.substr(0, url.indexOf("?") > -1 ? url.indexOf("?") : url.length);                        leftlink = top.window.$(dom.replace(/\{url\}/, baseurl));                        //能找到相对地址                        if (leftlink.length > 0) {                            icon = typeof icon !== 'undefined' ? icon : leftlink.find("i").attr("class");                            title = typeof title !== 'undefined' ? title : leftlink.find("span:first").text();                            leftlink.trigger("fa.event.toggleitem");                        }                        var navnode = top.window.$(".nav-tabs ul li a[node-url='" + url + "']");                        if (navnode.length > 0) {                            navnode.trigger("click");                        } else {                            //追加新的tab                            var id = Math.floor(new Date().valueOf() * Math.random());                            icon = typeof icon !== 'undefined' ? icon : 'fa fa-circle-o';                            title = typeof title !== 'undefined' ? title : '';                            top.window.$("<a />").append('<i class="' + icon + '"></i> <span>' + title + '</span>').prop("href", url).attr({                                url: url,                                addtabs: id                            }).addClass("hide").appendTo(top.window.document.body).trigger("click");                        }                    }                }            },            closetabs: function (url) {                if (typeof url === 'undefined') {                    top.window.$("ul.nav-addtabs li.active .close-tab").trigger("click");                } else {                    var dom = "a[url='{url}']"                    var navlink = top.window.$(dom.replace(/\{url\}/, url));                    if (navlink.length === 0) {                        url = Fast.api.fixurl(url);                        navlink = top.window.$(dom.replace(/\{url\}/, url));                        if (navlink.length === 0) {                        } else {                            var baseurl = url.substr(0, url.indexOf("?") > -1 ? url.indexOf("?") : url.length);                            navlink = top.window.$(dom.replace(/\{url\}/, baseurl));                            //能找到相对地址                            if (navlink.length === 0) {                                navlink = top.window.$(".nav-tabs ul li a[node-url='" + url + "']");                            }                        }                    }                    if (navlink.length > 0 && navlink.attr('addtabs')) {                        top.window.$("ul.nav-addtabs li#tab_" + navlink.attr('addtabs') + " .close-tab").trigger("click");                    }                }            },            replaceids: function (elem, url) {                //如果有需要替换ids的                if (url.indexOf("{ids}") > -1) {                    var ids = 0;                    var tableId = $(elem).data("table-id");                    if (tableId && $("#" + tableId).length > 0 && $("#" + tableId).data("bootstrap.table")) {                        var Table = require("table");                        ids = Table.api.selectedids($("#" + tableId)).join(",");                    }                    url = url.replace(/\{ids\}/g, ids);                }                return url;            },            refreshmenu: function () {                top.window.$(".sidebar-menu").trigger("refresh");            },            gettablecolumnbutton: function (options) {                if (typeof options.tableId !== 'undefined' && typeof options.fieldIndex !== 'undefined' && typeof options.buttonIndex !== 'undefined') {                    var tableOptions = $("#" + options.tableId).bootstrapTable('getOptions');                    if (tableOptions) {                        var columnObj = null;                        $.each(tableOptions.columns, function (i, columns) {                            $.each(columns, function (j, column) {                                if (typeof column.fieldIndex !== 'undefined' && column.fieldIndex === options.fieldIndex) {                                    columnObj = column;                                    return false;                                }                            });                            if (columnObj) {                                return false;                            }                        });                        if (columnObj) {                            return columnObj['buttons'][options.buttonIndex];                        }                    }                }                return null;            },        },        init: function () {            //公共代码            //添加ios-fix兼容iOS下的iframe            if (/iPad|iPhone|iPod/.test(navigator.userAgent) && !window.MSStream) {                $("html").addClass("ios-fix");            }            //配置Toastr的参数            Toastr.options.positionClass = Config.controllername === 'index' ? "toast-top-right-index" : "toast-top-right";            //点击包含.btn-dialog的元素时弹出dialog            $(document).on('click', '.btn-dialog,.dialogit', function (e) {                var that = this;                var options = $.extend({}, $(that).data() || {});                var url = Backend.api.replaceids(that, $(that).data("url") || $(that).attr('href'));                var title = $(that).attr("title") || $(that).data("title") || $(that).data('original-title');                var button = Backend.api.gettablecolumnbutton(options);                if (button && typeof button.callback === 'function') {                    options.callback = button.callback;                }                if (typeof options.confirm !== 'undefined') {                    Layer.confirm(options.confirm, function (index) {                        Backend.api.open(url, title, options);                        Layer.close(index);                    });                } else {                    window[$(that).data("window") || 'self'].Backend.api.open(url, title, options);                }                return false;            });            //点击包含.btn-addtabs的元素时新增选项卡            $(document).on('click', '.btn-addtabs,.addtabsit', function (e) {                var that = this;                var options = $.extend({}, $(that).data() || {});                var url = Backend.api.replaceids(that, $(that).data("url") || $(that).attr('href'));                var title = $(that).attr("title") || $(that).data("title") || $(that).data('original-title');                var icon = $(that).attr("icon") || $(that).data("icon");                if (typeof options.confirm !== 'undefined') {                    Layer.confirm(options.confirm, function (index) {                        Backend.api.addtabs(url, title, icon);                        Layer.close(index);                    });                } else {                    Backend.api.addtabs(url, title, icon);                }                return false;            });            //点击包含.btn-ajax的元素时发送Ajax请求            $(document).on('click', '.btn-ajax,.ajaxit', function (e) {                var that = this;                var options = $.extend({}, $(that).data() || {});                if (typeof options.url === 'undefined' && $(that).attr("href")) {                    options.url = $(that).attr("href");                }                options.url = Backend.api.replaceids(this, options.url);                var success = typeof options.success === 'function' ? options.success : null;                var error = typeof options.error === 'function' ? options.error : null;                delete options.success;                delete options.error;                var button = Backend.api.gettablecolumnbutton(options);                if (button) {                    if (typeof button.success === 'function') {                        success = button.success;                    }                    if (typeof button.error === 'function') {                        error = button.error;                    }                }                //如果未设备成功的回调,设定了自动刷新的情况下自动进行刷新                if (!success && typeof options.tableId !== 'undefined' && typeof options.refresh !== 'undefined' && options.refresh) {                    success = function () {                        $("#" + options.tableId).bootstrapTable('refresh');                    }                }                if (typeof options.confirm !== 'undefined') {                    Layer.confirm(options.confirm, function (index) {                        Backend.api.ajax(options, success, error);                        Layer.close(index);                    });                } else {                    Backend.api.ajax(options, success, error);                }                return false;            });            $(document).on('click', '.btn-click,.clickit', function (e) {                var that = this;                var options = $.extend({}, $(that).data() || {});                var row = {};                if (typeof options.tableId !== 'undefined') {                    var index = parseInt(options.rowIndex);                    var data = $("#" + options.tableId).bootstrapTable('getData');                    row = typeof data[index] !== 'undefined' ? data[index] : {};                }                var button = Backend.api.gettablecolumnbutton(options);                var click = typeof button.click === 'function' ? button.click : $.noop;                if (typeof options.confirm !== 'undefined') {                    Layer.confirm(options.confirm, function (index) {                        click.apply(that, [options, row, button]);                        Layer.close(index);                    });                } else {                    click.apply(that, [options, row, button]);                }                return false;            });            //修复含有fixed-footer类的body边距            if ($(".fixed-footer").length > 0) {                $(document.body).css("padding-bottom", $(".fixed-footer").outerHeight());            }            //修复不在iframe时layer-footer隐藏的问题            if ($(".layer-footer").length > 0 && self === top) {                $(".layer-footer").show();            }            //tooltip和popover            if (!('ontouchstart' in document.documentElement)) {                $('body').tooltip({selector: '[data-toggle="tooltip"]', trigger: 'hover'});            }            $('body').popover({selector: '[data-toggle="popover"]'});        }    };    Backend.api = $.extend(Fast.api, Backend.api);    //将Template渲染至全局,以便于在子框架中调用    window.Template = Template;    //将Moment渲染至全局,以便于在子框架中调用    window.Moment = Moment;    //将Backend渲染至全局,以便于在子框架中调用    window.Backend = Backend;    Backend.init();    return Backend;});
 |