From 1382a7990e9b13f60c6416ada5477673a934dd16 Mon Sep 17 00:00:00 2001
From: liukangdong <898885815@qq.com>
Date: 星期四, 29 八月 2024 09:02:57 +0800
Subject: [PATCH] ll
---
pda/utils/service.js | 3
h5/main.js | 10
pda/api/index.js | 108 +++
h5/api/driver.js | 16
h5/pages/driver/index.vue | 20
admin/src/api/platform/index.js | 6
h5/utils/service.js | 3
h5/pages/driver/reserved.vue | 7
pda/pages/index/login.vue | 73 +-
h5/pages/driver/queueUp.vue | 57 +
pda/App.vue | 284 +++++++-
h5/pages/driver/taskDetail.vue | 144 +++-
pda/pages/index/queueup.vue | 21
pda/main.js | 11
pda/pages/index/set.vue | 105 ++
pda/pages/index/center.vue | 67 +
pda/pages/index/control.vue | 47
h5/App.vue | 6
h5/manifest.json | 2
h5/pages/driver/taskConfirm.vue | 809 +++++++++++++------------
pda/manifest.json | 24
admin/.env.development | 2
22 files changed, 1,194 insertions(+), 631 deletions(-)
diff --git a/admin/.env.development b/admin/.env.development
index cf6b164..8e9a34f 100644
--- a/admin/.env.development
+++ b/admin/.env.development
@@ -2,4 +2,4 @@
NODE_ENV = 'development'
VUE_APP_API_URL = 'http://localhost:10010'
-#VUE_APP_API_URL = 'http://192.168.0.173/admin_interface'
+VUE_APP_API_URL = 'http://192.168.0.136:10010'
diff --git a/admin/src/api/platform/index.js b/admin/src/api/platform/index.js
index c399bb2..21c9200 100644
--- a/admin/src/api/platform/index.js
+++ b/admin/src/api/platform/index.js
@@ -1,10 +1,8 @@
import request from '@/utils/request'
// 鏈堝彴鍒楄〃
-export function getPlatform (data) {
- return request.post('/visitsAdmin/cloudService/business/platform/page', data, {
- trim: true
- })
+export function getPlatformGroupList (data) {
+ return request.post('/visitsAdmin/cloudService/business/platformGroup/getPlatformGroupList', data)
}
// 鏈堝彴鍒楄〃 缂栬緫
export function PlatformEdit (data) {
diff --git a/h5/App.vue b/h5/App.vue
index fbec5c3..6594094 100644
--- a/h5/App.vue
+++ b/h5/App.vue
@@ -125,6 +125,9 @@
color: #999999 !important;
font-size: 28rpx;
}
+.red{
+ color: red;
+}
//璁剧疆鍦嗚
checkbox .uni-checkbox-input {
@@ -225,6 +228,9 @@
.ml12 {
margin-left: 12rpx;
}
+.ml6 {
+ margin-left: 6rpx;
+}
.mt6 {
margin-top: 6rpx;
}
diff --git a/h5/api/driver.js b/h5/api/driver.js
index 99bc2ca..22aaa04 100644
--- a/h5/api/driver.js
+++ b/h5/api/driver.js
@@ -96,4 +96,20 @@
method: 'post',
data
})
+}
+// 浠诲姟纭
+export const driverConfirmTask = (data) => {
+ return http({
+ url: 'visitsAdmin/cloudService/web/driverPlatform/confirmTask',
+ method: 'post',
+ data
+ })
+}
+// 浠诲姟绛惧埌
+export const driverSignInTask = (data) => {
+ return http({
+ url: 'visitsAdmin/cloudService/web/driverPlatform/signIn',
+ method: 'post',
+ data
+ })
}
\ No newline at end of file
diff --git a/h5/main.js b/h5/main.js
index 41c035c..619eb5b 100644
--- a/h5/main.js
+++ b/h5/main.js
@@ -18,10 +18,12 @@
Vue.prototype.$jump = (url) => {uni.navigateTo({url})}
Vue.prototype.$goBack = () => { uni.navigateBack() }
Vue.prototype.showToast = (str) => {
- uni.showToast({
- title: str,
- icon: 'none',
- duration: 2000
+ setTimeout(() => {
+ uni.showToast({
+ title: str,
+ icon: 'none',
+ duration: 2000
+ })
})
}
Vue.prototype.$eventBus = new Vue()
diff --git a/h5/manifest.json b/h5/manifest.json
index 22a90b7..205f624 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.135:10010", // 浠g悊鏈嶅姟鍣ㄥ煙鍚嶆垨IP鍦板潃
+ "target" : "http://192.168.0.136:10010", // 浠g悊鏈嶅姟鍣ㄥ煙鍚嶆垨IP鍦板潃
"changeOrigin" : true, // 鍏佽璺ㄥ煙
"pathRewrite" : {
"^/admin_interface" : "" // 閲嶅啓鍦板潃锛屽鏋滃疄闄呮帴鍙d腑鏄笉甯�/dev-api锛岄渶瑕佸皢杩欎釜鍓嶇紑缃┖锛屽洜涓鸿繖涓墠缂�鍙槸涓轰簡璇嗗埆鐢紝璇嗗埆瀹屼箣鍚庡氨娌$敤浜�
diff --git a/h5/pages/driver/index.vue b/h5/pages/driver/index.vue
index 43cd875..f9000a5 100644
--- a/h5/pages/driver/index.vue
+++ b/h5/pages/driver/index.vue
@@ -43,7 +43,7 @@
<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="handleQueup(item)">鏌ョ湅鎺掗槦</view>
+ <view v-if="item.status == 2" class="sub_btn" @click="handleQueue(item)">鏌ョ湅鎺掗槦</view>
</view>
</view>
</view>
@@ -110,13 +110,18 @@
url: '/pages/driver/taskDetail?id=' + item.id
});
},
- handleQueup(item) {},
+ handleQueue(item) {
+ uni.navigateTo({
+ url:'/pages/driver/queueUp?jobId=' + item.id
+ })
+ },
initData() {
driverHomeData().then(res => {
if (res.code == 200) {
uni.setStorageSync('driverGuide', {
bookingTips: res.data.bookingTips,
- reservationMap: res.data.reservationMap
+ reservationMap: res.data.reservationMap,
+ signDistance: res.data.signDistance
});
this.taskList = res.data.platformJobList || []
}
@@ -129,14 +134,9 @@
url: '/pages/driver/login'
});
},
- handleTask(status) {
- if (status == 1) {
- return uni.navigateTo({
- url: '/pages/driver/taskDetail'
- });
- }
+ handleTask(item) {
uni.navigateTo({
- url: '/pages/driver/taskConfirm'
+ url: '/pages/driver/taskConfirm?id=' + item.id
});
}
}
diff --git a/h5/pages/driver/queueUp.vue b/h5/pages/driver/queueUp.vue
index 2b13d91..3c08723 100644
--- a/h5/pages/driver/queueUp.vue
+++ b/h5/pages/driver/queueUp.vue
@@ -1,7 +1,9 @@
<template>
<view class="main_app">
<view class="main_name">
- <text class="mr12">鐗╂祦鍏ュ簱鏈堝彴</text>
+ <text class="mr12" @click="showPlat = true">{{
+ activePlatform.name
+ }}</text>
<u-icon name="arrow-down" color="#777777"></u-icon>
</view>
<!-- -->
@@ -9,7 +11,9 @@
<view class="item" @click="handleCheck()">
<view class="h1">浣滀笟涓溅杈�</view>
<view class="h2">
- <text>4</text>
+ <text v-if="activePlatform.signJobList">{{
+ activePlatform.signJobList.length
+ }}</text>
<text class="unit">杈�</text>
</view>
<image
@@ -19,9 +23,11 @@
></image>
</view>
<view class="item cyan">
- <view class="h1">浣滀笟涓溅杈�</view>
+ <view class="h1">宸茬鍒拌溅杈�</view>
<view class="h2">
- <text>4</text>
+ <text v-if="activePlatform.workJobList">{{
+ activePlatform.workJobList.length
+ }}</text>
<text class="unit">杈�</text>
</view>
<image
@@ -31,27 +37,48 @@
></image>
</view>
</view>
+
+ <u-picker
+ :show="showPlat"
+ keyName="name"
+ :columns="[platformGroupList]"
+ @cancel="showPlat = false"
+ @confirm="platConfirm"
+ ></u-picker>
</view>
</template>
<script>
- import { driverLineUpDetail } from '@/api'
+import { driverLineUpDetail } from '@/api'
export default {
data() {
return {
-
+ activePlatform: {},
+ platformGroupList: [],
+ showPlat: false
}
},
- onLoad() {
- this.getData()
- },
+ onLoad(option) {
+ this.getData(option.jobId || '')
+ },
methods: {
- getData() {
- driverLineUpDetail({
- mobile: uni.getStorageSync('driverInfo').mobile,
- queryType: 0
- })
- },
+ getData(jobId) {
+ 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) {
+ this.activePlatform = res.data.platformGroupList[0]
+ }
+ })
+ },
+ platConfirm(e) {
+ const index = e.indexs[0]
+ this.activePlatform = this.platformGroupList[index]
+ this.showPlat = false
+ },
handleCheck() {
uni.navigateTo({
url: "/pages/driver/queueUpRecord"
diff --git a/h5/pages/driver/reserved.vue b/h5/pages/driver/reserved.vue
index 3477489..0683f0f 100644
--- a/h5/pages/driver/reserved.vue
+++ b/h5/pages/driver/reserved.vue
@@ -211,12 +211,14 @@
this.$forceUpdate();
this.closeInput();
},
+ closeInput() {
+ this.$refs.keyboard.close();
+ },
copy(){
if(this.param.carCodeFront){
this.$set(this.param, 'carCodeBack', this.param.carCodeFront)
this.showToast('澶嶅埗鎴愬姛');
}
-
},
handleUpload() {
let token = uni.getStorageSync('token') || ''
@@ -260,9 +262,6 @@
}
})
},
- closeInput() {
- this.$refs.keyboard.close();
- }
}
};
</script>
diff --git a/h5/pages/driver/taskConfirm.vue b/h5/pages/driver/taskConfirm.vue
index 592c807..7de5284 100644
--- a/h5/pages/driver/taskConfirm.vue
+++ b/h5/pages/driver/taskConfirm.vue
@@ -1,448 +1,461 @@
<template>
- <view class="main_app">
- <view class="status_wrap">
- <image
- class="bg"
- src="../../static/driver/bg_renwu@2x.png"
- mode=""
- ></image>
- <view class="name">浣滀笟宸插畬鎴�</view>
- <view class="id_card">鐨朅D1212</view>
- <view class="status">浣滀笟瀹屾垚</view>
- </view>
- <!-- -->
- <view class="main_content">
- <view class="line">
- <view class="label">鍙告満濮撳悕</view>
- <view class="value">鍒樻煇</view>
- </view>
- <view class="line">
- <view class="label">鎵嬫満鍙�</view>
- <view class="value">188</view>
- </view>
- <view class="line">
- <view class="label">杩愯緭鍗曞彿</view>
- <view class="value" @click="showDetail = true">
- <text class="waybill_num">Y111</text>
- <text class="btn">杩愬崟璇︽儏</text>
- </view>
- </view>
- <view class="line">
- <view class="label">浣滀笟绫诲瀷</view>
- <view class="value">鍏ュ洯瑁呰揣</view>
- </view>
- <view class="empty"></view>
- <!-- -->
- <view class="line">
- <view class="label">杞﹀墠鐗岀収鍙�</view>
- <view class="value" @click="openInput(1)">
- <text :style="{ color: param.carNos ? '#000000' : '#999999' }">{{
- param.carNos ? param.carNos : "璇疯緭鍏ヨ溅鍓嶇墝鐓у彿"
- }}</text>
- </view>
- </view>
- <view class="line">
- <view class="label">杞﹀悗鐗岀収鍙�</view>
- <view class="value">
- <text
- @click="openInput(1)"
- :style="{ color: param.carNos ? '#000000' : '#999999' }"
- >{{ param.carNos ? param.carNos : "璇疯緭鍏ヨ溅鍚庣墝鐓у彿" }}</text
- >
- <text class="copy">澶嶅埗杞﹀墠鐗岀収鍙�</text>
- </view>
- </view>
- <!-- -->
- </view>
- <view class="space"></view>
- <!-- 绛夊緟鍙彿 -->
- <view class="sub_wrap">
- <view class="btn check">纭浠诲姟</view>
- </view>
+ <view class="main_app">
+ <view class="status_wrap">
+ <image class="bg" src="../../static/driver/bg_renwu@2x.png" mode=""></image>
+ <view class="name">璇风‘璁や换鍔�</view>
+ <view class="id_card">{{ param.carCodeFront }}</view>
+ <view class="status">浠诲姟寰呯‘璁�</view>
+ </view>
+ <!-- -->
+ <view class="main_content">
+ <view class="line">
+ <view class="label">鍙告満濮撳悕</view>
+ <view class="value">{{ param.driverName }}</view>
+ </view>
+ <view class="line">
+ <view class="label">鎵嬫満鍙�</view>
+ <view class="value">{{ param.drivierPhone }}</view>
+ </view>
+ <view class="line">
+ <view class="label">杩愯緭鍗曞彿</view>
+ <view class="value" @click="showDetail = true">
+ <text class="waybill_num">{{ param.contractNum }}</text>
+ <text class="btn">杩愬崟璇︽儏</text>
+ </view>
+ </view>
+ <view class="line">
+ <view class="label">浣滀笟绫诲瀷</view>
+ <view class="value">{{ param.inType == 0 ? '鏁存墭鐩�' : '浠剁儫' }}</view>
+ </view>
+ <view class="empty"></view>
+ <!-- -->
+ <view class="line">
+ <view class="label">鍒板満鏃ユ湡<text class="red ml6">*</text></view>
+ <view class="value" @click="showDate = true">
+ <view :class="param.date ? '' : 'placeholder9'">{{ param.date ? param.date : '璇烽�夋嫨' }}</view>
+ <u-icon color="#999999" name="arrow-right"></u-icon>
+ </view>
+ </view>
+ <view class="line">
+ <view class="label">杞﹀墠鐗岀収鍙�</view>
+ <view class="value" @click="openInput(1)">
+ <text :style="{ color: param.carCodeFront ? '#000000' : '#999999' }">{{ param.carCodeFront ? param.carCodeFront : '璇疯緭鍏ヨ溅鍓嶇墝鐓у彿' }}</text>
+ </view>
+ </view>
+ <view class="line">
+ <view class="label">杞﹀悗鐗岀収鍙�<text class="red ml6">*</text></view>
+ <view class="value">
+ <text @click="openInput(2)" :style="{ color: param.carCodeBack ? '#000000' : '#999999' }">{{ param.carCodeBack ? param.carCodeBack : '璇疯緭鍏ヨ溅鍚庣墝鐓у彿' }}</text>
+ <text class="copy" @click="copy">澶嶅埗杞﹀墠鐗岀収鍙�</text>
+ </view>
+ </view>
+ <!-- -->
+ </view>
+ <view class="space"></view>
+ <!-- 绛夊緟鍙彿 -->
+ <view class="sub_wrap"><view class="btn check" @click="onSubmit">纭浠诲姟</view></view>
- <!-- modal -->
- <u-popup
- :show="showDetail"
- :round="10"
- :safeAreaInsetBottom="true"
- closeOnClickOverlay
- :closeable="true"
- mode="bottom"
- @close="showDetail = false"
- >
- <view class="detail_modal">
- <view class="modal_title">杩愬崟璇︽儏</view>
- <view class="id_card">
- <view class="last">鐨�</view>
- <view class="name">AD1111</view>
- </view>
- <!-- -->
- <view class="info">
- <view class="line">
- <view class="label">杩愯緭鍗曞彿</view>
- <view class="value">2222</view>
- </view>
- <view class="line">
- <view class="label">椹鹃┒鍛�</view>
- <view class="value">2222</view>
- </view>
- <view class="line">
- <view class="label">鎬昏繍杈撻噺</view>
- <view class="value">2222</view>
- </view>
- <view class="line">
- <view class="label">杩愯緭鍏徃</view>
- <view class="value">2222</view>
- </view>
- </view>
- <view class="separate"></view>
- <view class="contract_list">
- <view class="title">鍚堝悓鍙凤細111</view>
- <view class="address">aadd</view>
- <view class="list">
- <view class="line">
- <view class="label">鐗╂枡锛�</view>
- <view class="value">榛勫北榛戦┈</view>
- </view>
- <view class="line">
- <view class="label">鏁伴噺锛�</view>
- <view class="value">榛勫北榛戦┈</view>
- </view>
- <view class="line">
- <view class="label">鐗╂枡锛�</view>
- <view class="value">榛勫北榛戦┈</view>
- </view>
- <view class="line">
- <view class="label">鏁伴噺锛�</view>
- <view class="value">榛勫北榛戦┈</view>
- </view>
- </view>
- </view>
- </view>
- </u-popup>
- <keyboardInput ref="keyboard" @export="setPlate" @close="closeInput" />
- </view>
- <!-- -->
+ <!-- modal -->
+ <u-popup :show="showDetail" :round="10" :safeAreaInsetBottom="true" closeOnClickOverlay :closeable="true" mode="bottom" @close="showDetail = false">
+ <view class="detail_modal">
+ <view class="modal_title">杩愬崟璇︽儏</view>
+ <view class="id_card">
+ <view class="last">鐨�</view>
+ <view class="name">AD1111</view>
+ </view>
+ <!-- -->
+ <view class="info">
+ <view class="line">
+ <view class="label">杩愯緭鍗曞彿</view>
+ <view class="value">2222</view>
+ </view>
+ <view class="line">
+ <view class="label">椹鹃┒鍛�</view>
+ <view class="value">2222</view>
+ </view>
+ <view class="line">
+ <view class="label">鎬昏繍杈撻噺</view>
+ <view class="value">2222</view>
+ </view>
+ <view class="line">
+ <view class="label">杩愯緭鍏徃</view>
+ <view class="value">2222</view>
+ </view>
+ </view>
+ <view class="separate"></view>
+ <view class="contract_list">
+ <view class="title">鍚堝悓鍙凤細111</view>
+ <view class="address">aadd</view>
+ <view class="list">
+ <view class="line">
+ <view class="label">鐗╂枡锛�</view>
+ <view class="value">榛勫北榛戦┈</view>
+ </view>
+ <view class="line">
+ <view class="label">鏁伴噺锛�</view>
+ <view class="value">榛勫北榛戦┈</view>
+ </view>
+ <view class="line">
+ <view class="label">鐗╂枡锛�</view>
+ <view class="value">榛勫北榛戦┈</view>
+ </view>
+ <view class="line">
+ <view class="label">鏁伴噺锛�</view>
+ <view class="value">榛勫北榛戦┈</view>
+ </view>
+ </view>
+ </view>
+ </view>
+ </u-popup>
+ <u-datetime-picker :show="showDate" v-model="param.date" :minDate="minDate" @confirm="dateEnter" @cancel="showDate = false" mode="datetime"></u-datetime-picker>
+ <keyboardInput ref="keyboard" @export="setPlate" @close="closeInput" />
+ </view>
+ <!-- -->
</template>
<script>
-import keyboardInput from '@/components/keyboard-input/keyboard-input.vue'
+import keyboardInput from '@/components/keyboard-input/keyboard-input.vue';
+import { driverTaskJobDetail, driverConfirmTask } from '@/api';
+import dayjs from 'dayjs'
export default {
- components: {
- keyboardInput
- },
- data() {
- return {
- param: {
- status: '0'
- },
- showDetail: false,
+ components: {
+ keyboardInput
+ },
+ data() {
+ return {
+ param: {},
+ showDate: false,
+ showDetail: false,
+ minDate: '',
- inputType: ''
- }
- },
- methods: {
- handleSignIn() {
- const { param } = this
- this.param.status = param.status == '0' ? '1' : '0'
- },
- getLocation() {
- uni.getLocation({
- type: 'wgs84',
- success: function (res) {
- console.log('褰撳墠浣嶇疆鐨勭粡搴︼細' + res.longitude)
- console.log('褰撳墠浣嶇疆鐨勭含搴︼細' + res.latitude)
- }
- })
- },
- openInput(type) {
- this.inputType = type
- this.$refs.keyboard.open()
- },
- setPlate(e) {
- if (this.inputType === 1) {
- this.param.carNos = e
- } else if (this.inputType === 2) {
- this.param.carNos = e
- }
- this.$forceUpdate()
- this.closeInput()
- },
- closeInput() {
- this.$refs.keyboard.close()
- }
- }
-}
+ inputType: ''
+ };
+ },
+ onLoad(option) {
+ this.getDetail(option.id);
+ this.minDate = new Date().getTime()
+ },
+ methods: {
+ onSubmit(){
+ const { param } = this
+ if(!param.date) return this.showToast('璇烽�夋嫨鍒板満鏃ユ湡')
+ if(!param.carCodeBack) return this.showToast('璇疯緭鍏ヨ溅鍚庣墝鐓у彿')
+ driverConfirmTask({
+ id: param.id,
+ carCodeBack: param.carCodeBack,
+ arriveDate: param.date + ':59'
+ }).then(res =>{
+ this.showToast('纭鎴愬姛')
+ uni.navigateBack()
+ })
+ },
+ getDetail(jobId) {
+ driverTaskJobDetail({
+ jobId
+ }).then(ress => {
+ this.param = { ...ress.data, carCodeBack: '' };
+ });
+ },
+ dateEnter(e) {
+ setTimeout(() => {
+ this.$set(this.param, 'date', dayjs(e.value).format('YYYY-MM-DD HH:mm'))
+ })
+ this.showDate = false
+ },
+ openInput(type) {
+ this.inputType = type;
+ this.$refs.keyboard.open();
+ },
+ copy() {
+ if (this.param.carCodeFront) {
+ this.$set(this.param, 'carCodeBack', this.param.carCodeFront);
+ this.showToast('澶嶅埗鎴愬姛');
+ }
+ },
+ setPlate(e) {
+ if (this.inputType === 1) {
+ this.$set(this.param, 'carCodeFront', e);
+ } else if (this.inputType === 2) {
+ this.$set(this.param, 'carCodeBack', e);
+ }
+ this.$forceUpdate();
+ this.closeInput();
+ },
+ closeInput() {
+ this.$refs.keyboard.close();
+ }
+ }
+};
</script>
<style lang="scss">
page {
- background-color: #f7f7f7;
+ background-color: #f7f7f7;
}
.main_app {
- padding: 0;
+ padding: 0;
- .main_content {
- background: #ffffff;
- border-radius: 20rpx 20rpx 0rpx 0rpx;
- padding: 16rpx 30rpx;
- position: relative;
- bottom: 32rpx;
+ .main_content {
+ background: #ffffff;
+ border-radius: 20rpx 20rpx 0rpx 0rpx;
+ padding: 16rpx 30rpx;
+ position: relative;
+ bottom: 32rpx;
+ z-index: 999;
+ .line {
+ padding: 24rpx 0 28rpx;
+ border-bottom: 1rpx solid #e5e5e5;
- .line {
- padding: 24rpx 0 28rpx;
- border-bottom: 1rpx solid #e5e5e5;
+ .label {
+ font-size: 26rpx;
+ color: #666666;
+ margin-bottom: 20rpx;
+ }
- .label {
- font-size: 26rpx;
- color: #666666;
- margin-bottom: 20rpx;
- }
+ .value {
+ display: flex;
+ justify-content: space-between;
+ align-items: center;
+ font-size: 30rpx;
- .value {
- display: flex;
- justify-content: space-between;
- align-items: center;
- font-size: 30rpx;
+ .waybill_num {
+ flex: 1;
+ }
- .waybill_num {
- flex: 1;
- }
+ .copy {
+ font-size: 26rpx;
+ color: $uni-color-primary;
+ }
- .copy {
- font-size: 26rpx;
- color: $uni-color-primary;
- }
+ .btn {
+ font-size: 28rpx;
+ color: $uni-color-primary;
+ display: flex;
+ }
+ }
+ }
+ .empty {
+ width: 750rpx;
+ height: 20rpx;
+ background-color: #f7f7f7;
+ margin: 0 -30rpx;
+ }
+ .warnning {
+ display: flex;
+ color: #ed4545;
+ align-items: center;
+ margin: 40rpx 0;
+ }
- .btn {
- font-size: 28rpx;
- color: $uni-color-primary;
- display: flex;
- }
- }
- }
- .empty {
- width: 750rpx;
- height: 20rpx;
- background-color: #f7f7f7;
- margin: 0 -30rpx;
- }
- .warnning {
- display: flex;
- color: #ed4545;
- align-items: center;
- margin: 40rpx 0;
- }
+ .signIn_wrap {
+ margin: 80rpx auto;
+ width: 260rpx;
+ height: 260rpx;
+ position: relative;
+ color: #fff;
+ z-index: 1;
+ display: flex;
+ flex-direction: column;
+ justify-content: center;
+ align-items: center;
- .signIn_wrap {
- margin: 80rpx auto;
- width: 260rpx;
- height: 260rpx;
- position: relative;
- color: #fff;
- z-index: 1;
- display: flex;
- flex-direction: column;
- justify-content: center;
- align-items: center;
+ .handle {
+ font-weight: 600;
+ font-size: 40rpx;
+ line-height: 56rpx;
+ }
- .handle {
- font-weight: 600;
- font-size: 40rpx;
- line-height: 56rpx;
- }
+ .time {
+ color: rgba(255, 255, 255, 0.7);
+ }
- .time {
- color: rgba(255, 255, 255, 0.7);
- }
+ .img {
+ position: absolute;
+ top: 0;
+ left: 0;
+ width: 100%;
+ z-index: -1;
+ }
+ }
+ }
- .img {
- position: absolute;
- top: 0;
- left: 0;
- width: 100%;
- z-index: -1;
- }
- }
- }
+ .status_wrap {
+ height: 200rpx;
+ width: 100%;
+ padding: 30rpx;
+ position: relative;
+ z-index: 99;
+ color: #fff;
+ .bg {
+ width: 100%;
+ height: 100%;
+ position: absolute;
+ top: 0;
+ left: 0;
+ z-index: -1;
+ }
- .status_wrap {
- height: 200rpx;
- width: 100%;
- padding: 30rpx;
- position: relative;
- z-index: 99;
- color: #fff;
- .bg {
- width: 100%;
- height: 100%;
- position: absolute;
- top: 0;
- left: 0;
- z-index: -1;
- }
+ .name {
+ font-weight: 600;
+ font-size: 40rpx;
+ line-height: 56rpx;
+ margin-bottom: 12rpx;
+ }
- .name {
- font-weight: 600;
- font-size: 40rpx;
- line-height: 56rpx;
- margin-bottom: 12rpx;
- }
+ .id_card {
+ color: rgba(255, 255, 255, 0.8);
+ }
+ .status {
+ position: absolute;
+ right: 0;
+ top: 30rpx;
+ height: 68rpx;
+ line-height: 68rpx;
+ background: #ffffff;
+ padding: 0 24rpx;
+ border-radius: 34rpx 0rpx 0rpx 34rpx;
+ font-size: 26rpx;
+ color: $uni-color-primary;
+ }
+ }
- .id_card {
- color: rgba(255, 255, 255, 0.8);
- }
- .status {
- position: absolute;
- right: 0;
- top: 30rpx;
- height: 68rpx;
- line-height: 68rpx;
- background: #ffffff;
- padding: 0 24rpx;
- border-radius: 34rpx 0rpx 0rpx 34rpx;
- font-size: 26rpx;
- color: $uni-color-primary;
- }
- }
+ .space {
+ width: 750rpx;
+ height: 200rpx;
+ }
- .space {
- width: 750rpx;
- height: 200rpx;
- }
+ .sub_wrap {
+ position: fixed;
+ padding: 16rpx 30rpx 64rpx;
+ bottom: 0;
+ left: 0;
+ width: 100%;
+ display: flex;
+ z-index: 1;
+ justify-content: space-between;
+ background-color: #fff;
+ .btn {
+ height: 96rpx;
+ line-height: 96rpx;
+ text-align: center;
+ width: 690rpx;
+ font-size: 36rpx;
+ color: #333333;
+ background: #ffffff;
+ border-radius: 48rpx;
+ border: 1rpx solid #999999;
+ }
- .sub_wrap {
- position: fixed;
- padding: 16rpx 30rpx 64rpx;
- bottom: 0;
- left: 0;
- width: 100%;
- display: flex;
- z-index: 1;
- justify-content: space-between;
- background-color: #fff;
- .btn {
- height: 96rpx;
- line-height: 96rpx;
- text-align: center;
- width: 690rpx;
- font-size: 36rpx;
- color: #333333;
- background: #ffffff;
- border-radius: 48rpx;
- border: 1rpx solid #999999;
- }
-
- .check {
- background: $uni-color-primary;
- border: 1rpx solid $uni-color-primary;
- color: #fff;
- }
- }
+ .check {
+ background: $uni-color-primary;
+ border: 1rpx solid $uni-color-primary;
+ color: #fff;
+ }
+ }
}
.detail_modal {
- padding: 36rpx 30rpx;
+ padding: 36rpx 30rpx;
- .modal_title {
- font-weight: 600;
- font-size: 32rpx;
- color: #222222;
- line-height: 44rpx;
- text-align: center;
- margin-bottom: 36rpx;
- }
+ .modal_title {
+ font-weight: 600;
+ font-size: 32rpx;
+ color: #222222;
+ line-height: 44rpx;
+ text-align: center;
+ margin-bottom: 36rpx;
+ }
- .contract_list {
- .list {
- background: #f7f7f7;
- border-radius: 8rpx;
- padding: 20rpx;
+ .contract_list {
+ .list {
+ background: #f7f7f7;
+ border-radius: 8rpx;
+ padding: 20rpx;
- .line {
- display: flex;
- margin-bottom: 20rpx;
+ .line {
+ display: flex;
+ margin-bottom: 20rpx;
- &:nth-of-type(3n) {
- border-top: 1rpx solid #e5e5e5;
- padding-top: 20rpx;
- }
+ &:nth-of-type(3n) {
+ border-top: 1rpx solid #e5e5e5;
+ padding-top: 20rpx;
+ }
- .label {
- color: #666666;
- width: 86rpx;
- }
+ .label {
+ color: #666666;
+ width: 86rpx;
+ }
- .value {
- flex: 1;
- color: #222222;
- }
- }
- }
+ .value {
+ flex: 1;
+ color: #222222;
+ }
+ }
+ }
- .title {
- font-weight: 600;
- font-size: 30rpx;
- color: $uni-color-primary;
- margin-bottom: 12rpx;
- }
+ .title {
+ font-weight: 600;
+ font-size: 30rpx;
+ color: $uni-color-primary;
+ margin-bottom: 12rpx;
+ }
- .address {
- font-size: 26rpx;
- color: #666666;
- margin-bottom: 20rpx;
- }
- }
+ .address {
+ font-size: 26rpx;
+ color: #666666;
+ margin-bottom: 20rpx;
+ }
+ }
- .info {
- .line {
- display: flex;
- margin-bottom: 20rpx;
+ .info {
+ .line {
+ display: flex;
+ margin-bottom: 20rpx;
- .label {
- font-size: 30rpx;
- color: #666666;
- width: 150rpx;
- }
+ .label {
+ font-size: 30rpx;
+ color: #666666;
+ width: 150rpx;
+ }
- .value {
- flex: 1;
- font-size: 30rpx;
- color: #222222;
- }
- }
- }
+ .value {
+ flex: 1;
+ font-size: 30rpx;
+ color: #222222;
+ }
+ }
+ }
- .separate {
- width: 750rpx;
- height: 2rpx;
- margin: 30rpx -30rpx;
- border: 1rpx solid #e5e5e5;
- }
+ .separate {
+ width: 750rpx;
+ height: 2rpx;
+ margin: 30rpx -30rpx;
+ border: 1rpx solid #e5e5e5;
+ }
- .id_card {
- border-radius: 8rpx;
- display: flex;
- height: 60rpx;
- line-height: 60rpx;
- font-weight: 600;
- font-size: 36rpx;
- color: #111111;
- text-align: center;
- margin-bottom: 30rpx;
+ .id_card {
+ border-radius: 8rpx;
+ display: flex;
+ height: 60rpx;
+ line-height: 60rpx;
+ font-weight: 600;
+ font-size: 36rpx;
+ color: #111111;
+ text-align: center;
+ margin-bottom: 30rpx;
- .last {
- background: #e9f5f6;
- width: 60rpx;
- border-radius: 8rpx 0rpx 0rpx 8rpx;
- border: 1rpx solid #dfdede;
- }
+ .last {
+ background: #e9f5f6;
+ width: 60rpx;
+ border-radius: 8rpx 0rpx 0rpx 8rpx;
+ border: 1rpx solid #dfdede;
+ }
- .name {
- width: 186rpx;
- border: 1rpx solid #dfdede;
- }
- }
+ .name {
+ width: 186rpx;
+ border: 1rpx solid #dfdede;
+ }
+ }
}
</style>
diff --git a/h5/pages/driver/taskDetail.vue b/h5/pages/driver/taskDetail.vue
index 0365e8f..84f8f11 100644
--- a/h5/pages/driver/taskDetail.vue
+++ b/h5/pages/driver/taskDetail.vue
@@ -20,38 +20,58 @@
<view class="main_content">
<view class="line">
<view class="label">鍙告満濮撳悕</view>
- <view class="value">{{param.lineUpNum}}</view>
+ <view class="value">{{param.driverName}}</view>
</view>
<view class="line">
<view class="label">鎵嬫満鍙�</view>
- <view class="value">{{param.lineUpNum}}</view>
+ <view class="value">{{param.drivierPhone}}</view>
</view>
- <view class="line">
- <view class="label">杩愯緭鍗曞彿</view>
- <view class="value" @click="showDetail = true">
- <text class="waybill_num">{{param.lineUpNum}}</text>
- <text class="btn">杩愬崟璇︽儏</text>
- </view>
- </view>
- <view class="line">
- <view class="label">浣滀笟绫诲瀷</view>
- <view class="value">{{param.lineUpNum}}</view>
- </view>
+ <template v-if="param.type == 4">
+ <view class="line">
+ <view class="label">杩愯緭鍗曞彿</view>
+ <view class="value" @click="showDetail = true">
+ <text class="waybill_num">{{param.code}}</text>
+ <text class="btn">杩愬崟璇︽儏</text>
+ </view>
+ </view>
+ <view class="line">
+ <view class="label">浣滀笟绫诲瀷</view>
+ <view class="value">甯傚叕鍙稿鍗忚溅鍗歌揣</view>
+ </view>
+ </template>
+ <template v-else>
+ <view class="line">
+ <view class="label">鍚堝悓缂栧彿</view>
+ <view class="value">{{param.contractNum}}</view>
+ </view>
+ <view class="line">
+ <view class="label">鍏ュ簱绫诲瀷</view>
+ <view class="value">{{param.inType == 0 ? '鏁存墭鐩�' : '浠剁儫'}}</view>
+ </view>
+ <view class="line">
+ <view class="label">浣滀笟閲�</view>
+ <view class="value">{{param.totalNum}}涓囨敮</view>
+ </view>
+ </template>
<view class="line">
<view class="label">杞︾墝鐓�</view>
- <view class="value">{{param.lineUpNum}}</view>
+ <view class="value">鍓嶏細{{param.carCodeFront}} | 鍚庯細{{param.carCodeBack}}</view>
</view>
<!-- -->
- <view class="line">
+ <view class="line" v-if="param.status == 1">
<view class="label">璺濈鍥尯</view>
<view class="value">
- <view class="">0 鍏噷</view>
+ <view class="">{{param.getDistance}}鍏噷</view>
<view class="btn" @click="getLocation">
<image class="icon mr6" src="../../static/driver/position.png"></image>
閲嶆柊瀹氫綅
</view>
</view>
</view>
+ <view class="line" v-if="param.status == 2">
+ <view class="label">绛惧埌鏃堕棿</view>
+ <view class="value">{{param.signDate}}</view>
+ </view>
<view class="warnning">
<u-icon name="info-circle" color="#ED4545" class="mr12"></u-icon>
濡傛棤娉曡幏鍙栧畾浣嶏紝璇风敤寰俊鎵弿鍥尯澶у睆浜岀淮
@@ -68,25 +88,24 @@
<view class="label">浣滀笟瀹屾垚</view>
<view class="value">2022</view>
</view> -->
- <view class="signIn_wrap" @click="handleSignIn">
+ <view v-if="param.status == 1" class="signIn_wrap" @click="handleSignIn">
<image
:src="
- param.status == '0'
+ param.getDistance < signDistance
? require('@/static/driver/btn_qiandao@2x.png')
: require('@/static/driver/btn_qiandao_fail@2x.png')
"
class="img"
mode="widthFix"
></image>
- <view class="handle">绛惧埌</view>
- <view class="time">09:10</view>
+ <view class="handle">{{ param.getDistance > signDistance ? '鏃犳硶绛惧埌' : '绛惧埌' }}</view>
+ <view class="time">{{nowTime}}</view>
</view>
</view>
<view class="space"></view>
<!-- 绛夊緟鍙彿 -->
- <view class="padding_wrap">
- <view class="btn cancel">鍙栨秷绛惧埌</view>
- <view class="btn check">鏌ョ湅鎺掗槦鎯呭喌</view>
+ <view v-if="param.status == 2" class="padding_wrap">
+ <view class="btn check" @click="handleQueue">鏌ョ湅鎺掗槦鎯呭喌</view>
</view>
<!-- modal -->
@@ -153,42 +172,79 @@
</template>
<script>
- import { driverTaskJobDetail } from '@/api'
+ import { driverTaskJobDetail, driverSignInTask } from '@/api';
+ import dayjs from 'dayjs';
export default {
data() {
return {
param: {
status: '0'
},
+ jobId: '',
+ lat: '',
+ lnt: '',
+ nowTime: '',
+ signDistance: uni.getStorageSync('driverGuide').signDistance,
showDetail: false,
}
},
onLoad(option) {
- this.getLocation(option.id)
+ this.jobId = option.id
+ if(option.status && option.status == '1'){
+ this.getLocation()
+ }else{
+ this.getDetail()
+ }
+
+ // this.getDetail({
+ // jobId: option.id,
+ // lat: 31.769137,
+ // lnt: 117.232241,
+ // })
+ setInterval(() => {
+ this.nowTime = dayjs().format('HH:mm:ss')
+ })
},
methods: {
handleSignIn() {
- const { param } = this
- this.param.status = param.status == '0' ? '1' : '0'
+ const { param, signDistance, lat, lnt, jobId } = this
+ if(param.getDistance > signDistance) return
+ driverSignInTask({
+ jobId, lat, lnt,signType: 0
+ }).then(res => {
+ this.showToast('绛惧埌鎴愬姛')
+ this.getDetail()
+ })
},
- getLocation(jobId) {
+ getDetail() {
+ const { jobId, lat, lnt } = this
+ driverTaskJobDetail({
+ jobId: this.jobId,
+ lat,
+ lnt
+ }).then(ress => {
+ this.param = { ...ress.data }
+ })
+ },
+ getLocation() {
+ const { jobId } = this
uni.getLocation({
type: 'wgs84',
-
- success: function (res) {
- driverTaskJobDetail({
- jobId,
- lat: res.latitude,
- lnt: res.longitude,
- }).then(ress => {
- this.param = { ...ress.data }
- })
- console.log(res);
- console.log('褰撳墠浣嶇疆鐨勭粡搴︼細' + res.longitude)
- console.log('褰撳墠浣嶇疆鐨勭含搴︼細' + res.latitude)
- }
+ success: (res) => {
+ this.lat = res.latitude
+ this.lnt = res.longitude
+ this.getDetail()
+ },
+ fail:(err) => {
+ console.log('err', err);
+ }
})
- }
+ },
+ handleQueue() {
+ uni.navigateTo({
+ url:'/pages/driver/queueUp?jobId=' + this.jobId
+ })
+ },
}
}
</script>
@@ -202,6 +258,7 @@
padding: 16rpx 30rpx;
position: relative;
bottom: 32rpx;
+ z-index: 999;
.line {
padding: 24rpx 0 28rpx;
border-bottom: 1rpx solid #e5e5e5;
@@ -308,6 +365,7 @@
}
.padding_wrap {
position: fixed;
+ z-index: 999;
padding: 0 30rpx 64rpx;
bottom: 0;
left: 0;
@@ -318,7 +376,7 @@
height: 96rpx;
line-height: 96rpx;
text-align: center;
- width: 336rpx;
+ width: 100%;
font-size: 36rpx;
color: #333333;
background: #ffffff;
diff --git a/h5/utils/service.js b/h5/utils/service.js
index fee9e39..de45fb8 100644
--- a/h5/utils/service.js
+++ b/h5/utils/service.js
@@ -34,10 +34,11 @@
duration: 2000
})
})
+ return
}
if (data.code === 5112) {
uni.clearStorageSync()
- uni.navigateTo({
+ return uni.navigateTo({
url: '/pages/login/login'
})
}
diff --git a/pda/App.vue b/pda/App.vue
index b9da85e..039c633 100644
--- a/pda/App.vue
+++ b/pda/App.vue
@@ -12,66 +12,228 @@
}
</script>
-<style lang="scss">
-@import "uview-ui/index.scss";
-/*姣忎釜椤甸潰鍏叡css */
-view {
- box-sizing: border-box;
-}
-
-image {
- box-sizing: border-box;
- margin: 0;
- display: flex;
-}
-input {
- font-size: 30rpx;
-}
-textarea {
- box-sizing: border-box;
- // background-color: #f7f7f7;
- font-size: 30rpx !important;
- padding: 0;
- border-radius: 8rpx;
- color: #333333 !important;
-}
-.u-textarea {
- padding: 0 !important;
- color: #333333 !important;
-}
-
-.df_ac {
- display: flex;
- align-items: center;
-}
-
-.main_app {
- padding: 0 30rpx 30rpx;
- font-size: 28rpx;
- color: #333333;
-}
-.primaryColor{
- color: $uni-color-primary;
-}
-.placeholder9 {
- color: #999999;
- font-size: 28rpx;
-}
-.fs24 {
- font-size: 24rpx;
-}
-.mr24 {
- margin-right: 24rpx;
-}
-
-.mr12 {
- margin-right: 12rpx;
-}
-.ml12 {
- margin-left: 12rpx;
-}
-
-.mr6 {
- margin-right: 6rpx;
+<style lang="scss">
+/*姣忎釜椤甸潰鍏叡css */
+@import "uview-ui/index.scss";
+
+.flex-cb {
+ display: flex;
+ justify-content: space-between;
+ align-items: center;
+}
+
+.container {
+ height: 100%;
+ width: 100%;
+ max-width: 800rpx;
+ overflow-y: auto;
+}
+
+.doumee-container .ivu-tabs-nav {
+ width: 100%;
+}
+
+.doumee-container .ivu-tabs-nav .ivu-tabs-tab {
+ width: calc(100% / 3);
+}
+
+.doumee-container .ivu-tabs-nav .ivu-tabs-tab {
+ margin-right: 0;
+ text-align: center;
+}
+
+.cell {
+ background-color: #fff;
+ display: flex;
+ justify-content: space-between;
+ align-items: center;
+ min-height: 100rpx;
+ padding: 24rpx 30rpx;
+ box-sizing: border-box;
+ border-bottom: 1rpx solid #eee;
+ font-size: 15rpx;
+ position: relative;
+}
+
+.cell .title {
+ flex-shrink: 0;
+ color: #222;
+ line-height: 20rpx;
+ height: 20rpx;
+ width: 28%;
+ margin-right: 5%;
+}
+
+.cell .content {
+ flex: 1;
+ font-size: 28rpx;
+ font-weight: 400;
+ color: #999999;
+ display: flex;
+ align-items: center;
+ justify-content: flex-end;
+}
+
+.cell .content .input {
+ width: 100%;
+ height: 100%;
+ font-size: 28rpx;
+ font-weight: 400;
+ color: #333333;
+ text-align: right;
+}
+
+.cell.is-link::after {
+ content: "";
+ display: block;
+ width: 8rpx;
+ height: 8rpx;
+ transform: rotate(-45deg);
+ border-right: 1rpx solid #999999;
+ border-bottom: 1rpx solid #999999;
+ margin-left: 5rpx;
+}
+
+.card {
+ background-color: #fff;
+ padding: 16rpx;
+ position: relative;
+}
+
+.card::after {
+ content: "";
+ display: block;
+ position: absolute;
+ width: calc(100% - 32rpx);
+ height: 0;
+ bottom: 0;
+ left: 16rpx;
+ border-bottom: 1rpx solid #f7f7f7;
+}
+
+.card .title {
+ color: #777777;
+ margin-bottom: 12rpx;
+}
+
+.card .content {
+ color: #222;
+}
+
+.placeholder9 {
+ color: #999999 !important;
+ font-size: 28rpx;
+}
+.red{
+ color: red;
+}
+
+//璁剧疆鍦嗚
+checkbox .uni-checkbox-input {
+ border-radius: 50%;
+}
+
+checkbox .uni-checkbox-input.uni-checkbox-input-checked {
+ color: #fff !important;
+ border: 1px solid #4d99a8 !important;
+ background-color: #4d99a8 !important;
+}
+
+checkbox .uni-checkbox-input.uni-checkbox-input-checked:before {
+ /* color: #4d99a8 !important; */
+ /* border: 1px solid #4d99a8 !important; */
+ /* font-size: 58rpx; */
+ /* border-radius: 50%; */
+}
+
+//
+
+view {
+ box-sizing: border-box;
+}
+
+image {
+ box-sizing: border-box;
+ margin: 0;
+ display: flex;
+}
+input {
+ font-size: 30rpx;
+}
+textarea {
+ box-sizing: border-box;
+ // background-color: #f7f7f7;
+ font-size: 30rpx !important;
+ padding: 0;
+ border-radius: 8rpx;
+ color: #333333 !important;
+}
+.u-textarea {
+ padding: 0 !important;
+ color: #333333 !important;
+}
+
+.df_ac {
+ display: flex;
+ align-items: center;
+}
+
+.main_app {
+ padding: 0 30rpx 30rpx;
+ font-size: 28rpx;
+ color: #333333;
+}
+.popupShow {
+ overflow: hidden;
+ position: fixed;
+ width: 100%;
+}
+.placeholder6 {
+ color: #666666;
+ font-size: 28rpx;
+}
+.primaryColor {
+ color: $uni-color-primary;
+}
+.avatar {
+ width: 64rpx;
+ height: 64rpx;
+ border-radius: 50%;
+ margin-right: 20rpx;
+ display: flex;
+ justify-content: center;
+ align-items: center;
+ background-color: $uni-color-primary;
+ color: #fff;
+ font-size: 30rpx;
+}
+.placeholder9 {
+ color: #999999;
+ font-size: 28rpx;
+}
+.fs24 {
+ font-size: 24rpx;
+}
+.mr24 {
+ margin-right: 24rpx;
+}
+.mt24 {
+ margin-top: 24rpx;
+}
+
+.mr12 {
+ margin-right: 12rpx;
+}
+.ml12 {
+ margin-left: 12rpx;
+}
+.ml6 {
+ margin-left: 6rpx;
+}
+.mt6 {
+ margin-top: 6rpx;
+}
+.mr6 {
+ margin-right: 6rpx;
}
</style>
diff --git a/pda/api/index.js b/pda/api/index.js
index 159ac65..cee97c8 100644
--- a/pda/api/index.js
+++ b/pda/api/index.js
@@ -18,6 +18,18 @@
data
})
}
+export const getUserInfo = () => {
+ return http({
+ url: 'getUserInfo',
+ method: 'get'
+ })
+}
+export const loginCaptcha = () => {
+ return http({
+ url: 'captcha',
+ method: 'get'
+ })
+}
// 鍙戦�佺煭淇¢獙璇佺爜
export const sendSms = (data) => {
return http({
@@ -25,4 +37,100 @@
method: 'post',
data
})
+}
+// 鐧诲綍
+export const loginPost = (data) => {
+ return http({
+ url: 'loginH5',
+ method: 'post',
+ data
+ })
+}
+// 鑾峰彇鏈堝彴缁勪俊鎭�
+export const getPlatformGroupList = (data) => {
+ return http({
+ url: 'visitsAdmin/cloudService/web/pdaPlatform/getPlatformGroupList',
+ method: 'post',
+ data
+ })
+}
+// 鑾峰彇鏈堝彴 浠诲姟淇℃伅
+export const getPlatformWorkData = (data) => {
+ return http({
+ url: 'visitsAdmin/cloudService/web/pdaPlatform/getPlatformWorkData',
+ method: 'get',
+ data
+ })
+}
+// 杞﹁締鎺掗槦鎯呭喌
+export const platformLineUpPage = (data) => {
+ return http({
+ url: 'visitsAdmin/cloudService/web/pdaPlatform/platformLineUpPage',
+ method: 'post',
+ data
+ })
+}
+// 鏈堝彴鍙彿
+export const platformCallNumber = (data) => {
+ return http({
+ url: 'visitsAdmin/cloudService/web/pdaPlatform/platformCallNumber',
+ method: 'post',
+ data
+ })
+}
+// 寮傚父鎸傝捣
+export const platformErr = (data) => {
+ return http({
+ url: 'visitsAdmin/cloudService/web/pdaPlatform/platformErr',
+ method: 'post',
+ data
+ })
+}
+// 杞Щ鏈堝彴
+export const platformMove = (data) => {
+ return http({
+ url: 'visitsAdmin/cloudService/web/pdaPlatform/platformMove',
+ method: 'post',
+ data
+ })
+}
+// 鏈堝彴杩囧彿
+export const platformOverNumber = (data) => {
+ return http({
+ url: 'visitsAdmin/cloudService/web/pdaPlatform/platformOverNumber',
+ method: 'post',
+ data
+ })
+}
+// 瀹屾垚浣滀笟
+export const finishWork = (data) => {
+ return http({
+ url: 'visitsAdmin/cloudService/web/pdaPlatform/finishWork',
+ method: 'post',
+ data
+ })
+}
+// 鎵嬪姩寮�濮嬩綔涓�
+export const beginWork = (data) => {
+ return http({
+ url: 'visitsAdmin/cloudService/web/pdaPlatform/beginWork',
+ method: 'post',
+ data
+ })
+}
+// 鏇存柊鏈堝彴閰嶇疆淇℃伅
+export const updUserPlatformConfig = (data) => {
+ return http({
+ url: 'visitsAdmin/cloudService/web/pdaPlatform/updUserPlatformConfig',
+ method: 'get',
+ data
+ })
+}
+// 淇敼绂佸惎鐢ㄧ姸鎬�
+export const updPlatformStatus = (data) => {
+ return http({
+ url: 'visitsAdmin/cloudService/web/pdaPlatform/updPlatformStatus',
+ method: 'post',
+ data
+ })
}
\ No newline at end of file
diff --git a/pda/main.js b/pda/main.js
index 67dd82e..a53fc06 100644
--- a/pda/main.js
+++ b/pda/main.js
@@ -8,6 +8,17 @@
Vue.use(uView)
Vue.config.productionTip = false
Vue.prototype.$store = store
+Vue.prototype.$jump = (url) => {uni.navigateTo({url})}
+Vue.prototype.$goBack = () => { uni.navigateBack() }
+Vue.prototype.showToast = (str) => {
+ setTimeout(() => {
+ uni.showToast({
+ title: str,
+ icon: 'none',
+ duration: 2000
+ })
+ },100)
+}
App.mpType = 'app'
const app = new Vue({
diff --git a/pda/manifest.json b/pda/manifest.json
index 6e27766..4d3af04 100644
--- a/pda/manifest.json
+++ b/pda/manifest.json
@@ -5,6 +5,30 @@
"versionName" : "1.0.0",
"versionCode" : "100",
"transformPx" : false,
+ "h5" : {
+ "router" : {
+ "mode" : "hash",
+ "base" : "./"
+ },
+ // "base" : "/h5/"
+ "devServer" : {
+ "port" : 8090,
+ "historyApiFallback" : true,
+ "disableHostCheck" : true,
+ "proxy" : {
+ "/admin_interface" : {
+ // 杩欎釜瀛楁鍚嶉渶涓庝綘閰嶇疆鐨刡asePrefixUrl涓�鑷达紝绯荤粺璇嗗埆鍒板甫鏈�/dev-api璇锋眰鐨勫湴鍧�鏃讹紝浼氬湪鍓嶉潰鎷兼帴涓婁唬鐞嗘湇鍔″櫒鍦板潃
+ // "target" : "http://192.168.0.173/admin_interface", // 浠g悊鏈嶅姟鍣ㄥ煙鍚嶆垨IP鍦板潃
+ "target" : "http://192.168.0.136:10010", // 浠g悊鏈嶅姟鍣ㄥ煙鍚嶆垨IP鍦板潃
+ "changeOrigin" : true, // 鍏佽璺ㄥ煙
+ "pathRewrite" : {
+ "^/admin_interface" : "" // 閲嶅啓鍦板潃锛屽鏋滃疄闄呮帴鍙d腑鏄笉甯�/dev-api锛岄渶瑕佸皢杩欎釜鍓嶇紑缃┖锛屽洜涓鸿繖涓墠缂�鍙槸涓轰簡璇嗗埆鐢紝璇嗗埆瀹屼箣鍚庡氨娌$敤浜�
+ }
+ }
+ },
+ "https" : false
+ }
+ },
/* 5+App鐗规湁鐩稿叧 */
"app-plus" : {
"usingComponents" : true,
diff --git a/pda/pages/index/center.vue b/pda/pages/index/center.vue
index 7d8e376..531287e 100644
--- a/pda/pages/index/center.vue
+++ b/pda/pages/index/center.vue
@@ -1,8 +1,8 @@
<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,24 +12,25 @@
<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 === activePlatformId }"
+ v-for="(item, index) in activePlatformGroup.platformList"
+ :key="index"
+ @click="platformClick(item.id)"
+ >{{ 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>
@@ -208,22 +209,64 @@
</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 } from '@/api'
export default {
data() {
return {
showPlatformCall: false, // 鏈堝彴鍙彿
showDetail: false,
- showTransform: false // 杞Щ
+ showTransform: false, // 杞Щ
+ showPlatformgroup: false,
+
+ platformGroupList: [],
+ activePlatformGroup: {},
+ platformTaskInfo: {},
+ activePlatformId: '',
}
},
onLoad() {
-
+ this.getPlatformGroup()
},
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()
+ },
handleDetail() {
this.showDetail = true
},
diff --git a/pda/pages/index/control.vue b/pda/pages/index/control.vue
index 119ab38..02e61af 100644
--- a/pda/pages/index/control.vue
+++ b/pda/pages/index/control.vue
@@ -1,34 +1,47 @@
<template>
<view class="main_app">
- <view class="title">
- <view class="icon"></view>
- <view class="name">瀹夋嘲鐗╂祦鍗歌揣鏈堝彴</view>
- </view>
- <div class="data_list">
- <div class="line">
- <div class="name">1鍙锋湀鍙�</div>
- <u-switch v-model="list"></u-switch>
- </div>
- <div class="line">
- <div class="name">1鍙锋湀鍙�</div>
- <u-switch v-model="list"></u-switch>
- </div>
- </div>
+ <template v-for="item in platformGroupList">
+ <view class="title">
+ <view class="icon"></view>
+ <view class="name">{{item.name}}</view>
+ </view>
+ <view class="data_list">
+ <view class="line" v-for="(platform, i) in item.platformList" :key="platform.id">
+ <view class="name">{{platform.name}}</view>
+ <u-switch v-model="platform.status" activeColor="#279BAA" inactiveColor="#cccccc" :inactiveValue="0" :activeValue="1" @change="e => changeStatus(platform)" />
+ </view>
+ </view>
+ </template>
</view>
</template>
<script>
+ import { getPlatformGroupList, updPlatformStatus } from '@/api'
export default {
data() {
return {
- list: []
+ platformGroupList: []
}
},
onLoad() {
-
+ this.getPlatformGroup()
},
methods: {
-
+ changeStatus(item) {
+ console.log(item);
+ updPlatformStatus({
+ id: item.id,
+ status: item.status
+ })
+ },
+ getPlatformGroup() {
+ getPlatformGroupList({
+ queryData: 1,
+ queryType: 0
+ }).then(res => {
+ this.platformGroupList = res.data || []
+ })
+ },
}
}
</script>
diff --git a/pda/pages/index/login.vue b/pda/pages/index/login.vue
index 6e0f386..60e8d8f 100644
--- a/pda/pages/index/login.vue
+++ b/pda/pages/index/login.vue
@@ -3,7 +3,7 @@
<image class="login_bg" src="@/static/login_bg@2x.png" />
<image class="login_logo" src="@/static/logo@2x.png" mode="widthFix" />
<view class="login_title" style="marginTop: 40rpx;">瀹夋嘲鐗╂祦鏅烘収鍥尯</view>
- <view class="login_title" style="marginBottom: 80rpx;">鐗╂祦杞︾鐞嗙郴缁�</view>
+ <view class="login_title" style="marginBottom: 60rpx;">鏁板瓧鍖栨湀鍙拌皟搴﹀钩鍙�</view>
<view class="login_list">
<view class="login_list_item">
<image src="@/static/login_ic_phone@2x.png" mode="widthFix" />
@@ -42,8 +42,8 @@
data() {
return {
form: {
- account: '',
- password: '',
+ username: '13996529050',
+ password: '123456',
},
isShowProtocol: false,
ProtocolFlag: false,
@@ -53,7 +53,7 @@
},
onLoad() {
- // this.initCaptcha()
+ this.initCaptcha()
},
methods: {
@@ -61,6 +61,33 @@
changeFalg() {
this.ProtocolFlag = !this.ProtocolFlag
},
+ onLogin() {
+ const { form, ProtocolFlag } = this
+ if (!form.username) return uni.showToast({
+ title: '璐﹀彿涓嶈兘涓虹┖',
+ icon: 'none'
+ })
+ if (!form.password) return uni.showToast({
+ title: '瀵嗙爜涓嶈兘涓虹┖',
+ icon: 'none'
+ })
+ loginPost({
+ ...form,
+ code: 1,
+ uuid: this.captcha.uuid,
+ openId: this.$store.state.openId
+ }).then(res => {
+ if (res.code === 200) {
+ this.setToken(res.data)
+ getUserInfo().then(ress => {
+ this.setUserInfo(ress.data)
+ uni.redirectTo({
+ url: "/pages/index/index"
+ })
+ })
+ }
+ })
+ },
getContent() {
getSystemDictData({
dictCode: 'SYSTEM',
@@ -78,41 +105,6 @@
this.captcha = res.data
})
},
-
- onLogin() {
- const { form, ProtocolFlag } = this
- if (!ProtocolFlag) return uni.showToast({
- title: '璇峰厛闃呰骞跺悓鎰忕敤鎴峰崗璁�',
- icon: 'none'
- })
- if (!form.username) return uni.showToast({
- title: '璐﹀彿涓嶈兘涓虹┖',
- icon: 'none'
- })
- if (!form.password) return uni.showToast({
- title: '瀵嗙爜涓嶈兘涓虹┖',
- icon: 'none'
- })
- if (!form.code) return uni.showToast({
- title: '楠岃瘉鐮佷笉鑳戒负绌�',
- icon: 'none'
- })
- loginPost({
- ...form,
- uuid: this.captcha.uuid,
- openId: this.$store.state.openId
- }).then(res => {
- if (res.code === 200) {
- this.setToken(res.data)
- getUserInfo().then(ress => {
- this.setUserInfo(ress.data)
- uni.redirectTo({
- url: "/pages/staff/index"
- })
- })
- }
- })
- }
}
}
</script>
@@ -120,9 +112,8 @@
<style lang="scss" scoped>
.login {
width: 100%;
- height: 100vh;
display: flex;
- padding-top: 160rpx;
+ padding-top: 100rpx;
box-sizing: border-box;
align-items: center;
flex-direction: column;
diff --git a/pda/pages/index/queueup.vue b/pda/pages/index/queueup.vue
index c983523..e21a04c 100644
--- a/pda/pages/index/queueup.vue
+++ b/pda/pages/index/queueup.vue
@@ -57,19 +57,36 @@
</template>
<script>
+ import { platformLineUpPage, getPlatformGroupList } from '@/api'
export default {
data() {
return {
- showDetail: false
+ showDetail: false,
+ capacity: 10,
+ page: 1,
+ platformGroupId: '',
+ platformGroupList: []
}
},
onLoad() {
-
+ this.getPlatformGroup()
+ this.initData()
},
methods: {
handleDetail() {
this.showDetail = true
},
+ getPlatformGroup() {
+ getPlatformGroupList().then(res => {
+
+ })
+ },
+ initData(){
+ const { page, capacity } = this
+ platformLineUpPage({
+ capacity, page, model: {}
+ })
+ }
}
}
</script>
diff --git a/pda/pages/index/set.vue b/pda/pages/index/set.vue
index 2a6c345..13473b0 100644
--- a/pda/pages/index/set.vue
+++ b/pda/pages/index/set.vue
@@ -1,33 +1,74 @@
<template>
<view class="main_app">
- <view class="title">
- <view class="icon"></view>
- <view class="name">瀹夋嘲鐗╂祦鍗歌揣鏈堝彴</view>
- </view>
- <div class="data_list">
- <div
- class="item"
- :class="{ active: i == 1 }"
- v-for="(item, i) in 7"
- :key="i"
- >
- {{ i }}鍙锋湀鍙�
- </div>
- </div>
+ <template v-for="item in platformGroupList">
+ <view class="title">
+ <view class="icon"></view>
+ <view class="name">{{item.name}}</view>
+ </view>
+ <view class="data_list">
+ <view
+ class="item"
+ :class="{ active: platform.showConfig }"
+ v-for="(platform, i) in item.platformList"
+ :key="platform.id"
+ @click="platformClick(platform.id)"
+ >
+ {{platform.name}}
+ </view>
+ </view>
+ </template>
+ <view class="btns">
+ <div class="btn" @click="$goBack">鍙栨秷</div>
+ <div class="btn active" @click="updUserPlatform">纭畾</div>
+ </view>
</view>
</template>
<script>
+import { getPlatformGroupList, updUserPlatformConfig } from '@/api'
export default {
data() {
return {
+ platformGroupList: []
}
},
onLoad() {
-
+ this.getPlatformGroup()
},
methods: {
-
+ updUserPlatform(){
+ const { platformGroupList } = this
+ let ids = []
+ platformGroupList.forEach(item => {
+ item.platformList.forEach(platform => {
+ if(platform.showConfig){
+ ids.push(platform.id)
+ }
+ })
+ })
+ updUserPlatformConfig({ids}).then(res => {
+ this.showToast('鏇存柊鎴愬姛')
+ this.$goBack()
+ })
+ },
+ platformClick(id) {
+ const { platformGroupList } = this
+ platformGroupList.forEach(item => {
+ item.platformList.forEach(platform => {
+ if(platform.id === id){
+ platform.showConfig = !platform.showConfig
+ }
+ })
+ })
+ },
+ getPlatformGroup() {
+ getPlatformGroupList({
+ queryData: 1,
+ queryType: 1
+ }).then(res => {
+ this.platformGroupList = res.data || []
+ })
+ },
}
}
</script>
@@ -43,6 +84,9 @@
margin-bottom: 20rpx;
padding: 30rpx;
background-color: #fff;
+ &:nth-last-child(1){
+ margin-bottom: 120rpx;
+ }
.item {
width: 210rpx;
height: 80rpx;
@@ -83,4 +127,33 @@
}
}
}
+.btns{
+ position: fixed;
+ left: 0;
+ bottom: 0;
+ width: 750rpx;
+ height: 120rpx;
+ background: #FFFFFF;
+ box-shadow: 0rpx -4rpx 12rpx 0rpx rgba(0,0,0,0.1);
+ display: flex;
+ justify-content: space-between;
+ align-items: center;
+ padding: 0 30rpx;
+ .btn{
+ width: 336rpx;
+ height: 88rpx;
+ background: #FFFFFF;
+ border-radius: 44rpx;
+ border: 1rpx solid #999999;
+ display: flex;
+ justify-content: center;
+ align-items: center;
+ font-size: 32rpx;
+ color: #333333;
+ }
+ .active{
+ background: $uni-color-primary;
+ color: #fff;
+ }
+}
</style>
\ No newline at end of file
diff --git a/pda/utils/service.js b/pda/utils/service.js
index 41d0bdf..936c175 100644
--- a/pda/utils/service.js
+++ b/pda/utils/service.js
@@ -34,9 +34,10 @@
duration: 2000
})
})
+ return
}
if (data.code === 5112) {
- uni.navigateTo({
+ return uni.navigateTo({
url: '/pages/login/login'
})
}
--
Gitblit v1.9.3