236 lines
9.9 KiB
JavaScript
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

/*
* 版 本 Learun-ADMS V7.0.3 力软敏 捷开发框架
* Copyright (c) 2013-2018 Hexagon PPM
* 创建人:力软-前端 开发组
* 日 期2017.03.16
* 描 述tab窗口操作方法
*/
(function ($, learun) {
"use strict";
//初始化菜单和tab页的属性Id
var iframeIdList = {};
learun.frameTab = {
iframeId: '',
init: function () {
learun.frameTab.bind();
},
bind: function () {
$(".lr-frame-tabs-wrap").lrscroll();
},
setCurrentIframeId: function (iframeId) {
learun.iframeId = iframeId;
},
open: function (module, notAllowClosed) {
var $tabsUl = $('#lr_frame_tabs_ul');
var $frameMain = $('#lr_frame_main');
if (iframeIdList[module.F_ModuleId] == undefined || iframeIdList[module.F_ModuleId] == null) {
// 隐藏之前的tab和窗口
if (learun.frameTab.iframeId != '') {
$tabsUl.find('#lr_tab_' + learun.frameTab.iframeId).removeClass('active');
$frameMain.find('#lr_iframe_' + learun.frameTab.iframeId).removeClass('active');
iframeIdList[learun.frameTab.iframeId] = 0;
}
var parentId = learun.frameTab.iframeId;
learun.frameTab.iframeId = module.F_ModuleId;
iframeIdList[learun.frameTab.iframeId] = 1;
var showTabName = module.F_FullName;
if (showTabName.length > 7) {
showTabName = showTabName.substring(0, 7) + '...';
}
// 打开一个功能模块tab_iframe页面
var $tabItem = $('<li class="lr-frame-tabItem active" id="lr_tab_' + module.F_ModuleId + '" title="' + module.F_FullName + '" parent-id="' + parentId + '" ><span>' + showTabName+ '</span></li>');
// 翻译
learun.language.get(showTabName, function (text) {
$tabItem.find('span').text(text);
if (!notAllowClosed) {
$tabItem.append('<span class="reomve" title="关闭窗口"></span>');
}
});
var $iframe = $('<iframe class="lr-frame-iframe active" id="lr_iframe_' + module.F_ModuleId + '" frameborder="0" src="' + $.rootUrl + module.F_UrlAddress + '"></iframe>');
$tabsUl.append($tabItem);
$frameMain.append($iframe);
var w = 0;
var width = $tabsUl.children().each(function () {
w += $(this).outerWidth();
});
$tabsUl.css({ 'width': w });
$tabsUl.parent().css({ 'width': w });
$(".lr-frame-tabs-wrap").lrscrollSet('moveRight');
//绑定一个点击事件
$tabItem.on('click', function () {
var id = $(this).attr('id').replace('lr_tab_', '');
learun.frameTab.focus(id);
});
$tabItem.find('.reomve').on('click', function () {
var id = $(this).parent().attr('id').replace('lr_tab_', '');
learun.frameTab.close(id);
return false;
});
if (!!learun.frameTab.opencallback) {
learun.frameTab.opencallback();
}
if (!notAllowClosed) {
var loginInfo = learun.clientdata.get(['userinfo']);
var account = '';
if (loginInfo) {
account = loginInfo.account;
}
$.ajax({
url: top.$.rootUrl + "/Home/VisitModule",
headers: { account: account },
data: { moduleName: module.F_FullName, moduleUrl: module.F_UrlAddress },
type: "post",
dataType: "json",
success: function (res) {
if (res.code == learun.httpCode.nologin) {
var _topUrl = top.$.rootUrl + '/Login/Index';
switch (res.info) {
case 'nologin':
break;
case 'noip':
_topUrl += '?error=ip';
break;
case 'notime':
_topUrl += '?error=time';
break;
case 'other':
_topUrl += '?error=other';
break;
case "timeout":
_topUrl += '?error=timeout';
break;
}
top.window.location.href = _topUrl;
return;
}
},
error: function (XMLHttpRequest, textStatus, errorThrown) {
top.window.location.href = top.$.rootUrl + '/Login/Index';
},
beforeSend: function () {
},
complete: function () {
}
});
}
}
else {
//多项目平台存在同一个菜单路径不同情况 20210609
if (module.F_UrlAddress && $('#lr_iframe_' + module.F_ModuleId) && module.F_UrlAddress != $('#lr_iframe_' + module.F_ModuleId).attr("src")) {
$('#lr_iframe_' + module.F_ModuleId).attr("src", module.F_UrlAddress);
}
learun.frameTab.focus(module.F_ModuleId);
}
},
focus: function (moduleId) {
if (iframeIdList[moduleId] == 0) {
// 定位焦点tab页
$('#lr_tab_' + learun.frameTab.iframeId).removeClass('active');
$('#lr_iframe_' + learun.frameTab.iframeId).removeClass('active');
iframeIdList[learun.frameTab.iframeId] = 0;
$('#lr_tab_' + moduleId).addClass('active');
$('#lr_iframe_' + moduleId).addClass('active');
learun.frameTab.iframeId = moduleId;
iframeIdList[moduleId] = 1;
if (!!learun.frameTab.opencallback) {
learun.frameTab.opencallback();
}
}
},
leaveFocus: function () {
$('#lr_tab_' + learun.frameTab.iframeId).removeClass('active');
$('#lr_iframe_' + learun.frameTab.iframeId).removeClass('active');
iframeIdList[learun.frameTab.iframeId] = 0;
learun.frameTab.iframeId = '';
},
close: function (moduleId) {
delete iframeIdList[moduleId];
var $this = $('#lr_tab_' + moduleId);
var $prev = $this.prev();// 获取它的上一个节点数据;
if ($prev.length < 1) {
$prev = $this.next();
}
$this.remove();
$('#lr_iframe_' + moduleId).remove();
if (moduleId == learun.frameTab.iframeId && $prev.length > 0) {
var prevId = $prev.attr('id').replace('lr_tab_', '');
$prev.addClass('active');
$('#lr_iframe_' + prevId).addClass('active');
learun.frameTab.iframeId = prevId;
iframeIdList[prevId] = 1;
learun.frameTab.focus(prevId);
}
else {
if ($prev.length < 1) {
learun.frameTab.iframeId = "";
}
}
var $tabsUl = $('#lr_frame_tabs_ul');
var w = 0;
var width = $tabsUl.children().each(function () {
w += $(this).outerWidth();
});
$tabsUl.css({ 'width': w });
$tabsUl.parent().css({ 'width': w });
if (!!learun.frameTab.closecallback) {
learun.frameTab.closecallback();
}
}
// 获取当前窗口
,currentIframe: function () {
var ifameId = 'lr_iframe_' + learun.frameTab.iframeId;
if (top.frames[ifameId].contentWindow != undefined) {
return top.frames[ifameId].contentWindow;
}
else {
return top.frames[ifameId];
}
}
,parentIframe: function () {
var ifameId = 'lr_iframe_' + top.$('#lr_tab_'+learun.frameTab.iframeId).attr('parent-id');
if (top.frames[ifameId].contentWindow != undefined) {
return top.frames[ifameId].contentWindow;
}
else {
return top.frames[ifameId];
}
}
, wfFormIframe: function () {
var currentIframe = learun.frameTab.currentIframe();
var iframeId = currentIframe.$('#form_list_iframes .form-list-iframe.active').attr('id');
return learun.iframe(iframeId, currentIframe.frames);
}
, closeByParam: function (name, value) {
$('#lr_frame_tabs_ul li').each(function () {
var id = $(this).attr('id').replace('lr_tab_', '');
var frameObj = top.frames[ 'lr_iframe_' + id];
if (frameObj.contentWindow != undefined) {
frameObj = frameObj.contentWindow;
}
if (frameObj[name] == value) {
learun.frameTab.close(id);
return false;
}
});
}
, opencallback: false
, closecallback: false
};
learun.frameTab.init();
})(window.jQuery, top.learun);