金诚优选前端代码
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

227 lines
5.4 KiB

  1. <template>
  2. <view id="address-list">
  3. <lf-nav title="地址管理" :showIcon="true" bgColor="#fff"></lf-nav>
  4. <view class="list-box">
  5. <view class="list-item" :data-info="JSON.stringify(item)" :data-id="item.id" v-for="(item, index) in list" :key="index">
  6. <!-- <view class="user">
  7. <view class="name">
  8. <text>{{item.accept_name}}</text>
  9. <text class="phone">{{item.mobile}}</text>
  10. </view>
  11. <view class="default" v-if="item.is_default">
  12. 默认
  13. </view>
  14. </view>
  15. <view class="address">{{item.address_name}} {{item.address}}</view> -->
  16. <view class="lf-font-28 user-item">
  17. <text class="lf-color-black lf-font-bold">{{item.accept_name}}</text>
  18. <text class="lf-color-777 lf-m-l-20">{{item.mobile}}</text>
  19. </view>
  20. <view class="address-item lf-line-2">
  21. <text>{{item.address_name}}</text>
  22. <text>{{item.address}}</text>
  23. </view>
  24. <view class="menu-item lf-row-between lf-m-t-30">
  25. <view class="lf-row-center">
  26. <radio-group @change="radioChange">
  27. <radio :checked="item.is_default" :value="index"></radio>
  28. </radio-group>
  29. <text class="lf-m-l-15 lf-font-24 lf-color-777">默认地址</text>
  30. </view>
  31. <view class="lf-row-between">
  32. <view @tap="setInfo(item)">
  33. <text class="lf-iconfont icon--1"></text>
  34. <text class="lf-m-l-10">编辑</text>
  35. </view>
  36. <view class="lf-m-l-50" @click="deleteAddress(item)">
  37. <text class="lf-iconfont icon--1"></text>
  38. <text class="lf-m-l-10">删除</text>
  39. </view>
  40. </view>
  41. </view>
  42. </view>
  43. </view>
  44. <view style="height: 230rpx;"></view>
  45. <view class="add-address" @tap="add">
  46. <view class="small-btn">
  47. <text class="lf-iconfont icon--2"></text>
  48. <text class="lf-m-l-10">新增收货地址</text>
  49. </view>
  50. </view>
  51. </view>
  52. </template>
  53. <script>
  54. import {pageLogin, getUrl,config,is} from '@/common/js/utils.js';
  55. export default {
  56. data() {
  57. return {
  58. list: [],
  59. order_no: '',
  60. url: '',
  61. id:''
  62. };
  63. },
  64. onShow() {
  65. this.queryAddressList(); // let app =getApp(); 暂时注释
  66. // app.isBirthday().then(()=>{
  67. // if(this.$cookieStorage.get("birthday_gift")){
  68. // var giftData=this.$cookieStorage.get("birthday_gift").data;
  69. // new app.ToastPannel().__page.showText(giftData);
  70. // }
  71. // });
  72. },
  73. onLoad(e) {
  74. // 暂时注释
  75. // pageLogin(getUrl());
  76. this.setData({
  77. order_no: e.order_no,
  78. url: e.url
  79. });
  80. },
  81. components: {},
  82. props: {},
  83. methods: {
  84. // 删除收货地址
  85. deleteAddress(item){
  86. console.log("item", item)
  87. var token = this.$cookieStorage.get('user_token');
  88. this.$http.ajax({
  89. api: '/api/address/'+ item.id,
  90. method: 'DELETE',
  91. header: {
  92. Authorization: token
  93. }
  94. }).then(res => {
  95. console.log("删除地址", res);
  96. })
  97. },
  98. // 切换默认地址
  99. radioChange(e){
  100. let current = e.target.value;
  101. this.list.forEach((item, index) => {
  102. if(current == index){
  103. item.is_default = 1;
  104. }else{
  105. item.is_default = 0;
  106. }
  107. })
  108. },
  109. setInfo(e) {
  110. // var from = e.currentTarget.dataset.info;
  111. var from = e;
  112. var data = this.$cookieStorage.get('order_form');
  113. // var from=JSON.parse(from);
  114. if (!data) {
  115. return this.view(from.id);
  116. }
  117. var order_no = this.order_no;
  118. if (order_no && data.order_no === order_no) {
  119. data.address = from;
  120. this.$cookieStorage.set('order_form', data);
  121. wx.navigateBack({
  122. url: '/' + this.url
  123. });
  124. } else {
  125. return this.view(from.id);
  126. }
  127. },
  128. view(id) {
  129. wx.navigateTo({
  130. url: '/pages/address/add/add?id=' + id
  131. });
  132. },
  133. add() {
  134. wx.navigateTo({
  135. url: '/pages/address/add/add'
  136. });
  137. },
  138. // 查询收货地址列表
  139. queryAddressList() {
  140. var token = this.$cookieStorage.get('user_token');
  141. this.$http.get({
  142. api: 'api/address',
  143. header: {
  144. Authorization: token
  145. }
  146. }).then(res => {
  147. if (res.statusCode == 200) {
  148. res = res.data;
  149. if (res.status) {
  150. this.setData({
  151. list: res.data
  152. });
  153. } else {
  154. wx.showToast({
  155. title: res.message,
  156. image: '../../../static/error.png'
  157. });
  158. }
  159. } else {
  160. wx.showToast({
  161. title: '获取信息失败',
  162. image: '../../../static/error.png'
  163. });
  164. }
  165. });
  166. },
  167. setData: function (obj) {
  168. let that = this;
  169. let keys = [];
  170. let val, data;
  171. Object.keys(obj).forEach(function (key) {
  172. keys = key.split('.');
  173. val = obj[key];
  174. data = that.$data;
  175. keys.forEach(function (key2, index) {
  176. if (index + 1 == keys.length) {
  177. that.$set(data, key2, val);
  178. } else {
  179. if (!data[key2]) {
  180. that.$set(data, key2, {});
  181. }
  182. }
  183. data = data[key2];
  184. });
  185. });
  186. }
  187. },
  188. computed: {},
  189. watch: {}
  190. };
  191. </script>
  192. <style>
  193. page{
  194. background-color: #F8F8F8;
  195. }
  196. </style>
  197. <style rel="stylesheet/less" lang="less">
  198. @import "list";
  199. .user-item, .menu-item{
  200. height: 50rpx;
  201. width: 100%;
  202. }
  203. .address-item{
  204. width: 100%;
  205. margin-top: 10rpx;
  206. font-size: 28rpx;
  207. color: #333333;
  208. }
  209. </style>