shuinishop/pages/user/address/edit/edit.vue

325 lines
6.3 KiB
Vue

<template>
<view>
<view class="content">
<view class="row">
<view class="nominal">
收件人
</view>
<view class="input">
<input placeholder="请输入收件人姓名" type="text" v-model="user" />
</view>
</view>
<view class="row">
<view class="nominal">
电话号码
</view>
<view class="input">
<input placeholder="请输入收件人电话号码" type="text" v-model="telphone" />
</view>
</view>
<!-- <view class="row">
<view class="nominal">
所在地区
</view>
<view class="input" @tap="chooseCity">
{{region.label}}
</view>
</view> -->
<view class="row">
<view class="nominal">
详细地址
</view>
<view class="input">
<textarea v-model="address" auto-height="true" placeholder="输入详细地址"></textarea>
</view>
</view>
<view class="row">
<view class="nominal">
设置默认地址
</view>
<view class="input switch">
<switch color="#f06c7a" :checked="often" @change=isDefaultChange />
</view>
</view>
<view class="row" v-if="editType=='edit'" @tap="del">
<view class="del">
删除收货地址
</view>
</view>
</view>
<view class="save" @tap="save">
<view class="btn">
保存地址
</view>
</view>
<mpvue-city-picker :themeColor="themeColor" ref="mpvueCityPicker" :pickerValueDefault="cityPickerValue"
@onCancel="onCancel" @onConfirm="onConfirm"></mpvue-city-picker>
</view>
</template>
<script>
import mpvueCityPicker from '@/components/mpvue-citypicker/mpvueCityPicker.vue'
export default {
components: {
mpvueCityPicker
},
data() {
return {
editType: 'edit',
id: null,
user: '',
telphone: '',
address: '',
often: false,
cityPickerValue: [0, 0, 1],
themeColor: '#007AFF',
// region:{label:"请点击选择地址",value:[],cityCode:""}
};
},
methods: {
onCancel(e) {
console.log(e)
},
chooseCity() {
this.$refs.mpvueCityPicker.show()
},
onConfirm(e) {
this.region = e;
this.cityPickerValue = e.value;
},
isDefaultChange(e) {
this.often = e.detail.value;
},
del() {
let that = this
uni.showModal({
title: '删除提示',
content: '你将删除这个收货地址',
success: (res) => {
if (res.confirm) {
// uni.setStorage({
// key: 'delAddress',
// data: {
// id: this.id
// },
// success() {
// uni.navigateBack();
// }
// })
that.$u.api.delAddress(that.id).then(res=>{
uni.navigateBack({
})
})
} else if (res.cancel) {
console.log('用户点击取消');
}
}
});
},
save() {
// let data = {
// "name": this.name,
// "head": this.name.substr(0, 1),
// "tel": this.tel,
// "address": {
// "region": this.region,
// "detailed": this.detailed
// },
// "isDefault": this.isDefault
// }
let data = {
id:this.id,
user: this.user,
telphone: this.telphone,
address: this.address,
often: this.often,
}
if (this.editType == 'edit') {
data.id = this.id
}
if (!data.user) {
uni.showToast({
title: '请输入收件人姓名',
icon: 'none'
});
return;
}
if (!data.telphone) {
uni.showToast({
title: '请输入收件人电话号码',
icon: 'none'
});
return;
}
if (!data.address) {
uni.showToast({
title: '请输入收件人详细地址',
icon: 'none'
});
return;
}
// if (data.address.region.value.length == 0) {
// uni.showToast({
// title: '请选择收件地址',
// icon: 'none'
// });
// return;
// }
uni.showLoading({
title: '正在提交'
})
//实际应用中请提交ajax,模板定时器模拟提交效果
// setTimeout(() => {
// uni.setStorage({
// key: 'saveAddress',
// data: data,
// success() {
// uni.hideLoading();
// uni.navigateBack();
// }
// })
// }, 300)
if(data.id){
this.$u.api.editAddress(data.id, data).then(res=>{
uni.navigateBack({
})
})
}else{
this.$u.api.addAddress(data).then(res=>{
uni.navigateBack({
})
})
}
}
},
onLoad(e) {
//获取传递过来的参数
this.editType = e.type;
if (e.type == 'edit') {
uni.getStorage({
key: 'address',
success: (e) => {
this.id = e.data.id;
this.user = e.data.user;
this.telphone = e.data.telphone;
this.address = e.data.address;
this.often = e.data.often;
// this.cityPickerValue = e.data.address.region.value;
// this.region = e.data.address.region;
}
})
}
},
onBackPress() {
if (this.$refs.mpvueCityPicker.showPicker) {
this.$refs.mpvueCityPicker.pickerCancel();
return true;
}
},
onUnload() {
if (this.$refs.mpvueCityPicker.showPicker) {
this.$refs.mpvueCityPicker.pickerCancel()
}
}
};
</script>
<style lang="scss">
.save {
view {
display: flex;
}
position: fixed;
bottom: 0;
width: 100%;
height: 120upx;
display: flex;
justify-content: center;
align-items: center;
.btn {
box-shadow: 0upx 5upx 10upx rgba(0, 0, 0, 0.4);
width: 70%;
height: 80upx;
border-radius: 80upx;
background-color: #f06c7a;
color: #fff;
justify-content: center;
align-items: center;
.icon {
height: 80upx;
color: #fff;
font-size: 30upx;
justify-content: center;
align-items: center;
}
font-size: 30upx;
}
}
.content {
display: flex;
flex-wrap: wrap;
view {
display: flex;
}
.row {
width: 94%;
margin: 0 3%;
border-top: solid 1upx #eee;
.nominal {
width: 30%;
height: 120upx;
font-weight: 200;
font-size: 30upx;
align-items: center;
}
.input {
width: 70%;
padding: 20upx 0;
align-items: center;
font-size: 30upx;
&.switch {
justify-content: flex-end;
}
.textarea {
margin: 20upx 0;
min-height: 120upx;
}
}
.del {
width: 100%;
height: 100upx;
justify-content: center;
align-items: center;
font-size: 36upx;
color: #f06c7a;
background-color: rgba(255, 0, 0, 0.05);
border-bottom: solid 1upx #eee;
}
}
}
</style>