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
b6b42e19
Commit
b6b42e19
authored
Jan 22, 2024
by
我在何方
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch 'dev' of
http://gitlab.jdshangmen.com/jiedao-app/jiedao-app-operator
into dev
parents
fbead5ec
ba72f0ab
Changes
39
Show whitespace changes
Inline
Side-by-side
Showing
39 changed files
with
1763 additions
and
1282 deletions
+1763
-1282
channel.js
src/api/ecw/channel.js
+8
-2
index.vue
src/components/ProductsSelector/index.vue
+7
-2
index.vue
src/components/RoutersSelector/index.vue
+2
-2
index.vue
src/components/UserSelector/index.vue
+17
-45
request.js
src/utils/request.js
+7
-0
checkout.vue
src/views/ecw/box/shippingAir/nodePage/checkout.vue
+32
-4
startCheckout.vue
...s/ecw/box/shippingAir/nodePage/checkout/startCheckout.vue
+30
-13
pkgPage.vue
src/views/ecw/box/shippingAir/nodePage/mergePkg/pkgPage.vue
+7
-3
index.vue
src/views/ecw/box/shippingAir/nodePage/tally/index.vue
+4
-2
seaProcess.vue
src/views/ecw/box/shippingAir/seaProcess.vue
+0
-8
edit.vue
src/views/ecw/channel/edit.vue
+32
-20
index.vue
src/views/ecw/channel/index.vue
+34
-18
allAchievement.vue
src/views/ecw/deptTarget/allAchievement.vue
+6
-0
index.vue
src/views/ecw/deptTarget/index.vue
+1
-1
myAchievement.vue
src/views/ecw/deptTarget/myAchievement.vue
+453
-437
myDeptAchievement.vue
src/views/ecw/deptTarget/myDeptAchievement.vue
+434
-424
all-routes-list.vue
src/views/ecw/offer/all-routes-list.vue
+20
-3
channel-route.vue
src/views/ecw/offer/channel-route.vue
+14
-12
edit.vue
src/views/ecw/offer/edit.vue
+28
-10
PrintWarehouseReceipt.vue
src/views/ecw/order/components/PrintWarehouseReceipt.vue
+4
-0
edit.vue
src/views/ecw/order/edit.vue
+10
-7
index.vue
src/views/ecw/order/index.vue
+2
-1
penddingList.vue
src/views/ecw/order/penddingList.vue
+2
-1
ChooseOrderProducts.vue
...ews/ecw/order/stocking/components/ChooseOrderProducts.vue
+27
-1
MediaDialog.vue
src/views/ecw/order/stocking/components/MediaDialog.vue
+1
-1
Package.vue
src/views/ecw/order/stocking/components/Package.vue
+21
-0
index.vue
src/views/ecw/order/stocking/index.vue
+28
-3
stockingList.vue
src/views/ecw/order/stockingList.vue
+2
-1
WarehouseRecordDetail.vue
...cw/order/warehousing/components/WarehouseRecordDetail.vue
+28
-16
WarehouseRecordDetailItem.vue
...rder/warehousing/components/WarehouseRecordDetailItem.vue
+1
-1
batchEdit.vue
src/views/ecw/productPrice/batchEdit.vue
+85
-25
batchEditAir.vue
src/views/ecw/productPrice/batchEditAir.vue
+10
-4
batchIncrease.vue
src/views/ecw/productPrice/batchIncrease.vue
+123
-54
batchIncreaseAir.vue
src/views/ecw/productPrice/batchIncreaseAir.vue
+9
-2
PriceStep.vue
src/views/ecw/productPrice/components/PriceStep.vue
+5
-4
SeaPrice.vue
src/views/ecw/productPrice/components/SeaPrice.vue
+132
-140
ShowStepPriceItem.vue
src/views/ecw/productPrice/components/ShowStepPriceItem.vue
+2
-2
edit.vue
src/views/ecw/productPrice/edit.vue
+132
-13
editAir.vue
src/views/ecw/productPrice/editAir.vue
+3
-0
No files found.
src/api/ecw/channel.js
View file @
b6b42e19
...
...
@@ -42,7 +42,13 @@ export function getChannelPage(query) {
params
:
query
})
}
//启用-禁用渠道
export
function
channelSwitch
(
id
){
return
request
({
url
:
`/ecw/channel/switch/
${
id
}
`
,
method
:
'
put
'
})
}
// 获得渠道列表 TODO
export
function
getChannelList
(
query
)
{
return
request
({
...
...
src/components/ProductsSelector/index.vue
View file @
b6b42e19
...
...
@@ -13,7 +13,7 @@
<el-button
type=
"primary"
@
click=
"reLoad"
:loading=
"loading"
>
{{
$t
(
'
搜索
'
)
}}
</el-button>
<div
style=
"height: 36px; display: flex; align-items: center"
>
<el-checkbox
:label=
"$t('全选') + `($
{$t('{total}个', {total})})`" @change="toggleAll" :disabled="isAllProduct || loading">
</el-checkbox>
<el-checkbox
:label=
"$t('全选') + `($
{$t('{total}个', {total})})`" @change="toggleAll"
v-model="isCheckedAll"
:disabled="isAllProduct || loading">
</el-checkbox>
</div>
</div>
<div
class=
"list"
>
...
...
@@ -102,7 +102,9 @@ export default {
// 右侧页码
rightPage
:
1
,
// 页大小
pageSize
:
100
pageSize
:
100
,
// 是否选中全选
isCheckedAll
:
false
}
}
,
computed
:
{
...
...
@@ -229,6 +231,8 @@ export default {
let
res
=
await
getSimpleProductList
(
this
.
queryParams
)
this
.
loading
=
false
this
.
list
=
res
.
data
this
.
choosedList
=
[]
this
.
isCheckedAll
=
false
}
,
// 获得指定条件的商品的全部ID
getFilteredIds
(){
...
...
@@ -257,6 +261,7 @@ export default {
async
clearAll
()
{
await
this
.
$confirm
(
this
.
$t
(
'
确定要全部清除么?
'
))
this
.
choosedList
=
[]
this
.
isCheckedAll
=
false
}
}
}
...
...
src/components/RoutersSelector/index.vue
View file @
b6b42e19
...
...
@@ -315,7 +315,7 @@ export default {
if
(
this
.
getSelectedIndex
(
router
)
>
-
1
)
return
this
.
selectedRoutes
.
push
({
lineId
:
router
.
id
,
c
hannelId
:
router
.
channel
.
channelId
,
shippingC
hannelId
:
router
.
channel
.
channelId
,
transportId
:
router
.
transportType
})
}
else
{
...
...
@@ -328,7 +328,7 @@ export default {
},
getSelectedIndex
(
router
){
return
this
.
selectedRoutes
.
findIndex
(
item
=>
{
return
item
.
lineId
==
router
.
id
&&
item
.
c
hannelId
==
router
.
channel
.
channelId
return
item
.
lineId
==
router
.
id
&&
item
.
shippingC
hannelId
==
router
.
channel
.
channelId
})
},
SpanMethod
({
row
,
column
,
rowIndex
,
columnIndex
}){
...
...
src/components/UserSelector/index.vue
View file @
b6b42e19
<
template
>
<el-select
v-model=
"
index
"
v-model=
"
valueSync
"
filterable
:clearable=
"clearable"
remote
reserve-keyword
:placeholder=
"placeholder ? placeholder : $t('请选择')"
:loading=
"loading"
>
<el-option
v-if=
"prepend"
:label=
"`$
{prepend.nickname}`"
:value="prepend.id">
</el-option>
<el-option
v-for=
"(item, index) in list"
:key=
"item.id"
:label=
"`$
{item.nickname}`"
:value="i
ndex
">
:value="i
tem.id
">
</el-option>
</el-select>
</
template
>
...
...
@@ -26,26 +31,23 @@ export default {
manage
:{
type
:
Boolean
,
default
:
false
}
},
prepend
:
Object
},
data
(){
return
{
index
:
null
,
list
:[],
loading
:
false
,
size
:
20
size
:
20
,
valueSync
:
this
.
value
}
},
watch
:{
index
(
val
){
this
.
$emit
(
'
input
'
,
val
!==
null
&&
val
!==
undefined
&&
val
!=
''
?
this
.
list
[
val
].
id
:
null
)
this
.
$emit
(
'
change
'
,
val
!==
null
&&
val
!==
undefined
&&
val
!=
''
?
this
.
list
[
val
]:
null
)
},
value
(
val
){
this
.
resetIndex
()
this
.
valueSync
=
this
.
value
},
list
(
){
this
.
resetIndex
(
)
valueSync
(
val
){
this
.
$emit
(
'
input
'
,
val
)
}
},
created
(){
...
...
@@ -60,39 +62,9 @@ export default {
this
.
list
=
res
.
data
})
}
// this.init()
},
methods
:{
resetIndex
(){
let
index
=
this
.
list
.
findIndex
(
item
=>
item
.
id
==
this
.
value
)
if
(
index
<
0
)
this
.
index
=
null
else
this
.
index
=
index
}
/* init(){
console.log('初始化联系人选择', this.value)
if(!this.value) return
let index = this.list.findIndex(item => item.customerContactsId == this.value)
if(index < 0){
getCustomerContactsSelect({ids: this.value}).then(res => {
if(!res.data || !res.data.length){
return this.$message.error('联系人信息获取失败')
}
this.list.unshift(res.data[0])
this.index = 0
})
}
}, */
/* remoteMethod(keyword){
let params = {
size: this.size
if
(
this
.
value
){
this
.
valueSync
=
this
.
value
}
params.searchKey = keyword
this.loading = true
getCustomerContactsSelect(params)
.then(res => this.list = res.data)
.finally(() => this.loading = false)
} */
}
}
</
script
>
src/utils/request.js
View file @
b6b42e19
...
...
@@ -19,6 +19,13 @@ const service = axios.create({
// 超时
timeout
:
1000
*
30
})
// 如果是生产环境则打印提示
if
(
process
.
env
.
NODE_ENV
===
'
development
'
&&
service
.
defaults
.
baseURL
===
'
https://api2.groupage.cn/admin-api/
'
)
{
console
.
log
(
'
%c请注意,当前为生产环境请谨慎操作!!
'
,
'
background-color: red; font-size: 3em; color:yellow
'
);
console
.
log
(
'
%c接口地址:
'
+
service
.
defaults
.
baseURL
,
'
background-color: black; font-size: 1.5em; color:yellow !important
'
);
}
// request拦截器
service
.
interceptors
.
request
.
use
(
config
=>
{
config
.
headers
[
'
locale
'
]
=
getLocale
()
...
...
src/views/ecw/box/shippingAir/nodePage/checkout.vue
View file @
b6b42e19
...
...
@@ -65,11 +65,11 @@
</el-form-item>
<el-form-item
:label=
"$t('出仓箱数')"
prop=
"realNum"
>
<el-input-number
v-model=
"airCheckoutObj.realNum"
:controls=
"false"
:precision=
"0"
/>
<el-input-number
v-model=
"airCheckoutObj.realNum"
:controls=
"false"
:precision=
"0"
disabled
/>
</el-form-item>
<el-form-item
:label=
"$t('出仓影像')"
>
<ImageUpload
:limit=
"1"
:isShowTip=
false
v-model=
"airCheckoutObj.checkoutFiles"
/>
<ImageUpload
:limit=
"1"
:isShowTip=
false
v-model=
"airCheckoutObj.checkoutFiles"
@
input=
"saveImage"
/>
</el-form-item>
<el-form-item
:label=
"$t('备注')"
>
...
...
@@ -81,19 +81,20 @@
<!-- 开始出仓 -->
<el-dialog
:title=
"$t('开始出仓')"
:visible.sync=
"dialogVisible"
fullscreen
:modal-append-to-body=
false
append-to-body
>
<startCheckout
v-bind=
"$attrs"
v-if=
"dialogVisible"
v-on=
"$listeners"
@
closeDialog1=
"closeDialog1"
/>
<startCheckout
v-bind=
"$attrs"
v-if=
"dialogVisible"
v-on=
"$listeners"
@
closeDialog1=
"closeDialog1"
@
reload=
"reload"
/>
</el-dialog>
<el-row
class=
"operate-button"
>
<el-button
type=
"primary"
@
click=
"onSubmit(1)"
>
{{
$t
(
'
保存
'
)
}}
</el-button>
<el-button
:disabled=
"$attrs.shipmentObj.approvaling"
type=
"success"
@
click=
"onSubmit(2)"
>
{{
$t
(
'
提交
'
)
}}
</el-button>
<el-button
@
click=
"cancel"
>
{{
$t
(
'
关闭
'
)
}}
</el-button>
<el-button
@
click=
"startCheckout"
>
{{
$t
(
'
确认出仓
'
)
}}
</el-button>
<el-button
type=
"danger"
@
click=
"startCheckout"
>
{{
$t
(
'
确认出仓
'
)
}}
</el-button>
</el-row>
</div>
</
template
>
<
script
>
import
{
getbox
}
from
"
@/api/ecw/box
"
;
import
{
airCheckoutCreate
}
from
"
@/api/ecw/boxSea
"
;
import
startCheckout
from
"
./checkout/startCheckout.vue
"
;
import
userSelect
from
"
./common/userSelect.vue
"
;
...
...
@@ -158,6 +159,12 @@ export default {
}
});
},
reload
()
{
getbox
(
this
.
$attrs
.
shipmentObj
.
id
).
then
((
res
)
=>
{
this
.
$set
(
this
.
airCheckoutObj
,
'
planNum
'
,
res
.
data
.
planNum
)
this
.
$set
(
this
.
airCheckoutObj
,
'
realNum
'
,
res
.
data
.
realNum
)
})
},
/** 取消 */
cancel
(
type
)
{
this
.
$emit
(
"
closeDialog
"
,
type
);
...
...
@@ -169,6 +176,27 @@ export default {
closeDialog1
()
{
this
.
dialogVisible
=
false
;
},
//自动保存图片
saveImage
()
{
const
{
ldPictures
}
=
this
.
airCheckoutObj
;
let
pictures
=
ldPictures
?.
split
(
"
,
"
)
??
[];
let
newPictures
=
[];
for
(
const
item
of
pictures
)
{
if
(
item
)
{
newPictures
.
push
({
type
:
"
image
"
,
url
:
item
,
});
}
}
airCheckoutCreate
({
...
this
.
airCheckoutObj
,
shipmentId
:
this
.
$attrs
.
shipmentObj
.
id
,
operateType
:
1
,
}).
then
(()
=>
{
this
.
$emit
(
"
getBoxInfo
"
);
})
}
},
};
</
script
>
...
...
src/views/ecw/box/shippingAir/nodePage/checkout/startCheckout.vue
View file @
b6b42e19
...
...
@@ -5,7 +5,7 @@
<div><dict-tag
:type=
"DICT_TYPE.ECW_TRANSPORT_TYPE"
:value=
"shipmentObj.transportType"
/>
:
{{
importCityName
(
shipmentObj
.
startWarehouseId
)
}}
》
{{
importCityName
(
shipmentObj
.
destWarehouseId
)
}}
【
{{
getShipChannelName
(
shipmentObj
.
channelRespVO
.
channelId
)
}}
】
</div>
<div>
<template>
<el-input
v-model=
"qrCode"
:placeholder=
"$t('请输入二维码/条码编号
')"
clearable
></el-input>
<el-input
style=
"width: 270px;"
v-model=
"qrCode"
:placeholder=
"$t('请输入二维码/条码编号/合包箱号标签
')"
clearable
></el-input>
<el-button
type=
"primary"
@
click=
"handlerBatchCreate('single')"
>
{{
$t
(
'
确定
'
)
}}
</el-button>
<el-button
type=
"primary"
@
click=
"handlerClick('batchInput',$t('批量输入'))"
>
{{
$t
(
'
批量输入
'
)
}}
</el-button>
<el-button
type=
"primary"
@
click=
"handlerClick('correction',$t('出仓纠错'))"
>
{{
$t
(
'
出仓纠错
'
)
}}
</el-button>
...
...
@@ -21,12 +21,10 @@
<el-table-column
:label=
"$t('序号')"
align=
"center"
width=
"50"
prop=
"tidanNum"
/>
<el-table-column
:label=
"$t('订单号')"
align=
"center"
prop=
"orderNo"
>
<
template
slot-scope=
"scope"
>
<div>
<a
href=
"javascript:void(0);"
class=
"order-href"
@
click=
"orderClick(scope.row)"
>
{{
scope
.
row
.
orderNo
}}
</a>
</div>
<div
style=
"color:blue;fontWeight:bold;"
>
{{
scope
.
row
.
isExternalWarehouse
===
1
?
'
(
'
+
$t
(
'
外部仓
'
)
+
'
)
'
:
''
}}
</div>
<router-link
:to=
"
{path: '/order/detail',query: {orderId: scope.row.orderId}}" class="link-type">
<span>
{{
scope
.
row
.
orderNo
}}
</span>
</router-link>
</
template
>
</el-table-column>
<el-table-column
:label=
"$t('货物信息')"
align=
"center"
prop=
"goodsList"
>
...
...
@@ -50,12 +48,22 @@
</el-table-column>
<el-table-column
:label=
"$t('计划箱数')"
align=
"center"
prop=
"num"
>
<
template
slot-scope=
"scope"
>
{{
getTotlContent
(
scope
.
row
,[
'
num
'
])
}}
<div>
<a
href=
"javascript:void(0);"
class=
"order-href"
@
click=
"orderClick(scope.row)"
>
{{
getTotlContent
(
scope
.
row
,[
'
num
'
])
}}
</a>
</div>
<div
style=
"color:blue;fontWeight:bold;"
>
{{
scope
.
row
.
isExternalWarehouse
===
1
?
'
(
'
+
$t
(
'
外部仓
'
)
+
'
)
'
:
''
}}
</div>
</
template
>
</el-table-column>
<el-table-column
:label=
"$t('
实装
箱数')"
align=
"center"
prop=
"installNum"
>
<el-table-column
:label=
"$t('
出仓
箱数')"
align=
"center"
prop=
"installNum"
>
<
template
slot-scope=
"scope"
>
{{
scope
.
row
.
installNum
}}{{
$t
(
'
箱
'
)
}}
<div>
<a
href=
"javascript:void(0);"
class=
"order-href"
@
click=
"orderClick(scope.row)"
>
{{
scope
.
row
.
installNum
}}{{
$t
(
'
箱
'
)
}}
</a>
</div>
<div
style=
"color:blue;fontWeight:bold;"
>
{{
scope
.
row
.
isExternalWarehouse
===
1
?
'
(
'
+
$t
(
'
外部仓
'
)
+
'
)
'
:
''
}}
</div>
</
template
>
</el-table-column>
<el-table-column
:label=
"$t('体积')"
align=
"center"
prop=
"volume"
>
...
...
@@ -68,6 +76,11 @@
{{
getTotlContent
(
scope
.
row
,[
'
weight
'
])
}}
</
template
>
</el-table-column>
<el-table-column
:label=
"$t('合包箱号')"
align=
"center"
prop=
"pkgNum"
>
<
template
slot-scope=
"scope"
>
{{
scope
.
row
.
pkgNum
}}
</
template
>
</el-table-column>
</el-table>
</el-row>
</el-card>
...
...
@@ -87,7 +100,7 @@
</el-row>
<el-row
style=
"margin-top: 20px;"
>
<el-button
type=
"primary"
@
click=
"submitCheckout"
>
{{$t('确认出仓')}}
</el-button>
<el-button
@
click=
"
$emit('closeDialog1')
"
>
{{$t('取消')}}
</el-button>
<el-button
@
click=
"
closeReload
"
>
{{$t('取消')}}
</el-button>
</el-row>
...
...
@@ -104,7 +117,7 @@
<
template
v-if=
"dialogConfig.type === 'correction' && dialogConfig.dialogVisible"
>
<el-form
ref=
"correctionForm"
:rules=
"rules"
:model=
"correctionObj"
label-position=
"top"
>
<el-form-item
:label=
"$t('出仓纠错(二维码/条形码编号)')"
prop=
"qrCode"
>
<el-input
v-model=
"correctionObj.qrCode"
:placeholder=
"$t('请输入二维码/条形码编号')"
clearable
/>
<el-input
v-model=
"correctionObj.qrCode"
:placeholder=
"$t('请输入二维码/条形码编号
/合包箱号标签
')"
clearable
/>
</el-form-item>
</el-form>
<el-row
class=
"operate-button"
>
...
...
@@ -528,9 +541,13 @@ export default {
submitCheckout
(){
confirmAirCheckout
({
shipmentId
:
this
.
shipmentObj
.
id
}).
then
((
res
)
=>
{
serviceMsg
(
res
,
this
).
then
(()
=>
{
this
.
$emit
(
'
closeDialog1
'
)
this
.
closeReload
(
)
});
});
},
closeReload
(){
this
.
$emit
(
'
closeDialog1
'
)
this
.
$emit
(
'
reload
'
)
}
},
computed
:
{
...
...
src/views/ecw/box/shippingAir/nodePage/mergePkg/pkgPage.vue
View file @
b6b42e19
...
...
@@ -22,9 +22,10 @@
<el-table-column
align=
"center"
:label=
"$t('序号')"
width=
"50"
type=
"index"
/>
<el-table-column
:label=
"$t('订单号')"
align=
"center"
prop=
"orderNo"
>
<
template
slot-scope=
"scope"
>
<el-link
type=
"primary"
@
click.native=
"orderClick(scope.row)"
>
{{
scope
.
row
.
orderNo
}}
</el-link>
<router-link
:to=
"
{path: '/order/detail',query: {orderId: scope.row.orderId}}" class="link-type">
<span>
{{
scope
.
row
.
orderNo
}}
</span>
</router-link>
</
template
>
</el-table-column>
<el-table-column
:label=
"$t('商品信息')"
width=
"250px"
align=
"center"
>
...
...
@@ -41,7 +42,9 @@
</el-table-column>
<el-table-column
:label=
"$t('计划/已装')"
align=
"center"
prop=
"sumNum"
>
<
template
slot-scope=
"scope"
>
<el-link
type=
"primary"
@
click.native=
"orderClick(scope.row)"
>
{{
scope
.
row
.
sumNum
}}
/
{{
scope
.
row
.
installNum
}}
</el-link>
</
template
>
</el-table-column>
<el-table-column
:label=
"$t('纸箱尺寸')"
align=
"center"
>
...
...
@@ -314,6 +317,7 @@ export default {
getPkgPageByPkgId
(
queryParams
).
then
((
res
)
=>
{
this
.
pagList
=
res
.
data
.
list
this
.
total
=
res
.
data
.
total
console
.
log
(
this
.
pagList
,
'
222
'
);
})
},
// 格式化日期
...
...
src/views/ecw/box/shippingAir/nodePage/tally/index.vue
View file @
b6b42e19
...
...
@@ -25,7 +25,7 @@
<el-button
:disabled=
"shipmentObj.approvaling"
size=
"small"
type=
"primary"
@
click=
"()=>tallyClick('batch')"
>
{{
$t
(
'
批量理货
'
)
}}
</el-button>
<el-button
:disabled=
"shipmentObj.approvaling"
size=
"small"
type=
"primary"
@
click=
"()=>removeClick('batch')"
>
{{
$t
(
'
批量移出
'
)
}}
</el-button>
</div>
<div
v-if=
"false"
>
<div>
<template>
<el-input
v-model=
"qrCode"
:placeholder=
"$t('请输入二维码/条码编号')"
clearable
></el-input>
<el-button
type=
"primary"
@
click=
"handlerBatchCreate()"
>
{{
$t
(
'
确定
'
)
}}
</el-button>
...
...
@@ -476,13 +476,15 @@ export default {
// 理货完成
tallyFinish
()
{
let
flag
=
false
let
orderNo
=
''
this
.
checkOrderList
.
forEach
(
item
=>
{
if
(
item
.
installNum
!=
item
.
num
){
flag
=
true
orderNo
=
orderNo
+
'
《
'
+
item
.
orderNo
+
'
》
'
}
})
if
(
flag
){
this
.
$message
.
error
(
this
.
$t
(
"
仍有订单未理货,请完成所有订单箱号标签扫码后完成理货
"
));
this
.
$message
.
error
(
this
.
$t
(
`订单号
${
orderNo
}
未完成理货,请完成全部订单理货后重试`
));
return
;
}
tallyCommit
({
shipmentId
:
this
.
shipmentObj
.
id
}).
then
((
res
)
=>
{
...
...
src/views/ecw/box/shippingAir/seaProcess.vue
View file @
b6b42e19
...
...
@@ -186,10 +186,6 @@ export default {
break
;
// 清关
case
"
cusClearance
"
:
if
(
!
this
.
shipmentObj
.
sapStatus
||
this
.
shipmentObj
.
sapStatus
<=
151
){
this
.
$message
.
error
(
this
.
$t
(
"
请先完成到港操作
"
));
return
;
}
this
.
$set
(
this
.
dialogConfig
,
"
width
"
,
"
700px
"
);
break
;
// AGENT
...
...
@@ -224,10 +220,6 @@ export default {
break
;
// 卸柜
case
"
unloading
"
:
if
(
!
this
.
shipmentObj
.
sapStatus
||
this
.
shipmentObj
.
sapStatus
<=
151
){
this
.
$message
.
error
(
this
.
$t
(
"
请先完成到港操作
"
));
return
;
}
// 卸柜反审
const
unStatus
=
this
.
shipmentObj
[
node
.
keyName
];
if
([
186
].
includes
(
unStatus
))
{
...
...
src/views/ecw/channel/edit.vue
View file @
b6b42e19
<
template
>
<div
class=
"app-container"
>
<el-form
ref=
"form"
:model=
"form"
:rules=
"rules"
label-width=
"120px"
>
<el-form
:disabled=
"isView"
ref=
"form"
:model=
"form"
:rules=
"rules"
label-width=
"120px"
>
<el-card
shadow=
"never"
>
<div
slot=
"header"
class=
"clearfix"
>
<span>
{{
$t
(
'
渠道信息
'
)
}}
</span>
...
...
@@ -71,7 +71,7 @@
<el-col
:span=
"12"
>
<el-form-item
:label=
"$t('快递')"
prop=
"expressId"
>
<!--
<el-input
v-model=
"form.expressId"
placeholder=
"请输入快递ID"
/>
-->
<el-select
v-model=
"form.expressId"
>
<el-select
v-model=
"form.expressId"
style=
"width: 100%"
>
<el-option
v-for=
"item in expressList"
:value=
"item.id+''"
:label=
"item.companyName"
:key=
"item.id"
/>
</el-select>
</el-form-item>
...
...
@@ -84,8 +84,8 @@
</el-form-item>
</el-col>
<el-col
:span=
"12"
>
<el-form-item
:label=
"$t('所属目的国家')"
prop=
"country"
>
<el-select
filterable
clearable
v-model=
"form.countryId"
:placeholder=
"$t('请选择国家')"
>
<el-form-item
:label=
"$t('所属目的国家')"
prop=
"country
Id
"
>
<el-select
style=
"width: 100%"
filterable
clearable
v-model=
"form.countryId"
:placeholder=
"$t('请选择国家')"
>
<el-option
v-for=
"dict in countryList"
:key=
"dict.id"
:label=
"$l(dict,'title')"
:value=
"parseInt(dict.id)"
/>
</el-select>
...
...
@@ -95,7 +95,7 @@
<el-row
:gutter=
"20"
>
<el-col
:span=
"12"
>
<el-form-item
label=
"可出商品特性"
prop=
"attrId"
>
<el-select
multiple
v-model=
"form.attrId"
>
<el-select
style=
"width: 100%"
multiple
v-model=
"form.attrId"
>
<el-option
v-for=
"(item, index) in attrList"
:value=
"item.id"
:label=
"$l(item, 'attrName')"
></el-option>
</el-select>
</el-form-item>
...
...
@@ -104,7 +104,7 @@
<el-row
:gutter=
"20"
>
<el-col
:span=
"12"
>
<el-form-item
label=
"渠道泡重比例"
prop=
"attrId"
>
<el-input
v-model.number=
"form.bubbleWeightRatio"
style=
"width: 200px
"
>
<el-input
v-model.number=
"form.bubbleWeightRatio"
style=
"width: 100%
"
>
<template
#suffix
>
<span>
%
</span>
</
template
>
...
...
@@ -135,18 +135,25 @@
<!-- </packaging-type>-->
<!-- </el-col>-->
<!-- </el-row>-->
<el-form-item
:label=
"$t('备注-中文')"
prop=
"remarksZh"
>
<el-row
:gutter=
"20"
>
<el-col
:span=
"12"
>
<el-form-item
:label=
"$t('备注-中文')"
prop=
"remarksZh"
>
<el-input
v-model=
"form.remarksZh"
:placeholder=
"$t('请输入备注-中文')"
/>
</el-form-item>
</el-form-item></el-col>
</el-row>
<el-row
:gutter=
"20"
>
<el-col
:span=
"12"
>
<el-form-item
:label=
"$t('备注-英文')"
prop=
"remarksEn"
>
<el-input
v-model=
"form.remarksEn"
:placeholder=
"$t('请输入备注-英文')"
/>
</el-form-item>
</el-form-item></el-col>
</el-row>
<!-- <el-form-item label="状态(0:禁用 1:启用)" prop="status">
<el-radio-group v-model="form.status">
<el-radio label="1">{{ $t('请选择字典生成') }}</el-radio>
...
...
@@ -171,7 +178,7 @@
<!-- </el-card>-->
</el-form>
<div>
<el-button
type=
"primary"
@
click=
"submitForm"
>
{{ $t('确 定') }}
</el-button>
<el-button
v-if=
"!isView"
type=
"primary"
@
click=
"submitForm"
>
{{ $t('确 定') }}
</el-button>
<el-button
@
click=
"$router.back()"
>
{{ $t('返回列表') }}
</el-button>
</div>
<el-dialog
...
...
@@ -222,7 +229,8 @@ export default {
internalNameEn
:
{
required
:
true
,
message
:
'
请输入内部英文名称
'
,
trigger
:
'
blur
'
},
typeNumber
:
{
required
:
true
,
message
:
'
请输入编码类型
'
,
trigger
:
'
blur
'
},
code
:
{
required
:
true
,
message
:
'
请输入简码
'
,
trigger
:
'
blur
'
},
attrId
:
{
required
:
true
,
message
:
'
请选择可出商品特性
'
,
trigger
:
'
blur
'
}
attrId
:
{
required
:
true
,
message
:
'
请选择可出商品特性
'
,
trigger
:
'
blur
'
},
countryId
:
{
required
:
true
,
message
:
'
请选择国家
'
,
trigger
:
'
blur
'
}
},
expressList
:
[],
warehouseList
:
[],
...
...
@@ -241,6 +249,7 @@ export default {
} */
},
mounted
()
{
console
.
log
(
this
.
$route
,
'
rotue
'
)
getTradeCountryList
().
then
(
r
=>
{
this
.
countryList
=
r
.
data
})
...
...
@@ -288,6 +297,9 @@ export default {
},
computed
:
{
isView
(){
return
this
.
$route
.
path
.
includes
(
'
view_channel
'
)
},
DICT_TYPE
()
{
return
DICT_TYPE
},
...
...
src/views/ecw/channel/index.vue
View file @
b6b42e19
...
...
@@ -17,8 +17,8 @@
<!--
<el-form-item
label=
"内部名称-英文"
prop=
"internalNameEn"
>
<el-input
v-model=
"queryParams.internalNameEn"
placeholder=
"请输入内部名称-英文"
clearable
@
keyup.enter.native=
"handleQuery"
/>
</el-form-item>
-->
<el-form-item
:label=
"$t('
类型编
码')"
prop=
"typeNumber"
>
<el-input
v-model=
"queryParams.
typeNumber"
:placeholder=
"$t('请输入类型编
码')"
clearable
<el-form-item
:label=
"$t('
简
码')"
prop=
"typeNumber"
>
<el-input
v-model=
"queryParams.
code"
:placeholder=
"$t('请输入简
码')"
clearable
@
keyup.enter.native=
"handleQuery"
/>
</el-form-item>
<!--
<el-form-item
label=
"仓库ID字符串"
prop=
"warehouseIds"
>
...
...
@@ -34,18 +34,6 @@
</el-select>
<!--
<el-input
v-model=
"queryParams.countryId"
:placeholder=
"$t('请输入所属国家')"
clearable
@
keyup.enter.native=
"handleQuery"
/>
-->
</el-form-item>
<el-form-item
:label=
"$t('预计时间')"
>
<el-input
v-model=
"queryParams.etaTime"
:placeholder=
"$t('预计到达天数')"
clearable
@
keyup.enter.native=
"handleQuery"
/>
</el-form-item>
<el-form-item
:label=
"$t('渠道代理')"
prop=
"channelAgent"
>
<el-input
v-model=
"queryParams.channelAgent"
:placeholder=
"$t('请输入渠道代理')"
clearable
@
keyup.enter.native=
"handleQuery"
/>
</el-form-item>
<el-form-item
:label=
"$t('备注')"
prop=
"remarksZh"
>
<el-input
v-model=
"queryParams.remarksZh"
:placeholder=
"$t('请输入备注-中文')"
clearable
@
keyup.enter.native=
"handleQuery"
/>
</el-form-item>
<!--
<el-form-item
label=
"备注-英文"
prop=
"remarksEn"
>
<el-input
v-model=
"queryParams.remarksEn"
placeholder=
"请输入备注-英文"
clearable
@
keyup.enter.native=
"handleQuery"
/>
</el-form-item>
-->
...
...
@@ -129,12 +117,21 @@
<span>
{{
parseTime
(
scope
.
row
.
updateTime
)
}}
</span>
</
template
>
</el-table-column>
<el-table-column
:label=
"$t('跟新人')"
prop=
"updaterName"
>
<el-table-column
:label=
"$t('更新人')"
prop=
"updaterName"
>
</el-table-column>
<el-table-column
:label=
"$t('状态')"
prop=
"updaterName"
>
<
template
v-slot=
"{row}"
>
<el-switch
@
change=
"(e)=>
{changeSwitch(e,row)}" :validate-event="false" :active-value="true"
v-model="row.status">
</el-switch>
</
template
>
</el-table-column>
<el-table-column
:label=
"$t('操作')"
align=
"center"
class-name=
"small-padding fixed-width"
>
<
template
slot-scope=
"scope"
>
<el-button
size=
"mini"
type=
"text"
icon=
"el-icon-edit"
@
click=
"handleUpdate(scope.row)"
v-hasPermi=
"['ecw:channel:update']"
>
{{
$t
(
'
修改
'
)
}}
</el-button>
<el-button
size=
"mini"
type=
"text"
icon=
"el-icon-view"
@
click=
"handleUpdate(scope.row,2)"
v-hasPermi=
"['ecw:channel:view']"
>
{{
$t
(
'
查看
'
)
}}
</el-button>
<el-button
size=
"mini"
type=
"text"
icon=
"el-icon-delete"
@
click=
"handleDelete(scope.row)"
v-hasPermi=
"['ecw:channel:delete']"
>
{{
$t
(
'
删除
'
)
}}
...
...
@@ -156,7 +153,7 @@ import {
deleteChannel
,
getChannel
,
getChannelPage
,
exportChannelExcel
exportChannelExcel
,
channelSwitch
}
from
"
@/api/ecw/channel
"
;
import
{
getCountryListAll
}
from
"
@/api/ecw/country
"
;
import
{
getTradeCountryList
}
from
"
@/api/ecw/region
"
;
...
...
@@ -204,7 +201,22 @@ export default {
this
.
getList
();
},
methods
:
{
changeSwitch
(
val
,
row
)
{
let
title
=
'
是否要
'
+
(
val
?
'
打开
'
:
'
关闭
'
)
+
"
《
"
+
this
.
$l
(
row
,
'
name
'
)
+
'
》
'
this
.
$confirm
(
title
,
'
提示
'
,
{
confirmButtonText
:
'
确定
'
,
cancelButtonText
:
'
取消
'
,
type
:
'
warning
'
}).
then
(()
=>
{
channelSwitch
(
row
.
channelId
).
then
(
r
=>
{
this
.
$message
.
success
(
'
修改成功
'
)
console
.
log
(
r
)
})
}).
catch
(()
=>
{
row
.
status
=
!
val
});
},
/** 查询列表 */
getList
()
{
this
.
loading
=
true
;
...
...
@@ -235,8 +247,12 @@ export default {
return
this
.
$router
.
push
(
'
create_channel
'
)
},
/** 修改按钮操作 */
handleUpdate
(
row
)
{
handleUpdate
(
row
,
type
=
1
)
{
if
(
type
===
1
)
{
return
this
.
$router
.
push
(
'
edit_channel?id=
'
+
row
.
channelId
)
}
else
{
return
this
.
$router
.
push
(
'
view_channel?id=
'
+
row
.
channelId
)
}
},
/** 删除按钮操作 */
...
...
src/views/ecw/deptTarget/allAchievement.vue
View file @
b6b42e19
...
...
@@ -58,6 +58,12 @@
<el-option
v-for=
"item in importWarehouseList"
:label=
"$l(item, 'title')"
:value=
"item.id"
:key=
"item.id"
></el-option>
</el-select>
</el-form-item>
<el-form-item
label=
"业绩类型"
>
<el-select
clearable
v-model=
"queryParams.achieveType"
>
<el-option
:value=
"1"
label=
"新客户"
></el-option>
<el-option
:value=
"0"
label=
"旧客户"
></el-option>
</el-select>
</el-form-item>
<el-button
type=
"primary"
icon=
"el-icon-search"
@
click=
"handleQuery"
>
{{
$t
(
'
搜索
'
)
}}
</el-button>
<el-button
@
click=
"resetQuery"
>
{{
$t
(
'
重置
'
)
}}
</el-button>
<el-button
type=
"warning"
plain
icon=
"el-icon-download"
size=
"mini"
@
click=
"handleExportDetail"
:loading=
"exportLoading"
v-hasPermi=
"['ecw:achievement:export']"
>
{{
$t
(
'
导出明细
'
)
}}
</el-button>
...
...
src/views/ecw/deptTarget/index.vue
View file @
b6b42e19
src/views/ecw/deptTarget/myAchievement.vue
View file @
b6b42e19
...
...
@@ -7,19 +7,21 @@
<el-input
v-model=
"queryParams.key"
:placeholder=
"$t('请输入关键字查找')"
clearable
/>
</el-form-item>
<el-form-item
:label=
"$t('运输方式')"
prop=
"transportType"
>
<dict-selector
:type=
"DICT_TYPE.ECW_TRANSPORT_TYPE"
v-model=
"queryParams.transportType"
formatter=
"number"
clearable
/>
<dict-selector
:type=
"DICT_TYPE.ECW_TRANSPORT_TYPE"
v-model=
"queryParams.transportType"
formatter=
"number"
clearable
/>
</el-form-item>
<el-form-item
:label=
"$t('唛头')"
prop=
"marks"
>
<el-input
v-model=
"queryParams.marks"
:placeholder=
"$t('请输入关键字查找')"
clearable
/>
<el-input
v-model=
"queryParams.marks"
:placeholder=
"$t('请输入关键字查找')"
clearable
/>
</el-form-item>
<el-form-item
:label=
"$t('资源类型')"
prop=
"customerType"
>
<!--
<el-select
clearable
v-model=
"queryParams.customerType"
:placeholder=
"$t('请选择资源类型')"
clearable
size=
"small"
>
<el-option
v-for=
"dict in getDictDatas(DICT_TYPE.CUSTOMER_ESOURCE_TYPE)"
:key=
"dict.value"
:label=
"dict.label"
:value=
"dict.value"
/>
</el-select>
-->
<dict-selector
:type=
"DICT_TYPE.CUSTOMER_ESOURCE_TYPE"
v-model=
"queryParams.customerType"
:placeholder=
"$t('请选择资源类型')"
clearable
></dict-selector>
<dict-selector
:type=
"DICT_TYPE.CUSTOMER_ESOURCE_TYPE"
v-model=
"queryParams.customerType"
:placeholder=
"$t('请选择资源类型')"
clearable
></dict-selector>
</el-form-item>
<!--
<el-form-item
:label=
"$t('客户经理')"
prop=
"customerService"
>
<!--
<el-form-item
:label=
"$t('客户经理')"
prop=
"customerService"
>
<el-select
clearable
v-model=
"queryParams.customerService"
:placeholder=
"$t('请选择客户经理')"
clearable
size=
"small"
>
<el-option
v-for=
"dict in customerServiceList"
:key=
"dict.id"
:label=
"dict.nickname"
:value=
"dict.id"
/>
...
...
@@ -32,12 +34,14 @@
</el-select>
</el-form-item>
-->
<el-form-item
prop=
"dateFilter"
>
<el-date-picker
v-model=
"dateFilter"
type=
"datetimerange"
range-separator=
"-"
:start-placeholder=
"$t('开始日期')"
:end-placeholder=
"$t('结束日期')"
value-format=
"yyyy-MM-dd HH:mm:ss"
></el-date-picker>
<!--
<el-date-picker
v-model=
"queryParams.beginStartTime"
:placeholder=
"$t('请选择开始时间')"
value-format=
"yyyy-MM-dd HH:mm:ss"
></el-date-picker>
-->
<el-date-picker
v-model=
"dateFilter"
type=
"datetimerange"
range-separator=
"-"
:start-placeholder=
"$t('开始日期')"
:end-placeholder=
"$t('结束日期')"
value-format=
"yyyy-MM-dd HH:mm:ss"
></el-date-picker>
<!--
<el-date-picker
v-model=
"queryParams.beginStartTime"
:placeholder=
"$t('请选择开始时间')"
value-format=
"yyyy-MM-dd HH:mm:ss"
></el-date-picker>
-->
</el-form-item>
<!--
<el-form-item
:label=
"$t('结束时间')"
prop=
"endStartTime"
>
-->
<!--
<el-date-picker
v-model=
"queryParams.endStartTime"
:placeholder=
"$t('请选择结束时间')"
value-format=
"yyyy-MM-dd HH:mm:ss"
></el-date-picker>
-->
<!--
</el-form-item>
-->
<!--
<el-form-item
:label=
"$t('结束时间')"
prop=
"endStartTime"
>
-->
<!--
<el-date-picker
v-model=
"queryParams.endStartTime"
:placeholder=
"$t('请选择结束时间')"
value-format=
"yyyy-MM-dd HH:mm:ss"
></el-date-picker>
-->
<!--
</el-form-item>
-->
<el-form-item>
<el-form-item
:label=
"$t('报价单号')"
prop=
"key"
>
<el-input
v-model=
"queryParams.number"
:placeholder=
"$t('请输入报价单号')"
clearable
/>
...
...
@@ -56,17 +60,26 @@
</el-form-item>
<el-form-item
:label=
"$t('始发仓')"
prop=
"startWarehouseId"
>
<el-select
v-model=
"queryParams.startWarehouseId"
:placeholder=
"$t('请选择始发仓')"
clearable
>
<el-option
v-for=
"item in exportWarehouseList"
:label=
"$l(item, 'title')"
:value=
"item.id"
:key=
"item.id"
></el-option>
<el-option
v-for=
"item in exportWarehouseList"
:label=
"$l(item, 'title')"
:value=
"item.id"
:key=
"item.id"
></el-option>
</el-select>
</el-form-item>
<el-form-item
:label=
"$t('目的仓')"
prop=
"destWarehouseIdArr"
>
<el-select
:multiple=
"true"
v-model=
"queryParams.destWarehouseIdArr"
multiple
:placeholder=
"$t('请选择目的仓')"
clearable
>
<el-option
v-for=
"item in importWarehouseList"
:label=
"$l(item, 'title')"
:value=
"item.id"
:key=
"item.id"
></el-option>
<el-select
:multiple=
"true"
v-model=
"queryParams.destWarehouseIdArr"
multiple
:placeholder=
"$t('请选择目的仓')"
clearable
>
<el-option
v-for=
"item in importWarehouseList"
:label=
"$l(item, 'title')"
:value=
"item.id"
:key=
"item.id"
></el-option>
</el-select>
</el-form-item>
<el-button
type=
"primary"
icon=
"el-icon-search"
@
click=
"handleQuery"
>
{{
$t
(
'
搜索
'
)
}}
</el-button>
<el-button
type=
"primary"
icon=
"el-icon-search"
@
click=
"resetQuery"
>
{{
$t
(
'
重置
'
)
}}
</el-button>
<!--
<el-button
type=
"warning"
plain
icon=
"el-icon-download"
size=
"mini"
@
click=
"handleExport"
:loading=
"exportLoading"
<el-form-item
label=
"业绩类型"
>
<el-select
clearable
v-model=
"queryParams.achieveType"
>
<el-option
:value=
"1"
label=
"新客户"
></el-option>
<el-option
:value=
"0"
label=
"旧客户"
></el-option>
</el-select>
</el-form-item>
<el-button
type=
"primary"
icon=
"el-icon-search"
@
click=
"handleQuery"
>
{{
$t
(
'
搜索
'
)
}}
</el-button>
<el-button
type=
"primary"
icon=
"el-icon-search"
@
click=
"resetQuery"
>
{{
$t
(
'
重置
'
)
}}
</el-button>
<!--
<el-button
type=
"warning"
plain
icon=
"el-icon-download"
size=
"mini"
@
click=
"handleExport"
:loading=
"exportLoading"
>
{{
$t
(
'
导出
'
)
}}
</el-button>
-->
</el-form-item>
</el-form>
...
...
@@ -86,10 +99,10 @@
<el-table-column
:label=
"$t('业绩类型')"
align=
"center"
prop=
"achieveType"
/>
<el-table-column
:label=
"$t('报价单号')"
align=
"center"
width=
"180"
>
<
template
slot-scope=
"scope"
>
<span>
{{
scope
.
row
.
number
}}
</span>
<span>
{{
scope
.
row
.
number
}}
</span>
</
template
>
</el-table-column>
<!-- <el-table-column :label="$t('报价结果')" align="center">
<!-- <el-table-column :label="$t('报价结果')" align="center">
<template slot-scope="scope">
<dict-tag :type="DICT_TYPE.ECW_OFFER_STATUS" :value="scope.row.offerStatus"/>
</template>
...
...
@@ -101,7 +114,7 @@
<el-table-column
:label=
"$t('订单状态')"
align=
"center"
prop=
"statusMsg"
/>
<el-table-column
:label=
"$t('是否控货')"
align=
"center"
prop=
"isCargoControl"
>
<
template
slot-scope=
"scope"
>
{{
scope
.
row
.
isCargoControl
?
$t
(
'
是
'
):
$t
(
'
否
'
)
}}
{{
scope
.
row
.
isCargoControl
?
$t
(
'
是
'
)
:
$t
(
'
否
'
)
}}
</
template
>
</el-table-column>
<el-table-column
:label=
"$t('重量')"
align=
"center"
prop=
"completeWeight"
/>
...
...
@@ -118,7 +131,7 @@
</template>
<
script
>
import
{
import
{
createDeptTarget
,
updateDeptTarget
,
deleteDeptTarget
,
...
...
@@ -128,15 +141,15 @@
getCreateInitData
,
getPersonTargetPage
,
myAchievementByPage
}
from
"
@/api/ecw/deptTarget
"
;
import
{
listSimpleDepts
}
from
"
@/api/system/dept
"
;
import
{
getChannelList
}
from
'
@/api/ecw/channel
'
;
import
dayjs
from
"
dayjs
"
;
import
{
listServiceUser
}
from
"
@/api/system/user
"
;
import
{
getWarehouseList
}
from
'
@/api/ecw/warehouse
'
import
Total_num
from
"
@/views/ecw/deptTarget/total_num.vue
"
;
}
from
"
@/api/ecw/deptTarget
"
;
import
{
listSimpleDepts
}
from
"
@/api/system/dept
"
;
import
{
getChannelList
}
from
'
@/api/ecw/channel
'
;
import
dayjs
from
"
dayjs
"
;
import
{
listServiceUser
}
from
"
@/api/system/user
"
;
import
{
getWarehouseList
}
from
'
@/api/ecw/warehouse
'
import
Total_num
from
"
@/views/ecw/deptTarget/total_num.vue
"
;
export
default
{
export
default
{
name
:
"
EcwDepttargetMyachievement
"
,
components
:
{
Total_num
},
data
()
{
...
...
@@ -155,7 +168,7 @@
tableList
:
[],
// 弹出层标题
title
:
""
,
dateFilter
:
[],
dateFilter
:
[],
detail
:
{
deptName
:
null
,
targetType
:
null
,
...
...
@@ -180,7 +193,7 @@
queryParams
:
{
pageNo
:
1
,
pageSize
:
10
,
beginStartTime
:
null
,
beginStartTime
:
null
,
transportType
:
null
,
shippingChannel
:
null
,
endStartTime
:
null
,
...
...
@@ -192,26 +205,26 @@
},
// 表单参数
form
:
{},
customerServiceList
:
[],
customerServiceList
:
[],
// 表单校验
rules
:
{
deptId
:
[{
required
:
true
,
message
:
this
.
$t
(
"
部门ID不能为空
"
),
trigger
:
"
blur
"
}],
targetType
:
[{
required
:
true
,
message
:
this
.
$t
(
"
目标类型不能为空
"
),
trigger
:
"
change
"
}],
cubeNum
:
[{
required
:
true
,
message
:
this
.
$t
(
"
立方数不能为空
"
),
trigger
:
"
blur
"
}],
},
totalData
:
{
companyWeight
:
0
,
companyVolume
:
0
,
companyNum
:
0
,
developWeight
:
0
,
developVolume
:
0
,
developNum
:
0
,
sumWeight
:
0
,
sumVolume
:
0
,
sumNum
:
0
,
totalData
:
{
companyWeight
:
0
,
companyVolume
:
0
,
companyNum
:
0
,
developWeight
:
0
,
developVolume
:
0
,
developNum
:
0
,
sumWeight
:
0
,
sumVolume
:
0
,
sumNum
:
0
,
},
myAchievementData
:
{},
warehouseList
:
[]
myAchievementData
:
{},
warehouseList
:
[]
};
},
computed
:
{
...
...
@@ -226,11 +239,11 @@
return
'
/
'
}
},
exportWarehouseList
()
{
exportWarehouseList
()
{
/* tradeType 1 进口,2出口,3进出口 */
return
this
.
warehouseList
.
filter
(
item
=>
item
.
tradeType
==
2
||
item
.
tradeType
==
3
)
},
importWarehouseList
()
{
importWarehouseList
()
{
return
this
.
warehouseList
.
filter
(
item
=>
item
.
tradeType
==
1
||
item
.
tradeType
==
3
)
},
},
...
...
@@ -241,7 +254,7 @@
created
()
{
this
.
getChannelList
();
this
.
getList
();
listServiceUser
().
then
(
r
=>
{
listServiceUser
().
then
(
r
=>
{
this
.
customerServiceList
=
r
.
data
;
})
getWarehouseList
().
then
(
res
=>
{
...
...
@@ -275,11 +288,11 @@
}
})
},
customerServiceFn
(
val
)
{
if
(
this
.
customerServiceList
.
length
>
0
)
{
let
index
=
this
.
customerServiceList
.
findIndex
(
item
=>
item
.
id
===
val
.
userId
);
return
index
!==
-
1
?
this
.
customerServiceList
[
index
]?.
nickname
:
''
}
else
{
customerServiceFn
(
val
)
{
if
(
this
.
customerServiceList
.
length
>
0
)
{
let
index
=
this
.
customerServiceList
.
findIndex
(
item
=>
item
.
id
===
val
.
userId
);
return
index
!==
-
1
?
this
.
customerServiceList
[
index
]?.
nickname
:
''
}
else
{
return
''
}
},
...
...
@@ -287,7 +300,7 @@
getList
()
{
this
.
loading
=
true
;
const
params
=
{...
this
.
queryParams
}
if
(
params
.
destWarehouseIdArr
?.
length
)
{
if
(
params
.
destWarehouseIdArr
?.
length
)
{
params
.
destWarehouseIds
=
params
.
destWarehouseIdArr
.
join
(
'
,
'
)
}
// 执行查询
...
...
@@ -295,21 +308,21 @@
this
.
list
=
response
.
data
.
myAchievementDtos
.
list
;
this
.
total
=
response
.
data
.
myAchievementDtos
.
total
;
this
.
myAchievementData
=
response
.
data
this
.
totalData
.
sumWeight
=
this
.
myAchievementData
.
totalWeight
this
.
totalData
.
sumVolume
=
this
.
myAchievementData
.
totalVolume
this
.
totalData
.
sumNum
=
this
.
myAchievementData
.
totalNum
this
.
totalData
.
companyWeight
=
this
.
myAchievementData
.
companyTotalWeight
this
.
totalData
.
companyVolume
=
this
.
myAchievementData
.
companyTotalVolume
this
.
totalData
.
companyNum
=
this
.
myAchievementData
.
companyTotalNum
this
.
totalData
.
developWeight
=
this
.
myAchievementData
.
devTotalWeight
this
.
totalData
.
developVolume
=
this
.
myAchievementData
.
devTotalVolume
this
.
totalData
.
developNum
=
this
.
myAchievementData
.
devTotalNum
this
.
$set
(
this
.
totalData
,
'
newTotalNum
'
,
this
.
myAchievementData
.
newTotalNum
)
this
.
$set
(
this
.
totalData
,
'
newTotalVolume
'
,
this
.
myAchievementData
.
newTotalVolume
)
this
.
$set
(
this
.
totalData
,
'
newTotalWeight
'
,
this
.
myAchievementData
.
newTotalWeight
)
this
.
$set
(
this
.
totalData
,
'
oldTotalNum
'
,
this
.
myAchievementData
.
oldTotalNum
)
this
.
$set
(
this
.
totalData
,
'
oldTotalVolume
'
,
this
.
myAchievementData
.
oldTotalVolume
)
this
.
$set
(
this
.
totalData
,
'
oldTotalWeight
'
,
this
.
myAchievementData
.
oldTotalWeight
)
this
.
totalData
.
sumWeight
=
this
.
myAchievementData
.
totalWeight
this
.
totalData
.
sumVolume
=
this
.
myAchievementData
.
totalVolume
this
.
totalData
.
sumNum
=
this
.
myAchievementData
.
totalNum
this
.
totalData
.
companyWeight
=
this
.
myAchievementData
.
companyTotalWeight
this
.
totalData
.
companyVolume
=
this
.
myAchievementData
.
companyTotalVolume
this
.
totalData
.
companyNum
=
this
.
myAchievementData
.
companyTotalNum
this
.
totalData
.
developWeight
=
this
.
myAchievementData
.
devTotalWeight
this
.
totalData
.
developVolume
=
this
.
myAchievementData
.
devTotalVolume
this
.
totalData
.
developNum
=
this
.
myAchievementData
.
devTotalNum
this
.
$set
(
this
.
totalData
,
'
newTotalNum
'
,
this
.
myAchievementData
.
newTotalNum
)
this
.
$set
(
this
.
totalData
,
'
newTotalVolume
'
,
this
.
myAchievementData
.
newTotalVolume
)
this
.
$set
(
this
.
totalData
,
'
newTotalWeight
'
,
this
.
myAchievementData
.
newTotalWeight
)
this
.
$set
(
this
.
totalData
,
'
oldTotalNum
'
,
this
.
myAchievementData
.
oldTotalNum
)
this
.
$set
(
this
.
totalData
,
'
oldTotalVolume
'
,
this
.
myAchievementData
.
oldTotalVolume
)
this
.
$set
(
this
.
totalData
,
'
oldTotalWeight
'
,
this
.
myAchievementData
.
oldTotalWeight
)
this
.
loading
=
false
;
});
},
...
...
@@ -336,19 +349,21 @@
/** 搜索按钮操作 */
handleQuery
()
{
this
.
queryParams
.
pageNo
=
1
;
this
.
queryParams
.
beginStartTime
=
this
.
dateFilter
[
0
];
this
.
queryParams
.
endStartTime
=
this
.
dateFilter
[
1
];
this
.
queryParams
.
beginStartTime
=
this
.
dateFilter
[
0
];
this
.
queryParams
.
endStartTime
=
this
.
dateFilter
[
1
];
this
.
getList
();
},
/** 重置按钮操作 */
resetQuery
()
{
this
.
dateFilter
=
[]
this
.
dateRangeCreateTime
=
[];
this
.
dateRangeStartTime
=
[];
this
.
dateRangeEndTime
=
[];
this
.
resetForm
(
"
queryForm
"
);
this
.
handleQuery
();
this
.
queryParams
=
{
page
:
1
,
pageSize
:
10
}
// this.dateFilter = []
// this.dateRangeCreateTime = [];
// this.dateRangeStartTime = [];
// this.dateRangeEndTime = [];
// this.resetForm("queryForm");
// this.handleQuery();
this
.
getList
()
},
/** 新增按钮操作 */
handleAdd
()
{
...
...
@@ -421,25 +436,25 @@
}).
catch
(()
=>
{
});
},
handleSelectionChange
(
val
)
{
if
(
val
&&
val
.
length
>
0
)
{
var
data
=
{
companyWeight
:
0
,
companyVolume
:
0
,
companyNum
:
0
,
developWeight
:
0
,
developVolume
:
0
,
developNum
:
0
,
sumWeight
:
0
,
sumVolume
:
0
,
sumNum
:
0
,
handleSelectionChange
(
val
)
{
if
(
val
&&
val
.
length
>
0
)
{
var
data
=
{
companyWeight
:
0
,
companyVolume
:
0
,
companyNum
:
0
,
developWeight
:
0
,
developVolume
:
0
,
developNum
:
0
,
sumWeight
:
0
,
sumVolume
:
0
,
sumNum
:
0
,
}
val
.
forEach
(
item
=>
{
if
(
item
.
customerType
==
1
)
{
val
.
forEach
(
item
=>
{
if
(
item
.
customerType
==
1
)
{
data
.
developWeight
+=
item
.
completeWeight
data
.
developVolume
+=
item
.
completeVolume
data
.
developNum
+=
item
.
sumNum
}
else
{
}
else
{
data
.
companyWeight
+=
item
.
completeWeight
data
.
companyVolume
+=
item
.
completeVolume
data
.
companyNum
+=
item
.
sumNum
...
...
@@ -451,17 +466,17 @@
data
.
developVolume
=
data
.
developVolume
.
toFixed
(
2
);
data
.
companyVolume
=
data
.
companyVolume
.
toFixed
(
2
);
data
.
sumVolume
=
data
.
sumVolume
.
toFixed
(
2
);
this
.
$set
(
this
,
'
totalData
'
,
data
)
}
else
{
this
.
totalData
.
sumWeight
=
this
.
myAchievementData
.
totalWeight
this
.
totalData
.
sumVolume
=
this
.
myAchievementData
.
totalVolume
this
.
totalData
.
sumNum
=
this
.
myAchievementData
.
totalNum
this
.
totalData
.
companyWeight
=
this
.
myAchievementData
.
companyTotalWeight
this
.
totalData
.
companyVolume
=
this
.
myAchievementData
.
companyTotalVolume
this
.
totalData
.
companyNum
=
this
.
myAchievementData
.
companyTotalNum
this
.
totalData
.
developWeight
=
this
.
myAchievementData
.
devTotalWeight
this
.
totalData
.
developVolume
=
this
.
myAchievementData
.
devTotalVolume
this
.
totalData
.
developNum
=
this
.
myAchievementData
.
devTotalNum
this
.
$set
(
this
,
'
totalData
'
,
data
)
}
else
{
this
.
totalData
.
sumWeight
=
this
.
myAchievementData
.
totalWeight
this
.
totalData
.
sumVolume
=
this
.
myAchievementData
.
totalVolume
this
.
totalData
.
sumNum
=
this
.
myAchievementData
.
totalNum
this
.
totalData
.
companyWeight
=
this
.
myAchievementData
.
companyTotalWeight
this
.
totalData
.
companyVolume
=
this
.
myAchievementData
.
companyTotalVolume
this
.
totalData
.
companyNum
=
this
.
myAchievementData
.
companyTotalNum
this
.
totalData
.
developWeight
=
this
.
myAchievementData
.
devTotalWeight
this
.
totalData
.
developVolume
=
this
.
myAchievementData
.
devTotalVolume
this
.
totalData
.
developNum
=
this
.
myAchievementData
.
devTotalNum
}
},
/** 导出按钮操作 */
...
...
@@ -485,19 +500,20 @@
});
}
}
};
};
</
script
>
<
style
scoped
>
.total_num
{
display
:
flex
;
<
style
scoped
>
.total_num
{
display
:
flex
;
align-items
:
center
;
justify-content
:
center
;
margin
:
20px
0
;
font-size
:
15px
;
}
.total_num
span
{
margin
:
20px
0
;
font-size
:
15px
;
}
.total_num
span
{
margin
:
0
8px
;
}
}
</
style
>
src/views/ecw/deptTarget/myDeptAchievement.vue
View file @
b6b42e19
...
...
@@ -4,22 +4,23 @@
<!-- 搜索工作栏 -->
<el-form
:model=
"queryParams"
ref=
"queryForm"
size=
"small"
:inline=
"true"
v-show=
"showSearch"
label-width=
"68px"
>
<el-form-item
:label=
"$t('关键字')"
prop=
"key"
>
<el-input
v-model=
"queryParams.key"
:placeholder=
"$t('请输入关键字查找')"
/>
<el-input
v-model=
"queryParams.key"
:placeholder=
"$t('请输入关键字查找')"
/>
</el-form-item>
<el-form-item
:label=
"$t('运输方式')"
prop=
"transportType"
>
<dict-selector
:type=
"DICT_TYPE.ECW_TRANSPORT_TYPE"
v-model=
"queryParams.transportType"
formatter=
"number"
/>
</el-form-item>
<el-form-item
:label=
"$t('唛头')"
prop=
"marks"
>
<el-input
v-model=
"queryParams.marks"
:placeholder=
"$t('请输入关键字查找')"
/>
<el-input
v-model=
"queryParams.marks"
:placeholder=
"$t('请输入关键字查找')"
/>
</el-form-item>
<el-form-item
:label=
"$t('资源类型')"
prop=
"customerType"
>
<!--
<el-select
clearable
v-model=
"queryParams.customerType"
:placeholder=
"$t('请选择资源类型')"
clearable
size=
"small"
>
<el-option
v-for=
"dict in getDictDatas(DICT_TYPE.CUSTOMER_ESOURCE_TYPE)"
:key=
"dict.value"
:label=
"dict.label"
:value=
"dict.value"
/>
</el-select>
-->
<dict-selector
:type=
"DICT_TYPE.CUSTOMER_ESOURCE_TYPE"
v-model=
"queryParams.customerType"
:placeholder=
"$t('请选择资源类型')"
clearable
></dict-selector>
<dict-selector
:type=
"DICT_TYPE.CUSTOMER_ESOURCE_TYPE"
v-model=
"queryParams.customerType"
:placeholder=
"$t('请选择资源类型')"
clearable
></dict-selector>
</el-form-item>
<!--
<el-form-item
:label=
"$t('客户经理')"
prop=
"customerService"
>
<!--
<el-form-item
:label=
"$t('客户经理')"
prop=
"customerService"
>
<el-select
clearable
v-model=
"queryParams.customerService"
:placeholder=
"$t('请选择客户经理')"
clearable
size=
"small"
>
<el-option
v-for=
"dict in customerServiceList"
:key=
"dict.id"
:label=
"dict.nickname"
:value=
"dict.id"
/>
...
...
@@ -32,12 +33,13 @@
</el-select>
</el-form-item>
-->
<el-form-item>
<el-date-picker
v-model=
"dateFilter"
type=
"daterange"
range-separator=
"-"
:start-placeholder=
"$t('开始日期')"
:end-placeholder=
"$t('结束日期')"
value-format=
"yyyy-MM-dd HH:mm:ss"
></el-date-picker>
<!--
<el-date-picker
v-model=
"queryParams.beginStartTime"
:placeholder=
"$t('请选择开始时间')"
value-format=
"yyyy-MM-dd HH:mm:ss"
></el-date-picker>
-->
<el-date-picker
v-model=
"dateFilter"
type=
"daterange"
range-separator=
"-"
:start-placeholder=
"$t('开始日期')"
:end-placeholder=
"$t('结束日期')"
value-format=
"yyyy-MM-dd HH:mm:ss"
></el-date-picker>
<!--
<el-date-picker
v-model=
"queryParams.beginStartTime"
:placeholder=
"$t('请选择开始时间')"
value-format=
"yyyy-MM-dd HH:mm:ss"
></el-date-picker>
-->
</el-form-item>
<!--
<el-form-item
:label=
"$t('结束时间')"
prop=
"endStartTime"
>
-->
<!--
<el-date-picker
v-model=
"queryParams.endStartTime"
:placeholder=
"$t('请选择结束时间')"
value-format=
"yyyy-MM-dd HH:mm:ss"
></el-date-picker>
-->
<!--
</el-form-item>
-->
<!--
<el-form-item
:label=
"$t('结束时间')"
prop=
"endStartTime"
>
-->
<!--
<el-date-picker
v-model=
"queryParams.endStartTime"
:placeholder=
"$t('请选择结束时间')"
value-format=
"yyyy-MM-dd HH:mm:ss"
></el-date-picker>
-->
<!--
</el-form-item>
-->
<el-form-item>
<el-form-item
:label=
"$t('报价单号')"
prop=
"key"
>
<el-input
v-model=
"queryParams.number"
:placeholder=
"$t('请输入报价单号')"
clearable
/>
...
...
@@ -56,20 +58,30 @@
</el-form-item>
<el-form-item
:label=
"$t('始发仓')"
prop=
"startWarehouseId"
>
<el-select
v-model=
"queryParams.startWarehouseId"
:placeholder=
"$t('请选择始发仓')"
clearable
>
<el-option
v-for=
"item in exportWarehouseList"
:label=
"$l(item, 'title')"
:value=
"item.id"
:key=
"item.id"
></el-option>
<el-option
v-for=
"item in exportWarehouseList"
:label=
"$l(item, 'title')"
:value=
"item.id"
:key=
"item.id"
></el-option>
</el-select>
</el-form-item>
<el-form-item
:label=
"$t('目的仓')"
prop=
"destWarehouseIdArr"
>
<el-select
:multiple=
"true"
v-model=
"queryParams.destWarehouseIdArr"
multiple
:placeholder=
"$t('请选择目的仓')"
clearable
>
<el-option
v-for=
"item in importWarehouseList"
:label=
"$l(item, 'title')"
:value=
"item.id"
:key=
"item.id"
></el-option>
<el-select
:multiple=
"true"
v-model=
"queryParams.destWarehouseIdArr"
multiple
:placeholder=
"$t('请选择目的仓')"
clearable
>
<el-option
v-for=
"item in importWarehouseList"
:label=
"$l(item, 'title')"
:value=
"item.id"
:key=
"item.id"
></el-option>
</el-select>
</el-form-item>
<el-button
type=
"primary"
icon=
"el-icon-search"
@
click=
"handleQuery"
>
{{
$t
(
'
搜索
'
)
}}
</el-button>
<!--
<el-button
type=
"warning"
plain
icon=
"el-icon-download"
size=
"mini"
@
click=
"handleExport"
:loading=
"exportLoading"
<el-form-item
label=
"业绩类型"
>
<el-select
clearable
v-model=
"queryParams.achieveType"
>
<el-option
:value=
"1"
label=
"新客户"
></el-option>
<el-option
:value=
"0"
label=
"旧客户"
></el-option>
</el-select>
</el-form-item>
<el-button
type=
"primary"
icon=
"el-icon-search"
@
click=
"handleQuery"
>
{{
$t
(
'
搜索
'
)
}}
</el-button>
<el-button
type=
"primary"
icon=
"el-icon-search"
@
click=
"resetQuery"
>
{{
$t
(
'
重置
'
)
}}
</el-button>
<!--
<el-button
type=
"warning"
plain
icon=
"el-icon-download"
size=
"mini"
@
click=
"handleExport"
:loading=
"exportLoading"
>
{{
$t
(
'
导出
'
)
}}
</el-button>
-->
</el-form-item>
</el-form>
<total
_num
:total-data=
"totalData"
></total
_num
>
<total
_num
:total-data=
"totalData"
></total
_num
>
<!-- 列表 -->
<el-table
v-loading=
"loading"
:data=
"list"
@
selection-change=
"handleSelectionChange"
>
<!--
<el-table-column
:label=
"$t('序号')"
align=
"center"
type=
"index"
></el-table-column>
-->
...
...
@@ -85,10 +97,10 @@
<el-table-column
:label=
"$t('业绩类型')"
align=
"center"
prop=
"achieveType"
/>
<el-table-column
:label=
"$t('报价单号')"
align=
"center"
width=
"180"
>
<
template
slot-scope=
"scope"
>
<span>
{{
scope
.
row
.
number
}}
</span>
<span>
{{
scope
.
row
.
number
}}
</span>
</
template
>
</el-table-column>
<!-- <el-table-column :label="$t('报价结果')" align="center">
<!-- <el-table-column :label="$t('报价结果')" align="center">
<template slot-scope="scope">
<dict-tag :type="DICT_TYPE.ECW_OFFER_STATUS" :value="scope.row.offerStatus"/>
</template>
...
...
@@ -100,7 +112,7 @@
<el-table-column
:label=
"$t('订单状态')"
align=
"center"
prop=
"statusMsg"
/>
<el-table-column
:label=
"$t('是否控货')"
align=
"center"
prop=
"isCargoControl"
>
<
template
slot-scope=
"scope"
>
{{
scope
.
row
.
isCargoControl
?
$t
(
'
是
'
):
$t
(
'
否
'
)
}}
{{
scope
.
row
.
isCargoControl
?
$t
(
'
是
'
)
:
$t
(
'
否
'
)
}}
</
template
>
</el-table-column>
<el-table-column
:label=
"$t('重量')"
align=
"center"
prop=
"completeWeight"
/>
...
...
@@ -117,7 +129,7 @@
</template>
<
script
>
import
{
import
{
createDeptTarget
,
updateDeptTarget
,
deleteDeptTarget
,
...
...
@@ -128,15 +140,15 @@
getPersonTargetPage
,
myAchievementByPage
,
myDeptAchievementByPage
}
from
"
@/api/ecw/deptTarget
"
;
import
{
listSimpleDepts
}
from
"
@/api/system/dept
"
;
import
{
getChannelList
}
from
'
@/api/ecw/channel
'
;
import
dayjs
from
"
dayjs
"
;
import
{
listServiceUser
}
from
"
@/api/system/user
"
;
import
{
getWarehouseList
}
from
'
@/api/ecw/warehouse
'
import
Total_num
from
"
@/views/ecw/deptTarget/total_num.vue
"
;
}
from
"
@/api/ecw/deptTarget
"
;
import
{
listSimpleDepts
}
from
"
@/api/system/dept
"
;
import
{
getChannelList
}
from
'
@/api/ecw/channel
'
;
import
dayjs
from
"
dayjs
"
;
import
{
listServiceUser
}
from
"
@/api/system/user
"
;
import
{
getWarehouseList
}
from
'
@/api/ecw/warehouse
'
import
Total_num
from
"
@/views/ecw/deptTarget/total_num.vue
"
;
export
default
{
export
default
{
name
:
"
EcwDepttargetMydeptachievement
"
,
components
:
{
Total_num
},
data
()
{
...
...
@@ -155,7 +167,7 @@
tableList
:
[],
// 弹出层标题
title
:
""
,
dateFilter
:
[],
dateFilter
:
[],
detail
:
{
deptName
:
null
,
targetType
:
null
,
...
...
@@ -180,11 +192,11 @@
queryParams
:
{
pageNo
:
1
,
pageSize
:
10
,
beginStartTime
:
null
,
beginStartTime
:
null
,
transportType
:
null
,
shippingChannel
:
null
,
endStartTime
:
null
,
destWarehouseIdArr
:
[]
destWarehouseIdArr
:
[]
},
tableQueryParams
:
{
pageNo
:
1
,
...
...
@@ -193,26 +205,26 @@
},
// 表单参数
form
:
{},
customerServiceList
:
[],
customerServiceList
:
[],
// 表单校验
rules
:
{
deptId
:
[{
required
:
true
,
message
:
this
.
$t
(
"
部门ID不能为空
"
),
trigger
:
"
blur
"
}],
targetType
:
[{
required
:
true
,
message
:
this
.
$t
(
"
目标类型不能为空
"
),
trigger
:
"
change
"
}],
cubeNum
:
[{
required
:
true
,
message
:
this
.
$t
(
"
立方数不能为空
"
),
trigger
:
"
blur
"
}],
},
totalData
:
{
companyWeight
:
0
,
companyVolume
:
0
,
companyNum
:
0
,
developWeight
:
0
,
developVolume
:
0
,
developNum
:
0
,
sumWeight
:
0
,
sumVolume
:
0
,
sumNum
:
0
,
totalData
:
{
companyWeight
:
0
,
companyVolume
:
0
,
companyNum
:
0
,
developWeight
:
0
,
developVolume
:
0
,
developNum
:
0
,
sumWeight
:
0
,
sumVolume
:
0
,
sumNum
:
0
,
},
myAchievementData
:
{},
warehouseList
:
[]
myAchievementData
:
{},
warehouseList
:
[]
};
},
computed
:
{
...
...
@@ -227,18 +239,18 @@
return
'
/
'
}
},
exportWarehouseList
()
{
exportWarehouseList
()
{
/* tradeType 1 进口,2出口,3进出口 */
return
this
.
warehouseList
.
filter
(
item
=>
item
.
tradeType
==
2
||
item
.
tradeType
==
3
)
},
importWarehouseList
()
{
importWarehouseList
()
{
return
this
.
warehouseList
.
filter
(
item
=>
item
.
tradeType
==
1
||
item
.
tradeType
==
3
)
},
},
created
()
{
this
.
getChannelList
();
this
.
getList
();
listServiceUser
().
then
(
r
=>
{
listServiceUser
().
then
(
r
=>
{
this
.
customerServiceList
=
r
.
data
;
})
getWarehouseList
().
then
(
res
=>
{
...
...
@@ -272,11 +284,11 @@
}
})
},
customerServiceFn
(
val
)
{
if
(
this
.
customerServiceList
.
length
>
0
)
{
let
index
=
this
.
customerServiceList
.
findIndex
(
item
=>
item
.
id
===
val
.
userId
);
return
index
!==
-
1
?
this
.
customerServiceList
[
index
]?.
nickname
:
''
}
else
{
customerServiceFn
(
val
)
{
if
(
this
.
customerServiceList
.
length
>
0
)
{
let
index
=
this
.
customerServiceList
.
findIndex
(
item
=>
item
.
id
===
val
.
userId
);
return
index
!==
-
1
?
this
.
customerServiceList
[
index
]?.
nickname
:
''
}
else
{
return
''
}
},
...
...
@@ -284,7 +296,7 @@
getList
()
{
this
.
loading
=
true
;
const
params
=
{...
this
.
queryParams
}
if
(
params
.
destWarehouseIdArr
?.
length
)
{
if
(
params
.
destWarehouseIdArr
?.
length
)
{
params
.
destWarehouseIds
=
params
.
destWarehouseIdArr
.
join
(
'
,
'
)
}
// 执行查询
...
...
@@ -292,21 +304,21 @@
this
.
list
=
response
.
data
.
myAchievementDtos
.
list
;
this
.
total
=
response
.
data
.
myAchievementDtos
.
total
;
this
.
myAchievementData
=
response
.
data
this
.
totalData
.
sumWeight
=
this
.
myAchievementData
.
totalWeight
this
.
totalData
.
sumVolume
=
this
.
myAchievementData
.
totalVolume
this
.
totalData
.
sumNum
=
this
.
myAchievementData
.
totalNum
this
.
totalData
.
companyWeight
=
this
.
myAchievementData
.
companyTotalWeight
this
.
totalData
.
companyVolume
=
this
.
myAchievementData
.
companyTotalVolume
this
.
totalData
.
companyNum
=
this
.
myAchievementData
.
companyTotalNum
this
.
totalData
.
developWeight
=
this
.
myAchievementData
.
devTotalWeight
this
.
totalData
.
developVolume
=
this
.
myAchievementData
.
devTotalVolume
this
.
totalData
.
developNum
=
this
.
myAchievementData
.
devTotalNum
this
.
$set
(
this
.
totalData
,
'
newTotalNum
'
,
this
.
myAchievementData
.
newTotalNum
)
this
.
$set
(
this
.
totalData
,
'
newTotalVolume
'
,
this
.
myAchievementData
.
newTotalVolume
)
this
.
$set
(
this
.
totalData
,
'
newTotalWeight
'
,
this
.
myAchievementData
.
newTotalWeight
)
this
.
$set
(
this
.
totalData
,
'
oldTotalNum
'
,
this
.
myAchievementData
.
oldTotalNum
)
this
.
$set
(
this
.
totalData
,
'
oldTotalVolume
'
,
this
.
myAchievementData
.
oldTotalVolume
)
this
.
$set
(
this
.
totalData
,
'
oldTotalWeight
'
,
this
.
myAchievementData
.
oldTotalWeight
)
this
.
totalData
.
sumWeight
=
this
.
myAchievementData
.
totalWeight
this
.
totalData
.
sumVolume
=
this
.
myAchievementData
.
totalVolume
this
.
totalData
.
sumNum
=
this
.
myAchievementData
.
totalNum
this
.
totalData
.
companyWeight
=
this
.
myAchievementData
.
companyTotalWeight
this
.
totalData
.
companyVolume
=
this
.
myAchievementData
.
companyTotalVolume
this
.
totalData
.
companyNum
=
this
.
myAchievementData
.
companyTotalNum
this
.
totalData
.
developWeight
=
this
.
myAchievementData
.
devTotalWeight
this
.
totalData
.
developVolume
=
this
.
myAchievementData
.
devTotalVolume
this
.
totalData
.
developNum
=
this
.
myAchievementData
.
devTotalNum
this
.
$set
(
this
.
totalData
,
'
newTotalNum
'
,
this
.
myAchievementData
.
newTotalNum
)
this
.
$set
(
this
.
totalData
,
'
newTotalVolume
'
,
this
.
myAchievementData
.
newTotalVolume
)
this
.
$set
(
this
.
totalData
,
'
newTotalWeight
'
,
this
.
myAchievementData
.
newTotalWeight
)
this
.
$set
(
this
.
totalData
,
'
oldTotalNum
'
,
this
.
myAchievementData
.
oldTotalNum
)
this
.
$set
(
this
.
totalData
,
'
oldTotalVolume
'
,
this
.
myAchievementData
.
oldTotalVolume
)
this
.
$set
(
this
.
totalData
,
'
oldTotalWeight
'
,
this
.
myAchievementData
.
oldTotalWeight
)
this
.
loading
=
false
;
});
},
...
...
@@ -327,23 +339,21 @@
transportType
:
undefined
,
shippingChannel
:
undefined
,
cubeNum
:
undefined
,
achieveType
:
undefined
};
this
.
resetForm
(
"
form
"
);
},
/** 搜索按钮操作 */
handleQuery
()
{
this
.
queryParams
.
pageNo
=
1
;
this
.
queryParams
.
beginStartTime
=
this
.
dateFilter
[
0
];
this
.
queryParams
.
endStartTime
=
this
.
dateFilter
[
1
];
this
.
queryParams
.
beginStartTime
=
this
.
dateFilter
[
0
];
this
.
queryParams
.
endStartTime
=
this
.
dateFilter
[
1
];
this
.
getList
();
},
/** 重置按钮操作 */
resetQuery
()
{
this
.
dateRangeCreateTime
=
[];
this
.
dateRangeStartTime
=
[];
this
.
dateRangeEndTime
=
[];
this
.
resetForm
(
"
queryForm
"
);
this
.
handleQuery
();
this
.
queryParams
=
{
pageNo
:
1
,
pageSize
:
10
,}
this
.
getList
()
},
/** 新增按钮操作 */
handleAdd
()
{
...
...
@@ -416,25 +426,25 @@
}).
catch
(()
=>
{
});
},
handleSelectionChange
(
val
)
{
if
(
val
&&
val
.
length
>
0
)
{
var
data
=
{
companyWeight
:
0
,
companyVolume
:
0
,
companyNum
:
0
,
developWeight
:
0
,
developVolume
:
0
,
developNum
:
0
,
sumWeight
:
0
,
sumVolume
:
0
,
sumNum
:
0
,
handleSelectionChange
(
val
)
{
if
(
val
&&
val
.
length
>
0
)
{
var
data
=
{
companyWeight
:
0
,
companyVolume
:
0
,
companyNum
:
0
,
developWeight
:
0
,
developVolume
:
0
,
developNum
:
0
,
sumWeight
:
0
,
sumVolume
:
0
,
sumNum
:
0
,
}
val
.
forEach
(
item
=>
{
if
(
item
.
customerType
==
1
)
{
val
.
forEach
(
item
=>
{
if
(
item
.
customerType
==
1
)
{
data
.
developWeight
+=
item
.
completeWeight
data
.
developVolume
+=
item
.
completeVolume
data
.
developNum
+=
item
.
sumNum
}
else
{
}
else
{
data
.
companyWeight
+=
item
.
completeWeight
data
.
companyVolume
+=
item
.
completeVolume
data
.
companyNum
+=
item
.
sumNum
...
...
@@ -446,17 +456,17 @@
data
.
developVolume
=
data
.
developVolume
.
toFixed
(
2
);
data
.
companyVolume
=
data
.
companyVolume
.
toFixed
(
2
);
data
.
sumVolume
=
data
.
sumVolume
.
toFixed
(
2
);
this
.
$set
(
this
,
'
totalData
'
,
data
)
}
else
{
this
.
totalData
.
sumWeight
=
this
.
myAchievementData
.
totalWeight
this
.
totalData
.
sumVolume
=
this
.
myAchievementData
.
totalVolume
this
.
totalData
.
sumNum
=
this
.
myAchievementData
.
totalNum
this
.
totalData
.
companyWeight
=
this
.
myAchievementData
.
companyTotalWeight
this
.
totalData
.
companyVolume
=
this
.
myAchievementData
.
companyTotalVolume
this
.
totalData
.
companyNum
=
this
.
myAchievementData
.
companyTotalNum
this
.
totalData
.
developWeight
=
this
.
myAchievementData
.
devTotalWeight
this
.
totalData
.
developVolume
=
this
.
myAchievementData
.
devTotalVolume
this
.
totalData
.
developNum
=
this
.
myAchievementData
.
devTotalNum
this
.
$set
(
this
,
'
totalData
'
,
data
)
}
else
{
this
.
totalData
.
sumWeight
=
this
.
myAchievementData
.
totalWeight
this
.
totalData
.
sumVolume
=
this
.
myAchievementData
.
totalVolume
this
.
totalData
.
sumNum
=
this
.
myAchievementData
.
totalNum
this
.
totalData
.
companyWeight
=
this
.
myAchievementData
.
companyTotalWeight
this
.
totalData
.
companyVolume
=
this
.
myAchievementData
.
companyTotalVolume
this
.
totalData
.
companyNum
=
this
.
myAchievementData
.
companyTotalNum
this
.
totalData
.
developWeight
=
this
.
myAchievementData
.
devTotalWeight
this
.
totalData
.
developVolume
=
this
.
myAchievementData
.
devTotalVolume
this
.
totalData
.
developNum
=
this
.
myAchievementData
.
devTotalNum
}
},
/** 导出按钮操作 */
...
...
@@ -480,10 +490,10 @@
});
}
}
};
};
</
script
>
<
style
scoped
>
<
style
scoped
>
</
style
>
src/views/ecw/offer/all-routes-list.vue
View file @
b6b42e19
...
...
@@ -23,11 +23,17 @@
</el-select>
</el-form-item>
<el-form-item
:label=
"$t('出货渠道')"
prop=
"shippingChannel"
>
<el-select
v-model=
"queryParams.
shippingChannel
"
:placeholder=
"$t('请选择出货渠道')"
clearable
>
<el-select
v-model=
"queryParams.
channelId
"
:placeholder=
"$t('请选择出货渠道')"
clearable
>
<el-option
v-for=
"item in channelList"
:label=
"item.nameZh"
:value=
"item.channelId"
:key=
"item.channelId"
></el-option>
</el-select>
</el-form-item>
<el-form-item
label-width=
"200"
label=
"目的仓国家"
>
<el-select
style=
"width: 100%"
filterable
clearable
v-model=
"queryParams.destCountryId"
:placeholder=
"$t('请选择国家')"
>
<el-option
v-for=
"dict in countryList"
:key=
"dict.id"
:label=
"$l(dict,'title')"
:value=
"parseInt(dict.id)"
/>
</el-select>
</el-form-item>
<el-button
type=
"primary"
icon=
"el-icon-search"
@
click=
"handleQuery"
>
{{
$t
(
'
搜索
'
)
}}
</el-button>
</el-form-item>
</el-form>
...
...
@@ -49,6 +55,11 @@
<dict-tag
:type=
"DICT_TYPE.ECW_TRANSPORT_TYPE"
:value=
"row.transportType"
></dict-tag>
</
template
>
</el-table-column>
<el-table-column
:label=
"$t('目的仓国家')"
align=
"center"
>
<
template
slot-scope=
"{row}"
>
{{
$l
(
row
,
'
destCountryName
'
)
}}
</
template
>
</el-table-column>
<el-table-column
:label=
"$t('出货渠道')"
align=
"center"
>
<
template
slot-scope=
"{row}"
>
{{
row
.
channelIds
?
$l
(
row
,
'
channelNames
'
)
:
'
/
'
}}
...
...
@@ -61,6 +72,7 @@
query:{
startWarehouseTitle:$l(row,'startWarehouseTitle'),
destWarehouseTitle: $l(row, 'destWarehouseTitle'),
destCountryName:$l(row,'destCountryName')
}
})">空运渠道包装清关费
</el-button>
...
...
@@ -92,12 +104,14 @@ import {listServiceUser} from "@/api/system/user";
import
{
getWarehouseList
}
from
'
@/api/ecw/warehouse
'
import
{
DICT_TYPE
}
from
"
@/utils/dict
"
;
import
{
warehouseLinePage
}
from
"
@/api/ecw/customerContacts
"
;
import
{
getTradeCountryList
}
from
"
@/api/ecw/region
"
;
export
default
{
name
:
"
a
ll-routes-list
"
,
name
:
"
EcwOfferA
ll-routes-list
"
,
components
:
{},
data
()
{
return
{
countryList
:[],
// 遮罩层
loading
:
true
,
// 总条数
...
...
@@ -135,6 +149,9 @@ export default {
this
.
getList
();
},
created
()
{
getTradeCountryList
().
then
(
r
=>
{
this
.
countryList
=
r
.
data
})
this
.
getChannelList
();
this
.
getList
();
listServiceUser
().
then
(
r
=>
{
...
...
src/views/ecw/offer/channel-route.vue
View file @
b6b42e19
...
...
@@ -39,13 +39,13 @@ export default {
return
DICT_TYPE
},
deletePackagingTypes
()
{
return
(
index
)
=>
{
let
a
=
[]
this
.
form
.
channelList
.
forEach
(
item
=>
{
item
.
packagingCreateReqVOList
.
forEach
(
i
=>
{
this
.
form
.
channelList
[
index
].
packagingCreateReqVOList
.
forEach
(
i
=>
{
a
.
push
(...
i
.
packagingTypes
)
})
})
return
a
}
},
channelIdBlackList
()
{
let
arr
=
[]
...
...
@@ -244,6 +244,7 @@ export default {
<
template
>
<div
style=
"padding: 20px"
>
<div
style=
"margin-bottom: 15px"
>
<span>
目的国:
{{
$route
.
query
.
destCountryName
}}
</span>
<span>
路线:
{{
$route
.
query
.
startWarehouseTitle
}}
到
{{
$route
.
query
.
destWarehouseTitle
}}
</span>
<span
style=
"margin-left: 30px;"
>
运输方式:空运专线
</span>
</div>
...
...
@@ -264,7 +265,8 @@ export default {
<el-button
size=
"mini"
type=
"primary"
@
click=
"newChannelsAdd(index)"
>
新增渠道
</el-button>
</el-col>
<el-col
:span=
"3"
>
<el-button
size=
"mini"
type=
"danger"
:disabled=
"form.channelList.length === 1"
@
click=
"channelsDelete(index)"
>
<el-button
size=
"mini"
type=
"danger"
:disabled=
"form.channelList.length === 1"
@
click=
"channelsDelete(index)"
>
删除当前渠道
</el-button>
</el-col>
...
...
@@ -290,7 +292,7 @@ export default {
<el-col
:span=
"5"
>
<el-select
multiple
v-model=
"itemm.packagingTypes"
>
<el-option
:disabled=
"deletePackagingTypes
.includes(item.value) && (!itemm.packagingTypes.includes(item.value))"
:disabled=
"deletePackagingTypes(index)
.includes(item.value) && (!itemm.packagingTypes.includes(item.value))"
v-for=
"item in getDictDatas(DICT_TYPE.ECW_PACKAGING_TYPE)"
:value=
"item.value"
:key=
"item.value"
:label=
"$l(item, 'label')"
></el-option>
</el-select>
...
...
src/views/ecw/offer/edit.vue
View file @
b6b42e19
...
...
@@ -795,7 +795,9 @@ export default {
this
.
getOpenedRouterList
()
},
// 目的地
'
form.objectiveId
'
(){
async
'
form.objectiveId
'
(){
await
this
.
$nextTick
()
await
this
.
getChannelList
()
this
.
getOpenedRouterList
()
},
'
form.transportId
'
(
transportId
,
oldTransportId
){
...
...
@@ -818,20 +820,22 @@ export default {
this
.
$set
(
this
.
form
,
'
lineId
'
,
undefined
)
}
},
'
form.channelId
'
(){
async
'
form.channelId
'
(){
await
this
.
getTradeCity
()
this
.
getOpenedRouterList
()
this
.
calculationPrice
(
'
form.channelId
'
)
},
'
form.lineId
'
(
lineId
){
async
'
form.lineId
'
(
lineId
){
let
router
=
this
.
routerList
.
find
(
item
=>
item
.
id
==
lineId
)
if
(
router
){
this
.
$set
(
this
.
form
,
'
departureId
'
,
router
.
startCityId
)
this
.
$set
(
this
.
form
,
'
objectiveId
'
,
router
.
destCityId
)
}
this
.
$nextTick
(()
=>
{
this
.
calculationPrice
(
'
form.lineId
'
)
})
await
this
.
$nextTick
()
await
this
.
getChannelList
()
await
this
.
getTradeCity
()
await
this
.
calculationPrice
(
'
form.lineId
'
)
},
'
form.transportVO.packageTypeArr
'
(
val
){
this
.
$set
(
this
.
form
.
transportVO
,
'
packageType
'
,
(
val
||
[]).
join
(
'
,
'
))
...
...
@@ -851,10 +855,10 @@ export default {
this
.
getOffer
()
}
},
created
()
{
async
created
()
{
await
this
.
getChannelList
()
await
this
.
getTradeCity
()
getProductAttrList
().
then
(
res
=>
this
.
productAttrList
=
res
.
data
)
getChannelList
().
then
(
res
=>
this
.
channelList
=
res
.
data
)
getTradeCityList
().
then
(
res
=>
this
.
tradeCityList
=
res
.
data
)
getCurrencyList
().
then
(
res
=>
this
.
currencyList
=
res
.
data
)
getUnitList
().
then
(
res
=>
this
.
unitList
=
res
.
data
)
this
.
transportList
=
this
.
getDictDatas
(
this
.
DICT_TYPE
.
ECW_TRANSPORT_TYPE
)
...
...
@@ -864,6 +868,20 @@ export default {
}
else
this
.
addProduct
()
},
methods
:
{
async
getChannelList
(){
let
query
=
{
cityId
:
this
.
form
.
objectiveId
,
lineId
:
this
.
form
.
lineId
}
this
.
channelList
=
(
await
getChannelList
(
query
)).
data
||
[]
},
async
getTradeCity
(){
let
query
=
{}
if
(
this
.
form
.
channelId
){
query
.
channelId
=
this
.
form
.
channelId
}
this
.
tradeCityList
=
(
await
getTradeCityList
(
query
)).
data
||
[]
},
getOffer
(){
getOffer
(
this
.
$route
.
query
.
id
).
then
(
res
=>
{
let
formData
=
res
.
data
...
...
src/views/ecw/order/components/PrintWarehouseReceipt.vue
View file @
b6b42e19
...
...
@@ -165,6 +165,10 @@ export default {
})
})
})
// 按照入仓时间inTime排序
arr
.
sort
((
a
,
b
)
=>
{
return
new
Date
(
a
.
inTime
).
getTime
()
-
new
Date
(
b
.
inTime
).
getTime
()
})
return
arr
},
calcTotal
(){
...
...
src/views/ecw/order/edit.vue
View file @
b6b42e19
...
...
@@ -85,7 +85,8 @@
</div>
<div
class=
"form-section"
>
<el-form-item
:label=
"$t('运输方式')"
prop=
"transportId"
>
<dict-selector
:type=
"DICT_TYPE.ECW_TRANSPORT_TYPE"
v-model=
"form.transportId"
formatter=
"number"
:disabled2=
"inWarehouse"
/>
<dict-selector
:type=
"DICT_TYPE.ECW_TRANSPORT_TYPE"
v-model=
"form.transportId"
formatter=
"number"
clearable
/>
</el-form-item>
<el-form-item
:label=
"$t('出货渠道')"
prop=
"channelId"
v-if=
"getDictData(DICT_TYPE.ECW_TRANSPORT_TYPE, form.transportId).cssClass == 'channel'"
>
...
...
@@ -96,18 +97,19 @@
:options=
"channelList"
value-field=
"channelId"
:label-field=
"$l(null, 'name')"
clearable
></selector>
</el-form>
</el-form-item>
</div>
<div
class=
"form-section"
>
<el-form-item
:label=
"$t('始发城市')"
prop=
"departureId"
:disabled=
"false"
>
<el-select
v-model=
"form.departureId"
:placeholder=
"$t('请选择始发地')"
:disabled=
"false"
>
<el-select
v-model=
"form.departureId"
:placeholder=
"$t('请选择始发地')"
:disabled=
"false"
clearable
>
<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-form-item
:label=
"$t('目的城市')"
prop=
"objectiveId"
>
<el-select
v-model=
"form.objectiveId"
:placeholder=
"$t('请选择目的地')"
:disabled2=
"inWarehouse"
>
<el-select
v-model=
"form.objectiveId"
:placeholder=
"$t('请选择目的地')"
:disabled2=
"inWarehouse"
clearable
>
<el-option
v-for=
"item in importCityList"
:label=
"$l(item, 'title')"
:value=
"item.id"
:key=
"item.id"
></el-option>
</el-select>
</el-form-item>
...
...
@@ -952,7 +954,7 @@ export default {
// 更新目的城市备选
await
this
.
getTradeCity
()
// 如果已选择城市,在切换后不可用则重置
if
(
this
.
form
.
objectiveId
&&
!
this
.
importList
.
find
(
item
=>
item
.
id
==
this
.
form
.
objectiveId
)){
if
(
this
.
form
.
objectiveId
&&
!
this
.
import
City
List
.
find
(
item
=>
item
.
id
==
this
.
form
.
objectiveId
)){
this
.
$set
(
this
.
form
,
'
objectiveId
'
,
null
)
}
// 更新线路备选
...
...
@@ -975,7 +977,7 @@ export default {
'
form.consignorPhone
'
(){
if
(
this
.
form
.
lineId
)
this
.
getOfferData
()
},
'
form.lineId
'
(
lineId
){
async
'
form.lineId
'
(
lineId
){
let
router
=
this
.
routerList
.
find
(
item
=>
item
.
id
==
lineId
)
if
(
!
router
){
return
...
...
@@ -983,7 +985,7 @@ export default {
this
.
$set
(
this
.
form
,
'
departureId
'
,
router
.
startCityId
)
this
.
$set
(
this
.
form
,
'
objectiveId
'
,
router
.
destCityId
)
this
.
$set
(
this
.
form
,
'
transportId
'
,
router
.
transportType
)
await
this
.
getChannelList
()
this
.
calculationPrice
()
this
.
$nextTick
(()
=>
{
// 如果开启了默认送货上门,则默认选择送货上门,2是送货上门,10是默认送货上门
...
...
@@ -1142,7 +1144,8 @@ export default {
},
async
getChannelList
(){
let
query
=
{
cityId
:
this
.
form
.
objectiveId
cityId
:
this
.
form
.
objectiveId
,
lineId
:
this
.
form
.
lineId
}
this
.
channelList
=
(
await
getChannelList
(
query
)).
data
},
...
...
src/views/ecw/order/index.vue
View file @
b6b42e19
...
...
@@ -72,7 +72,8 @@
<dict-selector
:type=
"DICT_TYPE.ECW_WAREHOUSING_TYPE"
v-model=
"queryParams.warehouseType"
clearable
/>
</el-form-item>
<el-form-item
:label=
"$t('客户经理')"
>
<user-selector
manage
v-model=
"queryParams.salesmanId"
clearable
@
change=
"handleQuery"
/>
<user-selector
manage
v-model=
"queryParams.salesmanId"
clearable
@
change=
"handleQuery"
:prepend=
"{ id: 0, nickname: $t('未分配客户经理')}"
/>
</el-form-item>
<el-form-item
:label=
"$t('订单状态')"
prop=
"status"
>
<dict-selector
:type=
"DICT_TYPE.ORDER_STATUS"
v-model=
"queryParams.status"
...
...
src/views/ecw/order/penddingList.vue
View file @
b6b42e19
...
...
@@ -50,7 +50,8 @@
<dict-selector
:type=
"DICT_TYPE.ECW_WAREHOUSING_TYPE"
v-model=
"queryParams.warehouseType"
clearable
/>
</el-form-item>
<el-form-item
:label=
"$t('客户经理')"
>
<user-selector
manage
v-model=
"queryParams.salesmanId"
clearable
@
change=
"handleQuery"
/>
<user-selector
manage
v-model=
"queryParams.salesmanId"
clearable
@
change=
"handleQuery"
:prepend=
"
{ id: 0, nickname: $t('未分配客户经理')}"/>
</el-form-item>
<el-form-item
:label=
"$t('订单状态')"
prop=
"status"
>
<dict-selector
:type=
"DICT_TYPE.ORDER_STATUS"
v-model=
"queryParams.status"
...
...
src/views/ecw/order/stocking/components/ChooseOrderProducts.vue
View file @
b6b42e19
...
...
@@ -81,7 +81,13 @@ export default {
let
arr
=
[]
this
.
orderItemDetails
.
forEach
(
item
=>
{
item
.
orderWarehouseInCommonAttrVOList
?.
forEach
((
vo
,
index
)
=>
{
arr
.
push
({...
item
,
...
vo
,
index
,
span
:
index
===
0
?
item
.
orderWarehouseInCommonAttrVOList
?.
length
:
0
})
arr
.
push
({
...
item
,
...
vo
,
index
,
span
:
index
===
0
?
item
.
orderWarehouseInCommonAttrVOList
?.
length
:
0
,
warehouseInId
:
item
.
id
})
})
})
return
arr
...
...
@@ -112,6 +118,26 @@ export default {
}
})
// 如果某条入仓记录下的箱明细被全部选中了,则需要将他的快递单号和影像带过去
const
expressNos
=
[]
const
pictureUrls
=
[]
this
.
orderItemDetails
.
forEach
(
warehouseIn
=>
{
// 本条入仓记录被选中的明细数
const
selectedCount
=
arr
.
filter
(
item
=>
item
.
warehouseInId
==
warehouseIn
.
id
).
length
if
(
selectedCount
==
warehouseIn
.
orderWarehouseInCommonAttrVOList
?.
length
){
if
(
warehouseIn
.
expressNo
){
expressNos
.
push
(
warehouseIn
.
expressNo
)
}
if
(
warehouseIn
.
pictureUrls
?.
length
){
pictureUrls
.
push
(...
warehouseIn
.
pictureUrls
)
}
}
})
// 根据warehouseInId 给对应的入仓记录追加快递单号和影像
// 存到全局变量,在调用对应finishPack接口的时候判断追加
window
.
ChooseOrderProductsExpressNos
=
expressNos
window
.
ChooseOrderProductsPictureUrls
=
pictureUrls
this
.
$emit
(
"
success
"
,
arr
)
},
handleClose
()
{
...
...
src/views/ecw/order/stocking/components/MediaDialog.vue
View file @
b6b42e19
...
...
@@ -40,7 +40,7 @@ export default {
</
script
>
<
template
>
<el-dialog
:visible.sync=
"show"
:before-close=
"onBeforeClose"
append-to-body
title=
"$t('查看影像')"
>
<el-dialog
:visible.sync=
"show"
:before-close=
"onBeforeClose"
append-to-body
:
title=
"$t('查看影像')"
>
<image-and-video-upload
v-model=
"pictureUrls"
readonly
></image-and-video-upload>
</el-dialog>
</
template
>
src/views/ecw/order/stocking/components/Package.vue
View file @
b6b42e19
...
...
@@ -201,6 +201,7 @@
show-choose-order-item
:order-id=
"order.orderId"
:warehouse-in-id=
"row.id"
@
close=
"checkAppendExpressAndPictures(row)"
/>
<el-popconfirm
v-if=
"$index >= protectRowCount"
...
...
@@ -720,6 +721,26 @@ export default {
titleZh
:
undefined
,
titleEn
:
undefined
}
},
// 检查并追加快递单号和入仓影像
checkAppendExpressAndPictures
(
row
){
if
(
window
.
ChooseOrderProductsExpressNos
?.
length
){
// 去重追加
window
.
ChooseOrderProductsExpressNos
?.
forEach
(
no
=>
{
if
(
row
.
expressNo
.
indexOf
(
no
)
===
-
1
){
row
.
expressNo
+=
"
,
"
+
no
}
})
}
if
(
window
.
ChooseOrderProductsPictureUrls
?.
length
){
this
.
pictureUrls
=
this
.
pictureUrls
.
concat
(
window
.
ChooseOrderProductsPictureUrls
)
// 去重
this
.
pictureUrls
=
Array
.
from
(
new
Set
(
this
.
pictureUrls
))
}
// 清掉
window
.
ChooseOrderProductsExpressNos
=
null
window
.
ChooseOrderProductsPictureUrls
=
null
}
}
}
...
...
src/views/ecw/order/stocking/index.vue
View file @
b6b42e19
...
...
@@ -69,10 +69,11 @@
<
template
v-slot=
"{row}"
>
<WarehouseRecordDetail
v-model=
"row.orderWarehouseInDetailsVOList"
@
input=
"saveDetail(props.row)"
@
input=
"saveDetail(props.row
, row.id
)"
show-choose-order-item
:order-id=
"orderId"
:warehouse-in-id=
"row.id"
@
close=
"clearAppendExpressNoAndPictures"
/>
<el-button
class=
"pl-5 pr-5"
size=
"mini"
type=
"primary"
@
click=
"package(props.row, $t('修改打包'))"
>
{{
$t
(
'
修改
'
)
}}
</el-button>
<el-button
class=
"pl-5 pr-5"
size=
"mini"
type=
"danger"
@
click=
"package(props.row, $t('修改打包'))"
>
{{
$t
(
'
删除
'
)
}}
</el-button>
...
...
@@ -482,18 +483,35 @@ export default {
this
.
curPictrues
=
wareItem
.
pictureUrls
||
[]
},
// 保存箱明细
saveDetail
(
row
){
saveDetail
(
row
,
warehouseInId
){
const
wareItem
=
this
.
wareItem
(
row
.
orderItemId
)
const
orderWarehouseInItemDtoList
=
wareItem
.
orderWarehouseInBackItemDoList
orderWarehouseInItemDtoList
.
map
(
item
=>
{
item
.
orderLocationCreateReqVOList
=
item
.
orderLocationBackVOList
||
[]
return
item
})
let
pictures
=
wareItem
.
pictureUrls
||
[]
if
(
window
.
ChooseOrderProductsPictureUrls
?.
length
){
pictures
.
push
(...
window
.
ChooseOrderProductsPictureUrls
)
// 去重
pictures
=
Array
.
from
(
new
Set
(
pictures
))
}
if
(
window
.
ChooseOrderProductsExpressNos
?.
length
){
const
warehouseInItem
=
orderWarehouseInItemDtoList
.
find
(
item
=>
item
.
id
===
warehouseInId
)
if
(
!
warehouseInItem
.
expressNo
)
warehouseInItem
.
expressNo
=
""
window
.
ChooseOrderProductsExpressNos
?.
forEach
(
item
=>
{
if
(
warehouseInItem
.
expressNo
.
indexOf
(
item
)
===
-
1
){
if
(
warehouseInItem
.
expressNo
?.
length
)
warehouseInItem
.
expressNo
+=
"
,
"
warehouseInItem
.
expressNo
+=
item
}
})
}
const
data
=
{
orderId
:
row
.
orderId
,
orderItemId
:
row
.
orderItemId
,
orderWarehouseInItemDtoList
:
orderWarehouseInItemDtoList
,
pictureUrls
:
wareItem
.
pictureUrls
||
[]
pictureUrls
:
pictures
}
finishPacked
(
data
).
then
(
res
=>
{
this
.
$message
.
success
(
this
.
$t
(
'
操作成功
'
))
...
...
@@ -514,6 +532,13 @@ export default {
},
printTag
(){
this
.
showPrintTagDialog
=
true
},
// 箱明细关闭后清理快递单号和影像临时数据
clearAppendExpressNoAndPictures
(){
setTimeout
(()
=>
{
window
.
ChooseOrderProductsExpressNos
=
null
window
.
ChooseOrderProductsPictureUrls
=
null
},
100
)
}
},
watch
:
{
...
...
src/views/ecw/order/stockingList.vue
View file @
b6b42e19
...
...
@@ -50,7 +50,8 @@
<dict-selector
:type=
"DICT_TYPE.ECW_WAREHOUSING_TYPE"
v-model=
"queryParams.warehouseType"
clearable
/>
</el-form-item>
<el-form-item
:label=
"$t('客户经理')"
>
<user-selector
manage
v-model=
"queryParams.salesmanId"
clearable
@
change=
"handleQuery"
/>
<user-selector
manage
v-model=
"queryParams.salesmanId"
clearable
@
change=
"handleQuery"
:prepend=
"
{ id: 0, nickname: $t('未分配客户经理')}"/>
</el-form-item>
<el-form-item
:label=
"$t('订单状态')"
prop=
"status"
>
<dict-selector
:type=
"DICT_TYPE.ORDER_STATUS"
v-model=
"queryParams.status"
...
...
src/views/ecw/order/warehousing/components/WarehouseRecordDetail.vue
View file @
b6b42e19
<
template
>
<div
style=
"display: inline-block"
>
<template
v-if=
"text"
>
<el-button
size=
"mini"
type=
"text"
style=
"margin-right: 10px"
@
click=
"handleOpen"
>
{{
num
}}
(
混箱
)
</el-button>
<el-button
size=
"mini"
type=
"text"
style=
"margin-right: 10px"
@
click=
"handleOpen"
>
{{
num
}}
(
{{
$t
(
'
混箱
'
)
}}
}
)
</el-button>
</
template
>
<
template
v-else
>
<el-button
size=
"mini"
type=
"primary"
style=
"margin-right: 10px"
@
click=
"handleOpen"
>
{{
title
}}
</el-button>
...
...
@@ -14,8 +14,8 @@
:before-close=
"handleClose"
>
<
template
v-slot:title
>
<div
class=
"flex flex-items-center"
>
<div
class=
"title flex-1 flex flex-items-center"
>
{{
$t
(
'
选择订单商品
'
)
}}
</div>
<el-button
v-if=
"showChooseOrderItem"
type=
"primary"
size=
"mini"
@
click=
"handleShowChooseDialog"
>
选择订单商品
</el-button>
<div
class=
"title flex-1 flex flex-items-center"
>
{{
title
}}
</div>
<el-button
v-if=
"showChooseOrderItem"
type=
"primary"
size=
"mini"
@
click=
"handleShowChooseDialog"
>
{{
$t
(
'
选择订单商品
'
)
}}
</el-button>
<div
style=
"width: 100px"
>
<!--占位,防止被关闭按钮挡住-->
</div>
</div>
</
template
>
...
...
@@ -30,11 +30,11 @@
/>
</el-form>
<el-button
v-show=
"!readonly"
type=
"primary"
size=
"mini"
@
click=
"handleAddItem"
>
添加一条明细
</el-button>
<el-button
v-show=
"!readonly"
type=
"primary"
size=
"mini"
@
click=
"handleAddItem"
>
{{$t('添加一条明细')}}
</el-button>
<span
v-show=
"!readonly"
slot=
"footer"
class=
"dialog-footer"
>
<el-button
@
click=
"dialogVisible = false"
>
取 消
</el-button>
<el-button
type=
"primary"
@
click=
"handleSave"
>
确 定
</el-button>
<el-button
@
click=
"dialogVisible = false"
>
{{$t('取消')}}
</el-button>
<el-button
type=
"primary"
@
click=
"handleSave"
>
{{$t('确定')}}
</el-button>
</span>
</el-dialog>
<choose-order-products
...
...
@@ -92,7 +92,13 @@ export default {
showChooseDialog
:
false
};
},
watch
:{
dialogVisible
(
v
){
if
(
!
v
){
this
.
$emit
(
"
close
"
)
}
}
},
mounted
()
{
this
.
getAttrList
()
},
...
...
@@ -165,13 +171,19 @@ export default {
for
(
let
i
=
0
;
i
<
this
.
dataList
.
length
;
i
++
)
{
if
(
!
this
.
dataList
[
i
].
prodId
)
{
return
this
.
$notify
({
title
:
'
明细
'
+
(
i
+
1
)
+
'
:
'
+
'
请选择品名
'
,
title
:
this
.
$t
(
"
填写第{n}条明细的品名
"
,
{
n
:
i
=
1
})
,
type
:
"
warning
"
})
}
if
(
!
this
.
dataList
[
i
].
brand
)
{
return
this
.
$notify
({
title
:
'
明细
'
+
(
i
+
1
)
+
'
:
'
+
'
请选择品牌
'
,
title
:
this
.
$t
(
"
填写第{n}条明细的品牌
"
,
{
n
:
i
=
1
}),
type
:
"
warning
"
})
}
if
(
!
this
.
dataList
[
i
].
quantityAll
){
return
this
.
$notify
({
title
:
this
.
$t
(
"
填写第{n}条明细的数量
"
,
{
n
:
i
=
1
}),
type
:
"
warning
"
})
}
...
...
@@ -218,9 +230,9 @@ export default {
computed
:
{
title
()
{
if
(
this
.
readonly
)
{
return
'
查看箱明细
'
return
this
.
$t
(
'
查看箱明细
'
)
}
return
!
this
.
value
||
this
.
value
.
length
===
0
?
'
添加箱明细
'
:
'
编辑箱明细
'
return
!
this
.
value
||
this
.
value
.
length
===
0
?
this
.
$t
(
'
添加箱明细
'
)
:
this
.
$t
(
'
编辑箱明细
'
)
}
}
}
...
...
src/views/ecw/order/warehousing/components/WarehouseRecordDetailItem.vue
View file @
b6b42e19
...
...
@@ -90,7 +90,7 @@
</el-form-item>
</el-col>
-->
<el-col
:span=
"4"
>
<el-form-item
:label=
"$t('数量')"
>
<el-form-item
:label=
"$t('数量')"
required
>
<el-input
v-model=
"value.quantityAll"
type=
"number"
:disabled=
"readonly"
/>
</el-form-item>
</el-col>
...
...
src/views/ecw/productPrice/batchEdit.vue
View file @
b6b42e19
...
...
@@ -93,16 +93,51 @@
</el-col>
</el-row>
</template>
<
template
v-else-if=
"form.priceType === 1"
>
<sea-price
ref=
"seaPrice"
:currency-list=
"currencyList"
:unit-list=
"unitList"
:value=
"form"
field-prefix=
"all"
:price-name=
"$t('全包价')"
packaging-field=
"fullPricePackagingList"
@
changeUnit=
"handleFormUnitChange($event)"
></sea-price>
</
template
>
<
template
v-else
>
<el-row
:gutter=
"20"
>
<el-col
:span=
"12"
>
<sea-price
ref=
"seaPrice"
:currency-list=
"currencyList"
:unit-list=
"unitList"
:value=
"form"
field-prefix=
"transport"
:price-name=
"$t('运费')"
packaging-field=
"freightPricePackagingList"
@
changeUnit=
"handleFormUnitChange($event)"
></sea-price>
</el-col>
<el-col
:span=
"12"
>
<sea-price
ref=
"seaPrice"
:price-type=
"form.priceType"
:currency-list=
"currencyList"
:unit-list=
"unitList"
:value=
"form"
field-prefix=
"clearance"
:price-name=
"$t('清关费')"
packaging-field=
"clearancePricePackagingList"
@
changeUnit=
"handleFormUnitChange($event)"
></sea-price>
</el-col>
</el-row>
</
template
>
<el-form-item
:label=
"$t('价格有效期')"
>
<el-date-picker
v-model=
"form.validateStartDate"
value-format=
"yyyy-MM-dd HH:mm:ss"
></el-date-picker>
-
<el-date-picker
v-model=
"form.validateEndDate"
value-format=
"yyyy-MM-dd HH:mm:ss"
></el-date-picker>
</el-form-item>
</el-card>
...
...
@@ -435,7 +470,7 @@ export default {
},
// 获得用语提交的阶梯价副本
getPriceList
(
stepList
){
getPriceList
(
stepList
,
prefix
){
if
(
!
stepList
?.
length
)
return
[]
let
stepPriceList
=
JSON
.
parse
(
JSON
.
stringify
(
stepList
))
stepPriceList
.
forEach
((
item
,
index
)
=>
{
...
...
@@ -446,7 +481,10 @@ export default {
return
p
})
})
return
stepPriceList
// 240121应老王要求,未设置价格的不提交
return
stepPriceList
.
filter
(
item
=>
{
return
!!
item
[
`
${
prefix
}
Price`
]
})
},
// 非阶梯价格更新单位
handleFormUnitChange
(
data
){
...
...
@@ -461,6 +499,26 @@ export default {
p
[
data
.
field
]
=
data
.
value
})
}
// 同步包装的单位
let
packingField
=
{
transportVolumeUnit
:
'
freightPricePackagingList
'
,
clearanceVolumeUnit
:
'
clearancePricePackagingList
'
,
allVolumeUnit
:
'
fullPricePackagingList
'
,
transportPriceUnit
:
'
freightPricePackagingList
'
,
clearancePriceUnit
:
'
clearancePricePackagingList
'
}[
data
.
field
]
if
(
!
this
.
form
[
packingField
]?.
length
){
return
false
}
this
.
form
[
packingField
].
forEach
(
item
=>
{
if
(
data
.
field
.
indexOf
(
"
PriceUnit
"
)
>
-
1
){
item
[
'
packagingPriceUnit
'
]
=
data
.
value
}
if
(
data
.
field
.
indexOf
(
"
VolumeUnit
"
)
>
-
1
){
item
[
'
packagingVolumeUnit
'
]
=
data
.
value
}
})
},
initStepPrice
(){
if
(
this
.
form
.
priceType
==
1
&&
!
this
.
form
.
fullPriceStepList
?.
length
){
...
...
@@ -502,6 +560,7 @@ export default {
}
// 阶梯价校验
/* 根据甲方要求不做校验,所有字段均可留空,https://zentao.test.jdshangmen.com/bug-view-5915.html
if(this.$refs.stepPrice){
let isValid = true
for (let stepPrice of this.$refs.stepPrice){
...
...
@@ -511,16 +570,16 @@ export default {
}
}
if(!isValid)return
}
}
*/
// 全包价
if
(
this
.
form
.
priceType
==
1
)
{
data
.
fullPriceStepList
=
this
.
getPriceList
(
this
.
form
.
fullPriceStepList
)
data
.
fullPriceStepList
=
this
.
getPriceList
(
this
.
form
.
fullPriceStepList
,
'
all
'
)
delete
data
.
clearancePriceStepList
delete
data
.
freightPriceStepList
}
else
{
data
.
clearancePriceStepList
=
this
.
getPriceList
(
this
.
form
.
clearancePriceStepList
)
data
.
freightPriceStepList
=
this
.
getPriceList
(
this
.
form
.
freightPriceStepList
)
data
.
clearancePriceStepList
=
this
.
getPriceList
(
this
.
form
.
clearancePriceStepList
,
'
clearance
'
)
data
.
freightPriceStepList
=
this
.
getPriceList
(
this
.
form
.
freightPriceStepList
,
'
transport
'
)
delete
data
.
fullPriceStepList
}
...
...
@@ -534,6 +593,7 @@ export default {
product
:
this
.
isAllProduct
?
this
.
$refs
.
productSelector
.
allTotal
:
data
.
productIdList
.
length
}))
this
.
loading
=
true
console
.
log
(
'
提交批量修改
'
,
data
)
batchUpdateProductPrice
(
data
).
then
(
response
=>
{
this
.
$modal
.
msgSuccess
(
this
.
$t
(
"
修改成功
"
));
this
.
$router
.
replace
(
'
/lineProject/product-price?
'
+
(
new
URLSearchParams
(
this
.
$route
.
query
)).
toString
())
...
...
src/views/ecw/productPrice/batchEditAir.vue
View file @
b6b42e19
...
...
@@ -336,7 +336,10 @@ export default {
return
p
})
})
return
stepPriceList
// 240121应老王要求,未设置价格的不提交
return
stepPriceList
.
filter
(
item
=>
{
return
!!
item
[
`
${
prefix
}
Price`
]
})
},
submitForm
()
{
...
...
@@ -376,10 +379,13 @@ export default {
// 全包价
if
(
this
.
form
.
priceType
==
1
)
{
data
.
fullPriceStepList
=
this
.
getPriceList
(
this
.
form
.
fullPriceStepList
)
data
.
fullPriceStepList
=
this
.
getPriceList
(
this
.
form
.
fullPriceStepList
,
'
all
'
)
delete
data
.
clearancePriceStepList
delete
data
.
freightPriceStepList
}
else
{
data
.
clearancePriceStepList
=
this
.
getPriceList
(
this
.
form
.
clearancePriceStepList
)
data
.
freightPriceStepList
=
this
.
getPriceList
(
this
.
form
.
freightPriceStepList
)
data
.
clearancePriceStepList
=
this
.
getPriceList
(
this
.
form
.
clearancePriceStepList
,
'
clearance
'
)
data
.
freightPriceStepList
=
this
.
getPriceList
(
this
.
form
.
freightPriceStepList
,
'
transport
'
)
delete
data
.
fullPriceStepList
}
if
(
data
.
lineChannelList
.
length
<
1
){
...
...
src/views/ecw/productPrice/batchIncrease.vue
View file @
b6b42e19
...
...
@@ -81,15 +81,46 @@
</el-col>
</el-row>
</template>
<
template
v-else-if=
"form.priceType === 1"
>
<sea-price
ref=
"seaPrice"
:currency-list=
"currencyList"
:unit-list=
"unitList"
:value=
"form"
:readonly=
"readonly"
field-prefix=
"all"
:price-name=
"$t('全包价')"
packaging-field=
"fullPricePackagingList"
@
changeUnit=
"handleFormUnitChange($event)"
></sea-price>
</
template
>
<
template
v-else
>
<el-row
:gutter=
"20"
>
<el-col
:span=
"12"
>
<sea-price
ref=
"seaPrice"
:price-type=
"form.priceType"
:currency-list=
"currencyList"
:unit-list=
"unitList"
:value=
"form"
field-prefix=
"transport"
:price-name=
"$t('运费')"
packaging-field=
"freightPricePackagingList"
@
changeUnit=
"handleFormUnitChange($event)"
></sea-price>
</el-col>
<el-col
:span=
"12"
>
<sea-price
ref=
"seaPrice"
:currency-list=
"currencyList"
:unit-list=
"unitList"
:value=
"form"
field-prefix=
"clearance"
:price-name=
"$t('清关费')"
packaging-field=
"clearancePricePackagingList"
@
changeUnit=
"handleFormUnitChange($event)"
></sea-price>
</el-col>
</el-row>
</
template
>
</div>
...
...
@@ -114,6 +145,7 @@ import Decimal from 'decimal.js'
import
SeaPrice
from
"
@/views/ecw/productPrice/components/SeaPrice.vue
"
;
import
Template
from
"
@/views/cms/template/index.vue
"
;
import
PriceStep
from
"
@/views/ecw/productPrice/components/PriceStep.vue
"
;
import
{
getFormData
}
from
'
@/views/ecw/productPrice/util
'
const
DEFAULT_PRICE_UNIT
=
1
const
DEFAULT_VOLUME_UNIT
=
7
...
...
@@ -186,10 +218,6 @@ export default {
this
.
currencyList
=
(
await
getCurrencyList
())?.
data
||
[]
this
.
unitList
=
(
await
getUnitList
())?.
data
||
[]
this
.
$nextTick
(
async
()
=>
{
this
.
setDefaultVolumeUnit
(
this
.
type
==
'
air
'
?
6
:
7
)
})
this
.
getDictDatas
(
this
.
DICT_TYPE
.
ECW_SPECIAL_REQ_FOR_LINE_PRODUCTS
).
forEach
(
item
=>
{
// 没有的才push,已有的可能是从复制模板携带过来的数据
if
(
!
this
.
form
.
specialList
.
find
(
special
=>
special
.
specialDictType
==
item
.
value
))
{
...
...
@@ -257,28 +285,57 @@ export default {
})
},
// 获得用
语
提交的阶梯价副本
// 获得用
于
提交的阶梯价副本
getPriceList
(
stepList
){
if
(
!
stepList
?.
length
)
return
[]
let
stepPriceList
=
JSON
.
parse
(
JSON
.
stringify
(
stepList
))
stepPriceList
.
forEach
((
item
,
index
)
=>
{
item
.
rankNum
=
index
+
1
item
.
packagingList
=
item
.
packagingList
.
filter
(
p
=>
!!
p
.
packagingTypes
?.
length
)
item
.
packagingList
=
item
.
packagingList
.
map
(
p
=>
{
p
.
packagingTypes
=
p
.
packagingTypes
.
join
(
"
,
"
)
return
p
})
item
.
packagingList
=
this
.
getPackagingPrice
(
item
.
packagingList
)
})
// 过滤掉空的阶梯
return
stepPriceList
.
filter
(
this
.
isStepPriceValid
)
},
// 获取包装类型价
getPackagingPrice
(
packagingList
){
const
list
=
JSON
.
parse
(
JSON
.
stringify
(
packagingList
))
return
list
.
filter
(
p
=>
!!
p
.
packagingTypes
?.
length
).
map
(
p
=>
{
p
.
packagingTypes
=
p
.
packagingTypes
.
join
(
"
,
"
)
return
p
})
},
// 非阶梯价格更新单位
handleFormUnitChange
(
data
){
// 海运非阶梯价没有重量单位,所以按照体积单位同步最小起计量单位
if
(
data
.
field
===
'
transportVolumeUnit
'
||
data
.
field
==
'
allVolumeUnit
'
){
this
.
form
.
minWeightUnit
=
data
.
value
}
if
(
this
.
form
.
specialList
?.
length
){
this
.
form
.
specialList
.
forEach
(
p
=>
{
p
[
data
.
field
]
=
data
.
value
})
}
// 同步包装的单位
let
packingField
=
{
transportVolumeUnit
:
'
freightPricePackagingList
'
,
clearanceVolumeUnit
:
'
clearancePricePackagingList
'
,
allVolumeUnit
:
'
fullPricePackagingList
'
,
transportPriceUnit
:
'
freightPricePackagingList
'
,
clearancePriceUnit
:
'
clearancePricePackagingList
'
}[
data
.
field
]
if
(
!
this
.
form
[
packingField
]?.
length
){
return
false
}
this
.
form
[
packingField
].
forEach
(
item
=>
{
if
(
data
.
field
.
indexOf
(
"
PriceUnit
"
)
>
-
1
){
item
[
'
packagingPriceUnit
'
]
=
data
.
value
}
if
(
data
.
field
.
indexOf
(
"
VolumeUnit
"
)
>
-
1
){
item
[
'
packagingVolumeUnit
'
]
=
data
.
value
}
})
},
initStepPrice
(){
if
(
this
.
form
.
priceType
==
1
&&
!
this
.
form
.
fullPriceStepList
?.
length
){
...
...
@@ -293,68 +350,80 @@ export default {
}
}
},
// 检查包装类型价格是否有效
validatePackagingPrice
(
packagingList
,
priceName
){
if
(
!
packagingList
?.
length
)
return
true
let
valid
=
true
for
(
const
index
in
packagingList
){
const
item
=
packagingList
[
index
]
if
(
!
item
.
packagingPrice
){
valid
=
false
const
no
=
parseInt
(
index
)
+
1
this
.
$message
.
error
(
this
.
$t
(
"
请设置{priceName}的第{no}包装费
"
,
{
priceName
,
no
}))
break
;
}
}
return
valid
},
submitForm
()
{
this
.
$refs
[
"
form
"
].
validate
(
async
(
valid
)
=>
{
if
(
!
valid
)
{
return
;
}
// 只有新增的时候做判断
if
(
!
this
.
$route
.
query
.
ids
&&
(
!
this
.
selectedRoutes
||
!
this
.
selectedRoutes
.
length
))
{
this
.
$message
.
error
(
this
.
$t
(
'
请选择线路
'
));
return
;
}
let
data
=
JSON
.
parse
(
JSON
.
stringify
(
this
.
form
))
let
data
=
Object
.
assign
({},
this
.
form
,
{
// lineChannelList: this.selectedRoutes,
// specialList: this.specialProducts,
isAllProduct
:
this
.
isAllProduct
?
1
:
0
})
data
.
isAllProduct
=
this
.
isAllProduct
?
1
:
0
data
.
lineChannelList
=
this
.
selectedRoutes
// 如果是勾選了全部篩選商品,則獲取商品ID
if
(
this
.
isAllFilteredProduct
){
data
.
productIdList
=
await
this
.
$refs
.
productSelector
.
getFilteredIds
()
if
(
!
data
.
lineChannelList
?.
length
){
return
this
.
$message
.
error
(
this
.
$t
(
'
请选择需要修改的路线
'
))
}
if
(
!
data
.
isAllProduct
&&
(
!
data
.
productIdList
||
!
data
.
productIdList
.
length
)
){
if
(
!
data
.
productIdList
?.
length
){
return
this
.
$message
.
error
(
this
.
$t
(
'
请选择商品
'
)
+
"
!
"
)
}
data
.
lineChannelList
=
this
.
selectedRoutes
if
(
data
.
lineChannelList
.
length
<
1
){
return
this
.
$message
.
error
(
this
.
$t
(
'
请选择需要修改的路线
'
))
// 如果是阶梯价,需要把阶梯价的数据转换成提交的格式
delete
data
.
freightPriceStepList
delete
data
.
clearancePriceStepList
delete
data
.
fullPriceStepList
delete
data
.
clearancePricePackagingList
delete
data
.
freightPricePackagingList
delete
data
.
fullPricePackagingList
// 阶梯价
if
(
data
.
stepPrice
){
delete
data
.
specialList
if
(
data
.
priceType
===
1
){
data
.
fullPriceStepList
=
this
.
getPriceList
(
this
.
form
.
fullPriceStepList
)
}
else
{
data
.
freightPriceStepList
=
this
.
getPriceList
(
this
.
form
.
freightPriceStepList
)
data
.
clearancePriceStepList
=
this
.
getPriceList
(
this
.
form
.
clearancePriceStepList
)
}
data
.
fullPriceStepList
=
this
.
getPriceList
(
data
.
fullPriceStepList
)
data
.
freightPriceStepList
=
this
.
getPriceList
(
data
.
freightPriceStepList
)
data
.
clearancePriceStepList
=
this
.
getPriceList
(
data
.
clearancePriceStepList
)
// 检查被忽略的阶梯价
let
msgArr
=
[];
}
else
{
if
(
data
.
priceType
){
const
ignoreAll
=
data
.
fullPriceStepList
.
length
!=
this
.
form
.
fullPriceStepList
.
length
if
(
ignoreAll
){
msgArr
.
push
(
this
.
$t
(
"
{n}个全包阶梯价
"
,
{
n
:
ignoreAll
}))
data
.
fullPricePackagingList
=
this
.
getPackagingPrice
(
this
.
form
.
fullPricePackagingList
)
if
(
!
this
.
validatePackagingPrice
(
data
.
fullPricePackagingList
,
"
全包价
"
)
){
return
false
}
}
else
{
const
ignoreFreight
=
this
.
form
.
freightPriceStepList
.
length
-
data
.
freightPriceStepList
.
length
const
ignoreClearance
=
this
.
form
.
clearancePriceStepList
.
length
-
data
.
clearancePriceStepList
.
length
if
(
ignoreFreight
){
msgArr
.
push
(
this
.
$t
(
"
{n}个运费阶梯价
"
,
{
n
:
ignoreFreight
}))
data
.
clearancePricePackagingList
=
this
.
getPackagingPrice
(
this
.
form
.
clearancePricePackagingList
)
data
.
freightPricePackagingList
=
this
.
getPackagingPrice
(
this
.
form
.
freightPricePackagingList
)
if
(
!
this
.
validatePackagingPrice
(
data
.
freightPricePackagingList
,
this
.
$t
(
"
运费
"
))
||
!
this
.
validatePackagingPrice
(
data
.
clearancePricePackagingList
,
this
.
$t
(
"
清关费
"
))
){
return
false
}
if
(
ignoreClearance
){
msgArr
.
push
(
this
.
$t
(
"
{n}个清关费阶梯价
"
,
{
n
:
ignoreClearance
}))
}
data
.
specialList
=
data
.
specialList
.
filter
(
item
=>
{
return
item
.
transportPrice
||
item
.
clearancePrice
})
}
let
msg
=
this
.
$t
(
'
已选择{route}条路线,{product}个商品
'
,
{
route
:
data
.
lineChannelList
.
length
,
product
:
this
.
isAllProduct
?
this
.
$refs
.
productSelector
.
allTotal
:
data
.
productIdList
.
length
})
console
.
log
(
msgArr
)
if
(
msgArr
.
length
){
msg
+=
"
;
"
+
msgArr
.
join
(
"
,
"
)
+
"
被忽略
"
}
await
this
.
$confirm
(
msg
+
this
.
$t
(
'
;确认提交修改?
'
,
))
this
.
loading
=
true
...
...
src/views/ecw/productPrice/batchIncreaseAir.vue
View file @
b6b42e19
...
...
@@ -136,7 +136,7 @@ export default {
// 判断阶梯价是否有效
isStepPriceValid
(){
return
stepPrice
=>
{
return
stepPrice
.
startNum
&&
stepPrice
.
endNum
return
(
stepPrice
.
startNum
||
stepPrice
.
startNum
===
0
)
&&
stepPrice
.
endNum
}
},
},
...
...
@@ -275,10 +275,13 @@ export default {
// 检查被忽略的阶梯价
let
msgArr
=
[];
if
(
data
.
priceType
){
const
ignoreAll
=
data
.
fullPriceStepList
.
length
!=
this
.
form
.
fullPriceStepList
.
length
const
ignoreAll
=
this
.
form
.
fullPriceStepList
.
length
-
data
.
fullPriceStepList
.
length
if
(
ignoreAll
){
msgArr
.
push
(
this
.
$t
(
"
{n}个全包阶梯价
"
,
{
n
:
ignoreAll
}))
}
if
(
!
data
.
fullPriceStepList
?.
length
){
return
this
.
$message
.
error
(
this
.
$t
(
'
请设置全包价
'
))
}
}
else
{
const
ignoreFreight
=
this
.
form
.
freightPriceStepList
.
length
-
data
.
freightPriceStepList
.
length
const
ignoreClearance
=
this
.
form
.
clearancePriceStepList
.
length
-
data
.
clearancePriceStepList
.
length
...
...
@@ -289,6 +292,10 @@ export default {
if
(
ignoreClearance
){
msgArr
.
push
(
this
.
$t
(
"
{n}个清关费阶梯价
"
,
{
n
:
ignoreClearance
}))
}
if
(
!
data
.
freightPriceStepList
?.
length
&&
!
data
.
clearancePriceStepList
?.
length
){
return
this
.
$message
.
error
(
this
.
$t
(
'
请设置运费或清关费
'
))
}
}
let
msg
=
this
.
$t
(
'
已选择{route}条路线,{product}个商品
'
,
{
route
:
data
.
lineChannelList
.
length
,
...
...
src/views/ecw/productPrice/components/PriceStep.vue
View file @
b6b42e19
...
...
@@ -9,6 +9,7 @@ export default {
components
:
{
Template
,
Inputor
,
Selector
},
props
:{
index
:
Number
,
type
:
String
,
priceName
:
String
,
fieldPrefix
:
String
,
unitList
:{
...
...
@@ -154,7 +155,7 @@ export default {
<
template
>
<div>
<div
class=
"bold text-lg"
>
{{
$t
(
'
空运{type
}
设置
'
,
{
type
:
priceName
}
)
}}
<
/div
>
<div
class=
"bold text-lg"
>
{{
$t
(
'
{type
}
{priceName
}
价格设置
'
,
{
type
,
priceName
}
)
}}
<
/div
>
<
div
style
=
"
font-size:14px; margin:10px 0
"
>
{{
$t
(
'
第{index
}
阶梯定价方案
'
,
{
index
:
index
+
1
}
)
}}
:
<
template
v
-
if
=
"
showAdd
"
>
...
...
@@ -212,7 +213,7 @@ export default {
<!--
特性加价
-->
<
template
v
-
for
=
"
(special, specialIndex) in value.specialList
"
>
<
el
-
form
-
item
:
label
=
"
getDictDataLabel(DICT_TYPE.ECW_SPECIAL_REQ_FOR_LINE_PRODUCTS, special.specialDictType) + priceName
"
:
label
=
"
getDictDataLabel(DICT_TYPE.ECW_SPECIAL_REQ_FOR_LINE_PRODUCTS, special.specialDictType) + priceName
+ $t('加价')
"
:
key
=
"
specialIndex + 'transport'
"
>
<
el
-
input
-
number
v
-
model
.
number
=
"
special[`${fieldPrefix
}
Price`]
"
:
controls
=
"
false
"
:
min
=
"
0
"
:
placeholder
=
"
$t('整数或者两位小数')
"
class
=
"
w-100 mr-10
"
/>
...
...
@@ -224,9 +225,9 @@ export default {
<!--
包装类型价格
-->
<
template
v
-
for
=
"
(item, i) in value.packagingList
"
>
<
el
-
form
-
item
:
label
=
"
$t('包装类型
') + priceName
+ (i+1)
"
:
key
=
"
i
"
>
<
el
-
form
-
item
:
label
=
"
$t('包装类型
加价')
+ (i+1)
"
:
key
=
"
i
"
>
<
template
#
label
>
<
div
class
=
"
el-form-item__label
"
style
=
"
width: 150px;
"
>
{{
$t
(
'
包装类型
'
)
+
priceName
+
(
i
+
1
)
}}
<
/div
>
<
div
class
=
"
el-form-item__label
"
style
=
"
width: 150px;
"
>
{{
$t
(
'
包装类型
{name
}
加价
'
,
{
name
:
priceName
}
)
+
(
i
+
1
)
}}
<
/div
>
<
div
v
-
if
=
"
!item.packagingTypes || !item.packagingTypes.length
"
class
=
"
tips
"
>
{{
$t
(
'
未选择包装类型将被忽略
'
)
}}
<
/div
>
<
/template
>
<
el
-
select
v
-
model
=
"
item.packagingTypes
"
multiple
placeholder
=
"
请选择
"
style
=
"
width: 100%; max-width: 450px; margin-bottom: 5px; display: block
"
>
...
...
src/views/ecw/productPrice/components/SeaPrice.vue
View file @
b6b42e19
...
...
@@ -3,12 +3,16 @@ import Selector from "@/components/Selector/index.vue";
import
Inputor
from
"
@/components/Inputor/index.vue
"
;
import
Template
from
"
@/views/cms/template/index.vue
"
;
import
{
DICT_TYPE
,
getDictDatas
}
from
"
@/utils/dict
"
;
export
default
{
name
:
"
SeaPrice
"
,
components
:
{
Template
,
Inputor
,
Selector
},
components
:
{
Inputor
,
Selector
},
props
:{
priceType
:
Number
,
// 1全包价,0清关费+运费
// 字段前缀
fieldPrefix
:
String
,
// 价格名称
priceName
:
String
,
// 包装类型字段
packagingField
:
String
,
unitList
:{
type
:
Array
,
default
:
[]
...
...
@@ -21,14 +25,27 @@ export default {
value
:{
type
:
Object
,
default
:
()
=>
{
return
{
return
{}
}
}
},
computed
:{
packagingList
(){
const
dicts
=
JSON
.
parse
(
JSON
.
stringify
(
getDictDatas
(
DICT_TYPE
.
ECW_PACKAGING_TYPE
)))
return
dicts
.
map
(
dict
=>
{
dict
.
enable
=
true
this
.
value
[
this
.
packagingField
]?.
forEach
(
item
=>
{
if
(
item
.
packagingTypes
?.
length
&&
item
.
packagingTypes
.
indexOf
(
dict
.
value
)
>
-
1
){
dict
.
enable
=
false
}
})
return
dict
})
}
},
created
()
{
this
.
initSpecialPrice
()
this
.
initPackingPrice
()
},
data
(){
return
{
...
...
@@ -37,6 +54,21 @@ export default {
},
methods
:{
getDictDatas
,
// 包装类型初始化
initPackingPrice
(){
// 已有包装类型则处理字段,没有则初始化一个
if
(
this
.
value
[
this
.
packagingField
]?.
length
){
this
.
value
[
this
.
packagingField
].
forEach
(
item
=>
{
if
(
!
item
.
packagingTypes
){
this
.
$set
(
item
,
'
packagingTypes
'
,
[])
}
else
if
(
typeof
item
.
packagingTypes
==
'
string
'
){
item
.
packagingTypes
=
item
.
packagingTypes
.
split
(
'
,
'
)
}
})
return
}
this
.
addPackage
()
},
// 初始化特需加价
initSpecialPrice
(){
if
(
!
this
.
value
.
specialList
){
...
...
@@ -59,24 +91,39 @@ export default {
}
})
},
// 添加包装类型运费
addPackage
(){
if
(
!
this
.
value
[
this
.
packagingField
]){
this
.
$set
(
this
.
value
,
this
.
packagingField
,
[])
}
this
.
value
[
this
.
packagingField
]?.
push
({
packagingPrice
:
undefined
,
packagingPriceUnit
:
this
.
value
[
`
${
this
.
fieldPrefix
}
PriceUnit`
],
packagingVolumeUnit
:
this
.
value
[
`
${
this
.
fieldPrefix
}
VolumeUnit`
],
})
},
// 删除包装类型运费
deletePackage
(
index
){
this
.
value
[
this
.
packagingField
]?.
splice
(
index
,
1
)
},
// 校验
validate
(){
let
valid
=
true
// 价格检查
if
(
this
.
priceType
){
if
(
!
this
.
validatePrice
(
this
.
value
[
`allPrice`
])){
if
(
!
this
.
validatePrice
(
this
.
value
[
`
${
this
.
fieldPrefix
}
Price`
])){
valid
=
false
this
.
$message
.
error
(
`请设置全包价`
)
this
.
$message
.
error
(
this
.
$t
(
"
请设置{name}
"
,
{
name
:
this
.
priceName
})
)
}
}
else
{
if
(
!
this
.
validatePrice
(
this
.
value
[
`transportPrice`
])){
valid
=
false
this
.
$message
.
error
(
`请设置运费`
)
}
if
(
!
this
.
validatePrice
(
this
.
value
[
`clearancePrice`
]
)){
// 检查包装费
if
(
this
.
value
[
this
.
packagingField
]?.
length
){
this
.
value
[
this
.
packagingField
]?.
forEach
((
item
,
index
)
=>
{
if
(
!
item
.
packagingTypes
?.
length
)
return
if
(
!
this
.
validatePrice
(
item
.
packagingPrice
)){
valid
=
false
this
.
$message
.
error
(
`请设置清关费`
)
this
.
$message
.
error
(
this
.
$t
(
"
请设置{name}的包装费{index}
"
,
{
name
:
this
.
priceName
,
index
:
index
+
1
})
)
}
})
}
return
valid
...
...
@@ -93,133 +140,78 @@ export default {
</
script
>
<
template
>
<el-row>
<el-col
:span=
"12"
>
<div
class=
"page-title"
>
{{
$t
(
'
海运运费价格设置
'
)
}}
</div>
<el-form-item
:label=
"$t('默认运费')"
v-if=
"!priceType"
>
<el-input-number
v-model=
"value[`transportPrice`]"
:placeholder=
"$t('整数或者两位小数')"
:controls=
"false"
:disabled=
"readonly"
class=
"w-100 mr-10"
/>
<div>
<div
class=
"page-title"
>
{{
$t
(
'
{name
}
价格设置
'
,
{
name
:
this
.
priceName
}
)
}}
<
/div
>
<
el
-
form
-
item
:
label
=
"
$t('默认{name
}
', {name: this.priceName
}
)
"
>
<
el
-
input
-
number
v
-
model
=
"
value[`${fieldPrefix
}
Price`]
"
:
placeholder
=
"
$t('整数或者两位小数')
"
:
controls
=
"
false
"
:
disabled
=
"
readonly
"
class
=
"
w-100 mr-10
"
/>
<
selector
:
disabled
=
"
readonly
"
v-model=
"value[`transport
PriceUnit`]"
v
-
model
=
"
value[`${fieldPrefix
}
PriceUnit`]
"
:
options
=
"
currencyList
"
:
label
-
field
=
"
$l(null, 'title')
"
@
input
=
"
$emit('changeUnit', {
value: $event,
field: `
transport
PriceUnit`
field: `
${fieldPrefix
}
PriceUnit`
}
)
"
value
-
field
=
"
id
"
class
=
"
w-100
"
/>
/
<
selector
:
disabled
=
"
readonly
"
v-model=
"value[`transport
VolumeUnit`]"
v
-
model
=
"
value[`${fieldPrefix
}
VolumeUnit`]
"
:
options
=
"
unitList
"
:
label
-
field
=
"
$l(null, 'title')
"
@
input
=
"
$emit('changeUnit', {
value: $event,
field: `
transport
VolumeUnit`
field: `
${fieldPrefix
}
VolumeUnit`
}
)
"
value
-
field
=
"
id
"
class
=
"
w-100
"
/>
<
/el-form-item
>
<el-form-item
:label=
"$t('默认全包价')"
v-if=
"priceType"
>
<el-input-number
v-model=
"value[`allPrice`]"
:placeholder=
"$t('整数或者两位小数')"
:disabled=
"readonly"
:controls=
"false"
class=
"w-100 mr-10"
/>
<selector
:disabled=
"readonly"
v-model=
"value[`allPriceUnit`]"
:options=
"currencyList"
:label-field=
"$l(null, 'title')"
@
input=
"$emit('changeUnit',
{
value: $event,
field: `allPriceUnit`
})"
value-field="id"
class="w-100" />
/
<selector
:disabled=
"readonly"
v-model=
"value[`allVolumeUnit`]"
:options=
"unitList"
:label-field=
"$l(null, 'title')"
@
input=
"$emit('changeUnit',
{
value: $event,
field: `allVolumeUnit`
})"
value-field="id"
class="w-100" />
</el-form-item>
<!--
特性加价
-->
<
template
v
-
for
=
"
(special, specialIndex) in value.specialList
"
>
<
div
:
key
=
"
specialIndex + 'transport'
"
>
<
el
-
form
-
item
v-if=
"!priceType"
:label=
"getDictDataLabel(DICT_TYPE.ECW_SPECIAL_REQ_FOR_LINE_PRODUCTS, special.specialDictType) + $t('运费')"
:
label
=
"
getDictDataLabel(DICT_TYPE.ECW_SPECIAL_REQ_FOR_LINE_PRODUCTS, special.specialDictType) + priceName + $t('加价')
"
>
<el-input-number
v-model.number=
"special[`transport
Price`]"
:controls=
"false"
:min=
"0"
:disabled=
"readonly"
:placeholder=
"$t('整数或者两位小数')"
class=
"w-100 mr-10"
/>
<selector
disabled
v-model=
"special[`transportPriceUnit`]"
:options=
"currencyList"
:label-field=
"$l(null, 'title')"
value-field=
"id"
defaultable2
class=
"w-100 mr-10"
/>
<
el
-
input
-
number
v
-
model
.
number
=
"
special[`${fieldPrefix
}
Price`]
"
:
controls
=
"
false
"
:
min
=
"
0
"
:
disabled
=
"
readonly
"
:
placeholder
=
"
$t('整数或者两位小数')
"
class
=
"
w-100 mr-10
"
/>
<
selector
disabled
v
-
model
=
"
special[`${fieldPrefix
}
PriceUnit`]
"
:
options
=
"
currencyList
"
:
label
-
field
=
"
$l(null, 'title')
"
value
-
field
=
"
id
"
class
=
"
w-100 mr-10
"
/>
<
span
class
=
"
mr-10
"
>
/</
span
>
<selector
disabled
v-model=
"special[`transportVolumeUnit`]"
:options=
"unitList"
:label-field=
"$l(null, 'title')"
value-field=
"id"
defaultable2
class=
"w-100"
/>
</el-form-item>
<el-form-item
v-if=
"priceType"
:label=
"getDictDataLabel(DICT_TYPE.ECW_SPECIAL_REQ_FOR_LINE_PRODUCTS, special.specialDictType) + $t('全包价')"
>
<el-input-number
v-model.number=
"special[`allPrice`]"
:controls=
"false"
:min=
"0"
:disabled=
"readonly"
:placeholder=
"$t('整数或者两位小数')"
class=
"w-100 mr-10"
/>
<selector
disabled
v-model=
"special[`allPriceUnit`]"
:options=
"currencyList"
:label-field=
"$l(null, 'title')"
value-field=
"id"
defaultable2
class=
"w-100 mr-10"
/>
<span
class=
"mr-10"
>
/
</span>
<selector
disabled
v-model=
"special[`allVolumeUnit`]"
:options=
"unitList"
:label-field=
"$l(null, 'title')"
value-field=
"id"
defaultable2
class=
"w-100"
/>
<
selector
disabled
v
-
model
=
"
special[`${fieldPrefix
}
VolumeUnit`]
"
:
options
=
"
unitList
"
:
label
-
field
=
"
$l(null, 'title')
"
value
-
field
=
"
id
"
class
=
"
w-100
"
/>
<
/el-form-item
>
<
/div
>
<
/template
>
</el-col>
<el-col
:span=
"12"
v-if=
"!priceType"
>
<div
class=
"page-title"
>
{{$t('海运清关费价格设置')}}
</div>
<el-form-item
:label=
"$t('默认清关费')"
>
<el-input-number
v-model=
"value[`clearancePrice`]"
:placeholder=
"$t('整数或者两位小数')"
:disabled=
"readonly"
:controls=
"false"
class=
"w-100 mr-10"
/>
<selector
:disabled=
"readonly"
v-model=
"value[`clearancePriceUnit`]"
:options=
"currencyList"
:label-field=
"$l(null, 'title')"
@
input=
"$emit('changeUnit', {
value: $event,
field: `clearancePriceUnit`
})"
value-field=
"id"
class=
"w-100"
/>
/
<selector
:disabled=
"readonly"
v-model=
"value[`clearanceVolumeUnit`]"
:options=
"unitList"
:label-field=
"$l(null, 'title')"
@
input=
"$emit('changeUnit', {
value: $event,
field: `clearanceVolumeUnit`
})"
value-field=
"id"
class=
"w-100"
/>
</el-form-item>
<!--特性加价-->
<
template
v-for=
"(special, specialIndex) in value.specialList"
>
<div
:key=
"specialIndex + 'transport'"
>
<el-form-item
v-if=
"!priceType"
:label=
"getDictDataLabel(DICT_TYPE.ECW_SPECIAL_REQ_FOR_LINE_PRODUCTS, special.specialDictType) + $t('清关费')"
<!--
包装类型价格
-->
<
template
v
-
for
=
"
(item, i) in value[packagingField]
"
>
<
el
-
form
-
item
:
label
=
"
$t('包装类型') + priceName + (i+1)
"
:
key
=
"
i
"
>
<
template
#
label
>
<
div
class
=
"
el-form-item__label
"
style
=
"
width: 150px;
"
>
{{
$t
(
'
包装类型{name
}
加价
'
,
{
name
:
priceName
}
)
+
(
i
+
1
)
}}
<
/div
>
<
div
v
-
if
=
"
!item.packagingTypes || !item.packagingTypes.length
"
class
=
"
tips
"
>
{{
$t
(
'
未选择包装类型将被忽略
'
)
}}
<
/div
>
<
/template
>
<
el
-
select
v
-
model
=
"
item.packagingTypes
"
multiple
placeholder
=
"
请选择
"
style
=
"
width: 100%; max-width: 450px; margin-bottom: 5px; display: block
"
>
<
el
-
option
v
-
for
=
"
item in packagingList
"
:
key
=
"
item.value
"
:
label
=
"
$l(item, 'label')
"
:
value
=
"
item.value
"
:
disabled
=
"
!item.enable
"
>
<el-input-number
v-model.number=
"special[`clearancePrice`]"
:controls=
"false"
:min=
"0"
:disabled=
"readonly"
:placeholder=
"$t('整数或者两位小数')"
class=
"w-100 mr-10"
/>
<selector
disabled
v-model=
"special[`clearancePriceUnit`]"
:options=
"currencyList"
:label-field=
"$l(null, 'title')"
value-field=
"id"
defaultable2
class=
"w-100 mr-10"
/>
<
/el-option
>
<
/el-select
>
<
el
-
input
-
number
v
-
model
=
"
item.packagingPrice
"
:
controls
=
"
false
"
:
min
=
"
0
"
:
placeholder
=
"
$t('整数或者两位小数')
"
class
=
"
w-100 mr-10
"
/>
<
selector
disabled
v
-
model
=
"
item.packagingPriceUnit
"
:
options
=
"
currencyList
"
:
label
-
field
=
"
$l(null, 'title')
"
value
-
field
=
"
id
"
defaultable2
class
=
"
w-100 mr-10
"
/>
<
span
class
=
"
mr-10
"
>
/</
span
>
<selector
disabled
v-model=
"special[`clearanceVolumeUnit`]"
:options=
"unitList"
:label-field=
"$l(null, 'title')"
value-field=
"id"
defaultable2
class=
"w-100"
/>
<
selector
disabled
v
-
model
=
"
item.packagingVolumeUnit
"
:
options
=
"
unitList
"
:
label
-
field
=
"
$l(null, 'title')
"
value
-
field
=
"
id
"
defaultable2
class
=
"
w-100
"
/>
<
template
v
-
if
=
"
i == value[packagingField].length -1 && !readonly
"
>
<
el
-
link
type
=
"
primary
"
@
click
.
native
=
"
addPackage
"
class
=
"
ml-5
"
>
{{
$t
(
'
添加
'
)
}}
<
/el-link
>
<
el
-
divider
direction
=
"
vertical
"
><
/el-divider
>
<
el
-
link
type
=
"
danger
"
@
click
.
native
=
"
deletePackage(i)
"
>
{{
$t
(
'
删除
'
)
}}
<
/el-link
>
<
/template
>
<
/el-form-item
>
</div>
<
/template
>
</el-col>
</el-row>
<
/div
>
<
/template
>
<
style
scoped
lang
=
"
scss
"
>
...
...
src/views/ecw/productPrice/components/ShowStepPriceItem.vue
View file @
b6b42e19
...
...
@@ -43,9 +43,9 @@ export default {
{{
$t
(
"
第{no
}
阶段
"
,
{
no
:
index
+
1
}
)
}}
{{
priceName
}}
{{
value
.
startNum
}}
-
{{
value
.
endNum
}}
{{
unitMap
[
value
.
weightUnit
]
}}
<
/div
>
<
div
class
=
"
pl-10
"
>
<
div
>
{{
$t
(
'
默认
'
)
+
priceName
}}
:
{{
value
.
transportPrice
}}
{{
currencyMap
[
value
[
`${fieldPrefix
}
PriceUnit`
]]
}}
/
{{
unitMap
[
value
[
`${fieldPrefix
}
VolumeUnit`
]]
}}
{{
value
[
`${fieldPrefix
}
Price`
]
}}
{{
currencyMap
[
value
[
`${fieldPrefix
}
PriceUnit`
]]
}}
/
{{
unitMap
[
value
[
`${fieldPrefix
}
VolumeUnit`
]]
}}
<
/div
>
<!--
特需加价
-->
<
div
v
-
for
=
"
(special, specialIndex) in value.specialList
"
>
...
...
src/views/ecw/productPrice/edit.vue
View file @
b6b42e19
...
...
@@ -112,6 +112,7 @@
:currency-list=
"currencyList"
:unit-list=
"unitList"
field-prefix=
"all"
:type=
"$t('海运')"
:price-name=
"$t('全包价')"
:show-add=
"index === form.fullPriceStepList.length -1 && !readonly"
:value=
"item"
...
...
@@ -131,6 +132,7 @@
:currency-list=
"currencyList"
:unit-list=
"unitList"
field-prefix=
"transport"
:type=
"$t('海运')"
:price-name=
"$t('运费')"
:show-add=
"index === form.freightPriceStepList.length -1 && !readonly"
:value=
"item"
...
...
@@ -149,6 +151,7 @@
:currency-list=
"currencyList"
:unit-list=
"unitList"
field-prefix=
"clearance"
:type=
"$t('海运')"
:price-name=
"$t('清关费')"
:show-add=
"index === form.clearancePriceStepList.length -1 && !readonly"
:value=
"item"
...
...
@@ -161,16 +164,48 @@
</el-col>
</el-row>
</template>
<
template
v-else-if=
"form.priceType === 1"
>
<sea-price
ref=
"seaPrice"
:currency-list=
"currencyList"
:unit-list=
"unitList"
:value=
"form"
:readonly=
"readonly"
field-prefix=
"all"
:price-name=
"$t('全包价')"
packaging-field=
"fullPricePackagingList"
@
changeUnit=
"handleFormUnitChange($event)"
></sea-price>
</
template
>
<
template
v-else
>
<el-row
:gutter=
"20"
>
<el-col
:span=
"12"
>
<sea-price
ref=
"seaPrice"
:currency-list=
"currencyList"
:unit-list=
"unitList"
:value=
"form"
:readonly=
"readonly"
field-prefix=
"transport"
:price-name=
"$t('运费')"
packaging-field=
"freightPricePackagingList"
@
changeUnit=
"handleFormUnitChange($event)"
></sea-price>
</el-col>
<el-col
:span=
"12"
>
<sea-price
ref=
"seaPrice"
:price-type=
"form.priceType"
:currency-list=
"currencyList"
:unit-list=
"unitList"
:value=
"form"
:readonly=
"readonly"
field-prefix=
"clearance"
:price-name=
"$t('清关费')"
packaging-field=
"clearancePricePackagingList"
@
changeUnit=
"handleFormUnitChange($event)"
></sea-price>
</el-col>
</el-row>
</
template
>
<el-form-item
:label=
"$t('价格有效期')"
>
...
...
@@ -419,6 +454,27 @@ export default {
}
this
.
lineList
=
[
res
.
data
]
// 如果不是阶梯价,需要初始化包装类型
if
(
this
.
form
.
stepPrice
!=
1
){
if
(
this
.
form
.
freightPricePackagingList
?.
length
){
this
.
form
.
freightPricePackagingList
.
forEach
(
item
=>
{
if
(
!
item
.
packagingTypes
){
this
.
$set
(
item
,
'
packagingTypes
'
,
[])
}
else
if
(
typeof
item
.
packagingTypes
==
'
string
'
){
item
.
packagingTypes
=
item
.
packagingTypes
.
split
(
'
,
'
)
}
})
}
else
this
.
form
.
freightPricePackagingList
=
[{}]
if
(
this
.
form
.
clearancePricePackagingList
?.
length
){
this
.
form
.
clearancePricePackagingList
.
forEach
(
item
=>
{
if
(
!
item
.
packagingTypes
){
this
.
$set
(
item
,
'
packagingTypes
'
,
[])
}
else
if
(
typeof
item
.
packagingTypes
==
'
string
'
){
item
.
packagingTypes
=
item
.
packagingTypes
.
split
(
'
,
'
)
}
})
}
else
this
.
form
.
clearancePricePackagingList
=
[{}]
}
}
// action=batchUpdate且ids不为空
...
...
@@ -455,7 +511,9 @@ export default {
advanceStatus
:
0
,
needBook
:
0
,
specialList
:
[],
priceStepList
:
this
.
type
===
'
air
'
?
[{},{}]
:
[],
clearancePricePackagingList
:
[{}],
freightPricePackagingList
:
[{}],
fullPricePackagingList
:
[{}],
// dayLimit: 10000,
validateEndDate
:
undefined
,
validateStartDate
:
undefined
,
...
...
@@ -608,6 +666,15 @@ export default {
})
return
stepPriceList
},
// 格式化包装类型费用
getPackingPrice
(
packging
){
if
(
!
packging
?.
length
)
return
packging
=
JSON
.
parse
(
JSON
.
stringify
(
packging
))
return
packging
.
filter
(
item
=>
!!
item
.
packagingTypes
).
map
(
item
=>
{
item
.
packagingTypes
=
item
.
packagingTypes
?.
join
(
"
,
"
)
||
""
return
item
})
},
// 非阶梯价格更新单位
handleFormUnitChange
(
data
){
// 海运非阶梯价没有重量单位,所以按照体积单位同步最小起计量单位
...
...
@@ -621,7 +688,25 @@ export default {
})
}
// TODO 等加了包装之后还需要同步包装的单位
// 同步包装的单位
let
packingField
=
{
transportVolumeUnit
:
'
freightPricePackagingList
'
,
clearanceVolumeUnit
:
'
clearancePricePackagingList
'
,
allVolumeUnit
:
'
fullPricePackagingList
'
,
transportPriceUnit
:
'
freightPricePackagingList
'
,
clearancePriceUnit
:
'
clearancePricePackagingList
'
}[
data
.
field
]
if
(
!
this
.
form
[
packingField
]?.
length
){
return
false
}
this
.
form
[
packingField
].
forEach
(
item
=>
{
if
(
data
.
field
.
indexOf
(
"
PriceUnit
"
)
>
-
1
){
item
[
'
packagingPriceUnit
'
]
=
data
.
value
}
if
(
data
.
field
.
indexOf
(
"
VolumeUnit
"
)
>
-
1
){
item
[
'
packagingVolumeUnit
'
]
=
data
.
value
}
})
},
initStepPrice
(){
if
(
this
.
form
.
priceType
==
1
&&
!
this
.
form
.
fullPriceStepList
?.
length
){
...
...
@@ -638,7 +723,6 @@ export default {
},
// force 为是否强制提交,在价格过期的时候需要确认后强制提交
submitForm
(
force
=
false
)
{
console
.
log
(
"
this.$refs[
\"
form
\"
]
"
,
this
.
$refs
[
"
form
"
])
this
.
$refs
[
"
form
"
].
validate
(
async
(
valid
)
=>
{
if
(
!
valid
)
{
return
;
...
...
@@ -658,7 +742,8 @@ export default {
// specialList: this.specialProducts,
isAllProduct
:
0
})
if
(
this
.
$refs
.
stepPrice
){
// 阶梯价
if
(
this
.
form
.
stepPrice
){
let
isValid
=
true
for
(
let
stepPrice
of
this
.
$refs
.
stepPrice
){
if
(
!
stepPrice
.
validate
()){
...
...
@@ -667,8 +752,6 @@ export default {
}
}
if
(
!
isValid
)
return
}
// 全包价
if
(
this
.
form
.
priceType
==
1
)
{
...
...
@@ -680,6 +763,42 @@ export default {
data
.
freightPriceStepList
=
this
.
getPriceList
(
this
.
form
.
freightPriceStepList
)
delete
data
.
fullPriceStepList
}
}
//海运非阶梯价校验
else
{
// 有多个组件则表示清关费 + 运费
if
(
this
.
$refs
.
seaPrice
?.
length
){
let
isValid
=
true
for
(
let
seaPrice
of
this
.
$refs
.
seaPrice
){
if
(
!
seaPrice
.
validate
()){
isValid
=
false
break
}
}
if
(
!
isValid
)
return
}
// 只有一个海运费组件,全包价
else
if
(
this
.
$refs
.
seaPrice
&&
!
this
.
$refs
.
seaPrice
.
validate
()){
return
}
// 格式化
if
(
this
.
form
.
priceType
===
1
){
data
.
fullPricePackagingList
=
this
.
getPackingPrice
(
data
.
fullPricePackagingList
)
delete
data
.
freightPricePackagingList
delete
data
.
clearancePricePackagingList
}
else
{
data
.
freightPricePackagingList
=
this
.
getPackingPrice
(
data
.
freightPricePackagingList
)
data
.
clearancePricePackagingList
=
this
.
getPackingPrice
(
data
.
clearancePricePackagingList
)
delete
data
.
fullPricePackagingList
}
// 删除阶梯价字段
delete
data
.
freightPriceStepList
delete
data
.
fullPriceStepList
delete
data
.
clearancePriceStepList
}
// 设置了有效期,且已过期则给提示
if
(
this
.
form
.
validateEndDate
&&
force
!==
true
){
...
...
src/views/ecw/productPrice/editAir.vue
View file @
b6b42e19
...
...
@@ -99,6 +99,7 @@
:currency-list=
"currencyList"
:unit-list=
"unitList"
field-prefix=
"all"
:type=
"$t('空运')"
:price-name=
"$t('全包价')"
:show-add=
"index === form.fullPriceStepList.length -1 && !readonly"
:value=
"item"
...
...
@@ -118,6 +119,7 @@
:currency-list=
"currencyList"
:unit-list=
"unitList"
field-prefix=
"transport"
:type=
"$t('空运')"
:price-name=
"$t('运费')"
:show-add=
"index === form.freightPriceStepList.length -1 && !readonly"
:value=
"item"
...
...
@@ -136,6 +138,7 @@
:currency-list=
"currencyList"
:unit-list=
"unitList"
field-prefix=
"clearance"
:type=
"$t('空运')"
:price-name=
"$t('清关费')"
:show-add=
"index === form.clearancePriceStepList.length -1 && !readonly"
:value=
"item"
...
...
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