address.html 6.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142
  1. <!-- +---------------------------------------------------------------------- -->
  2. <!-- | CRMEB [ CRMEB赋能开发者,助力企业发展 ] -->
  3. <!-- +---------------------------------------------------------------------- -->
  4. <!-- | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. -->
  5. <!-- +---------------------------------------------------------------------- -->
  6. <!-- | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 -->
  7. <!-- +---------------------------------------------------------------------- -->
  8. <!-- | Author: CRMEB Team <admin@crmeb.com> -->
  9. <!-- +---------------------------------------------------------------------- -->
  10. {extend name="public/container"}
  11. {block name="title"}地址列表{/block}
  12. {block name="head_top"}
  13. <style>
  14. body {
  15. padding-bottom: 1.18rem;
  16. background-color: #f5f5f5;
  17. }
  18. .nothing {
  19. position: absolute;
  20. top: 30%;
  21. left: 50%;
  22. width: 4.14rem;
  23. height: 3.36rem;
  24. -webkit-transform: translate(-50%, -50%);
  25. transform: translate(-50%, -50%);
  26. }
  27. </style>
  28. {/block}
  29. {block name="content"}
  30. <div v-cloak id="app">
  31. <div class="address-list">
  32. <ul v-if="address && address.length">
  33. <li v-for="(item, index) in address" :key="index">
  34. <div class="head">
  35. <div>联系人:{{item.real_name}} {{item.phone}}</div>
  36. <div>收货地址:{{item.province}}{{item.city}}{{item.district}}{{item.detail}}</div>
  37. </div>
  38. <div class="foot">
  39. <label>
  40. <input v-model="picked" :value="item.id" type="radio" name="address" hidden>
  41. <div>设为默认</div>
  42. </label>
  43. <div>
  44. <a :href="$h.U({c:'my',a:'edit_address'})+'?addressId='+item.id"><img src="/wap/first/zsff/images/editor.png">编辑</a>
  45. <a href="javascript:;" @click="remove(item.id)"><img src="/wap/first/zsff/images/trash.png">删除</a>
  46. </div>
  47. </div>
  48. </li>
  49. </ul>
  50. <img v-else class="nothing" src="/wap/first/zsff/images/no_address.png">
  51. <div class="footer">
  52. <a :href="$h.U({c:'my',a:'edit_address'})"><img src="/wap/first/zsff/images/add-address.png"><span>添加新地址</span></a>
  53. <a v-if="isWechat" href="javascript:;" @click="getWxAddress"><img src="/wap/first/zsff/images/weixin.png"><span>导入微信地址</span></a>
  54. </div>
  55. </div>
  56. <quick-menu></quick-menu>
  57. </div>
  58. <script>
  59. var address = {$address},isWechat={$isWechat ? 'true' : 'false'};
  60. require(['vue', 'store', 'helper', 'layer', 'quick'], function (Vue, api, $h, layer) {
  61. var app = new Vue({
  62. el: '#app',
  63. data: {
  64. address: address,
  65. picked: '',
  66. isWechat: isWechat
  67. },
  68. watch: {
  69. address: {
  70. handler: function (value) {
  71. var result = value.find(function (item) {
  72. return item.is_default;
  73. });
  74. if (result) {
  75. this.picked = result.id;
  76. }
  77. },
  78. immediate: true
  79. },
  80. picked: function (value) {
  81. this.setDefault(value);
  82. }
  83. },
  84. methods: {
  85. setDefault: function (id) {
  86. $h.loadFFF();
  87. api.baseGet($h.U({ c: 'auth_api', a: 'set_user_default_address', q: { addressId: id } }), function () {
  88. $h.loadClear();
  89. $h.pushMsg('设为默认成功');
  90. }.bind(this), function (err) {
  91. $h.loadClear();
  92. }.bind(this));
  93. },
  94. remove: function (id) {
  95. layer.confirm('是否删除该地址?', {
  96. icon: 3,
  97. title: false,
  98. btn: ['删除', '取消']
  99. }, function (index) {
  100. $h.loadFFF();
  101. api.baseGet($h.U({ c: 'auth_api', a: 'remove_user_address', q: { addressId: id } }), function () {
  102. $h.loadClear();
  103. $h.pushMsg('删除成功');
  104. this.address = this.address.filter(function (value) {
  105. return value.id !== id;
  106. });
  107. }.bind(this), function (err) {
  108. $h.loadClear();
  109. }.bind(this));
  110. layer.close(index);
  111. }.bind(this));
  112. },
  113. getWxAddress: function () {
  114. mapleWx($jssdk(), function () {
  115. this.openAddress(function (res) {
  116. $h.loadFFF();
  117. api.basePost($h.U({ c: 'auth_api', a: 'edit_user_address' }), {
  118. id: '',
  119. real_name: res.userName,
  120. phone: res.telNumber,
  121. address: {
  122. province: res.provinceName,
  123. city: res.cityName,
  124. district: res.countryName
  125. },
  126. detail: res.detailInfo,
  127. is_default: false
  128. }, function () {
  129. location.reload();
  130. }.bind(this), function (err) {
  131. $h.loadClear();
  132. });
  133. }, function (err) {
  134. $h.pushMsg('导入微信地址失败');
  135. });
  136. });
  137. }
  138. }
  139. });
  140. });
  141. </script>
  142. {/block}