Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
J
jiedao-app-operator-master
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
lanbaoming
jiedao-app-operator-master
Commits
cfcfa44c
Commit
cfcfa44c
authored
Sep 14, 2022
by
dragondean@qq.com
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
订单报价单等优化和修复bug
parent
9e08d3dc
Changes
10
Show whitespace changes
Inline
Side-by-side
Showing
10 changed files
with
505 additions
and
461 deletions
+505
-461
index.vue
src/components/ChooseContactDialog/index.vue
+1
-1
index.vue
src/components/CustomerContactSelector/index.vue
+8
-24
index.vue
src/components/DictSelector/index.vue
+3
-2
index.vue
src/components/ProductSelector/index.vue
+5
-11
index.vue
src/components/QuickCreateCustomer/index.vue
+10
-9
index.vue
src/components/SupplierSelector/index.vue
+10
-7
edit.vue
src/views/ecw/coupon/edit.vue
+33
-5
edit.vue
src/views/ecw/offer/edit.vue
+337
-316
edit.vue
src/views/ecw/order/edit.vue
+87
-81
edit.vue
src/views/ecw/supplier/edit.vue
+11
-5
No files found.
src/components/ChooseContactDialog/index.vue
View file @
cfcfa44c
<
template
>
<el-dialog
title=
"选择联系人"
visible
:before-close=
"closeDialog"
:close-on-click-modal=
"false"
>
<div
class=
"header mb-10"
>
<div
class=
"header mb-10
flex-center
"
>
<div
class=
"flex-center"
>
关键字:
</div>
<el-input
v-model=
"form.searchKey"
placeholder=
""
class=
"w-200"
></el-input>
<el-button
type=
"primary"
class=
"ml-10"
@
click=
"handleQuery"
>
搜索
</el-button>
...
...
src/components/CustomerContactSelector/index.vue
View file @
cfcfa44c
...
...
@@ -16,7 +16,7 @@
:value="index">
</el-option>
</el-select>
<
el-button
v-if=
"quickable"
type=
"text"
@
click=
"showQuickCreate=true"
class=
"ml-10"
>
{{
$t
(
'
快速新建
'
)
}}
</el-button
>
<
!--
<el-button
v-if=
"quickable"
type=
"text"
@
click=
"showQuickCreate=true"
class=
"ml-10"
>
{{
$t
(
'
快速新建
'
)
}}
</el-button>
--
>
<!--
<quick-create
v-if=
"showQuickCreate"
@
success=
"onQuickCreateSuccess"
@
close=
"showQuickCreate=false"
:default=
"
{type}">
</quick-create>
-->
</div>
...
...
@@ -33,7 +33,7 @@ export default {
type
:
Boolean
,
default
:
true
},
type
:
[
String
,
Number
]
,
// 客户类别,新建时指定默认类别,也可以根据需要筛选联系人所属的客户类别
type
:
String
,
// 客户类别,新建时指定默认类别,也可以根据需要筛选联系人所属的客户类别
},
data
(){
return
{
...
...
@@ -78,19 +78,10 @@ export default {
const
QuickCreateComp
=
Vue
.
extend
(
QuickCreateCustomer
)
const
dialog
=
new
QuickCreateComp
({
propsData
:{
default
:
{
type
:
this
.
type
}
type
:
this
.
type
},
})
/* dialog.$on = () => {
return {
success: this.onQuickCreateSuccess,
close: () => {
console.log('关闭拉')
this.showQuickCreate = false
}
}
} */
dialog
.
$on
(
'
close
'
,
()
=>
{
console
.
log
(
'
关闭拉
'
)
this
.
showQuickCreate
=
false
...
...
@@ -104,17 +95,8 @@ export default {
dialog
.
$mount
()
console
.
log
({
dialog
,
parent
:
this
})
window
.
dialogComp
=
dialog
document
.
body
.
append
(
dialog
.
$el
)
/* dialog.remove = () => {
console.log('关闭拉11')
document.body.removeChild(dialog.$el)
} */
}
},
created
(){
...
...
@@ -145,9 +127,11 @@ export default {
.
then
(
res
=>
this
.
list
=
res
.
data
)
.
finally
(()
=>
this
.
loading
=
false
)
},
onQuickCreateSuccess
(
id
){
onQuickCreateSuccess
(
data
){
this
.
showQuickCreate
=
false
getCustomerContactsListByCustomer
({
customerId
:
id
}).
then
(
res
=>
{
this
.
list
.
unshift
(
data
)
this
.
index
=
0
/* getCustomerContactsListByCustomer({customerId: id}).then(res => {
if(!res.data || !res.data.length){
return this.$message.error(this.$t('联系人信息获取失败'))
}
...
...
@@ -155,7 +139,7 @@ export default {
data.contactsName = data.name // 字段名跟getCustomerContactsSelect对齐
this.list.unshift(data)
this.index = 0
})
})
*/
}
}
}
...
...
src/components/DictSelector/index.vue
View file @
cfcfa44c
<
template
>
<div
class=
"dict-selector"
>
<el-select
v-if=
"formType == 'select'"
v-model=
"valueSync"
:placeholder=
"placeholder"
clearable
:multiple=
"multiple"
:disabled=
"disabled"
@
change=
"val => $emit('change', val)"
>
<el-select
v-if=
"formType == 'select'"
v-model=
"valueSync"
:placeholder=
"placeholder"
:clearable=
"clearable"
:multiple=
"multiple"
:disabled=
"disabled"
@
change=
"val => $emit('change', val)"
>
<el-option
v-for=
"dict in formattedList"
:key=
"dict.value"
:label=
"$l(dict, 'label')"
:value=
"dict.value"
/>
</el-select>
...
...
@@ -52,7 +52,8 @@ export default {
filter
:
{
type
:
Function
,
default
:
()
=>
true
}
},
clearable
:
Boolean
},
data
(){
return
{
...
...
src/components/ProductSelector/index.vue
View file @
cfcfa44c
...
...
@@ -41,7 +41,6 @@ export default {
},
watch
:{
index
(
val
){
let
productId
=
val
!==
''
&&
val
!==
null
?
this
.
list
[
val
].
id
:
null
console
.
log
(
'
index val
'
,
val
,
productId
)
this
.
$emit
(
'
input
'
,
productId
)
...
...
@@ -50,15 +49,7 @@ export default {
},
value
(
val
){
console
.
log
(
'
初始化内容
'
,
val
)
/* let index = this.list.findIndex(item => item.id == val)
if(index < 0){
getProduct(val).then(res => {
this.list.unshift(res.data)
this.index = 0
})
} */
this
.
init
()
}
},
created
(){
...
...
@@ -67,14 +58,17 @@ export default {
},
methods
:{
init
(){
if
(
!
this
.
value
)
return
null
if
(
!
this
.
value
){
this
.
index
=
null
return
}
let
index
=
this
.
list
.
findIndex
(
item
=>
item
.
id
==
this
.
value
)
if
(
index
<
0
){
getProduct
(
this
.
value
).
then
(
res
=>
{
this
.
list
.
unshift
(
res
.
data
)
this
.
index
=
0
})
}
}
else
this
.
index
=
index
},
remoteMethod
(
keyword
){
let
params
=
{
...
...
src/components/QuickCreateCustomer/index.vue
View file @
cfcfa44c
...
...
@@ -73,14 +73,15 @@ export default {
},
// 表单校验
rules
:
{
name
:
[{
required
:
true
,
message
:
"
客户名称不能为空
"
,
trigger
:
"
blur
"
}],
'
customerContacts.0.phoneNew
'
:
[{
required
:
true
,
message
:
"
手机号不能为空
"
,
trigger
:
"
blur
"
}],
type
:
[{
required
:
true
,
message
:
"
客户类别不能为空
"
,
trigger
:
"
blur
"
}],
createTime
:
[{
required
:
true
,
message
:
"
创建时间不能为空
"
,
trigger
:
"
blur
"
}],
source
:
[{
required
:
true
,
message
:
"
客户来源不能为空
"
,
trigger
:
"
blur
"
}],
customerService
:
[{
required
:
true
,
message
:
"
客户经理不能为空
"
,
trigger
:
"
blur
"
}],
status
:
[{
required
:
true
,
message
:
"
客户状态不能为空
"
,
trigger
:
"
blur
"
}],
founder
:
[{
required
:
true
,
message
:
"
创建人不能为空
"
,
trigger
:
"
blur
"
}],
name
:
[{
required
:
true
,
message
:
this
.
$t
(
"
客户名称不能为空
"
),
trigger
:
"
blur
"
}],
'
customerContacts.0.phoneNew
'
:
[{
required
:
true
,
message
:
this
.
$t
(
"
手机号不能为空
"
),
trigger
:
"
blur
"
}],
'
customerContacts.0.name
'
:
[{
required
:
true
,
message
:
this
.
$t
(
"
联系人不能为空
"
),
trigger
:
"
blur
"
}],
type
:
[{
required
:
true
,
message
:
this
.
$t
(
"
客户类别不能为空
"
),
trigger
:
"
blur
"
}],
createTime
:
[{
required
:
true
,
message
:
this
.
$t
(
"
创建时间不能为空
"
),
trigger
:
"
blur
"
}],
source
:
[{
required
:
true
,
message
:
this
.
$t
(
"
客户来源不能为空
"
),
trigger
:
"
blur
"
}],
customerService
:
[{
required
:
true
,
message
:
this
.
$t
(
"
客户经理不能为空
"
),
trigger
:
"
blur
"
}],
status
:
[{
required
:
true
,
message
:
this
.
$t
(
"
客户状态不能为空
"
),
trigger
:
"
blur
"
}],
founder
:
[{
required
:
true
,
message
:
this
.
$t
(
"
创建人不能为空
"
),
trigger
:
"
blur
"
}],
},
serviceUserList
:
[],
countryList
:
[],
...
...
@@ -121,7 +122,7 @@ export default {
// 添加的提交
createCustomer
(
this
.
form
).
then
(
res
=>
{
this
.
$modal
.
msgSuccess
(
"
新增成功
"
);
return
getCustomerContactsSelect
({
ids
:
res
.
data
})
return
getCustomerContactsSelect
({
customerId
:
res
.
data
})
}).
then
(
res
=>
{
this
.
$emit
(
'
success
'
,
res
.
data
[
0
])
})
...
...
src/components/SupplierSelector/index.vue
View file @
cfcfa44c
...
...
@@ -11,17 +11,17 @@
<el-option
v-for=
"(item, index) in list"
:key=
"item.id"
:label=
"
`$
{item.name}(${item.number})`
"
:label=
"
$l(item, 'company') + '('+item.companyCode+')'
"
:value=
"index"
>
</el-option>
</el-select>
</
template
>
<
script
>
import
{
getSupplier
,
getSupplierPage
}
from
'
@/api/ecw/supplier
'
// TODO 接口暂不支持关键词搜索,待接口支持后完善
export
default
{
props
:{
product
Type
:
[
String
,
Number
],
company
Type
:
[
String
,
Number
],
value
:
[
String
,
Number
]
},
data
(){
...
...
@@ -41,6 +41,7 @@ export default {
}
},
created
(){
this
.
remoteMethod
(
''
)
this
.
init
()
},
methods
:{
...
...
@@ -52,14 +53,16 @@ export default {
this
.
list
.
unshift
(
res
.
data
)
this
.
index
=
0
})
}
}
else
this
.
index
=
index
},
remoteMethod
(
keyword
){
let
params
=
{}
params
.
searchKey
=
keyword
let
params
=
{
pageSize
:
100
}
params
.
keyword
=
keyword
this
.
loading
=
true
getSupplierPage
(
params
)
.
then
(
res
=>
this
.
list
=
res
.
data
)
.
then
(
res
=>
this
.
list
=
res
.
data
.
list
)
.
finally
(()
=>
this
.
loading
=
false
)
}
}
...
...
src/views/ecw/coupon/edit.vue
View file @
cfcfa44c
...
...
@@ -60,8 +60,8 @@
<!--
<el-select
v-model=
"item.fullCurrencyId"
style=
"width:100px"
>
<el-option
v-for=
"item in currencyList"
:key=
"item.id"
:label=
"item.titleZh"
:value=
"item.id"
/>
</el-select>
-->
<selector
v-if=
"[
2,
4,5].indexOf(form.type) > -1"
v-model=
"item.fullCurrencyId"
:options=
"currencyList"
label-field=
"titleZh"
value-field=
"id"
defaultable
style=
"width:100px"
/>
<selector
v-if=
"form.type ==
3"
v-model=
"item.prodUnit"
:options=
"unitList"
label-field=
"titleZh"
value-field=
"id
"
defaultable
style=
"width:100px"
/>
<selector
v-if=
"[4,5].indexOf(form.type) > -1"
v-model=
"item.fullCurrencyId"
:options=
"currencyList"
label-field=
"titleZh"
value-field=
"id"
defaultable
style=
"width:100px"
/>
<selector
v-if=
"form.type ==
2"
v-model=
"item.combUnit"
:options=
"combUnitList"
label-field=
"label"
value-field=
"value
"
defaultable
style=
"width:100px"
/>
<span
v-if=
"[2].indexOf(form.type) > -1"
>
减
</span>
<span
v-if=
"[4].indexOf(form.type) > -1"
>
折扣率
</span>
...
...
@@ -267,7 +267,12 @@ export default {
status
:
1
,
},
// 表单校验
rules
:
{},
rules
:
{
isCargoControl
:
[{
required
:
true
,
message
:
'
请选择是否控货
'
}],
brand
:
[{
required
:
true
,
message
:
'
请选择品牌
'
}],
orderAttr
:
[{
required
:
true
,
message
:
'
请选择订单属性
'
}],
documentDeclaration
:
[{
required
:
true
,
message
:
'
请选择单证报关
'
}]
},
currencyList
:[],
/* clearanceFeeList:[{},{}],
freightFeeList:[{},{}],
...
...
@@ -317,12 +322,29 @@ export default {
})
}
return
costType
},
// 满减组合单位列表
combUnitList
(){
let
arr
=
[]
this
.
currencyList
.
forEach
(
item
=>
{
arr
.
push
({
label
:
this
.
$l
(
item
,
'
title
'
),
value
:
'
fullCurrencyId_
'
+
item
.
id
})
})
this
.
unitList
.
forEach
(
item
=>
{
arr
.
push
({
label
:
this
.
$l
(
item
,
'
title
'
),
value
:
'
prodUnit_
'
+
item
.
id
})
})
return
arr
}
},
watch
:{
'
form.type
'
(
val
){
// 方数满减3和特价6需要单位
if
((
val
==
3
||
val
==
6
)
&&
!
this
.
unitList
.
length
){
if
((
val
==
3
||
val
==
6
||
val
==
2
)
&&
!
this
.
unitList
.
length
){
this
.
getUnitList
()
}
...
...
@@ -429,7 +451,13 @@ export default {
return
this
.
$message
(
'
暂无费用设置
'
)
}
// 非有优惠券需要把运费和清关费一起提交
let
discountDetailedVOs
=
this
.
costType
==
3
?
this
.
fee
[
3
]
:
this
.
fee
[
1
].
concat
(
this
.
fee
[
2
])
let
discountDetailedVOs
=
this
.
costType
==
3
?
this
.
fee
[
3
]
:
this
.
fee
[
1
].
concat
(
this
.
fee
[
2
]).
filter
(
item
=>
item
.
netReceiptsAmount
||
item
.
fullAmount
)
discountDetailedVOs
.
map
(
item
=>
{
if
(
item
.
combUnit
){
let
tmp
=
item
.
combUnit
.
split
(
'
_
'
)
item
[
tmp
[
0
]]
=
tmp
[
1
]
}
})
let
data
=
Object
.
assign
({},
this
.
form
,
{
discountDetailedVOs
})
// 开始时间必填
if
(
!
data
.
startTime
)
data
.
startTime
=
'
2022-01-01 00:00:00
'
...
...
src/views/ecw/offer/edit.vue
View file @
cfcfa44c
<
template
>
<div
class=
"app-container"
>
<el-form
ref=
"form"
:model=
"form"
:rules=
"rules"
label-width=
"120px"
>
<el-form
ref=
"form"
:model=
"form"
:rules=
"rules"
label-width=
"120px"
inline
>
<el-card>
<div
slot=
"header"
class=
"card-title"
>
{{
$t
(
'
新建报价单
'
)
}}
</div>
<el-form-item
:label=
"$t('所属人')"
>
...
...
@@ -10,22 +10,59 @@
<el-radio
label=
"2"
>
{{
$t
(
'
收件人
'
)
}}
</el-radio>
</el-radio-group>
</el-form-item>
<el-form-item
:label=
"$t('订单类型')"
style=
"margin-bottom: 0"
>
<br/>
<el-form-item
:label=
"$t('订单类型')"
>
<el-checkbox-group
v-model=
"form.type"
>
<el-checkbox
label=
"1"
>
{{
$t
(
'
集运服务
'
)
}}
</el-checkbox>
<
!--
<el-checkbox
label=
"2"
>
海外仓
</el-checkbox>
--
>
<
el-checkbox
label=
"2"
>
{{
$t
(
'
海外仓
'
)
}}
</el-checkbox
>
</el-checkbox-group>
</el-form-item>
<el-descriptions
:column=
"3"
border
>
<div
class=
"form-section"
>
<el-form-item
:label=
"$t('发货人')"
prop=
"consignorId"
>
<div
class=
"contact"
>
<el-input
v-model=
"form.consignorName"
placeholder=
"选择或新建"
disabled
/>
<img
src=
"@/assets/images/phonebook.png"
class=
"phonebook"
@
click=
"contactChooseType='consignor'"
/>
<img
src=
"@/assets/images/new_customer.png"
class=
"phonebook"
@
click=
"quickCreateType='1'"
/>
</div>
</el-form-item>
<el-form-item
:label=
"$t('发货人电话')"
prop=
"consignorPhone"
>
<!--
<area-code-selector
v-model=
"form.consignorCountryCode"
class=
"w-200 mr-10"
disabled
/>
-->
<el-input
:value=
"form.consignorCountryCode + ' ' + form.consignorPhone"
class=
"w-200"
disabled
/>
</el-form-item>
<el-form-item
:label=
"$t('发货人公司')"
prop=
"consignorCompany"
>
<el-input
v-model=
"form.consignorCompany"
disabled
/>
</el-form-item>
<el-form-item
label=
"Email"
prop=
"consignorEmail"
>
<el-input
v-model=
"form.consignorEmail"
disabled
/>
</el-form-item>
</div>
<div
class=
"form-section"
>
<el-form-item
:label=
"$t('收货人')"
prop=
"consigneeId"
>
<div
class=
"contact"
>
<el-input
v-model=
"form.consigneeName"
placeholder=
"请选择或新建"
:disabled=
"true"
/>
<img
src=
"@/assets/images/phonebook.png"
class=
"phonebook"
@
click=
"contactChooseType='consignee'"
/>
<img
src=
"@/assets/images/new_customer.png"
class=
"phonebook"
@
click=
"quickCreateType='2'"
/>
</div>
</el-form-item>
<el-form-item
:label=
"$t('收货人电话')"
prop=
"consigneePhone"
>
<!--
<area-code-selector
v-model=
"form.consigneeCountryCode"
class=
"w-200 mr-10"
disabled
/>
-->
<el-input
:value=
"form.consigneeCountryCode + ' ' + form.consigneePhone"
class=
"w-200"
disabled
/>
</el-form-item>
<el-form-item
:label=
"$t('收货人公司')"
prop=
"consigneeCompany"
>
<el-input
v-model=
"form.consigneeCompany"
:disabled=
"true"
/>
</el-form-item>
<el-form-item
label=
"Email"
prop=
"consigneeEmail"
>
<el-input
v-model=
"form.consigneeEmail"
:disabled=
"true"
/>
</el-form-item>
</div>
<!--
<el-descriptions
:column=
"3"
border
>
<el-descriptions-item
:label=
"$t('*发货人')"
:labelStyle=
"labelStyle"
>
<el-form-item
label=
""
label-width=
"0"
style=
"margin-bottom: 0"
prop=
"consignorId"
required
:error=
"$t('发货人不能为空')"
>
<customer-contact-selector
v-model=
"form.consignorId"
@
change=
"consignor = $event"
/>
<customer-contact-selector
v-model=
"form.consignorId"
@
change=
"consignor = $event"
type=
"1"
/>
</el-form-item>
</el-descriptions-item>
<!--
<el-descriptions-item
label=
"发货人"
:labelStyle=
"labelStyle"
>
{{
consignor
.
contactsName
||
'
无
'
}}
</el-descriptions-item>
-->
<el-descriptions-item
:label=
"$t('手机号')"
:labelStyle=
"labelStyle"
>
{{
consignor
.
areaCode
}}
{{
consignor
.
phoneNew
||
this
.
$t
(
'
无
'
)
}}
</el-descriptions-item>
...
...
@@ -34,24 +71,15 @@
</el-descriptions-item>
<el-descriptions-item
label=
"Email"
:labelStyle=
"labelStyle"
>
{{
consignor
.
email
||
this
.
$t
(
'
无
'
)
}}
</el-descriptions-item>
<!--
<el-descriptions-item
label=
"社交软件"
>
{{
consignor
.
social
}}
{{
consignor
.
socialNumber
}}
</el-descriptions-item>
<el-descriptions-item
label=
"联系地址"
>
{{
consignor
.
address
||
'
无
'
}}
</el-descriptions-item>
-->
</el-descriptions>
<el-descriptions
:column=
"3"
border
>
<el-descriptions-item
:label=
"$t('收货人')"
:labelStyle=
"labelStyle"
>
<el-form-item
label=
""
label-width=
"0"
style=
"margin-bottom: 0"
prop=
"consigneeId"
required
:error=
"$t('收货人不能为空')"
>
<customer-contact-selector
v-model=
"form.consigneeId"
@
change=
"consignee = $event"
/>
<customer-contact-selector
v-model=
"form.consigneeId"
@
change=
"consignee = $event"
type=
"2"
/>
</el-form-item>
</el-descriptions-item>
<!--
<el-descriptions-item
label=
"收货人"
:labelStyle=
"labelStyle"
>
{{
consignee
.
contactsName
||
'
无
'
}}
</el-descriptions-item>
-->
<el-descriptions-item
:label=
"$t('手机号')"
:labelStyle=
"labelStyle"
>
{{
consignee
.
areaCode
}}
{{
consignee
.
phoneNew
}}
</el-descriptions-item>
...
...
@@ -60,23 +88,14 @@
</el-descriptions-item>
<el-descriptions-item
label=
"Email"
:labelStyle=
"labelStyle"
>
{{
consignee
.
email
||
this
.
$t
(
'
无
'
)
}}
</el-descriptions-item>
<!--
<el-descriptions-item
label=
"社交软件"
>
{{
consignee
.
social
}}
{{
consignee
.
socialNumber
}}
</el-descriptions-item>
<el-descriptions-item
label=
"联系地址"
>
{{
consignee
.
address
||
'
无
'
}}
// TODO
</el-descriptions-item>
-->
</el-descriptions>
</el-descriptions>
-->
<el-descriptions
:column=
"2"
border
>
<el-descriptions-item
:label=
"$t('运输方式')"
:labelStyle=
"labelStyle"
>
<el-form-item
label=
""
label-width=
"0"
style=
"margin-bottom: 0"
prop=
"transportId"
required
:error=
"$t('请选择运输方式')"
>
<div
class=
"form-section"
>
<el-form-item
:label=
"$t('运输方式')"
prop=
"transportId"
>
<dict-selector
:type=
"DICT_TYPE.ECW_TRANSPORT_TYPE"
v-model=
"form.transportId"
@
input=
"calculationPrice"
/>
</el-form-item>
</el-descriptions-item>
<el-descriptions-item
:label=
"$t('出货渠道')"
v-if=
"getDictData(DICT_TYPE.ECW_TRANSPORT_TYPE, form.transportId).cssClass == 'channel'"
:labelStyle=
"labelStyle"
>
<el-form-item
label=
""
label-width=
"0"
style=
"margin-bottom: 0"
prop=
"channelId"
:required=
"getDictData(DICT_TYPE.ECW_TRANSPORT_TYPE, form.transportId).cssClass == 'channel'"
:error=
"$t('请选择出货渠道')"
>
<el-form-item
:label=
"$t('出货渠道')"
v-if=
"getDictData(DICT_TYPE.ECW_TRANSPORT_TYPE, form.transportId).cssClass == 'channel'"
prop=
"channelId"
>
<selector
:disabled=
"getDictData(DICT_TYPE.ECW_TRANSPORT_TYPE, form.transportId).cssClass != 'channel'"
v-model=
"form.channelId"
...
...
@@ -86,38 +105,31 @@
@
input=
"calculationPrice"
></selector>
</el-form-item>
</el-descriptions-item>
</el-descriptions>
<el-descriptions
:column=
"2"
border
>
<el-descriptions-item
:label=
"$t('始发城市')"
:labelStyle=
"labelStyle"
>
<el-form-item
label=
""
label-width=
"0"
style=
"margin-bottom: 0"
prop=
"departureId"
required
:error=
"$t('始发地必选')"
>
</div>
<div
class=
"form-section"
>
<el-form-item
:label=
"$t('始发城市')"
prop=
"departureId"
>
<el-select
v-model=
"form.departureId"
:placeholder=
"$t('请选择始发地')"
>
<el-option
v-for=
"item in expoerCityList"
:label=
"item.titleZh
"
:value=
"item.id"
:key=
"item.id"
></el-option>
<el-option
v-for=
"item in exportCityList"
:label=
"$l(item, 'title')
"
:value=
"item.id"
:key=
"item.id"
></el-option>
</el-select>
</el-form-item>
</el-descriptions-item>
<el-descriptions-item
:label=
"$t('目的城市')"
:labelStyle=
"labelStyle"
>
<el-form-item
label=
""
label-width=
"0"
style=
"margin-bottom: 0"
prop=
"objectiveId"
required
:error=
"$t('目的城市必选')"
>
<el-select
v-model=
"form.objectiveId"
:placeholder=
"$t('请选择始发地')"
>
<el-option
v-for=
"item in importCityList"
:label=
"item.titleZh"
:value=
"item.id"
:key=
"item.id"
></el-option>
<el-form-item
:label=
"$t('目的城市')"
prop=
"objectiveId"
>
<el-select
v-model=
"form.objectiveId"
:placeholder=
"$t('请选择目的地')"
>
<el-option
v-for=
"item in importCityList"
:label=
"$l(item, 'title')"
:value=
"item.id"
:key=
"item.id"
></el-option>
</el-select>
</el-form-item>
</el-descriptions-item>
<el-descriptions-item
:label=
"$t('请选择线路')"
:span=
"2"
:labelStyle=
"labelStyle"
>
<el-row
:gutter=
"10"
>
<el-col
:span=
"12"
>
<el-input
:value=
"getRouterNameById(form.lineId)"
readonly
:placeholder=
"$t('请在右侧选择线路')"
></el-input>
</el-col>
<el-col
:span=
"12"
>
<select
size=
"5"
v-model=
"form.lineId"
style=
"min-width: 300px"
@
change=
"calculationPrice"
>
</div>
<div
class=
"form-section"
>
<el-form-item
:label=
"$t('选择线路')"
prop=
"lineId"
>
<!--
<el-input
:value=
"getRouterNameById(form.lineId)"
readonly
:placeholder=
"$t('请在右侧选择线路')"
></el-input>
-->
<el-input
:value=
"selectedRouter ? $l(selectedRouter, 'startTitle') + ' > ' + $l(selectedRouter, 'destTitle') : ''"
disabled
:placeholder=
"$t('请在右侧选择线路')"
></el-input>
</el-form-item>
<select
size=
"5"
v-model=
"form.lineId"
style=
"min-width: 300px; border:1px solid #DCDFE6; border-radius:4px"
>
<template
v-for=
"item in routerList"
>
<option
:value=
"item.id"
:key=
"item.id"
>
{{
item
.
startTitleZh
}}
>>
{{
item
.
destTitleZh
}}
</option>
<option
:value=
"item.id"
:key=
"item.id"
>
{{
$l
(
item
,
'
startTitle
'
)
}}
>>
{{
$l
(
item
,
'
destTitle
'
)
}}
</option>
</
template
>
</select>
</el-col>
</el-row>
</el-descriptions-item>
</el-descriptions>
</div>
</el-card>
<el-card
class=
"mt-10"
>
<div
slot=
"header"
class=
"card-title"
>
...
...
@@ -146,13 +158,6 @@
</
template
>
</el-table-column>
<!-- <el-table-column :label="$t('商品类型')" width="160px">
<template slot-scope="{row}">
<selector disabled v-model="row.goodsType" :options="productAttrList" label-field="attrName" value-field="id" @input="calculationPrice"></selector>
</template>
</el-table-column> -->
<el-table-column
:label=
"$t('件数')"
width=
"90px"
>
<
template
slot-scope=
"{row}"
>
<el-input
v-model.number=
"row.num"
@
input=
"calculationPrice"
/>
...
...
@@ -168,11 +173,6 @@
<el-input
v-model.number=
"row.quantity"
@
input=
"calculationPrice"
/>
</
template
>
</el-table-column>
<!-- <el-table-column :label="$t('箱规') + '(m)'" width="120px">
<template slot-scope="{row}">
<el-input v-model="row.boxGauge" @input="calcVolume(row);calculationPrice()" />
</template>
</el-table-column> -->
<el-table-column
:label=
"$t('总体积') + '(m³)'"
width=
"100px"
>
<
template
slot-scope=
"{row}"
>
<el-input
v-model=
"row.volume"
@
input=
"calculationPrice"
/>
...
...
@@ -229,51 +229,36 @@
</el-table-column>
<el-table-column
:label=
"$t('快递单号')"
width=
"100px"
>
<
template
slot-scope=
"{row}"
>
<el-input
v-model=
"row.expressNo"
placeholder=
"
缺少字段
"
/>
<el-input
v-model=
"row.expressNo"
placeholder=
""
/>
</
template
>
</el-table-column>
<el-table-column
:label=
"$t('操作')"
width=
"180px"
fixed=
"right"
>
<
template
slot-scope=
"scope"
>
<el-button
size=
"mini"
type=
"danger"
@
click=
"delProduct(scope.$index)"
>
{{
$t
(
'
删除
'
)
}}
</el-button>
<!--
<el-button
size=
"mini"
type=
"primary"
@
click=
"showMorePrice($index)"
>
{{
$t
(
'
更多报价
'
)
}}
</el-button>
-->
</
template
>
</el-table-column>
</el-table>
<!--
</el-card>
<el-card class="mt-10"> -->
<div
class=
"card-title"
style=
"padding:20px 0;"
>
{{$t('
费用小
计')}}
</div>
<div
class=
"card-title"
style=
"padding:20px 0;"
>
{{$t('
合
计')}}
</div>
<el-descriptions
:column=
"4"
border
>
<el-descriptions-item
:label=
"$t('总件数')"
>
{{sum.totalNum || 0}}
</el-descriptions-item>
<
!-- <
el-descriptions-item label="总体积">
<el-descriptions-item
label=
"总体积"
>
{{sum.totalVolume || 0}}m³
</el-descriptions-item>
<el-descriptions-item
label=
"总重量"
>
{{sum.totalWeight || 0}}kg
</el-descriptions-item> -->
<el-descriptions-item
:label=
"$t('总货值')"
>
{{sum.totalWorth || 0}}{{$t('人民币')}}
</el-descriptions-item>
<el-descriptions-item
:label=
"$t('保价费')
"
>
{{
fee.insuranceFee || 0}}{{$t('人民币')
}}
<el-descriptions-item
label=
"总数量
"
>
{{
sum.totalQuatity || 0
}}
</el-descriptions-item>
<!-- <el-descriptions-item label="总运费">
<div>{{fee.seaNGN || 0}}泰拉</div>
<div>{{fee.seaRMB || 0}}人民币</div>
<div>{{fee.seaUSD || 0}}美元</div>
</el-descriptions-item>
<el-descriptions-item label="总清关费">
<div>{{fee.clearanceNGN || 0}}泰拉</div>
<div>{{fee.clearanceRMB || 0}}人民币</div>
<div>{{fee.clearanceUSD || 0}}美元</div>
<el-descriptions-item
:label=
"$t('总货值') + '(RMB)'"
>
{{sum.totalWorth || 0}}{{$t('元')}}
</el-descriptions-item>
<el-descriptions-item label="预计费用">
<div>{{fee.seaNGN + fee.clearanceNGN}}泰拉</div>
<div>{{fee.seaRMB + fee.clearanceRMB + fee.insuranceFee }}人民币</div>
<div>{{fee.seaUSD + fee.clearanceUSD}}美元</div>
</el-descriptions-item> -->
</el-descriptions>
</el-card>
...
...
@@ -282,139 +267,151 @@
<el-descriptions
:column=
"5"
border
>
<el-descriptions-item
:label=
"$t('保价费')"
>
{{fee.insuranceFee || 0}} {{$t('
人民币
')}}
{{fee.insuranceFee || 0}} {{$t('
美元
')}}
</el-descriptions-item>
<el-descriptions-item
:label=
"$t('总运费')"
>
<
div>
{{fee.seaNGN || 0}}{{$t('奈拉')}}
</div
>
<div>
{{fee.seaRMB || 0}}{{$t('人民币')
}}
</div>
<
div>
{{fee.seaUSD || 0}}{{$t('美元')}}
</div
>
<
template
v-for=
"item in clearanceFeeList"
>
<div
:key=
"item.currencyId"
>
{{
item
.
amount
||
0
}}{{
currentcyMap
[
item
.
currencyId
]
}}
</div>
<
/
template
>
</el-descriptions-item>
<!--代收货款,只有非控货订单、并且线路开通了代收货款后,才显示是否代收货款选项-->
<el-descriptions-item
:label=
"$t('总清关费')"
>
<
div>
{{fee.clearanceNGN || 0}}{{$t('奈拉')}}
</div
>
<div>
{{fee.clearanceRMB || 0}}{{$t('人民币')
}}
</div>
<
div>
{{fee.clearanceUSD || 0}}{{$t('美元')}}
</div
>
<
template
v-for=
"item in freightFeeList"
>
<div
:key=
"item.currencyId"
>
{{
item
.
amount
||
0
}}{{
currentcyMap
[
item
.
currencyId
]
}}
</div>
<
/
template
>
</el-descriptions-item>
<el-descriptions-item
:label=
"$t('其他费用')"
>
<el-input
v-model=
"form.otherFee"
placeholder=
""
class=
"w-100 mr-10"
></el-input>
<selector
v-model=
"form.otherFeeCurrencyId"
:options=
"currencyList"
label-field=
"titleZh"
value-field=
"id"
defaultable
class=
"w-100"
/>
</el-descriptions-item>
<el-descriptions-item
:label=
"$t('原价')"
:span=
"2"
>
<!--TODO 缺少字段-->
<div>
{{fee.clearanceNGN || 0}}{{$t('奈拉')}}
</div>
<div>
{{fee.clearanceRMB || 0}}{{$t('人民币')}}
</div>
<div>
{{fee.clearanceUSD || 0}}{{$t('美元')}}
</div>
<
template
v-for=
"item in originalFeeList"
>
<div
:key=
"item.currencyId"
>
{{
item
.
amount
||
0
}}{{
currentcyMap
[
item
.
currencyId
]
}}
</div>
</
template
>
</el-descriptions-item>
</el-descriptions>
<div
class=
"card-title"
style=
"padding:20px 0;"
>
{{$t('优惠信息')}}
</div>
<div
v-for=
"(item, index) in couponList"
:key=
"index"
style=
"display:flex;align-items:center"
>
<div
class=
"w-150"
>
{{index+1}}.
{{productNames[item.prodId] || $t('未知')}}
</div>
<div
class=
"w-100"
>
<dict-tag
:type=
"DICT_TYPE.ECW_COUPON_TYPE"
:value=
"item.type"
/>
</div>
<div
style=
"display:flex; align-items:center"
>
<el-select
:placeholder=
"$t('请选择优惠')"
v-model=
"item.selectedIndex"
:data-type=
"item.value"
clearable
class=
"w-300"
>
<
template
v-for=
"(coupon, couponIndex) in item.options"
>
<el-option
:key=
"coupon.couponId"
:label=
"coupon.titleZh"
:value=
"couponIndex"
></el-option>
<el-table
:data=
"couponList"
:show-header=
"false"
>
<el-table-column
label=
""
>
<
template
slot-scope=
"scope"
>
{{
scope
.
$index
+
1
}}
.
{{
$l
(
productNames
[
scope
.
row
.
prodId
],
'
title
'
)
||
$t
(
'
未知
'
)
}}
</
template
>
</el-select>
<
template
v-if=
"item.selectedIndex !== null"
>
<div
class=
"w-100 ml-20"
>
-
{{
item
.
options
[
item
.
selectedIndex
].
reduceAmount
}}
{{
currentcyMap
[
item
.
options
[
item
.
selectedIndex
].
reduceCurrencyId
]
}}
</div>
<div
class=
"ml-20"
>
{{
$t
(
'
有效期
'
)
}}
:
{{
item
.
options
[
item
.
selectedIndex
].
endTime
||
$t
(
'
永久有效
'
)
}}
</div>
</el-table-column>
<el-table-column
label=
""
>
<
template
slot-scope=
"{row}"
>
<dict-tag
:type=
"DICT_TYPE.ECW_COUPON_TYPE"
:value=
"row.type"
/>
</
template
>
</div>
</div>
</el-table-column>
<el-table-column
label=
""
>
<
template
slot-scope=
"{row}"
>
{{
$l
(
row
,
'
title
'
)
}}
</
template
>
</el-table-column>
<el-table-column
label=
""
>
<
template
slot-scope=
"{row}"
>
-
{{
row
.
reduceAmount
}}
{{
currentcyMap
[
row
.
reduceCurrencyId
]
}}
</
template
>
</el-table-column>
<el-table-column
label=
""
>
<
template
slot-scope=
"{row}"
>
{{
$t
(
'
有效期至
'
)
}}
:
{{
row
.
endTime
?
row
.
endTime
:
$t
(
'
永久有效
'
)
}}
</
template
>
</el-table-column>
</el-table>
<el-descriptions
:column=
"1"
class=
"mt-20"
>
<el-descriptions-item
:label=
"$t('优惠
合计
')"
>
<div
v-for=
"(
discount, discountIndex) in discountArr
"
:key=
"discountIndex"
>
{{
discount.reduceAmount}} {{currentcyMap[discount.reduceC
urrencyId]}}
<el-descriptions-item
:label=
"$t('优惠
费用
')"
>
<div
v-for=
"(
item, discountIndex) in couponTotalAmountList
"
:key=
"discountIndex"
>
{{
item.totalAmount}} {{currentcyMap[item.c
urrencyId]}}
</div>
</el-descriptions-item>
<el-descriptions-item
:label=
"$t('预计费用')"
>
// TODO
<
template
v-for=
"item in estimatedCosts"
>
<div
:key=
"item.currencyId"
>
{{
item
.
amount
||
0
}}{{
currentcyMap
[
item
.
currencyId
]
}}
</div>
</
template
>
</el-descriptions-item>
</el-descriptions>
</el-card>
<el-card
class=
"mt-10"
>
<div
class=
"card-title"
slot=
"header"
>
{{$t('通用')}}
</div>
<el-descriptions
:column=
"2"
border
>
<el-descriptions-item
:label=
"$t('唛头')"
>
<div
class=
"form-section"
>
<el-form-item
:label=
"$t('唛头')"
prop=
"marks"
>
<el-input
v-model=
"form.marks"
placeholder=
""
></el-input>
</el-descriptions-item>
<el-descriptions-item
:label=
"$t('报关方式')"
>
</el-form-item>
</div>
<div
class=
"form-section"
>
<el-form-item
:label=
"$t('报关方式')"
prop=
"customsType"
>
<dict-selector
:type=
"DICT_TYPE.ECW_CUSTOMS_TYPE"
v-model=
"form.customsType"
form-type=
"radio"
defaultable
/>
</el-descriptions-item>
<el-descriptions-item
:label=
"$t('预计结束时间')"
>
</el-form-item>
</div>
<div
class=
"form-section"
>
<el-form-item
:label=
"$t('预计结束时间')"
prop=
"stopTime"
>
<el-date-picker
v-model=
"form.stopTime"
value-format=
"yyyy-MM-dd HH:mm:ss"
></el-date-picker>
</el-
descriptions
-item>
<el-
descriptions-item
:label=
"$t('是否控货')
"
>
</el-
form
-item>
<el-
form-item
:label=
"$t('是否控货')"
prop=
"control
"
>
<dict-selector
:type=
"DICT_TYPE.INFRA_BOOLEAN_STRING"
formatter=
"bool"
v-model=
"form.control"
form-type=
"radio"
defaultable
/>
</el-descriptions-item>
<el-descriptions-item
:label=
"$t('竞争对手')"
>
</el-form-item>
</div>
<div
class=
"form-section"
>
<el-form-item
:label=
"$t('竞争对手')"
prop=
"competitor"
>
<el-input
v-model=
"form.competitor"
placeholder=
""
></el-input>
</el-
descriptions
-item>
<el-
descriptions-item
:label=
"$t('重要程度')
"
>
</el-
form
-item>
<el-
form-item
:label=
"$t('重要程度')"
prop=
"importance
"
>
<el-rate
v-model=
"form.importance"
></el-rate>
</el-descriptions-item>
<el-descriptions-item
:label=
"$t('价格有效时间')"
>
</el-form-item>
</div>
<div
class=
"form-section"
>
<el-form-item
:label=
"$t('价格有效时间')"
prop=
"startTime"
>
<el-date-picker
v-model=
"form.startTime"
placeholder=
""
value-format=
"yyyy-MM-dd HH:mm:ss"
></el-date-picker>
-
</el-form-item>
<el-form-item
label=
""
prop=
"endTime"
>
<el-date-picker
v-model=
"form.endTime"
placeholder=
""
value-format=
"yyyy-MM-dd HH:mm:ss"
></el-date-picker>
</el-descriptions-item>
<el-descriptions-item
:label=
"$t('交货方式')"
>
</el-form-item>
</div>
<div
class=
"form-section"
>
<el-form-item
:label=
"$t('交货方式')"
>
<!--
接口要求数据为整数,所以增加trade_type类型的字典,用1234代码以下不同类型
FOB(离岸价),CIF(到岸价),CNF(成本加运费),EXW(出厂价)
-->
<dict-selector
:type=
"DICT_TYPE.ECW_TRADE_TYPE"
fomtter=
"number"
v-model=
"form.tradeType"
/>
<el-input
v-model=
"form.tradeAdress"
placeholder=
""
></el-input>
</el-descriptions-item>
<!-- <el-descriptions-item label="总运费" :span="2">
</el-descriptions-item>
<el-descriptions-item label="总清关费" :span="2">
</el-descriptions-item>
<el-descriptions-item label="总价格" :span="2">
</el-descriptions-item> -->
<!-- <el-descriptions-item label="佣金类型" :span="2">
<dict-selector :type="DICT_TYPE.COMMISSION_TYPE" form-type="radio" fomtter="number" v-model="form.commissionType" defaultable />
</el-descriptions-item> -->
<el-descriptions-item
:label=
"$t('备注')"
:span=
"2"
>
<el-input
v-model=
"form.remarks"
type=
"textarea"
placeholder=
""
></el-input>
</el-descriptions-item>
</el-descriptions>
</el-form-item>
<el-form-item
:label=
"$t('交货地址')"
>
<el-input
v-model=
"form.tradeAdress"
placeholder=
"港口或地点"
></el-input>
</el-form-item>
</div>
<div
class=
"form-section"
>
<el-form-item
:label=
"$t('备注')"
:span=
"2"
>
<el-input
v-model=
"form.remarks"
type=
"textarea"
placeholder=
""
style=
"width:500px; height: 100px"
></el-input>
</el-form-item>
</div>
</el-card>
<el-card
class=
"mt-10"
v-if=
"transport"
>
<div
class=
"card-title"
slot=
"header"
>
{{transport.label}}
</div>
<el-form-item
:label=
"$t('快递单号')"
>
<
!-- <
el-form-item :label="$t('快递单号')">
<el-input v-model="form.number" :placeholder="$t('请输入购买商品的快递单号')"></el-input>
</el-form-item>
</el-form-item>
-->
<el-form-item
:label=
"$t('是否双清')"
v-if=
"[2,3,4].indexOf(+form.transportId) > -1"
>
<dict-selector
v-model=
"form.doubleClear"
form-type=
"radio"
:type=
"DICT_TYPE.ECW_DOUBLE_CLEAR"
/>
</el-form-item>
<el-form-item
:label=
"$t('航空公司')"
v-if=
"[3,4].indexOf(+form.transportId) > -1"
>
<!--待查询备选数据-->
<el-select
placeholder=
""
v-model=
"form.airlineCompany"
>
</el-select>
<!-- <el-select placeholder="" v-model="form.airlineCompany">
</el-select> -->
<supplier-selector
v-model=
"form.airlineCompany"
companyType=
"10"
/>
</el-form-item>
<el-form-item
:label=
"$t('船公司')"
v-if=
"[2].indexOf(+form.transportId) > -1"
>
<el-select
placeholder=
""
v-model=
"form.shippingCompany"
>
</el-select>
<!-- <el-select placeholder="" v-model="form.shippingCompany">
</el-select> -->
<supplier-selector
v-model=
"form.shippingCompany"
companyType=
"9"
/>
</el-form-item>
<el-form-item
:label=
"$t('清关证书')"
v-if=
"[2,3,4].indexOf(+form.transportId) > -1"
>
...
...
@@ -430,53 +427,55 @@
<dict-selector
v-model=
"form.isSingleTicketTransport"
form-type=
"radio"
:type=
"DICT_TYPE.INFRA_BOOLEAN_STRING"
fomatter=
"bool"
/>
<span
style=
"margin-left:10px"
>
{{$t('注:若只有一件,货到仓库立即发,选“是”,多件需仓库集运待发,选“否”')}}
</span>
</el-form-item>
<br/>
<el-form-item
:label=
"$t('特殊要求')"
>
<dict-selector
v-model=
"form.packageType"
form-type=
"checkbox"
:type=
"DICT_TYPE.ORDER_SPECIAL_NEEDS"
multiple
/>
</el-form-item>
<br/>
<el-form-item
:label=
"$t('特殊要求备注')"
>
<el-input
v-model=
"form.packageRemarks"
></el-input>
</el-form-item>
</el-card>
<el-form-item
label=
""
>
<el-form-item
label=
""
class=
"mt-20"
>
<el-button
type=
"primary"
@
click=
"submitForm"
>
{{$t('确定')}}
</el-button>
<el-button
@
click=
"$store.dispatch('tagsView/delCurrentView')"
>
{{$t('取消')}}
</el-button>
</el-form-item>
</el-form>
<choose-contact-dialog
v-if=
"!!contactChooseType"
@
choose=
"onContactChoose"
@
close=
"contactChooseType=null"
/>
<quick-create-customer
v-if=
"quickCreateType"
:type=
"quickCreateType"
@
success=
"onContactChoose"
@
close=
"quickCreateType=null"
/>
</div>
</template>
<
script
>
import
{
createOffer
,
updateOffer
,
getOffer
,
getProductFeeList
,
getProductFee
}
from
"
@/api/ecw/offer
"
;
import
{
createOffer
,
updateOffer
,
getOffer
}
from
"
@/api/ecw/offer
"
;
import
ProductSelector
from
'
@/components/ProductSelector
'
import
{
getProductAttrList
}
from
'
@/api/ecw/productAttr
'
import
{
getChannelList
}
from
'
@/api/ecw/channel
'
import
Selector
from
'
@/components/Selector
'
import
CustomerContactSelector
from
'
@/components/CustomerContactSelector
'
import
{
openedRouterList
as
getOpenedRouterList
}
from
'
@/api/ecw/warehouse
'
import
{
getTradeCityList
}
from
'
@/api/ecw/region
'
import
{
getDictData
}
from
'
@/utils/dict
'
import
{
getCurrencyList
}
from
'
@/api/ecw/currency
'
import
{
getUnitList
}
from
'
@/api/ecw/unit
'
import
{
calculationPrice
}
from
'
@/api/ecw/product
'
import
{
getCustomerAvailableCouponList
}
from
'
@/api/ecw/coupon
'
import
SupplierSelector
from
'
@/components/SupplierSelector
'
import
ChooseContactDialog
from
'
@/components/ChooseContactDialog
'
import
QuickCreateCustomer
from
'
@/components/QuickCreateCustomer
'
import
{
getCustomerContactsSelect
}
from
'
@/api/ecw/customerContacts
'
export
default
{
name
:
"
OfferEdit
"
,
components
:
{
ProductSelector
,
Selector
,
CustomerContactSelecto
r
ProductSelector
,
Selector
,
SupplierSelector
,
ChooseContactDialog
,
QuickCreateCustome
r
},
data
()
{
return
{
// 遮罩层
loading
:
true
,
// 是否显示弹出层
/* dateRangeStopTime: [],
dateRangeStartTime: [],
dateRangeEndTime: [],
dateRangeCreateTime: [], */
productList
:[],
// 商品信息
productAttrList
:[],
// 商品属性
channelList
:
[],
// 出货取到
...
...
@@ -487,7 +486,7 @@ export default {
transportList
:
[],
currencyList
:[],
unitList
:[],
couponList
:
[{
"
selectedIndex
"
:
null
,
"
options
"
:[{
"
couponId
"
:
74
,
"
titleZh
"
:
"
2-1,5-2
"
,
"
titleEn
"
:
"
2-1,5-2
"
,
"
type
"
:
2
,
"
cashCondition
"
:
0
,
"
reduceAmount
"
:
3
,
"
reduceCurrencyId
"
:
1
,
"
startTime
"
:
"
2022-01-01 00:00:00
"
,
"
afterReceiveDays
"
:
0
,
"
costType
"
:
2
,
"
discountDetailed
"
:
"
[{
\"
type
\"
: 1,
\"
fullAmount
\"
: 2,
\"
reduceAmount
\"
: 1,
\"
fullCurrencyId
\"
: 1,
\"
reduceCurrencyId
\"
: 1}, {
\"
type
\"
: 1,
\"
fullAmount
\"
: 5,
\"
reduceAmount
\"
: 2,
\"
fullCurrencyId
\"
: 1,
\"
reduceCurrencyId
\"
: 1}, {
\"
type
\"
: 2,
\"
fullAmount
\"
: 2,
\"
reduceAmount
\"
: 1,
\"
fullCurrencyId
\"
: 1,
\"
reduceCurrencyId
\"
: 1}, {
\"
type
\"
: 2,
\"
fullAmount
\"
: 6,
\"
reduceAmount
\"
: 3,
\"
fullCurrencyId
\"
: 1,
\"
reduceCurrencyId
\"
: 1}]
"
,
"
discountDetailedVOList
"
:[{
"
type
"
:
1
,
"
fullAmount
"
:
2
,
"
fullCurrencyId
"
:
1
,
"
reduceAmount
"
:
1
,
"
reduceCurrencyId
"
:
1
},{
"
type
"
:
1
,
"
fullAmount
"
:
5
,
"
fullCurrencyId
"
:
1
,
"
reduceAmount
"
:
2
,
"
reduceCurrencyId
"
:
1
},{
"
type
"
:
2
,
"
fullAmount
"
:
2
,
"
fullCurrencyId
"
:
1
,
"
reduceAmount
"
:
1
,
"
reduceCurrencyId
"
:
1
},{
"
type
"
:
2
,
"
fullAmount
"
:
6
,
"
fullCurrencyId
"
:
1
,
"
reduceAmount
"
:
3
,
"
reduceCurrencyId
"
:
1
}],
"
isSimilarSuperposition
"
:
false
,
"
couponIds
"
:
""
,
"
suitableUserType
"
:
0
,
"
suitableLineType
"
:
0
,
"
suitableProdType
"
:
0
,
"
limitNum
"
:
1
,
"
overdueStatus
"
:
true
,
"
putonStatus
"
:
1
,
"
getWay
"
:
1
,
"
orderAttr
"
:
"
1,2,3
"
,
"
isSiteContent
"
:
false
,
"
brand
"
:
"
0,1
"
,
"
isCargoControl
"
:
"
1,0
"
,
"
documentDeclaration
"
:
"
1,2,3
"
,
"
status
"
:
1
,
"
prodList
"
:[],
"
isDefault
"
:
false
},{
"
couponId
"
:
73
,
"
titleZh
"
:
"
3-2,2-1
"
,
"
titleEn
"
:
"
3-2,2-1
"
,
"
type
"
:
2
,
"
cashCondition
"
:
0
,
"
reduceAmount
"
:
2
,
"
reduceCurrencyId
"
:
1
,
"
startTime
"
:
"
2022-01-01 00:00:00
"
,
"
afterReceiveDays
"
:
0
,
"
costType
"
:
1
,
"
discountDetailed
"
:
"
[{
\"
type
\"
: 1,
\"
fullAmount
\"
: 2,
\"
reduceAmount
\"
: 1,
\"
fullCurrencyId
\"
: 1,
\"
reduceCurrencyId
\"
: 1}, {
\"
type
\"
: 1,
\"
fullAmount
\"
: 3,
\"
reduceAmount
\"
: 2,
\"
fullCurrencyId
\"
: 1,
\"
reduceCurrencyId
\"
: 1}, {
\"
type
\"
: 2,
\"
fullAmount
\"
: 2,
\"
reduceAmount
\"
: 1,
\"
fullCurrencyId
\"
: 1,
\"
reduceCurrencyId
\"
: 1}, {
\"
type
\"
: 2,
\"
fullAmount
\"
: 3,
\"
reduceAmount
\"
: 2,
\"
fullCurrencyId
\"
: 1,
\"
reduceCurrencyId
\"
: 1}]
"
,
"
discountDetailedVOList
"
:[{
"
type
"
:
1
,
"
fullAmount
"
:
2
,
"
fullCurrencyId
"
:
1
,
"
reduceAmount
"
:
1
,
"
reduceCurrencyId
"
:
1
},{
"
type
"
:
1
,
"
fullAmount
"
:
3
,
"
fullCurrencyId
"
:
1
,
"
reduceAmount
"
:
2
,
"
reduceCurrencyId
"
:
1
},{
"
type
"
:
2
,
"
fullAmount
"
:
2
,
"
fullCurrencyId
"
:
1
,
"
reduceAmount
"
:
1
,
"
reduceCurrencyId
"
:
1
},{
"
type
"
:
2
,
"
fullAmount
"
:
3
,
"
fullCurrencyId
"
:
1
,
"
reduceAmount
"
:
2
,
"
reduceCurrencyId
"
:
1
}],
"
isSimilarSuperposition
"
:
false
,
"
couponIds
"
:
""
,
"
suitableUserType
"
:
0
,
"
suitableLineType
"
:
0
,
"
suitableProdType
"
:
0
,
"
limitNum
"
:
1
,
"
overdueStatus
"
:
true
,
"
putonStatus
"
:
1
,
"
getWay
"
:
1
,
"
orderAttr
"
:
"
1,2,3
"
,
"
isSiteContent
"
:
false
,
"
brand
"
:
"
0,1
"
,
"
isCargoControl
"
:
"
0,1
"
,
"
documentDeclaration
"
:
"
1,2,3
"
,
"
status
"
:
1
,
"
prodList
"
:[],
"
isDefault
"
:
false
},{
"
couponId
"
:
71
,
"
titleZh
"
:
"
金额满2减1
"
,
"
titleEn
"
:
"
金额满2减1
"
,
"
type
"
:
2
,
"
cashCondition
"
:
0
,
"
reduceAmount
"
:
5
,
"
reduceCurrencyId
"
:
1
,
"
startTime
"
:
"
2022-01-01 00:00:00
"
,
"
afterReceiveDays
"
:
0
,
"
costType
"
:
1
,
"
discountDetailed
"
:
"
[{
\"
type
\"
: 1,
\"
fullAmount
\"
: 2,
\"
reduceAmount
\"
: 1,
\"
fullCurrencyId
\"
: 1,
\"
reduceCurrencyId
\"
: 1}, {
\"
type
\"
: 1,
\"
fullAmount
\"
: 10,
\"
reduceAmount
\"
: 5,
\"
fullCurrencyId
\"
: 1,
\"
reduceCurrencyId
\"
: 1}]
"
,
"
discountDetailedVOList
"
:[{
"
type
"
:
1
,
"
fullAmount
"
:
2
,
"
fullCurrencyId
"
:
1
,
"
reduceAmount
"
:
1
,
"
reduceCurrencyId
"
:
1
},{
"
type
"
:
1
,
"
fullAmount
"
:
10
,
"
fullCurrencyId
"
:
1
,
"
reduceAmount
"
:
5
,
"
reduceCurrencyId
"
:
1
}],
"
isSimilarSuperposition
"
:
true
,
"
couponIds
"
:
""
,
"
suitableUserType
"
:
0
,
"
suitableLineType
"
:
0
,
"
suitableProdType
"
:
0
,
"
limitNum
"
:
1
,
"
overdueStatus
"
:
true
,
"
putonStatus
"
:
1
,
"
getWay
"
:
1
,
"
orderAttr
"
:
"
1,2,3
"
,
"
isSiteContent
"
:
false
,
"
brand
"
:
"
0,1
"
,
"
isCargoControl
"
:
"
1,0
"
,
"
documentDeclaration
"
:
"
1,2,3
"
,
"
status
"
:
1
,
"
prodList
"
:[],
"
isDefault
"
:
false
}],
"
prodId
"
:
22
,
"
type
"
:
2
}
],
// couponList: [
],
fee
:
{},
// 费用
// 表单参数
form
:
{
...
...
@@ -497,17 +496,26 @@ export default {
},
// 表单校验
rules
:
{
/* number: [{ required: true, message: "报价单号不能为空", trigger: "blur" }],
consignorId: [{ required: true, message: "客户id,发货人不能为空", trigger: "blur" }],
consigneeId: [{ required: true, message: "收货人id不能为空", trigger: "blur" }],
sendstatus: [{ required: true, message: "站内信状态,0未发送,1已发送不能为空", trigger: "blur" }], */
lineId
:
[{
required
:
true
,
message
:
"
请选择线路
"
}],
consignorId
:
[{
required
:
true
,
message
:
"
发货人不能为空
"
,}],
consigneeId
:
[{
required
:
true
,
message
:
"
收货人不能为空
"
}],
startTime
:
[{
required
:
true
,
message
:
"
有效期开始时间不能为空
"
}],
endTime
:
[{
required
:
true
,
message
:
"
有效期结束时间不能为空
"
}],
transportId
:
[{
required
:
true
,
message
:
"
选择运输方式
"
}],
channelId
:
[{
required
:
true
,
message
:
"
选择出货渠道
"
}],
/*sendstatus: [{ required: true, message: "站内信状态,0未发送,1已发送不能为空", trigger: "blur" }], */
},
labelStyle
:
'
width:120px
'
,
productNames
:
{}
// 品名id和名称对应关系
productNames
:
{},
// 品名id和名称对应关系
couponAvailableGroupDtoList
:
[],
// 可用优惠
couponTotalAmountList
:
[],
// 优惠总额
contactChooseType
:
null
,
// 联系人选择对象consignor(发货人) 或者 consignee(收货人)
quickCreateType
:
null
,
// 快速新建客户类型,1发货人,2收货人
getOpenedRouterListHandler
:
undefined
};
},
computed
:{
expo
er
CityList
(){
expo
rt
CityList
(){
return
this
.
tradeCityList
.
filter
(
item
=>
item
.
type
==
2
)
},
importCityList
(){
...
...
@@ -573,28 +581,67 @@ export default {
return
sum
},
// 总有优惠金额
discount
(){
let
discount
=
{
// curreny: amount
}
this
.
couponList
.
forEach
(
item
=>
{
if
(
item
.
selectedIndex
!==
null
){
let
selected
=
item
.
options
[
item
.
selectedIndex
]
if
(
!
discount
[
selected
.
reduceCurrencyId
])
discount
[
selected
.
reduceCurrencyId
]
=
0
discount
[
selected
.
reduceCurrencyId
]
+=
selected
.
reduceAmount
couponList
(){
let
arr
=
[]
this
.
couponAvailableGroupDtoList
.
forEach
(
item
=>
{
if
(
item
.
couponAvailableDtoList
&&
item
.
couponAvailableDtoList
.
length
){
// 只取第一个
let
item
=
item
.
couponAvailableDtoList
[
0
]
arr
.
push
({
prodId
:
item
.
prodId
,
type
:
it
.
type
,
titleZh
:
it
.
titleZh
,
titleEn
:
it
.
titleEn
,
endTime
:
it
.
endTime
,
reduceAmount
:
it
.
reduceAmount
,
reduceCurrencyId
:
it
.
reduceCurrencyId
})
}
})
return
discount
},
discountArr
(){
let
discount
=
[]
for
(
let
currency
in
this
.
discount
){
discount
.
push
({
reduceAmount
:
this
.
discount
[
currency
],
reduceCurrencyId
:
currency
return
arr
},
// 计算返回的费用清单
feeDtoList
(){
return
this
.
fee
.
feeDtoList
||
[]
},
// 清关费
clearanceFeeList
(){
return
this
.
feeDtoList
.
filter
(
item
=>
item
.
feeType
==
2
)
},
// 运费
freightFeeList
(){
return
this
.
feeDtoList
.
filter
(
item
=>
item
.
feeType
==
1
)
},
// 原价(清关费 + 运费)
originalFeeList
(){
let
arr
=
[]
this
.
clearanceFeeList
.
forEach
(
item
=>
{
let
it
=
{...
item
}
let
freight
=
this
.
freightFeeList
.
find
(
fee
=>
fee
.
currencyId
==
item
.
currencyId
)
if
(
freight
){
it
.
amount
+=
freight
.
amount
}
arr
.
push
(
it
)
})
}
return
discount
return
arr
},
// 预计费用(原价 - 优惠金额)
estimatedCosts
(){
let
arr
=
[]
this
.
originalFeeList
.
forEach
(
item
=>
{
let
it
=
{...
item
}
let
coupon
=
this
.
couponList
.
find
(
coupon
=>
coupon
.
reduceCurrencyId
==
item
.
currencyId
)
if
(
coupon
){
it
.
amount
-=
coupon
.
reduceAmount
}
arr
.
push
(
it
)
})
return
arr
},
// 路线开通的服务
routeOtherServices
(){
if
(
!
this
.
selectedRouter
||
!
this
.
selectedRouter
.
otherService
)
return
[]
return
this
.
selectedRouter
.
otherService
.
split
(
'
,
'
)
}
/* productKeyd(){
return arrryToKeyedObjectBy(this.productList, 'prodId')
...
...
@@ -617,12 +664,18 @@ export default {
},
'
form.lineId
'
(
lineId
){
let
router
=
this
.
routerList
.
find
(
item
=>
item
.
id
==
lineId
)
if
(
!
router
)
return
this
.
$set
(
this
.
form
,
'
departureId
'
,
router
.
startCityId
)
this
.
$set
(
this
.
form
,
'
objectiveId
'
,
router
.
destCityId
)
// TODO 还需要回填渠道信息,暂时缺少渠道ID
},
fee
(){
this
.
getCoupons
()
// 选择的路线变化后,需要判断是否开通了对应的服务,如果没开通需要取消对应的服务选择
selectedRouter
(
val
){
if
(
!
val
)
return
[
'
1
'
,
'
4
'
].
forEach
(
service
=>
{
if
(
this
.
routeOtherServices
.
indexOf
(
service
)
<
0
&&
this
.
form
.
type
.
indexOf
(
service
)
>
-
1
){
this
.
form
.
type
.
splice
(
this
.
form
.
type
.
findIndex
(
item
=>
item
==
service
),
1
)
}
})
}
},
created
()
{
...
...
@@ -635,7 +688,10 @@ export default {
if
(
this
.
$route
.
query
.
id
){
getOffer
(
this
.
$route
.
query
.
id
).
then
(
res
=>
{
this
.
$set
(
this
,
'
form
'
,
res
.
data
)
let
formData
=
res
.
data
formData
.
type
=
formData
.
type
?
formData
.
type
.
split
(
'
,
'
).
filter
(
item
=>
item
!=
''
)
:
[]
this
.
$set
(
this
,
'
form
'
,
formData
)
if
(
res
.
data
.
offerProdRespVOList
){
res
.
data
.
offerProdRespVOList
.
forEach
(
item
=>
{
this
.
addProduct
({
...
...
@@ -655,12 +711,19 @@ export default {
})
})
}
console
.
log
(
'
res.data.transportRespVOList
'
,
res
.
data
.
transportRespVOList
)
res
.
data
.
transportRespVOList
.
forEach
(
item
=>
{
// 接口只返回了发货人和收货人ID,还需要调用接口获取详细信息回显
getCustomerContactsSelect
({
ids
:
[
res
.
data
.
consigneeId
,
res
.
data
.
consignorId
].
join
(
'
,
'
)}).
then
(({
data
})
=>
{
this
.
contactChooseType
=
'
consignee
'
this
.
onContactChoose
(
data
.
find
(
item
=>
item
.
customerContactsId
==
res
.
data
.
consigneeId
))
this
.
contactChooseType
=
'
consignor
'
this
.
onContactChoose
(
data
.
find
(
item
=>
item
.
customerContactsId
==
res
.
data
.
consignorId
))
})
/* res.data.transportRespVOList.forEach(item => {
let transport = this.transportList.find(t => t.transportId == item.transportId)
console.log(item.transportId, transport)
Object.assign(transport, item, {_enabled: true})
})
})
*/
/* this.$nextTick(() => {
this.updateEnabledTransports()
}) */
...
...
@@ -668,11 +731,22 @@ export default {
}
//else this.addProduct()
},
methods
:
{
/* onTransportChange(row, val){
this.getProductFee(row)
if(this.getDictData(this.DICT_TYPE.ECW_TRANSPORT_TYPE, val).cssClass != 'channel') row.channelId = null
this.updateEnabledTransports()
}, */
onContactChoose
(
contact
){
console
.
log
(
'
选择联系人
'
,
contact
)
if
(
!
this
.
contactChooseType
&&
!
this
.
quickCreateType
)
return
if
(
!
this
.
contactChooseType
&&
this
.
quickCreateType
){
this
.
contactChooseType
=
this
.
quickCreateType
==
1
?
'
consignor
'
:
'
consignee
'
}
this
.
$set
(
this
.
form
,
this
.
contactChooseType
+
'
Company
'
,
contact
.
company
)
this
.
$set
(
this
.
form
,
this
.
contactChooseType
+
'
Id
'
,
contact
.
customerContactsId
)
this
.
$set
(
this
.
form
,
this
.
contactChooseType
+
'
CountryCode
'
,
contact
.
areaCode
)
this
.
$set
(
this
.
form
,
this
.
contactChooseType
+
'
Email
'
,
contact
.
email
)
// this.$set(this.form, this.contactChooseType + 'Id', contact.customerId)
this
.
$set
(
this
.
form
,
this
.
contactChooseType
+
'
Name
'
,
contact
.
contactsName
)
this
.
$set
(
this
.
form
,
this
.
contactChooseType
+
'
Phone
'
,
contact
.
phoneNew
)
this
.
contactChooseType
=
null
this
.
quickCreateType
=
null
},
/* onProductChange(row, product){
row.goodsType = product.typeId;
// 保存商品id和品名,用于优惠信息显示
...
...
@@ -683,6 +757,10 @@ export default {
console
.
log
(
product
)
row
.
goodsType
=
product
?
product
.
typeId
:
null
row
.
prodAttrArr
=
!
product
?
[]
:
product
.
attrId
.
split
(
'
,
'
).
filter
(
item
=>
item
!==
''
).
map
(
item
=>
+
item
)
this
.
$set
(
this
.
productNames
,
product
.
id
,
{
titleZh
:
product
.
titleZh
,
titleEn
:
product
.
titleEn
})
},
onLineChange
(
row
){
this
.
calculationPrice
()
...
...
@@ -694,51 +772,15 @@ export default {
onProductAttrChange
(
row
,
attr
){
this
.
calculationPrice
()
},
// 更新运输方式
/* updateEnabledTransports(){
let enabled = {}
this.productList.forEach(prod => {
if(prod.transportId){
if(!enabled[prod.transportId]){
enabled[prod.transportId] = {
// transportId: prod.transportId,
lineIdSet: new Set(),
channelIdSet: new Set(),
routers:[]
}
}
if(prod.lineId){
enabled[prod.transportId].lineIdSet.add(prod.lineId)
}
if(prod.channelId){
enabled[prod.transportId].channelIdSet.add(prod.channelId)
}
if(prod.lineId && enabled[prod.transportId].routers.findIndex(item => { item.lineId == prod.lineId && item.channelId == prod.channelId }) < 0){
enabled[prod.transportId].routers.push({
lineId: prod.lineId,
channelId: prod.channelId
})
}
}
})
console.log(JSON.stringify(enabled))
let enabledTransportIds = Object.keys(enabled).map(item => +item)
this.transportList.forEach(transport => {
this.$set(transport, '_enabled', enabledTransportIds.indexOf(transport.transportId) > -1 && enabled[transport.transportId].routers.length)
if(transport._enabled){
Object.assign(transport, enabled[transport.transportId])
}
})
}, */
addProduct
(
data
){
if
(
!
data
&&
!
this
.
form
.
lineId
){
return
this
.
$message
.
error
(
this
.
$t
(
'
请先选择路线
'
))
}
console
.
log
(
'
addProduct
'
,
JSON
.
stringify
(
data
))
this
.
productList
.
push
(
data
||
{
prodAttrArr
:[]})
},
// 计算商品运费
getProductFee
(
row
){
/*
getProductFee(row){
if(!row.prodId || !row.transportId || !row.lineId || !row.num || !row.weight)return false
if(row.prodAttrArr){
row.prodAttrIds = row.prodAttrArr.join(',')
...
...
@@ -746,7 +788,7 @@ export default {
getProductFeeList(row).then(res => {
this.$set(row, 'fee', res.data[0] || {})
})
},
},
*/
// 获取路线
getOpenedRouterList
(){
let
params
=
{}
...
...
@@ -780,39 +822,6 @@ export default {
this
.
productList
.
splice
(
index
,
1
)
})
},
getCoupons
(){
console
.
log
(
'
getCoupons
'
)
// if(!this.form.consigneeContactsId || !this.form.consignorContactsId) return false
let
data
=
Object
.
assign
({},
this
.
form
,
{
prodConditionParamList
:
this
.
productList
,
consigneeCustomerContactsId
:
this
.
form
.
consigneeId
,
consignorCustomerContactsId
:
this
.
form
.
consignorId
})
getCustomerAvailableCouponList
(
data
)
.
then
(
res
=>
{
// 对优惠信息按照商品 + 类型 分组展示
let
list
=
{}
res
.
data
.
couponAvailableGroupDtoList
.
forEach
(
item
=>
{
item
.
couponAvailableDtoList
.
forEach
(
coupon
=>
{
let
key
=
item
.
prodId
+
'
_
'
+
coupon
.
type
if
(
!
list
[
key
]){
list
[
key
]
=
{
selectedIndex
:
null
,
options
:
[],
prodId
:
item
.
prodId
,
type
:
coupon
.
type
}
}
list
[
key
].
options
.
push
(
coupon
)
})
})
this
.
couponList
=
Object
.
values
(
list
)
})
},
// 显示更多报价
showMorePrice
(
index
){
console
.
log
(
'
显示更多报价
'
,
index
)
},
/** 提交按钮 */
submitForm
()
{
this
.
$refs
[
"
form
"
].
validate
(
valid
=>
{
...
...
@@ -887,12 +896,14 @@ export default {
customsType
:
this
.
form
.
customsType
,
isCargoControl
:
this
.
form
.
control
,
orderType
:
this
.
form
.
orderType
,
}).
then
(
res
=>
{
this
.
$set
(
this
,
'
fee
'
,
res
.
data
.
costDto
)
/* this.$set(this, 'fee', res.data.costDto)
this.$set(this, 'couponTotalAmountList', res.data.availableDto.couponTotalAmountList)
this.$set(this, 'couponAvailableGroupDtoList', res.data.availableDto.couponAvailableGroupDtoList)
this.productList.map((item, index) => {
this.$set(item, 'fee', res.data.prodCostDtoList[index])
})
})
*/
}).
finally
(()
=>
{
this
.
calculating
=
false
})
...
...
@@ -908,7 +919,17 @@ export default {
flex
:
1
;
}
}
.mt-10
{
margin-top
:
10px
;
.form-section
{
.contact
{
display
:
flex
;
align-items
:
center
;
img
.phonebook
{
width
:
30px
;
height
:
30px
;
margin-left
:
10px
;
cursor
:
pointer
;
}
}
}
</
style
>
\ No newline at end of file
src/views/ecw/order/edit.vue
View file @
cfcfa44c
...
...
@@ -87,7 +87,7 @@
<dict-selector
:type=
"DICT_TYPE.ECW_TRANSPORT_TYPE"
v-model=
"form.transportId"
:disabled=
"form.status !== 0"
/>
</el-form-item>
<el-form-item
:label=
"$t('出货渠道')"
prop=
"channelId"
required
v-if=
"getDictData(DICT_TYPE.ECW_TRANSPORT_TYPE, form.transportId).cssClass == 'channel'"
:error=
"$t('请选择出货渠道')
"
>
<el-form-item
:label=
"$t('出货渠道')"
prop=
"channelId"
v-if=
"getDictData(DICT_TYPE.ECW_TRANSPORT_TYPE, form.transportId).cssClass == 'channel'
"
>
<selector
:disabled=
"form.status !== 0 || getDictData(DICT_TYPE.ECW_TRANSPORT_TYPE, form.transportId).cssClass != 'channel'"
v-model=
"form.channelId"
...
...
@@ -119,25 +119,6 @@
</
template
>
</select>
</div>
<!-- <el-descriptions :column="3" border>
<el-descriptions-item :label="$t('运输方式')" :labelStyle="labelStyle">
</el-descriptions-item>
<el-descriptions-item :label="$t('出货渠道')" v-if="getDictData(DICT_TYPE.ECW_TRANSPORT_TYPE, form.transportId).cssClass == 'channel'" :labelStyle="labelStyle">
</el-descriptions-item>
</el-descriptions>
<el-descriptions :column="2" border>
<el-descriptions-item :label="$t('始发城市')" :labelStyle="labelStyle">
</el-descriptions-item>
<el-descriptions-item :label="$t('目的城市')" :labelStyle="labelStyle">
</el-descriptions-item>
<el-descriptions-item :label="$t('请选择线路')" :span="2" :labelStyle="labelStyle">
</el-descriptions-item>
</el-descriptions> -->
</el-card>
<el-card
class=
"mt-10"
>
<div
slot=
"header"
class=
"card-title"
>
...
...
@@ -255,7 +236,7 @@
</el-table-column>
<el-table-column
:label=
"$t('快递单号')"
width=
"100px"
>
<
template
slot-scope=
"{row}"
>
<el-input
v-model=
"row.expressNo"
placeholder=
"
缺少字段
"
/>
<el-input
v-model=
"row.expressNo"
placeholder=
""
/>
</
template
>
</el-table-column>
</el-table>
...
...
@@ -344,46 +325,47 @@
<el-card
class=
"mt-10"
>
<div
class=
"card-title"
slot=
"header"
>
{{$t('通用')}}
</div>
<el-descriptions
:column=
"2"
border
>
<el-descriptions-item
:label=
"$t('唛头')"
>
<el-form-item
label=
""
prop=
"marks"
label-width=
"0"
style=
"margin-bottom: 0"
>
<div
class=
"form-section"
>
<el-form-item
label=
"唛头"
prop=
"marks"
>
<el-input
v-model=
"form.marks"
placeholder=
""
></el-input>
</el-form-item>
</el-descriptions-item>
<el-descriptions-item
:label=
"$t('是否控货')"
>
<el-form-item
label=
"是否控货"
prop=
"marks"
class=
"ml-20"
>
<dict-selector
:type=
"DICT_TYPE.INFRA_BOOLEAN_STRING"
formatter=
"bool"
v-model=
"form.isCargoControl"
form-type=
"radio"
/>
</el-
descriptions
-item>
<!--代收货款,只有非控货订单、并且线路开通了代收货款后,才显示是否代收货款选项--
>
<el-
descriptions-item
:label=
"$t('是否代收货款')"
v-if=
"collectionProxy
"
>
</el-
form
-item>
</div>
<div
class=
"form-section"
v-if=
"collectionProxy"
>
<el-
form-item
:label=
"$t('是否代收货款')"
prop=
"isCollection
"
>
<dict-selector
:type=
"DICT_TYPE.INFRA_BOOLEAN_STRING"
formatter=
"bool"
v-model=
"form.isCollection"
form-type=
"radio"
/>
</el-descriptions-item>
<el-descriptions-item
:label=
"$t('代收货款金额')"
v-if=
"collectionProxy"
>
</el-form-item>
<!--代收货款,只有非控货订单、并且线路开通了代收货款后,才显示是否代收货款选项-->
<el-form-item
:label=
"$t('代收货款金额')"
v-if=
"collectionProxy && form.isCollection"
prop=
"collectionProxy"
class=
"ml-20"
>
<el-input
v-model=
"form.collectionProxy"
placeholder=
""
class=
"w-200 mr-10"
></el-input>
<selector
v-model=
"form.collectionProxyCurrency"
:options=
"currencyList"
label-field=
"titleZh"
value-field=
"id"
defaultable
class=
"w-100"
/>
</el-descriptions-item>
<el-descriptions-item
:label=
"$t('单证报关')"
:span=
"2"
>
</el-form-item>
</div>
<div
class=
"form-section"
>
<el-form-item
:label=
"$t('单证报关')"
:span=
"2"
prop=
"customsType"
>
<dict-selector
:type=
"DICT_TYPE.ECW_CUSTOMS_TYPE"
v-model=
"form.customsType"
form-type=
"radio"
defaultable
/>
</el-descriptions-item>
<el-descriptions-item
:label=
"$t('出单方式')"
>
</el-form-item>
</div>
<div>
<el-form-item
:label=
"$t('出单方式')"
prop=
"issuingMethod"
>
<dict-selector
:type=
"DICT_TYPE.ECW_SUING_METHOD"
v-model=
"form.issuingMethod"
form-type=
"radio"
defaultable
/>
</el-descriptions-item>
<el-descriptions-item
:label=
"$t('送货日期')"
>
<el-form-item
label=
""
label-width=
"0"
style=
"margin-bottom: 0"
prop=
"deliveryDate"
>
</el-form-item>
<el-form-item
:label=
"$t('送货日期')"
prop=
"deliveryDate"
class=
"ml-20"
>
<el-date-picker
v-model=
"form.deliveryDate"
value-format=
"yyyy-MM-dd HH:mm:ss"
></el-date-picker>
</el-form-item>
</el-descriptions-item>
<el-descriptions-item
:label=
"$t('入仓类型')"
>
</div>
<div>
<el-form-item
:label=
"$t('入仓类型')"
prop=
"warehouseType"
>
<dict-selector
:type=
"DICT_TYPE.ECW_WAREHOUSING_TYPE"
v-model=
"form.warehouseType"
defaultable
/>
</el-
descriptions
-item>
<el-
descriptions-item
:label=
"$t('收货方式')
"
>
</el-
form
-item>
<el-
form-item
:label=
"$t('收货方式')"
prop=
"harvestMethod"
class=
"ml-20
"
>
<dict-selector
:type=
"DICT_TYPE.ECW_HARVEST_METHOD"
v-model=
"form.harvestMethod"
:filter=
"item => item.value == 1 || homeDeliveryService"
defaultable
/>
</el-descriptions-item>
<el-descriptions-item
:label=
"$t('收货地区')"
:span=
"2"
v-if=
"homeDeliveryService"
>
</el-form-item>
</div>
<div
v-if=
"homeDeliveryService && form.harvestMethod == 2"
>
<el-form-item
:label=
"$t('收货地区')"
>
<area-selector
:country=
"form.consigneeVO ? form.consigneeVO.country : undefined"
:province=
"form.consigneeVO ? form.consigneeVO.province : undefined"
...
...
@@ -392,24 +374,24 @@
@
provinceChange=
"onAreaChange('province', $event)"
@
cityChange=
"onAreaChange('city', $event)"
></area-selector>
</el-descriptions-item>
<el-descriptions-item
:label=
"$t('收货详细地址')"
:span=
"2"
v-if=
"homeDeliveryService"
>
<el-form-item
label=
""
label-width=
"0"
style=
"margin-bottom: 0"
prop=
"consigneeAddress"
>
</el-form-item>
<el-form-item
:label=
"$t('收货详细地址')"
prop=
"consigneeAddress"
>
<el-input
v-model=
"form.consigneeAddress"
placeholder=
""
></el-input>
</el-form-item>
</el-descriptions-item
>
<el-
descriptions-item
:label=
"$t('付款人')"
:span=
"2
"
>
</div
>
<div>
<el-
form-item
:label=
"$t('付款人')"
prop=
"drawee
"
>
<dict-selector
:type=
"DICT_TYPE.DRAWEE"
v-model=
"form.drawee"
defaultable
form-type=
"radio"
/>
</el-descriptions-item>
<el-descriptions-item
v-if=
"form.drawee==3"
:label=
"$t('费用类型')"
:span=
"2"
>
<
template
v-for=
"(item,index) in customDraweeList"
v-key=
"index"
>
<el-form-item
:label=
"item.label"
:key=
"index"
>
<dict-selector
:type=
"DICT_TYPE.DRAWEE"
:filter=
"(e) => e.value == '1' || e.value == '2'"
v-model=
"item.value"
form-type=
"radio"
/>
</el-form-item>
<el-table
:data=
"customDraweeList"
v-if=
"form.drawee==3"
>
<el-table-column
label=
"费用类型"
prop=
"label"
width=
"200px"
></el-table-column>
<el-table-column
label=
"付款人"
width=
"300px"
>
<
template
slot-scope=
"{row}"
>
<dict-selector
:type=
"DICT_TYPE.DRAWEE"
:filter=
"(e) => e.value == '1' || e.value == '2'"
v-model=
"row.value"
form-type=
"radio"
/>
</
template
>
</el-descriptions-item>
</el-descriptions>
</el-table-column>
</el-table>
</el-form-item>
</div>
</el-card>
<el-card
class=
"mt-10"
v-if=
"transport"
>
...
...
@@ -419,6 +401,7 @@
<el-button
type=
"primary"
slot=
"append"
@
click=
"getOrderCourierNumber"
>
{{$t('生成单号')}}
</el-button>
</el-input>
</el-form-item>
<br/>
<el-form-item
:label=
"$t('是否双清')"
v-if=
"[2,3,4].indexOf(+form.transportId) > -1"
>
<dict-selector
v-model=
"form.doubleClear"
form-type=
"radio"
:type=
"DICT_TYPE.ECW_DOUBLE_CLEAR"
/>
</el-form-item>
...
...
@@ -442,14 +425,17 @@
<el-form-item
label=
"是否拆包"
v-if=
"[3,4].indexOf(+form.transportId) > -1"
>
<dict-selector
v-model=
"form.isUnpack"
form-type=
"radio"
:type=
"DICT_TYPE.INFRA_BOOLEAN_STRING"
fomatter=
"bool"
/>
</el-form-item>
<div
class=
"form-section"
>
<el-form-item
:label=
"$t('单票立刻转运')"
v-if=
"[3,4].indexOf(+form.transportId) > -1"
>
<dict-selector
v-model=
"form.isSingleTicketTransport"
form-type=
"radio"
:type=
"DICT_TYPE.INFRA_BOOLEAN_STRING"
fomatter=
"bool"
/>
<span
style=
"margin-left:10px"
>
{{$t('注:若只有一件,货到仓库立即发,选“是”,多件需仓库集运待发,选“否”')}}
</span>
</el-form-item>
</div>
<div
class=
"form-section"
>
<el-form-item
:label=
"$t('特殊要求')"
>
<dict-selector
v-model=
"form.packageType"
form-type=
"checkbox"
:type=
"DICT_TYPE.ORDER_SPECIAL_NEEDS"
multiple
/>
</el-form-item>
</div>
<el-form-item
:label=
"$t('特殊要求备注')"
>
<el-input
v-model=
"form.packageRemarks"
></el-input>
</el-form-item>
...
...
@@ -459,7 +445,7 @@
<el-form-item
label=
""
style=
"margin: 30px 0"
>
<el-button
type=
"primary"
@
click=
"submitForm(0)"
>
{{$t('保存')}}
</el-button>
<!--草稿-->
<el-button
type=
"primary"
@
click=
"submitForm(2)"
>
{{$t('新建')}}
</el-button>
<!--待入仓-->
<el-button
@
click=
"$
router.back(
)"
>
{{$t('返回')}}
</el-button>
<el-button
@
click=
"$
store.dispatch('tagsView/delCurrentView'
)"
>
{{$t('返回')}}
</el-button>
</el-form-item>
</el-form>
...
...
@@ -514,7 +500,7 @@ import {getTradeCityList} from '@/api/ecw/region'
import
{
getDictData
,
getDictDatas
}
from
'
@/utils/dict
'
import
{
getCurrencyList
}
from
'
@/api/ecw/currency
'
import
{
getUnitList
}
from
'
@/api/ecw/unit
'
import
{
getCustomer
}
from
'
@/api/ecw/customer
'
;
import
{
getCustomer
ContactsListByCustomer
}
from
'
@/api/ecw/customerContacts
'
;
import
AreaSelector
from
'
@/components/AreaSelector
'
import
{
calculationPrice
}
from
'
@/api/ecw/product
'
import
{
getCustomerAvailableCouponList
}
from
'
@/api/ecw/coupon
'
...
...
@@ -745,12 +731,27 @@ export default {
this
.
form
=
res
.
data
/* this.form.consignorContactsId = res.data.consignorVO.customerContactsId
this.form.consigneeContactsId = res.data.consigneeVO.customerContactsId */
this
.
form
.
deliveryDate
=
res
.
data
.
consigneeVO
.
deliveryDate
this
.
form
.
orderItemVOList
.
forEach
(
item
=>
{
item
.
prodAttrArr
=
item
.
prodAttrIds
.
split
(
'
,
'
).
filter
(
item
=>
item
!=
''
)
this
.
addProduct
(
Object
.
assign
({},
item
))
})
this
.
form
.
type
=
this
.
form
.
type
?
this
.
form
.
type
.
split
(
'
,
'
).
filter
(
item
=>
item
!=
''
)
:
[]
this
.
$set
(
this
.
form
,
'
consignorCompany
'
,
res
.
data
.
consignorVO
.
company
)
this
.
$set
(
this
.
form
,
'
consignorContactsId
'
,
res
.
data
.
consignorVO
.
customerContactsId
)
this
.
$set
(
this
.
form
,
'
consignorCountryCode
'
,
res
.
data
.
consignorVO
.
countryCode
)
this
.
$set
(
this
.
form
,
'
consignorEmail
'
,
res
.
data
.
consignorVO
.
email
)
this
.
$set
(
this
.
form
,
'
consignorId
'
,
res
.
data
.
consignorVO
.
customerId
)
this
.
$set
(
this
.
form
,
'
consignorName
'
,
res
.
data
.
consignorVO
.
name
)
this
.
$set
(
this
.
form
,
'
consignorPhone
'
,
res
.
data
.
consignorVO
.
phone
)
this
.
$set
(
this
.
form
,
'
consigneeCompany
'
,
res
.
data
.
consigneeVO
.
company
)
this
.
$set
(
this
.
form
,
'
consigneeContactsId
'
,
res
.
data
.
consigneeVO
.
customerContactsId
)
this
.
$set
(
this
.
form
,
'
consigneeCountryCode
'
,
res
.
data
.
consigneeVO
.
countryCode
)
this
.
$set
(
this
.
form
,
'
consigneeEmail
'
,
res
.
data
.
consigneeVO
.
email
)
this
.
$set
(
this
.
form
,
'
consigneeId
'
,
res
.
data
.
consigneeVO
.
customerId
)
this
.
$set
(
this
.
form
,
'
consigneeName
'
,
res
.
data
.
consigneeVO
.
name
)
this
.
$set
(
this
.
form
,
'
consigneePhone
'
,
res
.
data
.
consigneeVO
.
phone
)
})
}
else
this
.
addProduct
()
...
...
@@ -769,6 +770,11 @@ export default {
})
},
methods
:
{
/* onCustomerCreate(customer){
getCustomerContactsListByCustomer({customerId: customer.customerId}).then(res => {
this.onContactChoose(res.data[0])
})
}, */
onContactChoose
(
contact
){
console
.
log
(
'
选择联系人
'
,
contact
)
if
(
!
this
.
contactChooseType
&&
!
this
.
quickCreateType
)
return
...
...
src/views/ecw/supplier/edit.vue
View file @
cfcfa44c
...
...
@@ -3,16 +3,22 @@
<el-form
ref=
"elForm"
:model=
"formData"
:rules=
"rules"
size=
"small"
label-width=
"100px"
label-position=
"left"
>
<el-form-item
:label=
"$t('公司全称')"
prop=
"companyZh"
>
<el-input
v-model=
"formData.companyZh"
:placeholder=
"$t('请输入公司全称')"
show-word-limit
clearable
:style=
"
{width: '100%'}">
</el-input>
<el-input
v-model=
"formData.companyZh"
:placeholder=
"$t('请输入公司全称')"
show-word-limit
clearable
></el-input>
</el-form-item>
<el-form-item
:label=
"$t('英文名称')"
prop=
"companyEn"
>
<el-input
v-model=
"formData.companyZh"
:placeholder=
"$t('请输入公司英文名')"
show-word-limit
clearable
></el-input>
</el-form-item>
<el-form-item
:label=
"$t('代理名称')"
prop=
"agentName"
>
<
!--
<
el-form-item
:label=
"$t('代理名称')"
prop=
"agentName"
>
<el-input
v-model=
"formData.agentName"
:placeholder=
"$t('请输入代理名称')"
clearable
:style=
"
{width: '100%'}">
</el-input>
</el-form-item>
</el-form-item>
-->
<el-form-item
:label=
"$t('公司电话')"
prop=
"tell"
>
<el-input
v-model=
"formData.tell"
:placeholder=
"$t('请输入公司电话')"
clearable
:style=
"
{width: '100%'}"
>
</el-input>
<el-input
v-model=
"formData.tell"
:placeholder=
"$t('请输入公司电话')"
clearable
></el-input>
</el-form-item>
<el-form-item
:label=
"$t('邮件地址')"
prop=
"email"
>
<el-input
v-model=
"formData.email"
:placeholder=
"$t('请输入邮箱地址')"
clearable
></el-input>
</el-form-item>
<el-form-item
:label=
"$t('公司地址')"
prop=
"address"
>
<!--
<el-select
v-model=
"formData.country"
>
<el-option
v-for=
"(item, index) in treeList"
:value=
"item.id"
:label=
"item.titleZh"
:key=
"item.id"
/>
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment