| 
									
										
										
										
											2022-04-19 17:58:39 +08:00
										 |  |  |  | <template> | 
					
						
							| 
									
										
										
										
											2022-05-01 22:39:54 +08:00
										 |  |  |  |   <view class="container"> | 
					
						
							|  |  |  |  |     <view class="address-list" v-for="(item, index) in addressList" :key="item.id"> | 
					
						
							|  |  |  |  |       <view class="address-item" @click="handleClick" @longpress="handleLongPress(item)"> | 
					
						
							|  |  |  |  |         <view class="left"> | 
					
						
							|  |  |  |  |           <u-avatar :text="item.name ? item.name.slice(0, 1) : 'U'" fontSize="18" randomBgColor></u-avatar> | 
					
						
							|  |  |  |  |         </view> | 
					
						
							|  |  |  |  |         <view class="middle"> | 
					
						
							|  |  |  |  |           <view class="info"> | 
					
						
							|  |  |  |  |             <view class="name">{{ item.name }}</view> | 
					
						
							|  |  |  |  |             <view class="mobile">{{ item.mobile }}</view> | 
					
						
							|  |  |  |  |             <u-tag class="type" v-if="item.type === 1" text="默认" plain size="mini" type="success"></u-tag> | 
					
						
							|  |  |  |  |           </view> | 
					
						
							|  |  |  |  |           <view class="detail"> | 
					
						
							|  |  |  |  |             <u--text :lines="2" size="14" color="#939393" :text="item.detailAddress"></u--text> | 
					
						
							|  |  |  |  |           </view> | 
					
						
							|  |  |  |  |         </view> | 
					
						
							|  |  |  |  |         <navigator class="right" :url="`/pages/address/update?addressId=${item.id}`" open-type="navigate" hover-class="none"> | 
					
						
							|  |  |  |  |           <u-icon name="edit-pen" size="28"></u-icon> | 
					
						
							|  |  |  |  |         </navigator> | 
					
						
							|  |  |  |  |       </view> | 
					
						
							|  |  |  |  |     </view> | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |     <navigator class="fixed-btn-box" url="/pages/address/create" open-type="navigate" hover-class="none"> | 
					
						
							|  |  |  |  |       <u-button type="primary" size="large" text="新增地址"></u-button> | 
					
						
							|  |  |  |  |     </navigator> | 
					
						
							|  |  |  |  |     <u-safe-bottom customStyle="background: #ffffff"></u-safe-bottom> | 
					
						
							|  |  |  |  |   </view> | 
					
						
							| 
									
										
										
										
											2022-04-19 17:58:39 +08:00
										 |  |  |  | </template> | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | <script> | 
					
						
							| 
									
										
										
										
											2022-05-01 22:39:54 +08:00
										 |  |  |  | import { getAddressList, deleteAddress } from '../../api/address' | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-04-19 17:58:39 +08:00
										 |  |  |  | export default { | 
					
						
							|  |  |  |  |   data() { | 
					
						
							|  |  |  |  |     return { | 
					
						
							| 
									
										
										
										
											2022-05-01 22:39:54 +08:00
										 |  |  |  |       addressList: [] | 
					
						
							| 
									
										
										
										
											2022-04-19 17:58:39 +08:00
										 |  |  |  |     } | 
					
						
							|  |  |  |  |   }, | 
					
						
							|  |  |  |  |   onLoad() {}, | 
					
						
							| 
									
										
										
										
											2022-05-01 22:39:54 +08:00
										 |  |  |  |   onShow() { | 
					
						
							|  |  |  |  |     this.loadAddressListData() | 
					
						
							|  |  |  |  |   }, | 
					
						
							|  |  |  |  |   methods: { | 
					
						
							|  |  |  |  |     loadAddressListData() { | 
					
						
							|  |  |  |  |       getAddressList().then(res => { | 
					
						
							|  |  |  |  |         this.addressList = res.data | 
					
						
							|  |  |  |  |       }) | 
					
						
							|  |  |  |  |     }, | 
					
						
							|  |  |  |  |     handleLongPress(item) { | 
					
						
							|  |  |  |  |       uni.showModal({ | 
					
						
							|  |  |  |  |         title: '提示', | 
					
						
							|  |  |  |  |         content: `删除收件人[${item.name}${item.mobile}]\n地址:${item.detailAddress.slice(0, 5)}......${item.detailAddress.slice(-6)}?`, | 
					
						
							|  |  |  |  |         success: res => { | 
					
						
							|  |  |  |  |           if (res.confirm) { | 
					
						
							|  |  |  |  |             deleteAddress({ id: item.id }).then(res => { | 
					
						
							|  |  |  |  |               uni.$u.toast('地址已删除') | 
					
						
							|  |  |  |  |               this.loadAddressListData(); | 
					
						
							|  |  |  |  |             }) | 
					
						
							|  |  |  |  |           } else if (res.cancel) { | 
					
						
							|  |  |  |  |             //console.log('用户点击取消')
 | 
					
						
							|  |  |  |  |           } | 
					
						
							|  |  |  |  |         } | 
					
						
							|  |  |  |  |       }) | 
					
						
							|  |  |  |  |     }, | 
					
						
							|  |  |  |  |     handleClick(){ | 
					
						
							|  |  |  |  |       // TODO 提交订单时选择地址逻辑
 | 
					
						
							|  |  |  |  |     } | 
					
						
							|  |  |  |  |   } | 
					
						
							| 
									
										
										
										
											2022-04-19 17:58:39 +08:00
										 |  |  |  | } | 
					
						
							|  |  |  |  | </script> | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-05-01 22:39:54 +08:00
										 |  |  |  | <style lang="scss" scoped> | 
					
						
							|  |  |  |  | .address-list { | 
					
						
							|  |  |  |  |   .address-item { | 
					
						
							|  |  |  |  |     padding: 10rpx 0; | 
					
						
							|  |  |  |  |     border-bottom: $custom-border-style; | 
					
						
							|  |  |  |  |     @include flex-space-between; | 
					
						
							|  |  |  |  |     .left { | 
					
						
							|  |  |  |  |       margin: 20rpx; | 
					
						
							|  |  |  |  |     } | 
					
						
							|  |  |  |  |     .middle { | 
					
						
							|  |  |  |  |       flex: 1; | 
					
						
							|  |  |  |  |       margin: 20rpx; | 
					
						
							|  |  |  |  |       @include flex(column); | 
					
						
							|  |  |  |  |       .info { | 
					
						
							|  |  |  |  |         @include flex-left; | 
					
						
							|  |  |  |  |         .name { | 
					
						
							|  |  |  |  |           font-size: 30rpx; | 
					
						
							|  |  |  |  |           font-weight: 700; | 
					
						
							|  |  |  |  |         } | 
					
						
							|  |  |  |  |         .mobile { | 
					
						
							|  |  |  |  |           font-size: 28rpx; | 
					
						
							|  |  |  |  |           margin-left: 15rpx; | 
					
						
							|  |  |  |  |         } | 
					
						
							|  |  |  |  |         .type { | 
					
						
							|  |  |  |  |           margin-left: 15rpx; | 
					
						
							|  |  |  |  |         } | 
					
						
							|  |  |  |  |       } | 
					
						
							|  |  |  |  |       .detail { | 
					
						
							|  |  |  |  |         margin-top: 10rpx; | 
					
						
							|  |  |  |  |       } | 
					
						
							|  |  |  |  |     } | 
					
						
							|  |  |  |  |     .right { | 
					
						
							|  |  |  |  |       margin: 20rpx; | 
					
						
							|  |  |  |  |     } | 
					
						
							|  |  |  |  |   } | 
					
						
							|  |  |  |  | } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | .fixed-btn-box { | 
					
						
							|  |  |  |  |   position: fixed; | 
					
						
							|  |  |  |  |   bottom: 0; | 
					
						
							|  |  |  |  |   left: 0; | 
					
						
							|  |  |  |  |   width: 750rpx; | 
					
						
							|  |  |  |  | } | 
					
						
							|  |  |  |  | </style> |