purchase-let/pagesOrder/addressEdit/addressEdit.vue

133 lines
4.0 KiB
Vue
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<template>
<view class="">
<view class="card">
<up-form labelPosition="left" :model="formData" :rules="rules" ref="uForm" labelWidth="100">
<up-form-item label="收货人" prop="real_name" borderBottom>
<up-input v-model="formData.real_name" disabledColor="#ffffff" border="none" placeholder="请填写收货人姓名"></up-input>
</up-form-item>
<up-form-item label="联系电话" prop="phone" borderBottom>
<up-input v-model="formData.phone" disabledColor="#ffffff" type="number" placeholder="请填写联系电话"
border="none"></up-input>
</up-form-item>
<up-form-item label="详细地址" prop="detail" borderBottom>
<up-input v-model="formData.detail" disabledColor="#ffffff" placeholder="请填写详细地址" border="none"></up-input>
</up-form-item>
</up-form>
</view>
<view class="card">
<view class="is-default">
<view>设置为默认地址</view>
<up-switch v-model="formData.is_default" :activeValue="1" :inactiveValue="0" activeColor="#20B128"></up-switch>
</view>
</view>
<view class="bottom-fixed">
<up-button color="#20B128" shape="circle" @click="submit">保存</up-button>
</view>
</view>
</template>
<script setup>
import { onLoad } from "@dcloudio/uni-app"
import { ref } from "vue"
import { addressCreateApi, addressEditApi, addressDetailApi } from "@/api/user.js"
const mode = ref('add');
const formData = ref({
real_name: '',
phone: '',
detail: '',
is_default: 0
})
const rules = ref({
real_name: [{ required: true, message: '请输入姓名', trigger: ['blur'] }],
phone: [{ required: true, message: '请输入手机号', trigger: ['blur'] },{
validator: (rule, value, callback) => {
// 上面有说返回true表示校验通过返回false表示不通过
// uni.$u.test.mobile()就是返回true或者false的
return uni.$u.test.mobile(value);
},
message: '手机号码不正确',
trigger: ['change','blur'],
}],
detail: [{ required: true, message: '请输入地址', trigger: ['blur'] }]
})
const uForm = ref(null);
const submit = () => {
uForm.value.validate().then(() => {
console.log('验证通过');
if(mode.value=='add'){
addressCreateApi(formData.value).then(res=>{
uni.$u.toast(res.msg);
uni.$u.sleep(800).then(res=>{
uni.navigateBack();
})
})
} else {
addressEditApi(formData.value).then(res=>{
uni.$u.toast(res.msg);
uni.$u.sleep(800).then(res=>{
uni.navigateBack();
})
})
}
}).catch(() => {
console.log('验证失败');
})
}
const getAddressDetil = (address_id)=>{
addressDetailApi({
address_id
}).then(res=>{
formData.value = res.data;
})
}
onLoad((options) => {
if (options.mode == 'edit'&&options.address_id) {
mode.value = 'edit';
uni.setNavigationBarTitle({
title: '编辑地址'
})
getAddressDetil(options.address_id)
} else uni.setNavigationBarTitle({
title: '新增地址'
})
})
</script>
<style lang="scss">
.card {
margin: 20rpx;
background-color: #fff;
border-radius: 14rpx;
padding: 0 30rpx;
.is-default {
display: flex;
align-items: center;
justify-content: space-between;
padding: 20rpx 0;
}
}
.bottom-fixed {
position: fixed;
bottom: 0;
left: 0;
height: 120rpx;
height: calc(constant(safe-area-inset-bottom) + 120rpx);
/* 适用于iOS设备 */
height: calc(env(safe-area-inset-bottom) + 120rpx);
/* 适用于Android设备 */
width: 100%;
box-sizing: border-box;
background-color: #fff;
padding: 20rpx;
padding-bottom: calc(constant(safe-area-inset-bottom) + 20rpx);
/* 适用于iOS设备 */
padding-bottom: calc(env(safe-area-inset-bottom) + 20rpx);
/* 适用于Android设备 */
}
</style>