235 lines
9.0 KiB
Vue
235 lines
9.0 KiB
Vue
<template>
|
||
<view>
|
||
<view class="address-edit">
|
||
|
||
<!-- 联系方式 -->
|
||
<template v-if="type == 2 || type == 3">
|
||
<view class="form-item bb flex">
|
||
<view class="label">收货人</view>
|
||
<input class="m-l-10" v-model="refund_address.nickname" name="nickname" type="text"
|
||
placeholder="请填写收货人姓名" />
|
||
</view>
|
||
<view class="form-item bb flex">
|
||
<view class="label">联系方式</view>
|
||
<input class="m-l-10" name="mobile" v-model="refund_address.mobile" type="number"
|
||
placeholder="请填写手机号码"></input>
|
||
</view>
|
||
</template>
|
||
|
||
<!-- 地区选择 -->
|
||
<view @click="showRegion = true">
|
||
<view class="form-item bb flex">
|
||
<view class="label">省/市/区</view>
|
||
<view class="flex flex-1 row-between m-l-10" style="width: 100%;">
|
||
<input name="region" class="m-r-10" v-model="region" disabled type="text"
|
||
value="请选择"></input>
|
||
<u-icon color="#707070" name="arrow-down"></u-icon>
|
||
</view>
|
||
</view>
|
||
</view>
|
||
|
||
<!-- 详细地址填写 -->
|
||
<view class="form-item flex col-top bb">
|
||
<view class="label">详细地址</view>
|
||
<input name="address" v-model="refund_address.address" placeholder="请填写小区、街道、门牌号等信息" />
|
||
</view>
|
||
</view>
|
||
|
||
<button class="my-btn md white flex br60 row-center" @click="onSubmit">完成</button>
|
||
|
||
<!-- 地址选择 -->
|
||
<u-select v-model="showRegion" confirm-color="#101010" cancel-color="#999" mode="mutil-column-auto"
|
||
@confirm="regionChange" :list="lists"></u-select>
|
||
|
||
<u-toast ref="uToast" />
|
||
</view>
|
||
</template>
|
||
|
||
<script>
|
||
import {
|
||
apiSetShopInfo
|
||
} from '@/api/store'
|
||
import {
|
||
apiOrderGetAddress,
|
||
apiOrderEditAddress
|
||
} from '@/api/order'
|
||
|
||
import area from '@/utils/area'
|
||
export default {
|
||
data() {
|
||
return {
|
||
id: 0,
|
||
type: 1,
|
||
|
||
refund_address: {
|
||
nickname: '', //联系方式
|
||
mobile: '', //手机号码
|
||
province_id: '', //省
|
||
city_id: '', //市
|
||
district_id: '', //区
|
||
address: '', //详细地址
|
||
},
|
||
region: '请选择', //省市区显示
|
||
|
||
defaultRegion: ['广东省', '广州市', '番禺区'],
|
||
showRegion: false, //显示地区选择的flag
|
||
lists: [] //省市区的数据
|
||
};
|
||
},
|
||
|
||
onLoad: function(options) {
|
||
this.lists = area; //省市区数据
|
||
|
||
try {
|
||
const type = this.$Route.query.type;
|
||
const id = this.$Route.query.id;
|
||
if (type) {
|
||
this.type = type;
|
||
const shopInfo = this.shopInfo;
|
||
|
||
if (type == 1) {
|
||
this.region = shopInfo.province_name + " " + shopInfo.province_name + " " + shopInfo
|
||
.district_name
|
||
for (const key in shopInfo) {
|
||
this.$set(this.refund_address, key, shopInfo[key])
|
||
}
|
||
uni.setNavigationBarTitle({
|
||
title: '编辑商家地址'
|
||
});
|
||
} else if (type == 2) {
|
||
this.region = shopInfo.refund_address.province_name + " " + shopInfo.refund_address
|
||
.province_name + " " + shopInfo.refund_address.district_name
|
||
for (const key in shopInfo.refund_address) {
|
||
this.$set(this.refund_address, key, shopInfo.refund_address[key])
|
||
}
|
||
uni.setNavigationBarTitle({
|
||
title: '编辑退货地址'
|
||
});
|
||
}
|
||
}
|
||
if (id) {
|
||
this.type = 3;
|
||
this.id = id;
|
||
this.getAddressFunc(id)
|
||
}
|
||
} catch (e) {
|
||
console.log(e)
|
||
}
|
||
},
|
||
methods: {
|
||
// 提交地址信息
|
||
async onSubmit() {
|
||
console.log(this.type == 3)
|
||
let refund_address = {
|
||
nickname: this.type == 2 ? this.refund_address.nickname : '',
|
||
id: this.type == 3 ? this.id : '',
|
||
mobile: this.type != 1 ? this.refund_address.mobile : '',
|
||
consignee: this.type == 3 ? this.refund_address.nickname : '',
|
||
province: this.type == 3 ? this.refund_address.province_id : '',
|
||
city: this.type == 3 ? this.refund_address.city_id : '',
|
||
district: this.type == 3 ? this.refund_address.district_id : '',
|
||
province_id: this.type != 3 ? this.refund_address.province_id : '',
|
||
city_id: this.type != 3 ? this.refund_address.city_id : '',
|
||
district_id: this.type != 3 ? this.refund_address.district_id : '',
|
||
address: this.refund_address.address
|
||
}
|
||
if (this.type == 2 || this.type == 3) {
|
||
if (!this.refund_address.nickname) return this.$toast({
|
||
title: '请填写收货人姓名'
|
||
});
|
||
if (!this.refund_address.nickname.length >= 20) return this.$toast({
|
||
title: '输入的收货人长度不得大于20位'
|
||
})
|
||
if (!this.refund_address.mobile) return this.$toast({
|
||
title: '请填写手机号码'
|
||
});
|
||
}
|
||
if (!this.region) return this.$toast({
|
||
title: '请选择地区'
|
||
});
|
||
if (!this.refund_address.address) return this.$toast({
|
||
title: '请填写小区、街道、门牌号等信息'
|
||
});
|
||
|
||
if (this.type == 2) {
|
||
await apiSetShopInfo({
|
||
refund_address
|
||
})
|
||
} else if (this.type == 1) {
|
||
await apiSetShopInfo({
|
||
...refund_address
|
||
})
|
||
} else if (this.type == 3) {
|
||
await apiOrderEditAddress({
|
||
...refund_address
|
||
})
|
||
}
|
||
this.$refs.uToast.show({
|
||
title: '设置成功',
|
||
type: 'success'
|
||
})
|
||
setTimeout(() => {
|
||
this.$Router.back()
|
||
}, 1000)
|
||
},
|
||
|
||
async getAddressFunc(id) {
|
||
const res = await apiOrderGetAddress({
|
||
id
|
||
})
|
||
|
||
this.refund_address.nickname = res.consignee;
|
||
this.refund_address.mobile = res.mobile
|
||
this.refund_address.province_id = res.province
|
||
this.refund_address.city_id = res.city
|
||
this.refund_address.district_id = res.district
|
||
this.refund_address.address = res.address
|
||
this.region = res.region[0] + " " + res.region[1] + " " + res.region[2]
|
||
},
|
||
|
||
// 地区选择,选择当前省市区的ID
|
||
regionChange(region) {
|
||
this.refund_address.province_id = region[0].value;
|
||
this.refund_address.city_id = region[1].value;
|
||
this.refund_address.district_id = region[2].value;
|
||
this.region = region[0].label + " " + region[1].label + " " + region[2].label
|
||
}
|
||
}
|
||
};
|
||
</script>
|
||
<style lang="scss">
|
||
.address-edit {
|
||
padding-top: 20rpx;
|
||
|
||
.bb {
|
||
border-bottom: 1px solid #F8F8F8;
|
||
}
|
||
|
||
.form-item {
|
||
padding: 30rpx;
|
||
background-color: $-color-white;
|
||
|
||
.label {
|
||
width: 150rpx;
|
||
color: $-color-black;
|
||
font-size: $-font-size-nr;
|
||
font-weight: 500;
|
||
}
|
||
|
||
input {
|
||
text-align: right;
|
||
height: 100%;
|
||
flex: 1;
|
||
}
|
||
}
|
||
}
|
||
|
||
.my-btn {
|
||
height: 88rpx;
|
||
margin: 30rpx 26rpx;
|
||
margin-top: 40rpx;
|
||
text-align: center;
|
||
background-color: $-color-primary;
|
||
}
|
||
</style>
|