/*
* 版 本 Learun-ADMS V7.0.3 力软敏捷开发框架(http://www.learun.cn)
* Copyright (c) 2013-2018 上海力软信息技术有限公司
* 创建人:力软-前端开发组
* 日 期:2017.03.22
* 描 述:lrdate 时间段选择器 @YY@-当年 @MM@-当月 @DD@-当天 @JJ@-当季度
*/
(function ($, learun) {
$.lrdate = {
init: function ($self) {
var dfop = $self[0]._lrdate.dfop;
$self.html('');
$self.addClass('lr-search-date');
var $text = $('
请选择日期查询
');
var $container = $('');
var $btnlist = $('');
var $customDate = $('');
var $clearDate = $('');
$btnlist.append($customDate);
$btnlist.append($clearDate);
$container.append($btnlist);
var $datepickerContent = $('');
var $datepicker1 = $('');
var $datepicker2 = $('');
var $datepickerBtn = $('');
$datepickerContent.append($datepicker1);
$datepickerContent.append($datepicker2);
$datepickerContent.append($datepickerBtn);
$container.append($datepickerContent);
$self.append($text);
$self.append($container);
// 更新为laydate
laydate.render({
elem: '#lr_search_date_datepicker1_' + dfop.id
, position: 'static'
, showBottom: false
, theme: '#2F94EE'
, min: dfop.minDate || '1900-1-1'
, max: dfop.maxDate || '2099-12-31'
, change: function (value, date) { //监听日期被切换
dfop._begindate = value + " 00:00:00";
}
});
laydate.render({
elem: '#lr_search_date_datepicker2_' + dfop.id
, position: 'static'
, showBottom: false
, theme: '#2F94EE'
, min: dfop.minDate || '1900-1-1'
, max: dfop.maxDate || '2099-12-31'
, change: function (value, date) { //监听日期被切换
dfop._enddate = value + " 23:59:59";
}
});
//WdatePicker({ eCont: 'lr_search_date_datepicker1_' + dfop.id, onpicked: function (dp) { dfop._begindate = dp.cal.getDateStr() + " 00:00:00"; }, minDate: dfop.minDate, maxDate: dfop.maxDate });// 开始时间
//WdatePicker({ eCont: 'lr_search_date_datepicker2_' + dfop.id, onpicked: function (dp) { dfop._enddate = dp.cal.getDateStr() + " 23:59:59"; }, minDate: dfop.minDate, maxDate: dfop.maxDate });// 结束时间
/*事件的绑定*/
$text.on('click', function (e) {
var $this = $(this);
var $self = $this.parents('.lr-search-date');
var dfop = $self[0]._lrdate.dfop;
var $container =$self.find('#lr_search_date_container_' + dfop.id);
if ($container.is(':hidden')) {
$container.show();
}
else {
$container.hide();
}
});
$(document).click(function (e) {
var et = e.target || e.srcElement;
var $et = $(et);
if (!$et.hasClass('lr-search-date') && $et.parents('.lr-search-date').length <= 0) {
$('.lr-search-date-container').hide();
}
});
$customDate.find('a').on('click', function (e) {
var $this = $(this);
var $self = $this.parents('.lr-search-date');
var dfop = $self[0]._lrdate.dfop;
$self.find('.lr-search-date-content-btns a.active').removeClass('active');
$('#lr_search_date_container_' + dfop.id).addClass('width');
$this.addClass('active');
$self.find('.lr-search-date-datepicker-content').show();
});
$clearDate.find('a').on('click', function (e) {
var $this = $(this);
var $self = $this.parents('.lr-search-date');
var dfop = $self[0]._lrdate.dfop;
var $container = $self.find('#lr_search_date_container_' + dfop.id);
var $text = $self.find('#lr_search_date_' + dfop.id);
$container.hide();
$self.find('.lr-search-date-content-btns a.active').removeClass('active');
$text.html("");
if (!!dfop.selectfn) {
dfop.selectfn("1753-01-01", "3000-01-01");
}
});
// 时间确定按钮
$datepickerBtn.find('a').on('click', function () {
var $self = $(this).parents('.lr-search-date');
var dfop = $self[0]._lrdate.dfop;
var $container = $self.find('#lr_search_date_container_' + dfop.id);
var $text = $self.find('#lr_search_date_' + dfop.id);
$container.hide();
var label = learun.formatDate(dfop._begindate, 'yyyy-MM-dd') + '~' + learun.formatDate(dfop._enddate, 'yyyy-MM-dd');
$text.html(label);
if (!!dfop.selectfn) {
dfop.selectfn(dfop._begindate, dfop._enddate);
}
});
},
monthinit: function ($self) {// 月:上月,本月
var dfop = $self[0]._lrdate.dfop;
var $btnlist = $('#lr_search_date_content_btns_' + dfop.id);
var $block = $('');
if (dfop.premShow) {
$block.append('上月');
}
if (dfop.mShow) {
$block.append('本月');
}
$btnlist.prepend($block);
dfop = null;
},
jinit: function ($self) {// 季度
var dfop = $self[0]._lrdate.dfop;
var $btnlist = $('#lr_search_date_content_btns_' + dfop.id);
var $block = $('');
if (dfop.prejShow) {
$block.append('上季度');
}
if (dfop.jShow) {
$block.append('本季度');
}
$btnlist.prepend($block);
dfop = null;
},
yinit: function ($self) {
var dfop = $self[0]._lrdate.dfop;
var $btnlist = $('#lr_search_date_content_btns_' + dfop.id);
var $block = $('');
if (dfop.ysShow) {
$block.append('上半年');
}
if (dfop.yxShow) {
$block.append('下半年');
}
if (dfop.preyShow) {
$block.append('去年');
}
if (dfop.yShow) {
$block.append('今年');
}
$btnlist.prepend($block);
dfop = null;
},
custmerinit: function ($self) {
var dfop = $self[0]._lrdate.dfop;
var $btnlist = $('#lr_search_date_content_btns_' + dfop.id);
var $block = $('');
for (var i = 0, l = dfop.dfdata.length; i < l; i++) {
var item = dfop.dfdata[i];
if (item) {
$block.append('' + item.name + '');
}
}
$btnlist.prepend($block);
dfop = null;
},
bindEvent: function ($self) {
$self.find('.datebtn').on('click', function () {
var $this = $(this);
var $self = $this.parents('.lr-search-date');
var value = $this.attr('data-value');
$.lrdate.select($self, value);
});
},
select: function ($self, value) {
var dfop = $self[0]._lrdate.dfop;
var $container = $self.find('#lr_search_date_container_' + dfop.id);
var $text = $self.find('#lr_search_date_' + dfop.id);
var $btnlist = $('#lr_search_date_content_btns_' + dfop.id);
$btnlist.find('.active').removeClass('active');
var $this = $btnlist.find('.datebtn[data-value="' + value + '"]').addClass('active');
switch (value) {
case 'currentWeek':
dfop._begindate = learun.getTime(0);
dfop._enddate = learun.getTime(-6);
break;
case 'nextWeek':
dfop._begindate = learun.getTime(-7);
dfop._enddate = learun.getTime(-13);
break;
case 'preM':
var d = learun.getPreMonth();
dfop._begindate = d.begin;
dfop._enddate = d.end;
break;
case 'currentM':
var d = learun.getMonth();
dfop._begindate = d.begin;
dfop._enddate = d.end;
break;
case 'preJ':
var d = learun.getPreQuarter();
dfop._begindate = d.begin;
dfop._enddate = d.end;
break;
case 'currentJ':
var d = learun.getCurrentQuarter();
dfop._begindate = d.begin;
dfop._enddate = d.end;
break;
case 'yS':
var d = learun.getFirstHalfYear();
dfop._begindate = d.begin;
dfop._enddate = d.end;
break;
case 'yX':
var d = learun.getSecondHalfYear();
dfop._begindate = d.begin;
dfop._enddate = d.end;
break;
case 'preY':
var d = learun.getPreYear();
dfop._begindate = d.begin;
dfop._enddate = d.end;
break;
case 'currentY':
var d = learun.getYear();
dfop._begindate = d.begin;
dfop._enddate = d.end;
break;
default:
var rowid = parseInt(value);
var data = dfop.dfdata[rowid];
dfop._begindate = data.begin();
dfop._enddate = data.end();
break;
}
$container.hide();
var label = learun.formatDate(dfop._begindate, 'yyyy-MM-dd') + '~' + learun.formatDate(dfop._enddate, 'yyyy-MM-dd');
$text.html(label);
$('#lr_search_date_container_' + dfop.id).removeClass('width');
$self.find('.lr-search-date-datepicker-content').hide();
if (!!dfop.selectfn) {
dfop.selectfn(dfop._begindate, dfop._enddate);
}
}
};
$.fn.lrdate = function (op) {
var dfop = {
// 自定义数据
dfdata: [],
// 月
mShow: true,
premShow: true,
// 季度
jShow: true,
prejShow: true,
// 年
ysShow: true,
yxShow: true,
preyShow: true,
yShow: true,
dfvalue: -1,//preM,currentM,preJ,currentJ,yS,yX,preY,currentY,
selectfn: false,
minDate: '',
maxDate: '',
};
$.extend(dfop, op || {});
var $self = $(this);
dfop.id = $self.attr('id');
if (!dfop.id) {
return false;
}
$self[0]._lrdate = { "dfop": dfop };
$.lrdate.init($self);
$.lrdate.yinit($self);
$.lrdate.jinit($self);
$.lrdate.monthinit($self);
$.lrdate.custmerinit($self);
$.lrdate.bindEvent($self);
if (dfop.dfvalue != -1) {
$.lrdate.select($self, dfop.dfvalue);
}
return $self;
};
// 兼容之前的写法
window.WdatePicker = function (op) {
var e = window.event || arguments.callee.caller.arguments[0];
if (e) {
var obj = e.target || e.srcElement;
var $obj = $(obj);
if (!$obj.hasClass('lr-laydate-init')) {
op = op || {};
op.dateFmt = op.dateFmt || 'yyyy-MM-dd';
var _type = 'date';
if (op.dateFmt == 'yyyy-MM-dd HH:mm' || op.dateFmt == 'yyyy-MM-dd HH:mm:ss') {
_type = 'datetime';
}
if (op.dateFmt == 'HH:mm' || op.dateFmt == 'HH:mm:ss') {
_type = 'time';
}
laydate.render({
elem: obj,
trigger: 'click',
theme: '#2F94EE',
format: op.dateFmt,
type: _type,
done: function () {
// 只修改了这
setTimeout(function () {
$obj.trigger('change');
}, 100);
}
});
$obj.addClass('lr-laydate-init');
if (e.type == 'click') {
setTimeout(function () {
$obj.trigger('click');
}, 100);
return false;
}
}
}
}
})(jQuery, top.learun);