web-base-h5/pages/mine/giftAddress/details.vue

295 lines
7.4 KiB
Vue
Raw Normal View History

2025-03-23 09:29:40 +08:00
<!--
* @Descripttion:
* @version:
* @Author: 王三华
* @Date: 2023-05-18 14:42:53
-->
<template>
<view class="main">
<view class="contents">
<u-form :model="addressForm"
labelWidth="auto"
ref="uForm">
<view class="view-class">
<u-form-item :label="'收货人'"
2025-03-23 09:29:40 +08:00
label-width="100px"
prop="accountName">
<u-input v-model.trim="addressForm.accountName"
placeholder-class="place-class"
class="border-color"
placeholder="请输入收货人姓名" />
</u-form-item>
</view>
<view class="view-class">
<u-form-item :label="'联系方式'"
2025-03-23 09:29:40 +08:00
label-width="100px"
prop="phone">
<u-input v-model.trim="addressForm.phone"
placeholder-class="place-class"
maxlength="20"
type="number"
class="border-color"
placeholder="请输入联系方式" />
</u-form-item>
</view>
<view class="view-class"
@click="getDiqu">
<u-form-item :label="'收货地址'"
2025-03-23 09:29:40 +08:00
label-width="100px"
prop="address">
<view v-if="address"
style="font-size: 28rpx;color: #333;margin-left: 20rpx;">{{address}}</view>
<view style="margin-left: 20rpx;font-size: 28rpx;color: rgb(192, 196, 204);"
v-else>请选择收货地址</view>
</u-form-item>
<view class="drop">
<image src="@/static/images/drop.png"></image>
</view>
</view>
<view class="view-class">
<u-form-item :label="'详细地址'"
2025-03-23 09:29:40 +08:00
class="label-style"
label-width="100px"
prop="address">
<u-textarea v-model.trim="addressForm.address"
placeholder-class="place-class"
class="border-color"
maxlength="200"
:placeholder="'请输入详细地址'" />
2025-03-23 09:29:40 +08:00
</u-form-item>
</view>
</u-form>
</view>
<v-address ref="address"
@getAddressData="AddressData"
:defaultCode="defaultCode"
@addressData="addressData"></v-address>
<u-button type="success"
shape="circle"
class="btn"
@click="submit">{{'确定'}}</u-button>
2025-03-23 09:29:40 +08:00
<view style="height: 20rpx;"></view>
</view>
</template>
<script>
import * as api from '@/config/login.js'
import { setToken } from '@/config/auth.js'
import address from '@/components/address.vue'
import store from '@/store'
export default {
data() {
return {
userInfo: '',
check: false,
address: '',
defaultCode: [],
urls: '/member/api/maker-space/update-file',
addressForm: {
accountName: '',
phone: '',
pkProvince: '',
pkCity: '',
pkCounty: '',
address: '',
pkId: '',
},
rules: {
accountName: [
{
// 必填项
required: true,
// 提示内容会出现在u-form-item内的底部
message: '姓名不能为空',
},
],
address: [
{
// 必填项
required: true,
// 提示内容会出现在u-form-item内的底部
message: '详细地址不能为空',
},
],
pkProvince: [
{
// 必填项
required: true,
// 提示内容会出现在u-form-item内的底部
message: '地址不能为空',
trigger: ['change'],
},
],
phone: [
{
required: true,
message: '请输入手机号',
trigger: ['blur'],
},
// {
// validator: (rule, value, callback) => {
// return this.$u.test.mobile(value);
// },
// message: "手机号格式不正确",
// trigger: ["blur"],
// },
],
},
}
},
onLoad(option) {
this.addressForm = JSON.parse(option.obj)
let that =this
setTimeout(()=>{
that.defaultCode = [
that.addressForm.pkProvince,
that.addressForm.pkCity,
that.addressForm.pkCounty || '',
]
},200)
this.userInfo = uni.getStorageSync('User')
},
onReady() {
this.$refs.uForm.setRules(this.rules)
},
components: {
'v-address': address,
},
methods: {
AddressData(name) {
this.address = name
},
submit() {
this.$refs.uForm.validate().then((res) => {
api.saveGiftAddress(this.addressForm).then((res) => {
if (res.code == '200') {
uni.showToast({
title: res.msg,
icon: 'none',
success() {
setTimeout(() => {
uni.navigateBack(1)
}, 2000)
},
})
}
})
})
},
getDiqu() {
this.$refs.address.setShow()
},
addressData(diqu, obj) {
this.address = diqu
this.addressForm.pkProvince = obj.province
this.addressForm.pkCity = obj.city
this.addressForm.pkCounty = obj.county
this.$forceUpdate()
// this.getPostAge()
// this.queryAdressPostage()
},
getAddressData(e) {
console.error(e)
},
// getAddress(id){
// api.getAddress(id).then(res => {
// if (res) {
// this.addressForm={
// accountName: res.data.accountName,
// phone: res.data.phone,
// pkProvince: res.data.pkProvince,
// pkCity: res.data.pkCity,
// pkCounty: res.data.pkCounty || '',
// pkId: res.data.pkId,
// address: res.data.address,
// }
// this.defaultCode = [
// res.data.pkProvince,
// res.data.pkCity,
// res.data.pkCounty || '',
// ]
// }
// }).catch(error => {
// reject(error)
// })
// },
},
}
</script>
<style lang="scss" scoped>
:v-deep .u-form-item__body__right__message {
2025-03-23 09:29:40 +08:00
margin-left: 215rpx !important;
padding-bottom: 20rpx;
}
.drop {
image {
width: 40rpx;
height: 40rpx;
position: absolute;
right: 0;
top: 20rpx;
}
}
.check {
position: relative;
view {
width: 36rpx;
height: 36rpx;
border: 1rpx solid #dddddd;
border-radius: 50%;
margin-top: 25rpx;
}
image {
width: 40rpx;
height: 40rpx;
position: absolute;
right: 0rpx;
top: 25rpx;
// margin-top: 20rpx;
}
}
.flex-s {
justify-content: space-between;
display: flex;
height: 90rpx;
line-height: 90rpx;
}
.label-style {
display: block !important;
}
:v-deep .label-style .u-form-item__body__left {
2025-03-23 09:29:40 +08:00
display: block !important;
margin-top: 20rpx;
}
.uni-textarea {
height: 100rpx;
}
.view-class {
border-bottom: 1rpx solid #eee;
margin: 0 30rpx;
position: relative;
}
.border-color {
border: none;
}
page {
background-color: #f2f2f2;
}
.contents {
background-color: #fff;
}
.btn {
background-color: #fb3024;
border: none;
height: 92rpx;
line-height: 92rpx;
font-size: 30rpx;
margin: 40rpx auto;
width: 690rpx;
}
</style>