|
|
<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>
|