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.
		
		
		
		
		
			
		
			
				
					
					
						
							290 lines
						
					
					
						
							6.9 KiB
						
					
					
				
			
		
		
		
			
			
			
				
					
				
				
					
				
			
		
		
	
	
							290 lines
						
					
					
						
							6.9 KiB
						
					
					
				
								<template>
							 | 
						|
								<view id="address-list">
							 | 
						|
									<lf-nav title="地址管理" :showIcon="true" bgColor="#fff"></lf-nav>
							 | 
						|
								    <view class="list-box">
							 | 
						|
								        <view class="list-item" 
							 | 
						|
											:data-info="JSON.stringify(item)" 
							 | 
						|
											:data-id="item.id" 
							 | 
						|
											v-for="(item, index) in list" 
							 | 
						|
											:key="index"
							 | 
						|
											@click="selectAddress(item.id)">
							 | 
						|
								            <!-- <view class="user">
							 | 
						|
								                <view class="name">
							 | 
						|
								                    <text>{{item.accept_name}}</text>
							 | 
						|
								                    <text class="phone">{{item.mobile}}</text>
							 | 
						|
								                </view>
							 | 
						|
								                <view class="default" v-if="item.is_default">
							 | 
						|
								                    默认
							 | 
						|
								                </view>
							 | 
						|
								            </view>
							 | 
						|
								            <view class="address">{{item.address_name}} {{item.address}}</view> -->
							 | 
						|
											
							 | 
						|
											<view class="lf-font-28 user-item">
							 | 
						|
												<text class="lf-color-black lf-font-bold">{{item.accept_name}}</text>
							 | 
						|
												<text class="lf-color-777 lf-m-l-20">{{item.mobile}}</text>
							 | 
						|
											</view>
							 | 
						|
											<view class="address-item lf-line-2">
							 | 
						|
												<text>{{item.address_name}}</text>
							 | 
						|
												<text>{{item.address}}</text>
							 | 
						|
											</view>
							 | 
						|
											<view class="menu-item lf-row-between lf-m-t-30">
							 | 
						|
												<view class="lf-row-center">
							 | 
						|
													<radio-group @change="radioChange">
							 | 
						|
														<radio :checked="item.is_default" :value="index"></radio>
							 | 
						|
													</radio-group>
							 | 
						|
													<text class="lf-m-l-15 lf-font-24 lf-color-777">默认地址</text>
							 | 
						|
												</view>
							 | 
						|
												<view class="lf-row-between">
							 | 
						|
													<view @tap="setInfo(item)">
							 | 
						|
														<text class="lf-iconfont icon-bianji"></text>
							 | 
						|
														<text class="lf-m-l-10">编辑</text>
							 | 
						|
													</view>
							 | 
						|
													<view class="lf-m-l-50 lf-color-red" @click="deleteAddress(item, index)">
							 | 
						|
														<text class="lf-iconfont icon-shanchu"></text>
							 | 
						|
														<text class="lf-m-l-10">删除</text>
							 | 
						|
													</view>
							 | 
						|
												</view>
							 | 
						|
											</view>
							 | 
						|
								        </view>
							 | 
						|
										<lf-nocontent src="/static/images/empty.png" text="您还未添加地址" v-if="list.length <= 0 && !is_load"></lf-nocontent>
							 | 
						|
								    </view>
							 | 
						|
									<view style="height: 230rpx;"></view>
							 | 
						|
									<view class="add-address" @tap="add">
							 | 
						|
									    <view class="small-btn">
							 | 
						|
									    	<text class="lf-iconfont icon-jia"></text>
							 | 
						|
									    	<text class="lf-m-l-10">新增收货地址</text>
							 | 
						|
									    </view>
							 | 
						|
									</view>
							 | 
						|
								</view>
							 | 
						|
								
							 | 
						|
								</template>
							 | 
						|
								<script>
							 | 
						|
								import {pageLogin, getUrl,config,is} from '@/common/js/utils.js';
							 | 
						|
								
							 | 
						|
								export default {
							 | 
						|
								  data() {
							 | 
						|
								    return {
							 | 
						|
								      list: [],
							 | 
						|
								      order_no: '',
							 | 
						|
								      url: '',
							 | 
						|
									  id:'',
							 | 
						|
									  is_load: true,
							 | 
						|
									  is_select: false
							 | 
						|
								    };
							 | 
						|
								  },
							 | 
						|
								
							 | 
						|
								  onShow() {
							 | 
						|
								    this.queryAddressList(); // let app =getApp(); 暂时注释
							 | 
						|
									
							 | 
						|
								    // app.isBirthday().then(()=>{
							 | 
						|
								    //     if(this.$cookieStorage.get("birthday_gift")){
							 | 
						|
								    //         var giftData=this.$cookieStorage.get("birthday_gift").data;
							 | 
						|
								    //         new app.ToastPannel().__page.showText(giftData);
							 | 
						|
								    //     }
							 | 
						|
								    // });
							 | 
						|
								  },
							 | 
						|
								
							 | 
						|
								  onLoad(e) {
							 | 
						|
								    pageLogin(getUrl());
							 | 
						|
									
							 | 
						|
									this.is_select = Boolean(Number(e.is_select));
							 | 
						|
									
							 | 
						|
								    this.setData({
							 | 
						|
								      order_no: e.order_no,
							 | 
						|
								      url: e.url
							 | 
						|
								    });
							 | 
						|
								  },
							 | 
						|
								
							 | 
						|
								  components: {},
							 | 
						|
								  props: {},
							 | 
						|
								  methods: {
							 | 
						|
									  // 删除收货地址
							 | 
						|
									  deleteAddress(item, index){
							 | 
						|
										  console.log("item", item)
							 | 
						|
										  
							 | 
						|
										  uni.showModal({
							 | 
						|
										  	title: '温馨提示',
							 | 
						|
											content: '您确定删除该收货地址吗?',
							 | 
						|
											success: result => {
							 | 
						|
												if(result.confirm){
							 | 
						|
													var token = this.$cookieStorage.get('user_token');
							 | 
						|
													this.$http.ajax({
							 | 
						|
													  api: '/api/address/'+ item.id,
							 | 
						|
													  method: 'DELETE',
							 | 
						|
													  header: {
							 | 
						|
														Authorization: token
							 | 
						|
													  }
							 | 
						|
													}).then(res => {
							 | 
						|
													  console.log("删除地址", res);
							 | 
						|
													  this.$msg('删除成功', {icon: 'success'});
							 | 
						|
													  this.list.splice(index, 1);
							 | 
						|
													}).catch(err => {
							 | 
						|
													  this.$msg('删除失败', {icon: 'error'});
							 | 
						|
													})
							 | 
						|
												}
							 | 
						|
											}
							 | 
						|
										  })
							 | 
						|
									  },
							 | 
						|
									  // 切换默认地址
							 | 
						|
									  radioChange(e){
							 | 
						|
										  uni.showLoading({
							 | 
						|
										  	title: '切换默认地址中'
							 | 
						|
										  })
							 | 
						|
										  let current = e.target.value;
							 | 
						|
										  let id = null;
							 | 
						|
										  this.list.forEach((item, index) => {
							 | 
						|
											  if(current == index){
							 | 
						|
												  item.is_default = 1;
							 | 
						|
												  id = item.id;
							 | 
						|
											  }else{
							 | 
						|
												  item.is_default = 0;
							 | 
						|
											  }
							 | 
						|
										  })
							 | 
						|
										  this.switchDefaultAddress(id);
							 | 
						|
									  },
							 | 
						|
									  // 选择地址
							 | 
						|
									  selectAddress(id){
							 | 
						|
										  if(this.is_select){
							 | 
						|
											  let pages = getCurrentPages();
							 | 
						|
											  let prePage = pages[pages.length - 2];
							 | 
						|
											  prePage.$vm.address_id = id;
							 | 
						|
											  this.$toBack();
							 | 
						|
										  }
							 | 
						|
									  },
							 | 
						|
									  switchDefaultAddress(id){
							 | 
						|
										  var token = this.$cookieStorage.get('user_token');
							 | 
						|
										  this.$http.ajax({
							 | 
						|
										    api: 'api/address/'+ id,
							 | 
						|
										    method: 'PUT',
							 | 
						|
										    header: {
							 | 
						|
										      Authorization: token
							 | 
						|
										    },
							 | 
						|
										    data: {
							 | 
						|
												is_default: 1
							 | 
						|
											}
							 | 
						|
										  }).then(res => {
							 | 
						|
											  uni.hideLoading();
							 | 
						|
											  this.$msg('操作成功', {icon: 'success'});
							 | 
						|
										  }).catch(err => {
							 | 
						|
											   uni.hideLoading();
							 | 
						|
											  this.$msg('切换默认地址失败');
							 | 
						|
										  })
							 | 
						|
									  },
							 | 
						|
								    setInfo(e) {
							 | 
						|
								      // var from = e.currentTarget.dataset.info;
							 | 
						|
									  var from = e;
							 | 
						|
								      var data = this.$cookieStorage.get('order_form');
							 | 
						|
									  // var from=JSON.parse(from);
							 | 
						|
									 
							 | 
						|
								      if (!data) {
							 | 
						|
								        return this.view(from.id);
							 | 
						|
								      }
							 | 
						|
								
							 | 
						|
								      var order_no = this.order_no;
							 | 
						|
								
							 | 
						|
								      if (order_no && data.order_no === order_no) {
							 | 
						|
								        data.address = from;
							 | 
						|
								        this.$cookieStorage.set('order_form', data);
							 | 
						|
								        wx.navigateBack({
							 | 
						|
								          url: '/' + this.url
							 | 
						|
								        });
							 | 
						|
								      } else {
							 | 
						|
								        return this.view(from.id);
							 | 
						|
								      }
							 | 
						|
								    },
							 | 
						|
								
							 | 
						|
								    view(id) {
							 | 
						|
								      wx.navigateTo({
							 | 
						|
								        url: '/pages/address/add/add?id=' + id
							 | 
						|
								      });
							 | 
						|
								    },
							 | 
						|
								
							 | 
						|
								    add() {
							 | 
						|
								      wx.navigateTo({
							 | 
						|
								        url: '/pages/address/add/add'
							 | 
						|
								      });
							 | 
						|
								    },
							 | 
						|
								
							 | 
						|
								    // 查询收货地址列表
							 | 
						|
								    queryAddressList() {
							 | 
						|
										this.is_load = true;
							 | 
						|
								      var token = this.$cookieStorage.get('user_token');
							 | 
						|
								      this.$http.get({
							 | 
						|
								        api: 'api/address',
							 | 
						|
								        header: {
							 | 
						|
								          Authorization: token
							 | 
						|
								        }
							 | 
						|
								      }).then(res => {
							 | 
						|
								        if (res.statusCode == 200) {
							 | 
						|
								          res = res.data;
							 | 
						|
										
							 | 
						|
								          if (res.status) {
							 | 
						|
								            this.setData({
							 | 
						|
								              list: res.data
							 | 
						|
								            });
							 | 
						|
								          } else {
							 | 
						|
								            wx.showToast({
							 | 
						|
								              title: res.message,
							 | 
						|
								              icon: 'error'
							 | 
						|
								            });
							 | 
						|
								          }
							 | 
						|
								        } else {
							 | 
						|
								          wx.showToast({
							 | 
						|
								            title: '获取信息失败',
							 | 
						|
								            icon: 'error'
							 | 
						|
								          });
							 | 
						|
								        }
							 | 
						|
										this.is_load = false;
							 | 
						|
								      }).catch(err => {
							 | 
						|
										  this.is_load = false;
							 | 
						|
									  })
							 | 
						|
								    },
							 | 
						|
								
							 | 
						|
								    setData: function (obj) {
							 | 
						|
								      let that = this;
							 | 
						|
								      let keys = [];
							 | 
						|
								      let val, data;
							 | 
						|
								      Object.keys(obj).forEach(function (key) {
							 | 
						|
								        keys = key.split('.');
							 | 
						|
								        val = obj[key];
							 | 
						|
								        data = that.$data;
							 | 
						|
								        keys.forEach(function (key2, index) {
							 | 
						|
								          if (index + 1 == keys.length) {
							 | 
						|
								            that.$set(data, key2, val);
							 | 
						|
								          } else {
							 | 
						|
								            if (!data[key2]) {
							 | 
						|
								              that.$set(data, key2, {});
							 | 
						|
								            }
							 | 
						|
								          }
							 | 
						|
								
							 | 
						|
								          data = data[key2];
							 | 
						|
								        });
							 | 
						|
								      });
							 | 
						|
								    }
							 | 
						|
								  },
							 | 
						|
								  computed: {},
							 | 
						|
								  watch: {}
							 | 
						|
								};
							 | 
						|
								</script>
							 | 
						|
								
							 | 
						|
								<style>
							 | 
						|
									page{
							 | 
						|
										background-color: #F8F8F8;
							 | 
						|
									}
							 | 
						|
								</style>
							 | 
						|
								<style rel="stylesheet/less" lang="less">
							 | 
						|
								    @import "list";
							 | 
						|
									.lf-color-red{
							 | 
						|
										color: red;
							 | 
						|
									}
							 | 
						|
									.user-item, .menu-item{
							 | 
						|
										height: 50rpx;
							 | 
						|
										width: 100%;
							 | 
						|
									}
							 | 
						|
									.address-item{
							 | 
						|
										width: 100%;
							 | 
						|
										margin-top: 10rpx;
							 | 
						|
										font-size: 28rpx;
							 | 
						|
										color: #333333;
							 | 
						|
									}
							 | 
						|
								</style>
							 |