dataPicker.js 6.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179
  1. define(['$', 'template', 'product'], function ($, template, product) {
  2. var cachePageData = {};
  3. return {
  4. body: '',
  5. init: function (pageData, dtd) {
  6. var $view = this;
  7. var $doc = $(document);
  8. $.newTouch('.day', function(event) {
  9. event.preventDefault();
  10. // $.each(cachePageData.offDay, function(index, val) {
  11. // if ($(this).attr('data-value') == val) {
  12. // var i = $(this).index();
  13. // $('.picker-time').find('ul').eq(i).find('li').addClass('off');
  14. // }
  15. // });
  16. $(this).addClass('on').siblings().removeClass('on');
  17. $('.picker-time', $view).find('li').removeClass('on');
  18. $('.picker-time', $view)
  19. .find('ul').eq($(this).index()).show()
  20. .siblings().hide();
  21. }, $view);
  22. $.newTouch('.j-book-time', function(event) {
  23. event.preventDefault();
  24. if ($(this).hasClass('off')) return;
  25. var $day = $('.picker-day-box',$view).find('.row').find('.on');
  26. var dayText = $day.text();
  27. var dayVal = $day.data('value');
  28. var time = $(this).data('value');
  29. $(this).addClass('on').siblings().removeClass('on');
  30. $view.trigger('spa:closepanel');
  31. // if ($(this).hasClass('current')) {
  32. // precedence = 1;
  33. // $doc.trigger('spa:openpanel', ['simpleAlert', {
  34. // title: '温馨提示',
  35. // message: '您选择了加急服务,需要额外支付' + product.precedence + '元服务费。'
  36. // }]);
  37. // } else {
  38. // precedence = 0;
  39. // }
  40. var values = [],
  41. texts = [];
  42. values.push(dayVal);
  43. values.push(time);
  44. texts.push(dayText);
  45. texts.push(time);
  46. var callback = pageData.pushData.callback;
  47. if (callback && $.isFunction(callback.onSelect)) {
  48. callback.onSelect(values, texts);
  49. }
  50. }, $view);
  51. dtd.resolve();
  52. },
  53. beforeopen: function (pageData, dtd) {
  54. var $view = this;
  55. var pushData = pageData.pushData;
  56. var columns = pushData['columns'];
  57. var selected = pushData['selected'];
  58. // var type = pushData['type'];
  59. // var offDay = pushData['offDay'];
  60. // cachePageData.offDay = offDay;
  61. $('.spa-page-bg', $view).css({
  62. opacity: 0
  63. }).transition({
  64. opacity: 0.6
  65. });
  66. var tpl = template('common/dataPicker', {
  67. columns: columns
  68. });
  69. $view.find('.spa-page-body').html(tpl);
  70. var $pickerDay = $('.picker-day', $view);
  71. var $pickerTime = $('.picker-time', $view);
  72. var $li = $pickerTime.find('li').eq(0);
  73. var index = $pickerDay.find('.on').index();
  74. // $pickerDay.find('ul').eq(index).removeClass('hide').siblings().addClass('hide');
  75. $pickerTime.find('ul').eq(index).removeClass('hide').siblings().addClass('hide');
  76. // 18点之后 或者半点之后 顺延一小时
  77. if ($li.data('now') >= 18 || $li.data('time') > 10 || $pickerTime.find('ul').eq(0).find('li').length == 0 ) {
  78. $li.hide();
  79. };
  80. if ($pickerTime.find('ul').eq(0).find('li').length <1) {
  81. $pickerTime.find('ul').eq(0).addClass('hide');
  82. $pickerTime.find('ul').eq(1).removeClass('hide');
  83. $pickerDay.find('li').eq(1).addClass('on').siblings().removeClass('on');
  84. var restDay = $pickerDay.find('li').eq(1).attr('data-value');
  85. if (restDay == '2016-01-01') {
  86. $pickerDay.find('li').eq(2).addClass('on').siblings().removeClass('on');
  87. $pickerTime.find('ul').eq(2).removeClass('hide').siblings().addClass('hide');
  88. }
  89. }
  90. // 九点前 九点不能预约
  91. if ($li.data('now') < 9 ) {
  92. $li.hide();
  93. }
  94. // if (type == 6) {
  95. // if ($li.data('now') <= 19) {
  96. // $pickerDay.find('li').eq(0).addClass('hide').removeClass('on');
  97. // $pickerDay.find('li').eq(1).addClass('on');
  98. // $pickerTime.find('ul').eq(0).addClass('hide');
  99. // $pickerTime.find('ul').eq(1).removeClass('hide');
  100. // } else {
  101. // $pickerDay.find('li').eq(0).addClass('hide').removeClass('on');
  102. // $pickerDay.find('li').eq(1).addClass('hide').removeClass('on');
  103. // $pickerDay.find('li').eq(2).addClass('on');
  104. // $pickerTime.find('ul').eq(0).addClass('hide');
  105. // $pickerTime.find('ul').eq(1).addClass('hide');
  106. // $pickerTime.find('ul').eq(2).removeClass('hide');
  107. // }
  108. // }
  109. // $('.picker-day').find('li').each(function(index, el) {
  110. // $.each(cachePageData.offDay, function(i, v) {
  111. // if (v == $(el).attr('data-value') ) {
  112. // $('.picker-time').find('ul').eq(index).find('li').addClass('off');
  113. // };
  114. // });
  115. // });
  116. if ($pickerDay.find('li').eq(0).attr('data-value') == '2016-01-01') {
  117. $('.picker-time').find('ul').eq(0).find('li').addClass('off');
  118. }
  119. var myScroll;
  120. (function loaded () {
  121. myScroll = new IScroll('.picker-day', { scrollX: true, scrollY: false, mouseWheel: true });
  122. })();
  123. if (selected) { // 如果选择过日期 修正日期位置
  124. var days = (new Date(selected) - new Date(columns['columnDay'][0]['value'])) / 86400000;
  125. var viewW = document.body.clientWidth;
  126. var l = parseInt(viewW / 80);
  127. if (days >= l) { // 选择日期不在 viewport 内
  128. myScroll.scrollToElement($('.picker-day-box', $view).find('.day').eq(days)[0]);
  129. $('.picker-day-box', $view)
  130. .find('.day').eq(days).addClass('on')
  131. .siblings().removeClass('on');
  132. }
  133. // if (type == 6) {
  134. // $('.picker-time', $view)
  135. // .find('ul').eq(days).removeClass('hide')
  136. // .siblings().addClass('hide');
  137. // $('.picker-day-box', $view)
  138. // .find('li').eq(days).addClass('on')
  139. // .siblings().removeClass('on');
  140. // }
  141. } else {
  142. if ($li.data('now') >= 18) { // 时间超过 18 点, 修正显示第二天
  143. var restDay = $pickerDay.find('li').eq(1).attr('data-value');
  144. if (restDay == '2016-01-01') {
  145. $pickerDay.find('li').eq(2).addClass('on').siblings().removeClass('on');
  146. $pickerTime.find('ul').eq(2).removeClass('hide').siblings().addClass('hide');
  147. } else {
  148. $pickerDay.find('li').eq(1).addClass('on').siblings().removeClass('on');
  149. $pickerTime.find('ul').eq(1).removeClass('hide').siblings().addClass('hide');
  150. }
  151. }
  152. }
  153. dtd.resolve();
  154. },
  155. beforeclose: function (panelData, dtd) {
  156. var $view = this;
  157. $('.spa-page-bg', $view).transition({
  158. opacity: 0
  159. });
  160. dtd.resolve();
  161. }
  162. }
  163. })