layui.define(['jquery', 'element', 'dropdown'], function (exports) { "use strict"; var MOD_NAME = 'tabPage', $ = layui.jquery, dropdown = layui.dropdown, element = layui.element; var tabPage = function (opt) { this.option = opt; }; var tabData = new Array(); var tabDataCurrent = 0; var contextTabDOM; tabPage.prototype.render = function (opt) { var option = { elem: opt.elem, data: opt.data, index: opt.index, tool: opt.tool || true, roll: opt.roll || true, success: opt.success ? opt.success : function (id) { }, session: opt.session ? opt.session : false, preload: opt.preload ? opt.preload : false, height: opt.height || "100%", width: opt.width || "100%", closeEvent: opt.closeEvent, tabMax: opt.tabMax, } if (option.session) { if (sessionStorage.getItem(option.elem + "-pear-tab-page-data") != null) { tabData = JSON.parse(sessionStorage.getItem(option.elem + "-pear-tab-page-data")); option.data = JSON.parse(sessionStorage.getItem(option.elem + "-pear-tab-page-data")); tabDataCurrent = sessionStorage.getItem(option.elem + "-pear-tab-page-data-current"); tabData.forEach(function (item, index) { if (item.id == tabDataCurrent) { option.index = index; } }) } else { tabData = opt.data; } } var lastIndex; var tab = createTab(option); $("#" + option.elem).html(tab); $(".layui-tab[lay-filter='" + option.elem + "'] .layui-tab-prev").click(function () { rollPage("left", option); }) $(".layui-tab[lay-filter='" + option.elem + "'] .layui-tab-next").click(function () { rollPage("right", option); }) element.init(); $("#" + option.elem).width(opt.width); $("#" + option.elem).height(opt.height); $("#" + option.elem).css({ position: "relative" }); closeEvent(option); option.success(sessionStorage.getItem(option.elem + "-pear-tab-page-data-current")); dropdown.render({ elem: `#${option.elem} .layui-tab-control > .layui-icon-down`, trigger: 'hover', data: [{ title: '关 闭 当 前', id: 1 }, { title: '关 闭 其 他', id: 2 }, { title: '关 闭 全 部', id: 3 }], click: function (obj) { const id = obj.id; if (id === 1) { var currentTab = $(".layui-tab[lay-filter='" + option.elem + "'] .layui-tab-title .layui-this"); if (currentTab.find("span").is(".able-close")) { var currentId = currentTab.attr("lay-id"); tabDelete(option.elem, currentId, option.closeEvent, option); } else { layer.msg("当前页面不允许关闭", { icon: 3, time: 1000 }) } } else if (id === 2) { var currentId = $(".layui-tab[lay-filter='" + option.elem + "'] .layui-tab-title .layui-this").attr("lay-id"); var tabtitle = $(".layui-tab[lay-filter='" + option.elem + "'] .layui-tab-title li"); $.each(tabtitle, function (i) { if ($(this).attr("lay-id") != currentId) { if ($(this).find("span").is(".able-close")) { tabDelete(option.elem, $(this).attr("lay-id"), option.closeEvent, option); } } }) } else { var currentId = $(".layui-tab[lay-filter='" + option.elem + "'] .layui-tab-title .layui-this").attr("lay-id"); var tabtitle = $(".layui-tab[lay-filter='" + option.elem + "'] .layui-tab-title li"); $.each(tabtitle, function (i) { if ($(this).find("span").is(".able-close")) { tabDelete(option.elem, $(this).attr("lay-id"), option.closeEvent, option); } }) } } }) $("body .layui-tab[lay-filter='" + option.elem + "'] .layui-tab-title").on("contextmenu", "li", function (e) { var top = e.clientY; var left = e.clientX; var menuWidth = 100; var menu = `