emis-app/pages/address/edit.vue

206 lines
6.0 KiB
Vue
Raw Normal View History

2023-12-30 15:28:01 +00:00
<template>
2024-05-06 16:38:24 +00:00
<tpx-page>
<tpx-layout>
<template v-slot:body>
<view class="com-jianju pos-rlt pb-30" style="padding-top: 2rpx;">
<view class="blcok-white radius-20">
<u-textarea v-model="ansValue" border="none" height="110" placeholder="粘贴或输入地址,点击“智能识别”自动拆分姓名、电话和地址" custom-style="border:0;padding: 0;"></u-textarea>
<u-row justify="end">
<view class="mt-10">
<u-button @click="handleAnsText()" type="primary" size="mini" shape="circle" custom-style="width: 130rpx;font-size: 24rpx;padding:0;">智能识别</u-button>
</view>
</u-row>
</view>
<view class="blcok-white radius-20">
<view class="">
<view style="margin-top: 10rpx;">
<u-row>
<u-col span="4">
<tpx-input v-model:value="submitParam.name" placeholder="真实姓名"></tpx-input>
</u-col>
<u-col offset="1" span="7">
<tpx-input v-model:value="submitParam.phone" placeholder="电话"></tpx-input>
</u-col>
</u-row>
</view>
<view class="mt-40 pos-rlt">
<tpx-input :value="getAddressDetail(submitParam, false)" placeholder="所在地区"></tpx-input>
<view @click="handleDialogClick(addressModal)" class="pos-abt-all"></view>
</view>
<view class="mt-30">
<tpx-textarea v-model:value="submitParam.address" placeholder="详细地址(例如**街道**号**)"></tpx-textarea>
</view>
<view class="mt-30">
<tpx-input v-model:value="submitParam.postCode" placeholder="邮编"></tpx-input>
</view>
<view class="mt-30">
<tpx-input v-model:value="submitParam.email" placeholder="邮箱(选填"></tpx-input>
</view>
<view class="mt-30">
<tpx-input v-model:value="submitParam.company" placeholder="公司名称(选填)"></tpx-input>
</view>
2023-12-30 15:28:01 +00:00
</view>
2024-05-06 16:38:24 +00:00
</view>
2023-12-30 15:28:01 +00:00
2024-05-06 16:38:24 +00:00
<view class="mt-30 pl-30 pr-30">
<u-row justify="between">
<view>
2024-06-13 01:26:29 +00:00
<!-- <u-checkbox-group v-model="submitParam.blDefaultFlag" placement="column">
2024-05-06 16:38:24 +00:00
<u-checkbox
:name="true"
shape="circle"
size="30" label="默认地址" active-color="#B12D29"
label-size="28"
>
</u-checkbox>
2024-06-13 01:26:29 +00:00
</u-checkbox-group> -->
2024-05-06 16:38:24 +00:00
</view>
<view @click="handleReset">
<u-text text="清空" size="28" color="#0E0708"></u-text>
</view>
</u-row>
2023-12-30 15:28:01 +00:00
</view>
</view>
2024-05-06 16:38:24 +00:00
</template>
<template v-slot:footer>
<view class="blcok-white-noradius">
<u-button @click="handleSubmit()" type="primary" size="large" shape="circle"
custom-style="height:80rpx;font-size: 30rpx;"
>确定</u-button>
2023-12-30 15:28:01 +00:00
</view>
2024-05-06 16:38:24 +00:00
</template>
</tpx-layout>
<buns-address-sheet v-model:show="addressModal.show" v-model:value="addressModal.values" @onSure="handleAddressChoose"></buns-address-sheet>
</tpx-page>
2023-12-30 15:28:01 +00:00
</template>
<script>
2024-04-28 10:10:43 +00:00
import { getAddressModels } from "./model"
2024-04-28 10:38:36 +00:00
import * as apiService from "@/common/api"
2024-04-29 03:18:29 +00:00
import { addressNameCodeMap } from "@/common/enum"
2024-06-11 01:08:59 +00:00
import { pageEventNames } from "@/common/enum"
2024-05-06 07:35:01 +00:00
import { getAddressDetail, setAddresModalParam } from "@/common/util"
2024-06-20 14:25:26 +00:00
import { checkParams } from "@/common/validate"
2024-04-28 10:38:36 +00:00
2023-12-30 15:28:01 +00:00
export default {
props: {
},
computed: {
},
data() {
return {
2024-04-28 10:38:36 +00:00
queryOption: {
2024-06-11 01:08:59 +00:00
id: undefined,
addressType: undefined, // 1寄件 2收件
listQuery: {}
2024-04-28 10:38:36 +00:00
},
2024-03-04 11:09:51 +00:00
addressModal: {
2024-04-28 10:10:43 +00:00
show: false,
values: {
regIds: [],
regNames: []
}
2024-03-04 11:09:51 +00:00
},
2024-05-06 07:35:01 +00:00
ansValue: '',
2023-12-30 15:28:01 +00:00
submitParam: {
2024-04-28 10:10:43 +00:00
...getAddressModels(),
2024-06-20 14:25:26 +00:00
},
submitValidConfig: {
name: { required: true, requiredMsg: '姓名不能为空' },
phone: { required: true, requiredMsg: '手机号不能为空' },
country: { required: true, requiredMsg: '国家不能为空' },
province: { required: true, requiredMsg: '省份不能为空' },
address: { required: true, requiredMsg: '详细地址' },
},
2023-12-30 15:28:01 +00:00
}
},
onShareAppMessage() {
return {
// title: '',
// path: 'TODO'
}
},
2024-04-28 10:38:36 +00:00
onLoad(queryOption) {
this.queryOption = queryOption
2023-12-30 15:28:01 +00:00
this.initData();
},
onUnload() {
},
methods: {
2024-04-29 03:18:29 +00:00
getAddressDetail,
2024-04-28 10:38:36 +00:00
async initData() {
if(this.queryOption.id) {
let res = await apiService.getAddressById({ id: this.queryOption.id, _loading: true })
if(res.data.blDefaultFlag) {
res.data.blDefaultFlag = [true]
}
2024-04-29 03:18:29 +00:00
// 回显 国家-省市区组件数据
2024-05-06 07:35:01 +00:00
this.addressModal.values = setAddresModalParam(res.data);
this.submitParam = res.data
2024-04-28 10:38:36 +00:00
}
2023-12-30 15:28:01 +00:00
},
2024-05-06 07:35:01 +00:00
async handleAnsText(){
let res = await apiService.parseAddress({ content: this.ansValue, _loading: true })
let data = res.data || {}
this.addressModal.values = setAddresModalParam(data);
Object.assign(this.submitParam, data)
2024-04-28 15:55:37 +00:00
},
handleAddressChoose(data) {
2024-04-29 03:18:29 +00:00
data.regIds.map((regId, index)=> {
let nameCodeMap = addressNameCodeMap[index]
this.submitParam[nameCodeMap.codeKey] = regId
this.submitParam[nameCodeMap.nameKey] = data.regNames[index]
})
2023-12-30 15:28:01 +00:00
},
2024-04-28 10:10:43 +00:00
handleReset(){
this.submitParam = getAddressModels()
this.addressModal.values = {
regIds: [],
regNames: [],
}
2023-12-30 15:28:01 +00:00
},
2024-04-28 10:38:36 +00:00
async handleSubmit() {
let params = { ...this.submitParam }
2024-06-20 14:25:26 +00:00
await checkParams(params, this.submitValidConfig)
2024-04-28 10:38:36 +00:00
let curServiceHand = apiService.addAddress
if(this.queryOption.id) {
curServiceHand = apiService.editAddress
2024-06-11 01:08:59 +00:00
} else {
params.addressType = this.queryOption.addressType
2024-04-28 10:38:36 +00:00
}
2024-04-29 04:33:35 +00:00
params.blDefaultFlag = Number(!!(params.blDefaultFlag && params.blDefaultFlag.length > 0));
2024-04-28 10:38:36 +00:00
await curServiceHand({ ...params, _loading: true })
this.showToast("操作成功")
2024-06-11 01:08:59 +00:00
uni.$emit(pageEventNames.addressSaveSuccess, {
data: params
})
2024-04-28 15:55:37 +00:00
this.goBack()
2023-12-30 15:28:01 +00:00
},
2024-03-04 11:09:51 +00:00
handleDialogClick(curModal) {
curModal.show = true
}
2023-12-30 15:28:01 +00:00
}
}
</script>
<style lang="scss">
@import '@/common/uni-nvue.scss';
page {
background-color: #F6F6F6;
height: 100% !important;
}
</style>
<style scoped lang="scss">
</style>