myOrderDetail.js 8.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281
  1. define(['$', 'template', 'user', 'config', 'native', 'IScroll', 'BMap'], function ($, template, user, config, native, IScroll, BMap) {
  2. function back(event) {
  3. event.preventDefault();
  4. $(document).trigger('spa:navigate', {
  5. hash: 'myOrder/1'
  6. });
  7. }
  8. var cachePageData = {};
  9. var getPoiFn;
  10. return {
  11. title: '壹管家上门服务',
  12. body: '',
  13. init: function (pageData, dtd) {
  14. var productType = pageData.pushData.productType;
  15. var $view = this;
  16. var $doc = $(document);
  17. // 返回
  18. $.newTouch('.back-button', function (event) {
  19. back.call(this, event);
  20. }, $view);
  21. $view.on('tapBackButton', function (event) {
  22. back.call(this, event);
  23. });
  24. $view.on('swipeRight', function (event) {
  25. back.call(this, event);
  26. });
  27. // 客服电话
  28. $.newTouch('.service-telephone', function (event) {
  29. event.preventDefault();
  30. native.call('4000328170');
  31. }, $view);
  32. // 客服电话
  33. $.newTouch('.j-phone', function (event) {
  34. event.preventDefault();
  35. var phone = $(this).text();
  36. native.call(phone);
  37. }, $view);
  38. // 去支付
  39. $.newTouch('.order-btn-pay', function(event) {
  40. event.preventDefault();
  41. $doc.trigger('spa:navigate', {
  42. hash: 'pay',
  43. pushData: {
  44. animate: 'slideInUp',
  45. orderID: $(this).data('order-id'),
  46. backHash: 'myOrder/1'
  47. }
  48. });
  49. }, $view);
  50. // 取消
  51. $.newTouch('.order-btn-cancel', function(event) {
  52. event.preventDefault();
  53. var orderID = $(this).attr('data-order-id');
  54. $doc.trigger('spa:openloader');
  55. user.cancelOrder(orderID, function(res) {
  56. $doc.trigger('spa:closeloader');
  57. if (res.success) {
  58. // reloadData.call($view, pageData, 1);
  59. $doc.trigger('spa:openpanel', ['simpleAlert', {
  60. message: '取消订单成功'
  61. }]);
  62. } else {
  63. $doc.trigger('spa:openpanel', ['simpleAlert', {
  64. message: res.message
  65. }]);
  66. }
  67. })
  68. }, $view);
  69. // 去评价
  70. $.newTouch('.order-btn-review', function(event) {
  71. var obj = $(this);
  72. if (obj.hasClass('disable')) {
  73. return false;
  74. }
  75. var orderID = obj.data('order-id');
  76. $doc.trigger('spa:openpanel', ['postReview', {
  77. orderID: orderID,
  78. didPostReview: function() {
  79. $doc.trigger('spa:openpanel', ['simpleAlert', {
  80. message: '评价成功'
  81. }]);
  82. }
  83. }]);
  84. }, $view);
  85. // 申请退款
  86. $.newTouch('.order-btn-refund', function(event) {
  87. var html = '<a href="tel:4000328170">4000328170</a>';
  88. if ($(this).hasClass('btn-alert-info')) {
  89. $doc.trigger('spa:openpanel', ['simpleAlert', {
  90. message: '预约时间两个小时内申请退款将扣除50%订单金额。确定退款请电话联系客服。',
  91. html: config.isWX ? html: '',
  92. buttons: [{
  93. text: '取消',
  94. class: 'btn-default',
  95. callback: function() {
  96. }
  97. },{
  98. text: '联系客服',
  99. class: 'btn-primary',
  100. callback: function() {
  101. native.call('4000328170');
  102. }
  103. }]
  104. }]);
  105. return;
  106. } else {
  107. var orderID = $(this).attr('data-order-id');
  108. $doc.trigger('spa:openpanel', ['simpleAlert', {
  109. title: '申请退款',
  110. message: '退款将退至您的支付账户',
  111. html: '(3-10个工作日内到账)',
  112. buttons: [{
  113. text: '确定申请',
  114. class: 'btn-primary',
  115. callback: function() {
  116. user.refundOrder(orderID, function(res) {
  117. if (res.success) {
  118. $doc.trigger('spa:openpanel', ['simpleAlert', {
  119. message: '申请成功'
  120. }]);
  121. // $('.control-item', $view).eq(2).addClass('active').siblings().removeClass('active');
  122. // reloadData.call($view, pageData, 2);
  123. } else {
  124. $doc.trigger('spa:openpanel', ['simpleAlert', {
  125. message: res.message
  126. }]);
  127. }
  128. });
  129. }
  130. },{
  131. text: '取消申请',
  132. class: 'btn-default',
  133. callback: function() {
  134. }
  135. }]
  136. }]);
  137. }
  138. }, $view);
  139. // 追加服务
  140. $.newTouch('.order-btn-append', function(event) {
  141. var appendType = $(this).attr('data-type');
  142. var orderID = $(this).attr('data-order-id');
  143. var petName = $(this).attr('data-order-name');
  144. var i = $(this).parents('.table-view').index();
  145. $doc.trigger('spa:navigate', {
  146. hash: 'append',
  147. pushData: {
  148. appendType: appendType,
  149. orderID: orderID,
  150. petName: petName,
  151. index: cachePageData['index']
  152. }
  153. });
  154. }, $view);
  155. // 确认完成
  156. $.newTouch('.order-btn-done', function(event) {
  157. event.preventDefault();
  158. var orderId = $(this).attr('data-order-id');
  159. $doc.trigger('spa:openpanel', ['simpleAlert', {
  160. message: '确认服务已完成?',
  161. buttons: [{
  162. text: '确认',
  163. class: 'btn-primary',
  164. callback: function() {
  165. user.finishOrder(orderId, function(res) {
  166. if (res.success) {
  167. $doc.trigger('spa:navigate', {
  168. hash: 'order-done'
  169. });
  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. }, $view);
  185. dtd.resolve();
  186. },
  187. beforeopen: function (pageData, dtd) {
  188. var $view = this;
  189. var pushData = pageData.pushData;
  190. var index = pushData["index"];
  191. cachePageData['index'] = index;
  192. var orderID = pageData.requestData[0];
  193. user.getOrderDetail(orderID, function(res) {
  194. if (res.success) {
  195. var time = new Date().getTime();
  196. var tpl = template('myOrder/detail', {
  197. showNavBar: !config.isWX && !config.isChubao,
  198. time: parseInt(time / 1000),
  199. order: res.data,
  200. orderID: orderID
  201. });
  202. $view.find('.spa-page-body').html(tpl);
  203. setTimeout(function() {
  204. pageData.scroll = new IScroll('#myOrderDetailScroll' + orderID);
  205. }, 100);
  206. function initMap(lonitude, latitude) {
  207. var map = new BMap.Map("map-container-" + orderID); // 创建地图实例
  208. var point = new BMap.Point(lonitude, latitude); // 创建点坐标
  209. map.centerAndZoom(point, 16);
  210. var marker = new BMap.Marker(point); // 创建标注
  211. map.addOverlay(marker);
  212. if (pageData && pageData.scroll) {
  213. pageData.scroll.refresh();
  214. }
  215. }
  216. if (res.data.status == 4 && res.data.tech_info) {
  217. var name = res.data.tech_info.weixin_userid;
  218. function getPoi (){
  219. $.ajaxJSONP({
  220. url: 'http://n.wozhua.mobi/api/wx/find/' + name,
  221. success: function (res) {
  222. if (res.hasOwnProperty('latitude')) {
  223. var latitude = res.latitude;
  224. var lonitude = res.lonitude;
  225. initMap(lonitude, latitude);
  226. } else {
  227. $('#map-container-' + orderID, $view).hide();
  228. }
  229. },
  230. error: function (res) {
  231. }
  232. });
  233. }
  234. setTimeout(function() {
  235. getPoi();
  236. }, 200);
  237. getPoiFn = setInterval(function() {
  238. getPoi();
  239. }, 60000);
  240. }
  241. } else {
  242. $doc.trigger('spa:openpanel', ['simpleAlert', {
  243. message: res.message
  244. }]);
  245. }
  246. });
  247. dtd.resolve();
  248. },
  249. afteropen: function (pageData, dtd) {
  250. dtd.resolve();
  251. },
  252. beforeclose: function (pageData, dtd) {
  253. clearInterval(getPoiFn);
  254. dtd.resolve();
  255. }
  256. }
  257. })