From 843d0abd014ec20424844546fc57a9f976f366ba Mon Sep 17 00:00:00 2001
From: jiangping <jp@doumee.com>
Date: 星期一, 02 九月 2024 10:52:59 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/master'
---
pda/pages/index/center.vue | 534 ++++++++++++++++++++++++++++++++++++++++++++++++----------
1 files changed, 437 insertions(+), 97 deletions(-)
diff --git a/pda/pages/index/center.vue b/pda/pages/index/center.vue
index 7d8e376..a1aaff3 100644
--- a/pda/pages/index/center.vue
+++ b/pda/pages/index/center.vue
@@ -1,8 +1,9 @@
<template>
<view class="main_app">
<view class="main_content">
- <view class="title"
- >瀹夋嘲鐗╂祦瑁呰揣骞冲彴<u-icon
+ <view class="title" @click="showPlatformgroup = true"
+ >{{ activePlatformGroup.name
+ }}<u-icon
name="arrow-down"
size="20"
class="ml12"
@@ -12,65 +13,115 @@
<view class="platform_list">
<view
class="item"
- :class="{ active: index === 0 }"
- v-for="(i, index) in 8"
- :key="i"
- >1鍙锋湀鍙�</view
+ :class="{ active: item.id === activePlatform.id }"
+ v-for="(item, index) in activePlatformGroup.platformList"
+ :key="index"
+ @click="platformClick(item)"
+ >{{ item.name }}</view
>
</view>
<view class="status_wrap">
<view class="status"
- >浣滀笟锛�<text>{{ 0 }}</text></view
+ >浣滀笟锛�<text>{{ platformTaskInfo.workNum }}</text></view
>
<view class="status"
- >宸插彨锛�<text>{{ 0 }}</text></view
+ >宸插彨锛�<text>{{ platformTaskInfo.callNum }}</text></view
>
<view class="status"
- >绛夊緟锛�<text>{{ 0 }}</text></view
+ >绛夊緟锛�<text>{{ platformTaskInfo.waitNum }}</text></view
>
<view class="status"
- >寮傚父锛�<text>{{ 0 }}</text></view
+ >寮傚父锛�<text>{{ platformTaskInfo.exceptionNum }}</text></view
>
</view>
</view>
<!-- -->
- <view v-if="true" class="platform_ing">
- <view class="head">
- <view class="code">
- <text>鐨�</text>
- <text>AD1212</text>
+ <view style="padding-bottom: 140rpx">
+ <view
+ v-for="item in platformTaskInfo.platformJobList"
+ :key="item.id"
+ class="platform_ing"
+ >
+ <view class="head">
+ <view class="code">
+ <text>{{ item.carCodeFront.slice(0, 1) }}</text>
+ <text>{{ item.carCodeFront.slice(1, 2) }}</text>
+ <text>路</text>
+ <text>{{ item.carCodeFront.slice(2) }}</text>
+ </view>
+ <view
+ class="status"
+ v-if="item.status != 4 && item.status != 5"
+ :class="{ red: item.status == 8 }"
+ >{{ statusMap[item.status] }}</view
+ >
+ <view class="status" v-if="item.status == 4"
+ >鍙彿涓� {{ item.callDateTemp }}</view
+ >
+ <view class="status scs" v-if="item.status == 5"
+ >宸蹭綔涓� {{ item.startDateTemp }}</view
+ >
</view>
- <view class="status">鍙彿涓�</view>
+ <view class="line" v-if="item.type == 4">
+ <text class="label">鍚堝悓鍗曞彿</text>
+ <text class="value">{{ item.contractNum }}</text>
+ </view>
+ <view class="line" v-else>
+ <text class="label">杩愯緭鍗曞彿</text>
+ <text class="value">{{ item.code }}</text>
+ <text class="primaryColor" @click="handleDetail()">杩愬崟璇︽儏</text>
+ </view>
+ <view class="line">
+ <text class="label">椹鹃┒鍛�</text>
+ <text class="value"
+ >{{ item.driverName }} {{ item.drivierPhone }}</text
+ >
+ </view>
+ <view class="line">
+ <text class="label">鎬昏繍杈撻噺</text>
+ <text class="value">{{ item.totalNum }}涓囨敮</text>
+ </view>
+ <view class="line" v-if="item.type != 4">
+ <text class="label">杩愯緭鍏徃</text>
+ <text class="value">{{ item.carrierName }}</text>
+ </view>
+ <view class="btns">
+ <view v-if="item.status == 4" class="btn" @click="handlePass(item)"
+ >杩囧彿</view
+ >
+ <view
+ v-if="item.status == 4"
+ class="btn active"
+ @click="handleWork(item)"
+ >寮�濮嬩綔涓�</view
+ >
+
+ <view v-if="item.status == 5" class="btn" @click="handleErr(item)"
+ >寮傚父鎸傝捣</view
+ >
+ <view
+ v-if="item.status == 5 || item.status == 8"
+ class="btn"
+ @click="handleTransform(item)"
+ >杞Щ鏈堝彴</view
+ >
+ <view
+ v-if="item.status == 5 || item.status == 8"
+ class="btn active"
+ @click="handleFinish(item)"
+ >浣滀笟瀹屾垚</view
+ >
+ </view>
</view>
- <view class="line">
- <text class="label">杩愯緭鍗曞彿</text>
- <text class="value">11111</text>
- <text class="primaryColor" @click="handleDetail()">杩愬崟璇︽儏</text>
- </view>
- <view class="line">
- <text class="label">鎬昏繍杈撻噺</text>
- <text class="value">11111</text>
- </view>
- <view class="line">
- <text class="label">椹鹃┒鍛�</text>
- <text class="value">11111</text>
- </view>
- <view class="btns">
- <view class="btn">杩囧彿</view>
- <view class="btn" @click="handleTransform">杞Щ鏈堝彴</view>
- <view class="btn active">寮�濮嬩綔涓�</view>
+ <view v-if="!platformTaskInfo.platformJobList || platformTaskInfo.platformJobList.length == 0" class="empty_wrap">
+ <image src="@/static/default_nodata@2x.png" />
+ <text>鏆傛棤浣滀笟杞﹁締</text>
</view>
</view>
- <image
- v-if="true"
- class="empty"
- src="@/static/default_nodata@2x.png"
- mode="widthFix"
- ></image>
<!-- -->
<view class="main_footer">
- <view class="btn">鍏ュ洯鍙彿</view>
- <view class="btn active" @click="PlatformCallClick">鏈堝彴鍙彿</view>
+ <view class="btn" @click="PlatformCallClick(1)">鍏ュ洯鍙彿</view>
+ <view class="btn active" @click="PlatformCallClick(2)">鏈堝彴鍙彿</view>
</view>
<!-- 鍙彿 -->
<u-popup
@@ -80,45 +131,69 @@
round="10"
@close="showPlatformCall = false"
>
- <view class="PlatformCallModal">
- <view class="title">鏈堝彴鍙彿(1鍙锋湀鍙�)</view>
+ <view
+ class="PlatformCallModal"
+ :style="{ height: 'calc(100vh - ' + windowTop + 'px)' }"
+ >
+ <view class="title" v-if="callType == 2"
+ >鏈堝彴鍙彿({{ activePlatform.name }})</view
+ >
+ <view class="title" v-else>鍏ュ洯鍙彿</view>
<view class="input_wrap">
<u-icon name="search" class="mr12" size="19" color="#999999" />
<input
+ v-model="platformCallSearch"
type="text"
placeholder="鎼滅储杞﹁締鐗岀収"
placeholder-class="placeholder9"
+ @confirm="callQuery"
/>
</view>
<view class="order_list">
- <scroll-view scroll-y="true" class="scroll_view">
- <view class="platform_ing" v-for="i in 8">
+ <scroll-view scroll-y="true" @scrolltolower="callScrolltolower" class="scroll_view">
+ <view
+ class="platform_ing"
+ v-for="item in platformCallList"
+ :key="item.id"
+ >
<view class="head">
- <view class="code">
- <text>鐨�</text>
- <text>AD1212</text>
+ <view v-if="item.carCodeFront" class="code">
+ <text>{{ item.carCodeFront.slice(0, 1) }}</text>
+ <text>{{ item.carCodeFront.slice(1, 2) }}</text>
+ <text>路</text>
+ <text>{{ item.carCodeFront.slice(2) }}</text>
</view>
- <view class="status">鍙彿涓�</view>
+ <view class="status" :class="{ scs: item.status == 4 }">{{
+ statusMap[item.status]
+ }}</view>
</view>
- <view class="line">
+ <view class="line" v-if="item.type == 4">
+ <text class="label">鍚堝悓鍗曞彿</text>
+ <text class="value">{{ item.contractNum }}</text>
+ </view>
+ <view class="line" v-else>
<text class="label">杩愯緭鍗曞彿</text>
- <text class="value">11111</text>
- <text class="primaryColor">杩愬崟璇︽儏</text>
+ <text class="value">{{ item.code }}</text>
+ <text class="primaryColor" @click="handleDetail()"
+ >杩愬崟璇︽儏</text
+ >
</view>
<view class="line">
<text class="label">椹鹃┒鍛�</text>
- <text class="value">11111</text>
+ <text class="value"
+ >{{ item.driverName }} {{ item.drivierPhone }}</text
+ >
</view>
<view class="line">
<text class="label">鎬昏繍杈撻噺</text>
- <text class="value">11111</text>
+ <text class="value">{{ item.totalNum }}涓囨敮</text>
</view>
- <view class="line">
+ <view class="line" v-if="item.type != 4">
<text class="label">杩愯緭鍏徃</text>
- <text class="value">11111</text>
+ <text class="value">{{ item.carrierName }}</text>
</view>
<view class="btns">
- <view class="btn active">鍙彿</view>
+ <view class="btn active" @click="handleCall(item)">鍙彿</view>
</view>
</view>
</scroll-view>
@@ -133,7 +208,10 @@
round="10"
@close="showDetail = false"
>
- <view class="PlatformCallModal">
+ <view
+ class="PlatformCallModal"
+ :style="{ height: 'calc(100vh - ' + windowTop + 'px)' }"
+ >
<view class="title">杩愬崟璇︽儏</view>
<view class="platform_ing" style="padding: 0">
<view class="head">
@@ -193,46 +271,265 @@
round="10"
@close="showTransform = false"
>
- <view class="PlatformCallModal TransformModal">
+ <view class="TransformModal">
<view class="title">杞Щ鏈堝彴</view>
<view class="transform_list">
- <view class="line" v-for="item,index in 9">
- <view class="name">1鍙锋湀鍙�</view>
- <view class="status">(绌洪棽)</view>
- <image v-if="index == 1" src="@/static/ic_select@2x.png" class="checked" />
+ <view
+ class="line"
+ @click="transformPlatClick(item)"
+ v-for="item in activePlatformGroup.platformList"
+ :key="item.id"
+ >
+ <view class="name">{{ item.name }}</view>
+ <view class="status" :class="{ green: item.workStatus == 1 }"
+ >({{ item.workStatus == 0 ? "绌洪棽" : "浣滀笟涓�" }})</view
+ >
+ <image
+ v-if="transformPlatId == item.id"
+ src="@/static/ic_select@2x.png"
+ class="checked"
+ />
</view>
</view>
<view class="btns">
- <view class="btn" @click="showTransform = false">鍙栨秷</view>
- <view class="btn active">纭畾</view>
+ <view class="btn" @click="transformCancel">鍙栨秷</view>
+ <view class="btn active" @click="transformSub">纭畾</view>
</view>
</view>
</u-popup>
+ <!-- -->
+ <u-picker
+ :show="showPlatformgroup"
+ keyName="name"
+ :columns="[platformGroupList]"
+ @cancel="showPlatformgroup = false"
+ @confirm="platConfirm"
+ ></u-picker>
</view>
</template>
<script>
+import {
+ getPlatformGroupList,
+ getPlatformWorkData,
+ platformCallList,
+ platformCallNumber,
+ platformInPark,
+ beginWork,
+ finishWork,
+ platformMove,
+ platformErr,
+ platformOverNumber
+} from '@/api'
+import { statusMap } from '@/utils/config.js'
+import dayjs from 'dayjs'
+import duration from 'dayjs/plugin/duration'
+dayjs.extend(duration)
+
export default {
data() {
return {
+ statusMap,
+ windowTop: 44,
showPlatformCall: false, // 鏈堝彴鍙彿
showDetail: false,
- showTransform: false // 杞Щ
+ showTransform: false, // 杞Щ
+ showPlatformgroup: false,
+
+ platformGroupList: [],
+ activePlatformGroup: {},
+ platformTaskInfo: {},
+ activePlatform: {},
+
+ platformCallList: [],//鍙彿鍒楄〃
+ platformCallSearch: '',
+ platformCallTotal: 0,
+ platformCallPage: 1,
+ callType: 1,
+
+ transformPlatId: '', // 杞Щ璁板綍鏈堝彴id
+ transformId: '', // 杞Щ璁板綍浠诲姟id
}
},
onLoad() {
-
+ this.getPlatformGroup()
+ const res = uni.getWindowInfo()
+ this.windowTop = res.windowTop
},
methods: {
+ getPlatformGroup() {
+ getPlatformGroupList({
+ queryData: 1,
+ queryType: 0
+ }).then(res => {
+ this.platformGroupList = res.data || []
+ if (this.platformGroupList.length > 0) {
+ this.activePlatformGroup = this.platformGroupList[0]
+ if (this.activePlatformGroup.platformList && this.activePlatformGroup.platformList.length > 0) {
+ this.activePlatform = this.activePlatformGroup.platformList[0]
+ this.getPlatformTask()
+ }
+ }
+ })
+ },
+ getPlatformTask() {
+ getPlatformWorkData({ platformId: this.activePlatform.id }).then(res => {
+ this.platformTaskInfo = res.data
+ this.circulInitTaskList()
+ setInterval(() => {
+ this.circulInitTaskList()
+ }, 1000)
+ })
+ },
+ circulInitTaskList() {
+ if (this.platformTaskInfo && this.platformTaskInfo.platformJobList && this.platformTaskInfo.platformJobList.length > 0) {
+ let time = new Date()
+ this.platformTaskInfo.platformJobList.forEach(item => {
+ if (item.callDate) {
+ let timeNum = time.getTime() - new Date(item.callDate).getTime()
+ if (timeNum > 3600000) {
+ item.callDateTemp = dayjs.duration(timeNum).format('H灏忔椂m鍒唖绉�')
+ } else {
+ item.callDateTemp = dayjs.duration(timeNum).format('m鍒唖绉�')
+ }
+ }
+ if (item.startDate) {
+ let timeNum = time.getTime() - new Date(item.startDate).getTime()
+ if (timeNum > 3600000) {
+ item.startDateTemp = dayjs.duration(timeNum).format('H灏忔椂m鍒唖s绉�')
+ } else {
+ item.startDateTemp = dayjs.duration(timeNum).format('m鍒唖绉�')
+ }
+ }
+ })
+ this.$forceUpdate()
+ }
+ },
+ platConfirm(e) {
+ const index = e.indexs[0]
+ this.activePlatformGroup = this.platformGroupList[index]
+ if (this.activePlatformGroup.platformList && this.activePlatformGroup.platformList.length > 0) {
+ this.activePlatform = this.activePlatformGroup.platformList[0]
+ this.getPlatformTask()
+ }
+ this.showPlatformgroup = false
+ },
+ platformClick(item) {
+ this.activePlatform = item
+ this.getPlatformTask()
+ },
handleDetail() {
this.showDetail = true
},
- PlatformCallClick() {
- this.showPlatformCall = true
+ handleFinish(item) {
+ finishWork({ jobId: item.id }).then(res => {
+ this.showToast('瀹屾垚浣滀笟')
+ this.getPlatformTask()
+ })
},
- handleTransform() {
+ handleWork(item) { // 寮�濮嬩綔涓�
+ beginWork({ jobId: item.id }).then(res => {
+ this.showToast('宸插紑濮嬩綔涓�')
+ this.getPlatformTask()
+ })
+ },
+ handlePass(item) {
+ uni.showModal({
+ content: '鎮ㄧ‘璁よ瀵硅浠诲姟杩涜杩囧彿鍚�',
+ success: (res) => {
+ if (res.confirm) {
+ platformOverNumber({ jobId: item.id, platformId: this.activePlatform.id }).then(res => {
+ this.showToast('杩囧彿鎴愬姛')
+ this.getPlatformTask()
+ })
+ }
+ }
+ })
+
+ },
+ handleCall(item) {
+ const { callType, activePlatform } = this
+ this.platformCallList = []
+ this.platformCallPage = 1
+ if (callType == 1) { // 鍏ュ洯鍙彿
+ platformInPark({ jobId: item.id }).then(res => {
+ this.showToast('鍙彿鎴愬姛')
+ this.getPlatformCallList()
+ })
+ } else { // 鏈堝彴鍙彿
+ platformCallNumber({ platformId: activePlatform.id, jobId: item.id }).then(res => {
+ this.showToast('鍙彿鎴愬姛')
+ this.getPlatformCallList()
+ this.getPlatformTask()
+ })
+ }
+ },
+ PlatformCallClick(callType) {
+ this.callType = callType
+ this.showPlatformCall = true
+ this.platformCallList = []
+ this.platformCallPage = 1
+ this.platformCallSearch = ''
+ this.getPlatformCallList()
+ },
+ callQuery() {
+ this.platformCallList = []
+ this.platformCallPage = 1
+ this.getPlatformCallList()
+ },
+ callScrolltolower() {
+ const { platformCallTotal, platformCallList } = this
+ if(platformCallTotal > platformCallList.length){
+ this.getPlatformCallList()
+ }
+ },
+ getPlatformCallList() {
+ const { platformCallPage, callType, activePlatform, platformCallSearch } = this
+ platformCallList({
+ model: { callType, platformId: activePlatform.id, carCodeFront: platformCallSearch },
+ capacity: 10,
+ page: platformCallPage
+ }).then(res => {
+ if (res.data && res.data.records) {
+ this.platformCallList = [ ...this.platformCallList, ...res.data.records]
+ this.platformCallTotal = res.data.total
+ }
+ })
+ },
+ transformPlatClick(item) {
+ this.transformPlatId = item.id
+ },
+ transformCancel() {
+ this.transformPlatId = ''
+ this.showTransform = false
+ },
+ transformSub() {
+ const { transformPlatId, transformId } = this
+ platformMove({ platformId: transformPlatId, jobId: transformId }).then(res => {
+ this.showToast('杞Щ鏈堝彴鎴愬姛')
+ this.transformCancel()
+ this.getPlatformTask()
+ })
+ },
+ handleTransform(item) {
+ let { activePlatform } = this
+ this.transformId = item.id
+ this.transformPlatId = activePlatform.id
this.showTransform = true
},
+ handleErr(item) {
+ uni.showModal({
+ content: '鎮ㄧ‘璁よ瀵硅浠诲姟杩涜寮傚父鎸傝捣鍚�',
+ success: (res) => {
+ if (res.confirm) {
+ platformErr({ jobId: item.id }).then(ress => {
+ this.showToast('寮傚父鎸傝捣鎴愬姛')
+ this.getPlatformTask()
+ })
+ }
+ }
+ })
+ }
}
}
</script>
@@ -323,15 +620,24 @@
border-radius: 8rpx;
border: 1rpx solid #dfdede;
text {
- padding: 0 12rpx;
&:nth-of-type(1) {
background: #e9f5f6;
+ padding: 0 12rpx;
+ }
+ &:nth-of-type(2) {
+ padding-left: 4rpx;
+ }
+ &:nth-of-type(4) {
+ padding-right: 6rpx;
}
}
}
.status {
font-size: 30rpx;
color: $uni-color-primary;
+ }
+ .scs {
+ color: #00ba67;
}
}
.line {
@@ -399,7 +705,7 @@
}
}
.PlatformCallModal {
- height: calc(100vh - 50px);
+ height: calc(100vh - 44px);
padding: 30rpx;
.title {
text-align: center;
@@ -415,7 +721,7 @@
padding: 0 30rpx;
}
.order_list {
- height: calc(100% - 120rpx);
+ height: calc(100% - 140rpx);
.scroll_view {
height: 100%;
}
@@ -465,8 +771,62 @@
}
}
}
+ .btns {
+ display: flex;
+ align-items: center;
+ justify-content: space-between;
+ .btn {
+ width: 336rpx;
+ height: 88rpx;
+ border-radius: 44rpx;
+ border: 1rpx solid $uni-color-primary;
+ color: $uni-color-primary;
+ font-size: 32rpx;
+ display: flex;
+ justify-content: center;
+ align-items: center;
+ }
+ .active {
+ color: #fff;
+ background-color: $uni-color-primary;
+ }
+ }
+}
+.TransformModal {
+ height: 900rpx;
+ padding: 30rpx;
+ position: relative;
+ .title {
+ text-align: center;
+ margin: 0 0 30rpx;
+ }
+ .btns {
+ display: flex;
+ align-items: center;
+ justify-content: space-between;
+ position: absolute;
+ z-index: 999;
+ left: 30rpx;
+ bottom: 30rpx;
+ .btn {
+ width: 336rpx;
+ height: 88rpx;
+ border-radius: 44rpx;
+ border: 1rpx solid $uni-color-primary;
+ color: $uni-color-primary;
+ font-size: 32rpx;
+ display: flex;
+ justify-content: center;
+ align-items: center;
+ }
+ .active {
+ color: #fff;
+ margin-left: 18rpx;
+ background-color: $uni-color-primary;
+ }
+ }
.transform_list {
- height: 760rpx;
+ height: 660rpx;
margin-bottom: 30rpx;
overflow: auto;
.line {
@@ -485,34 +845,14 @@
color: $uni-color-primary;
margin-left: 12rpx;
}
+ .green {
+ color: #00ba67;
+ }
.checked {
width: 40rpx;
height: 40rpx;
}
}
}
- .btns {
- display: flex;
- align-items: center;
- justify-content: space-between;
- .btn {
- width: 336rpx;
- height: 88rpx;
- border-radius: 44rpx;
- border: 1rpx solid $uni-color-primary;
- color: $uni-color-primary;
- font-size: 32rpx;
- display: flex;
- justify-content: center;
- align-items: center;
- }
- .active{
- color: #fff;
- background-color: $uni-color-primary;
- }
- }
-}
-.TransformModal{
- height: 1000rpx;
}
</style>
\ No newline at end of file
--
Gitblit v1.9.3