|
@@ -24,26 +24,28 @@
|
|
|
label-width="120px"
|
|
label-width="120px"
|
|
|
class="sender-form"
|
|
class="sender-form"
|
|
|
>
|
|
>
|
|
|
- <el-form-item label="姓名:" prop="name" required>
|
|
|
|
|
|
|
+ <el-form-item label="姓名:" prop="contactName" required>
|
|
|
<el-input
|
|
<el-input
|
|
|
- v-model="sender.name"
|
|
|
|
|
|
|
+ v-model="sender.contactName"
|
|
|
placeholder="请输入真实姓名"
|
|
placeholder="请输入真实姓名"
|
|
|
size="large"
|
|
size="large"
|
|
|
clearable
|
|
clearable
|
|
|
class="fixed-input"
|
|
class="fixed-input"
|
|
|
maxlength="20"
|
|
maxlength="20"
|
|
|
show-word-limit
|
|
show-word-limit
|
|
|
|
|
+ @input="handleSenderChange"
|
|
|
/>
|
|
/>
|
|
|
</el-form-item>
|
|
</el-form-item>
|
|
|
|
|
|
|
|
- <el-form-item label="电话:" prop="phone" required>
|
|
|
|
|
|
|
+ <el-form-item label="电话:" prop="contactPhone" required>
|
|
|
<el-input
|
|
<el-input
|
|
|
- v-model="sender.phone"
|
|
|
|
|
|
|
+ v-model="sender.contactPhone"
|
|
|
placeholder="请输入电话号码"
|
|
placeholder="请输入电话号码"
|
|
|
size="large"
|
|
size="large"
|
|
|
clearable
|
|
clearable
|
|
|
class="fixed-input"
|
|
class="fixed-input"
|
|
|
maxlength="11"
|
|
maxlength="11"
|
|
|
|
|
+ @input="handleSenderChange"
|
|
|
/>
|
|
/>
|
|
|
</el-form-item>
|
|
</el-form-item>
|
|
|
|
|
|
|
@@ -58,15 +60,16 @@
|
|
|
/>
|
|
/>
|
|
|
</el-form-item>
|
|
</el-form-item>
|
|
|
|
|
|
|
|
- <el-form-item label="详细地址:" prop="address" required>
|
|
|
|
|
|
|
+ <el-form-item label="详细地址:" prop="detailedAddress" required>
|
|
|
<el-input
|
|
<el-input
|
|
|
- v-model="sender.address"
|
|
|
|
|
|
|
+ v-model="sender.detailedAddress"
|
|
|
placeholder="请输入详细地址"
|
|
placeholder="请输入详细地址"
|
|
|
size="large"
|
|
size="large"
|
|
|
clearable
|
|
clearable
|
|
|
class="fixed-input"
|
|
class="fixed-input"
|
|
|
maxlength="100"
|
|
maxlength="100"
|
|
|
show-word-limit
|
|
show-word-limit
|
|
|
|
|
+ @input="handleSenderChange"
|
|
|
/>
|
|
/>
|
|
|
</el-form-item>
|
|
</el-form-item>
|
|
|
|
|
|
|
@@ -74,8 +77,9 @@
|
|
|
<div class="default-address-wrapper">
|
|
<div class="default-address-wrapper">
|
|
|
<label class="checkbox-label">
|
|
<label class="checkbox-label">
|
|
|
<el-checkbox
|
|
<el-checkbox
|
|
|
- v-model="sender.isDefault"
|
|
|
|
|
- :label="true"
|
|
|
|
|
|
|
+ v-model="sender.defaultFlag"
|
|
|
|
|
+ :true-label="'1'"
|
|
|
|
|
+ :false-label="'0'"
|
|
|
size="large"
|
|
size="large"
|
|
|
class="default-address-radio"
|
|
class="default-address-radio"
|
|
|
/>
|
|
/>
|
|
@@ -117,26 +121,28 @@
|
|
|
label-width="120px"
|
|
label-width="120px"
|
|
|
class="receiver-form"
|
|
class="receiver-form"
|
|
|
>
|
|
>
|
|
|
- <el-form-item label="姓名:" prop="name" required>
|
|
|
|
|
|
|
+ <el-form-item label="姓名:" prop="contactName" required>
|
|
|
<el-input
|
|
<el-input
|
|
|
- v-model="receiver.name"
|
|
|
|
|
|
|
+ v-model="receiver.contactName"
|
|
|
placeholder="请输入真实姓名"
|
|
placeholder="请输入真实姓名"
|
|
|
size="large"
|
|
size="large"
|
|
|
clearable
|
|
clearable
|
|
|
class="fixed-input"
|
|
class="fixed-input"
|
|
|
maxlength="20"
|
|
maxlength="20"
|
|
|
show-word-limit
|
|
show-word-limit
|
|
|
|
|
+ @input="handleReceiverChange"
|
|
|
/>
|
|
/>
|
|
|
</el-form-item>
|
|
</el-form-item>
|
|
|
|
|
|
|
|
- <el-form-item label="电话:" prop="phone" required>
|
|
|
|
|
|
|
+ <el-form-item label="电话:" prop="contactPhone" required>
|
|
|
<el-input
|
|
<el-input
|
|
|
- v-model="receiver.phone"
|
|
|
|
|
|
|
+ v-model="receiver.contactPhone"
|
|
|
placeholder="请输入电话号码"
|
|
placeholder="请输入电话号码"
|
|
|
size="large"
|
|
size="large"
|
|
|
clearable
|
|
clearable
|
|
|
class="fixed-input"
|
|
class="fixed-input"
|
|
|
maxlength="11"
|
|
maxlength="11"
|
|
|
|
|
+ @input="handleReceiverChange"
|
|
|
/>
|
|
/>
|
|
|
</el-form-item>
|
|
</el-form-item>
|
|
|
|
|
|
|
@@ -151,15 +157,16 @@
|
|
|
/>
|
|
/>
|
|
|
</el-form-item>
|
|
</el-form-item>
|
|
|
|
|
|
|
|
- <el-form-item label="详细地址:" prop="address" required>
|
|
|
|
|
|
|
+ <el-form-item label="详细地址:" prop="detailedAddress" required>
|
|
|
<el-input
|
|
<el-input
|
|
|
- v-model="receiver.address"
|
|
|
|
|
|
|
+ v-model="receiver.detailedAddress"
|
|
|
placeholder="请输入详细地址"
|
|
placeholder="请输入详细地址"
|
|
|
size="large"
|
|
size="large"
|
|
|
clearable
|
|
clearable
|
|
|
class="fixed-input"
|
|
class="fixed-input"
|
|
|
maxlength="100"
|
|
maxlength="100"
|
|
|
show-word-limit
|
|
show-word-limit
|
|
|
|
|
+ @input="handleReceiverChange"
|
|
|
/>
|
|
/>
|
|
|
</el-form-item>
|
|
</el-form-item>
|
|
|
|
|
|
|
@@ -212,6 +219,7 @@
|
|
|
</el-form-item>
|
|
</el-form-item>
|
|
|
|
|
|
|
|
<el-form-item label="快递类型:" prop="expressType" required class="fixed-input">
|
|
<el-form-item label="快递类型:" prop="expressType" required class="fixed-input">
|
|
|
|
|
+
|
|
|
<el-select
|
|
<el-select
|
|
|
v-model="deliveryForm.expressType"
|
|
v-model="deliveryForm.expressType"
|
|
|
placeholder="请选择快递类型"
|
|
placeholder="请选择快递类型"
|
|
@@ -219,11 +227,20 @@
|
|
|
class="fixed-input"
|
|
class="fixed-input"
|
|
|
>
|
|
>
|
|
|
<el-option
|
|
<el-option
|
|
|
- v-for="type in deliveryType"
|
|
|
|
|
- :key="type.value"
|
|
|
|
|
- :label="type.label"
|
|
|
|
|
- :value="type.value"
|
|
|
|
|
- />
|
|
|
|
|
|
|
+ v-if="productType == '1'"
|
|
|
|
|
+ v-for="dict in jd_logistics_product_code"
|
|
|
|
|
+ :key="dict.value"
|
|
|
|
|
+ :label="dict.label"
|
|
|
|
|
+ :value="dict.value"
|
|
|
|
|
+ ></el-option>
|
|
|
|
|
+ <el-option
|
|
|
|
|
+ v-if="productType == '2'"
|
|
|
|
|
+ v-for="dict in sf_logistics_product_code"
|
|
|
|
|
+ :key="dict.value"
|
|
|
|
|
+ :label="dict.label"
|
|
|
|
|
+ :value="dict.value"
|
|
|
|
|
+ ></el-option>
|
|
|
|
|
+
|
|
|
</el-select>
|
|
</el-select>
|
|
|
</el-form-item>
|
|
</el-form-item>
|
|
|
</div>
|
|
</div>
|
|
@@ -303,6 +320,14 @@
|
|
|
</div>
|
|
</div>
|
|
|
|
|
|
|
|
<!-- 增值服务 -->
|
|
<!-- 增值服务 -->
|
|
|
|
|
+<!-- 增值服务:-->
|
|
|
|
|
+<!-- 包装:isPack-->
|
|
|
|
|
+<!-- 保价:guaranteeMoney-->
|
|
|
|
|
+<!-- 超长超重:isOverLongWeight-->
|
|
|
|
|
+<!-- 签单返还:isReceiptCollect-->
|
|
|
|
|
+<!-- 打木架:isWoodenCrate-->
|
|
|
|
|
+<!-- 京东 包装 保价 签单反 保价有的话传值 没有的话传 空 签单反 没筛选了-->
|
|
|
|
|
+
|
|
|
<div class="form-card full-width">
|
|
<div class="form-card full-width">
|
|
|
<div class="card-header with-blue-line">
|
|
<div class="card-header with-blue-line">
|
|
|
<div class="blue-line"></div>
|
|
<div class="blue-line"></div>
|
|
@@ -310,7 +335,7 @@
|
|
|
</div>
|
|
</div>
|
|
|
<div class="form-content">
|
|
<div class="form-content">
|
|
|
<div class="value-services-grid">
|
|
<div class="value-services-grid">
|
|
|
- <div class="service-item">
|
|
|
|
|
|
|
+ <div class="service-item" v-if="productType == '1'">
|
|
|
<span class="service-label">包装服务</span>
|
|
<span class="service-label">包装服务</span>
|
|
|
<el-switch
|
|
<el-switch
|
|
|
v-model="valueServices.packaging"
|
|
v-model="valueServices.packaging"
|
|
@@ -319,7 +344,7 @@
|
|
|
/>
|
|
/>
|
|
|
</div>
|
|
</div>
|
|
|
|
|
|
|
|
- <div class="service-item">
|
|
|
|
|
|
|
+ <div class="service-item" v-if="productType == '1'">
|
|
|
<span class="service-label">保价</span>
|
|
<span class="service-label">保价</span>
|
|
|
<div class="insurance-wrapper">
|
|
<div class="insurance-wrapper">
|
|
|
<el-switch
|
|
<el-switch
|
|
@@ -355,7 +380,7 @@
|
|
|
/>
|
|
/>
|
|
|
</div>
|
|
</div>
|
|
|
|
|
|
|
|
- <div class="service-item">
|
|
|
|
|
|
|
+ <div class="service-item" v-if="productType == '1'">
|
|
|
<span class="service-label">签单返还</span>
|
|
<span class="service-label">签单返还</span>
|
|
|
<div class="sign-return-wrapper">
|
|
<div class="sign-return-wrapper">
|
|
|
<el-switch
|
|
<el-switch
|
|
@@ -364,7 +389,7 @@
|
|
|
active-color="#1890ff"
|
|
active-color="#1890ff"
|
|
|
@change="handleSignReturnChange"
|
|
@change="handleSignReturnChange"
|
|
|
/>
|
|
/>
|
|
|
- <div class="sign-return-select-wrapper fixed-input" v-if="valueServices.signReturn">
|
|
|
|
|
|
|
+ <div class="sign-return-select-wrapper fixed-input" v-if="valueServices.signReturn && productType == '2'">
|
|
|
<el-select
|
|
<el-select
|
|
|
v-model="signReturnType"
|
|
v-model="signReturnType"
|
|
|
placeholder="请选择凭证类型"
|
|
placeholder="请选择凭证类型"
|
|
@@ -386,7 +411,7 @@
|
|
|
</div>
|
|
</div>
|
|
|
</div>
|
|
</div>
|
|
|
|
|
|
|
|
- <div class="service-item">
|
|
|
|
|
|
|
+ <div class="service-item" v-if="productType == '2'">
|
|
|
<span class="service-label">打木架</span>
|
|
<span class="service-label">打木架</span>
|
|
|
<el-switch
|
|
<el-switch
|
|
|
v-model="valueServices.woodenFrame"
|
|
v-model="valueServices.woodenFrame"
|
|
@@ -428,15 +453,9 @@
|
|
|
<AddressBookDialog
|
|
<AddressBookDialog
|
|
|
v-model:visible="addressBookVisible"
|
|
v-model:visible="addressBookVisible"
|
|
|
:address-book-type="addressBookType"
|
|
:address-book-type="addressBookType"
|
|
|
- :address-list="addressList"
|
|
|
|
|
- :total-addresses="totalAddresses"
|
|
|
|
|
- :initial-current-page="currentPage"
|
|
|
|
|
- :initial-page-size="pageSize"
|
|
|
|
|
@confirm="applyAddress"
|
|
@confirm="applyAddress"
|
|
|
@cancel="closeAddressBook"
|
|
@cancel="closeAddressBook"
|
|
|
@close="closeAddressBook"
|
|
@close="closeAddressBook"
|
|
|
- @select-address="handleAddressSelect"
|
|
|
|
|
- @page-change="handleAddressPageChange"
|
|
|
|
|
/>
|
|
/>
|
|
|
</div>
|
|
</div>
|
|
|
</template>
|
|
</template>
|
|
@@ -448,49 +467,48 @@ import RegionCascader from '@/components/RegionCascader.vue'
|
|
|
// 导入地址簿弹窗组件
|
|
// 导入地址簿弹窗组件
|
|
|
import AddressBookDialog from './components/AddressBookDialog.vue'
|
|
import AddressBookDialog from './components/AddressBookDialog.vue'
|
|
|
import PickupTimeCascader from './components/PickupTimeCascader.vue'
|
|
import PickupTimeCascader from './components/PickupTimeCascader.vue'
|
|
|
|
|
+
|
|
|
|
|
+
|
|
|
// 导入本地 JSON 数据
|
|
// 导入本地 JSON 数据
|
|
|
-import { areaData } from '@/utils/area-data.js'
|
|
|
|
|
|
|
+import { areaData,getCodesByNames } from '@/utils/area-data.js'
|
|
|
|
|
+import { addBook } from "@/api/logistics/book"
|
|
|
|
|
+import { addOrder } from "@/api/logistics/order"
|
|
|
|
|
|
|
|
-// 根据code获取地区名称的辅助函数
|
|
|
|
|
-const getAreaNameByCode = (code) => {
|
|
|
|
|
- if (!code) return ''
|
|
|
|
|
- const area = areaData.find(item => item.code === code)
|
|
|
|
|
- return area ? area.name : ''
|
|
|
|
|
-}
|
|
|
|
|
|
|
+
|
|
|
|
|
+const { proxy } = getCurrentInstance()
|
|
|
|
|
+const { jd_logistics_product_code, sf_logistics_product_code } = proxy.useDict("jd_logistics_product_code", "sf_logistics_product_code")
|
|
|
|
|
+
|
|
|
|
|
+import { useRoute } from 'vue-router';
|
|
|
|
|
+import {updateBook} from "../../../api/logistics/book.js";
|
|
|
|
|
+
|
|
|
|
|
+const route = useRoute();
|
|
|
|
|
+
|
|
|
|
|
+const productType = ref('1') //1表示京东 2表示顺丰
|
|
|
|
|
|
|
|
// 寄件人信息
|
|
// 寄件人信息
|
|
|
const sender = reactive({
|
|
const sender = reactive({
|
|
|
- name: '',
|
|
|
|
|
- phone: '',
|
|
|
|
|
- region: [],
|
|
|
|
|
- regionInfo: {
|
|
|
|
|
- provinceCode: '',
|
|
|
|
|
- cityCode: '',
|
|
|
|
|
- districtCode: '',
|
|
|
|
|
- provinceName: '',
|
|
|
|
|
- cityName: '',
|
|
|
|
|
- districtName: '',
|
|
|
|
|
- fullName: ''
|
|
|
|
|
- },
|
|
|
|
|
- address: '',
|
|
|
|
|
- isDefault: false
|
|
|
|
|
|
|
+ addressId:'',
|
|
|
|
|
+ contactName: '',
|
|
|
|
|
+ contactPhone: '',
|
|
|
|
|
+ provinceName: '',
|
|
|
|
|
+ cityName: '',
|
|
|
|
|
+ countyName: '',
|
|
|
|
|
+ detailedAddress: '',
|
|
|
|
|
+ region: [], // 用于绑定RegionCascader组件
|
|
|
|
|
+ defaultFlag: '0' //是否默认 0非默认 1默认
|
|
|
})
|
|
})
|
|
|
|
|
|
|
|
// 收件人信息
|
|
// 收件人信息
|
|
|
const receiver = reactive({
|
|
const receiver = reactive({
|
|
|
- name: '',
|
|
|
|
|
- phone: '',
|
|
|
|
|
|
|
+ addressId:'',
|
|
|
|
|
+ contactName: '',
|
|
|
|
|
+ contactPhone: '',
|
|
|
|
|
+ provinceName: '',
|
|
|
|
|
+ cityName: '',
|
|
|
|
|
+ countyName: '',
|
|
|
|
|
+ detailedAddress: '',
|
|
|
region: [],
|
|
region: [],
|
|
|
- regionInfo: {
|
|
|
|
|
- provinceCode: '',
|
|
|
|
|
- cityCode: '',
|
|
|
|
|
- districtCode: '',
|
|
|
|
|
- provinceName: '',
|
|
|
|
|
- cityName: '',
|
|
|
|
|
- districtName: '',
|
|
|
|
|
- fullName: ''
|
|
|
|
|
- },
|
|
|
|
|
- address: ''
|
|
|
|
|
|
|
+ defaultFlag: '0'
|
|
|
})
|
|
})
|
|
|
|
|
|
|
|
// 寄件方式
|
|
// 寄件方式
|
|
@@ -499,7 +517,9 @@ const deliveryMethod = ref('pickup')
|
|
|
// 寄件方式表单(用于验证)
|
|
// 寄件方式表单(用于验证)
|
|
|
const deliveryForm = reactive({
|
|
const deliveryForm = reactive({
|
|
|
pickupTime: [],
|
|
pickupTime: [],
|
|
|
- expressType: ''
|
|
|
|
|
|
|
+ expressType: '',
|
|
|
|
|
+ pickupStartTime: '', // 新增:上门开始时间
|
|
|
|
|
+ pickupEndTime: '' // 新增:上门结束时间
|
|
|
})
|
|
})
|
|
|
|
|
|
|
|
// 寄件方式验证规则(针对PickupTimeCascader组件)
|
|
// 寄件方式验证规则(针对PickupTimeCascader组件)
|
|
@@ -558,7 +578,7 @@ const insuranceAmountError = ref('')
|
|
|
|
|
|
|
|
// 签单返还类型
|
|
// 签单返还类型
|
|
|
const signReturnType = ref('')
|
|
const signReturnType = ref('')
|
|
|
-const signReturnTypeError = ref('123')
|
|
|
|
|
|
|
+const signReturnTypeError = ref('')
|
|
|
const signReturnOptions = ref([
|
|
const signReturnOptions = ref([
|
|
|
{ label: '电子凭证', value: 'electronic' },
|
|
{ label: '电子凭证', value: 'electronic' },
|
|
|
{ label: '纸质凭证', value: 'paper' }
|
|
{ label: '纸质凭证', value: 'paper' }
|
|
@@ -569,11 +589,11 @@ const agreed = ref(false)
|
|
|
|
|
|
|
|
// 表单验证规则(已添加长度限制)
|
|
// 表单验证规则(已添加长度限制)
|
|
|
const senderRules = {
|
|
const senderRules = {
|
|
|
- name: [
|
|
|
|
|
|
|
+ contactName: [
|
|
|
{ required: true, message: '请输入寄件人姓名', trigger: 'blur' },
|
|
{ required: true, message: '请输入寄件人姓名', trigger: 'blur' },
|
|
|
{ min: 2, max: 20, message: '姓名长度在2-20个字符之间', trigger: 'blur' }
|
|
{ min: 2, max: 20, message: '姓名长度在2-20个字符之间', trigger: 'blur' }
|
|
|
],
|
|
],
|
|
|
- phone: [
|
|
|
|
|
|
|
+ contactPhone: [
|
|
|
{ required: true, message: '请输入寄件人电话', trigger: 'blur' },
|
|
{ required: true, message: '请输入寄件人电话', trigger: 'blur' },
|
|
|
{ pattern: /^1[3-9]\d{9}$/, message: '请输入正确的手机号码', trigger: 'blur' }
|
|
{ pattern: /^1[3-9]\d{9}$/, message: '请输入正确的手机号码', trigger: 'blur' }
|
|
|
],
|
|
],
|
|
@@ -590,18 +610,18 @@ const senderRules = {
|
|
|
trigger: 'change'
|
|
trigger: 'change'
|
|
|
}
|
|
}
|
|
|
],
|
|
],
|
|
|
- address: [
|
|
|
|
|
|
|
+ detailedAddress: [
|
|
|
{ required: true, message: '请输入详细地址', trigger: 'blur' },
|
|
{ required: true, message: '请输入详细地址', trigger: 'blur' },
|
|
|
{ min: 5, max: 100, message: '地址长度在5-100个字符之间', trigger: 'blur' }
|
|
{ min: 5, max: 100, message: '地址长度在5-100个字符之间', trigger: 'blur' }
|
|
|
]
|
|
]
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
const receiverRules = {
|
|
const receiverRules = {
|
|
|
- name: [
|
|
|
|
|
|
|
+ contactName: [
|
|
|
{ required: true, message: '请输入收件人姓名', trigger: 'blur' },
|
|
{ required: true, message: '请输入收件人姓名', trigger: 'blur' },
|
|
|
{ min: 2, max: 20, message: '姓名长度在2-20个字符之间', trigger: 'blur' }
|
|
{ min: 2, max: 20, message: '姓名长度在2-20个字符之间', trigger: 'blur' }
|
|
|
],
|
|
],
|
|
|
- phone: [
|
|
|
|
|
|
|
+ contactPhone: [
|
|
|
{ required: true, message: '请输入收件人电话', trigger: 'blur' },
|
|
{ required: true, message: '请输入收件人电话', trigger: 'blur' },
|
|
|
{ pattern: /^1[3-9]\d{9}$/, message: '请输入正确的手机号码', trigger: 'blur' }
|
|
{ pattern: /^1[3-9]\d{9}$/, message: '请输入正确的手机号码', trigger: 'blur' }
|
|
|
],
|
|
],
|
|
@@ -618,7 +638,7 @@ const receiverRules = {
|
|
|
trigger: 'change'
|
|
trigger: 'change'
|
|
|
}
|
|
}
|
|
|
],
|
|
],
|
|
|
- address: [
|
|
|
|
|
|
|
+ detailedAddress: [
|
|
|
{ required: true, message: '请输入详细地址', trigger: 'blur' },
|
|
{ required: true, message: '请输入详细地址', trigger: 'blur' },
|
|
|
{ min: 5, max: 100, message: '地址长度在5-100个字符之间', trigger: 'blur' }
|
|
{ min: 5, max: 100, message: '地址长度在5-100个字符之间', trigger: 'blur' }
|
|
|
]
|
|
]
|
|
@@ -685,15 +705,11 @@ const itemInfoForm = ref(null)
|
|
|
// 地址簿弹窗相关(迁移到组件)
|
|
// 地址簿弹窗相关(迁移到组件)
|
|
|
const addressBookVisible = ref(false)
|
|
const addressBookVisible = ref(false)
|
|
|
const addressBookType = ref('sender')
|
|
const addressBookType = ref('sender')
|
|
|
-const selectedAddress = ref(null)
|
|
|
|
|
|
|
|
|
|
-// 分页相关
|
|
|
|
|
-const currentPage = ref(1)
|
|
|
|
|
-const pageSize = ref(8)
|
|
|
|
|
-const totalAddresses = ref(50)
|
|
|
|
|
|
|
+// 存储原始地址信息(用于判断是否修改)
|
|
|
|
|
+const senderOriginalAddress = ref(null)
|
|
|
|
|
+const receiverOriginalAddress = ref(null)
|
|
|
|
|
|
|
|
-// 模拟地址数据
|
|
|
|
|
-const addressList = ref([])
|
|
|
|
|
|
|
|
|
|
// 监听快递类型变化
|
|
// 监听快递类型变化
|
|
|
watch(() => deliveryForm.expressType, (newVal) => {
|
|
watch(() => deliveryForm.expressType, (newVal) => {
|
|
@@ -733,16 +749,34 @@ watch(signReturnType, (newVal) => {
|
|
|
}
|
|
}
|
|
|
})
|
|
})
|
|
|
|
|
|
|
|
|
|
+
|
|
|
// 处理寄件人地区变化
|
|
// 处理寄件人地区变化
|
|
|
const handleSenderRegionChange = (regionInfo) => {
|
|
const handleSenderRegionChange = (regionInfo) => {
|
|
|
- Object.assign(sender.regionInfo, regionInfo)
|
|
|
|
|
console.log('寄件人地区信息:', regionInfo)
|
|
console.log('寄件人地区信息:', regionInfo)
|
|
|
|
|
+ // 同时更新省份、城市、区县名称
|
|
|
|
|
+ sender.provinceName = regionInfo.provinceName || ''
|
|
|
|
|
+ sender.cityName = regionInfo.cityName || ''
|
|
|
|
|
+ sender.countyName = regionInfo.countyName || ''
|
|
|
|
|
+ sender.region = [regionInfo.provinceCode,regionInfo.cityCode,regionInfo.districtCode]
|
|
|
|
|
+
|
|
|
|
|
+ // 如果是从地址簿选择的地址,修改后清空addressId
|
|
|
|
|
+ if (sender.addressId) {
|
|
|
|
|
+ sender.addressId = ''
|
|
|
|
|
+ }
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
// 处理收件人地区变化
|
|
// 处理收件人地区变化
|
|
|
const handleReceiverRegionChange = (regionInfo) => {
|
|
const handleReceiverRegionChange = (regionInfo) => {
|
|
|
- Object.assign(receiver.regionInfo, regionInfo)
|
|
|
|
|
console.log('收件人地区信息:', regionInfo)
|
|
console.log('收件人地区信息:', regionInfo)
|
|
|
|
|
+ receiver.provinceName = regionInfo.provinceName || ''
|
|
|
|
|
+ receiver.cityName = regionInfo.cityName || ''
|
|
|
|
|
+ receiver.countyName = regionInfo.countyName || ''
|
|
|
|
|
+ receiver.region = [regionInfo.provinceCode,regionInfo.cityCode,regionInfo.districtCode]
|
|
|
|
|
+
|
|
|
|
|
+ // 如果是从地址簿选择的地址,修改后清空addressId
|
|
|
|
|
+ if (receiver.addressId) {
|
|
|
|
|
+ receiver.addressId = ''
|
|
|
|
|
+ }
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
// 处理上门时间变化
|
|
// 处理上门时间变化
|
|
@@ -752,60 +786,79 @@ const handlePickupTimeChange = (value) => {
|
|
|
if (value && deliveryFormRef.value) {
|
|
if (value && deliveryFormRef.value) {
|
|
|
deliveryFormRef.value.clearValidate(['pickupTime'])
|
|
deliveryFormRef.value.clearValidate(['pickupTime'])
|
|
|
}
|
|
}
|
|
|
|
|
+
|
|
|
|
|
+ let formattedPickupStartTime = ''
|
|
|
|
|
+ let formattedPickupEndTime = ''
|
|
|
|
|
+ if (Array.isArray(deliveryForm.pickupTime) && deliveryForm.pickupTime.length > 0) {
|
|
|
|
|
+ // 假设PickupTimeCascader返回的数组结构为 [日期, 时间段]
|
|
|
|
|
+ const timeArr = deliveryForm.pickupTime[1].split('-')
|
|
|
|
|
+ console.log('deliveryForm.pickupTime===',deliveryForm.pickupTime)
|
|
|
|
|
+ console.log('timeArr===',timeArr)
|
|
|
|
|
+ console.log('deliveryForm.pickupTime[0] + timeArr[0]===',deliveryForm.pickupTime[0] + ' ' + timeArr[0])
|
|
|
|
|
+ formattedPickupStartTime = deliveryForm.pickupTime[0] + ' ' + timeArr[0] + ":00"
|
|
|
|
|
+ formattedPickupEndTime = deliveryForm.pickupTime[0] + ' ' + timeArr[1] + ":00"
|
|
|
|
|
+ console.log('formattedPickupStartTime===',formattedPickupStartTime)
|
|
|
|
|
+ console.log('formattedPickupEndTime===',formattedPickupEndTime)
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+// 处理寄件人表单变化
|
|
|
|
|
+const handleSenderChange = () => {
|
|
|
|
|
+ // 如果是从地址簿选择的地址,修改后清空addressId
|
|
|
|
|
+ if (sender.addressId) {
|
|
|
|
|
+ sender.addressId = ''
|
|
|
|
|
+ }
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+// 处理收件人表单变化
|
|
|
|
|
+const handleReceiverChange = () => {
|
|
|
|
|
+ // 如果是从地址簿选择的地址,修改后清空addressId
|
|
|
|
|
+ if (receiver.addressId) {
|
|
|
|
|
+ receiver.addressId = ''
|
|
|
|
|
+ }
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
// 方法:打开地址簿
|
|
// 方法:打开地址簿
|
|
|
const openAddressBook = (type) => {
|
|
const openAddressBook = (type) => {
|
|
|
addressBookType.value = type
|
|
addressBookType.value = type
|
|
|
- loadAddressList()
|
|
|
|
|
addressBookVisible.value = true
|
|
addressBookVisible.value = true
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
// 方法:关闭地址簿
|
|
// 方法:关闭地址簿
|
|
|
const closeAddressBook = () => {
|
|
const closeAddressBook = () => {
|
|
|
addressBookVisible.value = false
|
|
addressBookVisible.value = false
|
|
|
- selectedAddress.value = null
|
|
|
|
|
-}
|
|
|
|
|
-
|
|
|
|
|
-// 方法:处理地址选择(从组件触发)
|
|
|
|
|
-const handleAddressSelect = (address) => {
|
|
|
|
|
- selectedAddress.value = address
|
|
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
-// 方法:处理地址分页变化
|
|
|
|
|
-const handleAddressPageChange = ({ page, pageSize: size }) => {
|
|
|
|
|
- currentPage.value = page
|
|
|
|
|
- pageSize.value = size
|
|
|
|
|
- // 可以在这里重新加载数据
|
|
|
|
|
- console.log('分页变化:', page, size)
|
|
|
|
|
-}
|
|
|
|
|
|
|
|
|
|
// 方法:应用选择的地址(修改:清空验证错误)
|
|
// 方法:应用选择的地址(修改:清空验证错误)
|
|
|
const applyAddress = (address) => {
|
|
const applyAddress = (address) => {
|
|
|
if (address) {
|
|
if (address) {
|
|
|
if (addressBookType.value === 'sender') {
|
|
if (addressBookType.value === 'sender') {
|
|
|
- sender.name = address.name
|
|
|
|
|
- sender.phone = address.phone
|
|
|
|
|
- sender.region = address.region
|
|
|
|
|
- sender.address = address.address
|
|
|
|
|
- sender.isDefault = address.isDefault || false
|
|
|
|
|
-
|
|
|
|
|
- // 设置地区信息
|
|
|
|
|
- if (address.region && address.region.length > 0) {
|
|
|
|
|
- const regionInfo = {
|
|
|
|
|
- provinceCode: address.region[0] || '',
|
|
|
|
|
- cityCode: address.region[1] || '',
|
|
|
|
|
- districtCode: address.region[2] || '',
|
|
|
|
|
- provinceName: getAreaNameByCode(address.region[0]) || '',
|
|
|
|
|
- cityName: address.region[1] ? getAreaNameByCode(address.region[1]) : '',
|
|
|
|
|
- districtName: address.region[2] ? getAreaNameByCode(address.region[2]) : '',
|
|
|
|
|
- fullName: [
|
|
|
|
|
- getAreaNameByCode(address.region[0]) || '',
|
|
|
|
|
- address.region[1] ? getAreaNameByCode(address.region[1]) : '',
|
|
|
|
|
- address.region[2] ? getAreaNameByCode(address.region[2]) : ''
|
|
|
|
|
- ].filter(Boolean).join('/')
|
|
|
|
|
- }
|
|
|
|
|
- Object.assign(sender.regionInfo, regionInfo)
|
|
|
|
|
|
|
+ sender.addressId = address.addressId || ''
|
|
|
|
|
+ sender.contactName = address.contactName || ''
|
|
|
|
|
+ sender.contactPhone = address.contactPhone || ''
|
|
|
|
|
+
|
|
|
|
|
+ sender.provinceName = address.provinceName
|
|
|
|
|
+ sender.cityName = address.cityName
|
|
|
|
|
+ sender.countyName = address.countyName
|
|
|
|
|
+
|
|
|
|
|
+ sender.detailedAddress = address.detailedAddress || ''
|
|
|
|
|
+ sender.defaultFlag = address.defaultFlag || '0'
|
|
|
|
|
+
|
|
|
|
|
+ sender.region = getCodesByNames(sender.provinceName,sender.cityName,sender.countyName)
|
|
|
|
|
+ console.log('region===========', sender.region)
|
|
|
|
|
+
|
|
|
|
|
+ // 保存原始地址信息(用于判断是否修改)
|
|
|
|
|
+ senderOriginalAddress.value = {
|
|
|
|
|
+ contactName: address.contactName || '',
|
|
|
|
|
+ contactPhone: address.contactPhone || '',
|
|
|
|
|
+ provinceName: address.provinceName || '',
|
|
|
|
|
+ cityName: address.cityName || '',
|
|
|
|
|
+ countyName: address.countyName || '',
|
|
|
|
|
+ detailedAddress: address.detailedAddress || '',
|
|
|
|
|
+ defaultFlag: address.defaultFlag || '0'
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
// 清空寄件人表单的验证错误
|
|
// 清空寄件人表单的验证错误
|
|
@@ -813,27 +866,29 @@ const applyAddress = (address) => {
|
|
|
senderForm.value.clearValidate()
|
|
senderForm.value.clearValidate()
|
|
|
}
|
|
}
|
|
|
} else {
|
|
} else {
|
|
|
- receiver.name = address.name
|
|
|
|
|
- receiver.phone = address.phone
|
|
|
|
|
- receiver.region = address.region
|
|
|
|
|
- receiver.address = address.address
|
|
|
|
|
-
|
|
|
|
|
- // 设置地区信息
|
|
|
|
|
- if (address.region && address.region.length > 0) {
|
|
|
|
|
- const regionInfo = {
|
|
|
|
|
- provinceCode: address.region[0] || '',
|
|
|
|
|
- cityCode: address.region[1] || '',
|
|
|
|
|
- districtCode: address.region[2] || '',
|
|
|
|
|
- provinceName: getAreaNameByCode(address.region[0]) || '',
|
|
|
|
|
- cityName: address.region[1] ? getAreaNameByCode(address.region[1]) : '',
|
|
|
|
|
- districtName: address.region[2] ? getAreaNameByCode(address.region[2]) : '',
|
|
|
|
|
- fullName: [
|
|
|
|
|
- getAreaNameByCode(address.region[0]) || '',
|
|
|
|
|
- address.region[1] ? getAreaNameByCode(address.region[1]) : '',
|
|
|
|
|
- address.region[2] ? getAreaNameByCode(address.region[2]) : ''
|
|
|
|
|
- ].filter(Boolean).join('/')
|
|
|
|
|
- }
|
|
|
|
|
- Object.assign(receiver.regionInfo, regionInfo)
|
|
|
|
|
|
|
+ receiver.addressId = address.addressId || ''
|
|
|
|
|
+ receiver.contactName = address.contactName || ''
|
|
|
|
|
+ receiver.contactPhone = address.contactPhone || ''
|
|
|
|
|
+
|
|
|
|
|
+ receiver.provinceName = address.provinceName
|
|
|
|
|
+ receiver.cityName = address.cityName
|
|
|
|
|
+ receiver.countyName = address.countyName
|
|
|
|
|
+
|
|
|
|
|
+ receiver.detailedAddress = address.detailedAddress || ''
|
|
|
|
|
+ receiver.defaultFlag = address.defaultFlag || '0'
|
|
|
|
|
+
|
|
|
|
|
+ receiver.region = getCodesByNames(receiver.provinceName,receiver.cityName,receiver.countyName)
|
|
|
|
|
+ console.log('region===========', receiver.region)
|
|
|
|
|
+
|
|
|
|
|
+ // 保存原始地址信息(用于判断是否修改)
|
|
|
|
|
+ receiverOriginalAddress.value = {
|
|
|
|
|
+ contactName: address.contactName || '',
|
|
|
|
|
+ contactPhone: address.contactPhone || '',
|
|
|
|
|
+ provinceName: address.provinceName || '',
|
|
|
|
|
+ cityName: address.cityName || '',
|
|
|
|
|
+ countyName: address.countyName || '',
|
|
|
|
|
+ detailedAddress: address.detailedAddress || '',
|
|
|
|
|
+ defaultFlag: address.defaultFlag || '0'
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
// 清空收件人表单的验证错误
|
|
// 清空收件人表单的验证错误
|
|
@@ -841,7 +896,6 @@ const applyAddress = (address) => {
|
|
|
receiverForm.value.clearValidate()
|
|
receiverForm.value.clearValidate()
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
-
|
|
|
|
|
ElMessage.success('已应用选择的地址')
|
|
ElMessage.success('已应用选择的地址')
|
|
|
} else {
|
|
} else {
|
|
|
ElMessage.warning('请先选择一个地址')
|
|
ElMessage.warning('请先选择一个地址')
|
|
@@ -857,11 +911,9 @@ const addToAddressBook = async (type) => {
|
|
|
if (type === 'sender') {
|
|
if (type === 'sender') {
|
|
|
formRef = senderForm.value
|
|
formRef = senderForm.value
|
|
|
formData = sender
|
|
formData = sender
|
|
|
- regionInfo = sender.regionInfo
|
|
|
|
|
} else {
|
|
} else {
|
|
|
formRef = receiverForm.value
|
|
formRef = receiverForm.value
|
|
|
formData = receiver
|
|
formData = receiver
|
|
|
- regionInfo = receiver.regionInfo
|
|
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
if (!formRef) return
|
|
if (!formRef) return
|
|
@@ -878,80 +930,33 @@ const addToAddressBook = async (type) => {
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
const addressData = {
|
|
const addressData = {
|
|
|
- name: formData.name,
|
|
|
|
|
- phone: formData.phone,
|
|
|
|
|
- region: formData.region,
|
|
|
|
|
- address: formData.address,
|
|
|
|
|
- fullAddress: `${regionInfo.fullName || ''}${formData.address}`,
|
|
|
|
|
- provinceName: regionInfo.provinceName || '',
|
|
|
|
|
- cityName: regionInfo.cityName || '',
|
|
|
|
|
- districtName: regionInfo.districtName || '',
|
|
|
|
|
- isDefault: type === 'sender' ? formData.isDefault : false,
|
|
|
|
|
|
|
+ addressId: formData.addressId || '', // 如果有addressId则传递,为空则新增
|
|
|
|
|
+ contactName: formData.contactName,
|
|
|
|
|
+ contactPhone: formData.contactPhone,
|
|
|
|
|
+ detailedAddress: formData.detailedAddress,
|
|
|
|
|
+ provinceName: formData.provinceName || '',
|
|
|
|
|
+ cityName: formData.cityName || '',
|
|
|
|
|
+ countyName: formData.countyName || '',
|
|
|
|
|
+ defaultFlag: type === 'sender' ? formData.defaultFlag : '0',
|
|
|
tag: 'custom',
|
|
tag: 'custom',
|
|
|
- createTime: new Date().toLocaleString()
|
|
|
|
|
}
|
|
}
|
|
|
-
|
|
|
|
|
- console.log(`保存${type === 'sender' ? '寄件人' : '收件人'}地址到地址簿:`, addressData)
|
|
|
|
|
- ElMessage.success('地址已添加到地址簿')
|
|
|
|
|
-
|
|
|
|
|
- if (type === 'sender' && formData.isDefault) {
|
|
|
|
|
- console.log('更新其他地址的默认状态')
|
|
|
|
|
- }
|
|
|
|
|
-}
|
|
|
|
|
-
|
|
|
|
|
-// 方法:加载地址列表
|
|
|
|
|
-const loadAddressList = () => {
|
|
|
|
|
- const mockAddresses = []
|
|
|
|
|
- const tags = ['home', 'company', 'custom']
|
|
|
|
|
-
|
|
|
|
|
- // 从本地数据中获取示例省市区代码
|
|
|
|
|
- const provinces = areaData.filter(item => item.type === 0)
|
|
|
|
|
- const cities = areaData.filter(item => item.type === 1)
|
|
|
|
|
- const districts = areaData.filter(item => item.type === 2)
|
|
|
|
|
-
|
|
|
|
|
- for (let i = 1; i <= totalAddresses.value; i++) {
|
|
|
|
|
- // 随机选择一个省市区
|
|
|
|
|
- const randomProvince = provinces[i % provinces.length]
|
|
|
|
|
- const provinceCities = cities.filter(city => city.parent_code === randomProvince.code)
|
|
|
|
|
- const randomCity = provinceCities[i % (provinceCities.length || 1)]
|
|
|
|
|
- const cityDistricts = districts.filter(district =>
|
|
|
|
|
- randomCity && district.parent_code === randomCity.code
|
|
|
|
|
- )
|
|
|
|
|
- const randomDistrict = cityDistricts[i % (cityDistricts.length || 1)]
|
|
|
|
|
-
|
|
|
|
|
- const region = [randomProvince.code]
|
|
|
|
|
- if (randomCity) region.push(randomCity.code)
|
|
|
|
|
- if (randomDistrict) region.push(randomDistrict.code)
|
|
|
|
|
-
|
|
|
|
|
- // 获取地区名称
|
|
|
|
|
- const provinceName = getAreaNameByCode(randomProvince.code) || '未知省份'
|
|
|
|
|
- const cityName = randomCity ? getAreaNameByCode(randomCity.code) : ''
|
|
|
|
|
- const districtName = randomDistrict ? getAreaNameByCode(randomDistrict.code) : ''
|
|
|
|
|
-
|
|
|
|
|
- const streets = ['科技路', '创业大街', '创新路', '软件园', '创业园', '产业园']
|
|
|
|
|
- const streetNumber = `${i % 100}号`
|
|
|
|
|
-
|
|
|
|
|
- const addressDetail = `${streets[i % streets.length]}${streetNumber}`
|
|
|
|
|
- const temp11 = i % 2 == 0 ? "dddddddddddddddddddddddddddddddddddddvxcvcxv打发手动阀手动阀dddddddddddddddddddddd" : ""
|
|
|
|
|
- const fullAddress = `${provinceName}${cityName}${districtName}${addressDetail}${temp11}`
|
|
|
|
|
-
|
|
|
|
|
- mockAddresses.push({
|
|
|
|
|
- id: i,
|
|
|
|
|
- name: `用户${i}`,
|
|
|
|
|
- phone: `138001380${String(i).padStart(2, '0')}`,
|
|
|
|
|
- region: region,
|
|
|
|
|
- address: addressDetail,
|
|
|
|
|
- fullAddress: fullAddress,
|
|
|
|
|
- provinceName: provinceName,
|
|
|
|
|
- cityName: cityName,
|
|
|
|
|
- districtName: districtName,
|
|
|
|
|
- isDefault: i === 1,
|
|
|
|
|
- tag: tags[i % 3],
|
|
|
|
|
- createTime: new Date(Date.now() - i * 86400000).toLocaleDateString()
|
|
|
|
|
- })
|
|
|
|
|
|
|
+ try {
|
|
|
|
|
+ // 如果是新增,更新addressId
|
|
|
|
|
+ let response = {}
|
|
|
|
|
+ if (formData.addressId) {
|
|
|
|
|
+ response = await updateBook(addressData)
|
|
|
|
|
+ }else {
|
|
|
|
|
+ response = await addBook(addressData)
|
|
|
|
|
+ }
|
|
|
|
|
+ if (response.code === 200) {
|
|
|
|
|
+ ElMessage.success('地址保存成功')
|
|
|
|
|
+ } else {
|
|
|
|
|
+ ElMessage.error(response.msg || '地址保存失败')
|
|
|
|
|
+ }
|
|
|
|
|
+ } catch (error) {
|
|
|
|
|
+ console.error('保存地址失败:', error)
|
|
|
|
|
+ ElMessage.error('地址保存失败')
|
|
|
}
|
|
}
|
|
|
-
|
|
|
|
|
- addressList.value = mockAddresses
|
|
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
// 方法:处理保价开关变化
|
|
// 方法:处理保价开关变化
|
|
@@ -1019,7 +1024,7 @@ const validateFormData = () => {
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
// 验证签单返还类型
|
|
// 验证签单返还类型
|
|
|
- if (valueServices.signReturn && !signReturnType.value) {
|
|
|
|
|
|
|
+ if (valueServices.signReturn && !signReturnType.value && productType == '2') {
|
|
|
signReturnTypeError.value = '请选择签单返还凭证类型'
|
|
signReturnTypeError.value = '请选择签单返还凭证类型'
|
|
|
isValid = false
|
|
isValid = false
|
|
|
}
|
|
}
|
|
@@ -1095,58 +1100,92 @@ const submitOrder = async () => {
|
|
|
return
|
|
return
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
- // 格式化上门时间数据
|
|
|
|
|
- let formattedPickupTime = ''
|
|
|
|
|
|
|
+
|
|
|
|
|
+ let formattedPickupStartTime = ''
|
|
|
|
|
+ let formattedPickupEndTime = ''
|
|
|
if (Array.isArray(deliveryForm.pickupTime) && deliveryForm.pickupTime.length > 0) {
|
|
if (Array.isArray(deliveryForm.pickupTime) && deliveryForm.pickupTime.length > 0) {
|
|
|
// 假设PickupTimeCascader返回的数组结构为 [日期, 时间段]
|
|
// 假设PickupTimeCascader返回的数组结构为 [日期, 时间段]
|
|
|
- formattedPickupTime = deliveryForm.pickupTime.join(' ')
|
|
|
|
|
|
|
+ const timeArr = deliveryForm.pickupTime[1].split('-')
|
|
|
|
|
+ console.log('deliveryForm.pickupTime===',deliveryForm.pickupTime)
|
|
|
|
|
+ console.log('timeArr===',timeArr)
|
|
|
|
|
+ console.log('deliveryForm.pickupTime[0] + timeArr[0]===',deliveryForm.pickupTime[0] + ' ' + timeArr[0])
|
|
|
|
|
+ formattedPickupStartTime = deliveryForm.pickupTime[0] + ' ' + timeArr[0] + ":00"
|
|
|
|
|
+ formattedPickupEndTime = deliveryForm.pickupTime[0] + ' ' + timeArr[1] + ":00"
|
|
|
|
|
+ console.log('formattedPickupStartTime===',formattedPickupStartTime)
|
|
|
|
|
+ console.log('formattedPickupEndTime===',formattedPickupEndTime)
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
- // 构建完整的订单数据
|
|
|
|
|
- const orderData = {
|
|
|
|
|
- sender: {
|
|
|
|
|
- name: sender.name,
|
|
|
|
|
- phone: sender.phone,
|
|
|
|
|
- region: sender.region,
|
|
|
|
|
- regionInfo: { ...sender.regionInfo },
|
|
|
|
|
- address: sender.address,
|
|
|
|
|
- isDefault: sender.isDefault,
|
|
|
|
|
- fullAddress: `${sender.regionInfo.fullName || ''}${sender.address}`
|
|
|
|
|
- },
|
|
|
|
|
- receiver: {
|
|
|
|
|
- name: receiver.name,
|
|
|
|
|
- phone: receiver.phone,
|
|
|
|
|
- region: receiver.region,
|
|
|
|
|
- regionInfo: { ...receiver.regionInfo },
|
|
|
|
|
- address: receiver.address,
|
|
|
|
|
- fullAddress: `${receiver.regionInfo.fullName || ''}${receiver.address}`
|
|
|
|
|
- },
|
|
|
|
|
- deliveryMethod: deliveryMethod.value,
|
|
|
|
|
- expressType: deliveryForm.expressType,
|
|
|
|
|
- pickupTime: formattedPickupTime,
|
|
|
|
|
- pickupTimeDetails: deliveryForm.pickupTime, // 保留原始数据
|
|
|
|
|
- itemInfo: { ...itemInfo },
|
|
|
|
|
- valueServices: {
|
|
|
|
|
|
|
+
|
|
|
|
|
+ // <!-- 增值服务:-->
|
|
|
|
|
+ // <!-- 包装:isPack-->
|
|
|
|
|
+ // <!-- 保价:guaranteeMoney-->
|
|
|
|
|
+ // <!-- 超长超重:isOverLongWeight-->
|
|
|
|
|
+ // <!-- 签单返还:isReceiptCollect-->
|
|
|
|
|
+ // <!-- 打木架:isWoodenCrate-->
|
|
|
|
|
+ // <!-- 京东 包装 保价 签单反 保价有的话传值 没有的话传 空 签单反 没筛选了-->
|
|
|
|
|
+ let services = {
|
|
|
|
|
+ isPack:valueServices.isPack,
|
|
|
|
|
+ guaranteeMoney:valueServices.insurance ? insuranceAmount.value : null,
|
|
|
|
|
+ isReceiptCollect: valueServices.signReturn ? signReturnType.value : null
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ if(productType == '1'){ //京东
|
|
|
|
|
+ services = {
|
|
|
|
|
+ isPack:valueServices.isPack,
|
|
|
|
|
+ guaranteeMoney:valueServices.insurance ? insuranceAmount.value : null,
|
|
|
|
|
+ isReceiptCollect: valueServices.signReturn ? signReturnType.value : null
|
|
|
|
|
+ }
|
|
|
|
|
+ }else {
|
|
|
|
|
+ services = {
|
|
|
...valueServices,
|
|
...valueServices,
|
|
|
insuranceAmount: valueServices.insurance ? insuranceAmount.value : null,
|
|
insuranceAmount: valueServices.insurance ? insuranceAmount.value : null,
|
|
|
signReturnType: valueServices.signReturn ? signReturnType.value : null
|
|
signReturnType: valueServices.signReturn ? signReturnType.value : null
|
|
|
- },
|
|
|
|
|
- agreement: agreed.value,
|
|
|
|
|
- createTime: new Date().toISOString()
|
|
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ // 构建完整的订单数据
|
|
|
|
|
+ const orderData = {
|
|
|
|
|
+ orderType: productType.value, //1-非时效件(京东),2-时效件(顺丰)
|
|
|
|
|
+ senderName:sender.contactName,
|
|
|
|
|
+ senderPhone:sender.contactPhone,
|
|
|
|
|
+ senderProvince:sender.provinceName,
|
|
|
|
|
+ senderCity:sender.cityName,
|
|
|
|
|
+ senderCounty:sender.countyName,
|
|
|
|
|
+ senderAddress:sender.detailedAddress,
|
|
|
|
|
+ receiverName:sender.contactName,
|
|
|
|
|
+ receiverPhone:sender.contactPhone,
|
|
|
|
|
+ receiverProvince:sender.provinceName,
|
|
|
|
|
+ receiverCity:sender.cityName,
|
|
|
|
|
+ receiverCounty:sender.countyName,
|
|
|
|
|
+ receiverAddress:sender.detailedAddress,
|
|
|
|
|
+
|
|
|
|
|
+ goodsName:itemInfo.type,
|
|
|
|
|
+ goodsWeight:itemInfo.weight,
|
|
|
|
|
+ goodsVolume:itemInfo.volume,
|
|
|
|
|
+ goodsQty:itemInfo.quantity,
|
|
|
|
|
+
|
|
|
|
|
+ sendStartTime:formattedPickupStartTime,//上门取件时间
|
|
|
|
|
+ sendEndTime:formattedPickupEndTime,//上门取件时间
|
|
|
|
|
+
|
|
|
|
|
+ productCode: deliveryForm.expressType, //快递类型
|
|
|
|
|
+ addedService: JSON.stringify(services),
|
|
|
|
|
+
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
console.log('提交订单数据:', orderData)
|
|
console.log('提交订单数据:', orderData)
|
|
|
- ElMessage.success('订单提交成功!')
|
|
|
|
|
|
|
|
|
|
- // 这里可以添加实际提交到后端的逻辑
|
|
|
|
|
- // try {
|
|
|
|
|
- // const response = await axios.post('/api/orders', orderData)
|
|
|
|
|
- // console.log('订单提交成功:', response.data)
|
|
|
|
|
- // ElMessage.success('订单创建成功!')
|
|
|
|
|
- // } catch (error) {
|
|
|
|
|
- // console.error('订单提交失败:', error)
|
|
|
|
|
- // ElMessage.error('订单提交失败,请重试')
|
|
|
|
|
- // }
|
|
|
|
|
|
|
+ try {
|
|
|
|
|
+ const response = await addOrder(orderData)
|
|
|
|
|
+ if(response.code == 200){
|
|
|
|
|
+ console.log('订单提交成功:', response.data)
|
|
|
|
|
+ ElMessage.success('订单创建成功!')
|
|
|
|
|
+ } else {
|
|
|
|
|
+ ElMessage.error(response.msg || '订单创建失败!')
|
|
|
|
|
+ }
|
|
|
|
|
+ } catch (error) {
|
|
|
|
|
+ console.error('订单提交失败:', error)
|
|
|
|
|
+ ElMessage.error('订单提交失败,请重试')
|
|
|
|
|
+ }
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
// 初始化加载
|
|
// 初始化加载
|
|
@@ -1154,8 +1193,8 @@ onMounted(() => {
|
|
|
console.log('快递下单页面已加载')
|
|
console.log('快递下单页面已加载')
|
|
|
console.log('省市区数据总数:', areaData.length)
|
|
console.log('省市区数据总数:', areaData.length)
|
|
|
|
|
|
|
|
- // 初始化地址列表
|
|
|
|
|
- loadAddressList()
|
|
|
|
|
|
|
+ productType.value = route.query.productType || '1';
|
|
|
|
|
+ console.log("===productType=", productType.value)
|
|
|
})
|
|
})
|
|
|
</script>
|
|
</script>
|
|
|
|
|
|