/** EasyWeb iframe v3.1.8 date:2020-05-04 License By http://easyweb.vip */ 
 | 
  
 | 
layui.define(['layer'], function (exports) { 
 | 
    var $ = layui.jquery; 
 | 
    var layer = layui.layer; 
 | 
    var setter = layui.cache; 
 | 
    var bodyDOM = '.layui-layout-admin>.layui-body'; 
 | 
    var tabDOM = bodyDOM + '>.layui-tab'; 
 | 
    var sideDOM = '.layui-layout-admin>.layui-side>.layui-side-scroll'; 
 | 
    var headerDOM = '.layui-layout-admin>.layui-header'; 
 | 
    var navFilter = 'admin-side-nav'; 
 | 
    var admin = {version: '3.1.8', layerData: {}}; 
 | 
  
 | 
    /** 设置侧栏折叠 */ 
 | 
    admin.flexible = function (expand) { 
 | 
        if (window !== top && !admin.isTop() && top.layui && top.layui.admin) return top.layui.admin.flexible(expand); 
 | 
        var $layout = $('.layui-layout-admin'); 
 | 
        var isExapnd = $layout.hasClass('admin-nav-mini'); 
 | 
        if (expand === undefined) expand = isExapnd; 
 | 
        if (isExapnd === expand) { 
 | 
            if (window.sideFlexTimer) clearTimeout(window.sideFlexTimer); 
 | 
            $layout.addClass('admin-side-flexible'); 
 | 
            window.sideFlexTimer = setTimeout(function () { 
 | 
                $layout.removeClass('admin-side-flexible'); 
 | 
            }, 600); 
 | 
            if (expand) { 
 | 
                admin.hideTableScrollBar(); 
 | 
                $layout.removeClass('admin-nav-mini'); 
 | 
            } else { 
 | 
                $layout.addClass('admin-nav-mini'); 
 | 
            } 
 | 
            layui.event.call(this, 'admin', 'flexible({*})', {expand: expand}); 
 | 
        } 
 | 
    }; 
 | 
  
 | 
    /** 设置导航栏选中 */ 
 | 
    admin.activeNav = function (url) { 
 | 
        if (window !== top && !admin.isTop() && top.layui && top.layui.admin) return top.layui.admin.activeNav(url); 
 | 
        if (!url) return console.warn('active url is null'); 
 | 
        $(sideDOM + '>.layui-nav .layui-nav-item .layui-nav-child dd.layui-this').removeClass('layui-this'); 
 | 
        $(sideDOM + '>.layui-nav .layui-nav-item.layui-this').removeClass('layui-this'); 
 | 
        var $a = $(sideDOM + '>.layui-nav a[lay-href="' + url + '"]'); 
 | 
        if ($a.length === 0) return console.warn(url + ' not found'); 
 | 
        var isMini = $('.layui-layout-admin').hasClass('admin-nav-mini'); 
 | 
        if ($(sideDOM + '>.layui-nav').attr('lay-shrink') === '_all') {  // 手风琴效果 
 | 
            var $pChilds = $a.parent('dd').parents('.layui-nav-child'); 
 | 
            if (!isMini) { 
 | 
                $(sideDOM + '>.layui-nav .layui-nav-itemed>.layui-nav-child').not($pChilds) 
 | 
                    .css('display', 'block').slideUp('fast', function () { 
 | 
                    $(this).css('display', ''); 
 | 
                }); 
 | 
            } 
 | 
            $(sideDOM + '>.layui-nav .layui-nav-itemed').not($pChilds.parent()).removeClass('layui-nav-itemed'); 
 | 
        } 
 | 
        $a.parent().addClass('layui-this');  // 选中当前 
 | 
        // 展开所有父级 
 | 
        var $asParents = $a.parent('dd').parents('.layui-nav-child').parent(); 
 | 
        if (!isMini) { 
 | 
            var $childs = $asParents.not('.layui-nav-itemed').children('.layui-nav-child'); 
 | 
            $childs.slideDown('fast', function () { 
 | 
                if ($(this).is($childs.last())) { 
 | 
                    $childs.css('display', ''); 
 | 
                    // 菜单超出屏幕自动滚动 
 | 
                    var topBeyond = $a.offset().top + $a.outerHeight() + 30 - admin.getPageHeight(); 
 | 
                    var topDisparity = 50 + 65 - $a.offset().top; 
 | 
                    if (topBeyond > 0) { 
 | 
                        $(sideDOM).animate({'scrollTop': $(sideDOM).scrollTop() + topBeyond}, 300); 
 | 
                    } else if (topDisparity > 0) { 
 | 
                        $(sideDOM).animate({'scrollTop': $(sideDOM).scrollTop() - topDisparity}, 300); 
 | 
                    } 
 | 
                } 
 | 
            }); 
 | 
        } 
 | 
        $asParents.addClass('layui-nav-itemed'); 
 | 
        // 适配多系统模式 
 | 
        $('ul[lay-filter="' + navFilter + '"]').addClass('layui-hide'); 
 | 
        var $aUl = $a.parents('.layui-nav'); 
 | 
        $aUl.removeClass('layui-hide'); 
 | 
        $(headerDOM + '>.layui-nav>.layui-nav-item').removeClass('layui-this'); 
 | 
        $(headerDOM + '>.layui-nav>.layui-nav-item>a[nav-bind="' + $aUl.attr('nav-id') + '"]').parent().addClass('layui-this'); 
 | 
    }; 
 | 
  
 | 
    /** 右侧弹出 */ 
 | 
    admin.popupRight = function (param) { 
 | 
        param.anim = -1; 
 | 
        param.offset = 'r'; 
 | 
        param.move = false; 
 | 
        param.fixed = true; 
 | 
        if (param.area === undefined) param.area = '336px'; 
 | 
        if (param.title === undefined) param.title = false; 
 | 
        if (param.closeBtn === undefined) param.closeBtn = false; 
 | 
        if (param.shadeClose === undefined) param.shadeClose = true; 
 | 
        if (param.skin === undefined) param.skin = 'layui-anim layui-anim-rl layui-layer-adminRight'; 
 | 
        return admin.open(param); 
 | 
    }; 
 | 
  
 | 
    /** 封装layer.open */ 
 | 
    admin.open = function (param) { 
 | 
        if (param.content && param.type === 2) param.url = undefined;  // 参数纠正 
 | 
        if (param.url && (param.type === 2 || param.type === undefined)) param.type = 1;  // 参数纠正 
 | 
        if (param.area === undefined) param.area = param.type === 2 ? ['360px', '300px'] : '360px'; 
 | 
        if (param.offset === undefined) param.offset = '70px'; 
 | 
        if (param.shade === undefined) param.shade = .1; 
 | 
        if (param.fixed === undefined) param.fixed = false; 
 | 
        if (param.resize === undefined) param.resize = false; 
 | 
        if (param.skin === undefined) param.skin = 'layui-layer-admin'; 
 | 
        var eCallBack = param.end; 
 | 
        param.end = function () { 
 | 
            layer.closeAll('tips');  // 关闭表单验证的tips 
 | 
            eCallBack && eCallBack(); 
 | 
        }; 
 | 
        if (param.url) { 
 | 
            var sCallBack = param.success; 
 | 
            param.success = function (layero, index) { 
 | 
                $(layero).data('tpl', param.tpl || ''); 
 | 
                admin.reloadLayer(index, param.url, sCallBack); 
 | 
            }; 
 | 
        } else if (param.tpl && param.content) { 
 | 
            param.content = admin.util.tpl(param.content, param.data, setter.tplOpen, setter.tplClose); 
 | 
        } 
 | 
        var layIndex = layer.open(param); 
 | 
        if (param.data) admin.layerData['d' + layIndex] = param.data; 
 | 
        return layIndex; 
 | 
    }; 
 | 
  
 | 
    /** 获取弹窗数据 */ 
 | 
    admin.getLayerData = function (index, key) { 
 | 
        if (index === undefined) { 
 | 
            index = parent.layer.getFrameIndex(window.name); 
 | 
            if (index === undefined) return null; 
 | 
            else return parent.layui.admin.getLayerData(parseInt(index), key); 
 | 
        } else if (isNaN(index)) { 
 | 
            index = admin.getLayerIndex(index); 
 | 
        } 
 | 
        if (index === undefined) return; 
 | 
        var layerData = admin.layerData['d' + index]; 
 | 
        if (key && layerData) return layerData[key]; 
 | 
        return layerData; 
 | 
    }; 
 | 
  
 | 
    /** 放入弹窗数据 */ 
 | 
    admin.putLayerData = function (key, value, index) { 
 | 
        if (index === undefined) { 
 | 
            index = parent.layer.getFrameIndex(window.name); 
 | 
            if (index === undefined) return; 
 | 
            else return parent.layui.admin.putLayerData(key, value, parseInt(index)); 
 | 
        } else if (isNaN(index)) { 
 | 
            index = admin.getLayerIndex(index); 
 | 
        } 
 | 
        if (index === undefined) return; 
 | 
        var layerData = admin.getLayerData(index); 
 | 
        if (!layerData) layerData = {}; 
 | 
        layerData[key] = value; 
 | 
        admin.layerData['d' + index] = layerData; 
 | 
    }; 
 | 
  
 | 
    /** 刷新url方式的layer */ 
 | 
    admin.reloadLayer = function (index, url, success) { 
 | 
        if (typeof url === 'function') { 
 | 
            success = url; 
 | 
            url = undefined; 
 | 
        } 
 | 
        if (isNaN(index)) index = admin.getLayerIndex(index); 
 | 
        if (index === undefined) return; 
 | 
        var $layero = $('#layui-layer' + index); 
 | 
        if (url === undefined) url = $layero.data('url'); 
 | 
        if (!url) return; 
 | 
        $layero.data('url', url); 
 | 
        admin.showLoading($layero); 
 | 
        admin.ajax({ 
 | 
            url: url, 
 | 
            dataType: 'html', 
 | 
            success: function (res) { 
 | 
                admin.removeLoading($layero, false); 
 | 
                if (typeof res !== 'string') res = JSON.stringify(res); 
 | 
                var tpl = $layero.data('tpl'); 
 | 
                // 模板解析 
 | 
                if (tpl === true || tpl === 'true') { 
 | 
                    var data = admin.getLayerData(index) || {}; 
 | 
                    data.layerIndex = index; 
 | 
                    // 模板里面有动态模板处理 
 | 
                    var $html = $('<div>' + res + '</div>'), tplAll = {}; 
 | 
                    $html.find('script,[tpl-ignore]').each(function (i) { 
 | 
                        var $this = $(this); 
 | 
                        tplAll['temp_' + i] = $this[0].outerHTML; 
 | 
                        $this.after('${temp_' + i + '}').remove(); 
 | 
                    }); 
 | 
                    res = admin.util.tpl($html.html(), data, setter.tplOpen, setter.tplClose); 
 | 
                    for (var f in tplAll) res = res.replace('${' + f + '}', tplAll[f]); 
 | 
                } 
 | 
                $layero.children('.layui-layer-content').html(res); 
 | 
                admin.renderTpl('#layui-layer' + index + ' [ew-tpl]'); 
 | 
                success && success($layero[0], index); 
 | 
            } 
 | 
        }); 
 | 
    }; 
 | 
  
 | 
    /** 封装layer.alert */ 
 | 
    admin.alert = function (content, options, yes) { 
 | 
        if (typeof options === 'function') { 
 | 
            yes = options; 
 | 
            options = {}; 
 | 
        } 
 | 
        if (options.skin === undefined) options.skin = 'layui-layer-admin'; 
 | 
        if (options.shade === undefined) options.shade = .1; 
 | 
        return layer.alert(content, options, yes); 
 | 
    }; 
 | 
  
 | 
    /** 封装layer.confirm */ 
 | 
    admin.confirm = function (content, options, yes, cancel) { 
 | 
        if (typeof options === 'function') { 
 | 
            cancel = yes; 
 | 
            yes = options; 
 | 
            options = {}; 
 | 
        } 
 | 
        if (options.skin === undefined) options.skin = 'layui-layer-admin'; 
 | 
        if (options.shade === undefined) options.shade = .1; 
 | 
        return layer.confirm(content, options, yes, cancel); 
 | 
    }; 
 | 
  
 | 
    /** 封装layer.prompt */ 
 | 
    admin.prompt = function (options, yes) { 
 | 
        if (typeof options === 'function') { 
 | 
            yes = options; 
 | 
            options = {}; 
 | 
        } 
 | 
        if (options.skin === undefined) options.skin = 'layui-layer-admin layui-layer-prompt'; 
 | 
        if (options.shade === undefined) options.shade = .1; 
 | 
        return layer.prompt(options, yes); 
 | 
    }; 
 | 
  
 | 
    /** 封装ajax请求,返回数据类型为json */ 
 | 
    admin.req = function (url, data, success, method, option) { 
 | 
        if (typeof data === 'function') { 
 | 
            option = method; 
 | 
            method = success; 
 | 
            success = data; 
 | 
            data = {}; 
 | 
        } 
 | 
        if (method !== undefined && typeof method !== 'string') { 
 | 
            option = method; 
 | 
            method = undefined; 
 | 
        } 
 | 
        if (!method) method = 'GET'; 
 | 
        if (typeof data === 'string') { 
 | 
            if (!option) option = {}; 
 | 
            if (!option.contentType) option.contentType = 'application/json;charset=UTF-8'; 
 | 
        } else if (setter.reqPutToPost) { 
 | 
            if ('put' === method.toLowerCase()) { 
 | 
                method = 'POST'; 
 | 
                data._method = 'PUT'; 
 | 
            } else if ('delete' === method.toLowerCase()) { 
 | 
                method = 'GET'; 
 | 
                data._method = 'DELETE'; 
 | 
            } 
 | 
        } 
 | 
        return admin.ajax($.extend({ 
 | 
            url: (setter.baseServer || '') + url, data: data, type: method, dataType: 'json', success: success 
 | 
        }, option)); 
 | 
    }; 
 | 
  
 | 
    /** 封装ajax请求 */ 
 | 
    admin.ajax = function (param) { 
 | 
        var oldParam = admin.util.deepClone(param); 
 | 
        if (!param.dataType) param.dataType = 'json'; 
 | 
        if (!param.headers) param.headers = {}; 
 | 
        // 统一设置header 
 | 
        var headers = setter.getAjaxHeaders(param.url); 
 | 
        if (headers) { 
 | 
            for (var i = 0; i < headers.length; i++) { 
 | 
                if (param.headers[headers[i].name] === undefined) param.headers[headers[i].name] = headers[i].value; 
 | 
            } 
 | 
        } 
 | 
        // success预处理 
 | 
        var success = param.success; 
 | 
        param.success = function (result, status, xhr) { 
 | 
            var before = setter.ajaxSuccessBefore(admin.parseJSON(result), param.url, { 
 | 
                param: oldParam, reload: function (p) { 
 | 
                    admin.ajax($.extend(true, oldParam, p)); 
 | 
                }, update: function (r) { 
 | 
                    result = r; 
 | 
                }, xhr: xhr 
 | 
            }); 
 | 
            if (before !== false) success && success(result, status, xhr); 
 | 
            else param.cancel && param.cancel(); 
 | 
        }; 
 | 
        param.error = function (xhr, status) { 
 | 
            param.success({code: xhr.status, msg: xhr.statusText}, status, xhr); 
 | 
        }; 
 | 
        // 解决缓存问题 
 | 
        if (layui.cache.version && (!setter.apiNoCache || param.dataType.toLowerCase() !== 'json')) { 
 | 
            if (param.url.indexOf('?') === -1) param.url += '?v='; 
 | 
            else param.url += '&v='; 
 | 
            if (layui.cache.version === true) param.url += new Date().getTime(); 
 | 
            else param.url += layui.cache.version; 
 | 
        } 
 | 
        return $.ajax(param); 
 | 
    }; 
 | 
  
 | 
    /** 解析json */ 
 | 
    admin.parseJSON = function (str) { 
 | 
        if (typeof str === 'string') { 
 | 
            try { 
 | 
                return JSON.parse(str); 
 | 
            } catch (e) { 
 | 
            } 
 | 
        } 
 | 
        return str; 
 | 
    }; 
 | 
  
 | 
    /** 显示加载动画 */ 
 | 
    admin.showLoading = function (elem, type, opacity, size) { 
 | 
        if (elem !== undefined && (typeof elem !== 'string') && !(elem instanceof $)) { 
 | 
            type = elem.type; 
 | 
            opacity = elem.opacity; 
 | 
            size = elem.size; 
 | 
            elem = elem.elem; 
 | 
        } 
 | 
        if (type === undefined) type = setter.defaultLoading || 1; 
 | 
        if (size === undefined) size = 'sm'; 
 | 
        if (elem === undefined) elem = 'body'; 
 | 
        var loader = [ 
 | 
            '<div class="ball-loader ' + size + '"><span></span><span></span><span></span><span></span></div>', 
 | 
            '<div class="rubik-loader ' + size + '"></div>', 
 | 
            '<div class="signal-loader ' + size + '"><span></span><span></span><span></span><span></span></div>', 
 | 
            '<div class="layui-loader ' + size + '"><i class="layui-icon layui-icon-loading layui-anim layui-anim-rotate layui-anim-loop"></i></div>' 
 | 
        ]; 
 | 
        $(elem).addClass('page-no-scroll');  // 禁用滚动条 
 | 
        $(elem).scrollTop(0); 
 | 
        var $loading = $(elem).children('.page-loading'); 
 | 
        if ($loading.length <= 0) { 
 | 
            $(elem).append('<div class="page-loading">' + loader[type - 1] + '</div>'); 
 | 
            $loading = $(elem).children('.page-loading'); 
 | 
        } 
 | 
        if (opacity !== undefined) $loading.css('background-color', 'rgba(255,255,255,' + opacity + ')'); 
 | 
        $loading.show(); 
 | 
    }; 
 | 
  
 | 
    /** 移除加载动画 */ 
 | 
    admin.removeLoading = function (elem, fade, del) { 
 | 
        if (elem === undefined) elem = 'body'; 
 | 
        if (fade === undefined) fade = true; 
 | 
        var $loading = $(elem).children('.page-loading'); 
 | 
        if (del) $loading.remove(); 
 | 
        else if (fade) $loading.fadeOut('fast'); 
 | 
        else $loading.hide(); 
 | 
        $(elem).removeClass('page-no-scroll'); 
 | 
    }; 
 | 
  
 | 
    /** 缓存临时数据 */ 
 | 
    admin.putTempData = function (key, value, local) { 
 | 
        var tableName = local ? setter.tableName : setter.tableName + '_tempData'; 
 | 
        if (value === undefined || value === null) { 
 | 
            if (local) layui.data(tableName, {key: key, remove: true}); 
 | 
            else layui.sessionData(tableName, {key: key, remove: true}); 
 | 
        } else { 
 | 
            if (local) layui.data(tableName, {key: key, value: value}); 
 | 
            else layui.sessionData(tableName, {key: key, value: value}); 
 | 
        } 
 | 
    }; 
 | 
  
 | 
    /** 获取缓存临时数据 */ 
 | 
    admin.getTempData = function (key, local) { 
 | 
        if (typeof key === 'boolean') { 
 | 
            local = key; 
 | 
            key = undefined; 
 | 
        } 
 | 
        var tableName = local ? setter.tableName : setter.tableName + '_tempData'; 
 | 
        var tempData = local ? layui.data(tableName) : layui.sessionData(tableName); 
 | 
        if (!key) return tempData; 
 | 
        return tempData ? tempData[key] : undefined; 
 | 
    }; 
 | 
  
 | 
    /** 滑动选项卡 */ 
 | 
    admin.rollPage = function (d) { 
 | 
        if (window !== top && !admin.isTop() && top.layui && top.layui.admin) return top.layui.admin.rollPage(d); 
 | 
        var $tabTitle = $(tabDOM + '>.layui-tab-title'); 
 | 
        var left = $tabTitle.scrollLeft(); 
 | 
        if ('left' === d) { 
 | 
            $tabTitle.animate({'scrollLeft': left - 120}, 100); 
 | 
        } else if ('auto' === d) { 
 | 
            var autoLeft = 0; 
 | 
            $tabTitle.children("li").each(function () { 
 | 
                if ($(this).hasClass('layui-this')) return false; 
 | 
                else autoLeft += $(this).outerWidth(); 
 | 
            }); 
 | 
            $tabTitle.animate({'scrollLeft': autoLeft - 120}, 100); 
 | 
        } else { 
 | 
            $tabTitle.animate({'scrollLeft': left + 120}, 100); 
 | 
        } 
 | 
    }; 
 | 
  
 | 
    /** 刷新当前选项卡 */ 
 | 
    admin.refresh = function (url, isIndex) { 
 | 
        if (window !== top && !admin.isTop() && top.layui && top.layui.admin) return top.layui.admin.refresh(url); 
 | 
        var $iframe; 
 | 
        if (!url) { 
 | 
            $iframe = $(tabDOM + '>.layui-tab-content>.layui-tab-item.layui-show>.admin-iframe'); 
 | 
            if (!$iframe || $iframe.length <= 0) $iframe = $(bodyDOM + '>div>.admin-iframe'); 
 | 
        } else { 
 | 
            $iframe = $(tabDOM + '>.layui-tab-content>.layui-tab-item>.admin-iframe[lay-id="' + url + '"]'); 
 | 
            if (!$iframe || $iframe.length <= 0) $iframe = $(bodyDOM + '>.admin-iframe'); 
 | 
        } 
 | 
        if (!$iframe || !$iframe[0]) return console.warn(url + ' is not found'); 
 | 
        try { 
 | 
            if (isIndex && $iframe[0].contentWindow.refreshTab) { 
 | 
                $iframe[0].contentWindow.refreshTab(); 
 | 
            } else { 
 | 
                admin.showLoading({elem: $iframe.parent(), size: ''}); 
 | 
                $iframe[0].contentWindow.location.reload(); 
 | 
            } 
 | 
        } catch (e) { 
 | 
            console.warn(e); 
 | 
            $iframe.attr('src', $iframe.attr('src')); 
 | 
        } 
 | 
    }; 
 | 
  
 | 
    /** 关闭当前选项卡 */ 
 | 
    admin.closeThisTabs = function (url) { 
 | 
        if (window !== top && !admin.isTop() && top.layui && top.layui.admin) return top.layui.admin.closeThisTabs(url); 
 | 
        admin.closeTabOperNav(); 
 | 
        var $title = $(tabDOM + '>.layui-tab-title'); 
 | 
        if (!url) { 
 | 
            if ($title.find('li').first().hasClass('layui-this')) return layer.msg('主页不能关闭', {icon: 2}); 
 | 
            $title.find('li.layui-this').find('.layui-tab-close').trigger('click'); 
 | 
        } else { 
 | 
            if (url === $title.find('li').first().attr('lay-id')) return layer.msg('主页不能关闭', {icon: 2}); 
 | 
            $title.find('li[lay-id="' + url + '"]').find('.layui-tab-close').trigger('click'); 
 | 
        } 
 | 
    }; 
 | 
  
 | 
    /** 关闭其他选项卡 */ 
 | 
    admin.closeOtherTabs = function (url) { 
 | 
        if (window !== top && !admin.isTop() && top.layui && top.layui.admin) return top.layui.admin.closeOtherTabs(url); 
 | 
        if (!url) { 
 | 
            $(tabDOM + '>.layui-tab-title li:gt(0):not(.layui-this)').find('.layui-tab-close').trigger('click'); 
 | 
        } else { 
 | 
            $(tabDOM + '>.layui-tab-title li:gt(0)').each(function () { 
 | 
                if (url !== $(this).attr('lay-id')) $(this).find('.layui-tab-close').trigger('click'); 
 | 
            }); 
 | 
        } 
 | 
        admin.closeTabOperNav(); 
 | 
    }; 
 | 
  
 | 
    /** 关闭所有选项卡 */ 
 | 
    admin.closeAllTabs = function () { 
 | 
        if (window !== top && !admin.isTop() && top.layui && top.layui.admin) return top.layui.admin.closeAllTabs(); 
 | 
        $(tabDOM + '>.layui-tab-title li:gt(0)').find('.layui-tab-close').trigger('click'); 
 | 
        $(tabDOM + '>.layui-tab-title li:eq(0)').trigger('click'); 
 | 
        admin.closeTabOperNav(); 
 | 
    }; 
 | 
  
 | 
    /** 关闭选项卡操作菜单 */ 
 | 
    admin.closeTabOperNav = function () { 
 | 
        if (window !== top && !admin.isTop() && top.layui && top.layui.admin) return top.layui.admin.closeTabOperNav(); 
 | 
        $('.layui-icon-down .layui-nav .layui-nav-child').removeClass('layui-show'); 
 | 
    }; 
 | 
  
 | 
    /** 设置主题 */ 
 | 
    admin.changeTheme = function (theme, win, noCache, noChild) { 
 | 
        if (!noCache) admin.putSetting('defaultTheme', theme); 
 | 
        if (!win) win = top; 
 | 
        admin.removeTheme(win); 
 | 
        if (theme) { 
 | 
            try { 
 | 
                var $body = win.layui.jquery('body'); 
 | 
                $body.addClass(theme); 
 | 
                $body.data('theme', theme); 
 | 
            } catch (e) { 
 | 
            } 
 | 
        } 
 | 
        if (noChild) return; 
 | 
        var ifs = win.frames; 
 | 
        for (var i = 0; i < ifs.length; i++) admin.changeTheme(theme, ifs[i], true, false); 
 | 
    }; 
 | 
  
 | 
    /** 移除主题 */ 
 | 
    admin.removeTheme = function (w) { 
 | 
        if (!w) w = window; 
 | 
        try { 
 | 
            var $body = w.layui.jquery('body'); 
 | 
            var theme = $body.data('theme'); 
 | 
            if (theme) $body.removeClass(theme); 
 | 
            $body.removeData('theme'); 
 | 
        } catch (e) { 
 | 
        } 
 | 
    }; 
 | 
  
 | 
    /** 关闭当前iframe层弹窗 */ 
 | 
    admin.closeThisDialog = function () { 
 | 
        return admin.closeDialog(); 
 | 
    }; 
 | 
  
 | 
    /** 关闭elem所在的页面层弹窗 */ 
 | 
    admin.closeDialog = function (elem) { 
 | 
        if (elem) layer.close(admin.getLayerIndex(elem)); 
 | 
        else parent.layer.close(parent.layer.getFrameIndex(window.name)); 
 | 
    }; 
 | 
  
 | 
    /** 获取页面层弹窗的index */ 
 | 
    admin.getLayerIndex = function (elem) { 
 | 
        if (!elem) return parent.layer.getFrameIndex(window.name); 
 | 
        var id = $(elem).parents('.layui-layer').first().attr('id'); 
 | 
        if (id && id.length >= 11) return id.substring(11); 
 | 
    }; 
 | 
  
 | 
    /** 让当前的iframe弹层自适应高度 */ 
 | 
    admin.iframeAuto = function () { 
 | 
        return parent.layer.iframeAuto(parent.layer.getFrameIndex(window.name)); 
 | 
    }; 
 | 
  
 | 
    /** 获取浏览器高度 */ 
 | 
    admin.getPageHeight = function () { 
 | 
        return document.documentElement.clientHeight || document.body.clientHeight; 
 | 
    }; 
 | 
  
 | 
    /** 获取浏览器宽度 */ 
 | 
    admin.getPageWidth = function () { 
 | 
        return document.documentElement.clientWidth || document.body.clientWidth; 
 | 
    }; 
 | 
  
 | 
    /** 绑定表单弹窗 */ 
 | 
    admin.modelForm = function (layero, btnFilter, formFilter) { 
 | 
        var $layero = $(layero); 
 | 
        $layero.addClass('layui-form'); 
 | 
        if (formFilter) $layero.attr('lay-filter', formFilter); 
 | 
        // 确定按钮绑定submit 
 | 
        var $btnSubmit = $layero.find('.layui-layer-btn .layui-layer-btn0'); 
 | 
        $btnSubmit.attr('lay-submit', ''); 
 | 
        $btnSubmit.attr('lay-filter', btnFilter); 
 | 
    }; 
 | 
  
 | 
    /** loading按钮 */ 
 | 
    admin.btnLoading = function (elem, text, loading) { 
 | 
        if (text !== undefined && (typeof text === 'boolean')) { 
 | 
            loading = text; 
 | 
            text = undefined; 
 | 
        } 
 | 
        if (text === undefined) text = ' 加载中'; 
 | 
        if (loading === undefined) loading = true; 
 | 
        var $elem = $(elem); 
 | 
        if (loading) { 
 | 
            $elem.addClass('ew-btn-loading'); 
 | 
            $elem.prepend('<span class="ew-btn-loading-text"><i class="layui-icon layui-icon-loading layui-anim layui-anim-rotate layui-anim-loop"></i>' + text + '</span>'); 
 | 
            $elem.attr('disabled', 'disabled').prop('disabled', true); 
 | 
        } else { 
 | 
            $elem.removeClass('ew-btn-loading'); 
 | 
            $elem.children('.ew-btn-loading-text').remove(); 
 | 
            $elem.removeProp('disabled').removeAttr('disabled'); 
 | 
        } 
 | 
    }; 
 | 
  
 | 
    /** 鼠标移入侧边栏自动展开 */ 
 | 
    admin.openSideAutoExpand = function () { 
 | 
        var $side = $('.layui-layout-admin>.layui-side'); 
 | 
        $side.off('mouseenter.openSideAutoExpand').on("mouseenter.openSideAutoExpand", function () { 
 | 
            if (!$(this).parent().hasClass('admin-nav-mini')) return; 
 | 
            admin.flexible(true); 
 | 
            $(this).addClass('side-mini-hover'); 
 | 
        }); 
 | 
        $side.off('mouseleave.openSideAutoExpand').on("mouseleave.openSideAutoExpand", function () { 
 | 
            if (!$(this).hasClass('side-mini-hover')) return; 
 | 
            admin.flexible(false); 
 | 
            $(this).removeClass('side-mini-hover'); 
 | 
        }); 
 | 
    }; 
 | 
  
 | 
    /** 表格单元格超出内容自动展开 */ 
 | 
    admin.openCellAutoExpand = function () { 
 | 
        var $body = $('body'); 
 | 
        $body.off('mouseenter.openCellAutoExpand').on('mouseenter.openCellAutoExpand', '.layui-table-view td', function () { 
 | 
            $(this).find('.layui-table-grid-down').trigger('click'); 
 | 
        }); 
 | 
        $body.off('mouseleave.openCellAutoExpand').on('mouseleave.openCellAutoExpand', '.layui-table-tips>.layui-layer-content', function () { 
 | 
            $('.layui-table-tips-c').trigger('click'); 
 | 
        }); 
 | 
    }; 
 | 
  
 | 
    /** open事件解析layer参数 */ 
 | 
    admin.parseLayerOption = function (option) { 
 | 
        // 数组类型进行转换 
 | 
        for (var f in option) { 
 | 
            if (!option.hasOwnProperty(f)) continue; 
 | 
            if (option[f] && option[f].toString().indexOf(',') !== -1) option[f] = option[f].toString().split(','); 
 | 
        } 
 | 
        // function类型参数转换 
 | 
        var fs = {'success': 'layero,index', 'cancel': 'index,layero', 'end': '', 'full': '', 'min': '', 'restore': ''}; 
 | 
        for (var k in fs) { 
 | 
            if (!fs.hasOwnProperty(k) || !option[k]) continue; 
 | 
            try { 
 | 
                if (/^[a-zA-Z_]+[a-zA-Z0-9_]+$/.test(option[k])) option[k] += '()'; 
 | 
                option[k] = new Function(fs[k], option[k]); 
 | 
            } catch (e) { 
 | 
                option[k] = undefined; 
 | 
            } 
 | 
        } 
 | 
        // content取内容 
 | 
        if (option.content && (typeof option.content === 'string') && option.content.indexOf('#') === 0) { 
 | 
            if ($(option.content).is('script')) option.content = $(option.content).html(); 
 | 
            else option.content = $(option.content); 
 | 
        } 
 | 
        if (option.type === undefined && option.url === undefined) option.type = 2;  // 默认为iframe类型 
 | 
        return option; 
 | 
    }; 
 | 
  
 | 
    /** 字符串形式的parent.parent转window对象 */ 
 | 
    admin.strToWin = function (str) { 
 | 
        var win = window; 
 | 
        if (!str) return win; 
 | 
        var ws = str.split('.'); 
 | 
        for (var i = 0; i < ws.length; i++) win = win[ws[i]]; 
 | 
        return win; 
 | 
    }; 
 | 
  
 | 
    /** 解决折叠侧边栏表格滚动条闪现 */ 
 | 
    admin.hideTableScrollBar = function (win) { 
 | 
        if (admin.getPageWidth() <= 768) return; 
 | 
        if (!win) { 
 | 
            var $iframe = $(tabDOM + '>.layui-tab-content>.layui-tab-item.layui-show>.admin-iframe'); 
 | 
            if ($iframe.length <= 0) $iframe = $(bodyDOM + '>div>.admin-iframe'); 
 | 
            if ($iframe.length > 0) win = $iframe[0].contentWindow; 
 | 
        } 
 | 
        try {  // 可能会跨域 
 | 
            if (window.hsbTimer) clearTimeout(window.hsbTimer); 
 | 
            win.layui.jquery('.layui-table-body.layui-table-main').addClass('no-scrollbar'); 
 | 
            window.hsbTimer = setTimeout(function () { 
 | 
                win.layui.jquery('.layui-table-body.layui-table-main').removeClass('no-scrollbar'); 
 | 
            }, 800); 
 | 
        } catch (e) { 
 | 
        } 
 | 
    }; 
 | 
  
 | 
    /** 判断是否是主框架 */ 
 | 
    admin.isTop = function () { 
 | 
        return $(bodyDOM).length > 0; 
 | 
    }; 
 | 
  
 | 
    /** admin提供的事件 */ 
 | 
    admin.events = { 
 | 
        /* 折叠侧导航 */ 
 | 
        flexible: function () { 
 | 
            admin.strToWin($(this).data('window')).layui.admin.flexible(); 
 | 
        }, 
 | 
        /* 刷新主体部分 */ 
 | 
        refresh: function () { 
 | 
            admin.strToWin($(this).data('window')).layui.admin.refresh(); 
 | 
        }, 
 | 
        /* 后退 */ 
 | 
        back: function () { 
 | 
            admin.strToWin($(this).data('window')).history.back(); 
 | 
        }, 
 | 
        /* 设置主题 */ 
 | 
        theme: function () { 
 | 
            var option = admin.util.deepClone($(this).data()); 
 | 
            admin.strToWin(option.window).layui.admin.popupRight($.extend({ 
 | 
                id: 'layer-theme', url: option.url || 'tpl/tpl-theme.html' 
 | 
            }, admin.parseLayerOption(option))); 
 | 
        }, 
 | 
        /* 打开便签 */ 
 | 
        note: function () { 
 | 
            var option = admin.util.deepClone($(this).data()); 
 | 
            admin.strToWin(option.window).layui.admin.popupRight($.extend({ 
 | 
                id: 'layer-note', url: option.url || 'tpl/tpl-note.html' 
 | 
            }, admin.parseLayerOption(option))); 
 | 
        }, 
 | 
        /* 打开消息 */ 
 | 
        message: function () { 
 | 
            var option = admin.util.deepClone($(this).data()); 
 | 
            admin.strToWin(option.window).layui.admin.popupRight($.extend({ 
 | 
                id: 'layer-notice', url: option.url || 'tpl/tpl-message.html' 
 | 
            }, admin.parseLayerOption(option))); 
 | 
        }, 
 | 
        /* 打开修改密码弹窗 */ 
 | 
        psw: function () { 
 | 
            var option = admin.util.deepClone($(this).data()); 
 | 
            admin.strToWin(option.window).layui.admin.open($.extend({ 
 | 
                id: 'layer-psw', title: '修改密码', shade: 0, url: option.url || 'tpl/tpl-password.html' 
 | 
            }, admin.parseLayerOption(option))); 
 | 
        }, 
 | 
        /* 退出登录 */ 
 | 
        logout: function () { 
 | 
            var option = admin.util.deepClone($(this).data()); 
 | 
            admin.unlockScreen(); 
 | 
  
 | 
            function doLogout() { 
 | 
                if (option.ajax) { 
 | 
                    var loadIndex = layer.load(2); 
 | 
                    admin.req(option.ajax, function (res) { 
 | 
                        layer.close(loadIndex); 
 | 
                        if (option.parseData) { 
 | 
                            try { 
 | 
                                var parseData = new Function('res', option.parseData); 
 | 
                                res = parseData(res); 
 | 
                            } catch (e) { 
 | 
                                console.error(e); 
 | 
                            } 
 | 
                        } 
 | 
                        if (res.code == (option.code || 0)) { 
 | 
                            setter.removeToken && setter.removeToken(); 
 | 
                            location.replace(option.url || '/'); 
 | 
                        } else { 
 | 
                            layer.msg(res.msg, {icon: 2}); 
 | 
                        } 
 | 
                    }, option.method || 'delete'); 
 | 
                } else { 
 | 
                    setter.removeToken && setter.removeToken(); 
 | 
                    location.replace(option.url || '/'); 
 | 
                } 
 | 
            } 
 | 
  
 | 
            if (false === option.confirm || 'false' === option.confirm) return doLogout(); 
 | 
            admin.strToWin(option.window).layui.layer.confirm(option.content || '确定要退出登录吗?', $.extend({ 
 | 
                title: '温馨提示', skin: 'layui-layer-admin', shade: .1 
 | 
            }, admin.parseLayerOption(option)), function () { 
 | 
                doLogout(); 
 | 
            }); 
 | 
        }, 
 | 
        /* 打开弹窗 */ 
 | 
        open: function () { 
 | 
            var option = admin.util.deepClone($(this).data()); 
 | 
            admin.strToWin(option.window).layui.admin.open(admin.parseLayerOption(option)); 
 | 
        }, 
 | 
        /* 激活码 */ 
 | 
        license: function () { 
 | 
            var option = admin.util.deepClone($(this).data()); 
 | 
            admin.strToWin(option.window).layui.admin.open({ 
 | 
                type: 1, 
 | 
                title: '获取授权', 
 | 
                offset: '150px', 
 | 
                area: ['360px'], 
 | 
                shade: 0.1, 
 | 
                shadeClose: true, 
 | 
                content: $("#license-box").html(), 
 | 
                success: function(layero, index){ 
 | 
                    layer.iframeAuto(index); 
 | 
                } 
 | 
            }); 
 | 
        }, 
 | 
        /* 打开右侧弹窗 */ 
 | 
        popupRight: function () { 
 | 
            var option = admin.util.deepClone($(this).data()); 
 | 
            admin.strToWin(option.window).layui.admin.popupRight(admin.parseLayerOption(option)); 
 | 
        }, 
 | 
        /* 全屏 */ 
 | 
        fullScreen: function () { 
 | 
            var ac = 'layui-icon-screen-full', ic = 'layui-icon-screen-restore'; 
 | 
            var $ti = $(this).find('i'); 
 | 
            var isFullscreen = document.fullscreenElement || document.msFullscreenElement || document.mozFullScreenElement || document.webkitFullscreenElement || false; 
 | 
            if (isFullscreen) { 
 | 
                var efs = document.exitFullscreen || document.webkitExitFullscreen || document.mozCancelFullScreen || document.msExitFullscreen; 
 | 
                if (efs) { 
 | 
                    efs.call(document); 
 | 
                } else if (window.ActiveXObject) { 
 | 
                    var ws = new ActiveXObject('WScript.Shell'); 
 | 
                    ws && ws.SendKeys('{F11}'); 
 | 
                } 
 | 
                $ti.addClass(ac).removeClass(ic); 
 | 
            } else { 
 | 
                var el = document.documentElement; 
 | 
                var rfs = el.requestFullscreen || el.webkitRequestFullscreen || el.mozRequestFullScreen || el.msRequestFullscreen; 
 | 
                if (rfs) { 
 | 
                    rfs.call(el); 
 | 
                } else if (window.ActiveXObject) { 
 | 
                    var wss = new ActiveXObject('WScript.Shell'); 
 | 
                    wss && wss.SendKeys('{F11}'); 
 | 
                } 
 | 
                $ti.addClass(ic).removeClass(ac); 
 | 
            } 
 | 
        }, 
 | 
        /* 左滑动tab */ 
 | 
        leftPage: function () { 
 | 
            admin.strToWin($(this).data('window')).layui.admin.rollPage('left'); 
 | 
        }, 
 | 
        /* 右滑动tab */ 
 | 
        rightPage: function () { 
 | 
            admin.strToWin($(this).data('window')).layui.admin.rollPage(); 
 | 
        }, 
 | 
        /* 关闭当前选项卡 */ 
 | 
        closeThisTabs: function () { 
 | 
            var url = $(this).data('url'); 
 | 
            admin.strToWin($(this).data('window')).layui.admin.closeThisTabs(url); 
 | 
        }, 
 | 
        /* 关闭其他选项卡 */ 
 | 
        closeOtherTabs: function () { 
 | 
            admin.strToWin($(this).data('window')).layui.admin.closeOtherTabs(); 
 | 
        }, 
 | 
        /* 关闭所有选项卡 */ 
 | 
        closeAllTabs: function () { 
 | 
            admin.strToWin($(this).data('window')).layui.admin.closeAllTabs(); 
 | 
        }, 
 | 
        /* 关闭当前弹窗(智能) */ 
 | 
        closeDialog: function () { 
 | 
            if ($(this).parents('.layui-layer').length > 0) admin.closeDialog(this); 
 | 
            else admin.closeDialog(); 
 | 
        }, 
 | 
        /* 关闭当前iframe弹窗 */ 
 | 
        closeIframeDialog: function () { 
 | 
            admin.closeDialog(); 
 | 
        }, 
 | 
        /* 关闭当前页面层弹窗 */ 
 | 
        closePageDialog: function () { 
 | 
            admin.closeDialog(this); 
 | 
        }, 
 | 
        /* 锁屏 */ 
 | 
        lockScreen: function () { 
 | 
            admin.strToWin($(this).data('window')).layui.admin.lockScreen($(this).data('url')); 
 | 
        } 
 | 
    }; 
 | 
  
 | 
    /** 选择位置 */ 
 | 
    admin.chooseLocation = function (param) { 
 | 
        var dialogTitle = param.title;  // 弹窗标题 
 | 
        var onSelect = param.onSelect;  // 选择回调 
 | 
        var needCity = param.needCity;  // 是否返回行政区 
 | 
        var mapCenter = param.center;  // 地图中心 
 | 
        var defaultZoom = param.defaultZoom;  // 地图默认缩放级别 
 | 
        var pointZoom = param.pointZoom;  // 选中时地图缩放级别 
 | 
        var searchKeywords = param.keywords;  // poi检索关键字 
 | 
        var searchPageSize = param.pageSize;  // poi检索最大数量 
 | 
        var mapJsUrl = param.mapJsUrl;  // 高德地图js的url 
 | 
        if (dialogTitle === undefined) dialogTitle = '选择位置'; 
 | 
        if (defaultZoom === undefined) defaultZoom = 11; 
 | 
        if (pointZoom === undefined) pointZoom = 17; 
 | 
        if (searchKeywords === undefined) searchKeywords = ''; 
 | 
        if (searchPageSize === undefined) searchPageSize = 30; 
 | 
        if (mapJsUrl === undefined) mapJsUrl = 'https://webapi.amap.com/maps?v=1.4.14&key=006d995d433058322319fa797f2876f5'; 
 | 
        var isSelMove = false, selLocation; 
 | 
        // 搜索附近 
 | 
        var searchNearBy = function (lat, lng) { 
 | 
            AMap.service(['AMap.PlaceSearch'], function () { 
 | 
                var placeSearch = new AMap.PlaceSearch({ 
 | 
                    type: '', pageSize: searchPageSize, pageIndex: 1 
 | 
                }); 
 | 
                var cpoint = [lng, lat]; 
 | 
                placeSearch.searchNearBy(searchKeywords, cpoint, 1000, function (status, result) { 
 | 
                    if (status === 'complete') { 
 | 
                        var pois = result.poiList.pois; 
 | 
                        var htmlList = ''; 
 | 
                        for (var i = 0; i < pois.length; i++) { 
 | 
                            var poiItem = pois[i]; 
 | 
                            if (poiItem.location !== undefined) { 
 | 
                                htmlList += '<div data-lng="' + poiItem.location.lng + '" data-lat="' + poiItem.location.lat + '" class="ew-map-select-search-list-item">'; 
 | 
                                htmlList += '     <div class="ew-map-select-search-list-item-title">' + poiItem.name + '</div>'; 
 | 
                                htmlList += '     <div class="ew-map-select-search-list-item-address">' + poiItem.address + '</div>'; 
 | 
                                htmlList += '     <div class="ew-map-select-search-list-item-icon-ok layui-hide"><i class="layui-icon layui-icon-ok-circle"></i></div>'; 
 | 
                                htmlList += '</div>'; 
 | 
                            } 
 | 
                        } 
 | 
                        $('#ew-map-select-pois').html(htmlList); 
 | 
                    } 
 | 
                }); 
 | 
            }); 
 | 
        }; 
 | 
        // 渲染地图 
 | 
        var renderMap = function () { 
 | 
            var mapOption = { 
 | 
                resizeEnable: true, // 监控地图容器尺寸变化 
 | 
                zoom: defaultZoom  // 初缩放级别 
 | 
            }; 
 | 
            mapCenter && (mapOption.center = mapCenter); 
 | 
            var map = new AMap.Map('ew-map-select-map', mapOption); 
 | 
            // 地图加载完成 
 | 
            map.on('complete', function () { 
 | 
                var center = map.getCenter(); 
 | 
                searchNearBy(center.lat, center.lng); 
 | 
            }); 
 | 
            // 地图移动结束事件 
 | 
            map.on('moveend', function () { 
 | 
                if (isSelMove) { 
 | 
                    isSelMove = false; 
 | 
                } else { 
 | 
                    $('#ew-map-select-tips').addClass('layui-hide'); 
 | 
                    $('#ew-map-select-center-img').removeClass('bounceInDown'); 
 | 
                    setTimeout(function () { 
 | 
                        $('#ew-map-select-center-img').addClass('bounceInDown'); 
 | 
                    }); 
 | 
                    var center = map.getCenter(); 
 | 
                    searchNearBy(center.lat, center.lng); 
 | 
                } 
 | 
            }); 
 | 
            // poi列表点击事件 
 | 
            $('#ew-map-select-pois').off('click').on('click', '.ew-map-select-search-list-item', function () { 
 | 
                $('#ew-map-select-tips').addClass('layui-hide'); 
 | 
                $('#ew-map-select-pois .ew-map-select-search-list-item-icon-ok').addClass('layui-hide'); 
 | 
                $(this).find('.ew-map-select-search-list-item-icon-ok').removeClass('layui-hide'); 
 | 
                $('#ew-map-select-center-img').removeClass('bounceInDown'); 
 | 
                setTimeout(function () { 
 | 
                    $('#ew-map-select-center-img').addClass('bounceInDown'); 
 | 
                }); 
 | 
                var lng = $(this).data('lng'); 
 | 
                var lat = $(this).data('lat'); 
 | 
                var name = $(this).find('.ew-map-select-search-list-item-title').text(); 
 | 
                var address = $(this).find('.ew-map-select-search-list-item-address').text(); 
 | 
                selLocation = {name: name, address: address, lat: lat, lng: lng}; 
 | 
                isSelMove = true; 
 | 
                map.setZoomAndCenter(pointZoom, [lng, lat]); 
 | 
            }); 
 | 
            // 确定按钮点击事件 
 | 
            $('#ew-map-select-btn-ok').click(function () { 
 | 
                if (selLocation === undefined) { 
 | 
                    layer.msg('请点击位置列表选择', {icon: 2, anim: 6}); 
 | 
                } else if (onSelect) { 
 | 
                    if (needCity) { 
 | 
                        var loadIndex = layer.load(2); 
 | 
                        map.setCenter([selLocation.lng, selLocation.lat]); 
 | 
                        map.getCity(function (result) { 
 | 
                            layer.close(loadIndex); 
 | 
                            selLocation.city = result; 
 | 
                            admin.closeDialog('#ew-map-select-btn-ok'); 
 | 
                            onSelect(selLocation); 
 | 
                        }); 
 | 
                    } else { 
 | 
                        admin.closeDialog('#ew-map-select-btn-ok'); 
 | 
                        onSelect(selLocation); 
 | 
                    } 
 | 
                } else { 
 | 
                    admin.closeDialog('#ew-map-select-btn-ok'); 
 | 
                } 
 | 
            }); 
 | 
            // 搜索提示 
 | 
            var $inputSearch = $('#ew-map-select-input-search'); 
 | 
            $inputSearch.off('input').on('input', function () { 
 | 
                var keywords = $(this).val(); 
 | 
                var $selectTips = $('#ew-map-select-tips'); 
 | 
                if (!keywords) { 
 | 
                    $selectTips.html(''); 
 | 
                    $selectTips.addClass('layui-hide'); 
 | 
                } 
 | 
                AMap.plugin('AMap.Autocomplete', function () { 
 | 
                    var autoComplete = new AMap.Autocomplete({city: '全国'}); 
 | 
                    autoComplete.search(keywords, function (status, result) { 
 | 
                        if (result.tips) { 
 | 
                            var tips = result.tips; 
 | 
                            var htmlList = ''; 
 | 
                            for (var i = 0; i < tips.length; i++) { 
 | 
                                var tipItem = tips[i]; 
 | 
                                if (tipItem.location !== undefined) { 
 | 
                                    htmlList += '<div data-lng="' + tipItem.location.lng + '" data-lat="' + tipItem.location.lat + '" class="ew-map-select-search-list-item">'; 
 | 
                                    htmlList += '     <div class="ew-map-select-search-list-item-icon-search"><i class="layui-icon layui-icon-search"></i></div>'; 
 | 
                                    htmlList += '     <div class="ew-map-select-search-list-item-title">' + tipItem.name + '</div>'; 
 | 
                                    htmlList += '     <div class="ew-map-select-search-list-item-address">' + tipItem.address + '</div>'; 
 | 
                                    htmlList += '</div>'; 
 | 
                                } 
 | 
                            } 
 | 
                            $selectTips.html(htmlList); 
 | 
                            if (tips.length === 0) $('#ew-map-select-tips').addClass('layui-hide'); 
 | 
                            else $('#ew-map-select-tips').removeClass('layui-hide'); 
 | 
                        } else { 
 | 
                            $selectTips.html(''); 
 | 
                            $selectTips.addClass('layui-hide'); 
 | 
                        } 
 | 
                    }); 
 | 
                }); 
 | 
            }); 
 | 
            $inputSearch.off('blur').on('blur', function () { 
 | 
                var keywords = $(this).val(); 
 | 
                var $selectTips = $('#ew-map-select-tips'); 
 | 
                if (!keywords) { 
 | 
                    $selectTips.html(''); 
 | 
                    $selectTips.addClass('layui-hide'); 
 | 
                } 
 | 
            }); 
 | 
            $inputSearch.off('focus').on('focus', function () { 
 | 
                var keywords = $(this).val(); 
 | 
                if (keywords) $('#ew-map-select-tips').removeClass('layui-hide'); 
 | 
            }); 
 | 
            // tips列表点击事件 
 | 
            $('#ew-map-select-tips').off('click').on('click', '.ew-map-select-search-list-item', function () { 
 | 
                $('#ew-map-select-tips').addClass('layui-hide'); 
 | 
                var lng = $(this).data('lng'); 
 | 
                var lat = $(this).data('lat'); 
 | 
                selLocation = undefined; 
 | 
                map.setZoomAndCenter(pointZoom, [lng, lat]); 
 | 
            }); 
 | 
        }; 
 | 
        // 显示弹窗 
 | 
        var htmlStr = [ 
 | 
            '<div class="ew-map-select-tool" style="position: relative;">', 
 | 
            '     搜索:<input id="ew-map-select-input-search" class="layui-input icon-search inline-block" style="width: 190px;" placeholder="输入关键字搜索" autocomplete="off" />', 
 | 
            '     <button id="ew-map-select-btn-ok" class="layui-btn icon-btn pull-right" type="button"><i class="layui-icon"></i>确定</button>', 
 | 
            '     <div id="ew-map-select-tips" class="ew-map-select-search-list layui-hide">', 
 | 
            '     </div>', 
 | 
            '</div>', 
 | 
            '<div class="layui-row ew-map-select">', 
 | 
            '     <div class="layui-col-sm7 ew-map-select-map-group" style="position: relative;">', 
 | 
            '          <div id="ew-map-select-map"></div>', 
 | 
            '          <i id="ew-map-select-center-img2" class="layui-icon layui-icon-add-1"></i>', 
 | 
            '          <img id="ew-map-select-center-img" src="https://3gimg.qq.com/lightmap/components/locationPicker2/image/marker.png" alt=""/>', 
 | 
            '     </div>', 
 | 
            '     <div id="ew-map-select-pois" class="layui-col-sm5 ew-map-select-search-list">', 
 | 
            '     </div>', 
 | 
            '</div>'].join(''); 
 | 
        admin.open({ 
 | 
            id: 'ew-map-select', type: 1, title: dialogTitle, area: '750px', content: htmlStr, 
 | 
            success: function (layero, dIndex) { 
 | 
                var $content = $(layero).children('.layui-layer-content'); 
 | 
                $content.css('overflow', 'visible'); 
 | 
                admin.showLoading($content); 
 | 
                if (undefined === window.AMap) { 
 | 
                    $.getScript(mapJsUrl, function () { 
 | 
                        renderMap(); 
 | 
                        admin.removeLoading($content); 
 | 
                    }); 
 | 
                } else { 
 | 
                    renderMap(); 
 | 
                    admin.removeLoading($content); 
 | 
                } 
 | 
            } 
 | 
        }); 
 | 
    }; 
 | 
  
 | 
    /** 裁剪图片 */ 
 | 
    admin.cropImg = function (param) { 
 | 
        var uploadedImageType = 'image/jpeg';  // 当前图片的类型 
 | 
        var aspectRatio = param.aspectRatio;  // 裁剪比例 
 | 
        var imgSrc = param.imgSrc;  // 裁剪图片 
 | 
        var imgType = param.imgType;  // 图片类型 
 | 
        var onCrop = param.onCrop;  // 裁剪完成回调 
 | 
        var limitSize = param.limitSize;  // 限制选择的图片大小 
 | 
        var acceptMime = param.acceptMime;  // 限制选择的图片类型 
 | 
        var imgExts = param.exts;  // 限制选择的图片类型 
 | 
        var dialogTitle = param.title;  // 弹窗的标题 
 | 
        if (aspectRatio === undefined) aspectRatio = 1; 
 | 
        if (dialogTitle === undefined) dialogTitle = '裁剪图片'; 
 | 
        if (imgType) uploadedImageType = imgType; 
 | 
        layui.use(['Cropper', 'upload'], function () { 
 | 
            var Cropper = layui.Cropper, upload = layui.upload; 
 | 
  
 | 
            // 渲染组件 
 | 
            function renderElem() { 
 | 
                var imgCropper, $cropImg = $('#ew-crop-img'); 
 | 
                // 上传文件按钮绑定事件 
 | 
                var uploadOptions = { 
 | 
                    elem: '#ew-crop-img-upload', auto: false, drag: false, 
 | 
                    choose: function (obj) { 
 | 
                        obj.preview(function (index, file, result) { 
 | 
                            uploadedImageType = file.type; 
 | 
                            $cropImg.attr('src', result); 
 | 
                            if (!imgSrc || !imgCropper) { 
 | 
                                imgSrc = result; 
 | 
                                renderElem(); 
 | 
                            } else { 
 | 
                                imgCropper.destroy(); 
 | 
                                imgCropper = new Cropper($cropImg[0], options); 
 | 
                            } 
 | 
                        }); 
 | 
                    } 
 | 
                }; 
 | 
                if (limitSize !== undefined) uploadOptions.size = limitSize; 
 | 
                if (acceptMime !== undefined) uploadOptions.acceptMime = acceptMime; 
 | 
                if (imgExts !== undefined) uploadOptions.exts = imgExts; 
 | 
                upload.render(uploadOptions); 
 | 
                // 没有传图片触发上传图片 
 | 
                if (!imgSrc) return $('#ew-crop-img-upload').trigger('click'); 
 | 
                // 渲染裁剪组件 
 | 
                var options = {aspectRatio: aspectRatio, preview: '#ew-crop-img-preview'}; 
 | 
                imgCropper = new Cropper($cropImg[0], options); 
 | 
                // 操作按钮绑定事件 
 | 
                $('.ew-crop-tool').on('click', '[data-method]', function () { 
 | 
                    var data = $(this).data(), cropped, result; 
 | 
                    if (!imgCropper || !data.method) return; 
 | 
                    data = $.extend({}, data); 
 | 
                    cropped = imgCropper.cropped; 
 | 
                    switch (data.method) { 
 | 
                        case 'rotate': 
 | 
                            if (cropped && options.viewMode > 0) imgCropper.clear(); 
 | 
                            break; 
 | 
                        case 'getCroppedCanvas': 
 | 
                            if (uploadedImageType === 'image/jpeg') { 
 | 
                                if (!data.option) data.option = {}; 
 | 
                                data.option.fillColor = '#fff'; 
 | 
                            } 
 | 
                            break; 
 | 
                    } 
 | 
                    result = imgCropper[data.method](data.option, data.secondOption); 
 | 
                    switch (data.method) { 
 | 
                        case 'rotate': 
 | 
                            if (cropped && options.viewMode > 0) imgCropper.crop(); 
 | 
                            break; 
 | 
                        case 'scaleX': 
 | 
                        case 'scaleY': 
 | 
                            $(this).data('option', -data.option); 
 | 
                            break; 
 | 
                        case 'getCroppedCanvas': 
 | 
                            if (result) { 
 | 
                                onCrop && onCrop(result.toDataURL(uploadedImageType)); 
 | 
                                admin.closeDialog('#ew-crop-img'); 
 | 
                            } else { 
 | 
                                layer.msg('裁剪失败', {icon: 2, anim: 6}); 
 | 
                            } 
 | 
                            break; 
 | 
                    } 
 | 
                }); 
 | 
            } 
 | 
  
 | 
            // 显示弹窗 
 | 
            var htmlStr = [ 
 | 
                '<div class="layui-row">', 
 | 
                '     <div class="layui-col-sm8" style="min-height: 9rem;">', 
 | 
                '          <img id="ew-crop-img" src="', imgSrc || '', '" style="max-width:100%;" alt=""/>', 
 | 
                '     </div>', 
 | 
                '     <div class="layui-col-sm4 layui-hide-xs" style="padding: 15px;text-align: center;">', 
 | 
                '          <div id="ew-crop-img-preview" style="width: 100%;height: 9rem;overflow: hidden;display: inline-block;border: 1px solid #dddddd;"></div>', 
 | 
                '     </div>', 
 | 
                '</div>', 
 | 
                '<div class="text-center ew-crop-tool" style="padding: 15px 10px 5px 0;">', 
 | 
                '     <div class="layui-btn-group" style="margin-bottom: 10px;margin-left: 10px;">', 
 | 
                '          <button title="放大" data-method="zoom" data-option="0.1" class="layui-btn icon-btn" type="button"><i class="layui-icon layui-icon-add-1"></i></button>', 
 | 
                '          <button title="缩小" data-method="zoom" data-option="-0.1" class="layui-btn icon-btn" type="button"><span style="display: inline-block;width: 12px;height: 2.5px;background: rgba(255, 255, 255, 0.9);vertical-align: middle;margin: 0 4px;"></span></button>', 
 | 
                '     </div>', 
 | 
                '     <div class="layui-btn-group layui-hide-xs" style="margin-bottom: 10px;">', 
 | 
                '          <button title="向左旋转" data-method="rotate" data-option="-45" class="layui-btn icon-btn" type="button"><i class="layui-icon layui-icon-refresh-1" style="transform: rotateY(180deg) rotate(40deg);display: inline-block;"></i></button>', 
 | 
                '          <button title="向右旋转" data-method="rotate" data-option="45" class="layui-btn icon-btn" type="button"><i class="layui-icon layui-icon-refresh-1" style="transform: rotate(30deg);display: inline-block;"></i></button>', 
 | 
                '     </div>', 
 | 
                '     <div class="layui-btn-group" style="margin-bottom: 10px;">', 
 | 
                '          <button title="左移" data-method="move" data-option="-10" data-second-option="0" class="layui-btn icon-btn" type="button"><i class="layui-icon layui-icon-left"></i></button>', 
 | 
                '          <button title="右移" data-method="move" data-option="10" data-second-option="0" class="layui-btn icon-btn" type="button"><i class="layui-icon layui-icon-right"></i></button>', 
 | 
                '          <button title="上移" data-method="move" data-option="0" data-second-option="-10" class="layui-btn icon-btn" type="button"><i class="layui-icon layui-icon-up"></i></button>', 
 | 
                '          <button title="下移" data-method="move" data-option="0" data-second-option="10" class="layui-btn icon-btn" type="button"><i class="layui-icon layui-icon-down"></i></button>', 
 | 
                '     </div>', 
 | 
                '     <div class="layui-btn-group" style="margin-bottom: 10px;">', 
 | 
                '          <button title="左右翻转" data-method="scaleX" data-option="-1" class="layui-btn icon-btn" type="button" style="position: relative;width: 41px;"><i class="layui-icon layui-icon-triangle-r" style="position: absolute;left: 9px;top: 0;transform: rotateY(180deg);font-size: 16px;"></i><i class="layui-icon layui-icon-triangle-r" style="position: absolute; right: 3px; top: 0;font-size: 16px;"></i></button>', 
 | 
                '          <button title="上下翻转" data-method="scaleY" data-option="-1" class="layui-btn icon-btn" type="button" style="position: relative;width: 41px;"><i class="layui-icon layui-icon-triangle-d" style="position: absolute;left: 11px;top: 6px;transform: rotateX(180deg);line-height: normal;font-size: 16px;"></i><i class="layui-icon layui-icon-triangle-d" style="position: absolute; left: 11px; top: 14px;line-height: normal;font-size: 16px;"></i></button>', 
 | 
                '     </div>', 
 | 
                '     <div class="layui-btn-group" style="margin-bottom: 10px;">', 
 | 
                '          <button title="重新开始" data-method="reset" class="layui-btn icon-btn" type="button"><i class="layui-icon layui-icon-refresh"></i></button>', 
 | 
                '          <button title="选择图片" id="ew-crop-img-upload" class="layui-btn icon-btn" type="button" style="border-radius: 0 2px 2px 0;"><i class="layui-icon layui-icon-upload-drag"></i></button>', 
 | 
                '     </div>', 
 | 
                '     <button data-method="getCroppedCanvas" data-option="{ "maxWidth": 4096, "maxHeight": 4096 }" class="layui-btn icon-btn" type="button" style="margin-left: 10px;margin-bottom: 10px;"><i class="layui-icon"></i>完成</button>', 
 | 
                '</div>'].join(''); 
 | 
            admin.open({ 
 | 
                title: dialogTitle, area: '665px', type: 1, content: htmlStr, 
 | 
                success: function (layero, dIndex) { 
 | 
                    $(layero).children('.layui-layer-content').css('overflow', 'visible'); 
 | 
                    renderElem(); 
 | 
                } 
 | 
            }); 
 | 
        }); 
 | 
    }; 
 | 
  
 | 
    /** 工具类 */ 
 | 
    admin.util = { 
 | 
        /* 百度地图坐标转高德地图坐标 */ 
 | 
        Convert_BD09_To_GCJ02: function (point) { 
 | 
            var x_pi = (3.14159265358979324 * 3000.0) / 180.0; 
 | 
            var x = point.lng - 0.0065, y = point.lat - 0.006; 
 | 
            var z = Math.sqrt(x * x + y * y) - 0.00002 * Math.sin(y * x_pi); 
 | 
            var theta = Math.atan2(y, x) - 0.000003 * Math.cos(x * x_pi); 
 | 
            return {lng: z * Math.cos(theta), lat: z * Math.sin(theta)}; 
 | 
        }, 
 | 
        /* 高德地图坐标转百度地图坐标 */ 
 | 
        Convert_GCJ02_To_BD09: function (point) { 
 | 
            var x_pi = (3.14159265358979324 * 3000.0) / 180.0; 
 | 
            var x = point.lng, y = point.lat; 
 | 
            var z = Math.sqrt(x * x + y * y) + 0.00002 * Math.sin(y * x_pi); 
 | 
            var theta = Math.atan2(y, x) + 0.000003 * Math.cos(x * x_pi); 
 | 
            return {lng: z * Math.cos(theta) + 0.0065, lat: z * Math.sin(theta) + 0.006}; 
 | 
        }, 
 | 
        /* 动态数字 */ 
 | 
        animateNum: function (elem, isThd, delay, grain) { 
 | 
            isThd = isThd === null || isThd === undefined || isThd === true || isThd === 'true';  // 是否是千分位 
 | 
            delay = isNaN(delay) ? 500 : delay;   // 动画延迟 
 | 
            grain = isNaN(grain) ? 100 : grain;   // 动画粒度 
 | 
            var getPref = function (str) { 
 | 
                var pref = ''; 
 | 
                for (var i = 0; i < str.length; i++) if (!isNaN(str.charAt(i))) return pref; else pref += str.charAt(i); 
 | 
            }, getSuf = function (str) { 
 | 
                var suf = ''; 
 | 
                for (var i = str.length - 1; i >= 0; i--) if (!isNaN(str.charAt(i))) return suf; else suf = str.charAt(i) + suf; 
 | 
            }, toThd = function (num, isThd) { 
 | 
                if (!isThd) return num; 
 | 
                if (!/^[0-9]+.?[0-9]*$/.test(num)) return num; 
 | 
                num = num.toString(); 
 | 
                return num.replace(num.indexOf('.') > 0 ? /(\d)(?=(\d{3})+(?:\.))/g : /(\d)(?=(\d{3})+(?:$))/g, '$1,'); 
 | 
            }; 
 | 
            $(elem).each(function () { 
 | 
                var $this = $(this); 
 | 
                var num = $this.data('num'); 
 | 
                if (!num) { 
 | 
                    num = $this.text().replace(/,/g, '');  // 内容 
 | 
                    $this.data('num', num); 
 | 
                } 
 | 
                var flag = 'INPUT,TEXTAREA'.indexOf($this.get(0).tagName) >= 0;  // 是否是输入框 
 | 
                var pref = getPref(num.toString()), suf = getSuf(num.toString()); 
 | 
                var strNum = num.toString().replace(pref, '').replace(suf, ''); 
 | 
                if (isNaN(strNum * 1) || strNum === '0') { 
 | 
                    flag ? $this.val(num) : $this.html(num); 
 | 
                    return console.error('not a number'); 
 | 
                } 
 | 
                var int_dec = strNum.split('.'); 
 | 
                var deciLen = int_dec[1] ? int_dec[1].length : 0; 
 | 
                var startNum = 0.0, endNum = strNum; 
 | 
                if (Math.abs(endNum * 1) > 10) startNum = parseFloat(int_dec[0].substring(0, int_dec[0].length - 1) + (int_dec[1] ? '.0' + int_dec[1] : '')); 
 | 
                var oft = (endNum - startNum) / grain, temp = 0; 
 | 
                var mTime = setInterval(function () { 
 | 
                    var str = pref + toThd(startNum.toFixed(deciLen), isThd) + suf; 
 | 
                    flag ? $this.val(str) : $this.html(str); 
 | 
                    startNum += oft; 
 | 
                    temp++; 
 | 
                    if (Math.abs(startNum) >= Math.abs(endNum * 1) || temp > 5000) { 
 | 
                        str = pref + toThd(endNum, isThd) + suf; 
 | 
                        flag ? $this.val(str) : $this.html(str); 
 | 
                        clearInterval(mTime); 
 | 
                    } 
 | 
                }, delay / grain); 
 | 
            }); 
 | 
        }, 
 | 
        /* 深度克隆对象 */ 
 | 
        deepClone: function (obj) { 
 | 
            var result; 
 | 
            var oClass = admin.util.isClass(obj); 
 | 
            if (oClass === 'Object') result = {}; 
 | 
            else if (oClass === 'Array') result = []; 
 | 
            else return obj; 
 | 
            for (var key in obj) { 
 | 
                if (!obj.hasOwnProperty(key)) continue; 
 | 
                var copy = obj[key], cClass = admin.util.isClass(copy); 
 | 
                if (cClass === 'Object') result[key] = arguments.callee(copy); // 递归调用 
 | 
                else if (cClass === 'Array') result[key] = arguments.callee(copy); 
 | 
                else result[key] = obj[key]; 
 | 
            } 
 | 
            return result; 
 | 
        }, 
 | 
        /* 获取变量类型 */ 
 | 
        isClass: function (o) { 
 | 
            if (o === null) return 'Null'; 
 | 
            if (o === undefined) return 'Undefined'; 
 | 
            return Object.prototype.toString.call(o).slice(8, -1); 
 | 
        }, 
 | 
        /* 判断富文本是否为空 */ 
 | 
        fullTextIsEmpty: function (text) { 
 | 
            if (!text) return true; 
 | 
            var noTexts = ['img', 'audio', 'video', 'iframe', 'object']; 
 | 
            for (var i = 0; i < noTexts.length; i++) { 
 | 
                if (text.indexOf('<' + noTexts[i]) > -1) return false; 
 | 
            } 
 | 
            var str = text.replace(/\s*/g, '');  // 去掉所有空格 
 | 
            if (!str) return true; 
 | 
            str = str.replace(/ /ig, '');  // 去掉所有  
 | 
            if (!str) return true; 
 | 
            str = str.replace(/<[^>]+>/g, '');   // 去掉所有html标签 
 | 
            return !str; 
 | 
        }, 
 | 
        /* 移除元素的style */ 
 | 
        removeStyle: function (elem, names) { 
 | 
            if (typeof names === 'string') names = [names]; 
 | 
            for (var i = 0; i < names.length; i++) $(elem).css(names[i], ''); 
 | 
        }, 
 | 
        /* 滚动到顶部 */ 
 | 
        scrollTop: function (elem) { 
 | 
            $(elem || 'html,body').animate({scrollTop: 0}, 300); 
 | 
        }, 
 | 
        /* 模板解析 */ 
 | 
        tpl: function (html, data, openCode, closeCode) { 
 | 
            if (html === undefined || html === null || typeof html !== 'string') return html; 
 | 
            if (!data) data = {}; 
 | 
            if (!openCode) openCode = '{{'; 
 | 
            if (!closeCode) closeCode = '}}'; 
 | 
            var tool = { 
 | 
                exp: function (str) { 
 | 
                    return new RegExp(str, 'g'); 
 | 
                }, 
 | 
                // 匹配满足规则内容 
 | 
                query: function (type, _, __) { 
 | 
                    var types = ['#([\\s\\S])+?', '([^{#}])*?'][type || 0]; 
 | 
                    return tool.exp((_ || '') + openCode + types + closeCode + (__ || '')); 
 | 
                }, 
 | 
                escape: function (str) { 
 | 
                    return String(str || '').replace(/&(?!#?[a-zA-Z0-9]+;)/g, '&') 
 | 
                        .replace(/</g, '<').replace(/>/g, '>') 
 | 
                        .replace(/'/g, ''').replace(/"/g, '"'); 
 | 
                }, 
 | 
                error: function (e, tplog) { 
 | 
                    console.error('Laytpl Error:' + e + '\n' + (tplog || '')); 
 | 
                }, 
 | 
                parse: function (tpl, data) { 
 | 
                    var tplog = tpl; 
 | 
                    try { 
 | 
                        var jss = tool.exp('^' + openCode + '#'), jsse = tool.exp(closeCode + '$'); 
 | 
                        tpl = tpl.replace(tool.exp(openCode + '#'), openCode + '# ') 
 | 
                            .replace(tool.exp(closeCode + '}'), '} ' + closeCode).replace(/\\/g, '\\\\') 
 | 
                            // 不匹配指定区域的内容 
 | 
                            .replace(tool.exp(openCode + '!(.+?)!' + closeCode), function (str) { 
 | 
                                str = str.replace(tool.exp('^' + openCode + '!'), '') 
 | 
                                    .replace(tool.exp('!' + closeCode), '') 
 | 
                                    .replace(tool.exp(openCode + '|' + closeCode), function (tag) { 
 | 
                                        return tag.replace(/(.)/g, '\\$1') 
 | 
                                    }); 
 | 
                                return str 
 | 
                            }) 
 | 
                            // 匹配JS规则内容 
 | 
                            .replace(/(?="|')/g, '\\').replace(tool.query(), function (str) { 
 | 
                                str = str.replace(jss, '').replace(jsse, ''); 
 | 
                                return '";' + str.replace(/\\/g, '') + ';view+="'; 
 | 
                            }) 
 | 
                            // 匹配普通字段 
 | 
                            .replace(tool.query(1), function (str) { 
 | 
                                var start = '"+('; 
 | 
                                if (str.replace(/\s/g, '') === openCode + closeCode) return ''; 
 | 
                                str = str.replace(tool.exp(openCode + '|' + closeCode), ''); 
 | 
                                if (/^=/.test(str)) { 
 | 
                                    str = str.replace(/^=/, ''); 
 | 
                                    start = '"+_escape_('; 
 | 
                                } 
 | 
                                return start + str.replace(/\\/g, '') + ')+"'; 
 | 
                            }) 
 | 
                            // 换行符处理 
 | 
                            .replace(/\r\n/g, '\\r\\n" + "').replace(/\n/g, '\\n" + "').replace(/\r/g, '\\r" + "'); 
 | 
                        tpl = '"use strict";var view = "' + tpl + '";return view;'; 
 | 
                        tpl = new Function('d, _escape_', tpl); 
 | 
                        return tpl(data, tool.escape); 
 | 
                    } catch (e) { 
 | 
                        tool.error(e, tplog); 
 | 
                        return tplog; 
 | 
                    } 
 | 
                } 
 | 
            }; 
 | 
            return tool.parse(html, data); 
 | 
        }, 
 | 
        /* 渲染动态模板 */ 
 | 
        render: function (option) { 
 | 
            if (typeof option.url === 'string') { 
 | 
                option.success = function (res) { 
 | 
                    admin.util.render($.extend({}, option, {url: res})); 
 | 
                }; 
 | 
                if (option.ajax === 'ajax') admin.ajax(option); 
 | 
                else admin.req(option.url, option.where, option.success, option.method, option); 
 | 
                return; 
 | 
            } 
 | 
            var html = admin.util.tpl(option.tpl, option.url, 
 | 
                option.open || setter.tplOpen, option.close || setter.tplClose); 
 | 
            $(option.elem).next('[ew-tpl-rs]').remove(); 
 | 
            $(option.elem).after(html); 
 | 
            $(option.elem).next().attr('ew-tpl-rs', ''); 
 | 
            option.done && option.done(option.url); 
 | 
        } 
 | 
    }; 
 | 
  
 | 
    /** 锁屏功能 */ 
 | 
    admin.lockScreen = function (url) { 
 | 
        if (window !== top && !admin.isTop() && top.layui && top.layui.admin) return top.layui.admin.lockScreen(url); 
 | 
        if (!url) url = 'tpl/tpl-lock-screen.html'; 
 | 
        var $lock = $('#ew-lock-screen-group'); 
 | 
        if ($lock.length > 0) { 
 | 
            $lock.fadeIn('fast'); 
 | 
            admin.isLockScreen = true; 
 | 
            admin.putTempData('isLockScreen', admin.isLockScreen, true); 
 | 
        } else { 
 | 
            var loadIndex = layer.load(2); 
 | 
            admin.ajax({ 
 | 
                url: url, dataType: 'html', 
 | 
                success: function (res) { 
 | 
                    layer.close(loadIndex); 
 | 
                    if (typeof res === 'string') { 
 | 
                        $('body').append('<div id="ew-lock-screen-group">' + res + '</div>'); 
 | 
                        admin.isLockScreen = true; 
 | 
                        admin.putTempData('isLockScreen', admin.isLockScreen, true); 
 | 
                        admin.putTempData('lockScreenUrl', url, true); 
 | 
                    } else { 
 | 
                        console.error(res); 
 | 
                        layer.msg(JSON.stringify(res), {icon: 2, anim: 6}); 
 | 
                    } 
 | 
                } 
 | 
            }); 
 | 
        } 
 | 
    }; 
 | 
  
 | 
    /** 解除锁屏 */ 
 | 
    admin.unlockScreen = function (isRemove) { 
 | 
        if (window !== top && !admin.isTop() && top.layui && top.layui.admin) return top.layui.admin.unlockScreen(isRemove); 
 | 
        var $lock = $('#ew-lock-screen-group'); 
 | 
        isRemove ? $lock.remove() : $lock.fadeOut('fast'); 
 | 
        admin.isLockScreen = false; 
 | 
        admin.putTempData('isLockScreen', null, true); 
 | 
    }; 
 | 
  
 | 
    /** tips方法封装 */ 
 | 
    admin.tips = function (option) { 
 | 
        return layer.tips(option.text, option.elem, { 
 | 
            tips: [option.direction || 1, option.bg || '#191a23'], 
 | 
            tipsMore: option.tipsMore, time: option.time || -1, 
 | 
            success: function (layero) { 
 | 
                var $content = $(layero).children('.layui-layer-content'); 
 | 
                if (option.padding || option.padding === 0) $content.css('padding', option.padding); 
 | 
                if (option.color) $content.css('color', option.color); 
 | 
                if (option.bgImg) $content.css('background-image', option.bgImg).children('.layui-layer-TipsG').css('z-index', '-1'); 
 | 
                if (option.fontSize) $content.css('font-size', option.fontSize); 
 | 
                if (!option.offset) return; 
 | 
                var offset = option.offset.split(','); 
 | 
                var top = offset[0], left = offset.length > 1 ? offset[1] : undefined; 
 | 
                if (top) $(layero).css('margin-top', top); 
 | 
                if (left) $(layero).css('margin-left', left); 
 | 
            } 
 | 
        }); 
 | 
    }; 
 | 
  
 | 
    /** 渲染动态模板 */ 
 | 
    admin.renderTpl = function (elem) { 
 | 
        if (!layui.admin) layui.admin = admin; 
 | 
  
 | 
        // 解析数据 
 | 
        function parseData(data) { 
 | 
            if (!data) return; 
 | 
            try { 
 | 
                return new Function('return ' + data + ';')(); 
 | 
            } catch (e) { 
 | 
                console.error(e + '\nlay-data: ' + data); 
 | 
            } 
 | 
        } 
 | 
  
 | 
        $(elem || '[ew-tpl]').each(function () { 
 | 
            var $this = $(this); 
 | 
            var option = admin.util.deepClone($(this).data()); 
 | 
            option.elem = $this; 
 | 
            option.tpl = $this.html(); 
 | 
            option.url = parseData($this.attr('ew-tpl')); 
 | 
            option.headers = parseData(option.headers); 
 | 
            option.where = parseData(option.where); 
 | 
            if (option.done) { 
 | 
                try { 
 | 
                    option.done = new Function('res', option.done); 
 | 
                } catch (e) { 
 | 
                    console.error(e + '\nlay-data:' + option.done); 
 | 
                    option.done = undefined; 
 | 
                } 
 | 
            } 
 | 
            admin.util.render(option); 
 | 
        }); 
 | 
    }; 
 | 
  
 | 
    /** 事件监听 */ 
 | 
    admin.on = function (events, callback) { 
 | 
        return layui.onevent.call(this, 'admin', events, callback); 
 | 
    }; 
 | 
  
 | 
    /** 修改配置信息 */ 
 | 
    admin.putSetting = function (key, value) { 
 | 
        setter[key] = value; 
 | 
        admin.putTempData(key, value, true); 
 | 
    }; 
 | 
  
 | 
    /** 恢复配置信息 */ 
 | 
    admin.recoverState = function () { 
 | 
        // 恢复锁屏状态 
 | 
        if (admin.getTempData('isLockScreen', true)) admin.lockScreen(admin.getTempData('lockScreenUrl', true)); 
 | 
        // 恢复配置的主题 
 | 
        if (setter.defaultTheme) admin.changeTheme(setter.defaultTheme, window, true, true); 
 | 
        // 恢复页脚状态、导航箭头 
 | 
        if (setter.closeFooter) $('body').addClass('close-footer'); 
 | 
        if (setter.navArrow !== undefined) { 
 | 
            var $nav = $(sideDOM + '>.layui-nav-tree'); 
 | 
            $nav.removeClass('arrow2 arrow3'); 
 | 
            if (setter.navArrow) $nav.addClass(setter.navArrow); 
 | 
        } 
 | 
        // 恢复tab自动刷新 
 | 
        if (setter.pageTabs && setter.tabAutoRefresh == 'true') $(tabDOM).attr('lay-autoRefresh', 'true'); 
 | 
    }; 
 | 
  
 | 
    /* 事件监听 */ 
 | 
    admin.on = function (events, callback) { 
 | 
        return layui.onevent.call(this, 'admin', events, callback); 
 | 
    }; 
 | 
  
 | 
    /** 侧导航折叠状态下鼠标经过无限悬浮效果 */ 
 | 
    var navItemDOM = '.layui-layout-admin.admin-nav-mini>.layui-side .layui-nav .layui-nav-item'; 
 | 
    $(document).on('mouseenter', navItemDOM + ',' + navItemDOM + ' .layui-nav-child>dd', function () { 
 | 
        if (admin.getPageWidth() > 768) { 
 | 
            var $that = $(this), $navChild = $that.find('>.layui-nav-child'); 
 | 
            if ($navChild.length > 0) { 
 | 
                $that.addClass('admin-nav-hover'); 
 | 
                $navChild.css('left', $that.offset().left + $that.outerWidth()); 
 | 
                var top = $that.offset().top; 
 | 
                if (top + $navChild.outerHeight() > admin.getPageHeight()) { 
 | 
                    top = top - $navChild.outerHeight() + $that.outerHeight(); 
 | 
                    if (top < 60) top = 60; 
 | 
                    $navChild.addClass('show-top'); 
 | 
                } 
 | 
                $navChild.css('top', top); 
 | 
                $navChild.addClass('ew-anim-drop-in'); 
 | 
            } else if ($that.hasClass('layui-nav-item')) { 
 | 
                admin.tips({elem: $that, text: $that.find('cite').text(), direction: 2, offset: '12px'}); 
 | 
            } 
 | 
        } 
 | 
    }).on('mouseleave', navItemDOM + ',' + navItemDOM + ' .layui-nav-child>dd', function () { 
 | 
        layer.closeAll('tips'); 
 | 
        var $this = $(this); 
 | 
        $this.removeClass('admin-nav-hover'); 
 | 
        var $child = $this.find('>.layui-nav-child'); 
 | 
        $child.removeClass('show-top ew-anim-drop-in'); 
 | 
        $child.css({'left': 'auto', 'top': 'auto'}); 
 | 
    }); 
 | 
  
 | 
    /** 所有ew-event */ 
 | 
    $(document).on('click', '*[ew-event]', function () { 
 | 
        var te = admin.events[$(this).attr('ew-event')]; 
 | 
        te && te.call(this, $(this)); 
 | 
    }); 
 | 
  
 | 
    /** 所有lay-tips处理 */ 
 | 
    $(document).on('mouseenter', '*[lay-tips]', function () { 
 | 
        var $this = $(this); 
 | 
        admin.tips({ 
 | 
            elem: $this, text: $this.attr('lay-tips'), direction: $this.attr('lay-direction'), 
 | 
            bg: $this.attr('lay-bg'), offset: $this.attr('lay-offset'), 
 | 
            padding: $this.attr('lay-padding'), color: $this.attr('lay-color'), 
 | 
            bgImg: $this.attr('lay-bgImg'), fontSize: $this.attr('lay-fontSize') 
 | 
        }); 
 | 
    }).on('mouseleave', '*[lay-tips]', function () { 
 | 
        layer.closeAll('tips'); 
 | 
    }); 
 | 
  
 | 
    /** 表单搜索展开更多 */ 
 | 
    $(document).on('click', '.form-search-expand,[search-expand]', function () { 
 | 
        var $this = $(this); 
 | 
        var $form = $this.parents('.layui-form').first(); 
 | 
        var expand = $this.data('expand'); 
 | 
        var change = $this.attr('search-expand'); 
 | 
        if (expand === undefined || expand === true) { 
 | 
            expand = true; 
 | 
            $this.data('expand', false); 
 | 
            $this.html('收起 <i class="layui-icon layui-icon-up"></i>'); 
 | 
            var $elem = $form.find('.form-search-show-expand'); 
 | 
            $elem.attr('expand-show', ''); 
 | 
            $elem.removeClass('form-search-show-expand'); 
 | 
        } else { 
 | 
            expand = false; 
 | 
            $this.data('expand', true); 
 | 
            $this.html('展开 <i class="layui-icon layui-icon-down"></i>'); 
 | 
            $form.find('[expand-show]').addClass('form-search-show-expand'); 
 | 
        } 
 | 
        if (!change) return; 
 | 
        new Function('d', change)({expand: expand, elem: $this}); 
 | 
    }); 
 | 
  
 | 
    /** select使用fixed定位显示 */ 
 | 
    $(document).on('click.ew-sel-fixed', '.ew-select-fixed .layui-form-select .layui-select-title', function () { 
 | 
        var $this = $(this), $dl = $this.parent().children('dl'), tTop = $this.offset().top; 
 | 
        var tWidth = $this.outerWidth(), tHeight = $this.outerHeight(), scrollT = $(document).scrollTop(); 
 | 
        var dWidth = $dl.outerWidth(), dHeight = $dl.outerHeight(); 
 | 
        var top = tTop + tHeight + 5 - scrollT, left = $this.offset().left; 
 | 
        if (top + dHeight > admin.getPageHeight()) top = top - dHeight - tHeight - 10; 
 | 
        if (left + dWidth > admin.getPageWidth()) left = left - dWidth + tWidth; 
 | 
        $dl.css({'left': left, 'top': top, 'min-width': tWidth}); 
 | 
    }); 
 | 
  
 | 
    /** 用于滚动时关闭一些fixed的组件 */ 
 | 
    admin.hideFixedEl = function () { 
 | 
        $('.ew-select-fixed .layui-form-select').removeClass('layui-form-selected layui-form-selectup');  // select 
 | 
        $('body>.layui-laydate').remove();  // laydate 
 | 
    }; 
 | 
  
 | 
    /** 垂直导航栏展开折叠增加过渡效果 */ 
 | 
    $(document).on('click', '.layui-nav-tree>.layui-nav-item a', function () { 
 | 
        var $this = $(this), $child = $this.siblings('.layui-nav-child'), $parent = $this.parent(); 
 | 
        if ($child.length === 0) return; 
 | 
        if ($parent.hasClass('admin-nav-hover')) return; 
 | 
        if ($parent.hasClass('layui-nav-itemed')) {  // 因为layui会处理一遍所以这里状态是相反的 
 | 
            $child.css('display', 'none').slideDown('fast', function () { 
 | 
                $(this).css('display', ''); 
 | 
            }); 
 | 
        } else { 
 | 
            $child.css('display', 'block').slideUp('fast', function () { 
 | 
                $(this).css('display', ''); 
 | 
            }); 
 | 
        } 
 | 
        if ($this.parents('.layui-nav').attr('lay-shrink') === '_all') {  // 手风琴效果 
 | 
            var $siblings = $this.parent().siblings('.layui-nav-itemed'); 
 | 
            $siblings.children('.layui-nav-child').css('display', 'block').slideUp('fast', function () { 
 | 
                $(this).css('display', ''); 
 | 
            }); 
 | 
            $siblings.removeClass('layui-nav-itemed'); 
 | 
        } 
 | 
    }); 
 | 
    $('.layui-nav-tree[lay-shrink="all"]').attr('lay-shrink', '_all');  // 让layui不处理手风琴效果 
 | 
  
 | 
    /** 折叠面板展开折叠增加过渡效果 */ 
 | 
    $(document).on('click', '.layui-collapse>.layui-colla-item>.layui-colla-title', function () { 
 | 
        var $this = $(this), $content = $this.siblings('.layui-colla-content') 
 | 
            , $collapse = $this.parent().parent(), isNone = $content.hasClass('layui-show'); 
 | 
        if (isNone) {  // 因为layui会处理一遍所以这里状态是相反的 
 | 
            $content.removeClass('layui-show').slideDown('fast').addClass('layui-show'); 
 | 
        } else { 
 | 
            $content.css('display', 'block').slideUp('fast', function () { 
 | 
                $(this).css('display', ''); 
 | 
            }); 
 | 
        } 
 | 
        $this.children('.layui-colla-icon').html('') 
 | 
            .css({'transition': 'all .3s', 'transform': 'rotate(' + (isNone ? '90deg' : '0deg') + ')'}); 
 | 
        if ($collapse.attr('lay-shrink') === '_all') {  // 手风琴效果 
 | 
            var $show = $collapse.children('.layui-colla-item').children('.layui-colla-content.layui-show').not($content); 
 | 
            $show.css('display', 'block').slideUp('fast', function () { 
 | 
                $(this).css('display', ''); 
 | 
            }); 
 | 
            $show.removeClass('layui-show'); 
 | 
            $show.siblings('.layui-colla-title').children('.layui-colla-icon').html('') 
 | 
                .css({'transition': 'all .3s', 'transform': 'rotate(0deg)'}); 
 | 
        } 
 | 
    }); 
 | 
    $('.layui-collapse[lay-accordion]').attr('lay-shrink', '_all').removeAttr('lay-accordion');  // 让layui不处理手风琴效果 
 | 
  
 | 
    /** 表单验证tips提示样式修改 */ 
 | 
    layer.oldTips = layer.tips; 
 | 
    layer.tips = function (content, follow, options) { 
 | 
        var $fFip;  // 判断是否是表单验证调用的tips 
 | 
        if ($(follow).length > 0 && $(follow).parents('.layui-form').length > 0) { 
 | 
            if ($(follow).is('input') || $(follow).is('textarea')) { 
 | 
                $fFip = $(follow); 
 | 
            } else if ($(follow).hasClass('layui-form-select') || $(follow).hasClass('layui-form-radio') 
 | 
                || $(follow).hasClass('layui-form-checkbox') || $(follow).hasClass('layui-form-switch')) { 
 | 
                $fFip = $(follow).prev(); 
 | 
            } 
 | 
        } 
 | 
        if (!$fFip) return layer.oldTips(content, follow, options); 
 | 
        options.tips = [$fFip.attr('lay-direction') || 3, $fFip.attr('lay-bg') || '#ff4c4c']; 
 | 
        setTimeout(function () { 
 | 
            options.success = function (layero) { 
 | 
                $(layero).children('.layui-layer-content').css('padding', '6px 12px'); 
 | 
            }; 
 | 
            layer.oldTips(content, follow, options); 
 | 
        }, 100); 
 | 
    }; 
 | 
  
 | 
    /** 所有ew-href处理 */ 
 | 
    $(document).on('click', '*[ew-href]', function () { 
 | 
        var $this = $(this); 
 | 
        var href = $this.attr('ew-href'); 
 | 
        if (!href || href === '#') return; 
 | 
        if (href.indexOf('javascript:') === 0) return new Function(href.substring(11))(); 
 | 
        var title = $this.attr('ew-title') || $this.text(); 
 | 
        var win = $this.data('window'); 
 | 
        win ? (win = admin.strToWin(win)) : (win = top); 
 | 
        var end = $this.attr('ew-end'); 
 | 
        try { 
 | 
            if (end) end = new Function(end); 
 | 
            else end = undefined; 
 | 
        } catch (e) { 
 | 
            console.error(e); 
 | 
        } 
 | 
        if (win.layui && win.layui.index) win.layui.index.openTab({title: title || '', url: href, end: end}); 
 | 
        else location.href = href; 
 | 
    }); 
 | 
  
 | 
    /** 帮助鼠标右键菜单完成点击空白关闭的功能 */ 
 | 
    if (!layui.contextMenu) { 
 | 
        $(document).off('click.ctxMenu').on('click.ctxMenu', function () { 
 | 
            try { 
 | 
                var ifs = top.window.frames; 
 | 
                for (var i = 0; i < ifs.length; i++) { 
 | 
                    var tif = ifs[i]; 
 | 
                    try {  // 可能会跨域 
 | 
                        if (tif.layui && tif.layui.jquery) tif.layui.jquery('body>.ctxMenu').remove(); 
 | 
                    } catch (e) { 
 | 
                    } 
 | 
                } 
 | 
                try {  // 可能会跨域 
 | 
                    if (top.layui && top.layui.jquery) top.layui.jquery('body>.ctxMenu').remove(); 
 | 
                } catch (e) { 
 | 
                } 
 | 
            } catch (e) { 
 | 
            } 
 | 
        }); 
 | 
    } 
 | 
  
 | 
    /** 读取缓存的配置信息 */ 
 | 
    setter = $.extend({ 
 | 
        pageTabs: true, cacheTab: true, openTabCtxMenu: true, maxTabNum: 20, tableName: 'easyweb-iframe', 
 | 
        apiNoCache: true, ajaxSuccessBefore: function (res, url, obj) { 
 | 
            return admin.ajaxSuccessBefore ? admin.ajaxSuccessBefore(res, url, obj) : true; 
 | 
        }, getAjaxHeaders: function (res, url, obj) { 
 | 
            return admin.getAjaxHeaders ? admin.getAjaxHeaders(res, url, obj) : []; 
 | 
        } 
 | 
    }, setter); 
 | 
    var cache = admin.getTempData(true); 
 | 
    if (cache) { 
 | 
        var keys = ['pageTabs', 'cacheTab', 'defaultTheme', 'navArrow', 'closeFooter', 'tabAutoRefresh']; 
 | 
        for (var i = 0; i < keys.length; i++) if (cache[keys[i]] !== undefined) setter[keys[i]] = cache[keys[i]]; 
 | 
    } 
 | 
    admin.recoverState();  // 恢复本地配置 
 | 
    admin.renderTpl();  // 渲染动态模板 
 | 
    admin.setter = setter; 
 | 
    if (layui.device().ios) $('body').addClass('ios-iframe-body');  // ios浏览器iframe兼容 
 | 
    exports('admin', admin); 
 | 
}); 
 |