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.
 
 
 
 

123 lines
3.0 KiB

<template>
<view class="app">
<view class="cell row b-b">
<text class="tit">收货人</text>
<input class="input" type="text" maxlength="10" v-model="data.name" placeholder="请输入收货人姓名" placeholder-class="placeholder" />
</view>
<view class="cell row b-b">
<text class="tit">手机号</text>
<input class="input" type="number" maxlength="11" v-model="data.mobile" placeholder="请输入收货人手机号码" placeholder-class="placeholder" />
</view>
<view class="cell row b-b" @click="chooseAddress">
<text class="tit">地址</text>
<text class="input clamp" :class="{placeholder: !data.address.address}">
{{ data.address.address ?
data.address.address + ' ' + data.address.room :
'请在地图选择收货地址'
}}
</text>
<text class="mix-icon icon-you"></text>
</view>
<view class="cell row b-b">
<text class="tit fill">设为默认地址</text>
<switch :checked="data.is_default" color="#FF536F" @change="onSwitchChange" />
</view>
<mix-button ref="confirmBtn" text="提交" marginTop="60rpx" @onConfirm="submit"></mix-button>
</view>
</template>
<script>
import {checkStr} from '@/common/js/util'
export default {
data() {
return {
data: {
is_default: true,
address: {}
}
}
},
onLoad(options) {
if(options.data){
this.data = JSON.parse(options.data)
}
},
methods: {
async submit(){
const data = this.data;
if(!data.name){
this.$util.msg('请输入收货人姓名');
this.$refs.confirmBtn.stop();
return;
}
if(!checkStr(data.mobile, 'mobile')){
this.$util.msg('请输入正确的手机号码');
this.$refs.confirmBtn.stop();
return;
}
if(!data.address.address){
this.$util.msg('请选择收货地址');
this.$refs.confirmBtn.stop();
return;
}
const operation = data._id ? 'update' : 'add';
const res = await this.$request('address', operation, data);
this.$util.msg(res.msg);
if(res.status === 1){
this.$util.prePage().loadData();
setTimeout(()=>{
uni.navigateBack();
}, 1000)
}
},
//选择地址
chooseAddress(){
let url = '/pages/chooseAddress/index';
if(this.data.address.title){
url += `?data=${JSON.stringify(this.data.address)}`;
}
this.navTo(url);
},
//选择地址回调
setAddress(e){
console.log(JSON.stringify(e));
this.data.address = e;
},
onSwitchChange(e){
this.data.is_default = e.detail.value;
}
}
}
</script>
<style scoped lang="scss">
.app{
padding: 10rpx 44rpx 0;
}
.cell{
height: 106rpx;
.tit{
min-width: 130rpx;
font-size: 30rpx;
color: #333;
}
.input{
flex: 1;
font-size: 30rpx;
color: #333;
}
.icon-you{
flex-shrink: 0;
margin-right: 8rpx;
margin-left: 40rpx;
font-size: 24rpx;
color: #aaa;
}
switch{
transform: scale(0.8) translateX(10rpx);
transform-origin: center right;
}
}
</style>