Browse Source

!300 common.js 251行标点符号的小问题
Merge pull request !300 from lyqwer/N/A

若依 3 years ago
parent
commit
8abcd5dda1
1 changed files with 493 additions and 493 deletions
  1. 493 493
      ruoyi-admin/src/main/resources/static/ruoyi/js/common.js

+ 493 - 493
ruoyi-admin/src/main/resources/static/ruoyi/js/common.js

@@ -1,493 +1,493 @@
-/**
- * 通用方法封装处理
- * Copyright (c) 2019 ruoyi 
- */
-$(function() {
-	
-    //  layer扩展皮肤
-    if (window.layer !== undefined) {
-        layer.config({
-            extend: 'moon/style.css',
-            skin: 'layer-ext-moon'
-        });
-    }
-	
-    // 回到顶部绑定
-    if ($.fn.toTop !== undefined) {
-        $('#scroll-up').toTop();
-    }
-	
-    // select2复选框事件绑定
-    if ($.fn.select2 !== undefined) {
-        $.fn.select2.defaults.set( "theme", "bootstrap" );
-        $("select.form-control:not(.noselect2)").each(function () {
-            $(this).select2().on("change", function () {
-                $(this).valid();
-            })
-        })
-    }
-	
-    // iCheck单选框及复选框事件绑定
-    if ($.fn.iCheck !== undefined) {
-        $(".check-box:not(.noicheck),.radio-box:not(.noicheck)").each(function() {
-            $(this).iCheck({
-                checkboxClass: 'icheckbox-blue',
-                radioClass: 'iradio-blue',
-            })
-        })
-    }
-	
-    // 取消回车自动提交表单
-    $(document).on("keypress", ":input:not(textarea):not([type=submit])", function(event) {
-        if (event.keyCode == 13) {
-            event.preventDefault();
-        }
-    });
-	 
-    // laydate 时间控件绑定
-    if ($(".select-time").length > 0) {
-       layui.use('laydate', function() {
-            var laydate = layui.laydate;
-            var startDate = laydate.render({
-                elem: '#startTime',
-                max: $('#endTime').val(),
-                theme: 'molv',
-                trigger: 'click',
-                done: function(value, date) {
-                    // 结束时间大于开始时间
-                    if (value !== '') {
-                        endDate.config.min.year = date.year;
-                        endDate.config.min.month = date.month - 1;
-                        endDate.config.min.date = date.date;
-                    } else {
-                        endDate.config.min.year = '';
-                        endDate.config.min.month = '';
-                        endDate.config.min.date = '';
-                    }
-                }
-            });
-            var endDate = laydate.render({
-                elem: '#endTime',
-                min: $('#startTime').val(),
-                theme: 'molv',
-                trigger: 'click',
-                done: function(value, date) {
-                    // 开始时间小于结束时间
-                    if (value !== '') {
-                        startDate.config.max.year = date.year;
-                        startDate.config.max.month = date.month - 1;
-                        startDate.config.max.date = date.date;
-                    } else {
-                        startDate.config.max.year = '2099';
-                        startDate.config.max.month = '12';
-                        startDate.config.max.date = '31';
-                    }
-                }
-            });
-        });
-    }
-	
-    // laydate time-input 时间控件绑定
-    if ($(".time-input").length > 0) {
-        layui.use('laydate', function () {
-            var com = layui.laydate;
-            $(".time-input").each(function (index, item) {
-                var time = $(item);
-                // 控制控件外观
-                var type = time.attr("data-type") || 'date';
-                // 控制回显格式
-                var format = time.attr("data-format") || 'yyyy-MM-dd';
-                // 控制日期控件按钮
-                var buttons = time.attr("data-btn") || 'clear|now|confirm', newBtnArr = [];
-                // 日期控件选择完成后回调处理
-                var callback = time.attr("data-callback") || {};
-                if (buttons) {
-                    if (buttons.indexOf("|") > 0) {
-                        var btnArr = buttons.split("|"), btnLen = btnArr.length;
-                        for (var j = 0; j < btnLen; j++) {
-                            if ("clear" === btnArr[j] || "now" === btnArr[j] || "confirm" === btnArr[j]) {
-                                newBtnArr.push(btnArr[j]);
-                            }
-                        }
-                    } else {
-                        if ("clear" === buttons || "now" === buttons || "confirm" === buttons) {
-                            newBtnArr.push(buttons);
-                        }
-                    }
-                } else {
-                    newBtnArr = ['clear', 'now', 'confirm'];
-                }
-                com.render({
-                    elem: item,
-                    theme: 'molv',
-                    trigger: 'click',
-                    type: type,
-                    format: format,
-                    btns: newBtnArr,
-                    done: function (value, data) {
-                        if (typeof window[callback] != 'undefined'
-                            && window[callback] instanceof Function) {
-                            window[callback](value, data);
-                        }
-                    }
-                });
-            });
-        });
-    }
-	
-    // tree 关键字搜索绑定
-    if ($("#keyword").length > 0) {
-        $("#keyword").bind("focus", function focusKey(e) {
-            if ($("#keyword").hasClass("empty")) {
-                $("#keyword").removeClass("empty");
-            }
-        }).bind("blur", function blurKey(e) {
-            if ($("#keyword").val() === "") {
-                $("#keyword").addClass("empty");
-            }
-            $.tree.searchNode(e);
-        }).bind("input propertychange", $.tree.searchNode);
-    }
-	
-    // tree表格树 展开/折叠
-    var expandFlag;
-    $("#expandAllBtn").click(function() {
-        var dataExpand = $.common.isEmpty(table.options.expandAll) ? true : table.options.expandAll;
-        expandFlag = $.common.isEmpty(expandFlag) ? dataExpand : expandFlag;
-        if (!expandFlag) {
-            $.bttTable.bootstrapTreeTable('expandAll');
-        } else {
-            $.bttTable.bootstrapTreeTable('collapseAll');
-        }
-        expandFlag = expandFlag ? false: true;
-    })
-	
-    // 按下ESC按钮关闭弹层
-    $('body', document).on('keyup', function(e) {
-        if (e.which === 27) {
-            $.modal.closeAll();
-        }
-    });
-});
-
-(function ($) {
-    'use strict';
-    $.fn.toTop = function(opt) {
-        var elem = this;
-        var win = (opt && opt.hasOwnProperty('win')) ? opt.win : $(window);
-        var doc = (opt && opt.hasOwnProperty('doc')) ? opt.doc : $('html, body');
-        var options = $.extend({
-            autohide: true,
-            offset: 50,
-            speed: 500,
-            position: true,
-            right: 15,
-            bottom: 5
-        }, opt);
-        elem.css({
-            'cursor': 'pointer'
-        });
-        if (options.autohide) {
-            elem.css('display', 'none');
-        }
-        if (options.position) {
-            elem.css({
-                'position': 'fixed',
-                'right': options.right,
-                'bottom': options.bottom,
-            });
-        }
-        elem.click(function() {
-            doc.animate({
-                scrollTop: 0
-            }, options.speed);
-        });
-        win.scroll(function() {
-            var scrolling = win.scrollTop();
-            if (options.autohide) {
-                if (scrolling > options.offset) {
-                    elem.fadeIn(options.speed);
-                } else elem.fadeOut(options.speed);
-            }
-        });
-    };
-})(jQuery);
-
-/** 刷新选项卡 */
-var refreshItem = function(){
-    var topWindow = $(window.parent.document);
-    var currentId = $('.page-tabs-content', topWindow).find('.active').attr('data-id');
-    var target = $('.RuoYi_iframe[data-id="' + currentId + '"]', topWindow);
-    var url = target.attr('src');
-    target.attr('src', url).ready();
-}
-
-/** 关闭选项卡 */
-var closeItem = function(dataId){
-	var topWindow = $(window.parent.document);
-	if($.common.isNotEmpty(dataId)){
-	    window.parent.$.modal.closeLoading();
-	    // 根据dataId关闭指定选项卡
-	    $('.menuTab[data-id="' + dataId + '"]', topWindow).remove();
-	    // 移除相应tab对应的内容区
-	    $('.mainContent .RuoYi_iframe[data-id="' + dataId + '"]', topWindow).remove();
-	    return;
-	}
-	var panelUrl = window.frameElement.getAttribute('data-panel');
-	$('.page-tabs-content .active i', topWindow).click();
-	if($.common.isNotEmpty(panelUrl)){
-	    $('.menuTab[data-id="' + panelUrl + '"]', topWindow).addClass('active').siblings('.menuTab').removeClass('active');
-	    $('.mainContent .RuoYi_iframe', topWindow).each(function() {
-	        if ($(this).data('id') == panelUrl) {
-	            $(this).show().siblings('.RuoYi_iframe').hide();
-	            return false;
-            }
-        });
-    }
-}
-
-/** 创建选项卡 */
-function createMenuItem(dataUrl, menuName, isRefresh) {
-    var panelUrl = window.frameElement.getAttribute('data-id');
-    dataIndex = $.common.random(1, 100),
-    flag = true;
-    if (dataUrl == undefined || $.trim(dataUrl).length == 0) return false;
-    var topWindow = $(window.parent.document);
-    // 选项卡菜单已存在
-    $('.menuTab', topWindow).each(function() {
-        if ($(this).data('id') == dataUrl) {
-            if (!$(this).hasClass('active')) {
-                $(this).addClass('active').siblings('.menuTab').removeClass('active');
-                scrollToTab(this);
-                $('.page-tabs-content').animate({ marginLeft: ""}, "fast");
-                // 显示tab对应的内容区
-                $('.mainContent .RuoYi_iframe', topWindow).each(function() {
-                    if ($(this).data('id') == dataUrl) {
-                        $(this).show().siblings('.RuoYi_iframe').hide();
-                        return false;
-                    }
-                });
-            }
-            if (isRefresh) {
-            	refreshTab();
-            }
-            flag = false;
-            return false;
-        }
-    });
-    // 选项卡菜单不存在
-    if (flag) {
-        var str = '<a href="javascript:;" class="active menuTab noactive" data-id="' + dataUrl + '" data-panel="' + panelUrl + '">' + menuName + ' <i class="fa fa-times-circle"></i></a>';
-        $('.menuTab', topWindow).removeClass('active');
-
-        // 添加选项卡对应的iframe
-        var str1 = '<iframe class="RuoYi_iframe" name="iframe' + dataIndex + '" width="100%" height="100%" src="' + dataUrl + '" frameborder="0" data-id="' + dataUrl + '" data-panel="' + panelUrl + '" seamless></iframe>';
-        $('.mainContent', topWindow).find('iframe.RuoYi_iframe').hide().parents('.mainContent').append(str1);
-        
-        window.parent.$.modal.loading("数据加载中,请稍后...");
-        $('.mainContent iframe:visible', topWindow).load(function () {
-            window.parent.$.modal.closeLoading();
-        });
-
-        // 添加选项卡
-        $('.menuTabs .page-tabs-content', topWindow).append(str);
-        scrollToTab($('.menuTab.active', topWindow));
-    }
-    return false;
-}
-
-// 刷新iframe
-function refreshTab() {
-	var topWindow = $(window.parent.document);
-	var currentId = $('.page-tabs-content', topWindow).find('.active').attr('data-id');
-	var target = $('.RuoYi_iframe[data-id="' + currentId + '"]', topWindow);
-    var url = target.attr('src');
-	target.attr('src', url).ready();
-}
-
-// 滚动到指定选项卡
-function scrollToTab(element) {
-    var topWindow = $(window.parent.document);
-    var marginLeftVal = calSumWidth($(element).prevAll()),
-    marginRightVal = calSumWidth($(element).nextAll());
-    // 可视区域非tab宽度
-    var tabOuterWidth = calSumWidth($(".content-tabs", topWindow).children().not(".menuTabs"));
-    //可视区域tab宽度
-    var visibleWidth = $(".content-tabs", topWindow).outerWidth(true) - tabOuterWidth;
-    //实际滚动宽度
-    var scrollVal = 0;
-    if ($(".page-tabs-content", topWindow).outerWidth() < visibleWidth) {
-        scrollVal = 0;
-    } else if (marginRightVal <= (visibleWidth - $(element).outerWidth(true) - $(element).next().outerWidth(true))) {
-        if ((visibleWidth - $(element).next().outerWidth(true)) > marginRightVal) {
-            scrollVal = marginLeftVal;
-            var tabElement = element;
-            while ((scrollVal - $(tabElement).outerWidth()) > ($(".page-tabs-content", topWindow).outerWidth() - visibleWidth)) {
-                scrollVal -= $(tabElement).prev().outerWidth();
-                tabElement = $(tabElement).prev();
-            }
-        }
-    } else if (marginLeftVal > (visibleWidth - $(element).outerWidth(true) - $(element).prev().outerWidth(true))) {
-        scrollVal = marginLeftVal - $(element).prev().outerWidth(true);
-    }
-    $('.page-tabs-content', topWindow).animate({ marginLeft: 0 - scrollVal + 'px' }, "fast");
-}
-
-//计算元素集合的总宽度
-function calSumWidth(elements) {
-    var width = 0;
-    $(elements).each(function() {
-        width += $(this).outerWidth(true);
-    });
-    return width;
-}
-
-/** 密码规则范围验证 */
-function checkpwd(chrtype, password) {
-    if (chrtype == 1) {
-        if(!$.common.numValid(password)){
-            $.modal.alertWarning("密码只能为0-9数字");
-            return false;
-        }
-    } else if (chrtype == 2) {
-        if(!$.common.enValid(password)){
-            $.modal.alertWarning("密码只能为a-z和A-Z字母");
-            return false;
-        }
-    } else if (chrtype == 3) {
-        if(!$.common.enNumValid(password)){
-            $.modal.alertWarning("密码必须包含字母以及数字");
-            return false;
-        }
-    } else if (chrtype == 4) {
-        if(!$.common.charValid(password)){
-            $.modal.alertWarning("密码必须包含字母、数字、以及特殊符号<font color='red'>~!@#$%^&*()-=_+</font>");
-            return false;
-        }
-    }
-    return true;
-}
-
-// 日志打印封装处理
-var log = {
-    log: function(msg) {
-        console.log(msg);
-    },
-    info: function(msg) {
-        console.info(msg);
-    },
-    warn: function(msg) {
-        console.warn(msg);
-    },
-    error: function(msg) {
-        console.error(msg);
-    }
-};
-
-// 本地缓存处理
-var storage = {
-    set: function(key, value) {
-        window.localStorage.setItem(key, value);
-    },
-    get: function(key) {
-        return window.localStorage.getItem(key);
-    },
-    remove: function(key) {
-        window.localStorage.removeItem(key);
-    },
-    clear: function() {
-        window.localStorage.clear();
-    }
-};
-
-// 主子表操作封装处理
-var sub = {
-    editColumn: function() {
-    	var dataColumns = [];
-		for (var columnIndex = 0; columnIndex < table.options.columns.length; columnIndex++) {
-    		if (table.options.columns[columnIndex].visible != false) {
-    			dataColumns.push(table.options.columns[columnIndex]);
-    		}
-    	}
-		var params = new Array();
-		var data = $("#" + table.options.id).bootstrapTable('getData');
-    	var count = data.length;
-    	for (var dataIndex = 0; dataIndex < count; dataIndex++) {
-    	    var columns = $('#' + table.options.id + ' tr[data-index="' + dataIndex + '"] td');
-    	    var obj = new Object();
-    	    for (var i = 0; i < columns.length; i++) {
-    	        var inputValue = $(columns[i]).find('input');
-    	        var selectValue = $(columns[i]).find('select');
-    	        var textareaValue = $(columns[i]).find('textarea');
-    	        var key = dataColumns[i].field;
-    	        if ($.common.isNotEmpty(inputValue.val())) {
-    	            obj[key] = inputValue.val();
-    	        } else if ($.common.isNotEmpty(selectValue.val())) {
-    	            obj[key] = selectValue.val();
-    	        } else if ($.common.isNotEmpty(textareaValue.val())) {
-    	            obj[key] = textareaValue.val();
-    	        } else {
-    	            obj[key] = "";
-    	        }
-    	    }
-    	    var item = data[dataIndex];
-    	    var extendObj = $.extend({}, item, obj);
-    	    params.push({ index: dataIndex, row: extendObj });
-    	}
-    	$("#" + table.options.id).bootstrapTable("updateRow", params);
-    },
-    delColumn: function(column) {
-    	sub.editColumn();
-    	var subColumn = $.common.isEmpty(column) ? "index" : column;
-    	var ids = $.table.selectColumns(subColumn);
-        if (ids.length == 0) {
-            $.modal.alertWarning("请至少选择一条记录");
-            return;
-        }
-        $("#" + table.options.id).bootstrapTable('remove', { field: subColumn, values: ids });
-    },
-    addColumn: function(row, tableId) {
-    	var currentId = $.common.isEmpty(tableId) ? table.options.id : tableId;
-    	table.set(currentId);
-    	var count = $("#" + currentId).bootstrapTable('getData').length;
-    	sub.editColumn();
-    	$("#" + currentId).bootstrapTable('insertRow', {
-            index: count + 1,
-            row: row
-        });
-    }
-};
-
-// 动态加载css文件
-function loadCss(file, headElem) {
-    var link = document.createElement('link');
-    link.href = file;
-    link.rel = 'stylesheet';
-    link.type = 'text/css';
-    if (headElem) headElem.appendChild(link);
-    else document.getElementsByTagName('head')[0].appendChild(link);
-}
-
-// 动态加载js文件
-function loadJs(file, headElem) {
-    var script = document.createElement('script');
-    script.src = file;
-    script.type = 'text/javascript';
-    if (headElem) headElem.appendChild(script);
-    else document.getElementsByTagName('head')[0].appendChild(script);
-}
-
-/** 设置全局ajax处理 */
-$.ajaxSetup({
-    complete: function(XMLHttpRequest, textStatus) {
-        if (textStatus == 'timeout') {
-            $.modal.alertWarning("服务器超时,请稍后再试!");
-            $.modal.enable();
-            $.modal.closeLoading();
-        } else if (textStatus == "parsererror" || textStatus == "error") {
-            $.modal.alertWarning("服务器错误,请联系管理员!");
-            $.modal.enable();
-            $.modal.closeLoading();
-        }
-    }
-});
+/**
+ * 通用方法封装处理
+ * Copyright (c) 2019 ruoyi 
+ */
+$(function() {
+	
+    //  layer扩展皮肤
+    if (window.layer !== undefined) {
+        layer.config({
+            extend: 'moon/style.css',
+            skin: 'layer-ext-moon'
+        });
+    }
+	
+    // 回到顶部绑定
+    if ($.fn.toTop !== undefined) {
+        $('#scroll-up').toTop();
+    }
+	
+    // select2复选框事件绑定
+    if ($.fn.select2 !== undefined) {
+        $.fn.select2.defaults.set( "theme", "bootstrap" );
+        $("select.form-control:not(.noselect2)").each(function () {
+            $(this).select2().on("change", function () {
+                $(this).valid();
+            })
+        })
+    }
+	
+    // iCheck单选框及复选框事件绑定
+    if ($.fn.iCheck !== undefined) {
+        $(".check-box:not(.noicheck),.radio-box:not(.noicheck)").each(function() {
+            $(this).iCheck({
+                checkboxClass: 'icheckbox-blue',
+                radioClass: 'iradio-blue',
+            })
+        })
+    }
+	
+    // 取消回车自动提交表单
+    $(document).on("keypress", ":input:not(textarea):not([type=submit])", function(event) {
+        if (event.keyCode == 13) {
+            event.preventDefault();
+        }
+    });
+	 
+    // laydate 时间控件绑定
+    if ($(".select-time").length > 0) {
+       layui.use('laydate', function() {
+            var laydate = layui.laydate;
+            var startDate = laydate.render({
+                elem: '#startTime',
+                max: $('#endTime').val(),
+                theme: 'molv',
+                trigger: 'click',
+                done: function(value, date) {
+                    // 结束时间大于开始时间
+                    if (value !== '') {
+                        endDate.config.min.year = date.year;
+                        endDate.config.min.month = date.month - 1;
+                        endDate.config.min.date = date.date;
+                    } else {
+                        endDate.config.min.year = '';
+                        endDate.config.min.month = '';
+                        endDate.config.min.date = '';
+                    }
+                }
+            });
+            var endDate = laydate.render({
+                elem: '#endTime',
+                min: $('#startTime').val(),
+                theme: 'molv',
+                trigger: 'click',
+                done: function(value, date) {
+                    // 开始时间小于结束时间
+                    if (value !== '') {
+                        startDate.config.max.year = date.year;
+                        startDate.config.max.month = date.month - 1;
+                        startDate.config.max.date = date.date;
+                    } else {
+                        startDate.config.max.year = '2099';
+                        startDate.config.max.month = '12';
+                        startDate.config.max.date = '31';
+                    }
+                }
+            });
+        });
+    }
+	
+    // laydate time-input 时间控件绑定
+    if ($(".time-input").length > 0) {
+        layui.use('laydate', function () {
+            var com = layui.laydate;
+            $(".time-input").each(function (index, item) {
+                var time = $(item);
+                // 控制控件外观
+                var type = time.attr("data-type") || 'date';
+                // 控制回显格式
+                var format = time.attr("data-format") || 'yyyy-MM-dd';
+                // 控制日期控件按钮
+                var buttons = time.attr("data-btn") || 'clear|now|confirm', newBtnArr = [];
+                // 日期控件选择完成后回调处理
+                var callback = time.attr("data-callback") || {};
+                if (buttons) {
+                    if (buttons.indexOf("|") > 0) {
+                        var btnArr = buttons.split("|"), btnLen = btnArr.length;
+                        for (var j = 0; j < btnLen; j++) {
+                            if ("clear" === btnArr[j] || "now" === btnArr[j] || "confirm" === btnArr[j]) {
+                                newBtnArr.push(btnArr[j]);
+                            }
+                        }
+                    } else {
+                        if ("clear" === buttons || "now" === buttons || "confirm" === buttons) {
+                            newBtnArr.push(buttons);
+                        }
+                    }
+                } else {
+                    newBtnArr = ['clear', 'now', 'confirm'];
+                }
+                com.render({
+                    elem: item,
+                    theme: 'molv',
+                    trigger: 'click',
+                    type: type,
+                    format: format,
+                    btns: newBtnArr,
+                    done: function (value, data) {
+                        if (typeof window[callback] != 'undefined'
+                            && window[callback] instanceof Function) {
+                            window[callback](value, data);
+                        }
+                    }
+                });
+            });
+        });
+    }
+	
+    // tree 关键字搜索绑定
+    if ($("#keyword").length > 0) {
+        $("#keyword").bind("focus", function focusKey(e) {
+            if ($("#keyword").hasClass("empty")) {
+                $("#keyword").removeClass("empty");
+            }
+        }).bind("blur", function blurKey(e) {
+            if ($("#keyword").val() === "") {
+                $("#keyword").addClass("empty");
+            }
+            $.tree.searchNode(e);
+        }).bind("input propertychange", $.tree.searchNode);
+    }
+	
+    // tree表格树 展开/折叠
+    var expandFlag;
+    $("#expandAllBtn").click(function() {
+        var dataExpand = $.common.isEmpty(table.options.expandAll) ? true : table.options.expandAll;
+        expandFlag = $.common.isEmpty(expandFlag) ? dataExpand : expandFlag;
+        if (!expandFlag) {
+            $.bttTable.bootstrapTreeTable('expandAll');
+        } else {
+            $.bttTable.bootstrapTreeTable('collapseAll');
+        }
+        expandFlag = expandFlag ? false: true;
+    })
+	
+    // 按下ESC按钮关闭弹层
+    $('body', document).on('keyup', function(e) {
+        if (e.which === 27) {
+            $.modal.closeAll();
+        }
+    });
+});
+
+(function ($) {
+    'use strict';
+    $.fn.toTop = function(opt) {
+        var elem = this;
+        var win = (opt && opt.hasOwnProperty('win')) ? opt.win : $(window);
+        var doc = (opt && opt.hasOwnProperty('doc')) ? opt.doc : $('html, body');
+        var options = $.extend({
+            autohide: true,
+            offset: 50,
+            speed: 500,
+            position: true,
+            right: 15,
+            bottom: 5
+        }, opt);
+        elem.css({
+            'cursor': 'pointer'
+        });
+        if (options.autohide) {
+            elem.css('display', 'none');
+        }
+        if (options.position) {
+            elem.css({
+                'position': 'fixed',
+                'right': options.right,
+                'bottom': options.bottom,
+            });
+        }
+        elem.click(function() {
+            doc.animate({
+                scrollTop: 0
+            }, options.speed);
+        });
+        win.scroll(function() {
+            var scrolling = win.scrollTop();
+            if (options.autohide) {
+                if (scrolling > options.offset) {
+                    elem.fadeIn(options.speed);
+                } else elem.fadeOut(options.speed);
+            }
+        });
+    };
+})(jQuery);
+
+/** 刷新选项卡 */
+var refreshItem = function(){
+    var topWindow = $(window.parent.document);
+    var currentId = $('.page-tabs-content', topWindow).find('.active').attr('data-id');
+    var target = $('.RuoYi_iframe[data-id="' + currentId + '"]', topWindow);
+    var url = target.attr('src');
+    target.attr('src', url).ready();
+}
+
+/** 关闭选项卡 */
+var closeItem = function(dataId){
+	var topWindow = $(window.parent.document);
+	if($.common.isNotEmpty(dataId)){
+	    window.parent.$.modal.closeLoading();
+	    // 根据dataId关闭指定选项卡
+	    $('.menuTab[data-id="' + dataId + '"]', topWindow).remove();
+	    // 移除相应tab对应的内容区
+	    $('.mainContent .RuoYi_iframe[data-id="' + dataId + '"]', topWindow).remove();
+	    return;
+	}
+	var panelUrl = window.frameElement.getAttribute('data-panel');
+	$('.page-tabs-content .active i', topWindow).click();
+	if($.common.isNotEmpty(panelUrl)){
+	    $('.menuTab[data-id="' + panelUrl + '"]', topWindow).addClass('active').siblings('.menuTab').removeClass('active');
+	    $('.mainContent .RuoYi_iframe', topWindow).each(function() {
+	        if ($(this).data('id') == panelUrl) {
+	            $(this).show().siblings('.RuoYi_iframe').hide();
+	            return false;
+            }
+        });
+    }
+}
+
+/** 创建选项卡 */
+function createMenuItem(dataUrl, menuName, isRefresh) {
+    var panelUrl = window.frameElement.getAttribute('data-id'),
+    dataIndex = $.common.random(1, 100),
+    flag = true;
+    if (dataUrl == undefined || $.trim(dataUrl).length == 0) return false;
+    var topWindow = $(window.parent.document);
+    // 选项卡菜单已存在
+    $('.menuTab', topWindow).each(function() {
+        if ($(this).data('id') == dataUrl) {
+            if (!$(this).hasClass('active')) {
+                $(this).addClass('active').siblings('.menuTab').removeClass('active');
+                scrollToTab(this);
+                $('.page-tabs-content').animate({ marginLeft: ""}, "fast");
+                // 显示tab对应的内容区
+                $('.mainContent .RuoYi_iframe', topWindow).each(function() {
+                    if ($(this).data('id') == dataUrl) {
+                        $(this).show().siblings('.RuoYi_iframe').hide();
+                        return false;
+                    }
+                });
+            }
+            if (isRefresh) {
+            	refreshTab();
+            }
+            flag = false;
+            return false;
+        }
+    });
+    // 选项卡菜单不存在
+    if (flag) {
+        var str = '<a href="javascript:;" class="active menuTab noactive" data-id="' + dataUrl + '" data-panel="' + panelUrl + '">' + menuName + ' <i class="fa fa-times-circle"></i></a>';
+        $('.menuTab', topWindow).removeClass('active');
+
+        // 添加选项卡对应的iframe
+        var str1 = '<iframe class="RuoYi_iframe" name="iframe' + dataIndex + '" width="100%" height="100%" src="' + dataUrl + '" frameborder="0" data-id="' + dataUrl + '" data-panel="' + panelUrl + '" seamless></iframe>';
+        $('.mainContent', topWindow).find('iframe.RuoYi_iframe').hide().parents('.mainContent').append(str1);
+        
+        window.parent.$.modal.loading("数据加载中,请稍后...");
+        $('.mainContent iframe:visible', topWindow).load(function () {
+            window.parent.$.modal.closeLoading();
+        });
+
+        // 添加选项卡
+        $('.menuTabs .page-tabs-content', topWindow).append(str);
+        scrollToTab($('.menuTab.active', topWindow));
+    }
+    return false;
+}
+
+// 刷新iframe
+function refreshTab() {
+	var topWindow = $(window.parent.document);
+	var currentId = $('.page-tabs-content', topWindow).find('.active').attr('data-id');
+	var target = $('.RuoYi_iframe[data-id="' + currentId + '"]', topWindow);
+    var url = target.attr('src');
+	target.attr('src', url).ready();
+}
+
+// 滚动到指定选项卡
+function scrollToTab(element) {
+    var topWindow = $(window.parent.document);
+    var marginLeftVal = calSumWidth($(element).prevAll()),
+    marginRightVal = calSumWidth($(element).nextAll());
+    // 可视区域非tab宽度
+    var tabOuterWidth = calSumWidth($(".content-tabs", topWindow).children().not(".menuTabs"));
+    //可视区域tab宽度
+    var visibleWidth = $(".content-tabs", topWindow).outerWidth(true) - tabOuterWidth;
+    //实际滚动宽度
+    var scrollVal = 0;
+    if ($(".page-tabs-content", topWindow).outerWidth() < visibleWidth) {
+        scrollVal = 0;
+    } else if (marginRightVal <= (visibleWidth - $(element).outerWidth(true) - $(element).next().outerWidth(true))) {
+        if ((visibleWidth - $(element).next().outerWidth(true)) > marginRightVal) {
+            scrollVal = marginLeftVal;
+            var tabElement = element;
+            while ((scrollVal - $(tabElement).outerWidth()) > ($(".page-tabs-content", topWindow).outerWidth() - visibleWidth)) {
+                scrollVal -= $(tabElement).prev().outerWidth();
+                tabElement = $(tabElement).prev();
+            }
+        }
+    } else if (marginLeftVal > (visibleWidth - $(element).outerWidth(true) - $(element).prev().outerWidth(true))) {
+        scrollVal = marginLeftVal - $(element).prev().outerWidth(true);
+    }
+    $('.page-tabs-content', topWindow).animate({ marginLeft: 0 - scrollVal + 'px' }, "fast");
+}
+
+//计算元素集合的总宽度
+function calSumWidth(elements) {
+    var width = 0;
+    $(elements).each(function() {
+        width += $(this).outerWidth(true);
+    });
+    return width;
+}
+
+/** 密码规则范围验证 */
+function checkpwd(chrtype, password) {
+    if (chrtype == 1) {
+        if(!$.common.numValid(password)){
+            $.modal.alertWarning("密码只能为0-9数字");
+            return false;
+        }
+    } else if (chrtype == 2) {
+        if(!$.common.enValid(password)){
+            $.modal.alertWarning("密码只能为a-z和A-Z字母");
+            return false;
+        }
+    } else if (chrtype == 3) {
+        if(!$.common.enNumValid(password)){
+            $.modal.alertWarning("密码必须包含字母以及数字");
+            return false;
+        }
+    } else if (chrtype == 4) {
+        if(!$.common.charValid(password)){
+            $.modal.alertWarning("密码必须包含字母、数字、以及特殊符号<font color='red'>~!@#$%^&*()-=_+</font>");
+            return false;
+        }
+    }
+    return true;
+}
+
+// 日志打印封装处理
+var log = {
+    log: function(msg) {
+        console.log(msg);
+    },
+    info: function(msg) {
+        console.info(msg);
+    },
+    warn: function(msg) {
+        console.warn(msg);
+    },
+    error: function(msg) {
+        console.error(msg);
+    }
+};
+
+// 本地缓存处理
+var storage = {
+    set: function(key, value) {
+        window.localStorage.setItem(key, value);
+    },
+    get: function(key) {
+        return window.localStorage.getItem(key);
+    },
+    remove: function(key) {
+        window.localStorage.removeItem(key);
+    },
+    clear: function() {
+        window.localStorage.clear();
+    }
+};
+
+// 主子表操作封装处理
+var sub = {
+    editColumn: function() {
+    	var dataColumns = [];
+		for (var columnIndex = 0; columnIndex < table.options.columns.length; columnIndex++) {
+    		if (table.options.columns[columnIndex].visible != false) {
+    			dataColumns.push(table.options.columns[columnIndex]);
+    		}
+    	}
+		var params = new Array();
+		var data = $("#" + table.options.id).bootstrapTable('getData');
+    	var count = data.length;
+    	for (var dataIndex = 0; dataIndex < count; dataIndex++) {
+    	    var columns = $('#' + table.options.id + ' tr[data-index="' + dataIndex + '"] td');
+    	    var obj = new Object();
+    	    for (var i = 0; i < columns.length; i++) {
+    	        var inputValue = $(columns[i]).find('input');
+    	        var selectValue = $(columns[i]).find('select');
+    	        var textareaValue = $(columns[i]).find('textarea');
+    	        var key = dataColumns[i].field;
+    	        if ($.common.isNotEmpty(inputValue.val())) {
+    	            obj[key] = inputValue.val();
+    	        } else if ($.common.isNotEmpty(selectValue.val())) {
+    	            obj[key] = selectValue.val();
+    	        } else if ($.common.isNotEmpty(textareaValue.val())) {
+    	            obj[key] = textareaValue.val();
+    	        } else {
+    	            obj[key] = "";
+    	        }
+    	    }
+    	    var item = data[dataIndex];
+    	    var extendObj = $.extend({}, item, obj);
+    	    params.push({ index: dataIndex, row: extendObj });
+    	}
+    	$("#" + table.options.id).bootstrapTable("updateRow", params);
+    },
+    delColumn: function(column) {
+    	sub.editColumn();
+    	var subColumn = $.common.isEmpty(column) ? "index" : column;
+    	var ids = $.table.selectColumns(subColumn);
+        if (ids.length == 0) {
+            $.modal.alertWarning("请至少选择一条记录");
+            return;
+        }
+        $("#" + table.options.id).bootstrapTable('remove', { field: subColumn, values: ids });
+    },
+    addColumn: function(row, tableId) {
+    	var currentId = $.common.isEmpty(tableId) ? table.options.id : tableId;
+    	table.set(currentId);
+    	var count = $("#" + currentId).bootstrapTable('getData').length;
+    	sub.editColumn();
+    	$("#" + currentId).bootstrapTable('insertRow', {
+            index: count + 1,
+            row: row
+        });
+    }
+};
+
+// 动态加载css文件
+function loadCss(file, headElem) {
+    var link = document.createElement('link');
+    link.href = file;
+    link.rel = 'stylesheet';
+    link.type = 'text/css';
+    if (headElem) headElem.appendChild(link);
+    else document.getElementsByTagName('head')[0].appendChild(link);
+}
+
+// 动态加载js文件
+function loadJs(file, headElem) {
+    var script = document.createElement('script');
+    script.src = file;
+    script.type = 'text/javascript';
+    if (headElem) headElem.appendChild(script);
+    else document.getElementsByTagName('head')[0].appendChild(script);
+}
+
+/** 设置全局ajax处理 */
+$.ajaxSetup({
+    complete: function(XMLHttpRequest, textStatus) {
+        if (textStatus == 'timeout') {
+            $.modal.alertWarning("服务器超时,请稍后再试!");
+            $.modal.enable();
+            $.modal.closeLoading();
+        } else if (textStatus == "parsererror" || textStatus == "error") {
+            $.modal.alertWarning("服务器错误,请联系管理员!");
+            $.modal.enable();
+            $.modal.closeLoading();
+        }
+    }
+});