/** 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));
|
},
|
/* 打开右侧弹窗 */
|
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);
|
});
|