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
c0213666
Commit
c0213666
authored
Mar 19, 2025
by
Smile
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
需求 127后台-集运-包裹列表
parent
cc28e43b
Changes
3
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
200 additions
and
47 deletions
+200
-47
processInstance.js
src/api/bpm/processInstance.js
+7
-0
detail.vue
src/views/ecw/cons/detail.vue
+131
-15
index.vue
src/views/ecw/cons/index.vue
+62
-32
No files found.
src/api/bpm/processInstance.js
View file @
c0213666
...
...
@@ -7,6 +7,13 @@ export function getMyProcessInstancePage(query) {
params
:
query
})
}
export
function
getProcessInstancePage
(
query
)
{
return
request
({
url
:
'
/bpm/process-instance/page
'
,
method
:
'
get
'
,
params
:
query
})
}
export
function
createProcessInstance
(
data
)
{
return
request
({
...
...
src/views/ecw/cons/detail.vue
View file @
c0213666
...
...
@@ -57,15 +57,92 @@
@
showWarehouseLogs=
"showWarehouseLogs"
></detail-cons-prod>
</el-tab-pane>
<!--
<el-tab-pane
:label=
"$t('订单动态')"
name=
"second"
>
-->
<!--
<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
:class=
"
{ red: !!activity.mark }">
{{
$l
(
activity
,
"
remarks
"
)
}}
</div>
-->
<!--
</el-timeline-item>
-->
<!--
</el-timeline>
-->
<!--
<el-result
v-else
icon=
"info "
:title=
"$t('暂无数据')"
:subTitle=
"$t('暂无订单动态数据')"
/>
-->
<!--
</el-tab-pane>
-->
<el-tab-pane
:label=
"$t('动态')"
name=
"second"
>
<el-timeline
v-if=
"cons.trackingRecord && cons.trackingRecord.length"
:reverse=
"true"
>
<el-timeline-item
v-for=
"(activity, index) in cons.trackingRecord"
:key=
"index"
:color=
"activity.color"
v-show=
"activity.isShow!==1"
:timestamp=
"parseTime(activity.trackingTime)"
>
<dict-tag
:type=
"DICT_TYPE.CONS_BUSINESS_NODE"
:value=
"$l(activity, 'businessNode')"
/><el-button
v-if=
"activity.businessNode===1"
@
click=
"showSignImage"
style=
"margin-left: 5px"
size=
"small"
type=
"primary"
>
签收图片
</el-button>
<div
:class=
"
{ red: !!activity.businessDescription }">
{{
$l
(
activity
,
"
businessDescription
"
)
}}
</div>
</el-timeline-item>
</el-timeline>
<el-result
v-else
icon=
"info "
:title=
"$t('暂无数据')"
:subTitle=
"$t('暂无订单动态数据')"
/>
</el-tab-pane>
<el-tab-pane
:label=
"$t('费用明细')"
name=
"three"
>
<el-table
:data=
"cons.feeList"
>
<el-table-column
:label=
"$t('费用类型')"
>
<template
slot-scope=
"
{ row }">
<dict-tag
:type=
"DICT_TYPE.FEE_TYPE"
:value=
"row.feeType"
/>
</
template
>
</el-table-column>
<el-table-column
:label=
"$t('金额')"
>
<
template
slot-scope=
"{ row }"
>
{{
row
.
fee
}}
</
template
>
</el-table-column>
<el-table-column
:label=
"$t('货币类型')"
>
<
template
slot-scope=
"{ row }"
>
{{
currencyMap
[
row
.
feeCurrency
]
}}
</
template
>
</el-table-column>
<el-table-column
:label=
"$t('付款类型')"
>
<
template
slot-scope=
"{ row }"
>
<dict-tag
:type=
"DICT_TYPE.PAYMENT_TYPE"
:value=
"row.payType"
/>
</
template
>
</el-table-column>
<el-table-column
:label=
"$t('备注')"
>
<
template
slot-scope=
"{ row }"
>
{{
row
.
remarks
}}
</
template
>
</el-table-column>
<el-table-column
:label=
"$t('转运订单号')"
>
<
template
slot-scope=
"scope"
>
<a
href=
"javascript:void(0);"
@
click=
"jumpOrderDetail()"
>
{{
cons
.
orderNo
}}
</a>
</
template
>
</el-table-column>
</el-table>
</el-tab-pane>
<el-tab-pane
:label=
"$t('日志')"
name=
"four"
>
</el-tab-pane>
<el-tab-pane
:label=
"$t('审批列表')"
name=
"five"
>
<el-table
:data=
"taskList"
>
<el-table-column
:label=
"$t('流程编号')"
align=
"center"
prop=
"id"
width=
"320"
/>
<el-table-column
:label=
"$t('流程名称')"
align=
"center"
prop=
"name"
/>
<el-table-column
:label=
"$t('业务编号')"
align=
"center"
prop=
"businessNo"
/>
<el-table-column
:label=
"$t('流程分类')"
align=
"center"
prop=
"category"
>
<
template
slot-scope=
"scope"
>
<dict-tag
:type=
"DICT_TYPE.BPM_MODEL_CATEGORY"
:value=
"scope.row.category"
/>
</
template
>
</el-table-column>
<el-table-column
:label=
"$t('当前审批节点')"
align=
"center"
prop=
"tasks"
>
<
template
slot-scope=
"scope"
>
<el-button
v-for=
"(task, taskIndex) in scope.row.tasks"
type=
"text"
@
click=
"handleFormDetail(task.id)"
:key=
"taskIndex"
>
<span>
{{
task
.
name
}}
</span>
</el-button>
</
template
>
</el-table-column>
<el-table-column
:label=
"$t('状态')"
align=
"center"
prop=
"status"
>
<
template
slot-scope=
"scope"
>
<dict-tag
:type=
"DICT_TYPE.BPM_PROCESS_INSTANCE_STATUS"
:value=
"scope.row.status"
/>
</
template
>
</el-table-column>
<el-table-column
:label=
"$t('结果')"
align=
"center"
prop=
"result"
>
<
template
slot-scope=
"scope"
>
<dict-tag
:type=
"DICT_TYPE.BPM_PROCESS_INSTANCE_RESULT"
:value=
"scope.row.result"
/>
</
template
>
</el-table-column>
<el-table-column
:label=
"$t('提交时间')"
align=
"center"
prop=
"createTime"
width=
"180"
>
<
template
slot-scope=
"scope"
>
<span>
{{
parseTime
(
scope
.
row
.
createTime
)
}}
</span>
</
template
>
</el-table-column>
<el-table-column
:label=
"$t('结束时间')"
align=
"center"
prop=
"createTime"
width=
"180"
>
<
template
slot-scope=
"scope"
>
<span>
{{
parseTime
(
scope
.
row
.
endTime
)
}}
</span>
</
template
>
</el-table-column>
</el-table>
</el-tab-pane>
<!-- <el-tab-pane :label="$t('操作日志')" name="five" v-if="checkPermi(['ecw:order:logs'])">-->
<!-- <el-table :data="logs" v-loading="logsLoading">-->
<!-- <el-table-column :label="$t('时间')" width="150">-->
...
...
@@ -103,31 +180,46 @@
<!-- </el-tab-pane>-->
</el-tabs>
</el-card>
<pack-detail
></pack-detail>
<el-dialog
:title=
"$t('签收图片')"
:visible.sync=
"mvShow"
:before-close=
"closeMv"
:close-on-click-modal=
"false"
>
<image-and-video-upload
readonly
:fileSize=
"50"
:isShowTip=
"true"
:value=
"cons.mediaUrl"
></image-and-video-upload>
</el-dialog>
<!-- <pack-detail ></pack-detail>-->
</div>
</template>
<
script
>
import
{
getCons
}
from
"
@/api/ecw/cons
"
;
import
{
getDictDatas
,
DICT_TYPE
,
getDictData
}
from
"
@/utils/dict
"
import
CheckDetailProd
from
"
@/views/ecw/order/components/CheckDetailProd.vue
"
;
import
DetailConsProd
from
"
@/views/ecw/cons/DetailConsProd.vue
"
;
import
PackHistory
from
"
@/views/ecw/order/components/PackHistory.vue
"
;
import
PackDetail
from
"
@/views/ecw/cons/PackDetail.vue
"
;
import
ImageAndVideoUpload
from
"
@/components/ImageAndVideoUpload/index.vue
"
;
import
Template
from
"
@/views/cms/template/index.vue
"
;
import
{
getCurrencyList
}
from
"
@/api/ecw/currency
"
;
import
{
getCopyTaskPage
}
from
"
@/api/bpm/task
"
;
import
{
getProcessInstancePage
}
from
"
@/api/bpm/processInstance
"
;
export
default
{
name
:
"
EcwConsDetail
"
,
props
:
{},
components
:
{
PackDetail
,
PackHistory
,
DetailConsProd
,
CheckDetail
Prod
},
components
:
{
Template
,
ImageAndVideoUpload
,
DetailCons
Prod
},
data
()
{
return
{
cons
:
null
,
type
:
1
,
activeName
:
"
first
"
,
mvShow
:
false
,
taskList
:
[],
taskTotal
:
0
,
}
},
watch
:
{},
computed
:
{
currencyMap
()
{
let
map
=
{}
this
.
currencyList
.
forEach
((
item
)
=>
{
map
[
item
.
id
]
=
this
.
$l
(
item
,
"
title
"
)
})
return
map
},
getDictData
()
{
return
(
type
,
value
)
=>
getDictData
(
type
,
value
)
||
{}
},
...
...
@@ -136,12 +228,20 @@ export default {
}
},
created
()
{
getCurrencyList
().
then
((
res
)
=>
(
this
.
currencyList
=
res
.
data
))
if
(
this
.
$route
.
query
.
consId
)
{
this
.
consId
=
this
.
$route
.
query
.
consId
this
.
getCons
()
}
},
methods
:
{
/* 跳转订单详情 */
jumpOrderDetail
()
{
this
.
$router
.
push
({
path
:
"
/order/detail
"
,
query
:
{
orderId
:
this
.
cons
.
orderId
},
});
},
// 显示入仓记录
showWarehouseLogs
(
row
,
type
)
{
this
.
type
=
type
...
...
@@ -150,9 +250,25 @@ export default {
getCons
()
{
getCons
(
this
.
consId
).
then
(
res
=>
{
this
.
cons
=
res
.
data
console
.
log
(
this
.
cons
)
if
(
this
.
cons
.
trackingRecord
&&
this
.
cons
.
trackingRecord
.
length
){
this
.
cons
.
trackingRecord
[
this
.
cons
.
trackingRecord
.
length
-
1
].
color
=
'
#0bbd87
'
;
}
this
.
getTaskList
();
})
},
getTaskList
(){
getProcessInstancePage
({
businessNo
:
this
.
cons
.
consNum
}).
then
(
response
=>
{
this
.
taskList
=
response
.
data
.
list
;
this
.
taskTotal
=
response
.
data
.
total
;
this
.
loading
=
false
;
});
},
closeMv
(){
this
.
mvShow
=
false
},
showSignImage
(){
this
.
mvShow
=
true
}
}
}
</
script
>
...
...
src/views/ecw/cons/index.vue
View file @
c0213666
...
...
@@ -136,20 +136,27 @@
<dict-tag
:type=
"DICT_TYPE.ECW_TRANSPORT_TYPE"
:value=
"scope.row.transportId"
/>
</
template
>
</el-table-column>
<el-table-column
:label=
"$t('在仓时长')"
align=
"center"
prop=
"inWarehouseDays"
></el-table-column>
<el-table-column
:label=
"$t('动态')"
align=
"center"
>
<
template
slot-scope=
"scope"
>
<dict-tag
:type=
"DICT_TYPE.CONS_BUSINESS_NODE"
:value=
"scope.row.businessNode"
/>
</
template
>
</el-table-column>
<el-table-column
:label=
"$t('最新跟进状态')"
align=
"center"
>
<
template
slot-scope=
"scope"
>
<dict-tag
:type=
"DICT_TYPE.ECW_CONS_FOLLOWUP_STATUS"
:value=
"scope.row.followStatus"
/>
</
template
>
</el-table-column>
<el-table-column
label=
"最新跟进时间"
align=
"center"
>
<
template
slot-scope=
"scope"
>
<span>
{{
parseTime
(
scope
.
row
.
tracking
Time
)
}}
</span>
<span>
{{
parseTime
(
scope
.
row
.
follow
Time
)
}}
</span>
</
template
>
</el-table-column>
<el-table-column
label=
"最新跟进备注"
align=
"center"
prop=
"followContent"
/>
<el-table-column
label=
"箱数"
align=
"center"
prop=
"sumQuantity"
/>
<el-table-column
label=
"填单商品"
align=
"center"
>
<
template
slot-scope=
"scope"
>
<span
v-html=
"getGoodsName(scope.row.consItemList)"
></span>
<span
v-html=
"getGoodsName(scope.row.consItem
VO
List)"
></span>
</
template
>
</el-table-column>
<el-table-column
label=
"验货数据"
align=
"center"
>
...
...
@@ -193,7 +200,7 @@
</el-table-column>
<el-table-column
:label=
"$t('验货')"
align=
"center"
>
<
template
slot-scope=
"scope"
>
<template
v-if=
"scope.row.needInspect==='0'"
>
<template
v-if=
"scope.row.needInspect==='0'
||scope.row.needInspect===null
"
>
{{
$t
(
'
未申请
'
)
}}
</
template
>
<
template
v-else
>
...
...
@@ -233,58 +240,66 @@
<el-dropdown>
<el-button
type=
"text"
>
{{
$t
(
"
操作
"
)
}}
</el-button>
<el-dropdown-menu
slot=
"dropdown"
>
<el-dropdown-item
size=
"mini"
type=
"text"
icon=
"el-icon-edit"
@
click.native=
"handleUpdate(scope.row)"
>
修改
</el-dropdown-item>
<el-dropdown-item
size=
"mini"
type=
"text"
icon=
"el-icon-edit"
@
click.native=
"handleSign(scope.row)"
>
签收
<el-dropdown-item
@
click.native=
"handleUpdate(scope.row)"
>
修改
</el-dropdown-item>
<el-dropdown-item
size=
"mini"
type=
"text"
icon=
"el-icon-delete"
@
click.native=
"handleDelete(scope.row)"
v-hasPermi=
"['ecw:cons:delete']"
>
删除
</el-dropdown-item>
<el-dropdown-item
size=
"mini"
type=
"text"
icon=
"el-icon-edit"
@
click.native=
"transmutation(scope.row)"
>
{{
$t
(
'
转异
'
)
}}
<el-dropdown-item
@
click.native=
"handleInspect(scope.row)"
>
{{
$t
(
'
验货
'
)
}}
</el-dropdown-item>
<el-dropdown-item
@
click.native=
"transmutation(scope.row)"
>
{{
$t
(
'
转异
'
)
}}
</el-dropdown-item>
<el-dropdown-item
size=
"mini"
type=
"text"
icon=
"el-icon-edit"
@
click.native=
"specialNeedsCons(scope.row)"
>
{{
$t
(
'
特需
'
)
}}
<el-dropdown-item
@
click.native=
"specialNeedsCons(scope.row)"
>
{{
$t
(
'
特需
'
)
}}
</el-dropdown-item>
<el-dropdown-item
size=
"mini"
type=
"text"
icon=
"el-icon-edit"
@
click.native=
"specialNeedsConsLook(scope.row)"
>
<el-dropdown-item
@
click.native=
"specialNeedsConsLook(scope.row)"
>
{{
$t
(
'
特需查看
'
)
}}
</el-dropdown-item>
<el-dropdown-item
size=
"mini"
type=
"text"
icon=
"el-icon-edit"
@
click.native=
"feeApplication(scope.row)"
>
<el-dropdown-item
@
click.native=
"feeApplication(scope.row)"
>
{{
$t
(
'
费用申请
'
)
}}
</el-dropdown-item>
<el-dropdown-item
size=
"mini"
type=
"text"
icon=
"el-icon-edit"
@
click.native=
"consFollowup(scope.row)"
>
{{
$t
(
'
跟进
'
)
}}
<el-dropdown-item
@
click.native=
"consFollowup(scope.row)"
>
{{
$t
(
'
跟进
'
)
}}
</el-dropdown-item>
<el-dropdown-item
size=
"mini"
type=
"text"
icon=
"el-icon-edit"
@
click.native=
"exceptionHandling(scope.row)"
>
{{
$t
(
'
处理异常
'
)
}}
</el-dropdown-item>
<!-- 退仓 -->
<el-dropdown-item
size=
"mini"
type=
"text"
icon=
"el-icon-edit"
<el-dropdown-item
@
click.native=
"exceptionHandling(scope.row)"
>
{{
$t
(
'
处理异常
'
)
}}
</el-dropdown-item>
<el-dropdown-item
@
click.native=
"
show = true
show
Exit
= true
consId = scope.row.id
"
v-hasPermi=
"['ecw:order:warehouse_exit']"
>
{{
$t
(
"
退仓
"
)
}}
>
{{
$t
(
"
撤出包裹
"
)
}}
</el-dropdown-item>
<el-dropdown-item
size=
"mini"
type=
"text"
icon=
"el-icon-edit"
<el-dropdown-item
@
click.native=
"
show
ReturnWarehouse
= true
show
Add
= true
consId = scope.row.id
"
v-hasPermi=
"['ecw:order:warehouse_exit']"
>
{{
$t
(
"
处理退仓
"
)
}}
>
{{
$t
(
"
追加包裹
"
)
}}
</el-dropdown-item>
<el-dropdown-item
size=
"mini"
type=
"text"
icon=
"el-icon-edit"
@
click.native=
"
showExit = true
</el-dropdown-menu>
</el-dropdown>
<el-dropdown>
<el-button
type=
"text"
>
{{
$t
(
"
仓库
"
)
}}
</el-button>
<el-dropdown-menu
slot=
"dropdown"
>
<el-dropdown-item
@
click.native=
"handleSign(scope.row)"
>
签收
</el-dropdown-item>
<!-- 退仓 -->
<el-dropdown-item
@
click.native=
"
show = true
consId = scope.row.id
"
v-hasPermi=
"['ecw:order:warehouse_exit']"
>
{{
$t
(
"
撤出包裹
"
)
}}
v-hasPermi=
"['ecw:order:warehouse_exit']"
>
{{
$t
(
"
退仓
"
)
}}
</el-dropdown-item>
<el-dropdown-item
size=
"mini"
type=
"text"
icon=
"el-icon-edit"
@
click.native=
"
show
Add
= true
<el-dropdown-item
@
click.native=
"
show
ReturnWarehouse
= true
consId = scope.row.id
"
v-hasPermi=
"['ecw:order:warehouse_exit']"
>
{{
$t
(
"
追加包裹
"
)
}}
v-hasPermi=
"['ecw:order:warehouse_exit']"
>
{{
$t
(
"
处理退仓
"
)
}}
</el-dropdown-item>
</el-dropdown-menu>
</el-dropdown>
...
...
@@ -295,8 +310,13 @@
<pagination
v-show=
"total > 0"
:total=
"total"
:page.sync=
"queryParams.page"
:limit.sync=
"queryParams.row"
@
pagination=
"getList"
/>
<el-dialog
:title=
"inspectTitle"
:visible.sync=
"open"
width=
"500px"
append-to-body
>
<el-dialog
:title=
"inspectTitle"
:visible.sync=
"openInspect"
width=
"500px"
append-to-body
>
<div
style=
"margin-bottom: 5px"
>
{{ $t('备注:') }}
</div>
<el-input
v-model=
"this.inspectRemark"
type=
"textarea"
:rows=
"3"
placeholder=
"请输入"
/>
<div
slot=
"footer"
class=
"dialog-footer"
>
<el-button
type=
"primary"
@
click=
"handleInspectSubmit"
>
确 定
</el-button>
<el-button
@
click=
"openInspect = false"
>
取 消
</el-button>
</div>
</el-dialog>
<!-- 对话框(添加 / 修改) -->
<el-dialog
:title=
"title"
:visible.sync=
"open"
width=
"500px"
append-to-body
>
...
...
@@ -417,10 +437,12 @@ import ConsWithdrawalDeal from "@/views/ecw/cons/consWithdrawalDeal.vue";
import
{
DICT_TYPE
}
from
"
@/utils/dict
"
;
import
{
arrryToKeyedObjectBy
}
from
"
@/utils
"
;
import
Selector
from
"
@/components/Selector/index.vue
"
;
import
Label
from
"
@/views/cms/label/index.vue
"
;
export
default
{
name
:
"
Cons
"
,
components
:
{
Label
,
Selector
,
ConsWithdrawal
,
ConsWithdrawalExit
,
...
...
@@ -468,6 +490,8 @@ export default {
},
consIds
:
[],
inspectTitle
:
null
,
inspectRemark
:
null
,
openInspect
:
false
,
consList
:
[],
dateRangeWatEtime
:
[],
warehouseList
:
[],
...
...
@@ -600,7 +624,7 @@ export default {
obj
[
field
]
=
obj
[
field
].
replace
(
/
\s
+/g
,
""
)
},
getGoodsName
(
val
)
{
if
(
!
va
l
||
val
.
length
===
0
)
{
if
(
val
==
nul
l
||
val
.
length
===
0
)
{
return
null
}
else
{
return
val
.
map
((
item
,
index
)
=>
`
${
index
+
1
}
.
${
item
.
prodName
}
*
${
item
.
quantity
}
`
).
join
(
'
<br>
'
);
...
...
@@ -787,6 +811,12 @@ export default {
}
});
},
/** 修改按钮操作 */
handleInspect
(
row
)
{
const
id
=
row
.
id
;
this
.
inspectTitle
=
row
.
consNum
+
"
-
"
+
row
.
customerNumber
+
"
-
"
+
this
.
$t
(
"
包裹详情
"
)
this
.
openInspect
=
true
},
/** 签收按钮操作 */
handleSign
(
row
)
{
debugger
...
...
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