wms-datetimepicker.js 14 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325
  1. /*
  2. * 描 述:lrdate 时间段选择器 @YY@-当年 @MM@-当月 @DD@-当天 @JJ@-当季度
  3. */
  4. (function ($, learun) {
  5. "use strict";
  6. $.lrdatetime = {
  7. init: function ($self) {
  8. var dfop = $self[0]._lrdate.dfop;
  9. $self.html('');
  10. $self.addClass('lr-search-date');
  11. var $text = $('<div class="lr-search-date-text" id="lr_search_date_' + dfop.id + '" ></div>');
  12. var $container = $('<div class="lr-search-date-container" id="lr_search_date_container_' + dfop.id + '"><div class="lr-search-date-arrow"><div class="lr-search-date-inside"></div></div></div>');
  13. var $btnlist = $('<div class="lr-search-date-content-btns" id="lr_search_date_content_btns_' + dfop.id + '"></div>');
  14. var $customDate = $('<div class="lr-search-date-btn-block"><a href="javascript:;" data-value="customDate">自定义</a></div>');
  15. var $clearDate = $('<div class="lr-search-date-btn-block"><a href="javascript:;" data-value="clearDate">清空</a></div>');
  16. $btnlist.append($customDate);
  17. $btnlist.append($clearDate);
  18. $container.append($btnlist);
  19. var $datepickerContent = $('<div class="lr-search-date-datepicker-content"></div>');
  20. var $datepicker1 = $('<div class="lr-search-date-datepicker-container first" id="lr_search_date_datepicker1_' + dfop.id + '" ></div>');
  21. var $datepicker2 = $('<div class="lr-search-date-datepicker-container" id="lr_search_date_datepicker2_' + dfop.id + '" ></div>');
  22. var $datepickerBtn = $('<div class="lr-search-date-datepicker-btn"><a class="btn btn-primary">确定</a></div>');
  23. $datepickerContent.append($datepicker1);
  24. $datepickerContent.append($datepicker2);
  25. $datepickerContent.append($datepickerBtn);
  26. $container.append($datepickerContent);
  27. $self.append($text);
  28. $self.append($container);
  29. WdatePicker({ eCont: 'lr_search_date_datepicker1_' + dfop.id, startDate: '%y-%M-%d 00:00:00', dateFmt: dfop.wdateFmt, alwaysUseStartDate: true, onpicked: function (dp) { dfop._begindate = dp.cal.getDateStr() /*+ " 23:59:59"*/; }, minDate: dfop.minDate, maxDate: dfop.maxDate });// 开始时间
  30. WdatePicker({ eCont: 'lr_search_date_datepicker2_' + dfop.id, startDate: '%y-%M-%d 23:59:59', dateFmt: dfop.wdateFmt, alwaysUseStartDate: true, onpicked: function (dp) { dfop._enddate = dp.cal.getDateStr() /*+ " 23:59:59"*/; }, minDate: dfop.minDate, maxDate: dfop.maxDate });// 结束时间
  31. /*事件的绑定*/
  32. $text.on('click', function (e) {
  33. var $this = $(this);
  34. var $self = $this.parents('.lr-search-date');
  35. var dfop = $self[0]._lrdate.dfop;
  36. var $container =$self.find('#lr_search_date_container_' + dfop.id);
  37. if ($container.is(':hidden')) {
  38. $container.show();
  39. }
  40. else {
  41. $container.hide();
  42. }
  43. });
  44. $(document).click(function (e) {
  45. var et = e.target || e.srcElement;
  46. var $et = $(et);
  47. if (!$et.hasClass('lr-search-date') && $et.parents('.lr-search-date').length <= 0) {
  48. $('.lr-search-date-container').hide();
  49. }
  50. });
  51. $customDate.find('a').on('click', function (e) {
  52. var $this = $(this);
  53. var $self = $this.parents('.lr-search-date');
  54. var dfop = $self[0]._lrdate.dfop;
  55. $self.find('.lr-search-date-content-btns a.active').removeClass('active');
  56. $('#lr_search_date_container_' + dfop.id).addClass('width');
  57. $this.addClass('active');
  58. $self.find('.lr-search-date-datepicker-content').show();
  59. });
  60. $clearDate.find('a').on('click', function (e) {
  61. var $this = $(this);
  62. var $self = $this.parents('.lr-search-date');
  63. var dfop = $self[0]._lrdate.dfop;
  64. var $container = $self.find('#lr_search_date_container_' + dfop.id);
  65. var $text = $self.find('#lr_search_date_' + dfop.id);
  66. $container.hide();
  67. $self.find('.lr-search-date-content-btns a.active').removeClass('active');
  68. $text.html("");
  69. if (!!dfop.selectfn) {
  70. dfop.selectfn("0001-01-01 00:00:00", "3000-01-01 23:59:59");
  71. }
  72. });
  73. // 时间确定按钮
  74. $datepickerBtn.find('a').on('click', function () {
  75. var $self = $(this).parents('.lr-search-date');
  76. var dfop = $self[0]._lrdate.dfop;
  77. var $container = $self.find('#lr_search_date_container_' + dfop.id);
  78. var $text = $self.find('#lr_search_date_' + dfop.id);
  79. $container.hide();
  80. if ($.isEmptyObject(dfop._begindate)) {
  81. dfop._begindate = $.lrdatetime.getNowFormatDate(1);
  82. }
  83. if ($.isEmptyObject(dfop._enddate)) {
  84. dfop._enddate = $.lrdatetime.getNowFormatDate(2);
  85. }
  86. var label = learun.formatDate(dfop._begindate, dfop.wdateFmt1) + '~' + learun.formatDate(dfop._enddate, dfop.wdateFmt1);
  87. $text.html(label);
  88. if (!!dfop.selectfn) {
  89. dfop.selectfn(dfop._begindate, dfop._enddate);
  90. }
  91. });
  92. },
  93. monthinit: function ($self) {// 月:上月,本月
  94. var dfop = $self[0]._lrdate.dfop;
  95. var $btnlist = $('#lr_search_date_content_btns_' + dfop.id);
  96. var $block = $('<div class="lr-search-date-btn-block"></div>');
  97. if (dfop.premShow) {
  98. $block.append('<a href="javascript:;" class="datebtn" data-value="preM">上月</a>');
  99. }
  100. if (dfop.mShow) {
  101. $block.append('<a href="javascript:;" class="datebtn" data-value="currentM">本月</a>');
  102. }
  103. $btnlist.prepend($block);
  104. dfop = null;
  105. },
  106. jinit: function ($self) {// 季度
  107. var dfop = $self[0]._lrdate.dfop;
  108. var $btnlist = $('#lr_search_date_content_btns_' + dfop.id);
  109. var $block = $('<div class="lr-search-date-btn-block"></div>');
  110. if (dfop.prejShow) {
  111. $block.append('<a href="javascript:;" class="datebtn" data-value="preJ">上季度</a>');
  112. }
  113. if (dfop.jShow) {
  114. $block.append('<a href="javascript:;" class="datebtn" data-value="currentJ">本季度</a>');
  115. }
  116. $btnlist.prepend($block);
  117. dfop = null;
  118. },
  119. yinit: function ($self) {
  120. var dfop = $self[0]._lrdate.dfop;
  121. var $btnlist = $('#lr_search_date_content_btns_' + dfop.id);
  122. var $block = $('<div class="lr-search-date-btn-block"></div>');
  123. if (dfop.ysShow) {
  124. $block.append('<a href="javascript:;" class="datebtn" data-value="yS">上半年</a>');
  125. }
  126. if (dfop.yxShow) {
  127. $block.append('<a href="javascript:;" class="datebtn" data-value="yX">下半年</a>');
  128. }
  129. if (dfop.preyShow) {
  130. $block.append('<a href="javascript:;" class="datebtn" data-value="preY">去年</a>');
  131. }
  132. if (dfop.yShow) {
  133. $block.append('<a href="javascript:;" class="datebtn" data-value="currentY">今年</a>');
  134. }
  135. $btnlist.prepend($block);
  136. dfop = null;
  137. },
  138. custmerinit: function ($self) {
  139. var dfop = $self[0]._lrdate.dfop;
  140. var $btnlist = $('#lr_search_date_content_btns_' + dfop.id);
  141. var $block = $('<div class="lr-search-date-btn-block"></div>');
  142. for (var i = 0, l = dfop.dfdata.length; i < l; i++) {
  143. var item = dfop.dfdata[i];
  144. $block.append('<a href="javascript:;" class="datebtn" data-value="' + i + '">' + item.name + '</a>');
  145. }
  146. $btnlist.prepend($block);
  147. dfop = null;
  148. },
  149. bindEvent: function ($self) {
  150. $self.find('.datebtn').on('click', function () {
  151. var $this = $(this);
  152. var $self = $this.parents('.lr-search-date');
  153. var value = $this.attr('data-value');
  154. $.lrdatetime.select($self, value);
  155. });
  156. },
  157. select: function ($self, value) {
  158. var dfop = $self[0]._lrdate.dfop;
  159. var $container = $self.find('#lr_search_date_container_' + dfop.id);
  160. var $text = $self.find('#lr_search_date_' + dfop.id);
  161. var $btnlist = $('#lr_search_date_content_btns_' + dfop.id);
  162. $btnlist.find('.active').removeClass('active');
  163. var $this = $btnlist.find('.datebtn[data-value="' + value + '"]').addClass('active');
  164. switch (value) {
  165. case 'preM':
  166. var d = learun.getPreMonth();
  167. dfop._begindate = d.begin;
  168. dfop._enddate = d.end;
  169. break;
  170. case 'currentM':
  171. var d = learun.getMonth();
  172. dfop._begindate = d.begin;
  173. dfop._enddate = d.end;
  174. break;
  175. case 'preJ':
  176. var d = learun.getPreQuarter();
  177. dfop._begindate = d.begin;
  178. dfop._enddate = d.end;
  179. break;
  180. case 'currentJ':
  181. var d = learun.getCurrentQuarter();
  182. dfop._begindate = d.begin;
  183. dfop._enddate = d.end;
  184. break;
  185. case 'yS':
  186. var d = learun.getFirstHalfYear();
  187. dfop._begindate = d.begin;
  188. dfop._enddate = d.end;
  189. break;
  190. case 'yX':
  191. var d = learun.getSecondHalfYear();
  192. dfop._begindate = d.begin;
  193. dfop._enddate = d.end;
  194. break;
  195. case 'preY':
  196. var d = learun.getPreYear();
  197. dfop._begindate = d.begin;
  198. dfop._enddate = d.end;
  199. break;
  200. case 'currentY':
  201. var d = learun.getYear();
  202. dfop._begindate = d.begin;
  203. dfop._enddate = d.end;
  204. break;
  205. case 'all':
  206. return;
  207. break;
  208. default:
  209. var rowid = parseInt(value);
  210. var data = dfop.dfdata[rowid];
  211. dfop._begindate = data.begin();
  212. dfop._enddate = data.end();
  213. break;
  214. }
  215. $container.hide();
  216. var label = learun.formatDate(dfop._begindate, dfop.wdateFmt1) + '~' + learun.formatDate(dfop._enddate, dfop.wdateFmt1);
  217. $text.html(label);
  218. $('#lr_search_date_container_' + dfop.id).removeClass('width');
  219. $self.find('.lr-search-date-datepicker-content').hide();
  220. if (!!dfop.selectfn) {
  221. dfop.selectfn(dfop._begindate, dfop._enddate);
  222. }
  223. },
  224. //获取当前时间,格式YYYY-MM-DD
  225. getNowFormatDate: function (temp) {
  226. var date = new Date();
  227. var seperator1 = "-";
  228. var year = date.getFullYear();
  229. var month = date.getMonth() + 1;
  230. var strDate = date.getDate();
  231. if (month >= 1 && month <= 9) {
  232. month = "0" + month;
  233. }
  234. if (strDate >= 0 && strDate <= 9) {
  235. strDate = "0" + strDate;
  236. }
  237. var currentdate = year + seperator1 + month + seperator1 + strDate;
  238. if (temp == 1)
  239. return currentdate + ' 00:00:00';
  240. else
  241. return currentdate + ' 23:59:59';
  242. },
  243. clearDate: function () {
  244. var $this = $(this);
  245. var $self = $this.parents('.lr-search-date');
  246. var dfop = $self[0]._lrdate.dfop;
  247. if (!!dfop.selectfn) {
  248. dfop.selectfn("0001-01-01 00:00:00", "3000-01-01 23:59:59");
  249. }
  250. }
  251. };
  252. $.fn.lrdatetime = function (op) {
  253. var dfop = {
  254. // 自定义数据
  255. dfdata: [],
  256. // 月
  257. mShow: true,
  258. premShow: true,
  259. // 季度
  260. jShow: true,
  261. prejShow: true,
  262. // 年
  263. ysShow: true,
  264. yxShow: true,
  265. preyShow: true,
  266. yShow: true,
  267. dfvalue: false,//preM,currentM,preJ,currentJ,yS,yX,preY,currentY,
  268. selectfn: false,
  269. minDate: '',
  270. maxDate: '',
  271. wdateFmt: 'yyyy-MM-dd HH:mm:ss',
  272. wdateFmt1: 'yyyy-MM-dd hh:mm:ss',
  273. };
  274. $.extend(dfop, op || {});
  275. var $self = $(this);
  276. dfop.id = $self.attr('id');
  277. if (!dfop.id) {
  278. return false;
  279. }
  280. $self[0]._lrdate = { "dfop": dfop };
  281. $.lrdatetime.init($self);
  282. $.lrdatetime.yinit($self);
  283. $.lrdatetime.jinit($self);
  284. $.lrdatetime.monthinit($self);
  285. $.lrdatetime.custmerinit($self);
  286. $.lrdatetime.bindEvent($self);
  287. //if (dfop.dfvalue != false) {
  288. // $.lrdatetime.select($self, dfop.dfvalue);
  289. //}
  290. $.lrdatetime.select($self, dfop.dfvalue);
  291. return $self;
  292. };
  293. })(jQuery, top.learun);