Commit b7c4bdde authored by dragondean@qq.com's avatar dragondean@qq.com

改bug

parent fd79416a
<template>
<div>
<el-select v-model="formData.country" :disabled="readonly">
<el-select v-model="formData.country" :disabled="readonly" :style="{width: inputWidth}">
<el-option v-for="(item) in treeList" :key="item.id" :value="item.id" :label="$l(item, 'title')" />
</el-select>
<el-select v-model="formData.province" class="ml-10" :disabled="readonly">
<el-select v-model="formData.province" class="ml-10" :disabled="readonly" :style="{width: inputWidth}">
<el-option v-for="(item) in provinceList" :key="item.id" :value="item.id" :label="$l(item, 'title')" />
</el-select>
<el-select v-model="formData.city" class="ml-10" :disabled="readonly">
<el-select v-model="formData.city" class="ml-10" :disabled="readonly" :style="{width: inputWidth}">
<el-option v-for="(item) in cityList" :key="item.id" :value="item.id" :label="$l(item, 'title')" />
</el-select>
</div>
......@@ -19,7 +19,8 @@ export default {
country: Number,
city: Number,
province: Number,
readonly: Boolean
readonly: Boolean,
inputWidth: String
},
data() {
return {
......@@ -60,9 +61,12 @@ export default {
},
'formData.country'(country) {
this.$emit('countryChange', country)
this.formData.province = null
this.formData.city = null
},
'formData.province'(province) {
this.$emit('provinceChange', province)
this.formData.city = null
}
},
created() {
......
......@@ -807,6 +807,7 @@ export default {
channel: 'channel',
channelNotice: 'Please select the shipping channel',
departure: '*departure',
destCountryRules: 'destination country must be chosen',
departureRules: 'The place of origin is mandatory',
departureNotice: 'Please select the place of departure',
objective: '*objective',
......@@ -952,5 +953,7 @@ export default {
'入仓箱数': 'Number of inbound boxes',
'已放箱数': 'Number of boxes placed',
'收货人': 'Consignee',
'收货人电话': 'Consignee telephone number'
'收货人电话': 'Consignee telephone number',
'如需海外仓服务,请联系客服,服务热线:{tel}': '如需海外仓服务,请联系客服,服务热线:{tel}',
'搜索': 'Search'
}
......@@ -824,6 +824,7 @@ export default {
channel: '出货渠道',
channelNotice: '请选择出货渠道',
departure: '始发城市',
destCountryRules: '目的国必选',
departureRules: '始发城市必选',
departureNotice: '请选择始发地',
objective: '目的城市',
......@@ -923,5 +924,6 @@ export default {
products: '商品列表',
productCount: '总件数',
copy: '复制订单信息'
}
},
'如需海外仓服务,请联系客服,服务热线:{tel}': '如需海外仓服务,请联系客服,服务热线:{tel}'
}
......@@ -28,7 +28,7 @@
/>
</div>
<el-form ref="form" :model="form" :rules="rules">
<el-form ref="form" :model="form" :rules="rules" :validate-on-rule-change="false">
<section-title lang-key="delivery.header">
{{$t('delivery.consigneeName')}}
<el-radio-group v-if="noConsignee" v-model="hasConsignee">
......@@ -45,6 +45,7 @@
prop="consigneeName"
>
<el-input
:disabled="!hasConsignee"
v-model="form.consigneeName"
:placeholder="$t('delivery.consigneeNameNotice')"
style="width: 200px"
......@@ -53,6 +54,7 @@
style="margin-left: 5px"
type="text"
@click="openConsignee"
:disabled="!hasConsignee"
>{{ $t("delivery.openConsignee") }}</el-button>
</el-form-item>
</el-col>
......@@ -62,6 +64,7 @@
prop="consigneePhone"
>
<el-select
:disabled="!hasConsignee"
v-model="form.countryCode"
style="width: 100px"
@change="(val) => changeArea(val, form.consigneePhone)"
......@@ -76,6 +79,7 @@
</el-option>
</el-select>
<el-input
:disabled="!hasConsignee"
v-model="form.consigneePhone"
:placeholder="$t('delivery.consigneePhoneNotice')"
style="width: 180px"
......@@ -96,6 +100,7 @@
prop="consigneeNameEn"
>
<el-input
:disabled="!hasConsignee"
v-model="form.consigneeNameEn"
:placeholder="$t('delivery.consigneeNameNoticeEn')"
style="width: 200px"
......@@ -105,6 +110,7 @@
<el-col :span="6">
<el-form-item :label="$t('delivery.consigneeCompany')">
<el-input
:disabled="!hasConsignee"
v-model="form.consigneeCompany"
:placeholder="$t('delivery.consigneeCompanyNotice')"
style="width: 150px"
......@@ -114,6 +120,7 @@
<el-col :span="6">
<el-form-item :label="$t('orderdetail.consigneeCompanyEn')">
<el-input
:disabled="!hasConsignee"
v-model="form.consigneeCompanyEn"
:placeholder="$t('delivery.consigneeCompanyNoticeEn')"
style="width: 150px"
......@@ -123,6 +130,7 @@
<el-col :span="6">
<el-form-item label="Email">
<el-input
:disabled="!hasConsignee"
v-model="form.consigneeEmail"
:placeholder="$t('delivery.emailNotice')"
style="width: 200px"
......@@ -138,7 +146,7 @@
<el-descriptions :column="2" border>
<el-descriptions-item
:label="$t('delivery.transport')"
label-style="width:100px"
:label-style="{width: '100px'}"
>
<span
slot="label"
......@@ -164,7 +172,7 @@
<!--始发城市-->
<el-descriptions-item
:label="$t('delivery.departure')"
label-style="width:100px"
:label-style="{width: '100px'}"
>
<span
slot="label"
......@@ -195,7 +203,7 @@
<!--目的国-->
<el-descriptions-item
:label="$t('delivery.objective')"
label-style="width:100px"
:label-style="{width: '100px'}"
>
<span
slot="label"
......@@ -227,7 +235,7 @@
<!--目的城市-->
<el-descriptions-item
:label="$t('delivery.objective')"
label-style="width:100px"
:label-style="{width: '100px'}"
>
<span
slot="label"
......@@ -260,7 +268,7 @@
<el-descriptions-item
:label="$t('delivery.router')"
:span="3"
label-style="width:100px"
:label-style="{width: '100px'}"
>
<span
slot="label"
......@@ -296,7 +304,7 @@
.cssClass == 'channel'
"
:label="$t('delivery.channel')"
label-style="width:100px"
:label-style="{width: '100px'}"
>
<span slot="label">{{ $t("delivery.channel") }}</span>
<el-form-item
......@@ -742,7 +750,7 @@
required
:error="$t('delivery.marksRules')"
>
<el-input v-model="form.marks" placeholder="" />
<el-input v-model="form.marks" placeholder="" class="w-150" />
</el-form-item>
</el-descriptions-item>
<!--单证报关-->
......@@ -799,6 +807,7 @@
:type="DICT_TYPE.INFRA_BOOLEAN_STRING"
formatter="bool"
form-type="radio"
:disabled="!hasConsignee"
/>
</el-form-item>
</el-descriptions-item>
......@@ -851,6 +860,7 @@
required
>
<dict-selector
class="w-150"
v-model="form.warehouseType"
:type="DICT_TYPE.ECW_WAREHOUSING_TYPE"
defaultable
......@@ -863,7 +873,7 @@
<el-checkbox label="" v-model="form.isExternalWarehouse" @change="form.isExternalWarehouse=$event" :disabled="false"></el-checkbox>
</el-form-item>
<div v-if="form.isExternalWarehouse">
<div v-for="(item, index) in form.externalWarehouseDtoList" class="" :key="index"
<div v-for="(item, index) in form.externalWarehouseDtoList" :key="index"
style="border-bottom: 1px solid #ccc; margin-bottom: 10px">
<div class="flex-1">
<el-form-item :label="$t('装货时间')"
......@@ -872,7 +882,7 @@
required: true, message: '装货时间不能为空', trigger: 'blur'
}"
>
<el-date-picker v-model="item.estLoadingTime" value-format="yyyy-MM-dd HH:mm:ss" class="w-200"></el-date-picker>
<el-date-picker v-model="item.estLoadingTime" value-format="yyyy-MM-dd HH:mm:ss" class="w-150"></el-date-picker>
</el-form-item>
</div>
<div class="flex-1">
......@@ -882,7 +892,7 @@
required: true, message: '装货地址不能为空', trigger: 'blur'
}"
>
<el-input v-model="item.loadingAddress" placeholder="" class="w-200"></el-input>
<el-input v-model="item.loadingAddress" placeholder="" class="w-150"></el-input>
</el-form-item>
</div>
</div>
......@@ -907,6 +917,7 @@
:error="$t('delivery.deliveryDateRules')"
>
<el-date-picker
class="w-150"
v-model="form.deliveryDate"
value-format="yyyy-MM-dd HH:mm:ss"
/>
......@@ -972,6 +983,7 @@
required
>
<dict-selector
class="w-150"
v-model="form.harvestMethod"
:type="DICT_TYPE.ECW_HARVEST_METHOD"
:filter="(item) => item.value == 1 || homeDeliveryService"
......@@ -995,12 +1007,9 @@
prop="city"
>
<area-selector
:country="
form.consigneeVO ? form.consigneeVO.country : undefined
"
:province="
form.consigneeVO ? form.consigneeVO.province : undefined
"
input-width="150px"
:country="form.consigneeVO ? form.consigneeVO.country : undefined"
:province="form.consigneeVO ? form.consigneeVO.province : undefined"
:city="form.consigneeVO ? form.consigneeVO.city : undefined"
@countryChange="onAreaChange('country', $event)"
@provinceChange="onAreaChange('province', $event)"
......@@ -1029,7 +1038,7 @@
<template #header>
<section-title :title="$t('其他')"></section-title>
</template>
<el-descriptions :column="2" label-style="width: 120px" border>
<el-descriptions :column="2" :label-style="{width: '100px'}" border>
<el-descriptions-item>
<span
slot="label"
......@@ -1055,7 +1064,7 @@
<el-descriptions-item :label="$t('特殊要求备注')">
<!--包装备注-->
<el-form-item prop="packageRemarks">
<el-input v-model="form.packageRemarks" type="textarea" class="w-200" />
<el-input v-model="form.packageRemarks" type="textarea" class="w-150" />
</el-form-item>
</el-descriptions-item>
<el-descriptions-item :span="2" :label="$t('delivery.number')">
......@@ -1064,13 +1073,13 @@
<el-input
v-model="form.number"
:placeholder="$t('delivery.numberNotice')"
>
<el-button
slot="append"
type="primary"
@click="getOrderCourierNumber"
>{{ $t("delivery.getNumber") }}</el-button>
</el-input>
class="w-150"
></el-input>
<el-button
class="ml-10"
type="default"
@click="getOrderCourierNumber"
>{{ $t("delivery.getNumber") }}</el-button>
</el-form-item>
</el-descriptions-item>
<template v-if="isAir">
......@@ -1120,7 +1129,7 @@
</template>
<!--出单方式,新的原型没有提现,暂时隐藏显示-->
<el-descriptions-item :label="$t('delivery.issuingMethod')" v-false>
<el-descriptions-item :label="$t('delivery.issuingMethod')" v-if="false">
<span
slot="label"
><span style="color: red">*</span>{{ $t("delivery.issuingMethod") }}</span>
......@@ -1181,14 +1190,19 @@
v-if="editFlag || form.status == 0"
type="primary"
@click="submitForm(2)"
:disabled="isOverSeaWareHouse"
>{{ $t("提交") }}</el-button>
<el-button
v-if="form.status == 2 && !editFlag"
type="primary"
@click="submitForm(2, false)"
:disabled="isOverSeaWareHouse"
>{{ $t("提交") }}</el-button>
<el-button @click="$router.back()">{{ $t("common.cancel") }}</el-button>
</el-form-item>
<div style="padding-bottom: 20px; font-size: 12px; color: red" v-if="isOverSeaWareHouse">
{{$t('如需海外仓服务,请联系客服,服务热线:{tel}', {tel: '400-900-9962'})}}
</div>
</el-form>
<!-- 收货人列表弹窗 -->
<el-dialog
......@@ -1198,6 +1212,21 @@
append-to-body
:close-on-click-modal="false"
>
<div class="mb-10">
<el-input
class="w-200"
v-model="customeParams.searchKey"
placeholder="请输入姓名/公司/电话"
clearable
@clear="getCustomerList(true)"
@change="getCustomerList(true)"
/>
<el-button
type="primary"
@click="getCustomerList(true)"
style="margin-left: 10px"
>{{ $t("搜索") }}</el-button>
</div>
<div v-if="!addCustomerShow">
<el-table
ref="consigneeTable"
......@@ -1616,7 +1645,8 @@ export default {
// 查询参数
customeParams: {
page: 1,
rows: 10
rows: 10,
searchKey: ''
},
editFlag: true,
consigneeVisdle: false,
......@@ -1625,57 +1655,6 @@ export default {
defaultContact: false
},
groupList: [],
rules: {
consigneeName: [
{
required: true,
message: this.$t('delivery.consigneeNameNotice'),
trigger: 'blur'
}
],
consigneeCompany: [
{
required: true,
message: this.$t('delivery.consigneeCompanyNotice'),
trigger: 'blur'
}
],
consigneePhone: [
{
required: true,
message: this.$t('delivery.consigneePhoneNotice'),
trigger: 'blur'
},
{ pattern: /^[0-9]\d*$/, message: this.$t('customer.phoneRules2') }
],
transportId: [
{
required: true,
message: this.$t('delivery.transportNotice'),
trigger: 'blur'
}
],
marks: [
{ required: true, message: this.$t('delivery.marksRules') },
// { pattern: /[A-z]/, message: this.$t('delivery.marksRules1') }
],
departureId: [
{ required: true, message: this.$t('delivery.departureRules') }
],
objectiveId: [
{ required: true, message: this.$t('delivery.objectiveRules') }
],
lineId: [{ required: true, message: this.$t('delivery.router') }],
deliveryDate: [
{ required: true, message: this.$t('delivery.deliveryDateRules') }
],
consigneeAddress: [
{ required: true, message: this.$t('delivery.addressdetailRules') }
],
city: [
{ required: true, message: this.$t('delivery.deliveryaddressRules') }
]
},
addCustomerRules: {
name: [
{
......@@ -1720,7 +1699,9 @@ export default {
// 仓库区域树形列表
warehouseTreeList: [],
// 选择的路线对象
selectedRouter: null
selectedRouter: null,
// 客户搜索关键词
customerSearchKey: ''
}
},
computed: {
......@@ -1871,6 +1852,68 @@ export default {
showDestCityList(){
if(!this.form.destCountryId) return this.destCityList
return this.destCityList.filter(item => item.guojia === this.form.destCountryId) || []
},
isOverSeaWareHouse(){
return this.form.type?.indexOf('2') > -1
},
rules(){
const rules = {
transportId: [
{
required: true,
message: this.$t('delivery.transportNotice'),
trigger: 'blur'
}
],
marks: [
{ required: true, message: this.$t('delivery.marksRules') },
// { pattern: /[A-z]/, message: this.$t('delivery.marksRules1') }
],
destCountryId: [
{ required: true, message: this.$t('delivery.destCountryRules') }
],
departureId: [
{ required: true, message: this.$t('delivery.departureRules') }
],
objectiveId: [
{ required: true, message: this.$t('delivery.objectiveRules') }
],
lineId: [{ required: true, message: this.$t('delivery.router') }],
deliveryDate: [
{ required: true, message: this.$t('delivery.deliveryDateRules') }
],
consigneeAddress: [
{ required: true, message: this.$t('delivery.addressdetailRules') }
],
city: [
{ required: true, message: this.$t('delivery.deliveryaddressRules') }
]
}
if(this.hasConsignee){
rules.consigneeName = [
{
required: true,
message: this.$t('delivery.consigneeNameNotice'),
trigger: 'blur'
}
]
rules.consigneeCompany = [
{
required: true,
message: this.$t('delivery.consigneeCompanyNotice'),
trigger: 'blur'
}
]
rules.consigneePhone = [
{
required: true,
message: this.$t('delivery.consigneePhoneNotice'),
trigger: 'blur'
},
{ pattern: /^[0-9]\d*$/, message: this.$t('customer.phoneRules2') }
]
}
return rules
}
},
watch: {
......@@ -1920,7 +1963,7 @@ export default {
// 服务
'form.type'(type){
if(type.indexOf('2') > -1){
this.$alert(this.$t('如需海外仓服务,请联系客服,服务热线:400-900-9962'))
this.$alert(this.$t('如需海外仓服务,请联系客服,服务热线:{tel}', {tel: '400-900-9962'}))
}
},
'form.isExternalWarehouse'(isExternalWarehouse){
......@@ -1952,9 +1995,48 @@ export default {
if (!enable && this.form.harvestMethod != 1) {
this.form.harvestMethod = 1
}
},
hasConsignee(){
// 无收货人,默认发货人付款,而且必须控货
if(!this.hasConsignee){
this.form.drawee = 1
this.form.isCargoControl = true
this.$refs.form.clearValidate("consigneeName")
this.$refs.form.clearValidate("consigneePhone")
this.$refs.form.clearValidate("consigneeCompany")
}
}
},
async created() {
await this.getCustomerList()
await getCountryList().then((r) => {
this.countryList = r.data
})
await getListTree({treeType: 1}).then(res => {
this.dstCountryList = res.data
})
await getData({ page: 1, rows: 100, dictType: 'transport_type' }).then((r) => {
this.transportTypeList = r.data.list
})
await getData({ page: 1, rows: 100, dictType: 'coupon_type' }).then((r) => {
this.couponTypeList = r.data.list
})
await getGroupList({ page: 1, rows: 100 }).then((r) => {
this.groupList = r.data.list
this.groupList.push({ id: 0, title: this.$t('delivery.none') })
})
await getProductAttrList().then((res) => (this.productAttrList = res.data))
// getChannelList().then((res) => (this.channelList = res.data))
await await this.getTradeCity()
await await this.getChannelList()
await getCurrencyList().then((res) => (this.currencyList = res.data))
await getGuojiaAndShiAndWarehouseList({tradeType: 1}).then(res => {
this.destCountryList = res.data.guojiaList
this.destCityList = res.data.shiList
// this.destWarehoustList = res.data.warehouseList
})
// this.getIdCard()
if (this.$route.query.tranfId) {
setTimeout(() => {
......@@ -1962,7 +2044,7 @@ export default {
}, 500)
}
if (this.$route.query.id) {
getOrderDetail(this.$route.query.id).then((res) => {
await getOrderDetail(this.$route.query.id).then((res) => {
this.form = Object.assign({}, res.data, { orderItemVOList: [] })
this.form.deliveryDate = res.data.deliveryDate
this.$set(this.form, 'consigneePhone', res.data.consigneeVO.phone)
......@@ -1993,34 +2075,9 @@ export default {
})
})
} else this.addProduct()
this.getCustomerList()
getCountryList().then((r) => {
this.countryList = r.data
})
getListTree({treeType: 1}).then(res => {
this.dstCountryList = res.data
})
getData({ page: 1, rows: 100, dictType: 'transport_type' }).then((r) => {
this.transportTypeList = r.data.list
})
getData({ page: 1, rows: 100, dictType: 'coupon_type' }).then((r) => {
this.couponTypeList = r.data.list
})
getGroupList({ page: 1, rows: 100 }).then((r) => {
this.groupList = r.data.list
this.groupList.push({ id: 0, title: this.$t('delivery.none') })
})
getProductAttrList().then((res) => (this.productAttrList = res.data))
// getChannelList().then((res) => (this.channelList = res.data))
await this.getTradeCity()
await this.getChannelList()
getCurrencyList().then((res) => (this.currencyList = res.data))
getGuojiaAndShiAndWarehouseList({tradeType: 1}).then(res => {
this.destCountryList = res.data.guojiaList
this.destCityList = res.data.shiList
// this.destWarehoustList = res.data.warehouseList
})
await this.$nextTick()
this.$refs.form.clearValidate()
},
methods: {
async getTradeCity() {
......@@ -2102,7 +2159,11 @@ export default {
}
})
},
getCustomerList() {
getCustomerList(reload = false) {
if(reload){
this.customeParams.page = 1
this.customerList = []
}
getCustomerList(this.customeParams).then((r) => {
this.customerList = r.data.list
this.total = r.data.total
......@@ -2151,7 +2212,7 @@ export default {
openConsignee() {
this.consigneeVisdle = true
},
selectConsignee(val) {
async selectConsignee(val) {
if (val) {
console.log(val)
this.form.consigneeName = val.name
......@@ -2166,6 +2227,9 @@ export default {
}
this.consigneeVisdle = false
this.$refs.consigneeTable.setCurrentRow()
await this.$nextTick()
this.$refs.form.clearValidate('consigneeName')
this.$refs.form.clearValidate('consigneePhone')
}
},
updateCustomer(row) {
......@@ -2568,7 +2632,7 @@ export default {
color: #ffffff;
}
::v-deep .el-descriptions-item__content .el-form-item{
margin-bottom: 0;
/*margin-bottom: 0;*/
}
.card-title {
display: flex;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment