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.
247 lines
6.1 KiB
247 lines
6.1 KiB
<template>
|
|
<view class="flex-col page">
|
|
<view class="flex-col group_4">
|
|
<view class="flex-col section_2">
|
|
<view class="top-group flex-row">
|
|
<text class="text_2 lf-m-r-18">收货人</text>
|
|
<u-input class="input" v-model="address.name" placeholder="请填写收货人姓名" border="surround" :clearable="true" ></u-input>
|
|
</view>
|
|
<view class="top-group flex-row">
|
|
<text class="text_4 lf-m-r-18">手机号码</text>
|
|
<u-input class="input" v-model="address.phone" placeholder="请填写收货人手机号码" border="surround" maxlength="11" :clearable="true" ></u-input>
|
|
</view>
|
|
<view class="flex-col group_5">
|
|
<picker mode="region" :value="address.region" @change="pickerChnage">
|
|
<view class="top-group justify-between">
|
|
<view class="flex-row">
|
|
<text class="text_6 lf-m-r-18">所在地区</text>
|
|
<text class="text_7" :class="{'black-color': regionNotEmpty}">{{ address.region.length > 0 ? address.region.join(',') : '请选择所在地区' }}</text>
|
|
</view>
|
|
<image
|
|
src="https://project-user-resource-1256085488.cos.ap-guangzhou.myqcloud.com/62677e395a7e3f03107ffc5f/62677e4a35a7e10011e93a80/16509497893779891395.png"
|
|
class="image_6"
|
|
/>
|
|
</view>
|
|
</picker>
|
|
<view class="flex-row group_7" style="align-items: flex-start;">
|
|
<text class="text_8 lf-m-r-18 lf-m-t-12">详细地址</text>
|
|
<u-textarea v-model="address.desc" placeholder="请填写详细地址:如道路、门牌号、楼栋号、单元室等" ></u-textarea>
|
|
</view>
|
|
</view>
|
|
<view class="top-group flex-row">
|
|
<text class="text_4 lf-m-r-18">默认地址</text>
|
|
<u-switch v-model="address.default" style="margin-left: 18rpx;" activeColor="#e7a23f"></u-switch>
|
|
</view>
|
|
</view>
|
|
<view class="flex-col group_8">
|
|
<view class="flex-col items-center button" @click="save">
|
|
<text>保存</text>
|
|
</view>
|
|
</view>
|
|
</view>
|
|
</view>
|
|
</template>
|
|
|
|
<script>
|
|
import { addNewAddress, addressDetail } from '@/service/address.js';
|
|
|
|
export default {
|
|
data() {
|
|
return {
|
|
id: null,
|
|
address: {
|
|
name: '',
|
|
phone: '',
|
|
region: [],
|
|
regionCode: '',
|
|
desc: '',
|
|
default: false
|
|
}
|
|
};
|
|
},
|
|
computed: {
|
|
regionNotEmpty(){
|
|
return this.address.region.length > 0;
|
|
}
|
|
},
|
|
onLoad(options){
|
|
this.id = options.id || null;
|
|
this.id && this.getAddressDetail();
|
|
},
|
|
onReady(){
|
|
let title = '新增收货地址';
|
|
if(this.id){
|
|
title = '编辑收货地址';
|
|
}
|
|
uni.setNavigationBarTitle({
|
|
title: title
|
|
})
|
|
},
|
|
methods: {
|
|
// 编辑进入,根据地址id查询后做修改
|
|
async getAddressDetail(){
|
|
let res = await addressDetail(this.id);
|
|
let details = res.data.datas;
|
|
this.address = {
|
|
name: details.name,
|
|
phone: details.tel,
|
|
region: details.area_name.split(','),
|
|
regionCode: details.area_id,
|
|
desc: details.desc,
|
|
default: Boolean(details.default)
|
|
}
|
|
},
|
|
pickerChnage(event){
|
|
console.log(event);
|
|
this.address.region = event.detail.value;
|
|
this.address.regionCode = event.detail.code.splice(2).join();
|
|
},
|
|
// 新增/编辑 保存
|
|
save(){
|
|
console.log(this.address)
|
|
let address = this.address;
|
|
if(!address.name) return this.$msg('请填写收货人');
|
|
if(!address.phone) return this.$msg('请填写手机号');
|
|
if(address.region.length === 0) return this.$msg('请选择地区');
|
|
if(!address.desc) return this.$msg('请填写详细信息');
|
|
|
|
let data = {
|
|
tel: address.phone,
|
|
name: address.name,
|
|
desc: address.desc,
|
|
default: Number(address.default),
|
|
area_id: address.regionCode
|
|
}
|
|
if(this.id){ // 编辑地址,多传入原地址id
|
|
data.addr_id = this.id;
|
|
}
|
|
|
|
addNewAddress(data).then(res => {
|
|
console.log(res);
|
|
this.$msg('操作成功', {icon: 'success'}).then(() => {
|
|
this.$toBack();
|
|
})
|
|
});
|
|
}
|
|
}
|
|
};
|
|
</script>
|
|
|
|
<style scoped lang="css">
|
|
.top-group {
|
|
padding: 40rpx 0 38rpx;
|
|
border-bottom: solid 2rpx rgb(239, 239, 239);
|
|
}
|
|
.page {
|
|
background-color: #f6f6f6;
|
|
width: 100%;
|
|
overflow-y: auto;
|
|
height: 100%;
|
|
}
|
|
|
|
.group_4 {
|
|
padding-top: 2rpx;
|
|
flex: 1 1 auto;
|
|
overflow-y: auto;
|
|
}
|
|
.section_2 {
|
|
padding: 0 32rpx;
|
|
background-color: rgb(255, 255, 255);
|
|
}
|
|
.group_8 {
|
|
margin-top: 64rpx;
|
|
padding: 16rpx 32rpx;
|
|
color: rgb(231, 162, 63);
|
|
font-size: 32rpx;
|
|
font-weight: 600;
|
|
line-height: 44rpx;
|
|
white-space: nowrap;
|
|
}
|
|
.group_5 {
|
|
padding-top: 2rpx;
|
|
}
|
|
.button {
|
|
padding: 24rpx 0;
|
|
border-radius: 10rpx;
|
|
border: solid 2rpx rgb(231, 162, 63);
|
|
}
|
|
.text_2 {
|
|
color: rgb(51, 51, 51);
|
|
font-size: 32rpx;
|
|
font-weight: 500;
|
|
line-height: 44rpx;
|
|
white-space: nowrap;
|
|
width: 140rpx;
|
|
}
|
|
.text_3 {
|
|
margin-left: 72rpx;
|
|
color: rgb(195, 195, 195);
|
|
font-size: 32rpx;
|
|
line-height: 44rpx;
|
|
white-space: nowrap;
|
|
}
|
|
.text_4 {
|
|
color: rgb(51, 51, 51);
|
|
font-size: 32rpx;
|
|
font-weight: 500;
|
|
line-height: 44rpx;
|
|
white-space: nowrap;
|
|
width: 140rpx;
|
|
}
|
|
.text_5 {
|
|
margin-left: 40rpx;
|
|
color: rgb(195, 195, 195);
|
|
font-size: 32rpx;
|
|
line-height: 44rpx;
|
|
white-space: nowrap;
|
|
}
|
|
.group_7 {
|
|
margin-right: 6rpx;
|
|
padding: 40rpx 0;
|
|
}
|
|
.image_6 {
|
|
width: 44rpx;
|
|
height: 44rpx;
|
|
}
|
|
.text_8 {
|
|
color: rgb(51, 51, 51);
|
|
font-size: 32rpx;
|
|
font-weight: 500;
|
|
line-height: 44rpx;
|
|
white-space: nowrap;
|
|
width: 140rpx;
|
|
}
|
|
.text_9 {
|
|
margin-left: 40rpx;
|
|
flex: 1 1 auto;
|
|
color: rgb(195, 195, 195);
|
|
font-size: 32rpx;
|
|
line-height: 44rpx;
|
|
text-align: left;
|
|
}
|
|
.text_6 {
|
|
color: rgb(51, 51, 51);
|
|
font-size: 32rpx;
|
|
font-weight: 500;
|
|
line-height: 44rpx;
|
|
white-space: nowrap;
|
|
width: 140rpx;
|
|
}
|
|
.text_7 {
|
|
margin-left: 18rpx;
|
|
color: rgb(195, 195, 195);
|
|
font-size: 28rpx;
|
|
line-height: 44rpx;
|
|
white-space: nowrap;
|
|
max-width: 440rpx;
|
|
overflow:hidden;
|
|
text-overflow:ellipsis;
|
|
}
|
|
.flex-row{
|
|
display: flex;
|
|
align-items: center;
|
|
}
|
|
.black-color{
|
|
color: #303133 !important;
|
|
}
|
|
</style>
|