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
2cc44653
Commit
2cc44653
authored
Oct 23, 2023
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
71c01571
83f7efc1
Changes
29
Show whitespace changes
Inline
Side-by-side
Showing
29 changed files
with
325 additions
and
36 deletions
+325
-36
customer.js
src/api/ecw/customer.js
+9
-0
order.js
src/api/ecw/order.js
+10
-2
Item.vue
src/layout/components/Sidebar/Item.vue
+16
-4
SidebarItem.vue
src/layout/components/Sidebar/SidebarItem.vue
+7
-2
index.vue
src/layout/components/Sidebar/index.vue
+8
-0
getters.js
src/store/getters.js
+3
-1
permission.js
src/store/modules/permission.js
+2
-1
user.js
src/store/modules/user.js
+8
-1
detail.vue
src/views/bpm/processInstance/detail.vue
+4
-0
cancelClear.vue
src/views/ecw/box/cancelClear.vue
+17
-3
RevokeClear.vue
src/views/ecw/box/components/RevokeClear.vue
+72
-0
makeLadingBill.vue
src/views/ecw/box/ladingBill/makeLadingBill.vue
+2
-1
queryAir.vue
src/views/ecw/box/queryAir.vue
+1
-1
cusClearance.vue
src/views/ecw/box/shippingAir/nodePage/cusClearance.vue
+2
-2
index.vue
src/views/ecw/box/shippingAir/nodePage/mergePkg/index.vue
+1
-1
unPkgPage.vue
...views/ecw/box/shippingAir/nodePage/mergePkg/unPkgPage.vue
+1
-0
twoWayTakeoff.vue
src/views/ecw/box/shippingAir/nodePage/twoWayTakeoff.vue
+5
-1
startUnloading.vue
...ecw/box/shippingAir/nodePage/unloading/startUnloading.vue
+18
-4
seaProcess.vue
src/views/ecw/box/shippingAir/seaProcess.vue
+2
-1
utils.js
src/views/ecw/box/shippingAir/utils.js
+21
-0
preinstall.vue
src/views/ecw/box/shippingSea/nodePage/preinstall.vue
+10
-0
index.vue
src/views/ecw/customerConfirm/index.vue
+17
-1
detail.vue
src/views/ecw/order/detail.vue
+4
-1
edit.vue
src/views/ecw/order/edit.vue
+8
-0
index.vue
src/views/ecw/order/index.vue
+18
-3
showContacts.vue
...iews/ecw/productBrank/Empower/components/showContacts.vue
+37
-0
index.vue
src/views/ecw/productBrank/Empower/index.vue
+9
-4
index.vue
src/views/ecw/productPrice/index.vue
+8
-2
index.vue
src/views/system/menu/index.vue
+5
-0
No files found.
src/api/ecw/customer.js
View file @
2cc44653
...
...
@@ -486,3 +486,12 @@ export function deptExportExcel(){
method
:
'
get
'
})
}
export
function
recycleUnconfirmedCustomer
(
data
){
return
request
({
url
:
'
ecw/customer/recycle-unconfirmed-customer
'
,
method
:
'
put
'
,
data
})
}
src/api/ecw/order.js
View file @
2cc44653
...
...
@@ -814,7 +814,7 @@ export function splitItemUpdate(data){
// 待备货(可出)订单列表
export
function
canShipmentPage
(
params
){
return
request
({
url
:
'
/air/order/can/shipment/page
'
,
url
:
'
/air/order/
data/scope/
can/shipment/page
'
,
method
:
'
get
'
,
params
})
...
...
@@ -822,7 +822,7 @@ export function canShipmentPage(params){
// 待出订单列表
export
function
waitingShipmentPage
(
params
){
return
request
({
url
:
'
/air/order/waiting/shipment/page
'
,
url
:
'
/air/order/
data/scope/
waiting/shipment/page
'
,
method
:
'
get
'
,
params
})
...
...
@@ -999,3 +999,11 @@ export function exportOrderSummaryByContainerNumber(params){
responseType
:
'
blob
'
})
}
// 查询权限范围内待出订单数量
export
function
getWaitingShipmentCount
(){
return
request
({
url
:
'
/air/order/data/scope/waiting/shipment/count
'
,
method
:
'
get
'
})
}
src/layout/components/Sidebar/Item.vue
View file @
2cc44653
...
...
@@ -10,20 +10,32 @@ export default {
title
:
{
type
:
String
,
default
:
''
}
},
badge
:
Number
},
render
(
h
,
context
)
{
const
{
icon
,
title
}
=
context
.
props
const
{
icon
,
title
,
badge
}
=
context
.
props
const
vnodes
=
[]
if
(
icon
)
{
vnodes
.
push
(
<
svg
-
icon
icon
-
class
=
{
icon
}
/>
)
vnodes
.
push
(
<
svg
-
icon
icon
-
class
=
{
icon
}
test
=
"
1
"
/>
)
}
if
(
title
)
{
vnodes
.
push
(
<
span
slot
=
'
title
'
>
{(
title
)}
<
/span>
)
vnodes
.
push
(
<
span
><
span
>
{(
title
)}
<
/span><span class="badge">{badge}</
span
>
<
/span>
)
}
return
vnodes
}
}
</
script
>
<
style
lang=
"scss"
scoped
>
.badge
:not
(
:empty
)
{
background
:
red
;
color
:
#fff
;
padding
:
2px
8px
;
font-size
:
12px
;
border-radius
:
10px
;
margin-left
:
5px
;
}
</
style
>
src/layout/components/Sidebar/SidebarItem.vue
View file @
2cc44653
...
...
@@ -3,14 +3,14 @@
<template
v-if=
"hasOneShowingChild(item.children,item) && (!onlyOneChild.children||onlyOneChild.noShowingChildren)&&!item.alwaysShow"
>
<app-link
v-if=
"onlyOneChild.meta"
:to=
"resolvePath(onlyOneChild.path)"
>
<el-menu-item
:index=
"resolvePath(onlyOneChild.path)"
:class=
"
{'submenu-title-noDropdown':!isNest}">
<item
:icon=
"onlyOneChild.meta.icon||(item.meta&&item.meta.icon)"
:title=
"$l(onlyOneChild.meta, 'title')"
/>
<item
:icon=
"onlyOneChild.meta.icon||(item.meta&&item.meta.icon)"
:title=
"$l(onlyOneChild.meta, 'title')"
:badge=
"badge"
/>
</el-menu-item>
</app-link>
</
template
>
<el-submenu
v-else
ref=
"subMenu"
:index=
"resolvePath(item.path)"
popper-append-to-body
>
<
template
slot=
"title"
>
<item
v-if=
"item.meta"
:icon=
"item.meta && item.meta.icon"
:title=
"$l(item.meta, 'title')"
/>
<item
v-if=
"item.meta"
:icon=
"item.meta && item.meta.icon"
:title=
"$l(item.meta, 'title')"
:badge=
"badge"
/>
</
template
>
<sidebar-item
v-for=
"child in item.children"
...
...
@@ -54,6 +54,11 @@ export default {
this
.
onlyOneChild
=
null
return
{}
},
computed
:{
badge
(){
return
this
.
$store
.
getters
.
badgeData
[
this
.
item
.
meta
.
badgeField
]
}
},
methods
:
{
hasOneShowingChild
(
children
=
[],
parent
)
{
if
(
!
children
)
{
...
...
src/layout/components/Sidebar/index.vue
View file @
2cc44653
...
...
@@ -28,6 +28,7 @@ import { mapGetters, mapState } from "vuex";
import
Logo
from
"
./Logo
"
;
import
SidebarItem
from
"
./SidebarItem
"
;
import
variables
from
"
@/assets/styles/variables.scss
"
;
import
{
getWaitingShipmentCount
}
from
"
@/api/ecw/order
"
;
export
default
{
components
:
{
SidebarItem
,
Logo
},
...
...
@@ -52,6 +53,13 @@ export default {
isCollapse
()
{
return
!
this
.
sidebar
.
opened
;
}
},
created
()
{
// 查询待出订单数量 waitingShipment
getWaitingShipmentCount
().
then
(
res
=>
{
console
.
log
(
'
getWaitingShipmentCount
'
,
res
.
data
)
this
.
$store
.
commit
(
'
SET_BADGE_DATA
'
,
{
waitingShipment
:
res
.
data
},
)
})
}
};
</
script
>
src/store/getters.js
View file @
2cc44653
...
...
@@ -17,6 +17,8 @@ const getters = {
defaultRoutes
:
state
=>
state
.
permission
.
defaultRoutes
,
sidebarRouters
:
state
=>
state
.
permission
.
sidebarRouters
,
// 数据字典
dict_datas
:
state
=>
state
.
dict
.
dictDatas
dict_datas
:
state
=>
state
.
dict
.
dictDatas
,
// 角标数据
badgeData
:
state
=>
state
.
user
.
badgeData
}
export
default
getters
src/store/modules/permission.js
View file @
2cc44653
...
...
@@ -56,7 +56,8 @@ function filterAsyncRouter(asyncRouterMap, lastRouter = false, type = false) {
titleEn
:
route
.
nameEn
,
icon
:
route
.
icon
,
noCache
:
!
route
.
keepalive
,
// 不缓存,如果需要缓存则需要组件名称能对应上
componentPath
:
route
.
component
componentPath
:
route
.
component
,
badgeField
:
route
.
badgeField
}
route
.
hidden
=
typeof
route
.
isShowInMenuBar
!=
'
undefined
'
&&
(
route
.
isShowInMenuBar
==
'
false
'
||
!
route
.
isShowInMenuBar
)
// 处理 component 属性
...
...
src/store/modules/user.js
View file @
2cc44653
...
...
@@ -13,7 +13,11 @@ const user = {
permissions
:
[],
notMessage
:
0
,
matterNum
:
0
,
download
:
0
download
:
0
,
badgeData
:{
// 待出订单数量
waitingShipment
:
0
}
},
mutations
:
{
...
...
@@ -43,6 +47,9 @@ const user = {
},
SET_DOWNLOAD
(
state
,
cnt
){
state
.
download
=
cnt
;
},
SET_BADGE_DATA
(
state
,
data
){
state
.
badgeData
=
Object
.
assign
({},
state
.
badgeData
,
data
)
}
},
...
...
src/views/bpm/processInstance/detail.vue
View file @
2cc44653
...
...
@@ -455,6 +455,10 @@ export default {
component
:
"
shippingDetail
"
,
processId
:
this
.
processInstance
.
businessKey
,
type
:
'
air_warehouse
'
},
revoke_clear
:{
component
:()
=>
import
(
"
@/views/ecw/box/components/RevokeClear
"
),
id
:
this
.
processInstance
.
businessKey
}
}
console
.
log
(
'
formCustomViewPath
'
,
this
.
processInstance
.
processDefinition
.
formCustomViewPath
.
trim
())
...
...
src/views/ecw/box/cancelClear.vue
View file @
2cc44653
...
...
@@ -3,12 +3,16 @@
<div
class=
"message-title"
>
{{
$t
(
`您确定撤销${cancelClearInfo.orderNo
}
已清关状态吗?`
)
}}
<
/div
>
<
el
-
form
ref
=
"
arrivalForm
"
:
rules
=
"
rules
"
:
model
=
"
cusClearanceObj
"
label
-
width
=
"
120px
"
>
<
el
-
form
-
item
:
label
=
"
$t('撤销理由')
"
prop
=
"
clEstTime
"
>
<
el
-
input
v
-
model
=
"
cusClearanceObj.applyReason
"
type
=
"
textarea
"
:
rows
=
"
4
"
><
/el-input
>
<
el
-
input
v
-
if
=
"
flag
"
v
-
model
=
"
cusClearanceObj.applyReason
"
type
=
"
textarea
"
:
rows
=
"
4
"
><
/el-input
>
<
template
v
-
else
>
{{
apply
.
applyReason
}}
<
/template
>
<
/el-form-item
>
<
/el-form
>
<
el
-
row
class
=
"
operate-button
"
>
<
el
-
button
type
=
"
primary
"
@
click
=
"
onSubmit
"
>
{{
$t
(
'
确定
'
)
}}
<
/el-button
>
<
el
-
button
v
-
if
=
"
flag
"
type
=
"
primary
"
@
click
=
"
onSubmit
"
>
{{
$t
(
'
确定
'
)
}}
<
/el-button
>
<
el
-
button
v
-
if
=
"
!flag
"
type
=
"
primary
"
@
click
=
"
$router.push({path: '/bpm/process-instance/detail', query: {id: apply.bpmProcessId
}}
)
"
>
{{
$t
(
'
审核中
'
)
}}
<
/el-button
>
<
el
-
button
@
click
=
"
cancel
"
>
{{
$t
(
'
取消
'
)
}}
<
/el-button
>
<
/el-row
>
<
/div
>
...
...
@@ -34,9 +38,19 @@ export default {
applyReason
:
[
{
required
:
true
,
message
:
this
.
$t
(
"
必填
"
),
trigger
:
"
change
"
}
,
]
}
}
,
apply
:
{
}
,
flag
:
true
}
;
}
,
created
()
{
let
orders
=
this
.
shipmentObj
.
clearanceInfo
?.
clearanceOrderBackList
let
order
=
orders
.
find
(
item
=>
item
.
orderId
==
this
.
cancelClearInfo
.
orderId
)
if
(
order
){
this
.
apply
=
order
this
.
flag
=
false
}
}
,
methods
:
{
onSubmit
()
{
this
.
$refs
[
"
arrivalForm
"
].
validate
((
valid
)
=>
{
...
...
src/views/ecw/box/components/RevokeClear.vue
0 → 100644
View file @
2cc44653
<
template
>
<div
v-if=
"order"
>
<el-descriptions
:column=
"4"
v-if=
"order"
:colon=
"false"
>
<el-descriptions-item
:label=
"$t('订单号')"
>
{{
order
.
orderNo
}}
</el-descriptions-item>
<el-descriptions-item
:label=
"$t('运输方式')"
>
<dict-tag
class=
"mr-10"
:type=
"DICT_TYPE.ECW_TRANSPORT_TYPE"
:value=
"order.transportId"
/>
</el-descriptions-item>
<el-descriptions-item
:label=
"$t('出货渠道')"
>
{{
order
.
channelName
}}
</el-descriptions-item>
<el-descriptions-item
:label=
"$t('订单状态')"
>
{{
order
.
statusMsg
}}
</el-descriptions-item>
<el-descriptions-item
:label=
"$t('唛头')"
>
{{
order
.
marks
}}
</el-descriptions-item>
<el-descriptions-item
:label=
"$t('始发仓')"
>
{{
order
.
logisticsInfoDto
.
startTitleZh
}}
</el-descriptions-item>
<el-descriptions-item
:label=
"$t('目的仓')"
:span=
"2"
>
{{
order
.
logisticsInfoDto
.
destAddressZh
}}
</el-descriptions-item>
<!-- 优惠申请 -->
<el-descriptions-item
:label=
"$t('申请理由')"
:span=
"4"
>
<div
class=
"bold"
>
{{
applyReason
}}
</div>
</el-descriptions-item>
</el-descriptions>
</div>
</
template
>
<
script
>
import
{
getOrder
}
from
'
@/api/ecw/order
'
import
{
getBoxApproval
}
from
"
@/api/ecw/box
"
;
/*
撤销清关审核
*/
export
default
{
name
:
'
RevokeClear
'
,
props
:{
id
:
[
String
,
Number
]
},
data
(){
return
{
order
:
null
,
applyReason
:
null
}
},
created
(){
if
(
this
.
id
){
// id是出货审核ID
getBoxApproval
({
id
:
this
.
id
}).
then
(
res
=>
{
this
.
applyReason
=
res
.
data
.
applyReason
getOrder
(
res
.
data
.
orderId
).
then
(
res
=>
{
this
.
order
=
res
.
data
})
})
}
}
}
</
script
>
<
style
scoped
lang=
"scss"
>
.title
{
padding
:
10px
0
;
span
{
font-size
:
14px
;
font-weight
:
bold
;
}
}
.bold
{
font-weight
:
bold
;
}
</
style
>
src/views/ecw/box/ladingBill/makeLadingBill.vue
View file @
2cc44653
...
...
@@ -205,7 +205,8 @@ export default {
/* doc.save("a4.pdf");
return Promise.reject() */
let
form
=
new
FormData
()
let
file
=
this
.
selfNo
+
"
-
"
+
this
.
currRow
.
tidanNo
+
'
'
+
orderData
.
marks
+
'
.pdf
'
//this.selfNo + '-' + this.currRow.tidanNo + '.pdf'
const
dst
=
this
.
$l
(
orderData
.
logisticsInfoDto
,
'
destTitle
'
)
let
file
=
this
.
selfNo
+
"
-
"
+
this
.
currRow
.
tidanNo
+
'
'
+
orderData
.
marks
+
'
-
'
+
dst
+
'
.pdf
'
//this.selfNo + '-' + this.currRow.tidanNo + '.pdf'
form
.
append
(
'
file
'
,
new
File
([
doc
.
output
(
'
arraybuffer
'
)],
file
,
{
type
:
'
application/pdf
'
}))
form
.
append
(
'
path
'
,
`admin/shipment/
${
this
.
selfNo
}
/pdf/
${
file
}
`
)
// 最前面不能有/,否则返回的url会有两个/
...
...
src/views/ecw/box/queryAir.vue
View file @
2cc44653
...
...
@@ -108,7 +108,7 @@
<el-table-column
prop=
""
:label=
"$t('操作')"
align=
"center"
width=
"120px"
>
<
template
slot-scope=
"scope"
>
<el-button
type=
"primary"
size=
"small"
:disabled=
"scope.row.abnormalDealStatus === 1"
@
click=
"()=>updateStatus('single', scope.row)"
>
{{
$t
(
'
更新状态
'
)
}}
</el-button>
<el-button
type=
"primary"
size=
"small"
:disabled=
"shipmentObj.clStatus==132||(shipmentObj.clearanceInfo&&shipmentObj.clearanceInfo.clearanceOrderList.findIndex(ff=>ff.orderId == scope.row.orderId) == -1)"
@
click=
"()=>cancleClear(scope.row)"
>
{{
$t
(
'
撤销清关申请
'
)
}}
</el-button>
<el-button
type=
"primary"
size=
"small"
:disabled=
"shipmentObj.clStatus==132||
(shipmentObj.clearanceInfo == null) ||
(shipmentObj.clearanceInfo&&shipmentObj.clearanceInfo.clearanceOrderList.findIndex(ff=>ff.orderId == scope.row.orderId) == -1)"
@
click=
"()=>cancleClear(scope.row)"
>
{{
$t
(
'
撤销清关申请
'
)
}}
</el-button>
</
template
>
</el-table-column>
</el-table>
...
...
src/views/ecw/box/shippingAir/nodePage/cusClearance.vue
View file @
2cc44653
...
...
@@ -102,8 +102,8 @@ export default {
this
.
cusClearanceObj
=
oldData
if
(
!
this
.
cusClearanceObj
.
clearanceType
)
this
.
$set
(
this
.
cusClearanceObj
,
'
clearanceType
'
,
0
)
this
.
$set
(
this
.
cusClearanceObj
,
'
clearanceOrderIdList
'
,
[])
if
(
this
.
$attrs
.
shipmentObj
.
airArrivalInfo
.
arrivalOrderList
)
this
.
arrivalOrderList
=
this
.
$attrs
.
shipmentObj
.
airArrivalInfo
.
arrivalOrderList
if
(
this
.
$attrs
.
shipmentObj
.
clearanceInfo
.
clearanceOrderList
)
this
.
clearanceOrderList
=
this
.
$attrs
.
shipmentObj
.
clearanceInfo
.
clearanceOrderList
if
(
t
ypeof
this
.
$attrs
.
shipmentObj
.
airArrivalInfo
?.
arrivalOrderList
!=
'
undefined
'
&&
t
his
.
$attrs
.
shipmentObj
.
airArrivalInfo
.
arrivalOrderList
)
this
.
arrivalOrderList
=
this
.
$attrs
.
shipmentObj
.
airArrivalInfo
.
arrivalOrderList
if
(
t
ypeof
this
.
$attrs
.
shipmentObj
.
clearanceInfo
?.
clearanceOrderList
!=
'
undefined
'
&&
t
his
.
$attrs
.
shipmentObj
.
clearanceInfo
.
clearanceOrderList
)
this
.
clearanceOrderList
=
this
.
$attrs
.
shipmentObj
.
clearanceInfo
.
clearanceOrderList
shipmentOrderList
(
this
.
$attrs
.
shipmentObj
.
id
).
then
((
r
)
=>
{
this
.
orderList
=
r
.
data
this
.
orderListFilter
=
r
.
data
...
...
src/views/ecw/box/shippingAir/nodePage/mergePkg/index.vue
View file @
2cc44653
...
...
@@ -110,7 +110,7 @@
<el-radio-button
:label=
"2"
>
{{ $t('已装箱列表') }}
</el-radio-button>
</el-radio-group>
</div>
<un-pkg-page
v-if=
"pkgPageType == 1"
:pkgData=
"pkgData"
:shipmentObj=
"shipmentObj"
/>
<un-pkg-page
v-if=
"pkgPageType == 1"
:pkgData=
"pkgData"
:shipmentObj=
"shipmentObj"
@
reload=
"getList"
/>
<pkg-page
v-if=
"pkgPageType == 2"
:pkgData=
"pkgData"
:shipmentObj=
"shipmentObj"
@
closeDialog=
"closeDialog"
@
reload=
"getList"
/>
</el-dialog>
<!-- 打印标签 -->
...
...
src/views/ecw/box/shippingAir/nodePage/mergePkg/unPkgPage.vue
View file @
2cc44653
...
...
@@ -125,6 +125,7 @@ export default {
createPkgOrder
(
data
).
then
(()
=>
{
this
.
$message
.
success
(
this
.
$t
(
'
装箱成功
'
))
this
.
getList
()
this
.
$emit
(
'
reload
'
)
})
},
// 选中
...
...
src/views/ecw/box/shippingAir/nodePage/twoWayTakeoff.vue
View file @
2cc44653
...
...
@@ -4,10 +4,13 @@
<el-form-item
:label=
"$t('预计起飞时间')"
>
{{
getTakeOffTime
()
}}
</el-form-item>
<el-form-item
:label=
"$t('预计到港时间')"
prop=
"est_time"
>
<el-date-picker
type=
"datetime"
:placeholder=
"$t('请选择日期')"
v-model=
"twoWayTakeoffObj.est_time"
value-format=
"yyyy-MM-dd HH:mm:ss"
></el-date-picker>
</el-form-item>
<el-form-item
:label=
"$t('实际起飞时间')"
prop=
"dtRealFlyTime"
>
<el-date-picker
type=
"datetime"
:placeholder=
"$t('请选择日期')"
v-model=
"twoWayTakeoffObj.dtRealFlyTime"
value-format=
"yyyy-MM-dd HH:mm:ss"
></el-date-picker>
</el-form-item>
<el-form-item
v-if=
"dtRealHeadTimeFlag"
:label=
"$t('
实际头程
时间')"
prop=
"dtRealHeadTime"
>
<el-form-item
v-if=
"dtRealHeadTimeFlag"
:label=
"$t('
预计二程起飞
时间')"
prop=
"dtRealHeadTime"
>
<el-date-picker
type=
"datetime"
:placeholder=
"$t('请选择日期')"
v-model=
"twoWayTakeoffObj.dtRealHeadTime"
value-format=
"yyyy-MM-dd HH:mm:ss"
></el-date-picker>
</el-form-item>
</el-form>
...
...
@@ -62,6 +65,7 @@ export default {
let
oldData
=
{
...
this
.
$attrs
.
shipmentObj
[
voName
]
};
oldData
=
formatDateStr
(
oldData
,
[
"
dtRealFlyTime
"
],
"
YYYY-MM-DD HH:mm:ss
"
);
oldData
=
formatDateStr
(
oldData
,
[
"
dtRealHeadTime
"
],
"
YYYY-MM-DD HH:mm:ss
"
);
oldData
=
formatDateStr
(
oldData
,
[
"
est_time
"
],
"
YYYY-MM-DD HH:mm:ss
"
);
this
.
twoWayTakeoffObj
=
oldData
;
if
(
this
.
$attrs
.
shipmentObj
[
'
bookAirInfo
'
].
voyage
&&
this
.
$attrs
.
shipmentObj
[
'
bookAirInfo
'
].
voyage
==
2
){
this
.
dtRealHeadTimeFlag
=
true
...
...
src/views/ecw/box/shippingAir/nodePage/unloading/startUnloading.vue
View file @
2cc44653
...
...
@@ -19,6 +19,10 @@
{{
$t
(
'
过机重量异常
'
)
}}
:
{{
$t
(
'
过机放行-已找到重货订单
'
)
}}
:
<span
v-for=
"order in strToArray(pageData.boxCustomsBackVO.overOrders)"
:key=
"order"
>
{{
getOrders
(
order
)
}}
</span>
</p>
</el-row>
<el-row
class=
"number-area"
>
<p
class=
"label-font"
><span
style=
"color:red"
>
*
</span>
{{
$t
(
'
到仓时间
'
)
}}
:
</p>
<el-date-picker
type=
"datetime"
:placeholder=
"$t('请选择日期')"
v-model=
"ulWarehouseTime"
value-format=
"yyyy-MM-dd HH:mm:ss"
></el-date-picker>
</el-row>
<el-row
class=
"number-area"
>
<p
class=
"label-font"
>
{{
$t
(
'
自编号
'
)
}}
:
</p>
<p
class=
"label-font"
>
{{
selfNo
}}
</p>
...
...
@@ -127,12 +131,12 @@
<!-- 操作 -->
<div
v-if=
"!isUnderReview"
>
<el-button
type=
"success"
@
click=
"onSubmit"
>
{{$t('提交完成到仓审核')}}
</el-button>
<el-button
plain
type=
"primary"
@
click=
"$emit('close
Start
')"
>
{{$t('返回')}}
</el-button>
<el-button
plain
type=
"primary"
@
click=
"$emit('close
Dialog
')"
>
{{$t('返回')}}
</el-button>
</div>
<div
v-if=
"isUnderReview"
>
<el-button
type=
"primary"
@
click=
"jumpReviewDetail"
>
{{$t('到仓审核中')}}
</el-button>
<el-button
plain
type=
"primary"
@
click=
"canclAudit"
>
{{$t('取消审核')}}
</el-button>
<el-button
plain
type=
"primary"
@
click=
"$emit('close
Start
')"
>
{{$t('返回')}}
</el-button>
<el-button
plain
type=
"primary"
@
click=
"$emit('close
Dialog
')"
>
{{$t('返回')}}
</el-button>
</div>
</el-row>
...
...
@@ -193,7 +197,8 @@ export default {
totalStatistics
:
{},
},
selectedUsers
:
[],
sectionOrderList
:
[]
sectionOrderList
:
[],
ulWarehouseTime
:
null
};
},
created
()
{
...
...
@@ -265,9 +270,14 @@ export default {
this
.
$message
.
error
(
this
.
$t
(
"
请输入订单号
"
));
return
;
}
if
(
!
this
.
ulWarehouseTime
)
{
this
.
$message
.
error
(
this
.
$t
(
"
请选择到仓时间
"
));
return
;
}
batchUnload
({
orderNo
:
this
.
labelNo
,
shipmentId
:
this
.
$attrs
.
shipmentObj
.
id
,
unloadTime
:
this
.
ulWarehouseTime
}).
then
((
res
)
=>
{
serviceMsg
(
res
,
this
).
then
((
res
)
=>
{
this
.
labelNo
=
""
;
...
...
@@ -277,11 +287,15 @@ export default {
},
/* 一键卸柜 */
modifyAllUnload
()
{
if
(
!
this
.
ulWarehouseTime
)
{
this
.
$message
.
error
(
this
.
$t
(
"
请选择到仓时间
"
));
return
;
}
this
.
$confirm
(
this
.
$t
(
"
确认到仓?
"
),
this
.
$t
(
"
提示
"
),
{
type
:
"
warning
"
,
})
.
then
((
_
)
=>
{
allUnload
({
shipmentId
:
this
.
$attrs
.
shipmentObj
.
id
}).
then
((
res
)
=>
{
allUnload
({
shipmentId
:
this
.
$attrs
.
shipmentObj
.
id
,
unloadTime
:
this
.
ulWarehouseTime
}).
then
((
res
)
=>
{
serviceMsg
(
res
,
this
).
then
((
res
)
=>
{
this
.
getLoadGoodsList
();
});
...
...
src/views/ecw/box/shippingAir/seaProcess.vue
View file @
2cc44653
...
...
@@ -42,7 +42,7 @@ import arrivalWidget from "./nodePage/arrival.vue";
import
cusClearanceWidget
from
"
./nodePage/cusClearance.vue
"
;
import
twoWayTakeoffWidget
from
"
./nodePage/twoWayTakeoff.vue
"
;
import
twoWayArrivalWidget
from
"
./nodePage/twoWayArrival.vue
"
;
import
unloadingWidget
from
"
./nodePage/unloading/
index
.vue
"
;
import
unloadingWidget
from
"
./nodePage/unloading/
startUnloading
.vue
"
;
import
settlementWidget
from
"
./nodePage/settlement.vue
"
;
import
reviewWidget
from
"
./nodePage/review.vue
"
;
import
shipmentWidget
from
"
./nodePage/shipment.vue
"
;
...
...
@@ -216,6 +216,7 @@ export default {
break
;
// 卸柜
case
"
unloading
"
:
this
.
$set
(
this
.
dialogConfig
,
"
fullscreen
"
,
true
);
// 卸柜反审
const
unStatus
=
this
.
shipmentObj
[
node
.
keyName
];
if
([
186
].
includes
(
unStatus
))
{
...
...
src/views/ecw/box/shippingAir/utils.js
View file @
2cc44653
...
...
@@ -752,6 +752,27 @@ function getColmnMapping() {
key
:
"
operator
"
,
},
],
boxAirFlyInfo
:
[
{
title
:
i18n
.
$t
(
"
预计到港时间
"
),
key
:
"
dtRealFlyTime
"
,
type
:
"
datetime
"
,
},
{
title
:
i18n
.
$t
(
"
实际起飞时间
"
),
key
:
"
dtRealFlyTime
"
,
type
:
"
datetime
"
,
},
{
title
:
i18n
.
$t
(
"
预计二程起飞时间
"
),
key
:
"
dtRealHeadTime
"
,
type
:
"
datetime
"
,
},
{
title
:
i18n
.
$t
(
"
业务员
"
),
key
:
"
operator
"
,
},
],
clearanceDocInfo
:
[
{
title
:
"
agent list
"
,
...
...
src/views/ecw/box/shippingSea/nodePage/preinstall.vue
View file @
2cc44653
...
...
@@ -157,6 +157,11 @@
<
/div
>
<
/template
>
<
/el-table-column
>
<
el
-
table
-
column
:
label
=
"
$t('特性')
"
align
=
"
center
"
prop
=
"
attrNameList
"
width
=
"
120
"
>
<
template
slot
-
scope
=
"
scope
"
>
{{
scope
.
row
.
warehouseInAttrNameList
?
scope
.
row
.
warehouseInAttrNameList
.
toString
():
""
}}
<
/template
>
<
/el-table-column
>
<
el
-
table
-
column
:
label
=
"
$t('备案')
"
align
=
"
center
"
prop
=
"
productRecord
"
width
=
"
100
"
>
<
template
slot
-
scope
=
"
{row
}
"
>
<
template
v
-
if
=
"
row.brandName
"
>
{{
row
.
brandName
}}
<
/template
>
...
...
@@ -274,6 +279,11 @@
<
dict
-
tag
:
type
=
"
DICT_TYPE.ECW_PRODUCT_MATERIAL
"
:
value
=
"
scope.row.material
"
/>
<
/template
>
<
/el-table-column
>
<
el
-
table
-
column
:
label
=
"
$t('特性')
"
align
=
"
center
"
prop
=
"
warehouseInAttrNameList
"
width
=
"
120
"
>
<
template
slot
-
scope
=
"
scope
"
>
{{
scope
.
row
.
warehouseInAttrNameList
?
scope
.
row
.
warehouseInAttrNameList
.
toString
():
""
}}
<
/template
>
<
/el-table-column
>
<!--
<
el
-
table
-
column
:
label
=
"
$t('操作')
"
align
=
"
center
"
class
-
name
=
"
small-padding fixed-width
"
>
<
template
slot
-
scope
=
"
scope
"
>
<
el
-
dropdown
trigger
=
"
click
"
@
command
=
"
(command)=>handleGoods('single',scope.row,command)
"
>
...
...
src/views/ecw/customerConfirm/index.vue
View file @
2cc44653
...
...
@@ -136,7 +136,9 @@
</router-link>
<el-button
size=
"mini"
type=
"text"
@
click=
"handleUpdate(scope.row)"
v-hasPermi=
"['ecw:customer:treat-perfect']"
>
{{
$t
(
'
完善
'
)
}}
</el-button>
<el-button
v-has-permi=
"['ecw:customer:treat-recovery']"
size=
"mini"
type=
"text"
@
click=
"recovery(scope.row)"
>
{{
$t
(
'
回收客户
'
)
}}
</el-button>
</
template
>
</el-table-column>
</el-table>
<!-- 分页组件 -->
...
...
@@ -360,7 +362,7 @@ import {
exportCustomerExcel
,
getWaitForConfirmList
,
confirm
,
waiteConfirmExportExcel
,
waiteConfirEexportExcel
waiteConfirmExportExcel
,
waiteConfirEexportExcel
,
recycleUnconfirmedCustomer
}
from
"
@/api/ecw/customer
"
;
import
{
listServiceUser
}
from
"
@/api/system/user
"
import
{
getDictDatas
,
DICT_TYPE
}
from
'
@/utils/dict
'
...
...
@@ -455,6 +457,20 @@ export default {
})
},
methods
:
{
recovery
(
row
){
console
.
log
(
row
,
'
row
'
)
this
.
$confirm
(
this
.
$t
(
'
是否要回收当前{name}
'
,
row
),
'
提示
'
,
{
confirmButtonText
:
'
确定
'
,
cancelButtonText
:
'
取消
'
,
type
:
'
warning
'
}).
then
(()
=>
{
recycleUnconfirmedCustomer
({
customerId
:
row
.
id
}).
then
(
r
=>
{
this
.
$message
.
success
(
this
.
$t
(
'
回收成功。
'
))
})
}).
catch
(()
=>
{
this
.
$message
.
info
(
this
.
$t
(
'
已取消
'
))
});
},
getDictDatas
,
countryFormatter
(
row
,
column
,
cellValue
)
{
const
country
=
this
.
countryList
.
find
((
e
)
=>
e
.
id
===
cellValue
)
...
...
src/views/ecw/order/detail.vue
View file @
2cc44653
...
...
@@ -267,7 +267,7 @@
<el-timeline
v-if=
"order.orderTimeVOList && order.orderTimeVOList.length"
:reverse=
"true"
>
<el-timeline-item
v-for=
"(activity, index) in order.orderTimeVOList"
:key=
"index"
:timestamp=
"parseTime(activity.businessTime)"
>
{{ $l(activity, 'title') }}
<div>
{{$l(activity, 'remarks')}}
</div>
<div
:class=
"{red: !!activity.mark}"
>
{{$l(activity, 'remarks')}}
</div>
</el-timeline-item>
</el-timeline>
<el-result
v-else
icon=
"info "
:title=
"$t('暂无数据')"
:subTitle=
"$t('暂无订单动态数据')"
/>
...
...
@@ -809,6 +809,9 @@ export default {
<
/script
>
<
style
scoped
>
.
red
{
color
:
red
;
}
.
card
{
margin
-
bottom
:
20
px
;
}
...
...
src/views/ecw/order/edit.vue
View file @
2cc44653
...
...
@@ -490,6 +490,14 @@
/>
</el-select>
</el-form-item>
<div>
<el-form-item
:label=
"$t('提单是否显示价格')"
prop=
"displayBillLadingPrice"
>
<el-radio-group
v-model=
"form.displayBillLadingPrice"
>
<el-radio
:label=
"true"
>
{{$t('显示')}}
</el-radio>
<el-radio
:label=
"false"
>
{{$t('不显示')}}
</el-radio>
</el-radio-group>
</el-form-item>
</div>
</el-card>
<el-card
class=
"mt-10"
v-if=
"transport"
>
...
...
src/views/ecw/order/index.vue
View file @
2cc44653
...
...
@@ -124,6 +124,13 @@
<el-form-item
:label=
"$t('出货渠道')"
prop=
"channelId"
v-if=
"channelList.length"
>
<selector
:options=
"channelList"
:label-field=
"$l('name')"
value-field=
"channelId"
v-model=
"queryParams.channelId"
></selector>
</el-form-item>
<el-form-item
:label=
"$t('特需')"
prop=
"packageType"
>
<el-select
v-model=
"queryParams.packageTypeArr"
multiple
:placeholder=
"$t('请选择')"
clearable
>
<
template
v-for=
"item in getDictDatas(DICT_TYPE.ORDER_SPECIAL_NEEDS)"
>
<el-option
:label=
"$l(item, 'label')"
:value=
"item.value"
></el-option>
</
template
>
</el-select>
</el-form-item>
<el-form-item>
<el-button
type=
"primary"
icon=
"el-icon-search"
@
click=
"handleQuery"
:loading=
"loading"
>
{{$t('搜索')}}
</el-button>
<el-button
icon=
"el-icon-refresh"
@
click=
"resetQuery"
>
{{$t('重置')}}
</el-button>
...
...
@@ -561,6 +568,7 @@ import { getCurrencyPage } from "@/api/ecw/currency";
import
SplitRevoke
from
"
@/views/ecw/order/components/SplitRevoke
"
;
import
{
getChannelList
}
from
"
@/api/ecw/channel
"
;
import
Template
from
"
@/views/cms/template/index.vue
"
;
import
{
getDictDatas
}
from
"
@/utils/dict
"
;
export
default
{
name
:
"
EcwOrderIndex
"
,
components
:
{
...
...
@@ -602,7 +610,8 @@ export default {
// 查询参数
queryParams
:
{
page
:
1
,
rows
:
10
rows
:
10
,
packageTypeArr
:
[]
},
warehouseList
:[],
// tradeCityList: [],
...
...
@@ -734,6 +743,7 @@ export default {
}
},
methods
:
{
getDictDatas
,
// 取消拆单申请
splitRevoke
(
row
){
...
...
@@ -844,6 +854,10 @@ export default {
getList
()
{
this
.
loading
=
true
;
console
.
log
(
'
this.combinedQueryParams
'
,
this
.
combinedQueryParams
)
const
query
=
{...
this
.
combinedQueryParams
}
if
(
query
.
packageTypeArr
&&
query
.
packageTypeArr
.
length
){
query
.
packageType
=
query
.
packageTypeArr
.
join
(
'
,
'
)
}
let
func
=
getOrderPage
if
(
this
.
mine
){
func
=
getMyOrderPage
...
...
@@ -856,7 +870,7 @@ export default {
func
=
deptOrderPage
}
// 执行查询
func
(
this
.
combinedQueryParams
).
then
(
response
=>
{
func
(
query
).
then
(
response
=>
{
// 部分情况下,订单后面的操作下拉菜单会显示按钮,但是下来没有选项,在elTable组件更新的时候会导致渲染错误,所以要在更新渲染前清空一次list让table彻底重新渲染,避免部分更新导致异常
this
.
list
=
[]
this
.
$nextTick
(()
=>
{
...
...
@@ -890,7 +904,8 @@ export default {
resetQuery
()
{
this
.
queryParams
=
{
page
:
1
,
rows
:
10
rows
:
10
,
packageTypeArr
:
[]
}
this
.
noParam
.
value
=
''
this
.
prodParam
.
value
=
''
...
...
src/views/ecw/productBrank/Empower/components/showContacts.vue
0 → 100644
View file @
2cc44653
<
script
>
export
default
{
name
:
"
showContacts
"
,
props
:{
phoneString
:[
String
]
},
data
(){
return
{
phoneList
:[],
}
},
mounted
()
{
let
phone
=
this
.
phoneString
this
.
phoneList
=
phone
.
split
(
'
(;)
'
);
console
.
log
(
this
.
phoneList
)
}
}
</
script
>
<
template
>
<div>
<div
v-for=
"(item, index) in phoneList"
:key=
"index"
>
<div>
<span>
联系人
{{
index
+
1
}}
:
</span>
<span>
{{
item
.
split
(
'
(@)
'
)[
1
]
}}
</span>
</div>
<div>
<span>
联系电话
{{
index
+
1
}}
:
</span>
<span>
+
{{
item
.
split
(
'
(@)
'
)[
0
]
}}
</span>
</div>
</div>
</div>
</
template
>
<
style
scoped
lang=
"scss"
>
</
style
>
src/views/ecw/productBrank/Empower/index.vue
View file @
2cc44653
...
...
@@ -43,9 +43,10 @@
:label=
"$t('客户名称')"
>
</el-table-column>
<el-table-column
prop=
"phone"
:formatter=
"(row, column, cellValue) => '+' + cellValue"
:label=
"$t('客户号码')"
>
<template
v-slot=
"
{row}">
<show-contacts
:phone-string=
"row.phone"
></show-contacts>
</
template
>
</el-table-column>
<el-table-column
prop=
"feeScale"
...
...
@@ -78,9 +79,11 @@
:label=
"$t('客户名称')"
>
</el-table-column>
<el-table-column
prop=
"phone"
:formatter=
"(row, column, cellValue) => '+' + cellValue"
width=
"210"
:label=
"$t('客户号码')"
>
<
template
v-slot=
"{row}"
>
<show-contacts
:phone-string=
"row.phone"
></show-contacts>
</
template
>
</el-table-column>
<el-table-column
prop=
"fileUrl"
...
...
@@ -211,10 +214,12 @@ import DictSelector from "@/components/DictSelector"
import
{
DICT_TYPE
,
getDictDataLabel
}
from
'
@/utils/dict
'
import
FileUpload
from
'
@/components/FileUpload
'
import
{
parseTime
}
from
'
@/utils/ruoyi
'
import
ShowContacts
from
"
@/views/ecw/productBrank/Empower/components/showContacts.vue
"
;
export
default
{
name
:
"
Empower
"
,
components
:
{
ShowContacts
,
DictSelector
,
FileUpload
}
,
...
...
src/views/ecw/productPrice/index.vue
View file @
2cc44653
...
...
@@ -9,7 +9,12 @@
<el-form-item
:label=
"$t('商品类型')"
prop=
"typeId"
v-if=
"!$route.query.product_id"
>
<el-select
v-model=
"queryParams.typeId"
:placeholder=
"$t('选择商品类型')"
clearable
>
<el-option
v-for=
"type in typeList"
:key=
"type.id"
:label=
"type.titleZh"
:value=
"type.id"
/>
<el-option
v-for=
"type in typeList"
:key=
"type.id"
:label=
"$l(type, 'titleZh')"
:value=
"type.id"
/>
</el-select>
</el-form-item>
<el-form-item
:label=
"$t('商品属性')"
prop=
"typeId"
v-if=
"!$route.query.product_id"
>
<el-select
v-model=
"queryParams.attrId"
:placeholder=
"$t('选择商品类型')"
clearable
>
<el-option
v-for=
"attr in attrList"
:key=
"attr.id"
:label=
"$l(attr, 'attrName')"
:value=
"attr.id"
/>
</el-select>
</el-form-item>
<el-form-item
:label=
"$t('运输方式')"
prop=
"transportType"
v-if=
"!transportType"
>
...
...
@@ -562,7 +567,6 @@ export default {
this
.
$set
(
this
.
queryParams
,
'
transportType
'
,
+
this
.
transportType
)
}
}
this
.
getAttrList
();
}
}
,
watch
:{
...
...
@@ -622,6 +626,8 @@ export default {
this
.
getChannelList
()
this
.
getTypeList
()
this
.
getAttrList
();
//获取货币列表
this
.
requestCurrencyList
();
//获取单位列表
...
...
src/views/system/menu/index.vue
View file @
2cc44653
...
...
@@ -148,6 +148,11 @@
<el-input
v-model=
"form.redirect"
:placeholder=
"$t('请输入重定向地址')"
/>
</el-form-item>
</el-col>
<el-col
:span=
"12"
>
<el-form-item
:label=
"$t('角标字段')"
prop=
"redirect"
>
<el-input
v-model=
"form.badgeField"
:placeholder=
"$t('不清楚请留空,已设勿改')"
/>
</el-form-item>
</el-col>
</el-row>
</el-form>
<div
slot=
"footer"
class=
"dialog-footer"
>
...
...
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