addressDetail.js 5.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188
  1. define(['template', 'native', 'config', 'address', 'api', 'user'], function (template, native, config, address, api, user) {
  2. function back(event) {
  3. event.preventDefault();
  4. $(document).trigger('spa:navigate', {
  5. hash: 'addressList'
  6. });
  7. }
  8. var cachePageData = {}; //page内部的数据传递
  9. return {
  10. title: '地址详情',
  11. body: '',
  12. init: function (pageData, dtd) {
  13. var $view = this;
  14. var $doc = $(document);
  15. var pushData = pageData.pushData;
  16. //返回
  17. $.newTouch('.back-button', function (event) {
  18. back.call(this, event);
  19. }, $view);
  20. $view.on('tapBackButton', function (event) {
  21. back.call(this, event);
  22. });
  23. $view.on('swipeRight', function (event) {
  24. back.call(this, event);
  25. });
  26. $.newTouch('.btn-delete', function() {
  27. var addressID = $(this).data('id');
  28. address.deleteAddress(user.id, addressID, function(res){
  29. if (res.success) {
  30. address.getList({
  31. request_from: 'weixin',
  32. user_id: user.id
  33. }, function(res) {
  34. if (res.success) {
  35. $doc.trigger('spa:navigate', {
  36. hash: 'addressList',
  37. pushData: {
  38. needReload: true
  39. }
  40. });
  41. };
  42. })
  43. } else {
  44. $doc.trigger('spa:openpanel', ['simpleAlert', {
  45. message: res.message
  46. }]);
  47. }
  48. });
  49. }, $view);
  50. // 定位
  51. $.newTouch('.select-poi', function (event) {
  52. var searchText = $(this).data('poi-name');
  53. var searchProvince = $(this).data('province');
  54. $doc.trigger('spa:navigate', {
  55. hash: 'addressPoisiton',
  56. pushData: {
  57. needReload: true,
  58. searchText: searchText,
  59. searchProvince: searchProvince,
  60. backHash: 'addressDetail'
  61. },
  62. callback: {
  63. onSelect: function (name, place, address_position, address_detail) {
  64. $('.select-poi', $view).text(name);
  65. $('.select-poi', $view).data('poi-name', address_detail.poi.name);
  66. $('.select-poi', $view).data('province', address_detail.province);
  67. cachePageData.address_position = address_position;
  68. cachePageData.address_detail = address_detail;
  69. }
  70. }
  71. });
  72. }, $view);
  73. //确认地址
  74. $.newTouch('.btn-save', function (event) {
  75. event.preventDefault();
  76. // 设置默认地址
  77. var addressInfo = address['list'][cachePageData.addressIndex];
  78. var name = $('.address-name', $view).val(),
  79. mobile = $('.address-mobile', $view).val(),
  80. detail = $('.address-detail', $view).val();
  81. if (name == '') {
  82. $doc.trigger('spa:openpanel', ['simpleAlert', {
  83. message: '请输入您的名字'
  84. }]);
  85. return;
  86. }
  87. if (mobile.length !== 11) {
  88. $doc.trigger('spa:openpanel', ['simpleAlert', {
  89. message: '请输入正确的手机号'
  90. }]);
  91. return;
  92. }
  93. if (detail == '') {
  94. $doc.trigger('spa:openpanel', ['simpleAlert', {
  95. message: '请输入您的详细地址'
  96. }]);
  97. return;
  98. }
  99. if (cachePageData.address_detail) {
  100. cachePageData.address_detail.detail = detail;
  101. addressStr = JSON.stringify(cachePageData.address_detail);
  102. address_position = JSON.stringify(cachePageData.address_position);
  103. } else {
  104. var addressDetailTmp = addressInfo.address;
  105. addressDetailTmp.detail = detail;
  106. var addressStr = JSON.stringify(addressDetailTmp);
  107. var address_position = addressInfo.position;
  108. address_position = JSON.stringify(address_position);
  109. }
  110. var param = {
  111. request_from: 'weixin',
  112. name: name,
  113. mobile: mobile,
  114. user_id: user.id,
  115. address_position: address_position,
  116. address: addressStr,
  117. address_id: cachePageData.addressID
  118. };
  119. address.editAddress( param, function(res) {
  120. $doc.trigger('spa:closeloader');
  121. if (res.success) {
  122. $doc.trigger('spa:navigate', {
  123. hash: 'addressList',
  124. pushData: {
  125. needReload: true
  126. }
  127. });
  128. } else {
  129. $doc.trigger('spa:openpanel', ['simpleAlert', {
  130. message: res.message
  131. }]);
  132. }
  133. })
  134. /*if (cachePageData.callback && $.isFunction(cachePageData.callback.onSelect)) {
  135. cachePageData.callback.onSelect(cachePageData.addressID);
  136. }*/
  137. }, $view);
  138. dtd.resolve();
  139. },
  140. beforeopen: function(pageData, dtd) {
  141. var $view = this;
  142. var $doc = $(document);
  143. var pushData = pageData.pushData;
  144. cachePageData.needReload = pushData.needReload;
  145. if (cachePageData.needReload) {
  146. pushData.needReload = false;
  147. cachePageData.addressID = pushData.addressID;
  148. cachePageData.addressIndex = pushData.addressIndex;
  149. var addressIndex = pushData.addressIndex;
  150. var addressData = address.list[addressIndex];
  151. cachePageData.callback = pageData.callback;
  152. var tpl = template('address/detail/index', {
  153. showNavBar: !config.isWX && !config.isChubao,
  154. title: '修改地址',
  155. address: addressData,
  156. add: false
  157. });
  158. $('.spa-page-body', $view).html(tpl);
  159. if (cachePageData.scroll) {
  160. cachePageData.scroll.destroy();
  161. cachePageData.scroll = null;
  162. }
  163. setTimeout(function() {
  164. cachePageData.scroll = new IScroll('#addressListScroll');
  165. }, 10);
  166. }
  167. dtd.resolve();
  168. }
  169. };
  170. })