Files
dajiankang-uniapp/pages/address/add.vue
PC-202306242200\Administrator 1c24452b6c first commit
2026-03-28 23:10:55 +08:00

253 lines
6.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="address-add">
<wd-navbar title="新增地址" safeAreaInsetTop left-arrow @click-left="back"></wd-navbar>
<view class="from-address">
<view class="title">收货人</view>
<view class="content">
<wd-input type="text" no-border v-model="from.receiverName" placeholder="请输入收货人姓名" />
</view>
</view>
<view class="from-address">
<view class="title">手机号</view>
<view class="content">
<wd-input type="number" no-border v-model="from.receiverPhone" placeholder="请输入手机号" />
</view>
</view>
<view class="from-address">
<view class="title">所在地区</view>
<view class="content">
<wd-input type="text" no-border v-model="from.receiverArea" placeholder="请输入省市区" />
</view>
</view>
<view class="from-address">
<view class="title">详细地址</view>
<view class="content">
<wd-input type="text" no-border v-model="from.receiverAddress" placeholder="请输入详细地址" />
</view>
</view>
<view class="from-address" style="margin-top: 30rpx; justify-content: space-between">
<view class="title" style="width: 300rpx">设置为默认地址</view>
<view>
<wd-switch v-model="from.isDefault" size="20px" />
<!-- <up-switch v-model="from.is_default" size="20" activeColor="#7ADE77" :activeValue="1" :inactiveValue="0"></up-switch> -->
</view>
</view>
<view class="bottom-btn">
<view class="button-a" @click="add_Address">保存</view>
</view>
</view>
</template>
<script setup lang="ts">
import api from '@/api/index';
import { ref, computed } from 'vue';
import { onLoad } from '@dcloudio/uni-app';
onLoad((options) => {
if(options.id){
api.addressInfo({ id: options.id }).then((res) => {
// 1. 处理接口返回数据(假设有效数据在 res.data 中)
const resData = res || {}; // 避免空数据报错
resData.isDefault = resData.isDefault ? true : false;
// 2. 筛选:只取 from 中已有的字段
const formKeys = Object.keys(from.value); // from 的所有键(如 receiverName、receiverPhone 等)
const updateData = {};
formKeys.forEach((key) => {
if (resData.hasOwnProperty(key)) {
// 仅当接口数据有该字段时才取
updateData[key] = resData[key];
}
});
// 3. 合并到 from.value覆盖已有字段保留默认值
Object.assign(from.value, updateData);
});
}
});
const from = ref({
receiverName: '',
receiverPhone: '',
receiverArea: '',
receiverAddress: '',
isDefault: true,
status: 0,
id: ''
});
const add_Address = () => {
let data = JSON.parse(JSON.stringify(from.value));
data.isDefault = data.isDefault ? 1 : 0;
if(data.id){
api.addressUp(data).then((res) => {
uni.navigateBack();
});
}else{
api.addressAdd(data).then((res) => {
uni.navigateBack();
});
}
};
const back = () => {
uni.navigateBack();
};
// export default {
// data() {
// return {
// value: '',
// styles: {
// color: '#2979FF',
// borderColor: '#fff'
// },
// classes: '请选择',
// dataTree: [],
// from: {
// realName: '',
// phone: '',
// city: '',
// detail: '',
// is_default: 0
// },
// type: null
// };
// },
// onLoad(option) {
// if (option.type == 'edit') {
// this.type = option.type;
// this.$http
// .get_user_address_detail({
// address_id: option.id
// })
// .then((res) => {
// this.from.address_id = res.id;
// this.from.name = res.name;
// this.from.city = res.city;
// this.from.is_default = Number(res.is_default);
// this.from.phone = res.phone;
// this.from.address = res.address;
// console.log(res);
// });
// }
// },
// methods: {
// handleGetRegion(region) {
// this.from.city = region[0].name + '/' + region[1].name + '/' + region[2].name;
// console.log(region);
// },
// back() {
// uni.navigateBack();
// },
// from_mo(data) {
// console.log(data);
// this.from = {
// name: data.name,
// phone: data.phone,
// province: data.province,
// city: data.city,
// area: data.area,
// address: data.address,
// status: parseInt(data.status),
// code: data.code,
// address_id: data.id
// };
// },
// add_Address() {
// if (uni.$u.test.mobile(this.from.phone) != true) {
// uni.showToast({
// title: '手机号格式错误',
// icon: 'none'
// });
// return;
// }
// if (this.type == 'edit') {
// this.$http.edit_user_address(this.from).then((res) => {
// this.$http.show('保存成功');
// setTimeout(() => {
// uni.navigateBack();
// }, 2000);
// });
// } else {
// this.$http.add_user_address(this.from).then((res) => {
// this.$http.show('保存成功');
// // uni.$emit('Addaddress', e)
// setTimeout(() => {
// uni.navigateBack();
// }, 2000);
// });
// }
// },
// onchange(e) {
// const value = e.detail.value;
// this.from.province = value[0].text;
// this.from.city = value[1].text;
// this.from.area = value[2].text;
// this.from.code = value[2].value;
// },
// onnodeclick(node) {}
// }
// };
</script>
<style scoped lang="scss">
.address-add {
width: 100%;
padding: 00rpx 0 180rpx;
.from-address {
background-color: #fff;
height: 110rpx;
padding: 0rpx 20rpx;
display: flex;
align-items: center;
.title {
width: 150rpx;
font-size: 28rpx;
font-weight: bold;
color: #333333;
}
.content {
flex: 1;
height: 100rpx;
display: flex;
align-items: center;
border-bottom: 1rpx solid #f6f6f6;
}
}
.bottom-btn {
width: 100%;
height: 150rpx;
padding: 30rpx;
background-color: #ffffff;
position: fixed;
bottom: 0;
left: 0;
border-radius: 20rpx 20rpx 0 0;
box-shadow: 0px 6rpx 16rpx 2rpx rgba(170, 170, 170, 0.35);
display: flex;
align-items: center;
justify-content: center;
.button-a {
width: 690rpx;
height: 90rpx;
background: #799675;
border-radius: 15rpx;
text-align: center;
font-size: 30rpx;
color: #ffffff;
line-height: 90rpx;
}
}
}
</style>