Tab 记忆

develop
就眠仪式 2021-01-26 22:21:31 +08:00
parent 705ec9c94a
commit 0bb70f4693
11 changed files with 389 additions and 150 deletions

View File

@ -0,0 +1,92 @@
.project-list-item {
background-color: #fff;
border-radius: 4px;
cursor: pointer;
transition: all .2s;
}
.project-list-item:hover {
box-shadow: 2px 0 4px rgba(0, 21, 41, .35);
}
.project-list-item .project-list-item-cover {
width: 100%;
height: 180px;
display: block;
border-top-left-radius: 4px;
border-top-right-radius: 4px;
}
.project-list-item-body {
padding: 20px;
border: 1px solid #e8e8e8;
}
.project-list-item .project-list-item-body>h2 {
font-size: 16px;
color: #333;
margin-bottom: 12px;
}
.project-list-item .project-list-item-text {
height: 40px;
overflow: hidden;
margin-bottom: 12px;
}
.project-list-item .project-list-item-desc {
position: relative;
}
.project-list-item .project-list-item-desc .time {
color: #999;
font-size: 12px;
}
.project-list-item .project-list-item-desc .ew-head-list {
position: absolute;
right: 0;
top: 0;
}
.ew-head-list .ew-head-list-item:first-child {
margin-left: 0;
}
.ew-head-list .ew-head-list-item {
width: 22px;
height: 22px;
border-radius: 50%;
border: 1px solid #fff;
margin-left: -10px;
}
.ew-head-list .ew-head-list-item {
width: 22px;
height: 22px;
border-radius: 50%;
border: 1px solid #fff;
margin-left: -10px;
}
.cloud-card-component {
padding: 20px;
}
.cloud-card-component .layui-laypage .layui-laypage-curr .layui-laypage-em {
border-radius: 0px !important;
}
.ew-table-loading {
padding: 10px 0;
text-align: center;
}
.ew-table-loading > i {
color: #999;
font-size: 30px;
}
.ew-table-loading.ew-loading-float {
position: absolute;
top: 0;
left: 0;
right: 0;
}

View File

@ -109,6 +109,7 @@ layui.define(['table', 'jquery', 'element', 'yaml','form', 'tab', 'menu', 'frame
tool: true, tool: true,
width: '100%', width: '100%',
height: '100%', height: '100%',
session: param.tab.session,
index: 0, index: 0,
tabMax: param.tab.tabMax, tabMax: param.tab.tabMax,
closeEvent: function(id) { closeEvent: function(id) {
@ -119,7 +120,13 @@ layui.define(['table', 'jquery', 'element', 'yaml','form', 'tab', 'menu', 'frame
url: param.tab.index.href, url: param.tab.index.href,
title: param.tab.index.title, title: param.tab.index.title,
close: false close: false
}] }],
success: function(id){
setTimeout(function(){
sideMenu.selectItem(id);
bodyTab.positionTab();
},500)
}
}); });
bodyTab.click(function(id) { bodyTab.click(function(id) {
if (!param.tab.keepState) { if (!param.tab.keepState) {

View File

@ -0,0 +1,209 @@
layui.define(['table', 'laypage','jquery', 'element'], function(exports) {
"use strict";
var filePath = layui.cache.modules.cardTable
.substr(0, layui.cache.modules.cardTable.lastIndexOf('/'));
// 引入tablePlug.css
layui.link(filePath + '/cardTable.css');
var MOD_NAME = 'cardTable',
$ = layui.jquery,
element = layui.element,
laypage = layui.laypage;
var _instances = {}; // 记录所有实例
/* 默认参数 */
var defaultOption = {
elem: "#currentTableId",// 构建的模型
url: "",// 数据 url 连接
loading: true,//是否加载
limit: 0, //每页数量默认是每行数量的双倍
linenum: 4, //每行数量 2,3,4,6
currentPage: 1,//当前页
limits:[], //页码
page: true, //是否分页
layout: ['count', 'prev', 'page', 'next','limit', 'skip'],//分页控件
request: {
pageName: 'page' //页码的参数名称默认page
, limitName: 'limit' //每页数据量的参数名默认limit
, idName: 'id' //主键名称默认id
, titleName: 'title' //标题名称默认title
, imageName: 'image' //图片地址默认image
, remarkName: 'remark' //备注名称默认remark
, timeName: 'time' //时间名称默认time
},
response: {
statusName: 'code' //规定数据状态的字段名称默认code
, statusCode: 0 //规定成功的状态码默认0
, msgName: 'msg' //规定状态信息的字段名称默认msg
, countName: 'count' //规定数据总数的字段名称默认count
, dataName: 'data' //规定数据列表的字段名称默认data
},
// 完 成 函 数
done: function () {
}
};
var card = function(opt) {
_instances[opt.elem.substring(1)] = this;
this.reload(opt);
};
/** 参数设置 */
card.prototype.initOptions = function (opt) {
this.option = $.extend(true, {}, defaultOption, opt);
if (!this.option.limit || this.option.limit == 0) {
this.option.limit = this.option.linenum * 2;
}
if (!this.option.limits || this.option.limits.length == 0) {
this.option.limits = [this.option.limit];
}
};
card.prototype.init = function () {
var option = this.option;
var url = option.url;
var html = "";
html += option.loading == true ? ' <div class="ew-table-loading">' : ' <div class="ew-table-loading layui-hide">';
html += ' <i class="layui-icon layui-icon-loading layui-anim layui-anim-rotate layui-anim-loop"></i>';
html += ' </div>';
$(option.elem).html(html);
// 根 据 请 求 方 式 获 取 数 据
html = "";
if (url != null) {
if (!!option.page) {
url = url + '&' + option.request.limitName + '=' + option.limit;
url = url + '&' + option.request.pageName + '=' + option.currentPage;
}
if (!!option.where) {
for (let key in option.where) {
url = url + '&' + key + '=' + option.where[key];
}
}
var data = getData(url);
data = initData(data, option);
if (data.code != option.response.statusCode) {
html = "<p>" + data.msg + "</p>";
}
else {
option.data = data.data;
option.count = data.count;
// 根据结果进行相应结构的创建
if (!!option.data && option.data.length > 0) {
html = createComponent(option.elem.substring(1),option.linenum,data.data);
html += "<div id='cardpage'></div>";
}
else {
html = "<p>没有数据</p>";
}
}
}
$(option.elem).html(html);
if (option.page) {
// 初始化分页组件
laypage.render({
elem: 'cardpage'
, count: option.count, limit: option.limit, limits:option.limits, curr: option.currentPage
, layout: option.layout
, jump: function (obj, first) {
option.limit = obj.limit;
option.currentPage = obj.curr;
if (!first) {
_instances[option.elem.substring(1)].reload(option);
}
}
});
}
}
card.prototype.reload = function (opt) {
this.initOptions(this.option ? $.extend(true, this.option, opt) : opt);
this.init(); // 初始化表格
}
function createComponent(elem,linenum,data) {
var html = "<div class='cloud-card-component'>"
var content = createCards(elem, linenum,data);
var page = "";
content = content + page;
html += content + "</div>"
return html;
}
/** 创建指定数量的卡片 */
function createCards(elem, linenum,data) {
var content = "<div class='layui-row layui-col-space30'>";
for (var i = 0; i < data.length; i++) {
content += createCard(elem, linenum,data[i],i);
}
content += "</div>";
return content;
}
/** 创建一个卡片 */
function createCard(elem, linenum, item, no) {
var line = 12 / linenum;
var card =
'<div id=' + item.id + ' onclick="cardTableCheckedCard(' + elem + ',this)" class="layui-col-md' + line + ' ew-datagrid-item" data-index="' + no+'" data-number="1"> <div class="project-list-item"> <img class="project-list-item-cover" src="' +item.image + '"> <div class="project-list-item-body"> <h2>' + item.title + '</h2> <div class="project-list-item-text layui-text">' + item.remark + '</div> <div class="project-list-item-desc"> <span class="time">' +item.time + '</span> <div class="ew-head-list"></div> </div> </div > </div > </div > '
return card;
}
/** 格式化返回参数 */
function initData(tempData, option) {
var data = {};
data.code = tempData[option.response.statusName];
data.msg = tempData[option.response.msgName];
data.count = tempData[option.response.countName];
var dataList = tempData[option.response.dataName];
alert(JSON.stringify(dataList));
data.data = [];
for (var i = 0; i < dataList.length; i++) {
var item = {};
item.id = dataList[i][option.request.idName];
item.image = dataList[i][option.request.imageName];
item.title = dataList[i][option.request.titleName];
item.remark = dataList[i][option.request.remarkName];
item.time = dataList[i][option.request.timeName];
data.data.push(item);
}
return data;
}
/** 同 步 请 求 获 取 数 据 */
function getData(url) {
$.ajaxSettings.async = false;
var data = null;
$.get(url, function (result) {
data = result;
});
$.ajaxSettings.async = true;
return data;
}
//卡片点击事件
window.cardTableCheckedCard = function (elem,obj) {
$(obj).addClass('layui-table-click').siblings().removeClass('layui-table-click');
var item = {};
item.id = obj.id;
item.image = $(obj).find('.project-list-item-cover')[0].src;
item.title = $(obj).find('h2')[0].innerHTML;
item.remark = $(obj).find('.project-list-item-text')[0].innerHTML;
item.time = $(obj).find('.time')[0].innerHTML;
_instances[elem.id].option.checkedItem = item;
}
/** 对外提供的方法 */
var tt = {
/* 渲染 */
render: function (options) {
return new card(options);
},
/* 重载 */
reload: function (id, opt) {
_instances[id].reload(opt);
},
/* 获取选中参数 */
getChecked: function (id) {
var option = _instances[id].option;
var data = option.checkedItem;
var item = {};
item[option.request.idName] = data.id;
item[option.request.imageName] = data.image;
item[option.request.titleName] = data.title;
item[option.request.remarkName] = data.remark;
item[option.request.timeName] = data.time;
return item;
},
}
exports(MOD_NAME, tt);
})

View File

@ -9,6 +9,8 @@ layui.define(['jquery', 'element'], function(exports) {
this.option = opt; this.option = opt;
}; };
var tabData = new Array();
var tabDataCurrent = 0;
pearTab.prototype.render = function(opt) { pearTab.prototype.render = function(opt) {
//默认配置值 //默认配置值
@ -21,46 +23,57 @@ layui.define(['jquery', 'element'], function(exports) {
width: opt.width, width: opt.width,
height: opt.height, height: opt.height,
tabMax: opt.tabMax, tabMax: opt.tabMax,
closeEvent: opt.closeEvent session: opt.session?opt.session:false,
closeEvent: opt.closeEvent,
success: opt.success?opt.success:function(id){}
}
// 初始化,检索 session 是否开启
if(option.session){
// 替换 opt.data 数据
if(sessionStorage.getItem(option.elem+"-pear-tab-data")!=null){
tabData = JSON.parse(sessionStorage.getItem(option.elem+"-pear-tab-data"));
option.data = JSON.parse(sessionStorage.getItem(option.elem+"-pear-tab-data"));
tabDataCurrent = sessionStorage.getItem(option.elem+"-pear-tab-data-current");
tabData.forEach(function(item,index){
if(item.id == tabDataCurrent){
option.index = index;
}
})
}else{
tabData = opt.data;
}
} }
var tab = createTab(option); var tab = createTab(option);
$("#" + option.elem).html(tab); $("#" + option.elem).html(tab);
$(".layui-tab[lay-filter='" + option.elem + "'] .layui-tab-prev").click(function() { $(".layui-tab[lay-filter='" + option.elem + "'] .layui-tab-prev").click(function() {
rollPage("left", option); rollPage("left", option);
}) })
$(".layui-tab[lay-filter='" + option.elem + "'] .layui-tab-next").click(function() { $(".layui-tab[lay-filter='" + option.elem + "'] .layui-tab-next").click(function() {
rollPage("right", option); rollPage("right", option);
}) })
element.init(); element.init();
toolEvent(option); toolEvent(option);
$("#" + option.elem).width(opt.width); $("#" + option.elem).width(opt.width);
$("#" + option.elem).height(opt.height); $("#" + option.elem).height(opt.height);
$("#" + option.elem).css({ $("#" + option.elem).css({
position: "relative" position: "relative"
}); });
closeEvent(option); closeEvent(option);
option.success(sessionStorage.getItem(option.elem+"-pear-tab-data-current"));
// 执行回调
return new pearTab(option); return new pearTab(option);
} }
pearTab.prototype.click = function(callback) { pearTab.prototype.click = function(callback) {
var elem = this.option.elem; var elem = this.option.elem;
var option = this.option;
element.on('tab(' + this.option.elem + ')', function(data) { element.on('tab(' + this.option.elem + ')', function(data) {
var id = $("#" + elem + " .layui-tab-title .layui-this").attr("lay-id"); var id = $("#" + elem + " .layui-tab-title .layui-this").attr("lay-id");
sessionStorage.setItem(option.elem+"-pear-tab-data-current",id);
callback(id); callback(id);
}); });
} }
@ -80,9 +93,7 @@ layui.define(['jquery', 'element'], function(exports) {
} }
pearTab.prototype.addTab = function(opt) { pearTab.prototype.addTab = function(opt) {
var title = ''; var title = '';
if (opt.close) { if (opt.close) {
title += '<span class="pear-tab-active"></span><span class="able-close">' + opt.title + title += '<span class="pear-tab-active"></span><span class="able-close">' + opt.title +
'</span><i class="layui-icon layui-unselect layui-tab-close">ဆ</i>'; '</span><i class="layui-icon layui-unselect layui-tab-close">ဆ</i>';
@ -96,6 +107,9 @@ layui.define(['jquery', 'element'], function(exports) {
opt.url + '" style="width:100%;height:100%;"></iframe>', opt.url + '" style="width:100%;height:100%;"></iframe>',
id: opt.id id: opt.id
}); });
tabData.push(opt);
sessionStorage.setItem(this.option.elem+"-pear-tab-data",JSON.stringify(tabData));
sessionStorage.setItem(this.option.elem+"-pear-tab-data-current",opt.id);
element.tabChange(this.option.elem, opt.id); element.tabChange(this.option.elem, opt.id);
} }
var index = 0; var index = 0;
@ -152,6 +166,8 @@ layui.define(['jquery', 'element'], function(exports) {
opt.url + '" style="width:100%;height:100%;"></iframe>', opt.url + '" style="width:100%;height:100%;"></iframe>',
id: opt.id id: opt.id
}); });
tabData.push(opt);
sessionStorage.setItem(elem+"-pear-tab-data",JSON.stringify(tabData));
} else { } else {
var isData = false; var isData = false;
$.each($(".layui-tab[lay-filter='" + elem + "'] .layui-tab-title li[lay-id]"), function() { $.each($(".layui-tab[lay-filter='" + elem + "'] .layui-tab-title li[lay-id]"), function() {
@ -184,45 +200,37 @@ layui.define(['jquery', 'element'], function(exports) {
opt.url + '" style="width:100%;height:100%;"></iframe>', opt.url + '" style="width:100%;height:100%;"></iframe>',
id: opt.id id: opt.id
}); });
tabData.push(opt);
sessionStorage.setItem(elem+"-pear-tab-data",JSON.stringify(tabData));
} }
} }
sessionStorage.setItem(elem+"-pear-tab-data-current",opt.id);
element.tabChange(elem, opt.id); element.tabChange(elem, opt.id);
} }
/** 添 加 唯 一 选 项 卡 */ /** 添 加 唯 一 选 项 卡 */
pearTab.prototype.addTabOnly = function(opt, time) { pearTab.prototype.addTabOnly = function(opt, time) {
var title = ''; var title = '';
if (opt.close) { if (opt.close) {
title += '<span class="pear-tab-active"></span><span class="able-close">' + opt.title + title += '<span class="pear-tab-active"></span><span class="able-close">' + opt.title +
'</span><i class="layui-icon layui-unselect layui-tab-close">ဆ</i>' '</span><i class="layui-icon layui-unselect layui-tab-close">ဆ</i>';
} else { } else {
title += '<span class="pear-tab-active"></span><span class="disable-close">' + opt.title + title += '<span class="pear-tab-active"></span><span class="disable-close">' + opt.title +
'</span><i class="layui-icon layui-unselect layui-tab-close">ဆ</i>' '</span><i class="layui-icon layui-unselect layui-tab-close">ဆ</i>';
} }
if ($(".layui-tab[lay-filter='" + this.option.elem + "'] .layui-tab-title li[lay-id]").length <= 0) { if ($(".layui-tab[lay-filter='" + this.option.elem + "'] .layui-tab-title li[lay-id]").length <= 0) {
if (time != false && time != 0) { if (time != false && time != 0) {
var load = '<div id="pear-tab-loading' + index + '" class="pear-tab-loading">' + var load = '<div id="pear-tab-loading' + index + '" class="pear-tab-loading">' +
'<div class="ball-loader">' + '<div class="ball-loader">' +
'<span></span><span></span><span></span><span></span>' + '<span></span><span></span><span></span><span></span>' +
'</div>' + '</div>' +
'</div>' '</div>';
$("#" + this.option.elem).find(".pear-tab").append(load); $("#" + this.option.elem).find(".pear-tab").append(load);
var pearLoad = $("#" + this.option.elem).find("#pear-tab-loading" + index); var pearLoad = $("#" + this.option.elem).find("#pear-tab-loading" + index);
pearLoad.css({ pearLoad.css({
display: "block" display: "block"
}); });
setTimeout(function() { setTimeout(function() {
pearLoad.fadeOut(500); pearLoad.fadeOut(500);
}, time); }, time);
@ -234,10 +242,11 @@ layui.define(['jquery', 'element'], function(exports) {
opt.url + '" style="width:100%;height:100%;"></iframe>', opt.url + '" style="width:100%;height:100%;"></iframe>',
id: opt.id id: opt.id
}); });
tabData.push(opt);
sessionStorage.setItem(this.option.elem+"-pear-tab-data",JSON.stringify(tabData));
sessionStorage.setItem(this.option.elem+"-pear-tab-data-current",opt.id);
} else { } else {
var isData = false; var isData = false;
//查询当前选项卡数量 //查询当前选项卡数量
if ($(".layui-tab[lay-filter='" + this.option.elem + "'] .layui-tab-title li[lay-id]").length >= this.option.tabMax) { if ($(".layui-tab[lay-filter='" + this.option.elem + "'] .layui-tab-title li[lay-id]").length >= this.option.tabMax) {
layer.msg("最多打开" + this.option.tabMax + "个标签页", { layer.msg("最多打开" + this.option.tabMax + "个标签页", {
@ -247,18 +256,13 @@ layui.define(['jquery', 'element'], function(exports) {
}); });
return false; return false;
} }
$.each($(".layui-tab[lay-filter='" + this.option.elem + "'] .layui-tab-title li[lay-id]"), function() { $.each($(".layui-tab[lay-filter='" + this.option.elem + "'] .layui-tab-title li[lay-id]"), function() {
if ($(this).attr("lay-id") == opt.id) { if ($(this).attr("lay-id") == opt.id) {
isData = true; isData = true;
} }
}) })
if (isData == false) { if (isData == false) {
if (time != false && time != 0) { if (time != false && time != 0) {
var load = '<div id="pear-tab-loading' + index + '" class="pear-tab-loading">' + var load = '<div id="pear-tab-loading' + index + '" class="pear-tab-loading">' +
'<div class="ball-loader">' + '<div class="ball-loader">' +
'<span></span><span></span><span></span><span></span>' + '<span></span><span></span><span></span><span></span>' +
@ -270,31 +274,30 @@ layui.define(['jquery', 'element'], function(exports) {
pearLoad.css({ pearLoad.css({
display: "block" display: "block"
}); });
setTimeout(function() { setTimeout(function() {
pearLoad.fadeOut(500); pearLoad.fadeOut(500);
}, time); }, time);
index++; index++;
} }
element.tabAdd(this.option.elem, { element.tabAdd(this.option.elem, {
title: title, title: title,
content: '<iframe id="' + opt.id + '" data-frameid="' + opt.id + '" scrolling="auto" frameborder="0" src="' + content: '<iframe id="' + opt.id + '" data-frameid="' + opt.id + '" scrolling="auto" frameborder="0" src="' +
opt.url + '" style="width:100%;height:100%;"></iframe>', opt.url + '" style="width:100%;height:100%;"></iframe>',
id: opt.id id: opt.id
}); });
tabData.push(opt);
sessionStorage.setItem(this.option.elem+"-pear-tab-data",JSON.stringify(tabData));
sessionStorage.setItem(this.option.elem+"-pear-tab-data-current",opt.id);
} }
} }
element.tabChange(this.option.elem, opt.id); element.tabChange(this.option.elem, opt.id);
sessionStorage.setItem(this.option.elem+"-pear-tab-data-current",opt.id);
} }
// 刷 新 指 定 的 选 项 卡 // 刷 新 指 定 的 选 项 卡
pearTab.prototype.refresh = function(time) { pearTab.prototype.refresh = function(time) {
// 刷 新 指 定 的 选 项 卡 // 刷 新 指 定 的 选 项 卡
if (time != false && time != 0) { if (time != false && time != 0) {
var load = '<div id="pear-tab-loading' + index + '" class="pear-tab-loading">' + var load = '<div id="pear-tab-loading' + index + '" class="pear-tab-loading">' +
'<div class="ball-loader">' + '<div class="ball-loader">' +
'<span></span><span></span><span></span><span></span>' + '<span></span><span></span><span></span><span></span>' +
@ -321,7 +324,7 @@ layui.define(['jquery', 'element'], function(exports) {
} }
} }
function tabDelete(elem, id, callback) { function tabDelete(elem, id, callback,option) {
//根据 elem id 来删除指定的 layui title li //根据 elem id 来删除指定的 layui title li
var tabTitle = $(".layui-tab[lay-filter='" + elem + "']").find(".layui-tab-title"); var tabTitle = $(".layui-tab[lay-filter='" + elem + "']").find(".layui-tab-title");
@ -329,9 +332,7 @@ layui.define(['jquery', 'element'], function(exports) {
// 删除指定 id 的 title // 删除指定 id 的 title
var removeTab = tabTitle.find("li[lay-id='" + id + "']"); var removeTab = tabTitle.find("li[lay-id='" + id + "']");
var nextNode = removeTab.next("li"); var nextNode = removeTab.next("li");
if(!removeTab.hasClass("layui-this")){ if(!removeTab.hasClass("layui-this")){
removeTab.remove(); removeTab.remove();
var tabContent = $(".layui-tab[lay-filter='" + elem + "']").find("iframe[id='" + id + "']").parent(); var tabContent = $(".layui-tab[lay-filter='" + elem + "']").find("iframe[id='" + id + "']").parent();
tabContent.remove(); tabContent.remove();
@ -339,72 +340,57 @@ layui.define(['jquery', 'element'], function(exports) {
} }
var currId; var currId;
if (nextNode.length) { if (nextNode.length) {
nextNode.addClass("layui-this"); nextNode.addClass("layui-this");
currId = nextNode.attr("lay-id"); currId = nextNode.attr("lay-id");
$("#" + elem + " [id='" + currId + "']").parent().addClass("layui-show"); $("#" + elem + " [id='" + currId + "']").parent().addClass("layui-show");
} else { } else {
var prevNode = removeTab.prev("li"); var prevNode = removeTab.prev("li");
prevNode.addClass("layui-this"); prevNode.addClass("layui-this");
currId = prevNode.attr("lay-id"); currId = prevNode.attr("lay-id");
$("#" + elem + " [id='" + currId + "']").parent().addClass("layui-show"); $("#" + elem + " [id='" + currId + "']").parent().addClass("layui-show");
} }
callback(currId); callback(currId);
tabData = JSON.parse(sessionStorage.getItem(elem+"-pear-tab-data"));
tabDataCurrent = sessionStorage.getItem(elem+"-pear-tab-data-current");
tabData = tabData.filter(function(item){
return item.id!=id;
})
sessionStorage.setItem(elem+"-pear-tab-data",JSON.stringify(tabData));
sessionStorage.setItem(elem+"-pear-tab-data-current",currId);
removeTab.remove(); removeTab.remove();
// 删除 content // 删除 content
var tabContent = $(".layui-tab[lay-filter='" + elem + "']").find("iframe[id='" + id + "']").parent(); var tabContent = $(".layui-tab[lay-filter='" + elem + "']").find("iframe[id='" + id + "']").parent();
// 删除
tabContent.remove(); tabContent.remove();
} }
function createTab(option) { function createTab(option) {
var type = ""; var type = "";
var types = option.type+" "; var types = option.type+" ";
if (option.roll == true) { if (option.roll == true) {
type = "layui-tab-roll"; type = "layui-tab-roll";
} }
if (option.tool != false) { if (option.tool != false) {
type = "layui-tab-tool"; type = "layui-tab-tool";
} }
if (option.roll == true && option.tool != false) { if (option.roll == true && option.tool != false) {
type = "layui-tab-rollTool"; type = "layui-tab-rollTool";
} }
var tab = '<div class="pear-tab ' + types + type + ' layui-tab" lay-filter="' + option.elem + '" lay-allowClose="true">'; var tab = '<div class="pear-tab ' + types + type + ' layui-tab" lay-filter="' + option.elem + '" lay-allowClose="true">';
var title = '<ul class="layui-tab-title">'; var title = '<ul class="layui-tab-title">';
var content = '<div class="layui-tab-content">'; var content = '<div class="layui-tab-content">';
var control = '<div class="layui-tab-control"><li class="layui-tab-prev layui-icon layui-icon-left"></li><li class="layui-tab-next layui-icon layui-icon-right"></li><li class="layui-tab-tool layui-icon layui-icon-down"><ul class="layui-nav" lay-filter=""><li class="layui-nav-item"><a href="javascript:;"></a><dl class="layui-nav-child">';
var control =
'<div class="layui-tab-control"><li class="layui-tab-prev layui-icon layui-icon-left"></li><li class="layui-tab-next layui-icon layui-icon-right"></li><li class="layui-tab-tool layui-icon layui-icon-down"><ul class="layui-nav" lay-filter=""><li class="layui-nav-item"><a href="javascript:;"></a><dl class="layui-nav-child">';
// 处 理 选 项 卡 头 部 // 处 理 选 项 卡 头 部
var index = 0; var index = 0;
$.each(option.data, function(i, item) { $.each(option.data, function(i, item) {
var TitleItem = ''; var TitleItem = '';
if (option.index == index) { if (option.index == index) {
TitleItem += '<li lay-id="' + item.id + '" class="layui-this"><span class="pear-tab-active"></span>'; TitleItem += '<li lay-id="' + item.id + '" class="layui-this"><span class="pear-tab-active"></span>';
} else { } else {
TitleItem += '<li lay-id="' + item.id + '" ><span class="pear-tab-active"></span>'; TitleItem += '<li lay-id="' + item.id + '" ><span class="pear-tab-active"></span>';
} }
if (item.close) { if (item.close) {
@ -414,26 +400,19 @@ layui.define(['jquery', 'element'], function(exports) {
// 当 前 选 项 卡 不 允 许 关 闭 // 当 前 选 项 卡 不 允 许 关 闭
TitleItem += '<span class="disable-close">' + item.title + '</span>'; TitleItem += '<span class="disable-close">' + item.title + '</span>';
} }
TitleItem += '<i class="layui-icon layui-unselect layui-tab-close">ဆ</i></li>'; TitleItem += '<i class="layui-icon layui-unselect layui-tab-close">ဆ</i></li>';
title += TitleItem; title += TitleItem;
if (option.index == index) { if (option.index == index) {
// 处 理 显 示 内 容 // 处 理 显 示 内 容
content += '<div class="layui-show layui-tab-item"><iframe id="' + item.id + '" data-frameid="' + item.id + content += '<div class="layui-show layui-tab-item"><iframe id="' + item.id + '" data-frameid="' + item.id +
'" src="' + item.url + '" src="' + item.url +
'" frameborder="no" border="0" marginwidth="0" marginheight="0" style="width: 100%;height: 100%;"></iframe></div>' '" frameborder="no" border="0" marginwidth="0" marginheight="0" style="width: 100%;height: 100%;"></iframe></div>'
} else { } else {
// 处 理 显 示 内 容 // 处 理 显 示 内 容
content += '<div class="layui-tab-item"><iframe id="' + item.id + '" data-frameid="' + item.id + '" src="' + content += '<div class="layui-tab-item"><iframe id="' + item.id + '" data-frameid="' + item.id + '" src="' +
item.url + item.url +
'" frameborder="no" border="0" marginwidth="0" marginheight="0" style="width: 100%;height: 100%;"></iframe></div>' '" frameborder="no" border="0" marginwidth="0" marginheight="0" style="width: 100%;height: 100%;"></iframe></div>'
} }
index++; index++;
}); });
@ -455,17 +434,12 @@ layui.define(['jquery', 'element'], function(exports) {
function rollPage(d, option) { function rollPage(d, option) {
var $tabTitle = $('#' + option.elem + ' .layui-tab-title'); var $tabTitle = $('#' + option.elem + ' .layui-tab-title');
var left = $tabTitle.scrollLeft(); var left = $tabTitle.scrollLeft();
if ('left' === d) { if ('left' === d) {
$tabTitle.animate({ $tabTitle.animate({
scrollLeft: left - 450 scrollLeft: left - 450
}, 200); }, 200);
} else { } else {
$tabTitle.animate({ $tabTitle.animate({
scrollLeft: left + 450 scrollLeft: left + 450
}, 200); }, 200);
@ -475,7 +449,7 @@ layui.define(['jquery', 'element'], function(exports) {
function closeEvent(option) { function closeEvent(option) {
$(".layui-tab[lay-filter='" + option.elem + "']").on("click", ".layui-tab-close", function() { $(".layui-tab[lay-filter='" + option.elem + "']").on("click", ".layui-tab-close", function() {
var layid = $(this).parent().attr("lay-id"); var layid = $(this).parent().attr("lay-id");
tabDelete(option.elem, layid, option.closeEvent); tabDelete(option.elem, layid, option.closeEvent,option);
}) })
} }
@ -485,7 +459,7 @@ layui.define(['jquery', 'element'], function(exports) {
var currentTab = $(".layui-tab[lay-filter='" + option.elem + "'] .layui-tab-title .layui-this"); var currentTab = $(".layui-tab[lay-filter='" + option.elem + "'] .layui-tab-title .layui-this");
if (currentTab.find("span").is(".able-close")) { if (currentTab.find("span").is(".able-close")) {
var currentId = currentTab.attr("lay-id"); var currentId = currentTab.attr("lay-id");
tabDelete(option.elem, currentId, option.closeEvent); tabDelete(option.elem, currentId, option.closeEvent,option);
} }
}) })
@ -496,7 +470,7 @@ layui.define(['jquery', 'element'], function(exports) {
$.each(tabtitle, function(i) { $.each(tabtitle, function(i) {
if ($(this).attr("lay-id") != currentId) { if ($(this).attr("lay-id") != currentId) {
if ($(this).find("span").is(".able-close")) { if ($(this).find("span").is(".able-close")) {
tabDelete(option.elem, $(this).attr("lay-id"), option.closeEvent); tabDelete(option.elem, $(this).attr("lay-id"), option.closeEvent,option);
} }
} }
}) })
@ -507,7 +481,7 @@ layui.define(['jquery', 'element'], function(exports) {
var tabtitle = $(".layui-tab[lay-filter='" + option.elem + "'] .layui-tab-title li"); var tabtitle = $(".layui-tab[lay-filter='" + option.elem + "'] .layui-tab-title li");
$.each(tabtitle, function(i) { $.each(tabtitle, function(i) {
if ($(this).find("span").is(".able-close")) { if ($(this).find("span").is(".able-close")) {
tabDelete(option.elem, $(this).attr("lay-id"), option.closeEvent); tabDelete(option.elem, $(this).attr("lay-id"), option.closeEvent,option);
} }
}) })
}) })

View File

@ -43,7 +43,8 @@ layui.config({
yaml:"yaml", // yaml 解析组件 yaml:"yaml", // yaml 解析组件
context: "context", // 上下文组件 context: "context", // 上下文组件
http: "http", // ajax请求组件 http: "http", // ajax请求组件
theme: "theme" // 主题转换 theme: "theme", // 主题转换
cardTable: "cardTable"
}).use(['layer', 'theme'], function () { }).use(['layer', 'theme'], function () {
layui.theme.changeTheme(window, false); layui.theme.changeTheme(window, false);

View File

@ -43,8 +43,8 @@ layui.config({
yaml:"yaml", // yaml 解析组件 yaml:"yaml", // yaml 解析组件
context: "context", // 上下文组件 context: "context", // 上下文组件
http: "http", // ajax请求组件 http: "http", // ajax请求组件
theme: "theme" // 主题转换 theme: "theme", // 主题转换
cardTable: "cardTable"
}).use(['layer', 'theme'], function () { }).use(['layer', 'theme'], function () {
layui.theme.changeTheme(window, false); layui.theme.changeTheme(window, false);
}); });

View File

@ -23,6 +23,8 @@ tab:
muiltTab: true muiltTab: true
## 切换选项卡时,是否刷新页面状态 ## 切换选项卡时,是否刷新页面状态
keepState: true keepState: true
## 是否开启 Tab 记忆
session: true
## 最大可打开的选项卡数量 ## 最大可打开的选项卡数量
tabMax: "30" tabMax: "30"
## 默认选项卡数据 ## 默认选项卡数据

View File

@ -85,7 +85,6 @@
image.onload = function(){ image.onload = function(){
$(".layui-nav-img").attr("src", convert.imageToBase64(image)); $(".layui-nav-img").attr("src", convert.imageToBase64(image));
} }
// 框架初始化时会读取 根目录下 pear.config.yml 文件作为初始化配置 // 框架初始化时会读取 根目录下 pear.config.yml 文件作为初始化配置
// 你可以通过 admin.setConfigPath 方法修改配置文件位置 // 你可以通过 admin.setConfigPath 方法修改配置文件位置
// 你可以通过 admin.setConfigType 方法修改配置文件类型 // 你可以通过 admin.setConfigType 方法修改配置文件类型

View File

@ -42,57 +42,14 @@
</div> </div>
</body> </body>
<script type="text/html" id="user-toolbar">
<button class="pear-btn pear-btn-primary pear-btn-md" lay-event="add">
<i class="layui-icon layui-icon-add-1"></i>
新增
</button>
<button class="pear-btn pear-btn-danger pear-btn-md" lay-event="batchRemove">
<i class="layui-icon layui-icon-delete"></i>
删除
</button>
</script>
<script type="text/html" id="user-bar">
<button class="pear-btn pear-btn-primary pear-btn-sm" lay-event="edit"><i class="layui-icon layui-icon-edit"></i></button>
<button class="pear-btn pear-btn-danger pear-btn-sm" lay-event="remove"><i class="layui-icon layui-icon-delete"></i></button>
</script>
<script type="text/html" id="user-enable">
<input type="checkbox" name="enable" value="{{d.id}}" lay-skin="switch" lay-text="启用|禁用" lay-filter="user-enable" {{ d.enable == 0 ? 'checked' : '' }}>
</script>
<script type="text/html" id="user-sex">
{{#if (d.sex == 1) { }}
<span></span>
{{# }else if(d.sex == 2){ }}
<span></span>
{{# } }}
</script>
<script type="text/html" id="user-login">
{{#if (d.login == 0) { }}
<span>在线</span>
{{# }else if(d.sex == 1){ }}
<span>离线</span>
{{# } }}
</script>
<script type="text/html" id="user-createTime">
{{layui.util.toDateString(d.createTime, 'yyyy-MM-dd')}}
</script>
<script src="../../component/layui/layui.js"></script> <script src="../../component/layui/layui.js"></script>
<script src="../../component/pear/pear.js"></script> <script src="../../component/pear/pear.js"></script>
<script> <script>
layui.use(['table','form','jquery','card'],function () { layui.use(['form','card'],function () {
let table = layui.table;
let form = layui.form; let form = layui.form;
let $ = layui.jquery;
let card = layui.card; let card = layui.card;
let MODULE_PATH = "/system/user/";
card.render({ card.render({
elem: '#user-table', elem: '#user-table',
url:'../../admin/data/card.json', url:'../../admin/data/card.json',

View File

@ -50,7 +50,7 @@
</div> </div>
<div class="layui-card-body"> <div class="layui-card-body">
<!-- 内 容 页 面 --> <!-- 内 容 页 面 -->
<div id="content"></div> <div id="contents"></div>
</div> </div>
</div> </div>
</div> </div>
@ -62,7 +62,7 @@
<pre class="layui-code" lay-encode="true"> <pre class="layui-code" lay-encode="true">
tab.render({ tab.render({
elem: 'content', elem: 'contents',
roll: false, roll: false,
tool: false, tool: false,
width: '100%', width: '100%',
@ -107,12 +107,13 @@
layui.code(); layui.code();
tab.render({ tab.render({
elem: 'content', elem: 'contents',
roll: false, roll: false,
tool: false, tool: false,
width: '100%', width: '100%',
height: '485px', height: '485px',
index: 0, index: 0,
session: false,
tabMax: 30, tabMax: 30,
closeEvent: function(id) { closeEvent: function(id) {
layer.msg("关闭回调") layer.msg("关闭回调")
@ -128,18 +129,18 @@
$(".add").click(function(){ $(".add").click(function(){
// ADD 添加方法 // ADD 添加方法
tab.addTabOnlyByElem('content',{id:'demo',title:'Demo',url:'../system/space.html',close: true}) tab.addTabOnlyByElem('contents',{id:'demo',title:'Demo',url:'../system/space.html',close: true})
}) })
$(".enable").click(function(){ $(".enable").click(function(){
// ADD 添加方法 // ADD 添加方法
tab.addTabOnlyByElem('content',{id:'tabContent',title:'高级操作',url:'tabContent.html',close: true}) tab.addTabOnlyByElem('contents',{id:'tabContent',title:'高级操作',url:'tabContent.html',close: true})
}) })
$(".del").click(function(){ $(".del").click(function(){
tab.delCurrentTabByElem('content',function(id){ tab.delCurrentTabByElem('contents',function(id){
layer.msg("已删除 '"+id+"' 标签页") layer.msg("已删除 '"+id+"' 标签页")
}); });

View File

@ -23,17 +23,14 @@
tab = layui.tab; tab = layui.tab;
$(".add").click(function(){ $(".add").click(function(){
// ADD 添加方法 // ADD 添加方法
parent.layui.tab.addTabOnlyByElem('content',{id:'demo',title:'Demo',url:'../system/space.html',close: true}) parent.layui.tab.addTabOnlyByElem('contents',{id:'demo',title:'Demo',url:'../system/space.html',close: true})
}) })
$(".del").click(function(){ $(".del").click(function(){
parent.layui.tab.delCurrentTabByElem('contents',function(id){
parent.layui.tab.delCurrentTabByElem('content',function(id){
layer.msg("已删除 '"+id+"' 标签页") layer.msg("已删除 '"+id+"' 标签页")
}); });
}) })
}) })