Commit c02bee8e authored by 贺世双's avatar 贺世双

新增回单界面

parent 90f65b22
......@@ -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 );
}
// 查询货量明细
......
<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
......@@ -71,9 +71,9 @@
"enablePullDownRefresh": false
}
}, {
"path": "transferChange/transferChange",
"path": "orderAllPodSign/orderAllPodSign",
"style": {
"navigationBarTitleText": "中转换车",
"navigationBarTitleText": "整单签收",
"enablePullDownRefresh": false
}
}, {
......
......@@ -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%;
......
<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="!orderList.length">
<view class="emptyImg flex_col" v-if="!orderPod.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 { getOrderBaseList} from '../../api/apiList.js'
import { getOrderPodList, getOrderPodSingList} from '../../api/apiList.js'
export default {
data() {
return {
pageNum: 1, //页码
pageSize: 10, //每页条数
orderList: [],
orderPod: [],//回单数据
loadMore: true, //加载更多
searchValue: "", //搜索值
tabActive: "空",
};
},
onLoad() {
/*onLoad() {
this.initData()
},*/
onShow() {
this.pageNum = 1
this.orderPod = []
this.initData()
},
//下拉刷新
onPullDownRefresh() {
this.pageNum = 1
this.orderList = []
this.orderPod = []
this.initData()
},
// 触底加载更多
......@@ -36,28 +56,94 @@
this.loadMore = false
}
},
methods:{
initData(){
const { pageNum, pageSize } = this
let data = {
let reqData = {
"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>
This diff is collapsed.
<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>
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment