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.
316 lines
7.0 KiB
316 lines
7.0 KiB
<template>
|
|
<view>
|
|
<view class="editaddress" :class="['theme', themeObj.name]">
|
|
<view class="content">
|
|
<view class="row">
|
|
<view class="nominal">收件人</view>
|
|
<view class="input"><input placeholder="请输入收件人姓名" v-model="addressData.recipient" type="text"></input></view>
|
|
</view>
|
|
<view class="row">
|
|
<view class="nominal">电话号码</view>
|
|
<view class="input"><input placeholder="请输入收件人电话号码" v-model="addressData.telephone" type="number" maxlength="11"></input></view>
|
|
</view>
|
|
<view class="row">
|
|
<view class="nominal">所在地区</view>
|
|
<view class="input selectcity" @tap="openPicker">
|
|
<input placeholder="请选择省市区" disabled type="text" v-model="addressData.address"></input>
|
|
<image src="/static/images/home/right.png" class="rights"></image>
|
|
</view>
|
|
</view>
|
|
<view class="row">
|
|
<view class="nominal">详细地址</view>
|
|
<view class="input"><textarea style="font-size: 28upx;" v-model="addressData.moreAddres" auto-height="true" placeholder="输入详细地址" v-if="show == false"></textarea></view>
|
|
</view>
|
|
<view class="row">
|
|
<view class="nominal" style="color: #999;margin-top: 10upx;">设为默认地址</view>
|
|
<view class="input switch">
|
|
<switch
|
|
:color="themeObj.color"
|
|
style="transform:scale(0.8)" @change="switchChange" :checked="addressData.isDefault == 1"></switch></view>
|
|
</view>
|
|
</view>
|
|
<view class="save" @tap="addAddr"><view class="btn" >保存地址</view></view>
|
|
<!-- 省市区选择 -->
|
|
<setcity :show="show" @sureSelectArea="onsetCity" @hideShow="onhideShow"></setcity>
|
|
</view>
|
|
<loading v-if="isShow == true"></loading>
|
|
</view>
|
|
</template>
|
|
|
|
<script>
|
|
|
|
import setcity from "../../../commponent/public/setCity/nyz_area_picker";
|
|
import loading from "../../../commponent/public/loading";
|
|
import { addAddr, editAddr} from '@/api/index.js'
|
|
import { getUserInfo } from "@/utils/auth";
|
|
const app = getApp();
|
|
export default {
|
|
data() {
|
|
return {
|
|
colors: '',
|
|
show: false,
|
|
addressData: {
|
|
"province": '',
|
|
"city":'',
|
|
"county": '',
|
|
|
|
"detail": '',
|
|
"isDefault": 0 ,
|
|
|
|
"recipient": '',
|
|
// "remark": "",
|
|
"telephone": '',
|
|
|
|
name:'',
|
|
phone:'',
|
|
address:'',
|
|
moreAddres:'',
|
|
isdefult: 0,
|
|
id:0
|
|
},
|
|
address: [],
|
|
isShow: true,
|
|
themeObj: app.globalData.themeObj
|
|
};
|
|
},
|
|
|
|
components: {
|
|
setcity,
|
|
loading
|
|
},
|
|
props: {},
|
|
|
|
/**
|
|
* 生命周期函数--监听页面加载
|
|
*/
|
|
onLoad: function (options) {
|
|
if(options.type == 'edit'){ //如果是编辑收货地址
|
|
this.addressData = Object.assign(this.addressData, JSON.parse(options.address))
|
|
this.addressData.moreAddres = this.addressData.detail.split(',')[1]
|
|
this.addressData.address = this.addressData.detail.split(',')[0]
|
|
this.address = [this.addressData.province, this.addressData.city, this.addressData.county]
|
|
this.checked = this.addressData.isDefault == 1
|
|
}
|
|
setTimeout(() => {
|
|
this.setData({
|
|
isShow: false,
|
|
colors: app.globalData.newColor
|
|
});
|
|
}, 500);
|
|
},
|
|
|
|
/**
|
|
* 生命周期函数--监听页面初次渲染完成
|
|
*/
|
|
onReady: function () {},
|
|
|
|
/**
|
|
* 生命周期函数--监听页面显示
|
|
*/
|
|
onShow: function () {},
|
|
|
|
/**
|
|
* 生命周期函数--监听页面隐藏
|
|
*/
|
|
onHide: function () {},
|
|
|
|
/**
|
|
* 生命周期函数--监听页面卸载
|
|
*/
|
|
onUnload: function () {},
|
|
|
|
/**
|
|
* 页面相关事件处理函数--监听用户下拉动作
|
|
*/
|
|
onPullDownRefresh: function () {},
|
|
|
|
/**
|
|
* 页面上拉触底事件的处理函数
|
|
*/
|
|
onReachBottom: function () {},
|
|
|
|
/**
|
|
* 用户点击右上角分享
|
|
*/
|
|
onShareAppMessage: function () {},
|
|
methods: {
|
|
addAddr() {
|
|
if ( this.address.length < 1 || !this.addressData.moreAddres || !this.addressData.recipient ||
|
|
!this.addressData.telephone) {
|
|
this.$toast('请填写信息')
|
|
return
|
|
}
|
|
const telReg = /^(13[0-9]|14[01456879]|15[0-35-9]|16[2567]|17[0-8]|18[0-9]|19[0-35-9])\d{8}$/
|
|
if (!telReg.test(this.addressData.telephone)) {
|
|
this.$toast('请填写正确手机号')
|
|
return
|
|
}
|
|
const params = {
|
|
"province": this.address[0],
|
|
"city": this.address[1],
|
|
"county": this.address[2],
|
|
"detail": this.address.join('') + ',' +this.addressData.moreAddres,
|
|
"isDefault": this.checked ? 1 : 0 ,
|
|
|
|
"recipient": this.addressData.recipient,
|
|
// "remark": "",
|
|
"telephone": this.addressData.telephone,
|
|
|
|
"userId": getUserInfo().id
|
|
}
|
|
if (this.addressData.id) {
|
|
params.id = this.addressData.id
|
|
editAddr(params).then(res => {
|
|
if (res.result) {
|
|
|
|
this.$toast('操作成功')
|
|
}
|
|
uni.navigateBack()
|
|
})
|
|
return
|
|
}
|
|
|
|
addAddr(params).then(res => {
|
|
if (res.result) {
|
|
this.$toast('操作成功')
|
|
}
|
|
uni.navigateBack()
|
|
})
|
|
},
|
|
openPicker() {
|
|
console.log('执行')
|
|
this.show = true
|
|
},
|
|
|
|
onhideShow() {
|
|
this.show = false
|
|
console.log('执行了')
|
|
},
|
|
onsetCity(e) { //选中省市区
|
|
let data = e.detail.target.dataset;
|
|
this.address = [data.province ,data.city, data.area]
|
|
this.show = false
|
|
this.addressData.address = this.address.join('')
|
|
},
|
|
switchChange(e) {
|
|
this.setData({
|
|
checked: e.detail.value
|
|
});
|
|
}
|
|
|
|
}
|
|
};
|
|
</script>
|
|
<style lang="scss" scoped>
|
|
.save {
|
|
position: fixed;
|
|
bottom: 0;
|
|
width: 100%;
|
|
height: 120upx;
|
|
display: flex;
|
|
justify-content: center;
|
|
align-items: center;
|
|
}
|
|
|
|
.save view {
|
|
display: flex;
|
|
}
|
|
|
|
.save .btn {
|
|
box-shadow: 0upx 5upx 10upx rgba(0, 0, 0, 0.4);
|
|
width: 70%;
|
|
height: 80upx;
|
|
border-radius: 80upx;
|
|
background-color: #f23a3a;
|
|
color: #fff;
|
|
justify-content: center;
|
|
align-items: center;
|
|
font-size: 30upx;
|
|
}
|
|
|
|
.save .btn .icon {
|
|
height: 80upx;
|
|
color: #fff;
|
|
font-size: 30upx;
|
|
justify-content: center;
|
|
align-items: center;
|
|
}
|
|
|
|
.content {
|
|
display: flex;
|
|
flex-wrap: wrap;
|
|
margin-top: 40upx;
|
|
}
|
|
|
|
.content view {
|
|
display: flex;
|
|
}
|
|
|
|
.content .row {
|
|
width: 92%;
|
|
margin: 0 4%;
|
|
border-bottom: solid 1upx #eee;
|
|
}
|
|
|
|
.content .row .nominal {
|
|
width: 30%;
|
|
height: 80upx;
|
|
font-size: 28upx;
|
|
font-family: Droid Sans Fallback;
|
|
font-weight: 400;
|
|
color: rgba(51, 51, 51, 1);
|
|
align-items: center;
|
|
}
|
|
|
|
.content .row .input {
|
|
width: 70%;
|
|
padding: 20upx 0;
|
|
align-items: center;
|
|
font-size: 28upx;
|
|
|
|
}
|
|
|
|
.content .row .input input {
|
|
font-size: 28upx;
|
|
color: #333333;
|
|
}
|
|
|
|
.content .row .switch {
|
|
justify-content: flex-end;
|
|
}
|
|
|
|
.content .row .input textarea {
|
|
min-height: 40upx;
|
|
line-height: 40upx;
|
|
}
|
|
|
|
.content .del_box {
|
|
width: 100%;
|
|
display: block;
|
|
overflow: hidden;
|
|
margin-right: 30upx;
|
|
}
|
|
|
|
.content .del {
|
|
width: 240upx;
|
|
height: 80upx;
|
|
float: right;
|
|
justify-content: center;
|
|
align-items: center;
|
|
font-size: 28upx;
|
|
color: #F23A3A;
|
|
margin: 0 auto;
|
|
margin-top: 50upx;
|
|
border-radius: 38upx;
|
|
background-color: rgba(255, 0, 0, 0.05);
|
|
border-bottom: solid 1upx #eee;
|
|
}
|
|
.selectcity input{
|
|
width: 90%;
|
|
}
|
|
.selectcity image{
|
|
width: 40upx;
|
|
height: 40upx;
|
|
float: right;
|
|
}
|
|
</style> |