TG.WXCRM.V4/WEB/Scripts/layer/extend/layer.ext.dev.js

366 lines
11 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.

/**
@Name: layer拓展类依赖于layer
@Date: 2014.08.13
@Author: 贤心
@Versions1.8.5-ext
@Apihttp://sentsin.com/jquery/layer
@Desc: 本拓展会持续更新
*/
layer.use('skin/layer.ext.css', function(){
layer.ext && layer.ext();
});
/**
系统prompt
*/
layer.prompt = function(parme, yes, no){
var log = {}, parme = parme || {}, conf = {
area: ['auto', 'auto'],
offset: [parme.top || '', ''],
title: parme.title || '信息',
dialog: {
btns: 2,
type: -1,
msg: '<input type="'+ function(){
if(parme.type === 1){ //密码
return 'password';
} else if(parme.type === 2) {
return 'file';
} else {
return 'text';
}
}() +'" class="xubox_prompt xubox_form" id="xubox_prompt" value="'+ (parme.val || '') +'" />',
yes: function(index){
var val = log.prompt.val();
if(val === ''){
log.prompt.focus();
} else if(val.replace(/\s/g, '').length > (parme.length || 1000)) {
layer.tips('&#x6700;&#x591A;&#x8F93;&#x5165;'+ (parme.length || 1000) +'&#x4E2A;&#x5B57;&#x6570;', '#xubox_prompt', 2);
} else {
yes && yes(val, index, log.prompt);
}
}, no: no
}, success: function(){
log.prompt = $('#xubox_prompt');
log.prompt.focus();
}
};
if(parme.type === 3){
conf.dialog.msg = '<textarea class="xubox_prompt xubox_form xubox_formArea" id="xubox_prompt">'+ (parme.val || '') +'</textarea>'
}
return $.layer(conf);
};
/**
tab层
*/
layer.tab = function(parme){
var log = {}, parme = parme || {}, data = parme.data || [], conf = {
type: 1,
border: [0],
area: ['auto', 'auto'],
bgcolor: '',
title: false,
shade : parme.shade,
offset: parme.offset,
move: '.xubox_tabmove',
closeBtn: false,
page: {html: '<div class="xubox_tab" style="'+ function(){
parme.area = parme.area || [];
return 'width:'+ (parme.area[0] || '500px') +'; height:'+ (parme.area[1] || '300px') +'">';
}()
+'<span class="xubox_tabmove"></span>'
+'<div class="xubox_tabtit">'
+function(){
var len = data.length, ii = 1, str = '';
if(len > 0){
str = '<span class="xubox_tabnow">'+ data[0].title +'</span>';
for(; ii < len; ii++){
str += '<span>'+ data[ii].title +'</span>';
}
}
return str;
}() +'</div>'
+'<ul class="xubox_tab_main">'+ function(){
var len = data.length, ii = 1, str = '';
if(len > 0){
str = '<li class="xubox_tabli xubox_tab_layer">'+ (data[0].content || 'no content') +'</li>';
for(; ii < len; ii++){
str += '<li class="xubox_tabli">'+ (data[ii].content || 'no content') +'</li>';
}
}
return str;
}() +'</ul>'
+'<span class="xubox_tabclose" title="&#x5173;&#x95ED;">X</span>'
+'</div>'
}, success: function(layerE){
//切换事件
var btn = $('.xubox_tabtit').children(), main = $('.xubox_tab_main').children(), close = $('.xubox_tabclose');
btn.on('click', function(){
var othis = $(this), index = othis.index();
othis.addClass('xubox_tabnow').siblings().removeClass('xubox_tabnow');
main.eq(index).show().siblings().hide();
});
//关闭层
close.on('click', function(){
layer.close(layerE.attr('times'));
});
}
};
return $.layer(conf);
};
/**
相册层
*/
layer.photos = function(options){
options = options || {};
var log = {
imgIndex: 1,
end: null,
html: $('html')
}, win = $(window), json = options.json, page = options.page;
if(json){
var data = json.data;
if(json.status === 1){
log.imgLen = data.length;
if(data.length > 0){
log.thissrc = data[json.start].src;
log.pid = data[json.start].pid;
log.imgsname = (json.title || '');
log.name = data[json.start].name;
log.imgIndex = json.start + 1;
} else {
layer.msg('&#x6CA1;&#x6709;&#x4EFB;&#x4F55;&#x56FE;&#x7247;', 2, 8);
return;
}
} else {
layer.msg('&#x672A;&#x8BF7;&#x6C42;&#x5230;&#x6570;&#x636E;', 2, 8);
return;
}
} else {
var imgs = $(page.parent).find('img'), nowimg = imgs.eq(page.start);
log.thissrc = (nowimg.attr('layer-img') || nowimg.attr('src'));
log.pid = nowimg.attr('pid');
log.imgLen = imgs.length;
log.imgsname = (page.title || '');
log.name = nowimg.attr('alt');
log.imgIndex = page.start + 1;
}
var conf = {
type: 1,
border: [0],
area: [(options.html ? 915 : 600) + 'px', 'auto'],
title: false,
shade: [0.9, '#000', true],
shadeClose: true,
offset: ['25px', ''],
bgcolor: '',
page: {
html: '<div class="xubox_bigimg"><img src="'+ log.thissrc +'" alt="'+ (log.name || '') +'" layer-pid="'+ (log.pid || '') +'"><div class="xubox_imgsee">'+ function(){
if(log.imgLen > 1){
return '<a href="" class="xubox_iconext xubox_prev"></a><a href="" class="xubox_iconext xubox_next"></a>'
} else {
return '';
}
}() +'<div class="xubox_imgbar"><span class="xubox_imgtit"><a href="javascript:;">'+ log.imgsname +' </a><em>'+ log.imgIndex +'/'+ log.imgLen +'</em></span></div></div></div>'+ function(){
if(options.html){
return '<div class="xubox_intro">'+ options.html +'</div>';
} else {
return '';
}
}()
}, success: function(layero){
log.bigimg = layero.find('.xubox_bigimg');
log.imgsee = log.bigimg.find('.xubox_imgsee');
log.imgbar = log.imgsee.find('.xubox_imgbar');
log.imgtit = log.imgbar.find('.xubox_imgtit');
log.layero = layero;
var img = log.imgs = log.bigimg.find('img');
clearTimeout(log.timerr);
log.timerr = setTimeout(function(){
$('html').css('overflow', 'hidden').attr('layer-full', log.index);
}, 10);
img.load(function(){
log.imgarea = [img.outerWidth(), img.outerHeight()];
log.resize(layero);
});
log.event();
}, end: function(){
layer.closeAll();
log.end = true;
}
};
//一些动作
log.event = function(){
log.bigimg.hover(function(){
log.imgsee.show();
}, function(){
log.imgsee.hide();
});
//上一张
conf.imgprev = function(){
log.imgIndex--;
if(log.imgIndex < 1){
log.imgIndex = log.imgLen;
}
log.tabimg();
};
log.bigimg.find('.xubox_prev').on('click', function(event){
event.preventDefault();
conf.imgprev();
});
//下一张
conf.imgnext = function(){
log.imgIndex++;
if(log.imgIndex > log.imgLen){
log.imgIndex = 1;
}
log.tabimg()
};
log.bigimg.find('.xubox_next').on('click', function(event){
event.preventDefault();
conf.imgnext();
});
//方向键
$(document).keyup(function(event){
if(!log.end){
var code = event.keyCode;
event.preventDefault();
if(code === 37){
conf.imgprev();
} else if(code === 39) {
conf.imgnext();
} else if(code === 27) {
layer.close(log.index);
}
}
});
log.tabimg = function(){
var timer, src, pid, name;
log.imgs.removeAttr('style');
if(json){
var nowdata = data[log.imgIndex - 1];
src = nowdata.src;
pid = nowdata.pid;
name = nowdata.name;
} else {
var thisimg = imgs.eq(log.imgIndex - 1);
src = thisimg.attr('layer-img') || thisimg.attr('src');
pid = thisimg.attr('layer-pid') || '';
name = thisimg.attr('alt') || '';
}
log.imgs.attr({
src: src,
'layer-pid': pid,
alt: name
});
log.imgtit.find('em').text(log.imgIndex + '/' + log.imgLen);
log.imgsee.show();
options.tab && options.tab({pid: pid, name: name});
}
};
//相册响应式
log.resize = function(layero){
var relog = {}, wa = [win.width(), win.height()];
relog.limit = wa[0] - wa[0]/wa[1]*(60*wa[0]/wa[1]);
if(relog.limit < 600){
relog.limit = 600;
}
var area = [relog.limit, wa[1] > 400 ? wa[1] - 50 : 400];
area[0] = options.html ? area[0] : (area[0] - 300);
layer.area(log.index, {
width: area[0] + (options.html ? 15 : 0),
height: area[1]
});
relog.flwidth = area[0] - (options.html ? 300 : 0);
if(log.imgarea[0] > relog.flwidth){
log.imgs.css({width: relog.flwidth});
} else {
log.imgs.css({width: log.imgarea[0]});
}
if(log.imgs.outerHeight() < area[1]){
log.imgs.css({top: (area[1] - log.imgs.outerHeight())/2});
}
log.imgs.css({visibility: 'visible'});
log.bigimg.css({width: relog.flwidth, height: area[1], 'background-color': options.bgcolor});
if(options.html){
layero.find('.xubox_intro').css({height: area[1]});
}
relog = null;
wa = null;
area = null;
};
win.on('resize', function(){
if(log.end){
return;
}
if(log.timer){
clearTimeout(log.timer);
}
log.timer = setTimeout(function(){
log.resize(log.layero);
}, 200);
});
log.index = $.layer(conf);
return log.index;
};
//获取页面元素包含的所有图片,快捷调用
layer.photosPage = function(options){
var log = {};
log.run = function(index){
layer.photos({
html: options.html,
success: options.success,
page: {
title: options.title,
id: options.id,
start: index,
parent: options.parent
}
});
};
options = options || {};
$(options.parent).find('img').each(function(index){
$(this).on('click', function(){
log.run(index);
});
});
};