| 
						 | 
						- <template>
 - 	<uv-popup round="40rpx" ref="addressPopup" :customStyle="{ height: 'auto' , width : '100%' , padding : '20rpx'}">
 - 		<view class="redact-address">
 - 			<view class="redact-address-title">{{title}}</view>
 - 
 - 			<uv-form label-width="210rpx" :model="addressDetail" ref="form">
 - 				<uv-form-item label="联系人" prop="name">
 - 					<uv-input v-model="addressDetail.name" placeholder="请输入联系人姓名" border="none">
 - 					</uv-input>
 - 				</uv-form-item>
 - 
 - 				<uv-form-item label="手机号" prop="phone">
 - 					<uv-input v-model="addressDetail.phone" placeholder="请输入手机号" border="none">
 - 					</uv-input>
 - 				</uv-form-item>
 - 
 - 				<uv-form-item label="所在地区" prop="address">
 - 					<uv-input v-model="addressDetail.address" placeholder="请选择所在地区" border="none">
 - 					</uv-input>
 - 					<template #right>
 - 						<view style="padding-right: 40rpx;color: #FBAB32;" @click.stop="selectAddr">
 - 							<image src="../../static/address/selectIcon.png" mode="aspectFit"></image>定位
 - 						</view>
 - 					</template>
 - 				</uv-form-item>
 - 
 - 				<uv-form-item label="详细地址" prop="addressDetail">
 - 					<uv-input v-model="addressDetail.addressDetails" placeholder="请输入详细地址" border="none">
 - 					</uv-input>
 - 				</uv-form-item>
 - 			</uv-form>
 - 
 - 			<view @click="onSubmit" class="save">{{ addressDetail.id ? '修改地址' : '新增地址'}}</view>
 - 
 - 		</view>
 - 	</uv-popup>
 - </template>
 - 
 - <script>
 - 	import Position from '@/utils/position.js'
 - 	export default {
 - 		data() {
 - 			return {
 - 				addressDetail: {}
 - 			}
 - 		},
 - 		props: {
 - 			title: {
 - 				type: String,
 - 				default: '新增地址'
 - 			}
 - 		},
 - 		methods: {
 - 			open(addressDetail) {
 - 				this.addressDetail = addressDetail
 - 				this.$refs.addressPopup.open('bottom')
 - 			},
 - 			close(){
 - 				this.$refs.addressPopup.close()
 - 			},
 - 			//新增和修改地址
 - 			onSubmit() {
 - 				let isOk = this.parameterVerification(this.addressDetail)
 - 				if (isOk && !isOk.auth) {
 - 					return uni.showToast({
 - 						icon: 'none',
 - 						title: isOk.title,
 - 						'zIndex': 10000
 - 					})
 - 				}
 - 				this.$emit('saveOrUpdate', this.addressDetail)
 - 			},
 - 			//验证用户参数合法性
 - 			parameterVerification(addressForm) {
 - 				let {
 - 					name,
 - 					phone,
 - 					address,
 - 					addressDetails
 - 				} = addressForm
 - 				if (name.trim() == '') {
 - 					return {
 - 						title: '请填写联系人',
 - 						auth: false
 - 					}
 - 				} else if (phone.trim() == '') {
 - 					return {
 - 						title: '请填写手机号',
 - 						auth: false
 - 					}
 - 				} else if (address.trim() == '') {
 - 					return {
 - 						title: '请填写所在地区',
 - 						auth: false
 - 					}
 - 				} else if (addressDetails.trim() == '') {
 - 					return {
 - 						title: '请填写详细地址',
 - 						auth: false
 - 					}
 - 				} else if (phone.trim() != '') {
 - 					if (!this.$utils.verificationPhone(phone)) {
 - 						return {
 - 							title: '手机号格式不合法',
 - 							auth: false
 - 						}
 - 					}
 - 				}
 - 				return {
 - 					title: '验证通过',
 - 					auth: true
 - 				}
 - 			},
 - 
 - 			//地图上选择地址
 - 			selectAddr() {
 - 				// Position.getLocation(res => {
 - 					Position.selectAddress(0, 0, success => {
 - 						this.setAddress(success)
 - 					})
 - 				// })
 - 			},
 - 
 - 			//提取用户选择的地址信息复制给表单数据
 - 			setAddress(res) {
 - 				//经纬度信息
 - 				this.addressDetail.latitude = res.latitude
 - 				this.addressDetail.longitude = res.longitude
 - 
 - 				if (!res.address && res.name) { //用户直接选择城市的逻辑
 - 					return this.addressDetail.address = res.name
 - 				}
 - 				if (res.address || res.name) {
 - 					return this.addressDetail.address = res.address + res.name
 - 				}
 - 				this.addressDetail.address = '' //用户啥都没选就点击勾选
 - 			},
 - 		}
 - 	}
 - </script>
 - 
 - <style lang="scss" scoped>
 - 	.redact-address {
 - 		box-sizing: border-box;
 - 
 - 		.redact-address-title {
 - 			height: 80rpx;
 - 			line-height: 80rpx;
 - 			font-size: 30rpx;
 - 			color: #333333;
 - 			font-weight: 600;
 - 		}
 - 
 - 		.save {
 - 			display: flex;
 - 			align-items: center;
 - 			justify-content: center;
 - 			width: 90%;
 - 			height: 80rpx;
 - 			border-radius: 40rpx;
 - 			color: white;
 - 			font-size: 28rpx;
 - 			margin: 0rpx auto;
 - 			background: $uni-color;
 - 			margin-top: 150rpx;
 - 		}
 - 
 - 		image {
 - 			width: 25rpx;
 - 			height: 25rpx;
 - 		}
 - 
 - 
 - 		//修改组件默认样式
 - 		.uv-form {
 - 			padding: 30rpx 0rpx;
 - 		}
 - 		
 - 		.uv-input__content__field-wrapper__field{
 - 			padding: 30rpx !important;
 - 			height: 180rpx !important;
 - 		}
 - 
 - 		&::v-deep .uv-cell {
 - 			padding: 0rpx 0rpx;
 - 			font-size: 26rpx;
 - 
 - 			&::after {
 - 				border: none !important;
 - 			}
 - 
 - 			.uv-field__label {
 - 				display: flex;
 - 				align-items: center;
 - 				height: 80rpx;
 - 			}
 - 
 - 			.uv-field__control,
 - 			.uv-field__right-icon {
 - 				height: 80rpx;
 - 				font-size: 26rpx;
 - 				border-bottom: 2rpx solid #cbc8c8;
 - 			}
 - 
 - 			.uv-field__right-icon {
 - 				display: flex;
 - 				align-items: center;
 - 				height: 78rpx;
 - 				color: #5FCC9F;
 - 			}
 - 
 - 			.uv-cell__value {
 - 				height: 120rpx;
 - 			}
 - 
 - 		}
 - 
 - 		&::v-deep .uv-field__error-message {
 - 			color: #5AC796;
 - 			font-size: 20rpx;
 - 			margin-top: 10rpx;
 - 		}
 - 	}
 - </style>
 
 
  |