myOrder.js 8.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302
  1. define(['$', 'template', 'user', 'config', 'native', 'IScroll'], function ($, template, user, config, native, IScroll) {
  2. function back(event) {
  3. event.preventDefault();
  4. $(document).trigger('spa:navigate', {
  5. hash: '',
  6. pushData: {
  7. dontNeedReload: true
  8. }
  9. });
  10. }
  11. function reloadData(pageData, type, more) {
  12. var $view = this;
  13. var $doc = $(document);
  14. $doc.trigger('spa:openloader');
  15. user.getOrderList(user.id, type, function (res) {
  16. $doc.trigger('spa:closeloader');
  17. if (res.success) {
  18. var time = new Date().getTime();
  19. var tpl = template('myOrder/list', {
  20. orders: user.orders[type].data,
  21. hasMore: user.orders[type].hasMore,
  22. type: type,
  23. time: parseInt(time / 1000),
  24. chubao: config.isChubao
  25. });
  26. $('.more-container', $view).find('.btn-more-orders').attr('data-type', type);
  27. if (res.current_page >= res.sum_page) {
  28. $('.more-container', $view).addClass('hide');
  29. } else {
  30. $('.more-container', $view).removeClass('hide');
  31. }
  32. // if (more) {
  33. // $('.list-content', $view).append(tpl);
  34. // } else {
  35. // $('.list-content', $view).html(tpl);
  36. // }
  37. $('.list-content', $view).html(tpl);
  38. setTimeout(function() {
  39. pageData.scroll = new IScroll('#myOrderScroll');
  40. }, 50);
  41. // if (pageData.scroll) {
  42. // pageData.scroll.refresh();
  43. // }
  44. } else {
  45. $doc.trigger('spa:openpanel', ['simpleAlert', {
  46. message: res.message
  47. }]);
  48. }
  49. }, more)
  50. }
  51. var t = 0;
  52. return {
  53. title: '壹管家上门服务',
  54. body: '',
  55. init: function (pageData, dtd) {
  56. var $view = this;
  57. var $doc = $(document);
  58. //返回
  59. $view.on('swipeRight', function (event) {
  60. back.call(this, event);
  61. });
  62. $.newTouch('.back-button', function (event) {
  63. back.call(this, event);
  64. }, $view);
  65. $view.on('tapBackButton', function(event) {
  66. back.call(this, event);
  67. });
  68. // tab切换
  69. $.newTouch('.order-type-control .control-item', function(event) {
  70. var orderType = $(this).data('order-type');
  71. var i = $(this).index();
  72. t = parseFloat(i) + 1;
  73. reloadData.call($view, pageData, orderType);
  74. }, $view);
  75. // 详情 OrderDetail
  76. $.newTouch('.btn-order-detail', function(event) {
  77. var id = $(this).attr('data-order-id');
  78. var i = $(this).parents('.table-view').index();
  79. $doc.trigger('spa:navigate', {
  80. hash: 'OrderDetail/' + id,
  81. pushData: {
  82. index: i
  83. }
  84. });
  85. }, $view);
  86. // 更多
  87. $.newTouch('.btn-more-orders', function (event) {
  88. var orderType = $(this).attr('data-type');
  89. reloadData.call($view, pageData, orderType, true);
  90. }, $view);
  91. // 去支付
  92. $.newTouch('.order-btn-pay', function(event) {
  93. event.preventDefault();
  94. $doc.trigger('spa:navigate', {
  95. hash: 'pay',
  96. pushData: {
  97. animate: 'slideInUp',
  98. orderID: $(this).data('order-id'),
  99. backHash: 'myOrder/1'
  100. }
  101. });
  102. }, $view);
  103. // 取消
  104. $.newTouch('.order-btn-cancel', function(event) {
  105. event.preventDefault();
  106. var orderID = $(this).attr('data-order-id');
  107. $doc.trigger('spa:openloader');
  108. user.cancelOrder(orderID, function(res) {
  109. $doc.trigger('spa:closeloader');
  110. if (res.success) {
  111. reloadData.call($view, pageData, 1);
  112. $doc.trigger('spa:openpanel', ['simpleAlert', {
  113. message: '取消订单成功'
  114. }]);
  115. } else
  116. $doc.trigger('spa:openpanel', ['simpleAlert', {
  117. message: res.message
  118. }]);
  119. })
  120. }, $view);
  121. // 去评价
  122. $.newTouch('.order-btn-review', function(event) {
  123. var obj = $(this);
  124. if (obj.hasClass('disable')) {
  125. return false;
  126. }
  127. var orderID = obj.data('order-id');
  128. $doc.trigger('spa:openpanel', ['postReview', {
  129. orderID: orderID,
  130. didPostReview: function() {
  131. obj.addClass('disable').text('已评价');
  132. }
  133. }]);
  134. }, $view);
  135. // 申请退款
  136. $.newTouch('.order-btn-refund', function(event) {
  137. var html = '<a href="tel:4000328170">4000328170</a>';
  138. if ($(this).hasClass('btn-alert-info')) {
  139. $doc.trigger('spa:openpanel', ['simpleAlert', {
  140. message: '预约时间两个小时内申请退款将扣除50%订单金额。确定退款请电话联系客服。',
  141. html: config.isWX ? html: '',
  142. buttons: [{
  143. text: '取消',
  144. class: 'btn-default',
  145. callback: function() {
  146. }
  147. },{
  148. text: '联系客服',
  149. class: 'btn-primary',
  150. callback: function() {
  151. native.call('4000328170');
  152. }
  153. }]
  154. }]);
  155. return;
  156. } else {
  157. var orderID = $(this).attr('data-order-id');
  158. $doc.trigger('spa:openpanel', ['simpleAlert', {
  159. title: '申请退款',
  160. message: '退款将退至您的支付账户',
  161. html: '(3-10个工作日内到账)',
  162. buttons: [{
  163. text: '确定申请',
  164. class: 'btn-primary',
  165. callback: function() {
  166. user.refundOrder(orderID, function(res) {
  167. if (res.success) {
  168. $('.control-item', $view).eq(2).addClass('active').siblings().removeClass('active');
  169. reloadData.call($view, pageData, 2);
  170. } else {
  171. $doc.trigger('spa:openpanel', ['simpleAlert', {
  172. message: res.message
  173. }]);
  174. }
  175. });
  176. }
  177. },{
  178. text: '取消申请',
  179. class: 'btn-default',
  180. callback: function() {
  181. }
  182. }]
  183. }]);
  184. }
  185. }, $view);
  186. // 追加服务
  187. $.newTouch('.order-btn-append', function(event) {
  188. var appendType = $(this).attr('data-type');
  189. var orderID = $(this).attr('data-order-id');
  190. var petName = $(this).attr('data-order-name');
  191. var i = $(this).parents('.table-view').index();
  192. $doc.trigger('spa:navigate', {
  193. hash: 'append',
  194. pushData: {
  195. appendType: appendType,
  196. orderID: orderID,
  197. petName: petName,
  198. index: i
  199. }
  200. });
  201. }, $view);
  202. // 确认完成
  203. $.newTouch('.order-btn-done', function(event) {
  204. event.preventDefault();
  205. var orderId = $(this).attr('data-order-id');
  206. $doc.trigger('spa:openpanel', ['simpleAlert', {
  207. message: '确认服务已完成?',
  208. buttons: [{
  209. text: '确认',
  210. class: 'btn-primary',
  211. callback: function() {
  212. user.finishOrder(orderId, function(res) {
  213. if (res.success) {
  214. $doc.trigger('spa:navigate', {
  215. hash: 'order-done'
  216. });
  217. } else {
  218. $doc.trigger('spa:openpanel', ['simpleAlert', {
  219. message: res.message
  220. }]);
  221. }
  222. });
  223. }
  224. },{
  225. text: '取消',
  226. class: 'btn-default',
  227. callback: function() {
  228. }
  229. }]
  230. }]);
  231. }, $view);
  232. dtd.resolve();
  233. },
  234. beforeopen: function (pageData, dtd) {
  235. var $view = this;
  236. var $doc = $(document);
  237. var tpl = template('myOrder/index', {
  238. showNavBar: !config.isWX && !config.isChubao,
  239. type: t == 0 ? pageData.requestData[0]: t
  240. });
  241. $('.spa-page-body', $view).html(tpl);
  242. if (pageData.scroll) {
  243. pageData.scroll.destroy();
  244. pageData.scroll = null;
  245. }
  246. var orderType = t == 0 ? pageData.requestData[0]: t;
  247. // var orderType = parseFloat(pageData.requestData[0]) || 1;
  248. var orderArray = [1, 3, 2];
  249. reloadData.call(this, pageData, orderArray[orderType - 1]);
  250. dtd.resolve();
  251. },
  252. afteropen: function (pageData, dtd) {
  253. var $view = this;
  254. dtd.resolve();
  255. if (config.isWX) {
  256. wx.ready(function(){
  257. wx.onMenuShareTimeline({
  258. title: '宠物上门服务,首选壹管家APP',
  259. link: 'http://www.wozhua.mobi/o2o/web/index',
  260. imgUrl: 'http://wozhua-others.qiniudn.com/icon-o2o-home.jpg'
  261. });
  262. wx.onMenuShareAppMessage({
  263. title: '宠物上门服务,首选壹管家APP',
  264. desc: '足不出户,就能享受专业保洁师为您家爱宠提供的贴心服务!',
  265. link: 'http://www.wozhua.mobi/o2o/web/index',
  266. imgUrl: 'http://wozhua-others.qiniudn.com/icon-o2o-home.jpg'
  267. });
  268. });
  269. }
  270. },
  271. afterclose: function(pageData, dtd) {
  272. t = 0;
  273. }
  274. }
  275. })