Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
B
biz-trina5-app
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
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
贺双
biz-trina5-app
Commits
c02bee8e
Commit
c02bee8e
authored
May 19, 2025
by
贺世双
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
新增回单界面
parent
90f65b22
Changes
7
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
7 changed files
with
700 additions
and
237 deletions
+700
-237
apiList.js
api/apiList.js
+8
-6
orderPodItem.vue
components/orderPodItem/orderPodItem.vue
+147
-0
pages.json
pages.json
+2
-2
order.vue
pages/order/order.vue
+0
-4
order_pod.vue
pages/order_pod/order_pod.vue
+135
-20
orderAllPodSign.vue
subpkg/orderAllPodSign/orderAllPodSign.vue
+408
-0
transferChange.vue
subpkg/transferChange/transferChange.vue
+0
-205
No files found.
api/apiList.js
View file @
c02bee8e
...
...
@@ -113,12 +113,14 @@ export function getMassShipmentTruckList(data) {
return
Request
(
`/api/entry/{mini}/m-action/getMassShipmentTruckList`
,
data
);
}
//查询运单途径站点
export
function
findShipmentStops
(
data
)
{
return
Request
(
`/api/entry/{mini}/m-action/biz.tm.ShipmentStop.tm_shipmentstop_m_carrier.paging`
,
data
);
//查询回单未签收信息
export
function
getOrderPodList
(
data
)
{
return
Request
(
`/api/entry/{mini}/m-action/getOrderPodList`
,
data
);
}
//查询回单已签收信息
export
function
getOrderPodSingList
(
data
)
{
return
Request
(
`/api/entry/{mini}/m-action/getOrderPodSingList`
,
data
);
}
// 查询货量明细
...
...
components/orderPodItem/orderPodItem.vue
0 → 100644
View file @
c02bee8e
<
template
>
<view
class=
"orderPodItem box_shadow_card"
>
<view
class=
"shipment-header flex_sb"
style=
"padding: 28rpx 24rpx 0;"
>
<view
class=
"consumer_code flex_center"
>
<text
selectable
>
回单号:
{{
propData
[
'pod_no'
]
||
''
}}
</text>
</view>
<view
:class=
"propData.execute_bu == null ? 'shipment-state' : 'shipment-state shipmenting'"
>
{{
propData
.
execute_bu
}}
</view>
</view>
<u-line
color=
"#E5E5E5"
margin=
"20rpx 0"
/>
<view
style=
"padding: 0 24rpx 32rpx;"
>
<view
class=
" flex_sb"
>
<view
style=
"width: 50%;float: left;"
>
<bs-customCell
label=
"回单类型 :"
:value=
"propData.pod_type_label"
labelCol=
"5"
wrapCol=
"6"
/>
</view>
<view
style=
"width: 50%;float: left;"
>
<bs-customCell
label=
"承运商 :"
:value=
"propData.servprov_name"
labelCol=
"4"
wrapCol=
"8"
/>
</view>
</view>
<view
class=
" flex_sb"
>
<view
style=
"width: 50%;float: left;"
>
<bs-customCell
label=
"始发地 :"
:value=
"propData.source_location_name"
labelCol=
"4.5"
wrapCol=
"6"
/>
</view>
<view
style=
"width: 50%;float: left;"
>
<bs-customCell
label=
"目的地 :"
:value=
"propData.dest_location_name"
labelCol=
"4.5"
wrapCol=
"6"
/>
</view>
</view>
<bs-customCell
label=
"订舱/托书号 :"
:value=
"propData.sp__booking_no"
labelCol=
"3.5"
wrapCol=
"6"
/>
<bs-customCell
label=
"运单号 :"
:value=
"propData.shipment_no"
labelCol=
"2"
wrapCol=
"6"
/>
<bs-customCell
label=
"车牌号 :"
:value=
"propData.truck_no"
labelCol=
"2"
wrapCol=
"6"
/>
<bs-customCell
label=
"回单数量 :"
:value=
"propData.pod_count"
labelCol=
"2.5"
wrapCol=
"6"
/>
</view>
<view
class=
"flex_cen flex_center orderItemButtonGroup"
v-if=
"propData.sign_status != '正常签收' && propData.sign_status != '异常签收'"
>
<button
class=
"flex_cen flex_center"
@
click=
"onDetailPodSign()"
>
明细上传
</button>
<button
class=
"flex_cen flex_center"
@
click=
"onAllPodSign()"
>
整单上传
</button>
</view>
</view>
</
template
>
<
script
>
import
{
formatGMT
}
from
'../../utils/util'
export
default
{
name
:
'orderPodItem'
,
options
:
{
styleIsolation
:
'shared'
},
props
:
{
propData
:
{
type
:
Object
,
default
:
{}
},
},
methods
:
{
//跳转明细签收界面
onDetailPodSign
()
{
getApp
().
globalData
.
changeShippingDate
=
this
.
propData
uni
.
navigateTo
({
url
:
`/subpkg/changeShippingDate/changeShippingDate`
,
})
},
//跳转整单签收界面
onAllPodSign
()
{
getApp
().
globalData
.
orderAllPodSign
=
this
.
propData
uni
.
navigateTo
({
url
:
`/subpkg/orderAllPodSign/orderAllPodSign`
,
})
},
},
}
</
script
>
<
style
lang=
"scss"
>
.orderPodItem
{
position
:
relative
;
margin
:
24rpx
24rpx
0
;
padding
:
0
;
padding-bottom
:
32rpx
;
&
/
deep
/
.custom-cell-row
{
margin-top
:
20rpx
;
}
.consumer_code
{
line-height
:
40rpx
;
text-shadow
:
1rpx
3rpx
12rpx
rgba
(
0
,
0
,
0
,
0
.04
);
}
.shipment-state
{
font-size
:
24rpx
;
color
:
#F7A64A
;
line-height
:
33rpx
;
padding
:
6rpx
24rpx
;
border-radius
:
8rpx
;
background
:
rgba
(
247
,
166
,
74
,
.1
);
text-shadow
:
1rpx
3rpx
12rpx
rgba
(
0
,
0
,
0
,
0
.04
);
}
.shipmenting
{
color
:
#66CCCC
;
background
:
rgba
(
61
,
204
,
185
,
.1
);
}
.start-station
,
.end-station
{
margin
:
20rpx
0
;
font-size
:
30rpx
;
font-weight
:
bolder
;
.start-icon
,
.end-icon
{
width
:
40rpx
;
height
:
40rpx
;
font-size
:
24rpx
;
padding
:
8rpx
;
border-radius
:
50%
;
color
:
#FFFFFF
;
background-color
:
#2E75E6
;
margin-right
:
20rpx
;
}
.end-icon
{
background-color
:
#F7A64A
;
}
}
.orderItemButtonGroup
{
justify-content
:
space-between
;
padding
:
0
24rpx
;
flex-wrap
:
wrap
;
button
{
font-size
:
32rpx
;
font-weight
:
500
;
color
:
#FFFFFF
;
width
:
315rpx
;
height
:
80rpx
;
margin
:
0
;
border-radius
:
44rpx
;
background
:
linear-gradient
(
90deg
,
#2E75E6
0%
,
#5E58EE
100%
);
box-shadow
:
1rpx
3rpx
12rpx
0rpx
rgba
(
0
,
0
,
0
,
0
.04
);
}
}
}
</
style
>
\ No newline at end of file
pages.json
View file @
c02bee8e
...
...
@@ -71,9 +71,9 @@
"enablePullDownRefresh"
:
false
}
},
{
"path"
:
"
transferChange/transferChange
"
,
"path"
:
"
orderAllPodSign/orderAllPodSign
"
,
"style"
:
{
"navigationBarTitleText"
:
"
中转换车
"
,
"navigationBarTitleText"
:
"
整单签收
"
,
"enablePullDownRefresh"
:
false
}
},
{
...
...
pages/order/order.vue
View file @
c02bee8e
...
...
@@ -54,8 +54,6 @@
let
reqData
=
{
"args"
:
{
pageNum
,
pageSize
}
}
console
.
log
(
'2222============='
)
console
.
log
(
reqData
)
if
(
this
.
searchValue
){
reqData
.
args
.
restrictions
=
[{
"field"
:
'order_base_no'
,
...
...
@@ -84,8 +82,6 @@
</
script
>
<
style
lang=
"scss"
>
.orderList
{
.search-input
{
width
:
100%
;
...
...
pages/order_pod/order_pod.vue
View file @
c02bee8e
<
template
>
<view
class=
"orderList content_box"
>
<orderItem
v-for=
"( order, index ) in orderList"
:propData=
"order"
:key=
"index"
/>
<view
class=
"orderPod content_box"
>
<view
class=
"search-input flex_center"
>
<u-search
searchIconSize=
"50"
searchIconColor=
"#FFFFFF"
placeholderColor=
'#FFFFFF'
color=
"#FFFFFF"
:showAction=
"false"
:placeholder=
"'请输入回单号'"
v-model=
"searchValue"
@
clickIcon=
"onSearch"
@
search=
"onSearch"
@
clear=
"onSearch"
/>
</view>
<view
class=
"tabs-outer"
>
<view
class=
"tabs flex"
>
<text
:class=
"['tab',
{'active' : tabActive==='空'}]" @click="switchTab('空')">未回单
</text>
<text
:class=
"['tab',
{'active' : tabActive==='非空'}]" @click="switchTab('非空')">已回单
</text>
</view>
</view>
<view
class=
"select-options"
>
<orderPodItem
v-for=
"( order, index ) in orderPod"
:propData=
"order"
:key=
"index"
/>
</view>
<!-- 空状态 -->
<view
class=
"emptyImg flex_col"
v-if=
"!order
List
.length"
>
<view
class=
"emptyImg flex_col"
v-if=
"!order
Pod
.length"
>
<image
mode=
"aspectFit"
src=
"../../static/img/empty/shipmentEmpty.png"
/>
<text
class=
"empty-text"
>
暂时没有
订
单
</text>
<text
class=
"empty-text"
>
暂时没有
回
单
</text>
</view>
</view>
</
template
>
<
script
>
import
{
getOrder
Base
List
}
from
'../../api/apiList.js'
import
{
getOrder
PodList
,
getOrderPodSing
List
}
from
'../../api/apiList.js'
export
default
{
data
()
{
return
{
pageNum
:
1
,
//页码
pageSize
:
10
,
//每页条数
order
List
:
[],
order
Pod
:
[],
//回单数据
loadMore
:
true
,
//加载更多
searchValue
:
""
,
//搜索值
tabActive
:
"空"
,
};
},
onLoad
()
{
/*
onLoad() {
this.initData()
},*/
onShow
()
{
this
.
pageNum
=
1
this
.
orderPod
=
[]
this
.
initData
()
},
//下拉刷新
onPullDownRefresh
()
{
this
.
pageNum
=
1
this
.
order
List
=
[]
this
.
order
Pod
=
[]
this
.
initData
()
},
// 触底加载更多
...
...
@@ -36,28 +56,94 @@
this
.
loadMore
=
false
}
},
methods
:{
initData
(){
const
{
pageNum
,
pageSize
}
=
this
let
d
ata
=
{
let
reqD
ata
=
{
"args"
:
{
pageNum
,
pageSize
}
}
getOrderBaseList
(
data
).
then
(
res
=>
{
uni
.
stopPullDownRefresh
()
const
data
=
res
.
list
if
(
data
.
length
>
0
)
{
this
.
orderList
=
this
.
orderList
.
concat
(
data
)
this
.
pageNum
+=
1
this
.
loadMore
=
true
}
})
}
if
(
this
.
searchValue
){
reqData
.
args
.
restrictions
=
[{
"field"
:
'pod_no'
,
"type"
:
"like"
,
//EQ精准匹配,LK模糊匹配
"value"
:
this
.
searchValue
}]
}
if
(
this
.
tabActive
==
'空'
)
{
getOrderPodList
(
reqData
).
then
(
res
=>
{
uni
.
stopPullDownRefresh
()
const
data
=
res
.
data
.
data
.
datas
if
(
data
.
length
>
0
)
{
this
.
orderPod
=
this
.
orderPod
.
concat
(
data
)
this
.
pageNum
+=
1
this
.
loadMore
=
true
}
})
}
else
{
getOrderPodSingList
(
reqData
).
then
(
res
=>
{
uni
.
stopPullDownRefresh
()
const
data
=
res
.
data
.
data
.
datas
if
(
data
.
length
>
0
)
{
this
.
orderPod
=
this
.
orderPod
.
concat
(
data
)
this
.
pageNum
+=
1
this
.
loadMore
=
true
}
})
}
},
//初始化数据
switchTab
(
key
)
{
if
(
this
.
tabActive
!==
key
)
{
uni
.
pageScrollTo
({
scrollTop
:
0
})
this
.
tabActive
=
key
this
.
onReload
()
}
},
// 刷新页面
onReload
()
{
this
.
orderPod
=
[]
this
.
pageNum
=
1
this
.
initData
()
},
// 搜索功能
onSearch
()
{
this
.
pageNum
=
1
this
.
orderPod
=
[]
this
.
initData
()
},
}
}
</
script
>
<
style
lang=
"scss"
>
.orderList
{
.orderPod
{
.search-input
{
width
:
100%
;
top
:
0
;
z-index
:
999
;
height
:
100rpx
;
background
:
linear-gradient
(
to
bottom
,
#005BB5
0%
,
#005BB5
50%
);
/
deep
/
.u-search__content
{
height
:
80rpx
;
margin
:
24rpx
;
background-color
:
rgba
(
240
,
240
,
240
,
.5
)
!
important
;
.u-search__content__input
{
width
:
50rpx
;
background-color
:
transparent
!
important
;
}
}
}
/
deep
/
.select-options
{
//margin-top: 35px
}
.emptyImg
{
position
:
absolute
;
left
:
50%
;
...
...
@@ -69,5 +155,34 @@
text-align
:
center
;
}
}
.tabs-outer
{
background
:
#FAFAFA
;
position
:
-
webkit-sticky
;
position
:
sticky
;
top
:
0
;
z-index
:
1
;
.tabs
{
color
:
#8C8C8C
;
font-weight
:
400
;
margin
:
24rpx
24rpx
0
;
background
:
#FFFFFF
;
border-radius
:
40rpx
;
justify-content
:
space-between
;
align-items
:
center
;
line-height
:
48rpx
;
.tab
{
padding
:
14rpx
95rpx
;
border-radius
:
40rpx
;
}
.active
{
font-weight
:
500
;
color
:
#2E75E6
;
background
:
rgba
(
46
,
117
,
230
,
0
.15
);
border-radius
:
40rpx
;
}
}
}
}
</
style
>
subpkg/orderAllPodSign/orderAllPodSign.vue
0 → 100644
View file @
c02bee8e
This diff is collapsed.
Click to expand it.
subpkg/transferChange/transferChange.vue
deleted
100644 → 0
View file @
90f65b22
<
template
>
<view
class=
"transferChange content_box "
>
<u-toast
ref=
"uToast"
/>
<bs-pageHeader-orderNo
:shipmentNo=
"shipmentNo"
/>
<!-- 中转明细-->
<view
class=
"transfer-datail"
>
<u--form
:model=
"formData"
:rules=
"rules"
ref=
"myForm"
errorType=
'none'
>
<u-form-item
prop=
"stop"
required
label=
"中转地址"
labelWidth=
"30%"
:borderBottom=
"isTransfer"
>
<view
@
click=
"onNavTransferDetail"
>
<u-input
border=
"none"
readonly
inputAlign=
"left"
placeholder=
"选择中转地址"
placeholderClass=
"input-tip"
:value=
"transferAddress.name"
/>
</view>
<u-icon
slot=
"right"
name=
"arrow-right"
@
click=
"onNavTransferDetail"
/>
</u-form-item>
<!-- 中转换车显示司机信息 -->
<template
v-if=
"isTransfer"
>
<u-form-item
prop=
"truckName"
required
label=
"车牌号"
labelWidth=
"30%"
borderBottom
>
<u-input
border=
"none"
required
inputAlign=
"left"
placeholder=
"输入车牌号"
placeholderClass=
"input-tip"
v-model=
"formData.truckName"
holdKeyboard
/>
</u-form-item>
<u-form-item
prop=
"driver1Name"
required
label=
"司机姓名"
labelWidth=
"30%"
borderBottom
>
<u-input
border=
"none"
required
inputAlign=
"left"
placeholder=
"输入姓名"
placeholderClass=
"input-tip"
v-model=
"formData.driver1Name"
holdKeyboard
/>
</u-form-item>
<u-form-item
prop=
"driver1Tel"
required
label=
"司机电话"
labelWidth=
"30%"
>
<u-input
border=
"none"
required
type=
"number"
inputAlign=
"left"
placeholder=
"输入手机号"
placeholderClass=
"input-tip"
v-model=
"formData.driver1Tel"
holdKeyboard
/>
</u-form-item>
</
template
>
</u--form>
</view>
<!-- 底部按钮 -->
<view
class=
"operation-btn flex_sb"
>
<button
class=
"backBtn common_btn"
@
click=
"onNavBack"
>
返回
</button>
<button
class=
"submitBtn common_btn"
@
click=
"onSubmitForm"
>
确认
</button>
</view>
</view>
</template>
<
script
>
import
{
reportInfo
,
searchTransferAddress
}
from
'../../api/apiList'
import
{
formatGMT
}
from
'../../utils/util'
const
getUserLocation
=
require
(
'../../mixins/getUserLocation'
)
const
app
=
getApp
()
export
default
{
mixins
:
[
getUserLocation
],
data
()
{
return
{
formData
:
{
stop
:
""
,
//中转地址id
driver1Name
:
""
,
//司机姓名
driver1Tel
:
""
,
//司机手机号
truckName
:
""
,
//车牌号
},
rules
:
{
'stop'
:
{
required
:
true
},
'driver1Name'
:
{
required
:
true
},
'driver1Tel'
:
{
required
:
true
},
'truckName'
:
{
required
:
true
}
},
isTransfer
:
false
,
//是否为中转换车
action
:
''
,
//当前操作类型
selectedIds
:
[],
//当前运单id
shipmentNo
:
''
,
//运单号
transferAddress
:
{},
//中转地址
}
},
onLoad
:
function
(
options
)
{
const
data
=
JSON
.
parse
(
options
.
data
)
const
isTransfer
=
data
.
action
===
'transferAndChangeTruck'
//判断是否为中转换车
this
.
selectedIds
=
[
data
.
selectedId
]
this
.
action
=
data
.
action
this
.
isTransfer
=
isTransfer
this
.
shipmentNo
=
app
.
globalData
.
shipmentInfo
.
shipmentNo
const
title
=
isTransfer
?
'中转换车'
:
'中转卸货'
this
.
setNavTitle
(
title
)
this
.
getUserSetting
()
},
onShow
()
{
//自定义分配信息
const
{
transferAddress
}
=
app
.
globalData
this
.
formData
.
stop
=
transferAddress
.
id
this
.
transferAddress
=
transferAddress
},
methods
:
{
//设置页面头部标题
setNavTitle
(
title
)
{
uni
.
setNavigationBarTitle
({
title
:
title
,
})
},
// 提交表单数据
onSubmitForm
()
{
this
.
$refs
.
myForm
.
validate
().
then
(
res
=>
{
const
{
stop
,
driver1Name
,
driver1Tel
,
truckName
}
=
this
.
formData
const
{
longitude
,
latitude
,
address
,
time
}
=
this
.
locationInfo
const
{
isTransfer
,
action
}
=
this
let
baseData
=
{
"aux"
:
{
stop
,
longitude
,
latitude
,
address
,
time
,
eventSource
:
'CarrierApp'
},
'args'
:
{
"selectedIds"
:
this
.
selectedIds
}
}
if
(
isTransfer
)
{
baseData
.
aux
=
{
...
baseData
.
aux
,
driver1Name
,
driver1Tel
,
truckName
,
}
}
reportInfo
(
action
,
baseData
).
then
(
res
=>
{
if
(
res
.
data
.
messageType
===
'success'
)
{
uni
.
showToast
({
title
:
'操作成功'
,
duration
:
3000
})
setTimeout
(()
=>
{
uni
.
navigateBack
()
},
1500
)
}
})
}).
catch
(
errors
=>
{
this
.
$refs
.
uToast
.
show
({
message
:
'请完善必填信息'
,
})
})
},
//返回上一级页面
onNavBack
()
{
uni
.
navigateBack
()
},
//跳转地址详情
onNavTransferDetail
()
{
const
title
=
this
.
isTransfer
?
'中转换车'
:
'中转卸货'
const
data
=
{
title
,
id
:
this
.
formData
.
stop
}
uni
.
navigateTo
({
url
:
`/subpkg/transferAddressDetail/transferAddressDetail?data=
${
JSON
.
stringify
(
data
)}
`
,
})
}
}
}
</
script
>
<
style
lang=
"scss"
>
.transferChange
{
.location
{
.t-icon-current-location
{
min-width
:
50rpx
;
min-height
:
50rpx
;
}
.t-icon-location
{
min-width
:
45rpx
;
min-height
:
45rpx
;
}
.address
{
margin
:
0
20rpx
}
}
/
deep
/
.transfer-datail
{
padding
:
0
40rpx
;
background-color
:
#ffffff
;
margin
:
25rpx
0
;
.input-tip
{
font-size
:
28rpx
;
color
:
#BFBFBF
;
}
.u-form-item__body__left__content__label
{
color
:
#8C8C8C
;
font-size
:
28rpx
;
}
.u-form-item__body
{
padding
:
30rpx
0
;
}
.u-icon
{
margin-left
:
20rpx
;
}
}
.operation-btn
{
min-height
:
500rpx
;
}
/
deep
/
.u-form-item__body__left__content__required
{
left
:
-16rpx
!
important
;
line-height
:
150%
!
important
;
font-size
:
28rpx
!
important
;
top
:
0
!
important
;
}
}
</
style
>
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