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
0a9ddf39
Commit
0a9ddf39
authored
Aug 07, 2022
by
dragondean@qq.com
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
优化报价单
parent
e4061001
Changes
4
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
156 additions
and
86 deletions
+156
-86
index.vue
src/components/WorkFlow/index.vue
+11
-9
edit.vue
src/views/ecw/offer/edit.vue
+138
-72
edit.vue
src/views/ecw/order/edit.vue
+6
-4
index.vue
src/views/ecw/order/index.vue
+1
-1
No files found.
src/components/WorkFlow/index.vue
View file @
0a9ddf39
<
template
>
<div>
<my-process-viewer
ref=
"processViewer"
:value=
"bpmnXML"
:prefix=
"prefix"
:activityData=
"activityData"
:processInstanceData=
"processInstanceData"
:taskData=
"taskData"
style=
"height:500px; margin-bottom:10px"
/>
<div
style=
"height:350px; overflow:hidden;"
>
<my-process-viewer
ref=
"processViewer"
:value=
"bpmnXML"
:prefix=
"prefix"
:activityData=
"activityData"
:processInstanceData=
"processInstanceData"
:taskData=
"taskData"
style=
"height:500px; margin-top: -80px"
/>
</div>
<el-form
label-position=
"left"
label-width=
"100px"
>
<el-form-item
label=
"抄送"
>
<el-select
v-model=
"valueSync"
multiple
placeholder=
"请选择抄送人"
style=
"width:100%"
>
...
...
src/views/ecw/offer/edit.vue
View file @
0a9ddf39
...
...
@@ -66,7 +66,7 @@
<el-descriptions
:column=
"2"
border
>
<el-descriptions-item
label=
"*运输方式"
>
<el-form-item
label=
""
label-width=
"0"
style=
"margin-bottom: 0"
prop=
"transportId"
required
error=
"请选择运输方式"
>
<dict-selector
:type=
"DICT_TYPE.ECW_TRANSPORT_TYPE"
v-model=
"form.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=
"出货渠道"
>
...
...
@@ -77,6 +77,7 @@
:options=
"channelList"
value-field=
"channelId"
label-field=
"nameZh"
@
input=
"calculationPrice"
></selector>
</el-form-item>
</el-descriptions-item>
...
...
@@ -101,7 +102,7 @@
<el-input
:value=
"getRouterNameById(form.lineId)"
readonly
placeholder=
"请在右侧选择线路"
></el-input>
</el-col>
<el-col
:span=
"12"
>
<select
size=
"5"
v-model=
"form.lineId"
style=
"min-width: 300px"
>
<select
size=
"5"
v-model=
"form.lineId"
style=
"min-width: 300px"
@
change=
"calculationPrice"
>
<template
v-for=
"item in routerList"
>
<option
:value=
"item.id"
:key=
"item.id"
>
{{
item
.
startTitleZh
}}
>>
{{
item
.
destTitleZh
}}
</option>
</
template
>
...
...
@@ -114,7 +115,7 @@
<el-card
class=
"mt-10"
>
<div
slot=
"header"
class=
"card-title"
>
<div
class=
"card-name"
>
商品信息
</div>
<el-button
type=
"primary"
size=
"mini"
icon=
"el-icon-plus"
@
click=
"addProduct"
></el-button>
<el-button
type=
"primary"
size=
"mini"
icon=
"el-icon-plus"
@
click=
"addProduct
()"
:disabled=
"!form.lineId
"
></el-button>
</div>
<el-table
:data=
"productList"
border
>
<el-table-column
label=
"序号"
width=
"60px"
fixed
>
...
...
@@ -124,48 +125,53 @@
</el-table-column>
<el-table-column
label=
"中文名"
width=
"160px"
>
<
template
slot-scope=
"{row}"
>
<product-selector
v-model=
"row.prodId"
@
change=
"row.goodsType = $event.typeId"
/>
<product-selector
v-model=
"row.prodId"
@
change=
"row.goodsType = $event.typeId
;calculationPrice()
"
/>
</
template
>
</el-table-column>
<el-table-column
label=
"英文名"
width=
"160px"
>
<
template
slot-scope=
"{row}"
>
<product-selector
v-model=
"row.prodId"
@
change=
"row.goodsType = $event.typeId"
/>
<product-selector
v-model=
"row.prodId"
@
change=
"row.goodsType = $event.typeId
;calculationPrice()
"
/>
</
template
>
</el-table-column>
<el-table-column
label=
"商品类型"
width=
"160px"
>
<
template
slot-scope=
"{row}"
>
<selector
disabled
v-model=
"row.goodsType"
:options=
"productAttrList"
label-field=
"attrName"
value-field=
"id"
></selector>
<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=
"品牌"
width=
"100px"
>
<
template
slot-scope=
"{row}"
>
<dict-selector
v-model=
"row.brand"
:type=
"DICT_TYPE.ECW_IS_BRAND"
formatter=
"bool"
defaultable
@
input=
"getProductFee(row)
"
/>
<dict-selector
v-model=
"row.brand"
:type=
"DICT_TYPE.ECW_IS_BRAND"
defaultable
@
input=
"calculationPrice
"
/>
</
template
>
</el-table-column>
<el-table-column
label=
"件数"
width=
"90px"
>
<
template
slot-scope=
"{row}"
>
<el-input
v-model.number=
"row.num"
/>
<el-input
v-model.number=
"row.num"
@
input=
"calculationPrice"
/>
</
template
>
</el-table-column>
<el-table-column
label=
"包装单位"
>
<
template
slot-scope=
"{row}"
>
<dict-selector
v-model=
"row.unit"
:type=
"DICT_TYPE.ECW_PACKAGE_TYPE"
defaultable
/>
<dict-selector
v-model=
"row.unit"
:type=
"DICT_TYPE.ECW_PACKAGE_TYPE"
defaultable
@
input=
"calculationPrice"
/>
</
template
>
</el-table-column>
<el-table-column
label=
"数量"
>
<
template
slot-scope=
"{row}"
>
<el-input
v-model.number=
"row.quantity"
@
input=
"calculationPrice"
/>
</
template
>
</el-table-column>
<el-table-column
label=
"箱规(m)"
width=
"120px"
>
<
template
slot-scope=
"{row}"
>
<el-input
v-model=
"row.boxGauge"
@
input=
"calcVolume(row)"
/>
<el-input
v-model=
"row.boxGauge"
@
input=
"calcVolume(row)
;calculationPrice()
"
/>
</
template
>
</el-table-column>
<el-table-column
label=
"总体积(m³)"
width=
"100px"
>
<
template
slot-scope=
"{row}"
>
<el-input
v-model=
"row.volume"
/>
<el-input
v-model=
"row.volume"
@
input=
"calculationPrice"
/>
</
template
>
</el-table-column>
<el-table-column
label=
"总重量(kg)"
width=
"100px"
>
<
template
slot-scope=
"{row}"
>
<el-input
v-model=
"row.weight"
/>
<el-input
v-model=
"row.weight"
@
input=
"calculationPrice"
/>
</
template
>
</el-table-column>
<el-table-column
label=
"货值(RMB)"
width=
"100px"
>
...
...
@@ -220,6 +226,19 @@
</
template
>
</template>
</el-table-column>
<el-table-column
label=
"是否预付"
>
<
template
slot-scope=
"{row}"
>
<dict-tag
v-if=
"row.fee"
:type=
"DICT_TYPE.ECW_PAY_ADVANCE"
:value=
"row.fee.isPayAdvance"
/>
</
template
>
</el-table-column>
<el-table-column
label=
"商品链接"
width=
"200px"
align=
"center"
>
<
template
slot-scope=
"{row}"
>
<el-link
type=
"primary"
:href=
"row.link"
target=
"_blank"
style=
"display:block"
>
{{
row
.
link
}}
</el-link>
<el-button
type=
"primary"
size=
"mini"
@
click=
"setLink(row)"
>
{{
row
.
link
?
'
编辑商品链接
'
:
'
添加商品链接
'
}}
</el-button>
</
template
>
</el-table-column>
<el-table-column
label=
"操作"
width=
"180px"
fixed=
"right"
>
<
template
slot-scope=
"scope"
>
<el-button
size=
"mini"
type=
"danger"
@
click=
"delProduct(scope.$index)"
>
删除
</el-button>
...
...
@@ -265,51 +284,7 @@
</el-descriptions-item> -->
</el-descriptions>
</el-card>
<
template
v-for=
"(item, index) in transportList"
>
<el-card
class=
"mt-10"
:key=
"index"
v-if=
"item._enabled"
:data-enabled=
"item._enabled"
>
<div
class=
"card-title"
slot=
"header"
>
{{
item
.
label
}}
</div>
<el-form-item
v-for=
"(router, routerIndex) in item.routers"
:key=
"routerIndex"
:label=
"item.label.substr(0, 2) + '线路' + (routerIndex + 1)"
>
<el-col
:span=
"12"
>
{{
getRouterNameById
(
router
.
lineId
)
}}
</el-col>
<el-col
:span=
"12"
v-if=
"router.channelId"
>
出货渠道
{{
routerIndex
+
1
}}
:
{{
getChannelNameById
(
router
.
channelId
)
}}
</el-col>
</el-form-item>
<el-form-item
label=
"是否双清"
v-if=
"[2,3,4].indexOf(+item.transportId) > -1"
>
<dict-selector
v-model=
"item.doubleClear"
form-type=
"radio"
:type=
"DICT_TYPE.ECW_DOUBLE_CLEAR"
/>
</el-form-item>
<el-form-item
label=
"航空公司"
v-if=
"[3,4].indexOf(+item.transportId) > -1"
>
<el-select
placeholder=
""
v-model=
"item.airlineCompany"
>
</el-select>
</el-form-item>
<el-form-item
label=
"船公司"
v-if=
"[2].indexOf(+item.transportId) > -1"
>
<el-select
placeholder=
""
v-model=
"item.airlineCompany"
>
</el-select>
</el-form-item>
<el-form-item
label=
"清关证书"
v-if=
"[2,3,4].indexOf(+item.transportId) > -1"
>
<dict-selector
v-model=
"item.customsClearCert"
form-type=
"radio"
:type=
"DICT_TYPE.INFRA_BOOLEAN_STRING"
fomatter=
"bool"
/>
</el-form-item>
<el-form-item
label=
"清关证书备注"
v-if=
"[2,3,4].indexOf(+item.transportId) > -1"
>
<el-input
v-model=
"item.remarks"
></el-input>
</el-form-item>
<el-form-item
label=
"是否拆包"
v-if=
"[3,4].indexOf(+item.transportId) > -1"
>
<dict-selector
v-model=
"item.isUnpack"
form-type=
"radio"
:type=
"DICT_TYPE.INFRA_BOOLEAN_STRING"
fomatter=
"bool"
/>
</el-form-item>
<el-form-item
label=
"单票立刻转运"
v-if=
"[3,4].indexOf(+item.transportId) > -1"
>
<dict-selector
v-model=
"item.isSingleTicketTransport"
form-type=
"radio"
:type=
"DICT_TYPE.INFRA_BOOLEAN_STRING"
fomatter=
"bool"
/>
<span
style=
"margin-left:10px"
>
注:若只有一件,货到仓库立即发,选“是”,多件需仓库集运待发,选“否”
</span>
</el-form-item>
<el-form-item
label=
"包装类型"
v-if=
"[3,4].indexOf(+item.transportId) > -1"
>
<dict-selector
v-model=
"item.packageType"
form-type=
"checkbox"
:type=
"DICT_TYPE.ECW_PACKAGE_TYPE"
multiple
/>
</el-form-item>
<el-form-item
label=
"包装要求备注"
v-if=
"[3,4].indexOf(+item.transportId) > -1"
>
<el-input
v-model=
"item.packageRemarks"
></el-input>
</el-form-item>
</el-card>
</
template
>
<el-card
class=
"mt-10"
>
<div
class=
"card-title"
slot=
"header"
>
通用
</div>
...
...
@@ -363,6 +338,48 @@
</el-descriptions>
</el-card>
<el-card
class=
"mt-10"
v-if=
"transport"
>
<div
class=
"card-title"
slot=
"header"
>
{{transport.label}}
</div>
<el-form-item
label=
"快递单号"
>
<el-input
v-model=
"form.number"
placeholder=
"请输入购买商品的快递单号"
></el-input>
</el-form-item>
<el-form-item
label=
"是否双清"
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=
"航空公司"
v-if=
"[3,4].indexOf(+form.transportId) > -1"
>
<!--待查询备选数据-->
<el-select
placeholder=
""
v-model=
"form.airlineCompany"
>
</el-select>
</el-form-item>
<el-form-item
label=
"船公司"
v-if=
"[2].indexOf(+form.transportId) > -1"
>
<el-select
placeholder=
""
v-model=
"form.shippingCompany"
>
</el-select>
</el-form-item>
<el-form-item
label=
"清关证书"
v-if=
"[2,3,4].indexOf(+form.transportId) > -1"
>
<dict-selector
v-model=
"form.customsClearCert"
form-type=
"radio"
:type=
"DICT_TYPE.INFRA_BOOLEAN_STRING"
fomatter=
"bool"
/>
</el-form-item>
<el-form-item
label=
"清关证书备注"
v-if=
"[2,3,4].indexOf(+form.transportId) > -1"
>
<el-input
v-model=
"form.remarks"
></el-input>
</el-form-item>
<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>
<el-form-item
label=
"单票立刻转运"
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"
>
注:若只有一件,货到仓库立即发,选“是”,多件需仓库集运待发,选“否”
</span>
</el-form-item>
<el-form-item
label=
"特殊要求"
>
<dict-selector
v-model=
"form.packageType"
form-type=
"checkbox"
:type=
"DICT_TYPE.ORDER_SPECIAL_NEEDS"
multiple
/>
</el-form-item>
<el-form-item
label=
"特殊要求备注"
>
<el-input
v-model=
"form.packageRemarks"
></el-input>
</el-form-item>
</el-card>
<el-form-item
label=
""
>
<el-button
type=
"primary"
@
click=
"submitForm"
>
确 定
</el-button>
<el-button
@
click=
"$router.back()"
>
取 消
</el-button>
...
...
@@ -383,6 +400,7 @@ 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
'
export
default
{
name
:
"
OfferEdit
"
,
components
:
{
...
...
@@ -448,6 +466,10 @@ export default {
return
this
.
channelList
.
find
(
item
=>
item
.
channelId
==
channelId
)
?.
nameZh
}
},
// 当前运输方式
transport
(){
return
this
.
transportList
.
find
(
item
=>
item
.
value
==
this
.
form
.
transportId
)
},
currentMap
(){
let
map
=
{}
this
.
currencyList
.
forEach
(
item
=>
{
...
...
@@ -536,33 +558,30 @@ export default {
console
.
log
(
item
.
transportId
,
transport
)
Object
.
assign
(
transport
,
item
,
{
_enabled
:
true
})
})
this
.
$nextTick
(()
=>
{
/*
this.$nextTick(() => {
this.updateEnabledTransports()
})
})
*/
})
}
else
this
.
addProduct
()
}
//
else this.addProduct()
},
methods
:
{
onTransportChange
(
row
,
val
){
/*
onTransportChange(row, val){
this.getProductFee(row)
if(this.getDictData(this.DICT_TYPE.ECW_TRANSPORT_TYPE, val).cssClass != 'channel') row.channelId = null
this.updateEnabledTransports()
},
},
*/
onLineChange
(
row
){
this
.
getProductFee
(
row
)
this
.
updateEnabledTransports
()
this
.
calculationPrice
(
)
//
this.updateEnabledTransports()
},
onChannelChange
(
row
){
this
.
getProductFee
(
row
)
this
.
calculationPrice
(
)
},
onProductAttrChange
(
row
,
attr
){
console
.
log
(
attr
)
this
.
getProductFee
(
row
)
/* // 需要强制刷新,否则勾选框不更新
this.$forceUpdate() */
this
.
calculationPrice
()
},
// 更新运输方式
updateEnabledTransports
(){
/*
updateEnabledTransports(){
let enabled = {}
this.productList.forEach(prod => {
...
...
@@ -597,8 +616,11 @@ export default {
Object.assign(transport, enabled[transport.transportId])
}
})
},
},
*/
addProduct
(
data
){
if
(
!
data
&&
!
this
.
form
.
lineId
){
return
this
.
$message
.
error
(
'
请先选择路线
'
)
}
this
.
productList
.
push
(
data
||
{
prodAttrArr
:[]})
},
// 计算商品运费
...
...
@@ -620,6 +642,12 @@ export default {
if
(
this
.
form
.
objectiveId
){
params
.
destCityId
=
this
.
form
.
objectiveId
}
if
(
this
.
form
.
transportId
){
params
.
transportType
=
this
.
form
.
transportId
}
if
(
this
.
form
.
channelId
){
params
.
channelId
=
this
.
form
.
channelId
}
getOpenedRouterList
(
params
).
then
(
res
=>
this
.
routerList
=
res
.
data
)
},
// 计算体积
...
...
@@ -651,6 +679,10 @@ export default {
this
.
productList
.
map
(
item
=>
{
item
.
prodAttrIds
=
item
.
prodAttrArr
.
join
(
'
,
'
)
item
.
lineId
=
this
.
form
.
lineId
item
.
channelId
=
this
.
form
.
channelId
item
.
transportId
=
this
.
form
.
transportId
item
.
brandType
=
item
.
brand
?
1
:
0
})
this
.
transportList
.
map
(
item
=>
{
if
(
item
.
_enabled
){
...
...
@@ -681,7 +713,41 @@ export default {
});
});
},
setLink
(
row
){
this
.
$prompt
(
'
请输入商品链接
'
,
{
inputValue
:
row
.
link
}).
then
(({
value
})
=>
{
console
.
log
(
'
value
'
,
value
)
this
.
$set
(
row
,
'
link
'
,
value
)
})
},
// 计算商品运费
calculationPrice
(){
let
calcable
=
true
if
(
!
this
.
productList
.
length
)
return
this
.
productList
.
forEach
(
item
=>
{
if
(
!
item
.
weight
||
!
item
.
prodId
){
console
.
log
(
'
重量和产品为选择
'
,
item
)
calcable
=
false
}
})
if
(
this
.
calculating
||
!
calcable
)
return
false
this
.
calculating
=
true
console
.
log
(
'
calculationPrice
'
)
calculationPrice
({
lineId
:
this
.
form
.
lineId
,
transportId
:
this
.
form
.
transportId
,
channelId
:
this
.
form
.
channelId
,
prodConditionParamList
:
this
.
productList
}).
then
(
res
=>
{
this
.
$set
(
this
,
'
fee
'
,
res
.
data
.
costDto
)
this
.
productList
.
map
((
item
,
index
)
=>
{
this
.
$set
(
item
,
'
fee
'
,
res
.
data
.
prodCostDtoList
[
index
])
})
}).
finally
(()
=>
{
this
.
calculating
=
false
})
},
}
};
</
script
>
...
...
src/views/ecw/order/edit.vue
View file @
0a9ddf39
...
...
@@ -232,7 +232,6 @@
<div>
{{fee.clearanceUSD || 0}}美元
</div>
</el-descriptions-item>
<el-descriptions-item
label=
"其他费用"
>
<!--TODO 缺少其他费用字段-->
<el-input
v-model=
"form.otherFee"
placeholder=
""
style=
"width:100px"
></el-input>
<selector
v-model=
"form.otherFeeCurrencyId"
:options=
"currencyList"
label-field=
"titleZh"
value-field=
"id"
defaultable
style=
"width:100px"
/>
</el-descriptions-item>
...
...
@@ -250,12 +249,15 @@
<el-col
:span=
"2"
>
{{index+1}}.{{item.label}}
</el-col>
<el-col
:span=
"4"
>
<el-select
placeholder=
"请选择优惠"
v-model=
"selectedCoupons[item.value]"
:data-type=
"item.value"
clearable
>
<
template
v-for=
"
coupon
in couponList"
>
<el-option
v-if=
"coupon.type == +item.value"
:key=
"coupon.couponId"
:label=
"coupon.titleZh"
:value=
"coupon.couponId"
></el-option>
<
template
v-for=
"
(coupon, index)
in couponList"
>
<el-option
v-if=
"coupon.type == +item.value"
:key=
"coupon.couponId
+ '_' + index
"
:label=
"coupon.titleZh"
:value=
"coupon.couponId"
></el-option>
</
template
>
</el-select>
</el-col>
<el-col
:span=
"2"
v-if=
"getCoupon(selectedCoupons[item.value])"
>
-{{getCoupon(selectedCoupons[item.value]).reduceAmount}} 美元
</el-col>
<el-col
:span=
"2"
v-if=
"getCoupon(selectedCoupons[item.value])"
>
-{{getCoupon(selectedCoupons[item.value]).reduceAmount}}
{{currentcyMap[getCoupon(selectedCoupons[item.value]).reduceCurrencyId]}}
</el-col>
<el-col
:span=
"5"
v-if=
"getCoupon(selectedCoupons[item.value])"
>
有效期:{{getCoupon(selectedCoupons[item.value]).endTime || '永久有效'}}
</el-col>
</el-row>
<el-descriptions
:column=
"1"
border
>
...
...
src/views/ecw/order/index.vue
View file @
0a9ddf39
...
...
@@ -133,7 +133,7 @@
<el-table-column
label=
"体积/重量"
align=
"center"
prop=
"sumWeight"
>
<
template
slot-scope=
"{row}"
>
{{
row
.
totalVolume
}}
m³ /
{{
row
.
totalWeight
}}
Kg
</
template
>
</el-table-column>
<el-table-column
label=
"始发仓"
align=
"center"
prop=
"departureName"
/>
<el-table-column
label=
"运输方式/目的地"
align=
"center"
prop=
"transportId"
>
<
template
slot-scope=
"{row}"
>
<dict-tag
:type=
"DICT_TYPE.ECW_TRANSPORT_TYPE"
:value=
"row.transportId"
/>
/
{{
row
.
objectiveName
}}
...
...
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