vr-shopxo-plugin/shopxo/public/static/admin/default/js/index.js

626 lines
25 KiB
JavaScript
Executable File
Raw Blame History

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

/**
* 独立弹窗层级处理
* @author Devil
* @blog http://gong.gg/
* @version 1.0.0
* @date 2023-02-15
* @desc description
* @param {[string]} key [窗口可以]
*/
function LayerPagesLevelHandle (key) {
var index = 0;
var $content = $('#ifcontent');
$content.find('.window-layer-alone-layer').each(function () {
var temp_index = parseInt($(this).css('z-index') || 0);
if (temp_index > index) {
index = temp_index
}
});
$content.find('.window-layer .window-layer-seat').show();
var $layer = $content.find('.window-layer.iframe-item-key-' + key);
$layer.css({ 'z-index': index + 1, 'position': 'fixed' });
$layer.find('.window-layer-seat').hide();
}
/**
* 展开菜单
* @author kevin
* @blog http://gong.gg/
* @version 1.0.0
* @date 2023-12-06
* @desc description
*/
function OpenMenu () {
$('.menu-scaling-submit').addClass('open-menu');
$('.menu-scaling-submit').animate({ left: '135px' }, 300);
$('.menu-scaling-submit').removeClass('icon-stretch').addClass('icon-shrink');
$('#admin-offcanvas').addClass('open-child-menu');
$('#admin-offcanvas').animate({ width: '203px' }, 300);
$('#ifcontent').animate({ paddingLeft: '203px' }, 300);
$('header.admin-header').animate({ left: '203px' }, 300);
}
/**
* 收起菜单
* @author kevin
* @blog http://gong.gg/
* @version 1.0.0
* @date 2023-12-06
* @desc description
*/
function CloseMenu () {
$('.menu-scaling-submit').removeClass('open-menu');
$('.menu-scaling-submit').animate({ left: '30px' }, 300);
$('.menu-scaling-submit').removeClass('icon-shrink').addClass('icon-stretch');
$('#admin-offcanvas').removeClass('open-child-menu');
$('#admin-offcanvas').animate({ width: '80px' }, 300);
$('#ifcontent').animate({ paddingLeft: '80px' }, 300);
$('header.admin-header').animate({ left: '80px' }, 300);
}
/**
* 关闭tabs工具
* @author kevin
* @blog http://gong.gg/
* @version 1.0.0
* @date 2023-12-06
* @desc description
*/
function IframeCloseNavTabsRightTools () {
$('.tabs-list .tabs-tool').dropdown('close');
}
$(function () {
// 左侧菜单箭头方向回调处理
$('#admin-offcanvas li.admin-parent').on('open.collapse.amui', function () {
$(this).find('a i').toggleClass('top-menu-more-icon-rotate');
}).on('close.collapse.amui', function () {
$(this).find('a i').toggleClass('top-menu-more-icon-rotate');
});
// url加载
$(document).on('click', '.common-left-menu li a, .admin-header-right-list li a.new-window', function () {
var url = $(this).data('url') || null;
var type = $(this).data('type');
var key = $(this).data('key');
var name = $(this).data('node-name') || $(this).find('.nav-name').text();
AdminTopNavIframeAddHandle(url, name, key, type);
});
// 顶级左侧菜单选择
$(document).on('click', '.must-menu-list .common-left-menu li a', function (event) {
$('.common-left-menu li a').removeClass('common-left-menu-active');
$(this).addClass('common-left-menu-active');
if (window.innerWidth > 641) {
if ($(this).parent().find('ul').length > 0) {
OpenMenu();
$('.child-menu-list').find('ul.second').addClass('am-hide');
$('.child-menu-list').find('#power-menu-' + $(this).data('id')).removeClass('am-hide');
$('.child-menu-list .menu-name').text($(this).text().trim());
$('.menu-scaling-submit').removeClass('am-hide');
// 获取下级菜单第一个并打开
$('.child-menu-list').find('#power-menu-' + $(this).data('id') + '>li>a').addClass('am-collapsed');
$('.child-menu-list').find('#power-menu-' + $(this).data('id') + '>li>a i').removeClass('left-menu-more-icon-rotate');
$('.child-menu-list').find('#power-menu-' + $(this).data('id') + '>li>ul').removeClass('am-in');
$('.child-menu-list').find('#power-menu-' + $(this).data('id') + ' li:eq(0)>a').trigger('click');
if (!$('.child-menu-list').find('#power-menu-' + $(this).data('id') + ' li:eq(0)>a').hasClass('am-collapsed')) {
$('.child-menu-list').find('#power-menu-' + $(this).data('id') + ' li:eq(0)>ul li:eq(0) a').trigger('click');
} else {
if ($(this).parent().find('ul').length <= 0) {
$('.child-menu-list').find('#power-menu-' + $(this).data('id') + ' li:eq(0)>ul li:eq(0) a').trigger('click');
}
}
} else {
CloseMenu();
$('.menu-scaling-submit').addClass('am-hide');
}
}
});
// 二级右侧菜单选择(全部包含下级菜单)
$(document).on('click', '.child-menu-list .common-left-menu li a', function () {
$(this).parent().parent().find('a').removeClass('common-left-menu-active');
$(this).addClass('common-left-menu-active');
});
// 二级菜单开关
$(document).on('click', '.menu-scaling-submit', function () {
$('.must-menu-list .common-left-menu>li').each((k, v) => {
if ($(v).find('a').hasClass('common-left-menu-active') && $(v).find('ul.am-list').length > 0) {
if ($('#admin-offcanvas').hasClass('open-child-menu')) {
CloseMenu();
} else {
OpenMenu();
}
}
})
});
// 浏览器窗口实时事件
$(window).resize(function () {
var data_status = $('.menu-scaling-submit').hasClass('open-menu');
// 小屏幕关闭左侧导航
if ($(document).width() <= 640) {
$('#admin-offcanvas').css({ 'width': 'inherit' });
$('#ifcontent').css({ 'padding-left': 0 });
$('header.admin-header').css({ 'left': 0 });
} else {
if (data_status) {
$('#admin-offcanvas').css({ 'width': '203px' });
$('#ifcontent').css({ 'padding-left': '203px' });
$('header.admin-header').css({ 'left': '203px' });
} else {
$('#admin-offcanvas').css({ 'width': '80px' });
$('#ifcontent').css({ 'padding-left': '80px' });
$('header.admin-header').css({ 'left': '80px' });
}
}
});
// 页面切换
var window_layer_alone_layer_warning_timer = null;
// 是否第一次加载菜单
var is_reload_menu_status = 0;
$(document).on('click', '.header-menu-open-pages-list ul li', function (event) {
// 选中当前页面
$('.header-menu-open-pages-list ul li').removeClass('am-active');
$(this).addClass('am-active');
var key = $(this).data('key');
var $content = $('#ifcontent');
// 显示当前页面
$content.find('.window-layer').not('.window-layer-alone-layer').hide();
if ($('#ifcontent .iframe-item-key-' + key).length > 0) {
var $current_iframe = $('#ifcontent .iframe-item-key-' + key);
$current_iframe.show();
// 窗口存在独立
if ($current_iframe.hasClass('window-layer-alone-layer')) {
// 窗口存在独立则警告窗口提示
var count = 0;
clearInterval(window_layer_alone_layer_warning_timer);
window_layer_alone_layer_warning_timer = setInterval(function () {
if (count > 10) {
clearInterval(window_layer_alone_layer_warning_timer);
} else {
$current_iframe.css('box-shadow', 'rgb(0 0 0 / 30%) 1px 1px ' + (count % 2 == 0 ? '12px' : '24px'));
count++;
}
}, 50);
// 设置层级
LayerPagesLevelHandle(key);
} else {
// 非独立窗口则隐藏所有页面占位
$content.find('.window-layer .window-layer-seat').hide();
}
} else {
var url = $(this).data('url');
var type = $(this).data('type');
var key = $(this).data('key');
var name = $(this).data('name');
AdminTopNavIframeAddHandle(url, name, key, type);
}
if (window.innerWidth > 641) {
// 菜单跟随切换
$('.menu-list').find('a').removeClass('common-left-menu-active');
$('.menu-list').find("[data-key='" + key + "']").each((k, v) => {
var menu_id_level_list = '';
if ($(v).data('parent')) {
menu_id_level_list = $(v).data('parent').toString().split('|');
$('.menu-list').find('.menu-parent-items-' + menu_id_level_list[0]).addClass('common-left-menu-active');
// 菜单打开
OpenMenu();
$('.menu-scaling-submit').removeClass('am-hide');
$('.child-menu-list').find('ul.second').addClass('am-hide');
$('.child-menu-list').find('#power-menu-' + menu_id_level_list[0]).removeClass('am-hide');
$('.child-menu-list .menu-name').text($('.menu-list').find('.menu-parent-items-' + menu_id_level_list[0]).text().trim());
// 打开菜单并展开折叠
if (menu_id_level_list.length > 1) {
$('#power-menu-' + menu_id_level_list[1]).collapse('open');
}
} else {
// 菜单关闭
CloseMenu();
$('.menu-scaling-submit').addClass('am-hide');
}
$(v).addClass('common-left-menu-active');
})
var offset_scroll_top = $('.menu-list').find('.must-menu-scroll').scrollTop();
var $menu_active = $('.menu-list').find('a.common-left-menu-active');
if ($menu_active.length > 0) {
$('.must-menu-list-am-active').css({ 'display': 'block' });
var offset_top = $('.menu-list a.common-left-menu-active').parent().offset().top - ($('.must-menu-list-am-active').hasClass('is_logo') ? $('.menu-logo').height() : 0);
if (is_reload_menu_status == 0 || (event.originalEvent && event.originalEvent.isTrusted)) {
$('.must-menu-scroll').animate({
scrollTop: offset_top + offset_scroll_top,
}, 300);
is_reload_menu_status = 1;
}
$('.must-menu-list-am-active').animate({
'top': offset_top + offset_scroll_top
}, 300);
} else {
$('.must-menu-list-am-active').css({ 'top': 0, 'display': 'none' });
}
}
// 存储tabs标签数据
AdminMenuNavTabsMemoryHandle();
});
// 页面移除
$(document).on('click', '.header-menu-open-pages-list ul li a', function () {
// 移除当前页面
var $parent = $(this).parent();
var key = $parent.data('key');
$parent.remove();
$('#ifcontent .iframe-item-key-' + key).remove();
// 当tabs没有了时工具箱隐藏
if ($('.header-menu-open-pages-list ul li').length == 0) {
$('.tabs-tool').addClass('am-hide')
}
// 当前没有选中的导航则模拟点击最后一个选中
if ($('.header-menu-open-pages-list ul li.am-active').length == 0) {
$('.header-menu-open-pages-list ul li:last').trigger('click');
}
// 无页面则添加默认初始化页面
if ($('.header-menu-open-pages-list ul li').length == 0) {
$('#ifcontent .window-layer').show();
$('.menu-list').find('a').removeClass('common-left-menu-active');
$('.menu-home').addClass('common-left-menu-active');
CloseMenu();
}
return false;
});
// tabs页面操作工具
$(document).on('click', '.tabs-list .tabs-tool ul li a', function () {
// 移除当前页面
var $nav_list = $(this).parents('.tabs-list').find('.header-menu-open-pages-list ul li');
// 获取当前点击的key
var key = $(this).data('key');
if (key == 'nav-refresh') {
// 刷新
var nav_key = null;
$nav_list.each((k, v) => {
if ($(v).hasClass('am-active')) {
nav_key = $(v).data('key');
}
});
if (nav_key) {
$('#ifcontent .window-layer').each((k, v) => {
if ($(v).data('key') == nav_key) {
if ($(v).find('iframe').attr('src', $(v).find('iframe').attr('src')));
}
});
}
$(this).parents('.tabs-tool').dropdown('close');
} else if (key == 'nav-close') {
// 关闭
$nav_list.each((k, v) => {
if ($(v).hasClass('am-active')) {
$(v).find('a').click();
}
});
if ($('.header-menu-open-pages-list ul li').length == 0) {
$('.menu-list').find('a').removeClass('common-left-menu-active');
$('.menu-home').addClass('common-left-menu-active');
CloseMenu();
}
} else if (key == 'nav-close-other') {
// 关闭其他
$nav_list.each((k, v) => {
if (!$(v).hasClass('am-active')) {
$(v).find('a').click();
}
});
$(this).parents('.tabs-tool').dropdown('close');
} else if (key == 'nav-close-all') {
// 关闭所有
$nav_list.each((k, v) => {
$(v).find('a').click();
});
$('.menu-list').find('a').removeClass('common-left-menu-active');
$('.menu-home').addClass('common-left-menu-active');
CloseMenu();
}
// 存储tabs标签数据
AdminMenuNavTabsMemoryHandle();
});
$('.tabs-tool').on('open.dropdown.amui', function (e) {
var self = $(this);
var tabs_lsit = $('.tabs-list .header-menu-open-pages-list ul li');
tabs_lsit.each((i, item) => {
if ($(item).hasClass('am-active') && $(item).data('key') == '-') {
self.find('ul li').each((c, child) => {
if ($(child).find('a').data('key') == 'nav-close' || $(child).find('a').data('key') == 'nav-close-all') {
$(child).addClass('am-hide');
} else {
$(child).removeClass('am-hide');
}
})
return false;
} else {
self.find('ul li').removeClass('am-hide');
}
})
});
// 双击为独立窗口
$(document).on('dblclick', '.header-menu-open-pages-list ul li', function () {
var key = $(this).data('key') || null;
// 判断是否为首页
if (key != '-') {
// 增加独立窗口类
$('.iframe-item-key-' + key).addClass('window-layer-alone-layer').show();
// 设置层级
LayerPagesLevelHandle(key);
}
});
// 窗口切换
$(document).on('click', '#ifcontent .window-layer', function () {
if ($(this).hasClass('window-layer-alone-layer')) {
LayerPagesLevelHandle($(this).data('key'));
} else {
// 非独立窗口则隐藏所有页面占位
$('#ifcontent .window-layer .window-layer-seat').hide();
}
});
// 独立窗口刷新
$(document).on('click', '.window-layer-alone-layer .window-layer-tab-bar .refresh', function () {
var $parent = $(this).parents('.window-layer');
if ($parent.find('iframe').attr('src', $parent.find('iframe').attr('src')));
});
// 收回独立窗口
$(document).on('click', '.window-layer-alone-layer .window-layer-tab-bar .recovery', function () {
// 移除class和样式
$(this).parents('.window-layer').removeClass('window-layer-alone-layer').css({ 'position': '', 'left': '', 'top': '', 'box-shadow': '', 'width': '', 'height': '', 'z-index': '' });
// 显示已选中页面
var key = $('.header-menu-open-pages-list ul li.am-active').data('key') || null;
if (key != null) {
$('#ifcontent .window-layer').not('.window-layer-alone-layer').hide();
$('#ifcontent .iframe-item-key-' + key).show();
}
// 阻止事件
return false;
});
// 移除独立窗口
$(document).on('click', '.window-layer-alone-layer .window-layer-tab-bar .close', function () {
// 移除当前页面
var $parent = $(this).parents('.window-layer');
var key = $parent.data('key');
$parent.remove();
$('.header-menu-open-pages-list ul li.nav-item-key-' + key).remove();
// 当前没有选中的导航则模拟点击最后一个选中
if ($('.header-menu-open-pages-list ul li.am-active').length == 0) {
$('.header-menu-open-pages-list ul li:last').trigger('click');
}
// 无页面则添加默认初始化页面
if ($('.header-menu-open-pages-list ul li').length == 0) {
$('#ifcontent .window-layer').show();
}
return false;
});
// 弹窗拖拽
$(document).on('mousedown', '.window-layer-alone-layer .window-layer-tab-bar', function (pe) {
var is_move = true;
var $content = $('#ifcontent');
var $layer = $(this).parents('.window-layer');
var $layer_seat = $layer.find('.window-layer-seat');
var header_height = $('header.admin-header').height();
var menu_width = parseInt($content.css('padding-left') || 0);
var width = $layer.outerWidth();
var height = $layer.outerHeight();
var win_width = $content.width() + menu_width;
var win_height = $content.height() + header_height;
var abs_x = pe.pageX - $layer.offset().left;
var abs_y = pe.pageY - $layer.offset().top;
// 设置层级
LayerPagesLevelHandle($layer.data('key'));
$layer_seat.show();
$(document).mousemove(function (event) {
if (is_move) {
// 左
var left = event.pageX - abs_x
if (left < menu_width) {
left = menu_width
} else if (left > win_width - width) {
left = win_width - width;
}
// 上
var top = event.pageY - abs_y;
if (top < header_height) {
top = header_height;
}
if (top > win_height - height) {
top = win_height - height
}
// 设置层级
var index = 0;
$layer.parent().find('.window-layer-alone-layer').each(function () {
var temp_index = parseInt($(this).css('z-index') || 0);
if (temp_index > index) {
index = temp_index
}
});
$layer.css({ 'left': left, 'top': top, 'margin': 0, 'position': 'fixed', 'z-index': index + 1 });
};
}).mouseup(function () {
if (is_move) {
$layer_seat.hide();
}
is_move = false;
}).mouseleave(function () {
if (is_move) {
$layer_seat.hide();
}
is_move = false;
});
return false;
});
// 独立窗口拉动大小
$(document).on('mousedown', '.window-layer-alone-layer .window-layer-resize-bar div[class^="window-layer-resize-item-"]', function (pe) {
var is_move = true;
var $content = $('#ifcontent');
var $layer = $(this).parents('.window-layer');
var $layer_seat = $layer.find('.window-layer-seat');
var py = pe.pageY;
var px = pe.pageX;
var resize_bar_type = $(this).data('type');
var p_init_y = $layer.css('top').replace('px', '');
var p_init_x = $layer.css('left').replace('px', '');
var p_init_height = $layer.height();
var p_init_width = $layer.width();
var header_height = $('header.admin-header').height();
var menu_width = parseInt($content.css('padding-left') || 0);
var win_width = $content.width() + menu_width;
var win_height = $content.height();
var limit_min_width = 500;
var limit_min_height = 300;
// 设置层级
LayerPagesLevelHandle($layer.data('key'));
$layer_seat.show();
$(document).mousemove(function (event) {
if (is_move) {
var hh = parseInt(event.pageY) - parseInt(py);
var ww = parseInt(event.pageX) - parseInt(px);
var temp_y = hh + parseInt(p_init_y);
var temp_x = ww + parseInt(p_init_x);
if (temp_y < header_height) {
temp_y = header_height;
}
// 高度
var height = 0;
if (['left-top', 'top', 'right-top'].indexOf(resize_bar_type) != -1) {
height = parseInt(p_init_height) - hh;
}
if (['left-bottom', 'bottom', 'right-bottom'].indexOf(resize_bar_type) != -1) {
height = parseInt(p_init_height) + hh;
}
if (height > win_height) {
height = win_height;
}
if (height < limit_min_height) {
height = limit_min_height;
}
// 宽度
var width = 0;
if (['left-top', 'left', 'left-bottom'].indexOf(resize_bar_type) != -1) {
width = parseInt(p_init_width) - ww;
}
if (['right-top', 'right', 'right-bottom'].indexOf(resize_bar_type) != -1) {
width = parseInt(p_init_width) + ww;
}
if (width > win_width) {
width = win_width;
}
if (width < limit_min_width) {
width = limit_min_width;
}
// 不允许超出外边距范围
if (event.pageY - header_height <= 0 || event.pageY >= win_height + header_height) {
return false;
}
if (event.pageX >= win_width) {
return false;
}
if (event.pageX <= menu_width) {
return false;
}
// 根据类型设置样式
switch (resize_bar_type) {
case 'left-top':
$layer.css({
top: temp_y + 'px',
height: height + 'px',
left: temp_x + 'px',
width: width + 'px'
});
break;
case 'top':
$layer.css({
top: temp_y + 'px',
height: height + 'px'
});
break;
case 'right-top':
$layer.css({
top: temp_y + 'px',
height: height + 'px',
width: width + 'px'
});
break;
case 'left':
$layer.css({
left: temp_x + 'px',
width: width + 'px'
});
break;
case 'right':
$layer.css({
width: width + 'px'
});
break;
case 'left-bottom':
$layer.css({
height: height + 'px',
left: temp_x + 'px',
width: width + 'px'
});
break;
case 'bottom':
$layer.css({
height: height + 'px'
});
break;
case 'right-bottom':
$layer.css({
height: height + 'px',
width: width + 'px'
});
break;
}
}
}).mouseup(function () {
if (is_move) {
$layer_seat.hide();
}
is_move = false;
}).mouseleave(function () {
if (is_move) {
$layer_seat.hide();
}
is_move = false;
});
return false;
});
// 监听顶部tabs记忆展示
AdminMenuNavTabsMemoryView();
// 清除选项卡的缓存
$(document).on('click', '.clear-cache-html', function () {
var key = AdminMenuNavTabsMemoryKey();
var key_data = localStorage.getItem(key) || null;
if(key_data != null) {
key_data = JSON.parse(key_data);
if (key_data.length <= 1) {
localStorage.removeItem(key);
setTimeout(function() {
window.location.reload();
}, 1500);
}
}
});
});