123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165 |
- /*
- @Author:
- @Time: 2017-04
- @Tittle: tab
- @Description: 点击对应按钮添加新窗口
- */
- var tabFilter,menu=[],liIndex,curNav,delMenu;
- layui.define(["element","jquery"],function(exports){
- var element = layui.element(),
- $ = layui.jquery,
- layId,
- Tab = function(){
- this.tabConfig = {
- closed : true,
- openTabNum : 10,
- tabFilter : "bodyTab"
- }
- };
- //显示左侧菜单
- if($(".navBar").html() == ''){
- var _this = this;
- $(".navBar").html(navBar(navs)).height($(window).height()-230);
- element.init(); //初始化页面元素
- $(window).resize(function(){
- $(".navBar").height($(window).height()-230);
- })
- }
- //参数设置
- Tab.prototype.set = function(option) {
- var _this = this;
- $.extend(true, _this.tabConfig, option);
- return _this;
- };
- //通过title获取lay-id
- Tab.prototype.getLayId = function(title){
- $(".layui-tab-title.top_tab li").each(function(){
- if($(this).find("cite").text() == title){
- layId = $(this).attr("lay-id");
- }
- })
- return layId;
- }
- //通过title判断tab是否存在
- Tab.prototype.hasTab = function(title){
- var tabIndex = -1;
- $(".layui-tab-title.top_tab li").each(function(){
- if($(this).find("cite").text() == title){
- tabIndex = 1;
- }
- })
- return tabIndex;
- }
- //右侧内容tab操作
- var tabIdIndex = 0;
- Tab.prototype.tabAdd = function (_this) {
-
- if(window.sessionStorage.getItem("menu")){
- menu = JSON.parse(window.sessionStorage.getItem("menu"));
- }
- var that = this;
- var closed = that.tabConfig.closed,
- openTabNum = that.tabConfig.openTabNum;
- tabFilter = that.tabConfig.tabFilter;
- // $(".layui-nav .layui-nav-item a").on("click",function(){
- if(_this.find("i.iconfont,i.layui-icon").attr("data-icon") != undefined){
- var title = '';
- if(that.hasTab(_this.find("cite").text()) == -1 && _this.siblings("dl.layui-nav-child").length == 0){
- if($(".layui-tab-title.top_tab li").length == openTabNum){
- layer.msg('只能同时打开'+openTabNum+'个选项卡哦。不然系统会卡的!');
- return;
- }
- tabIdIndex++;
- if(_this.find("i.iconfont").attr("data-icon") != undefined){
- title += '<i class="iconfont '+_this.find("i.iconfont").attr("data-icon")+'"></i>';
- }else{
- title += '<i class="layui-icon">'+_this.find("i.layui-icon").attr("data-icon")+'</i>';
- }
- title += '<cite>'+_this.find("cite").text()+'</cite>';
- title += '<i class="layui-icon layui-unselect layui-tab-close" data-id="'+tabIdIndex+'">ဆ</i>';
- element.tabAdd(tabFilter, {
- title : title,
- content :"<iframe src='"+_this.attr("data-url")+"' data-id='"+tabIdIndex+"'></frame>",
- id : new Date().getTime()
- })
- //当前窗口内容
- var curmenu = {
- "icon" : _this.find("i.iconfont").attr("data-icon")!=undefined ? _this.find("i.iconfont").attr("data-icon") : _this.find("i.layui-icon").attr("data-icon"),
- "title" : _this.find("cite").text(),
- "href" : _this.attr("data-url"),
- "layId" : new Date().getTime()
- }
- menu.push(curmenu);
- window.sessionStorage.setItem("menu",JSON.stringify(menu)); //打开的窗口
- window.sessionStorage.setItem("curmenu",JSON.stringify(curmenu)); //当前的窗口
- element.tabChange(tabFilter, that.getLayId(_this.find("cite").text()));
- }else{
- //当前窗口内容
- var curmenu = {
- "icon" : _this.find("i.iconfont").attr("data-icon")!=undefined ? _this.find("i.iconfont").attr("data-icon") : _this.find("i.layui-icon").attr("data-icon"),
- "title" : _this.find("cite").text(),
- "href" : _this.attr("data-url"),
- "layId" : new Date().getTime()
- }
- window.sessionStorage.setItem("curmenu",JSON.stringify(curmenu)); //当前的窗口
- element.tabChange(tabFilter, that.getLayId(_this.find("cite").text()));
- }
- }
- // })
- }
- $("body").on("click",".top_tab li",function(){
- //切换后获取当前窗口的内容
- var curmenu = '';
- var menu = JSON.parse(window.sessionStorage.getItem("menu"));
- curmenu = menu[$(this).index()-1];
- if($(this).index() == 0){
- window.sessionStorage.setItem("curmenu",'');
- }else{
- window.sessionStorage.setItem("curmenu",JSON.stringify(curmenu));
- if(window.sessionStorage.getItem("curmenu") == "undefined"){
- //如果删除的不是当前选中的tab,则将curmenu设置成当前选中的tab
- if(curNav != JSON.stringify(delMenu)){
- window.sessionStorage.setItem("curmenu",curNav);
- }else{
- window.sessionStorage.setItem("curmenu",JSON.stringify(menu[liIndex-1]));
- }
- }
- }
- element.tabChange(tabFilter,$(this).attr("lay-id")).init();
- })
- //删除tab
- $("body").on("click",".top_tab li i.layui-tab-close",function(){
- //删除tab后重置session中的menu和curmenu
- liIndex = $(this).parent("li").index();
- var menu = JSON.parse(window.sessionStorage.getItem("menu"));
- //获取被删除元素
- delMenu = menu[liIndex-1];
- var curmenu = window.sessionStorage.getItem("curmenu")=="undefined" ? "undefined" : window.sessionStorage.getItem("curmenu")=="" ? '' : JSON.parse(window.sessionStorage.getItem("curmenu"));
- if(JSON.stringify(curmenu) != JSON.stringify(menu[liIndex-1])){ //如果删除的不是当前选中的tab
- // window.sessionStorage.setItem("curmenu",JSON.stringify(curmenu));
- curNav = JSON.stringify(curmenu);
- }else{
- if($(this).parent("li").length > liIndex){
- window.sessionStorage.setItem("curmenu",curmenu);
- curNav = curmenu;
- }else{
- window.sessionStorage.setItem("curmenu",JSON.stringify(menu[liIndex-1]));
- curNav = JSON.stringify(menu[liIndex-1]);
- }
- }
- menu.splice((liIndex-1), 1);
- window.sessionStorage.setItem("menu",JSON.stringify(menu));
- element.tabDelete("bodyTab",$(this).parent("li").attr("lay-id")).init();
- })
- var bodyTab = new Tab();
- exports("bodyTab",function(option){
- return bodyTab.set(option);
- });
- })
|