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.
		
		
		
		
		
			
		
			
				
					
					
						
							175 lines
						
					
					
						
							3.9 KiB
						
					
					
				
			
		
		
		
			
			
			
				
					
				
				
					
				
			
		
		
	
	
							175 lines
						
					
					
						
							3.9 KiB
						
					
					
				
								<template>
							 | 
						|
									<view style="flex-direction: column;">
							 | 
						|
										<scroll-view class="scroll-view" :scroll-y="true">
							 | 
						|
											<view class="addressItem" v-for="(item, index) in addressList" :key="item.id" @click="selectAddress(item)">
							 | 
						|
												<view class="addressItemTop">
							 | 
						|
													<text class="addrName">{{ item.name }}</text>
							 | 
						|
													<text class="addrTel">{{ item.tel }}</text>
							 | 
						|
												</view>
							 | 
						|
												<text class="addr">{{ item.desc }}</text>
							 | 
						|
												<view class="line"></view>
							 | 
						|
												<view class="optionsPanel">
							 | 
						|
													<radio-group @change="radioChange" @click.stop>
							 | 
						|
														<label>
							 | 
						|
															<radio :value="item.id" :checked="item.default == 1" color="#e7a23f"></radio>
							 | 
						|
															<text>设置为默认地址</text>
							 | 
						|
														</label>
							 | 
						|
													</radio-group>
							 | 
						|
													<view class="rightPanel">
							 | 
						|
														<image class="optionsBtn" src="@/static/icon/delete.png" @click.stop="remove(item.id)"></image>
							 | 
						|
														<image class="optionsBtnEdit" src="@/static/icon/edit.png" @click.stop="$url('/packages/addAddress/addAddress?id='+ item.id)"></image>
							 | 
						|
													</view>
							 | 
						|
												</view>
							 | 
						|
												<view style="height: 30rpx;background-color: #F6F6F6;"></view>
							 | 
						|
											</view>
							 | 
						|
										</scroll-view>
							 | 
						|
										<view class="addNewAddr" @click="$url('/packages/addAddress/addAddress')">
							 | 
						|
											<text>+ 新增收获地址</text>
							 | 
						|
										</view>
							 | 
						|
									</view>
							 | 
						|
								</template>
							 | 
						|
								
							 | 
						|
								<script>
							 | 
						|
									import { address, setDefaultAddress, deleteAddress } from '@/service/address.js';
							 | 
						|
									
							 | 
						|
									export default {
							 | 
						|
										data() {
							 | 
						|
											return {
							 | 
						|
												addressList: [],
							 | 
						|
												is_select: false,
							 | 
						|
											}
							 | 
						|
										},
							 | 
						|
										onLoad(options){
							 | 
						|
											this.is_select = Boolean(Number(options.is_select || '0'));
							 | 
						|
											if(this.is_select){
							 | 
						|
												uni.setNavigationBarTitle({
							 | 
						|
													title: '请选择一个地址'
							 | 
						|
												})
							 | 
						|
											}
							 | 
						|
										},
							 | 
						|
										onShow(){
							 | 
						|
											this.addressList = [];
							 | 
						|
											this.getUserAddress();
							 | 
						|
										},
							 | 
						|
										methods: {
							 | 
						|
											async getUserAddress(){
							 | 
						|
												let res = await address();
							 | 
						|
												this.addressList = res.data.datas;
							 | 
						|
											},
							 | 
						|
											// 切换默认地址
							 | 
						|
											radioChange(event){
							 | 
						|
												let id = event.detail.value;
							 | 
						|
												uni.showLoading({
							 | 
						|
													title: '切换默认地址'
							 | 
						|
												})
							 | 
						|
												setDefaultAddress(id).then(res => {
							 | 
						|
													uni.hideLoading();
							 | 
						|
													this.addressList.forEach(item => {
							 | 
						|
														if(item.id === id){
							 | 
						|
															item.default = 1;
							 | 
						|
														}else{
							 | 
						|
															item.default = 0;
							 | 
						|
														}
							 | 
						|
													});
							 | 
						|
												}).catch(err => uni.hideLoading());
							 | 
						|
											},
							 | 
						|
											remove(id){
							 | 
						|
												uni.showModal({
							 | 
						|
													title: '提示',
							 | 
						|
													content: '您确定删除该地址吗?',
							 | 
						|
													success: async result => {
							 | 
						|
														if(result.confirm){
							 | 
						|
															await deleteAddress(id);
							 | 
						|
															this.$msg('删除成功', {icon: 'success'});
							 | 
						|
															this.getUserAddress();
							 | 
						|
														}
							 | 
						|
													}
							 | 
						|
												})
							 | 
						|
											},
							 | 
						|
											selectAddress(item){
							 | 
						|
												if(!this.is_select) return;
							 | 
						|
												let pages = getCurrentPages();
							 | 
						|
												let page = pages[pages.length - 2]; // 访问上一个页面
							 | 
						|
												page.$vm.address = item; // 将选中的地址赋值回去
							 | 
						|
												this.$toBack();
							 | 
						|
											}
							 | 
						|
										}
							 | 
						|
									}
							 | 
						|
								</script>
							 | 
						|
								
							 | 
						|
								<style scoped class="scss">
							 | 
						|
								/deep/view{
							 | 
						|
									display: flex;
							 | 
						|
									background-color: #FFFFFF;
							 | 
						|
								}
							 | 
						|
								
							 | 
						|
								.scroll-view{
							 | 
						|
									height: calc(100vh - 200rpx);
							 | 
						|
								}
							 | 
						|
									
							 | 
						|
								.checkBtn{
							 | 
						|
										width: 44rpx;
							 | 
						|
										height: 44rpx;
							 | 
						|
										margin-right: 14rpx;
							 | 
						|
									}
							 | 
						|
									.addressItemTop{
							 | 
						|
										align-items: center;
							 | 
						|
										margin-top: 20rpx;
							 | 
						|
										margin-bottom: 20rpx;
							 | 
						|
									}
							 | 
						|
									.addressItem{
							 | 
						|
										flex-direction: column;
							 | 
						|
									}
							 | 
						|
									.line{
							 | 
						|
										height: 1rpx;
							 | 
						|
										background-color: #D8D8D8;
							 | 
						|
										margin-left: 32rpx;
							 | 
						|
										margin-right: 32rpx;
							 | 
						|
										margin-top: 20rpx;
							 | 
						|
										margin-bottom: 20rpx;
							 | 
						|
									}
							 | 
						|
									.addrName{
							 | 
						|
										margin-left: 32rpx;
							 | 
						|
										font-size: 36rpx;
							 | 
						|
										font-weight: bold;
							 | 
						|
										margin-right: 40rpx;
							 | 
						|
									}
							 | 
						|
									.addr{
							 | 
						|
										margin-left: 32rpx;
							 | 
						|
									}
							 | 
						|
									.optionsPanel{
							 | 
						|
										margin-left: 32rpx;
							 | 
						|
										margin-bottom: 40rpx;
							 | 
						|
										align-items: center;
							 | 
						|
										justify-content: space-between;
							 | 
						|
									}
							 | 
						|
									.rightPanel{
							 | 
						|
										align-items: center;
							 | 
						|
										justify-content: center;
							 | 
						|
										margin-right: 32rpx;
							 | 
						|
									}
							 | 
						|
									.optionsBtn{
							 | 
						|
										width: 44rpx;
							 | 
						|
										height: 44rpx;
							 | 
						|
										margin-right: 50rpx;
							 | 
						|
									}
							 | 
						|
									.optionsBtnEdit{
							 | 
						|
										width: 38rpx;
							 | 
						|
										height: 38rpx;
							 | 
						|
									}
							 | 
						|
									.addNewAddr{
							 | 
						|
										height: 96rpx;
							 | 
						|
										/* width: 90%; */
							 | 
						|
										width: 686rpx;
							 | 
						|
										border: #E7A23F 2rpx solid;
							 | 
						|
										border-radius: 8rpx;
							 | 
						|
										position: fixed;
							 | 
						|
										bottom: 100rpx;
							 | 
						|
										left: calc(50% - 343rpx);
							 | 
						|
										justify-content: center;
							 | 
						|
										align-items: center;
							 | 
						|
										align-self: center;
							 | 
						|
										color: #E7A23F;
							 | 
						|
									}
							 | 
						|
									
							 | 
						|
								</style>
							 |