/**
* 首页方法封装处理
* Copyright (c) 2019 ruoyi
*/
layer.config({
extend: 'moon/style.css',
skin: 'layer-ext-moon'
});
var isMobile = false;
var sidebarHeight = isMobile ? '100%' : '96%';
$(function() {
// MetsiMenu
// $('#side-menu').metisMenu();
// 固定菜单栏
$('.sidebar-collapse').slimScroll({
height: sidebarHeight,
railOpacity: 0.9,
alwaysVisible: false
});
console.log(isMobile);
// 菜单切换
$('.navbar-minimalize').click(function() {
if (isMobile) {
$("body").toggleClass("canvas-menu");
} else {
$("body").toggleClass("mini-navbar");
}
SmoothlyMenu();
});
$('#side-menu>li').click(function() {
if ($('body').hasClass('canvas-menu mini-navbar')) {
NavToggle();
}
});
$('#side-menu>li li a:not(:has(span))').click(function() {
if ($(window).width() < 769) {
NavToggle();
}
});
$('.nav-close').click(NavToggle);
//ios浏览器兼容性处理
if (/(iPhone|iPad|iPod|iOS)/i.test(navigator.userAgent)) {
$('#content-main').css('overflow-y', 'auto');
}
});
$(window).bind("load resize", function() {
isMobile = $(window).width() < 769;
if (isMobile) {
$('body').addClass('canvas-menu');
$("body").removeClass("mini-navbar");
$("nav .logo").addClass("hide");
// $(".slimScrollDiv").css({ "overflow": "hidden" });
$('.navbar-static-side').fadeOut();
} else {
if($('body').hasClass('canvas-menu')) {
$('body').addClass('fixed-sidebar');
$('body').removeClass('canvas-menu');
$("body").removeClass("mini-navbar");
$("nav .logo").removeClass("hide");
// $(".slimScrollDiv").css({ "overflow": "visible" });
$('.navbar-static-side').fadeIn();
}
}
});
// function syncMenuTab(dataId) {
// if(isLinkage) {
// var $dataObj = $('a[href$="' + decodeURI(dataId) + '"]');
// if ($dataObj.attr("class") != null && !$dataObj.hasClass("noactive")) {
// $('.nav ul').removeClass("in");
// $dataObj.parents("ul").addClass("in")
// $dataObj.parents("li").addClass("active").siblings().removeClass("active").find('li').removeClass("active");
// $dataObj.parents("ul").css('height', 'auto').height();
// $(".nav ul li, .nav li").removeClass("selected");
// $dataObj.parent("li").addClass("selected");
// setIframeUrl(dataId);
//
// // 顶部菜单同步处理
// var tabStr = $dataObj.parents(".tab-pane").attr("id");
// if ($.common.isNotEmpty(tabStr)) {
// var sepIndex = tabStr.lastIndexOf('_');
// var menuId = tabStr.substring(sepIndex + 1, tabStr.length);
// $("#tab_" + menuId + " a").click();
// }
// }
// }
// }
function NavToggle() {
$('.navbar-minimalize').trigger('click');
}
function fixedSidebar() {
$('#side-menu').hide();
$("nav .logo").addClass("hide");
setTimeout(function() {
$('#side-menu').fadeIn(500);
}, 100);
}
// 设置锚点
function setIframeUrl(href) {
// if($.common.equals("history", mode)) {
// storage.set('publicPath', href);
// } else {
// var nowUrl = window.location.href;
// var newUrl = nowUrl.substring(0, nowUrl.indexOf("#"));
// window.location.href = newUrl + "#" + href;
// }
var nowUrl = window.location.href;
var newUrl = nowUrl.substring(0, nowUrl.indexOf("#"));
window.location.href = newUrl + "#" + href;
}
function SmoothlyMenu() {
if (isMobile && !$('body').hasClass('canvas-menu')) {
$('.navbar-static-side').fadeIn();
fixedSidebar();
} else if (!isMobile &&!$('body').hasClass('mini-navbar')) {
fixedSidebar();
$("nav .logo").removeClass("hide");
} else if (isMobile && $('body').hasClass('fixed-sidebar')) {
$('.navbar-static-side').fadeOut();
fixedSidebar();
} else if (!isMobile && $('body').hasClass('fixed-sidebar')) {
fixedSidebar();
} else {
$('#side-menu').removeAttr('style');
}
}
/**
* iframe处理
*/
$(function() {
//计算元素集合的总宽度
// function calSumWidth(elements) {
// var width = 0;
// $(elements).each(function() {
// width += $(this).outerWidth(true);
// });
// return width;
// }
//
// // 激活指定选项卡
// function setActiveTab(element) {
// if (!$(element).hasClass('active')) {
// var currentId = $(element).data('id');
// syncMenuTab(currentId);
// // 显示tab对应的内容区
// $('.RuoYi_iframe').each(function() {
// if ($(this).data('id') == currentId) {
// $(this).show().siblings('.RuoYi_iframe').hide();
// }
// });
// $(element).addClass('active').siblings('.menuTab').removeClass('active');
// scrollToTab(element);
// }
// }
//
// //滚动到指定选项卡
// function scrollToTab(element) {
// var marginLeftVal = calSumWidth($(element).prevAll()),
// marginRightVal = calSumWidth($(element).nextAll());
// // 可视区域非tab宽度
// var tabOuterWidth = calSumWidth($(".content-tabs").children().not(".menuTabs"));
// //可视区域tab宽度
// var visibleWidth = $(".content-tabs").outerWidth(true) - tabOuterWidth;
// //实际滚动宽度
// var scrollVal = 0;
// if ($(".page-tabs-content").outerWidth() < visibleWidth) {
// scrollVal = 0;
// } else if (marginRightVal <= (visibleWidth - $(element).outerWidth(true) - $(element).next().outerWidth(true))) {
// if ((visibleWidth - $(element).next().outerWidth(true)) > marginRightVal) {
// scrollVal = marginLeftVal;
// var tabElement = element;
// while ((scrollVal - $(tabElement).outerWidth()) > ($(".page-tabs-content").outerWidth() - visibleWidth)) {
// scrollVal -= $(tabElement).prev().outerWidth();
// tabElement = $(tabElement).prev();
// }
// }
// } else if (marginLeftVal > (visibleWidth - $(element).outerWidth(true) - $(element).prev().outerWidth(true))) {
// scrollVal = marginLeftVal - $(element).prev().outerWidth(true);
// }
// $('.page-tabs-content').animate({ marginLeft: 0 - scrollVal + 'px' }, "fast");
// }
//
// //查看左侧隐藏的选项卡
// function scrollTabLeft() {
// var marginLeftVal = Math.abs(parseInt($('.page-tabs-content').css('margin-left')));
// // 可视区域非tab宽度
// var tabOuterWidth = calSumWidth($(".content-tabs").children().not(".menuTabs"));
// //可视区域tab宽度
// var visibleWidth = $(".content-tabs").outerWidth(true) - tabOuterWidth;
// //实际滚动宽度
// var scrollVal = 0;
// if (($(".page-tabs-content").width()) < visibleWidth) {
// return false;
// } else {
// var tabElement = $(".menuTab:first");
// var offsetVal = 0;
// while ((offsetVal + $(tabElement).outerWidth(true)) <= marginLeftVal) { //找到离当前tab最近的元素
// offsetVal += $(tabElement).outerWidth(true);
// tabElement = $(tabElement).next();
// }
// offsetVal = 0;
// if (calSumWidth($(tabElement).prevAll()) > visibleWidth) {
// while ((offsetVal + $(tabElement).outerWidth(true)) < (visibleWidth) && tabElement.length > 0) {
// offsetVal += $(tabElement).outerWidth(true);
// tabElement = $(tabElement).prev();
// }
// scrollVal = calSumWidth($(tabElement).prevAll());
// }
// }
// $('.page-tabs-content').animate({ marginLeft: 0 - scrollVal + 'px' }, "fast");
// }
//
// //查看右侧隐藏的选项卡
// function scrollTabRight() {
// var marginLeftVal = Math.abs(parseInt($('.page-tabs-content').css('margin-left')));
// // 可视区域非tab宽度
// var tabOuterWidth = calSumWidth($(".content-tabs").children().not(".menuTabs"));
// //可视区域tab宽度
// var visibleWidth = $(".content-tabs").outerWidth(true) - tabOuterWidth;
// //实际滚动宽度
// var scrollVal = 0;
// if ($(".page-tabs-content").width() < visibleWidth) {
// return false;
// } else {
// var tabElement = $(".menuTab:first");
// var offsetVal = 0;
// while ((offsetVal + $(tabElement).outerWidth(true)) <= marginLeftVal) { //找到离当前tab最近的元素
// offsetVal += $(tabElement).outerWidth(true);
// tabElement = $(tabElement).next();
// }
// offsetVal = 0;
// while ((offsetVal + $(tabElement).outerWidth(true)) < (visibleWidth) && tabElement.length > 0) {
// offsetVal += $(tabElement).outerWidth(true);
// tabElement = $(tabElement).next();
// }
// scrollVal = calSumWidth($(tabElement).prevAll());
// if (scrollVal > 0) {
// $('.page-tabs-content').animate({ marginLeft: 0 - scrollVal + 'px' }, "fast");
// }
// }
// }
//通过遍历给菜单项加上data-index属性
$(".menuItem").each(function(index) {
if (!$(this).attr('data-index')) {
$(this).attr('data-index', index);
}
});
function menuItem() {
// 获取标识数据
var dataUrl = $(this).attr('href'),
dataIndex = $(this).data('index'),
menuName = $.trim($(this).text()),
isRefresh = $(this).data("refresh"),
flag = true;
var $dataObj = $('a[href$="' + decodeURI(dataUrl) + '"]');
if (!$dataObj.hasClass("noactive")) {
$('.tab-pane li').removeClass("active");
$('.nav ul').removeClass("in");
$dataObj.parents("ul").addClass("in")
$dataObj.parents("li").addClass("active").siblings().removeClass("active").find('li').removeClass("active");
$dataObj.parents("ul").css('height', 'auto').height();
$(".nav ul li, .nav li").removeClass("selected");
$(this).parent("li").addClass("selected");
}
setIframeUrl(dataUrl);
if (dataUrl == undefined || $.trim(dataUrl).length == 0) return false;
// 选项卡菜单已存在
// $('.menuTab').each(function() {
// if ($(this).data('id') == dataUrl) {
// if (!$(this).hasClass('active')) {
// $(this).addClass('active').siblings('.menuTab').removeClass('active');
// scrollToTab(this);
// // 显示tab对应的内容区
// $('.mainContent .RuoYi_iframe').each(function() {
// if ($(this).data('id') == dataUrl) {
// $(this).show().siblings('.RuoYi_iframe').hide();
// return false;
// }
// });
// }
// if (isRefresh) {
// refreshTab();
// }
// flag = false;
// return false;
// }
// });
// 选项卡菜单不存在
if (flag) {
var str = '';
$('.menuTab').removeClass('active');
// 添加选项卡对应的iframe
var str1 = '';
// $('.mainContent').find('iframe.RuoYi_iframe').hide().parents('.mainContent').append(str1);
$('.mainContent').find('iframe.RuoYi_iframe').attr("src",dataUrl);
// $.modal.loading("数据加载中,请稍后...");
// $('.mainContent iframe:visible').load(function () {
// $.modal.closeLoading();
// });
// 添加选项卡
// $('.menuTabs .page-tabs-content').append(str);
// scrollToTab($('.menuTab.active'));
}
return false;
}
function menuBlank() {
// 新窗口打开外网以http://开头,如http://ruoyi.vip
var dataUrl = $(this).attr('href');
window.open(dataUrl);
return false;
}
$('.menuItem').on('click', menuItem);
$('.menuBlank').on('click', menuBlank);
// 关闭选项卡菜单
// function closeTab() {
// var closeTabId = $(this).parents('.menuTab').data('id');
// var currentWidth = $(this).parents('.menuTab').width();
// var panelUrl = $(this).parents('.menuTab').data('panel');
// // 当前元素处于活动状态
// if ($(this).parents('.menuTab').hasClass('active')) {
//
// // 当前元素后面有同辈元素,使后面的一个元素处于活动状态
// if ($(this).parents('.menuTab').next('.menuTab').size()) {
//
// var activeId = $(this).parents('.menuTab').next('.menuTab:eq(0)').data('id');
// $(this).parents('.menuTab').next('.menuTab:eq(0)').addClass('active');
//
// $('.mainContent .RuoYi_iframe').each(function() {
// if ($(this).data('id') == activeId) {
// $(this).show().siblings('.RuoYi_iframe').hide();
// return false;
// }
// });
//
// var marginLeftVal = parseInt($('.page-tabs-content').css('margin-left'));
// if (marginLeftVal < 0) {
// $('.page-tabs-content').animate({ marginLeft: (marginLeftVal + currentWidth) + 'px' }, "fast");
// }
//
// // 移除当前选项卡
// $(this).parents('.menuTab').remove();
//
// // 移除tab对应的内容区
// $('.mainContent .RuoYi_iframe').each(function() {
// if ($(this).data('id') == closeTabId) {
// $(this).remove();
// return false;
// }
// });
// }
//
// // 当前元素后面没有同辈元素,使当前元素的上一个元素处于活动状态
// if ($(this).parents('.menuTab').prev('.menuTab').size()) {
// var activeId = $(this).parents('.menuTab').prev('.menuTab:last').data('id');
// $(this).parents('.menuTab').prev('.menuTab:last').addClass('active');
// $('.mainContent .RuoYi_iframe').each(function() {
// if ($(this).data('id') == activeId) {
// $(this).show().siblings('.RuoYi_iframe').hide();
// return false;
// }
// });
//
// // 移除当前选项卡
// $(this).parents('.menuTab').remove();
//
// // 移除tab对应的内容区
// $('.mainContent .RuoYi_iframe').each(function() {
// if ($(this).data('id') == closeTabId) {
// $(this).remove();
// return false;
// }
// });
//
// if($.common.isNotEmpty(panelUrl)){
// $('.menuTab[data-id="' + panelUrl + '"]').addClass('active').siblings('.menuTab').removeClass('active');
// $('.mainContent .RuoYi_iframe').each(function() {
// if ($(this).data('id') == panelUrl) {
// $(this).show().siblings('.RuoYi_iframe').hide();
// return false;
// }
// });
// }
// }
// }
// // 当前元素不处于活动状态
// else {
// // 移除当前选项卡
// $(this).parents('.menuTab').remove();
//
// // 移除相应tab对应的内容区
// $('.mainContent .RuoYi_iframe').each(function() {
// if ($(this).data('id') == closeTabId) {
// $(this).remove();
// return false;
// }
// });
// }
// scrollToTab($('.menuTab.active'));
// syncMenuTab($('.page-tabs-content').find('.active').attr('data-id'));
// return false;
// }
// $('.menuTabs').on('click', '.menuTab i', closeTab);
//滚动到已激活的选项卡
function showActiveTab() {
scrollToTab($('.menuTab.active'));
}
$('.tabShowActive').on('click', showActiveTab);
// 点击选项卡菜单
function activeTab() {
if (!$(this).hasClass('active')) {
var currentId = $(this).data('id');
syncMenuTab(currentId);
// 显示tab对应的内容区
$('.mainContent .RuoYi_iframe').each(function() {
if ($(this).data('id') == currentId) {
$(this).show().siblings('.RuoYi_iframe').hide();
return false;
}
});
$(this).addClass('active').siblings('.menuTab').removeClass('active');
scrollToTab(this);
}
}
// 点击选项卡菜单
$('.menuTabs').on('click', '.menuTab', activeTab);
// 刷新iframe
function refreshTab() {
var currentId = $('.page-tabs-content').find('.active').attr('data-id');
var target = $('.RuoYi_iframe[data-id="' + currentId + '"]');
var url = target.attr('src');
target.attr('src', url).ready();
}
// 页签全屏
function fullScreenTab() {
var currentId = $('.page-tabs-content').find('.active').attr('data-id');
var target = $('.RuoYi_iframe[data-id="' + currentId + '"]');
target.fullScreen(true);
}
// 关闭当前选项卡
function tabCloseCurrent() {
$('.page-tabs-content').find('.active i').trigger("click");
}
//关闭其他选项卡
function tabCloseOther() {
$('.page-tabs-content').children("[data-id]").not(":first").not(".active").each(function() {
$('.RuoYi_iframe[data-id="' + $(this).data('id') + '"]').remove();
$(this).remove();
});
$('.page-tabs-content').animate({ marginLeft: '0px' }, "fast");
}
// 关闭全部选项卡
function tabCloseAll() {
$('.page-tabs-content').children("[data-id]").not(":first").each(function() {
$('.RuoYi_iframe[data-id="' + $(this).data('id') + '"]').remove();
$(this).remove();
});
$('.page-tabs-content').children("[data-id]:first").each(function() {
$('.RuoYi_iframe[data-id="' + $(this).data('id') + '"]').show();
$(this).addClass("active");
});
$('.page-tabs-content').css("margin-left", "0");
syncMenuTab($('.page-tabs-content').find('.active').attr('data-id'));
}
// 全屏显示
$('#fullScreen').on('click', function () {
$(document).toggleFullScreen();
});
// 锁定屏幕
$('#lockScreen').on('click', function () {
storage.set('lockPath', $('.page-tabs-content').find('.active').attr('data-id'));
location.href = ctx + "lockscreen";
});
// 页签刷新按钮
$('.tabReload').on('click', refreshTab);
// 页签全屏按钮
$('.tabFullScreen').on('click', fullScreenTab);
// // 双击选项卡全屏显示
// $('.menuTabs').on('dblclick', '.menuTab', activeTabMax);
// // 左移按扭
// $('.tabLeft').on('click', scrollTabLeft);
// // 右移按扭
// $('.tabRight').on('click', scrollTabRight);
// // 关闭当前
// $('.tabCloseCurrent').on('click', tabCloseCurrent);
//
// // 关闭其他
// $('.tabCloseOther').on('click', tabCloseOther);
//
// // 关闭全部
// $('.tabCloseAll').on('click', tabCloseAll);
//
// // tab全屏显示
// $('.tabMaxCurrent').on('click', function () {
// $('.page-tabs-content').find('.active').trigger("dblclick");
// });
// // 关闭全屏
// $('#ax_close_max').click(function(){
// $('#content-main').toggleClass('max');
// $('#ax_close_max').hide();
// })
// 双击选项卡全屏显示
function activeTabMax() {
$('#content-main').toggleClass('max');
$('#ax_close_max').show();
}
$(window).keydown(function(event) {
if (event.keyCode == 27) {
$('#content-main').removeClass('max');
$('#ax_close_max').hide();
}
});
window.onhashchange = function() {
var hash = location.hash;
var url = hash.substring(1, hash.length);
$('a[href$="' + url + '"]').click();
};
// 右键菜单实现
// $.contextMenu({
// selector: ".menuTab",
// trigger: 'right',
// autoHide: true,
// items: {
// "close_current": {
// name: "关闭当前",
// icon: "fa-close",
// callback: function(key, opt) {
// opt.$trigger.find('i').trigger("click");
// }
// },
// "close_other": {
// name: "关闭其他",
// icon: "fa-window-close-o",
// callback: function(key, opt) {
// setActiveTab(this);
// tabCloseOther();
// }
// },
// "close_left": {
// name: "关闭左侧",
// icon: "fa-reply",
// callback: function(key, opt) {
// setActiveTab(this);
// this.prevAll('.menuTab').not(":last").each(function() {
// if ($(this).hasClass('active')) {
// setActiveTab(this);
// }
// $('.RuoYi_iframe[data-id="' + $(this).data('id') + '"]').remove();
// $(this).remove();
// });
// $('.page-tabs-content').animate({ marginLeft: '0px' }, "fast");
// }
// },
// "close_right": {
// name: "关闭右侧",
// icon: "fa-share",
// callback: function(key, opt) {
// setActiveTab(this);
// this.nextAll('.menuTab').each(function() {
// $('.menuTab[data-id="' + $(this).data('id') + '"]').remove();
// $(this).remove();
// });
// }
// },
// "close_all": {
// name: "全部关闭",
// icon: "fa-window-close",
// callback: function(key, opt) {
// tabCloseAll();
// }
// },
// "step": "---------",
// "full": {
// name: "全屏显示",
// icon: "fa-arrows-alt",
// callback: function(key, opt) {
// setActiveTab(this);
// var target = $('.RuoYi_iframe[data-id="' + this.data('id') + '"]');
// target.fullScreen(true);
// }
// },
// "refresh": {
// name: "刷新页面",
// icon: "fa-refresh",
// callback: function(key, opt) {
// setActiveTab(this);
// var target = $('.RuoYi_iframe[data-id="' + this.data('id') + '"]');
// var url = target.attr('src');
// $.modal.loading("数据加载中,请稍后...");
// target.attr('src', url).load(function () {
// $.modal.closeLoading();
// });
// }
// },
// "open": {
// name: "新窗口打开",
// icon: "fa-link",
// callback: function(key, opt) {
// var target = $('.RuoYi_iframe[data-id="' + this.data('id') + '"]');
// window.open(target.attr('src'));
// }
// },
// }
// })
});