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