glhcp/business/pages/address_edit/address_edit.vue

235 lines
9.0 KiB
Vue
Raw Blame History

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

<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>