248 lines
9.6 KiB
Vue
248 lines
9.6 KiB
Vue
<template>
|
||
<view class="">
|
||
<!-- 使用标题栏 -->
|
||
<status-nav :statusBackw="true" :statusTitle="true" :whereCome="0" :title-val="'地址管理'" :tabcolor="'#ffffff'"></status-nav>
|
||
<!-- 地址信息 -->
|
||
<view class="bacb padding-zy20 posir padding-sx30" :style="{paddingTop:statusHNH+'px'}">
|
||
<view class="disba fon24 color33 borbot padding-sx20">
|
||
<view style="width: 16%;" class="flexs margin-y10">收货人</view>
|
||
<input class="width100 fon24" style="" type="text" v-model="name" placeholder="请填写收货人姓名" placeholder-style="font-size:24rpx;"/>
|
||
</view>
|
||
<view class="disac fon24 color33 borbot padding-sx20">
|
||
<view class="flexs" style="width: 16%;">手机号码</view>
|
||
<view class="disac width100">
|
||
<view class="flexs">+86</view>
|
||
<input class="width100 margin-z10 fon24" type="number" maxlength="11" v-model="phone" placeholder="请填写收货人的手机号码" placeholder-style="font-size:24rpx;"/>
|
||
</view>
|
||
</view>
|
||
<view class="disba fon24 color33 borbot padding-sx20">
|
||
<view style="width: 16%;" class="flexs margin-y10">所在地区</view>
|
||
<input @tap="openPicker" disabled class="width100 fon24" style="" type="text" v-model="region" placeholder="省市区县、乡镇等" placeholder-style="font-size:24rpx;"/>
|
||
</view>
|
||
<view class="dis fon24 color33 borbot padding-sx20">
|
||
<view style="width: 16%;" class="flexs margin-y10">详细地址</view>
|
||
<textarea class="width100 fon24" v-model="address" style="height: 200rpx;" placeholder="街道、楼牌号等" placeholder-style="font-size:24rpx;"/>
|
||
</view>
|
||
<view class="borbot"></view>
|
||
</view>
|
||
<view class="bacb margin-s20 padding-zy20 padding-sx30">
|
||
<view class="disba">
|
||
<view class="fon28">设置为默认地址</view>
|
||
<liSwitch :checked="switch_state" @change="switchChange1"></liSwitch>
|
||
</view>
|
||
<view class="fon24 color9">提醒:每次下单会默认推荐使用该地址</view>
|
||
</view>
|
||
<view class="disbc" style="position: fixed;bottom: 40px;left: 60px;right: 60px;">
|
||
<view @tap="saveAddress" class="colorb fon30 addbtn">保存</view>
|
||
</view>
|
||
<city @choseVal="choseValue" :lotusAddressData="lotusAddressData"></city>
|
||
</view>
|
||
</template>
|
||
|
||
<script>
|
||
import liSwitch from '@/components/li-switch.vue';
|
||
import city from '@/components/city/city.js';
|
||
import amap from '../../jsFile/amap-wx.js'
|
||
export default {
|
||
components:{
|
||
liSwitch,
|
||
city
|
||
},
|
||
data() {
|
||
return {
|
||
name:'',
|
||
phone:'',
|
||
address:'',
|
||
switch_state: true,
|
||
updateId:'',
|
||
lotusAddressData:{
|
||
visible:false,
|
||
provinceName:'',
|
||
cityName:'',
|
||
townName:'',
|
||
},
|
||
region:'',
|
||
regionObj:{
|
||
province:'',
|
||
provinceCode:'',
|
||
city:'',
|
||
cityCode:'',
|
||
town:'',
|
||
townCode:''
|
||
},
|
||
amapPlugin: null, //new地图
|
||
key: '20e98934067a5cf96d8da862fe561787',
|
||
lat:'',//纬度
|
||
lng:'',//经度
|
||
statusHNH:uni.getStorageSync('statusHNH'),
|
||
newProvice:'',
|
||
newCity:'',
|
||
newDistrict:''
|
||
}
|
||
},
|
||
onLoad() {
|
||
let obj = uni.getStorageSync('updataAddress');
|
||
if(obj!=''){
|
||
this.updateId = obj.id
|
||
this.name = obj.name
|
||
this.phone = obj.phone
|
||
this.address = obj.address
|
||
this.regionObj.provinceCode = obj.province
|
||
this.regionObj.cityCode = obj.city
|
||
this.regionObj.townCode = obj.county
|
||
this.regionObj.province = obj.province_str
|
||
this.regionObj.city = obj.city_str
|
||
this.regionObj.town = obj.county_str
|
||
if(obj.is_default==0){
|
||
this.switch_state = false
|
||
}
|
||
this.region = `${obj.province_str} ${obj.city_str} ${obj.county_str} `
|
||
}
|
||
// uni.getLocation({
|
||
// type: 'wgs84',
|
||
// geocode:true,
|
||
// success: function (res) {
|
||
// console.log('位置信息:'+JSON.stringify(res));
|
||
// }
|
||
// });
|
||
},
|
||
onUnload() {
|
||
uni.removeStorageSync('updataAddress');
|
||
},
|
||
onShow() {
|
||
this.$toolAll.tools.guoq()
|
||
let ya = this
|
||
wx.getLocation({
|
||
success:function(res) {
|
||
ya.getDistrict(res.latitude, res.longitude)
|
||
},
|
||
})
|
||
},
|
||
methods: {
|
||
getDistrict(latitude, longitude) {
|
||
let ya = this
|
||
wx.request({
|
||
url: `https://apis.map.qq.com/ws/geocoder/v1/?location=${latitude},${longitude}&key=B2ABZ-SIDKS-WD2O3-6CJ2U-CDZOT-U3FKF`,
|
||
header: {
|
||
'Content-Type':'application/json'
|
||
},
|
||
success:function(res) {
|
||
// console.log('地址数据:',res)
|
||
ya.newProvice = res.data.result.address_component.province
|
||
ya.newCity = res.data.result.address_component.city
|
||
ya.newDistrict = res.data.result.address_component.district
|
||
}
|
||
})
|
||
},
|
||
//打开picker
|
||
openPicker() {
|
||
this.lotusAddressData.visible = true;
|
||
this.lotusAddressData.provinceName = this.newProvice;
|
||
this.lotusAddressData.cityName = this.newCity;
|
||
this.lotusAddressData.townName = this.newDistrict;
|
||
},
|
||
//回传已选的省市区的值
|
||
choseValue(res){
|
||
//res数据源包括已选省市区与省市区code
|
||
// console.log(res);
|
||
this.lotusAddressData.visible = res.visible;//visible为显示与关闭组件标识true显示false隐藏
|
||
//res.isChose = 1省市区已选 res.isChose = 0;未选
|
||
if(res.isChose){
|
||
this.lotusAddressData.provinceName = res.province;//省
|
||
this.lotusAddressData.cityName = res.city;//市
|
||
this.lotusAddressData.townName = res.town;//区
|
||
this.region = `${res.province} ${res.city} ${res.town}`; //region为已选的省市区的值
|
||
this.regionObj = {
|
||
province:res.province,
|
||
provinceCode:res.provinceCode,
|
||
city:res.city,
|
||
cityCode:res.cityCode,
|
||
town:res.town,
|
||
townCode:res.townCode
|
||
}
|
||
}
|
||
},
|
||
saveAddress(){
|
||
if(!this.name){
|
||
this.$toolAll.tools.showToast('请输入收货人');
|
||
} else if(!this.phone){
|
||
this.$toolAll.tools.showToast('请输入手机号');
|
||
} else if(this.$toolAll.tools.isPhone(this.phone)){
|
||
this.$toolAll.tools.showToast('请输入正确的手机号');
|
||
} else if(!this.region){
|
||
this.$toolAll.tools.showToast('请输入所在地区');
|
||
} else if(!this.address){
|
||
this.$toolAll.tools.showToast('请输入详细地址');
|
||
} else if(!this.switch_state){
|
||
uni.showModal({
|
||
title:'提示:',
|
||
content:'是否设为默认地址',
|
||
cancelText:'取消默认',
|
||
cancelColor:'#999999',
|
||
confirmText:'设为默认',
|
||
confirmColor:'#164396',
|
||
success: (res) => {
|
||
if(res.confirm){
|
||
this.switch_state = true
|
||
} else {
|
||
this.saveEv()
|
||
}
|
||
}
|
||
})
|
||
} else {
|
||
uni.showModal({
|
||
title:'提示:',
|
||
content:'确定要保存当前地址信息吗?',
|
||
cancelText:'取消',
|
||
cancelColor:'#999999',
|
||
confirmText:'确定',
|
||
confirmColor:'#164396',
|
||
success: (res) => {
|
||
if(res.confirm){
|
||
this.saveEv()
|
||
}
|
||
}
|
||
})
|
||
}
|
||
},
|
||
saveEv(){//保存地址执行事件
|
||
let ya = this
|
||
let num = 1
|
||
if(!ya.switch_state){num = 0}
|
||
let paramsadd = {
|
||
id: ya.updateId,
|
||
name:ya.name,//姓名
|
||
phone:ya.phone,//电话
|
||
province:ya.regionObj.provinceCode,//省级行政编码 如110000
|
||
city:ya.regionObj.cityCode,//市级行政编码 如110100
|
||
county:ya.regionObj.townCode,//县乡级行政编码 如110101
|
||
province_str:ya.regionObj.province,//省级名称 如北京
|
||
city_str:ya.regionObj.city,//市级名称 如北京市
|
||
county_str:ya.regionObj.town,//县乡区域名称 如东城区
|
||
address:ya.address,//具体地址 如XX路xx街
|
||
is_default:num,//是否默认地址 0=否 1=是
|
||
postcode:'',//邮编 如610200
|
||
tag:''//地址标签 如 家 公司
|
||
}
|
||
this.$requst.post('user/address-save',paramsadd).then(res=>{
|
||
if(res.msg=='success'){
|
||
this.$toolAll.tools.showToast('地址保存成功');
|
||
setTimeout(function(){
|
||
uni.navigateBack({delta:1})
|
||
},2000)
|
||
}
|
||
},error=>{})
|
||
|
||
},
|
||
switchChange1: function(e){
|
||
// console.log(e);
|
||
this.switch_state = !e.checked;
|
||
}
|
||
}
|
||
}
|
||
</script>
|
||
|
||
<style scoped>
|
||
|
||
</style>
|