myOrder.js 12 KB

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