From 986118de12da6830ffb0c86af8e70567352c9bb9 Mon Sep 17 00:00:00 2001
From: liukangdong <898885815@qq.com>
Date: 星期四, 29 八月 2024 18:15:37 +0800
Subject: [PATCH] ll
---
h5/main.js | 2
pda/api/index.js | 16
h5/pages/driver/forgetPsd.vue | 21
pda/pages.json | 4
pda/static/default_nodata@2x.png | 0
pda/pages/index/queueup.vue | 137 ++++-
pda/utils/config.js | 15
h5/pages/staff/task/driver.vue | 17
pda/package-lock.json | 11
pda/pages/index/center.vue | 557 +++++++++++++++++++-----
h5/manifest.json | 2
h5/pages/driver/register.vue | 14
h5/utils/config.js | 15
h5/pages/driver/index.vue | 53 +
h5/pages/driver/reservedDetail.vue | 18
h5/pages/driver/queueUp.vue | 27
pda/App.vue | 47 +
h5/static/driver/ic_truck_mine@2x.png | 0
h5/pages/driver/taskDetail.vue | 21
h5/pages/staff/task/index.vue | 1
h5/pages/driver/queueUpRecord.vue | 314 ++++++++------
h5/pages/driver/reservedRecord.vue | 6
h5/App.vue | 2
h5/pages/driver/login.vue | 2
h5/pages/driver/taskConfirm.vue | 2
pda/manifest.json | 2
26 files changed, 911 insertions(+), 395 deletions(-)
diff --git a/h5/App.vue b/h5/App.vue
index 6594094..137957d 100644
--- a/h5/App.vue
+++ b/h5/App.vue
@@ -126,7 +126,7 @@
font-size: 28rpx;
}
.red{
- color: red;
+ color: red !important;
}
//璁剧疆鍦嗚
diff --git a/h5/main.js b/h5/main.js
index 619eb5b..8a3b147 100644
--- a/h5/main.js
+++ b/h5/main.js
@@ -16,7 +16,7 @@
Vue.component('navigation', navigation)
Vue.prototype.$store = store
Vue.prototype.$jump = (url) => {uni.navigateTo({url})}
-Vue.prototype.$goBack = () => { uni.navigateBack() }
+Vue.prototype.$goBack = () => { setTimeout(() => {uni.navigateBack()},300) }
Vue.prototype.showToast = (str) => {
setTimeout(() => {
uni.showToast({
diff --git a/h5/manifest.json b/h5/manifest.json
index 205f624..ad55f2c 100644
--- a/h5/manifest.json
+++ b/h5/manifest.json
@@ -92,7 +92,7 @@
"/admin_interface" : {
// 杩欎釜瀛楁鍚嶉渶涓庝綘閰嶇疆鐨刡asePrefixUrl涓�鑷达紝绯荤粺璇嗗埆鍒板甫鏈�/dev-api璇锋眰鐨勫湴鍧�鏃讹紝浼氬湪鍓嶉潰鎷兼帴涓婁唬鐞嗘湇鍔″櫒鍦板潃
// "target" : "http://192.168.0.173/admin_interface", // 浠g悊鏈嶅姟鍣ㄥ煙鍚嶆垨IP鍦板潃
- "target" : "http://192.168.0.136:10010", // 浠g悊鏈嶅姟鍣ㄥ煙鍚嶆垨IP鍦板潃
+ "target" : "http://192.168.0.139:10010", // 浠g悊鏈嶅姟鍣ㄥ煙鍚嶆垨IP鍦板潃
"changeOrigin" : true, // 鍏佽璺ㄥ煙
"pathRewrite" : {
"^/admin_interface" : "" // 閲嶅啓鍦板潃锛屽鏋滃疄闄呮帴鍙d腑鏄笉甯�/dev-api锛岄渶瑕佸皢杩欎釜鍓嶇紑缃┖锛屽洜涓鸿繖涓墠缂�鍙槸涓轰簡璇嗗埆鐢紝璇嗗埆瀹屼箣鍚庡氨娌$敤浜�
diff --git a/h5/pages/driver/forgetPsd.vue b/h5/pages/driver/forgetPsd.vue
index 7512424..2330ee2 100644
--- a/h5/pages/driver/forgetPsd.vue
+++ b/h5/pages/driver/forgetPsd.vue
@@ -7,7 +7,7 @@
<view class="login_list">
<view class="login_list_item">
<image src="@/static/login_ic_phone@2x.png" mode="widthFix" />
- <input v-model="form.phone" maxlength="18" placeholder="璇疯緭鍏ユ墜鏈哄彿" />
+ <input v-model="form.phone" :maxlength="11" placeholder="璇疯緭鍏ユ墜鏈哄彿" />
</view>
<view class="login_list_item">
<image src="@/static/ic_captcha.png" mode="widthFix"></image>
@@ -55,7 +55,10 @@
}
},
- onLoad() {
+ onLoad(option) {
+ if(option.phone){
+ this.$set(this.form, 'phone', option.phone)
+ }
},
methods: {
@@ -102,16 +105,12 @@
...form
}).then(res => {
if (res && res.code == 200) {
+ this.showToast('瀵嗙爜淇敼鎴愬姛,璇烽噸鏂扮櫥褰�')
setTimeout(() => {
- uni.showToast({
- title: '瀵嗙爜淇敼鎴愬姛,璇烽噸鏂扮櫥褰�',
- icon: 'success',
- duration: 2000
- })
- })
- uni.redirectTo({
- url: "/pages/staffLogin/login"
- })
+ uni.redirectTo({
+ url: "/pages/driver/login"
+ })
+ }, 500)
}
})
}
diff --git a/h5/pages/driver/index.vue b/h5/pages/driver/index.vue
index f9000a5..46a3d5e 100644
--- a/h5/pages/driver/index.vue
+++ b/h5/pages/driver/index.vue
@@ -13,7 +13,7 @@
<!-- -->
<view class="task_list">
<swiper circular class="task_swiper">
- <swiper-item v-for="item in taskList" :key="item.id">
+ <swiper-item v-for="item in taskList" :key="item.id" @click="taskClick(item)">
<view class="item">
<view class="head">
<view class="name">杩愯緭鍗晎{ item.contractNum }}</view>
@@ -41,9 +41,9 @@
</view>
<view class="sub">
<view class="time" v-if="item.arriveDate">{{ item.arriveDate.slice(5) }}</view>
- <view v-if="item.status == 0" class="sub_btn" @click="handleTask(item)">纭浠诲姟</view>
- <view v-if="item.status == 1" class="sub_btn" @click="handleSign(item)">绔嬪嵆绛惧埌</view>
- <view v-if="item.status == 2" class="sub_btn" @click="handleQueue(item)">鏌ョ湅鎺掗槦</view>
+ <view v-if="item.status == 0" class="sub_btn">纭浠诲姟</view>
+ <view v-if="item.status == 1" class="sub_btn">绔嬪嵆绛惧埌</view>
+ <view v-if="item.status == 2" class="sub_btn">鏌ョ湅鎺掗槦</view>
</view>
</view>
</view>
@@ -101,20 +101,10 @@
};
},
- created() {
+ onShow() {
this.initData();
},
methods: {
- handleSign(item) {
- uni.navigateTo({
- url: '/pages/driver/taskDetail?id=' + item.id
- });
- },
- handleQueue(item) {
- uni.navigateTo({
- url:'/pages/driver/queueUp?jobId=' + item.id
- })
- },
initData() {
driverHomeData().then(res => {
if (res.code == 200) {
@@ -134,11 +124,32 @@
url: '/pages/driver/login'
});
},
+ taskClick(item) {
+ const status = item.status
+ console.log(item);
+ if(status == 0){
+ uni.navigateTo({url: '/pages/driver/taskConfirm?id=' + item.id});
+ }else if(status == 2){
+ uni.navigateTo({url:'/pages/driver/queueUp?jobId=' + item.id})
+ }else{
+ uni.navigateTo({url: `/pages/driver/taskDetail?id=${item.id}&status=${item.status}`});
+ }
+ },
handleTask(item) {
uni.navigateTo({
url: '/pages/driver/taskConfirm?id=' + item.id
});
- }
+ },
+ handleSign(item) {
+ uni.navigateTo({
+ url: `/pages/driver/taskDetail?id=${item.id}&status=${item.status}`
+ });
+ },
+ handleQueue(item) {
+ uni.navigateTo({
+ url:'/pages/driver/queueUp?jobId=' + item.id
+ })
+ },
}
};
</script>
@@ -175,7 +186,7 @@
position: relative;
width: 688rpx;
height: 270rpx;
- margin-bottom: 40rpx;
+ margin-bottom: 28rpx;
.h1 {
font-weight: bold;
line-height: 66rpx;
@@ -249,17 +260,17 @@
}
}
.task_list {
- margin-bottom: 48rpx;
+ margin-bottom: 0rpx;
.task_swiper {
- padding: 16rpx 10rpx;
- height: 320rpx;
+ padding: 12rpx 10rpx;
+ height: 340rpx;
width: 730rpx;
margin-left: -20rpx;
box-sizing: border-box;
}
.item {
background: #ffffff;
- box-shadow: 0rpx 0rpx 12rpx 0rpx rgba(39, 155, 170, 0.32);
+ box-shadow: 0rpx 6rpx 24rpx 0rpx rgba(39, 155, 170, 0.32);
border-radius: 16rpx;
height: 280rpx;
width: 98%;
diff --git a/h5/pages/driver/login.vue b/h5/pages/driver/login.vue
index 1372f80..2ea23f3 100644
--- a/h5/pages/driver/login.vue
+++ b/h5/pages/driver/login.vue
@@ -57,7 +57,7 @@
},
handleSetPsd() {
uni.navigateTo({
- url: "/pages/driver/forgetPsd"
+ url: "/pages/driver/forgetPsd?phone=" + this.form.username
})
},
dealChange(e) {
diff --git a/h5/pages/driver/queueUp.vue b/h5/pages/driver/queueUp.vue
index 3c08723..eed4c69 100644
--- a/h5/pages/driver/queueUp.vue
+++ b/h5/pages/driver/queueUp.vue
@@ -8,11 +8,11 @@
</view>
<!-- -->
<view class="main_list">
- <view class="item" @click="handleCheck()">
+ <view class="item" @click="handleCheck(1)">
<view class="h1">浣滀笟涓溅杈�</view>
<view class="h2">
<text v-if="activePlatform.signJobList">{{
- activePlatform.signJobList.length
+ activePlatform.workJobList.length
}}</text>
<text class="unit">杈�</text>
</view>
@@ -22,11 +22,11 @@
mode=""
></image>
</view>
- <view class="item cyan">
+ <view class="item cyan" @click="handleCheck(0)">
<view class="h1">宸茬鍒拌溅杈�</view>
<view class="h2">
<text v-if="activePlatform.workJobList">{{
- activePlatform.workJobList.length
+ activePlatform.signJobList.length
}}</text>
<text class="unit">杈�</text>
</view>
@@ -55,10 +55,12 @@
return {
activePlatform: {},
platformGroupList: [],
- showPlat: false
+ showPlat: false,
+ jobId: ''
}
},
onLoad(option) {
+ this.jobId = option.jobId
this.getData(option.jobId || '')
},
methods: {
@@ -79,10 +81,17 @@
this.activePlatform = this.platformGroupList[index]
this.showPlat = false
},
- handleCheck() {
- uni.navigateTo({
- url: "/pages/driver/queueUpRecord"
- })
+ handleCheck(type) {
+ if(this.jobId){
+ uni.navigateTo({
+ url: `/pages/driver/queueUpRecord?type=${type}&platformId=${this.activePlatform.id}&jobId=${this.jobId}`
+ })
+ }else{
+ uni.navigateTo({
+ url: `/pages/driver/queueUpRecord?type=${type}&platformId=${this.activePlatform.id}`
+ })
+ }
+
}
}
}
diff --git a/h5/pages/driver/queueUpRecord.vue b/h5/pages/driver/queueUpRecord.vue
index 000730d..de92b96 100644
--- a/h5/pages/driver/queueUpRecord.vue
+++ b/h5/pages/driver/queueUpRecord.vue
@@ -1,147 +1,193 @@
<template>
- <view class="main_app">
- <view class="main_name">
- <text class="mr12">鐗╂祦鍏ュ簱鏈堝彴</text>
- <u-icon name="arrow-down" color="#777777"></u-icon>
- </view>
- <!-- -->
- <view class="main_list">
- <view class="item">
- <view class="status">浣滀笟涓�</view>
- <image
- class="avatar"
- src="@/static/driver/ic_truck@2x.png"
- mode=""
- ></image>
- <view class="content">
- <view class="id_card">鐨朅</view>
- <view class="line">
- <view class="address">4鍙锋湀鍙�</view>
- <view class="time">
- <u-icon class="mr6" name="clock" color="#4d98a8"></u-icon>
- <text>01:02:02</text>
- </view>
- </view>
- </view>
- </view>
- <view class="item active">
- <view class="status padding">浣滀笟涓�</view>
- <view class="me">鎴�</view>
- <image
- class="avatar"
- src="@/static/driver/ic_truck@2x.png"
- mode=""
- ></image>
- <view class="content">
- <view class="id_card">鐨朅</view>
- <view class="line">
- <view class="address">4鍙锋湀鍙�</view>
- <view class="time">
- <u-icon class="mr6" name="clock" color="#4d98a8"></u-icon>
- <text>01:02:02</text>
- </view>
- </view>
- </view>
- </view>
- </view>
- </view>
+ <view class="main_app">
+ <view class="main_name">
+ <text class="mr12">{{ platformObj.name }}</text>
+ <!-- <u-icon name="arrow-down" color="#777777"></u-icon> -->
+ </view>
+ <!-- -->
+ <view class="main_list">
+ <view class="item" :class="{ active: item.driverId == driverInfo.memberId }" v-for="item in dataList" :key="item.id">
+ <view class="status padding" v-if="item.status == 2">鎺掗槦涓�</view>
+ <view class="status" v-else :class="{ padding: item.status != 5 }">{{ statusMap[item.status] }}</view>
+ <view v-if="item.driverId == driverInfo.memberId" class="me">鎴�</view>
+ <image v-if="item.driverId == driverInfo.memberId" class="avatar" src="@/static/driver/ic_truck_mine@2x.png" mode=""></image>
+ <image v-else class="avatar" src="@/static/driver/ic_truck@2x.png" mode=""></image>
+ <view class="content">
+ <view class="id_card" v-if="item.carCodeFront">{{ item.carCodeFront.slice(0, 4) }}**{{ item.carCodeFront.slice(6) }}</view>
+ <view class="line">
+ <view class="address">{{ item.platformName || '绛夊緟鍒嗛厤鏈堝彴' }}</view>
+ <view class="time" v-if="item.status == 5">
+ <u-icon class="mr6" name="clock" color="#4d98a8"></u-icon>
+ <text>{{item.callDateTemp}}</text>
+ </view>
+ </view>
+ </view>
+ </view>
+ </view>
+ </view>
</template>
<script>
+import { driverLineUpDetail } 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 {
-
- }
- }
-}
+ data() {
+ return {
+ statusMap,
+ platformId: '',
+ type: '',
+ dataList: [],
+ platformObj: {},
+ driverInfo: uni.getStorageSync('driverInfo')
+ };
+ },
+ onLoad(option) {
+ this.type = option.type;
+ this.platformId = option.platformId;
+ this.getData(option.jobId || '');
+ },
+ methods: {
+ getData(jobId) {
+ const { platformId, type } = this;
+ driverLineUpDetail({
+ mobile: jobId ? '' : uni.getStorageSync('driverInfo').mobile,
+ queryType: jobId ? 1 : 0,
+ jobId: jobId
+ }).then(res => {
+ this.platformGroupList = res.data.platformGroupList;
+ if (res.data && res.data.platformGroupList && res.data.platformGroupList.length > 0) {
+ res.data.platformGroupList.forEach(item => {
+ if (item.id == platformId) {
+ this.platformObj = { ...item };
+ if (type == 0) {
+ this.dataList = item.signJobList;
+ } else {
+ this.dataList = item.workJobList;
+ }
+ this.circulInitTaskList()
+ setInterval(() => {
+ this.circulInitTaskList()
+ }, 1000)
+ }
+ });
+ }
+ });
+ },
+ circulInitTaskList() {
+ let time = new Date();
+ this.dataList.forEach(item => {
+ if (item.callDate) {
+ let timeNum = time.getTime() - new Date(item.callDate).getTime();
+ if (timeNum > 3600000) {
+ item.callDateTemp = dayjs.duration(timeNum).format('HH:mm:ss');
+ } else {
+ item.callDateTemp = dayjs.duration(timeNum).format('mm:ss');
+ }
+ }
+ if (item.startDate) {
+ let timeNum = time.getTime() - new Date(item.startDate).getTime();
+ if (timeNum > 3600000) {
+ item.startDateTemp = dayjs.duration(timeNum).format('HH:mm:ss');
+ } else {
+ item.startDateTemp = dayjs.duration(timeNum).format('mm:ss');
+ }
+ }
+ });
+ this.$forceUpdate();
+ }
+ }
+};
</script>
<style lang="scss">
page {
- background-color: #f7f7f7;
+ background-color: #f7f7f7;
}
.main_app {
- .main_name {
- display: flex;
- justify-content: center;
- align-items: center;
- height: 104rpx;
- font-weight: 600;
- font-size: 32rpx;
- color: #111111;
- background-color: #fff;
- margin: 0 -30rpx 20rpx;
- }
- .main_list {
- .item {
- display: flex;
- align-items: center;
- position: relative;
- padding: 30rpx;
- background-color: #fff;
- margin-bottom: 20rpx;
- border-radius: 8rpx;
- .status {
- position: absolute;
- top: 0;
- right: 0;
- height: 50rpx;
- line-height: 50rpx;
- padding: 0 20rpx;
- background: $uni-color-primary;
- color: #fff;
- font-size: 26rpx;
- border-radius: 0rpx 8rpx 0rpx 25rpx;
- }
- .me {
- position: absolute;
- top: 0;
- left: 0;
- background: #00ba67;
- border-radius: 8rpx 0rpx 8rpx 0rpx;
- height: 42rpx;
- line-height: 42rpx;
- width: 64rpx;
- text-align: center;
- color: #fff;
- font-size: 24rpx;
- z-index: 11;
- }
- .padding {
- background: #e9f5f6;
- color: $uni-color-primary;
- }
- .avatar {
- width: 84rpx;
- height: 84rpx;
- margin-right: 20rpx;
- }
- .content {
- flex: 1;
- .id_card {
- font-weight: 600;
- font-size: 30rpx;
- color: #111111;
- }
- .line {
- display: flex;
- justify-content: space-between;
- align-items: center;
- font-size: 26rpx;
- color: #999999;
- margin-top: 6rpx;
- .time {
- display: flex;
- align-items: center;
- color: $uni-color-primary;
- }
- }
- }
- }
- .active {
- background: linear-gradient(270deg, #ffffff 0%, #e1f7fe 100%);
- }
- }
+ .main_name {
+ display: flex;
+ justify-content: center;
+ align-items: center;
+ height: 104rpx;
+ font-weight: 600;
+ font-size: 32rpx;
+ color: #111111;
+ background-color: #fff;
+ margin: 0 -30rpx 20rpx;
+ }
+ .main_list {
+ .item {
+ display: flex;
+ align-items: center;
+ position: relative;
+ padding: 30rpx;
+ background-color: #fff;
+ margin-bottom: 20rpx;
+ border-radius: 8rpx;
+ .status {
+ position: absolute;
+ top: 0;
+ right: 0;
+ height: 50rpx;
+ line-height: 50rpx;
+ padding: 0 20rpx;
+ background: $uni-color-primary;
+ color: #fff;
+ font-size: 26rpx;
+ border-radius: 0rpx 8rpx 0rpx 25rpx;
+ }
+ .me {
+ position: absolute;
+ top: 0;
+ left: 0;
+ background: #00ba67;
+ border-radius: 8rpx 0rpx 8rpx 0rpx;
+ height: 42rpx;
+ line-height: 42rpx;
+ width: 64rpx;
+ text-align: center;
+ color: #fff;
+ font-size: 24rpx;
+ z-index: 11;
+ }
+ .padding {
+ background: #e9f5f6;
+ color: $uni-color-primary;
+ }
+ .avatar {
+ width: 84rpx;
+ height: 84rpx;
+ margin-right: 20rpx;
+ background-color: #fff;
+ }
+ .content {
+ flex: 1;
+ .id_card {
+ font-weight: 500;
+ font-size: 30rpx;
+ color: #111111;
+ }
+ .line {
+ display: flex;
+ justify-content: space-between;
+ align-items: center;
+ font-size: 26rpx;
+ color: #999999;
+ margin-top: 6rpx;
+ .time {
+ display: flex;
+ align-items: center;
+ color: $uni-color-primary;
+ }
+ }
+ }
+ }
+ .active {
+ background: linear-gradient(270deg, #ffffff 0%, #e1f7fe 100%);
+ }
+ }
}
</style>
diff --git a/h5/pages/driver/register.vue b/h5/pages/driver/register.vue
index 89fe60a..3221f3a 100644
--- a/h5/pages/driver/register.vue
+++ b/h5/pages/driver/register.vue
@@ -102,16 +102,12 @@
...form
}).then(res => {
if (res && res.code == 200) {
+ this.showToast('娉ㄥ唽鎴愬姛,璇峰墠寰�鐧诲綍')
setTimeout(() => {
- uni.showToast({
- title: '娉ㄥ唽鎴愬姛,璇峰墠寰�鐧诲綍',
- icon: 'none',
- duration: 2000
- })
- })
- uni.redirectTo({
- url: "/pages/driver/login"
- })
+ uni.redirectTo({
+ url: "/pages/driver/login"
+ })
+ }, 500)
}
})
}
diff --git a/h5/pages/driver/reservedDetail.vue b/h5/pages/driver/reservedDetail.vue
index bf1c851..2b90caa 100644
--- a/h5/pages/driver/reservedDetail.vue
+++ b/h5/pages/driver/reservedDetail.vue
@@ -3,7 +3,9 @@
<view class="status_wrap">
<view class="name">{{info.driverName}}鐨勫叆鍥绾�</view>
<view class="desc">{{info.carCodeFront}}</view>
- <view class="status">{{ statusMap[info.status] }}</view>
+ <view class="status" v-if="info.status != 2 && info.status != 3">{{ statusMap[info.status] }}</view>
+ <image v-if="info.status == 2" class="icon" src="../../static/ic_passed@2x.png" mode=""></image>
+ <image v-if="info.status == 3" class="icon" src="../../static/ic_refused@2x.png" mode=""></image>
</view>
<!-- -->
<view class="emyty"></view>
@@ -123,8 +125,8 @@
statusMap: {
0: '寰呭鎵�',
1: '瀹℃壒涓�',
- 2: '瀹℃壒閫氳繃',
- 3: '瀹℃壒涓嶉�氳繃',
+ 2: '宸查�氳繃',
+ 3: '宸叉嫆缁�',
4: '宸插彇娑�',
},
}
@@ -348,7 +350,6 @@
.status_wrap {
position: relative;
padding: 30rpx 0;
-
.name {
font-weight: 600;
font-size: 32rpx;
@@ -372,6 +373,15 @@
background-color: #e9edff;
color: $uni-color-primary;
}
+ .icon{
+ width: 120rpx;
+ height: 120rpx;
+ border-radius: 50%;
+ position: absolute;
+ right: 0rpx;
+ top: 20rpx;
+
+ }
}
.main_footer {
diff --git a/h5/pages/driver/reservedRecord.vue b/h5/pages/driver/reservedRecord.vue
index 0d19bd6..fd44113 100644
--- a/h5/pages/driver/reservedRecord.vue
+++ b/h5/pages/driver/reservedRecord.vue
@@ -10,7 +10,7 @@
>
<view class="box_list_item_head">
<text>{{item.driverName}}鐨勫叆鍥绾�</text>
- <text class="loading">{{ statusMap[item.status] }}</text>
+ <text class="loading" :class="{red: item.status == 3}">{{ statusMap[item.status] }}</text>
</view>
<view class="box_list_item_nr">
<view class="box_list_item_nr_item">
@@ -53,8 +53,8 @@
statusMap: {
0: '寰呭鎵�',
1: '瀹℃壒涓�',
- 2: '瀹℃壒閫氳繃',
- 3: '瀹℃壒涓嶉�氳繃',
+ 2: '宸查�氳繃',
+ 3: '宸叉嫆缁�',
4: '宸插彇娑�',
}
}
diff --git a/h5/pages/driver/taskConfirm.vue b/h5/pages/driver/taskConfirm.vue
index 7de5284..dd156a3 100644
--- a/h5/pages/driver/taskConfirm.vue
+++ b/h5/pages/driver/taskConfirm.vue
@@ -146,7 +146,7 @@
arriveDate: param.date + ':59'
}).then(res =>{
this.showToast('纭鎴愬姛')
- uni.navigateBack()
+ this.$goBack()
})
},
getDetail(jobId) {
diff --git a/h5/pages/driver/taskDetail.vue b/h5/pages/driver/taskDetail.vue
index 84f8f11..42af4cd 100644
--- a/h5/pages/driver/taskDetail.vue
+++ b/h5/pages/driver/taskDetail.vue
@@ -11,10 +11,7 @@
<view class="name" v-if="param.status == 5">鏈堝彴浣滀笟涓�</view>
<view class="name" v-if="param.status == 6">浣滀笟宸插畬鎴�</view>
<view class="id_card">{{ param.carCodeFront }}</view>
- <view class="status" v-if="param.status == 1">绛夊緟绛惧埌</view>
- <view class="status" v-if="param.status == 2">绛夊緟鍙彿</view>
- <view class="status" v-if="param.status == 5">浣滀笟涓�</view>
- <view class="status" v-if="param.status == 6">浣滀笟瀹屾垚</view>
+ <view class="status">{{statusMap[param.status]}}</view>
</view>
<!-- -->
<view class="main_content">
@@ -26,7 +23,7 @@
<view class="label">鎵嬫満鍙�</view>
<view class="value">{{param.drivierPhone}}</view>
</view>
- <template v-if="param.type == 4">
+ <template v-if="param.type != 4">
<view class="line">
<view class="label">杩愯緭鍗曞彿</view>
<view class="value" @click="showDetail = true">
@@ -68,11 +65,19 @@
</view>
</view>
</view>
- <view class="line" v-if="param.status == 2">
+ <view class="line" v-if="param.signDate">
<view class="label">绛惧埌鏃堕棿</view>
<view class="value">{{param.signDate}}</view>
</view>
- <view class="warnning">
+ <view class="line" v-if="param.startDate">
+ <view class="label">寮�濮嬩綔涓�</view>
+ <view class="value">{{param.startDate}}</view>
+ </view>
+ <view class="line" v-if="param.doneDate">
+ <view class="label">浣滀笟瀹屾垚</view>
+ <view class="value">{{param.doneDate}}</view>
+ </view>
+ <view v-if="param.status == 1" class="warnning">
<u-icon name="info-circle" color="#ED4545" class="mr12"></u-icon>
濡傛棤娉曡幏鍙栧畾浣嶏紝璇风敤寰俊鎵弿鍥尯澶у睆浜岀淮
</view>
@@ -173,10 +178,12 @@
<script>
import { driverTaskJobDetail, driverSignInTask } from '@/api';
+ import { statusMap } from '@/utils/config.js';
import dayjs from 'dayjs';
export default {
data() {
return {
+ statusMap,
param: {
status: '0'
},
diff --git a/h5/pages/staff/task/driver.vue b/h5/pages/staff/task/driver.vue
index 20d2264..3330aaf 100644
--- a/h5/pages/staff/task/driver.vue
+++ b/h5/pages/staff/task/driver.vue
@@ -3,7 +3,9 @@
<view class="status_wrap">
<view class="name">{{info.driverName}}鐨勫叆鍥绾�</view>
<view class="desc">{{info.carCodeFront}}</view>
- <view class="status">{{ statusMap[info.status] }}</view>
+ <view class="status" v-if="info.status != 2 && info.status != 3">{{ statusMap[info.status] }}</view>
+ <image v-if="info.status == 2" class="icon" src="@/static/ic_passed@2x.png" mode=""></image>
+ <image v-if="info.status == 3" class="icon" src="@/static/ic_refused@2x.png" mode=""></image>
</view>
<!-- -->
<view class="emyty"></view>
@@ -147,8 +149,8 @@
statusMap: {
0: '寰呭鎵�',
1: '瀹℃壒涓�',
- 2: '瀹℃壒閫氳繃',
- 3: '瀹℃壒涓嶉�氳繃',
+ 2: '宸查�氳繃',
+ 3: '宸叉嫆缁�',
4: '宸插彇娑�',
},
}
@@ -387,6 +389,15 @@
background-color: #e9edff;
color: $uni-color-primary;
}
+ .icon{
+ width: 120rpx;
+ height: 120rpx;
+ border-radius: 50%;
+ position: absolute;
+ right: 0rpx;
+ top: 20rpx;
+
+ }
}
.main_footer {
diff --git a/h5/pages/staff/task/index.vue b/h5/pages/staff/task/index.vue
index 854541f..31d5d3c 100644
--- a/h5/pages/staff/task/index.vue
+++ b/h5/pages/staff/task/index.vue
@@ -542,6 +542,7 @@
.info {
font-size: 26rpx;
font-weight: 400;
+ width: 110rpx;
}
}
.box_list_item_nr {
diff --git a/h5/static/driver/ic_truck_mine@2x.png b/h5/static/driver/ic_truck_mine@2x.png
new file mode 100644
index 0000000..f5a2449
--- /dev/null
+++ b/h5/static/driver/ic_truck_mine@2x.png
Binary files differ
diff --git a/h5/utils/config.js b/h5/utils/config.js
index 03c8927..d4d7d3a 100644
--- a/h5/utils/config.js
+++ b/h5/utils/config.js
@@ -2,3 +2,18 @@
export const baseUrl = 'admin_interface/'
export const uploadAvatar = `${baseUrl}visitsAdmin/cloudService/web/public/uploadFtp.do`
export const uploadUrl = `${baseUrl}visitsAdmin/cloudService/public/uploadBatch`
+
+export const statusMap = {
+ 0: '寰呯‘璁�',
+ 1: '绛夊緟绛惧埌',
+ 2: '绛夊緟鍙彿', // 绛夊緟鍙彿
+ 3: '鍏ュ洯绛夊緟',
+ 4: '鏈堝彴绛夊緟', //宸插彨鍙�
+ 5: '浣滀笟涓�',
+ 6: '浣滀笟瀹屾垚',
+ 7: '杞Щ涓�',
+ 8: '寮傚父鎸傝捣',
+ 9: '宸叉巿鏉冪鍥�',
+ 10: '宸茬鍥�',
+ 11: '宸茶繃鍙�',
+}
\ No newline at end of file
diff --git a/pda/App.vue b/pda/App.vue
index 039c633..aba1fdb 100644
--- a/pda/App.vue
+++ b/pda/App.vue
@@ -1,17 +1,17 @@
-<script>
-export default {
- onLaunch: function () {
- console.log('App Launch')
- },
- onShow: function () {
- console.log('App Show')
- },
- onHide: function () {
- console.log('App Hide')
- }
-}
-</script>
-
+<script>
+export default {
+ onLaunch: function () {
+ console.log('App Launch')
+ },
+ onShow: function () {
+ console.log('App Show')
+ },
+ onHide: function () {
+ console.log('App Hide')
+ }
+}
+</script>
+
<style lang="scss">
/*姣忎釜椤甸潰鍏叡css */
@import "uview-ui/index.scss";
@@ -21,7 +21,18 @@
justify-content: space-between;
align-items: center;
}
-
+.empty_wrap{
+ padding-top: 280rpx;
+ display: flex;
+ flex-direction: column;
+ align-items: center;
+ justify-content: center;
+ color: #999999;
+ image{
+ width: 220rpx;
+ height: 238rpx;
+ }
+}
.container {
height: 100%;
width: 100%;
@@ -125,7 +136,7 @@
font-size: 28rpx;
}
.red{
- color: red;
+ color: red !important ;
}
//璁剧疆鍦嗚
@@ -235,5 +246,5 @@
}
.mr6 {
margin-right: 6rpx;
-}
-</style>
+}
+</style>
diff --git a/pda/api/index.js b/pda/api/index.js
index cee97c8..a8ee63f 100644
--- a/pda/api/index.js
+++ b/pda/api/index.js
@@ -70,6 +70,22 @@
data
})
}
+// 鍙彿鍒楄〃
+export const platformCallList = (data) => {
+ return http({
+ url: 'visitsAdmin/cloudService/web/pdaPlatform/platformCallList',
+ method: 'post',
+ data
+ })
+}
+// 鍏ュ洯鍙彿
+export const platformInPark = (data) => {
+ return http({
+ url: 'visitsAdmin/cloudService/web/pdaPlatform/platformInPark',
+ method: 'post',
+ data
+ })
+}
// 鏈堝彴鍙彿
export const platformCallNumber = (data) => {
return http({
diff --git a/pda/manifest.json b/pda/manifest.json
index 4d3af04..ae879f7 100644
--- a/pda/manifest.json
+++ b/pda/manifest.json
@@ -19,7 +19,7 @@
"/admin_interface" : {
// 杩欎釜瀛楁鍚嶉渶涓庝綘閰嶇疆鐨刡asePrefixUrl涓�鑷达紝绯荤粺璇嗗埆鍒板甫鏈�/dev-api璇锋眰鐨勫湴鍧�鏃讹紝浼氬湪鍓嶉潰鎷兼帴涓婁唬鐞嗘湇鍔″櫒鍦板潃
// "target" : "http://192.168.0.173/admin_interface", // 浠g悊鏈嶅姟鍣ㄥ煙鍚嶆垨IP鍦板潃
- "target" : "http://192.168.0.136:10010", // 浠g悊鏈嶅姟鍣ㄥ煙鍚嶆垨IP鍦板潃
+ "target" : "http://192.168.0.139:10010", // 浠g悊鏈嶅姟鍣ㄥ煙鍚嶆垨IP鍦板潃
"changeOrigin" : true, // 鍏佽璺ㄥ煙
"pathRewrite" : {
"^/admin_interface" : "" // 閲嶅啓鍦板潃锛屽鏋滃疄闄呮帴鍙d腑鏄笉甯�/dev-api锛岄渶瑕佸皢杩欎釜鍓嶇紑缃┖锛屽洜涓鸿繖涓墠缂�鍙槸涓轰簡璇嗗埆鐢紝璇嗗埆瀹屼箣鍚庡氨娌$敤浜�
diff --git a/pda/package-lock.json b/pda/package-lock.json
new file mode 100644
index 0000000..f3d0f48
--- /dev/null
+++ b/pda/package-lock.json
@@ -0,0 +1,11 @@
+{
+ "requires": true,
+ "lockfileVersion": 1,
+ "dependencies": {
+ "dayjs": {
+ "version": "1.11.13",
+ "resolved": "https://registry.npmjs.org/dayjs/-/dayjs-1.11.13.tgz",
+ "integrity": "sha512-oaMBel6gjolK862uaPQOVTA7q3TZhuSvuMQAAglQDOWYO9A91IrAOUJEyKVlqJlHE0vq5p5UXxzdPfMH/x6xNg=="
+ }
+ }
+}
diff --git a/pda/pages.json b/pda/pages.json
index 206c8e9..3e194d5 100644
--- a/pda/pages.json
+++ b/pda/pages.json
@@ -47,9 +47,9 @@
}
],
"globalStyle": {
- "navigationBarTextStyle": "black",
+ "navigationBarTextStyle": "white",
"navigationBarTitleText": "",
- "navigationBarBackgroundColor": "#ffffff",
+ "navigationBarBackgroundColor": "#4d99a9",
"backgroundColor": "#ffffff"
},
"uniIdRouter": {}
diff --git a/pda/pages/index/center.vue b/pda/pages/index/center.vue
index 531287e..6278be5 100644
--- a/pda/pages/index/center.vue
+++ b/pda/pages/index/center.vue
@@ -2,7 +2,8 @@
<view class="main_app">
<view class="main_content">
<view class="title" @click="showPlatformgroup = true"
- >{{ activePlatformGroup.name }}<u-icon
+ >{{ activePlatformGroup.name
+ }}<u-icon
name="arrow-down"
size="20"
class="ml12"
@@ -12,10 +13,10 @@
<view class="platform_list">
<view
class="item"
- :class="{ active: item.id === activePlatformId }"
+ :class="{ active: item.id === activePlatform.id }"
v-for="(item, index) in activePlatformGroup.platformList"
:key="index"
- @click="platformClick(item.id)"
+ @click="platformClick(item)"
>{{ item.name }}</view
>
</view>
@@ -35,43 +36,92 @@
</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
@@ -81,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>
@@ -134,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">
@@ -194,88 +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>
+ <!-- -->
+ <u-picker
+ :show="showPlatformgroup"
+ keyName="name"
+ :columns="[platformGroupList]"
+ @cancel="showPlatformgroup = false"
+ @confirm="platConfirm"
+ ></u-picker>
</view>
</template>
<script>
-import { getPlatformGroupList, getPlatformWorkData } from '@/api'
+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, // 杞Щ
showPlatformgroup: false,
-
- platformGroupList: [],
- activePlatformGroup: {},
- platformTaskInfo: {},
- activePlatformId: '',
+
+ platformGroupList: [],
+ activePlatformGroup: {},
+ platformTaskInfo: {},
+ activePlatform: {},
+
+ platformCallList: [],//鍙彿鍒楄〃
+ platformCallSearch: '',
+ platformCallTotal: 0,
+ platformCallPage: 1,
+ callType: 1,
+
+ transformPlatId: '', // 杞Щ璁板綍鏈堝彴id
+ transformId: '', // 杞Щ璁板綍浠诲姟id
}
},
onLoad() {
- this.getPlatformGroup()
+ 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.activePlatformId = this.activePlatformGroup.platformList[0].id
- this.getPlatformTask()
- }
- }
- })
- },
- getPlatformTask() {
- getPlatformWorkData({platformId: this.activePlatformId}).then(res => {
- this.platformTaskInfo = res.data
- })
- },
- platConfirm(e) {
- const index = e.indexs[0]
- this.activePlatformGroup = this.platformGroupList[index]
- if(this.activePlatformGroup.platformList && this.activePlatformGroup.platformList.length > 0){
- this.activePlatformId = this.activePlatformGroup.platformList[0].id
- this.getPlatformTask()
- }
- this.showPlatformgroup =false
- },
- platformClick(id) {
- this.activePlatformId = id
- this.getPlatformTask()
- },
+ 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>
@@ -366,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 {
@@ -442,7 +705,7 @@
}
}
.PlatformCallModal {
- height: calc(100vh - 50px);
+ height: calc(100vh - 44px);
padding: 30rpx;
.title {
text-align: center;
@@ -458,7 +721,7 @@
padding: 0 30rpx;
}
.order_list {
- height: calc(100% - 120rpx);
+ height: calc(100% - 140rpx);
.scroll_view {
height: 100%;
}
@@ -508,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 {
@@ -528,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
diff --git a/pda/pages/index/queueup.vue b/pda/pages/index/queueup.vue
index e21a04c..e9e23c7 100644
--- a/pda/pages/index/queueup.vue
+++ b/pda/pages/index/queueup.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"
+ >{{ platformGroup.name
+ }}<u-icon
name="arrow-down"
size="20"
class="ml12"
@@ -12,81 +13,135 @@
<view class="input_wrap">
<u-icon name="search" class="mr12" size="19" color="#999999" />
<input
+ v-model="carCodeFront"
type="text"
placeholder="鎼滅储杞﹁締鐗岀収"
placeholder-class="placeholder9"
+ @confirm="handleQuery"
/>
</view>
<view class="count"
- >宸茬鍒拌溅杈嗭細<text>{{ 10 }}</text></view
+ >宸茬鍒拌溅杈嗭細<text>{{ total }}</text></view
>
</view>
<!-- -->
- <div class="dataList">
- <div class="item">
+ <view class="dataList">
+ <view class="item" v-for="item in platformLineUpList" :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">绛惧埌鏃堕棿锛歿{ 11 }}</view>
+ <view class="status" v-if="item.signDate"
+ >绛惧埌鏃堕棿锛歿{ item.signDate.slice(11, 16) }}</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="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="btns">
<view class="btn active">鍏ュ洯</view>
- </view>
- </div>
- </div>
+ </view> -->
+ </view>
+ <view v-if="platformLineUpList.length == 0" class="empty_wrap">
+ <image src="@/static/default_nodata@2x.png" />
+ <text>鏆傛棤浣滀笟杞﹁締</text>
+ </view>
+ </view>
+ <u-picker
+ :show="showPlatformgroup"
+ keyName="name"
+ :columns="[platformGroupList]"
+ @cancel="showPlatformgroup = false"
+ @confirm="platConfirm"
+ ></u-picker>
</view>
</template>
<script>
- import { platformLineUpPage, getPlatformGroupList } from '@/api'
+import { platformLineUpPage, getPlatformGroupList } from '@/api'
export default {
data() {
return {
showDetail: false,
- capacity: 10,
- page: 1,
- platformGroupId: '',
- platformGroupList: []
+ showPlatformgroup: false,
+ capacity: 10,
+ page: 1,
+ total: 0,
+ carCodeFront: '',
+ platformGroup: {},
+ platformGroupList: [],
+ platformLineUpList: []
}
},
onLoad() {
- this.getPlatformGroup()
- this.initData()
+ this.getPlatformGroup()
},
+ onReachBottom() {
+ if(this.total > this.platformLineUpList.length){
+ this.getList()
+ }
+ },
methods: {
handleDetail() {
this.showDetail = true
},
- getPlatformGroup() {
- getPlatformGroupList().then(res => {
-
- })
- },
- initData(){
- const { page, capacity } = this
- platformLineUpPage({
- capacity, page, model: {}
- })
- }
+ getPlatformGroup() {
+ getPlatformGroupList({
+ queryData: 1,
+ queryType: 0
+ }).then(res => {
+ this.platformGroupList = res.data || []
+ if (this.platformGroupList && this.platformGroupList.length > 0) {
+ this.platformGroup = this.platformGroupList[0]
+ this.getList()
+ }
+ })
+ },
+ getList() {
+ const { page, capacity, platformGroup, carCodeFront } = this
+ platformLineUpPage({
+ capacity, page, model: { platformGroupId: platformGroup.id, callType: 2, carCodeFront }
+ }).then(res => {
+ if (res.data) {
+ this.platformLineUpList = [...this.platformLineUpList, ...res.data.records || []]
+ this.total = res.data.total || 0
+ }
+ })
+ },
+ handleQuery() {
+ this.page = 1
+ this.platformLineUpList = []
+ this.getList()
+ },
+ platConfirm(e) {
+ const index = e.indexs[0]
+ this.platformGroup = this.platformGroupList[index]
+ this.getList()
+ this.showPlatformgroup = false
+ },
}
}
</script>
@@ -152,9 +207,15 @@
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;
}
}
}
diff --git a/pda/static/default_nodata@2x.png b/pda/static/default_nodata@2x.png
index a4de18b..e3f3124 100644
--- a/pda/static/default_nodata@2x.png
+++ b/pda/static/default_nodata@2x.png
Binary files differ
diff --git a/pda/utils/config.js b/pda/utils/config.js
index 03c8927..c34dbbf 100644
--- a/pda/utils/config.js
+++ b/pda/utils/config.js
@@ -2,3 +2,18 @@
export const baseUrl = 'admin_interface/'
export const uploadAvatar = `${baseUrl}visitsAdmin/cloudService/web/public/uploadFtp.do`
export const uploadUrl = `${baseUrl}visitsAdmin/cloudService/public/uploadBatch`
+
+export const statusMap = {
+ 0: '寰呯‘璁�',
+ 1: '寰呯鍒�',
+ 2: '绛夊緟鍙彿',
+ 3: '鍏ュ洯绛夊緟',
+ 4: '鏈堝彴绛夊緟', //宸插彨鍙�
+ 5: '浣滀笟涓�',
+ 6: '浣滀笟瀹屾垚',
+ 7: '杞Щ涓�',
+ 8: '寮傚父鎸傝捣',
+ 9: '宸叉巿鏉冪鍥�',
+ 10: '宸茬鍥�',
+ 11: '宸茶繃鍙�',
+}
\ No newline at end of file
--
Gitblit v1.9.3