|                                                                                                                                                        |  | <template>	<scroll-view scroll-y="true" :style="{height: height}" @scrolltolower="moreAddress">		<uv-radio-group v-model="selectAddress" @change="editDefault" v-if="addressList.length > 0">			<view v-for="item in addressList" :key="item.id" class="address-item">
				<view class="address-item-top" @tap="select(item)">					<view class="img-box">						<image src="../../static/address/icon.png" mode="aspectFill"></image>					</view>
					<view class="address-info">						<view class="user-info">							<text class="user-name">{{ item.name }}</text>							<text class="user-phone">{{ item.phone }}</text>							<text v-if="item.defaultFlag == 1" class="is-default">默认</text>						</view>
						<view class="address-detail">							{{ item.address + " " + item.addressDetails }}						</view>					</view>				</view>
				<view class="controls" v-if="controls">
					<view class="default-checkbox">						<uv-radio :name="item.id" label-disabled size="30rpx" icon-size="30rpx" activeColor="#E3441A">							默认地址						</uv-radio>					</view>
					<view class="edit-btn">						<uv-icon name="edit-pen"></uv-icon>						<text @tap="editAddress(item)" class="control-title">编辑</text>					</view>
					<view class="del-btn">						<uv-icon name="trash"></uv-icon>						<text class="control-title" @tap="deleteAddress(item.id)">删除</text>					</view>
				</view>			</view>		</uv-radio-group>		<view style="padding: 100rpx 0;" v-else>			<uv-empty mode="history" textSize="28rpx" iconSize="100rpx" />		</view>	</scroll-view></template>
<script>	export default {		props: {			controls: {				default: false,				type: Boolean,			},			height: {				default: 'calc(90vh - 180rpx)'			}		},		data() {			return {				selectAddress: 0,				queryParams: {					pageNo: 1,					pageSize: 10,				},				addressList: [],				total: 0,			}		},		methods: {			//获取地址列表
			getAddressList() {				return new Promise((success, fail) => {					this.$api('getAddressPageList', this.queryParams, res => {						if (res.code == 200) {							this.addressList = res.result.records || [];							this.total = res.result.total || 0;							res.result.records.forEach(n => { //筛选默认地址
								if (n.defaultFlag == 1) {									this.selectAddress = n.id								}							})							success(res.result)						}					})				})			},			// 加载更多
			moreAddress() {				if (this.queryParams.pageSize > this.total) {					return				}				this.queryParams.pageSize += 10				this.getAddressList()			},			// 删除地址
			deleteAddress(e) {				this.$emit('deleteAddress', e)			},			// 修改地址
			editAddress(e) {				this.$emit('editAddress', e)			},			// 切换默认地址
			editDefault(e) {				this.$emit('editDefault', e)			},			// 选择了地址
			select(e) {				this.$emit('select', e)			},		}	}</script>
<style scoped lang="scss">	.address-item {		background: white;		border-radius: 20rpx;		overflow: hidden;		margin-bottom: 20rpx;		padding: 15rpx 15rpx 0rpx 15rpx;		width: 100%;		box-sizing: border-box;
		.address-item-top {			border-bottom: 1px dashed #D3D1D1;			display: flex;			align-items: center;			padding: 0rpx 0rpx 15rpx 0rpx;
			.img-box {				width: 100rpx;				height: 100rpx;
				image {					width: 100%;					height: 100%;					display: block;				}			}
			.address-info {				width: calc(100% - 100rpx);				height: 100%;				display: flex;				flex-direction: column;				justify-content: space-between;				box-sizing: border-box;				padding-left: 10rpx;
				.user-info {					display: flex;					align-items: center;
					text {						display: block;						line-height: 40rpx;						margin-right: 20rpx;					}
					.user-name,					.user-phone {						font-size: 30rpx;					}
					.is-default {						display: flex;						align-items: center;						justify-content: center;						background: #FEB773;						color: white;						width: 80rpx;						height: 35rpx;						border-radius: 20rpx;						font-size: 22rpx;					}				}
				.address-detail {					color: #4a4a4a;					font-size: 26rpx;					overflow: hidden;					display: -webkit-box;					-webkit-box-orient: vertical;					-webkit-line-clamp: 2;					text-overflow: ellipsis;				}			}		}
		.controls {			display: flex;			align-items: center;			justify-content: space-between;			align-items: center;			font-size: 26rpx;			padding: 15rpx 15rpx 25rpx 15rpx;
			.default-checkbox {				display: flex;
				text {					margin-left: 8rpx;				}			}
			.control-title {				height: 30rpx;				line-height: 30rpx;				color: #666666;			}
			view {				display: flex;				align-items: center;			}
			image {				width: 23rpx;				height: 23rpx;				vertical-align: middle;				margin-right: 8rpx;			}		}	}</style>
 |