wms-datepicker.js 12 KB

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