From f3bd5baa8eb4eb7a896f7312a2e9a7c89a46cef5 Mon Sep 17 00:00:00 2001
From: liukangdong <898885815@qq.com>
Date: 星期二, 27 八月 2024 09:18:29 +0800
Subject: [PATCH] ll
---
h5/pages.json | 18
h5/api/index.js | 1
h5/main.js | 7
h5/api/driver.js | 75 ++
h5/pages/driver/index.vue | 616 +++++++++--------
h5/pages/driver/reservedGuide.vue | 10
h5/pages/driver/forgetPsd.vue | 241 +++++++
h5/pages/driver/reserved.vue | 184 +++-
h5/pages/driver/reservedDetail.vue | 216 +++--
h5/.gitignore | 1
h5/store/index.js | 7
h5/pages/staff/task/visitorApprove.vue | 7
h5/pages/driver/taskDetail.vue | 2
h5/pages/staff/task/index.vue | 23
h5/pages/staff/task/driver.vue | 445 +++++++++++++
h5/pages/driver/reservedRecord.vue | 95 +-
h5/App.vue | 3
h5/pages/driver/login.vue | 57
h5/pages/driver/register.vue | 11
19 files changed, 1,492 insertions(+), 527 deletions(-)
diff --git a/h5/.gitignore b/h5/.gitignore
index dc260c4..951e49c 100644
--- a/h5/.gitignore
+++ b/h5/.gitignore
@@ -1,6 +1,7 @@
.DS_Store
coderd.json
node_modules
+uni_modules
.env.development
uview-ui
diff --git a/h5/App.vue b/h5/App.vue
index 0d25d8c..fbec5c3 100644
--- a/h5/App.vue
+++ b/h5/App.vue
@@ -122,7 +122,7 @@
}
.placeholder9 {
- color: #999999;
+ color: #999999 !important;
font-size: 28rpx;
}
@@ -197,7 +197,6 @@
width: 64rpx;
height: 64rpx;
border-radius: 50%;
- overflow: hidden;
margin-right: 20rpx;
display: flex;
justify-content: center;
diff --git a/h5/api/driver.js b/h5/api/driver.js
new file mode 100644
index 0000000..5c9bd7f
--- /dev/null
+++ b/h5/api/driver.js
@@ -0,0 +1,75 @@
+import { http } from '@/utils/service.js'
+
+// 鍙告満娉ㄥ唽
+export const driverRegister = (data) => {
+ return http({
+ url: 'visitsAdmin/cloudService/business/member/registerDriver',
+ method: 'post',
+ data
+ })
+}
+// 鍙告満鐧诲綍
+export const driverLogin = (data) => {
+ return http({
+ url: 'loginDriver',
+ method: 'post',
+ data
+ })
+}
+// 鍙告満棣栭〉
+export const driverHomeData = (data) => {
+ return http({
+ url: 'visitsAdmin/cloudService/web/driverPlatform/driverHome',
+ method: 'get',
+ data
+ })
+}
+
+// 鐗╂祦杞� 鍏ュ洯鍘熷洜
+export const driverReasonList = (data) => {
+ return http({
+ url: 'visitsAdmin/cloudService/web/driverPlatform/platformReasonList',
+ method: 'get',
+ data
+ })
+}
+// 鏌ヨ鍙绾﹂噺
+export const checkSurplusNum = (data) => {
+ return http({
+ url: 'visitsAdmin/cloudService/web/driverPlatform/checkSurplusNum',
+ method: 'post',
+ data
+ })
+}
+// 鐗╂祦杞﹂绾�
+export const driverCarApply = (data) => {
+ return http({
+ url: 'visitsAdmin/cloudService/web/driverPlatform/apply',
+ method: 'post',
+ data
+ })
+}
+// 鐗╂祦杞︽挙閿�
+export const driverCarRevoke= (data) => {
+ return http({
+ url: 'visitsAdmin/cloudService/web/driverPlatform/revoke',
+ method: 'post',
+ data
+ })
+}
+// 棰勭害 璁板綍
+export const driverApplyRecord = (data) => {
+ return http({
+ url: 'visitsAdmin/cloudService/web/driverPlatform/page',
+ method: 'post',
+ data
+ })
+}
+// 棰勭害 璇︽儏
+export const driverApplyDetail = (data) => {
+ return http({
+ url: 'visitsAdmin/cloudService/web/driverPlatform/getDetail',
+ method: 'get',
+ data
+ })
+}
\ No newline at end of file
diff --git a/h5/api/index.js b/h5/api/index.js
index 3734784..e373597 100644
--- a/h5/api/index.js
+++ b/h5/api/index.js
@@ -3,6 +3,7 @@
export * from './visitor'
export * from './staff'
export * from './meeting'
+export * from './driver'
diff --git a/h5/main.js b/h5/main.js
index 4c90c6f..41c035c 100644
--- a/h5/main.js
+++ b/h5/main.js
@@ -17,6 +17,13 @@
Vue.prototype.$store = store
Vue.prototype.$jump = (url) => {uni.navigateTo({url})}
Vue.prototype.$goBack = () => { uni.navigateBack() }
+Vue.prototype.showToast = (str) => {
+ uni.showToast({
+ title: str,
+ icon: 'none',
+ duration: 2000
+ })
+}
Vue.prototype.$eventBus = new Vue()
Vue.prototype.$onWait = new Promise((resolve) => {
Vue.prototype.$reslove = resolve
diff --git a/h5/pages.json b/h5/pages.json
index a7a6648..3c94d9d 100644
--- a/h5/pages.json
+++ b/h5/pages.json
@@ -423,6 +423,24 @@
}
}
+ ,{
+ "path" : "pages/driver/forgetPsd",
+ "style" :
+ {
+ "navigationBarTitleText": "鎵惧洖瀵嗙爜",
+ "enablePullDownRefresh": false
+ }
+
+ }
+ ,{
+ "path" : "pages/staff/task/driver",
+ "style" :
+ {
+ "navigationBarTitleText": "鍏ュ洯瀹℃壒",
+ "enablePullDownRefresh": false
+ }
+
+ }
],
"subPackages": [
{
diff --git a/h5/pages/driver/forgetPsd.vue b/h5/pages/driver/forgetPsd.vue
new file mode 100644
index 0000000..7512424
--- /dev/null
+++ b/h5/pages/driver/forgetPsd.vue
@@ -0,0 +1,241 @@
+<template>
+ <view class="login">
+ <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">瀹夋嘲鐗╂祦鏅烘収鍥尯</view>
+ <view class="login_title">鐗╂祦杞﹀徃鏈�</view>
+ <view class="login_list">
+ <view class="login_list_item">
+ <image src="@/static/login_ic_phone@2x.png" mode="widthFix" />
+ <input v-model="form.phone" maxlength="18" placeholder="璇疯緭鍏ユ墜鏈哄彿" />
+ </view>
+ <view class="login_list_item">
+ <image src="@/static/ic_captcha.png" mode="widthFix"></image>
+ <input
+ v-model="form.validCode"
+ placeholder="璇疯緭鍏ラ獙璇佺爜"
+ type="text"
+ />
+ <text class="captcha" v-if="countDown == 0" @click="initCaptcha"
+ >鑾峰彇楠岃瘉鐮�</text
+ >
+ <text class="placeholder9" v-else>{{ countDown }}</text>
+ </view>
+ <view class="login_list_item">
+ <image src="@/static/login_ic_password@2x.png" mode="widthFix" />
+ <input
+ v-model="form.password"
+ type="password"
+ placeholder="璇疯緭鍏ユ柊瀵嗙爜"
+ />
+ </view>
+ <view class="login_list_item">
+ <image src="@/static/login_ic_password@2x.png" mode="widthFix" />
+ <input
+ v-model="form.newPassword"
+ type="password"
+ placeholder="璇峰啀娆¤緭鍏ユ柊瀵嗙爜"
+ />
+ </view>
+ </view>
+ <view class="login_btn">
+ <view class="login_btn_n" @click="onLogin">纭淇敼</view>
+ </view>
+ </view>
+</template>
+
+<script>
+import { resetPassword, sendSms } from '@/api'
+export default {
+ data() {
+ return {
+ form: {
+ },
+ countDown: 0
+ }
+ },
+
+ onLoad() {
+ },
+
+ methods: {
+ dealChange(e) {
+ console.log(e)
+ },
+ initCaptcha() {
+ if (!this.form.phone) return uni.showToast({
+ title: '鎵嬫満鍙蜂笉鑳戒负绌�',
+ icon: 'none'
+ })
+ sendSms({ phone: this.form.phone }).then(res => {
+ this.countDown = 60
+ setInterval(() => {
+ if (this.countDown == 0) return
+ this.countDown--
+ }, 1000)
+ })
+ },
+
+ onLogin() {
+ const { form } = this
+ if (!form.phone) return uni.showToast({
+ title: '鎵嬫満鍙蜂笉鑳戒负绌�',
+ icon: 'none'
+ })
+ if (!form.validCode) return uni.showToast({
+ title: '楠岃瘉鐮佷笉鑳戒负绌�',
+ icon: 'none'
+ })
+ if (!form.password) return uni.showToast({
+ title: '鏂板瘑鐮佷笉鑳戒负绌�',
+ icon: 'none'
+ })
+ if (!form.newPassword) return uni.showToast({
+ title: '纭瀵嗙爜涓嶈兘涓虹┖',
+ icon: 'none'
+ })
+ if (form.password != form.newPassword) return uni.showToast({
+ title: '涓ゆ杈撳叆瀵嗙爜涓嶄竴鑷�',
+ icon: 'none'
+ })
+ resetPassword({
+ ...form
+ }).then(res => {
+ if (res && res.code == 200) {
+ setTimeout(() => {
+ uni.showToast({
+ title: '瀵嗙爜淇敼鎴愬姛,璇烽噸鏂扮櫥褰�',
+ icon: 'success',
+ duration: 2000
+ })
+ })
+ uni.redirectTo({
+ url: "/pages/staffLogin/login"
+ })
+ }
+ })
+ }
+ }
+}
+</script>
+
+<style lang="scss" scoped>
+.login {
+ width: 100%;
+ display: flex;
+ padding-top: 100rpx;
+ box-sizing: border-box;
+ align-items: center;
+ flex-direction: column;
+ background: linear-gradient(
+ 180deg,
+ rgba(39, 155, 170, 0.2) 0%,
+ rgba(39, 155, 170, 0) 100%
+ );
+ .login_logo {
+ width: 180rpx;
+ height: 180rpx;
+ margin-bottom: 40rpx;
+ }
+ .login_bg {
+ position: absolute;
+ top: 0;
+ width: 750rpx;
+ }
+ .login_title {
+ font-size: 44rpx;
+ font-weight: 600;
+ color: #333333;
+ }
+ .login_list {
+ margin-top: 60rpx;
+ width: 100%;
+ padding: 0 60rpx;
+ box-sizing: border-box;
+ .login_list_item {
+ width: 100%;
+ border-radius: 50rpx;
+ height: 98rpx;
+ padding: 0 40rpx;
+ box-sizing: border-box;
+ background: #ffffff;
+ margin-bottom: 40rpx;
+ display: flex;
+ align-items: center;
+ justify-content: space-between;
+ &:last-child {
+ margin-bottom: 0 !important;
+ }
+ image {
+ flex-shrink: 0;
+ width: 40rpx;
+ height: 40rpx;
+ }
+ .captcha {
+ color: $uni-color-primary;
+ }
+ input {
+ flex: 1;
+ height: 100%;
+ color: #666666;
+ margin-left: 24rpx;
+ border: none;
+ }
+ }
+ }
+ .login_btn {
+ width: 100%;
+ padding: 0 60rpx;
+ box-sizing: border-box;
+ margin-top: 80rpx;
+ .for_psd {
+ color: $uni-color-primary;
+ margin-top: 40rpx;
+ width: 140rpx;
+ text-align: center;
+ margin: 40rpx auto;
+ }
+ .login_btn_n {
+ width: 100%;
+ height: 98rpx;
+ background: $uni-color-primary;
+ box-shadow: 0rpx 12rpx 24rpx 0rpx rgba(39, 155, 170, 0.2);
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ font-weight: 600;
+ font-size: 32rpx;
+ color: #ffffff;
+ border-radius: 50rpx;
+ }
+ }
+ .deal_wrap {
+ position: absolute;
+ width: 100%;
+ left: 0;
+ text-align: center;
+ bottom: 108rpx;
+ .deal {
+ color: $uni-color-primary;
+ }
+ }
+ .btns{
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ position: fixed;
+ bottom: 60rpx;
+ left: 0;
+ width: 100%;
+ .btn{
+ font-size: 30rpx;
+ color: $uni-color-primary;
+ }
+ .separate{ margin: 0 8rpx; }
+ }
+}
+.modal {
+ padding: 32rpx;
+}
+</style>
+
diff --git a/h5/pages/driver/index.vue b/h5/pages/driver/index.vue
index 42ee41e..2df909e 100644
--- a/h5/pages/driver/index.vue
+++ b/h5/pages/driver/index.vue
@@ -1,312 +1,346 @@
<template>
- <view class="main_app">
- <view class="title_wrap">
- <view class="name">鏌愭煇鏌愶紝娆㈣繋鐧诲綍锝�</view>
- <view class="btn" @click="loginOut">閫�鍑虹櫥褰�</view>
- </view>
- <!-- -->
- <view class="banner_wrap">
- <view class="h1">瀹夋嘲鐗╂祦鏅烘収鍥尯</view>
- <view class="h2">鐗╂祦杞︿笓鍖�</view>
- <image
- class="banner"
- src="../../static/driver/wuliuche_banner@2x.png"
- mode="widthFix"
- ></image>
- </view>
- <!-- -->
- <view class="task_list">
- <view class="item">
- <view class="head">
- <view class="name">杩愯緭鍗�222</view>
- <view class="status">
- <view class="text">璇风‘璁や换鍔�</view>
- <view class="time">棰勮绛夊緟锛�12灏忔椂</view>
- </view>
- </view>
- <view class="content">
- <view class="info">
- <view class="plate">
- <image
- src="@/static/driver/wuliu_ic_car@2x.png"
- class="icon"
- mode=""
- ></image>
- <text>鐨朅D</text>
- </view>
- <view class="plate">
- <image
- src="@/static/driver/wuliu_ic_huowu@2x.png"
- class="icon"
- mode=""
- ></image>
- <text>3000涓�</text>
- </view>
- </view>
- <view class="sub">
- <view class="time">02-01 08:11:11</view>
- <view class="sub_btn" @click="handleTask()">纭浠诲姟</view>
- </view>
- </view>
- </view>
- </view>
- <!-- -->
- <view class="title_wrap"><view class="name">涓氬姟鍔炵悊</view></view>
- <view class="container1">
- <view class="left">
- <view class="img_wrap img1" @click="$jump('/pages/driver/reserved')">
- <image
- src="@/static/driver/wuliu_ic_ruyuanyuyue@2x.png"
- class="img"
- ></image>
- <view class="h1">鍏ュ洯椤荤煡</view>
- <view class="h2">RESERVATION</view>
- </view>
- <view
- class="img_wrap img2"
- @click="$jump('/pages/driver/reservedGuide')"
- >
- <image
- src="@/static/driver/wuliu_ic_zhinan@2x.png"
- class="img"
- ></image>
- <view class="h1">棰勭害鎸囧崡</view>
- <view class="h2">APPOINTMENT GUIDE</view>
- </view>
- </view>
- <view class="right">
- <view
- class="img_wrap img2"
- @click="$jump('/pages/driver/reservedRecord')"
- >
- <image
- src="@/static/driver/wuliu_ic_yuyuejilu@2x.png"
- class="img"
- ></image>
- <view class="h1">棰勭害璁板綍</view>
- <view class="h2">APPOINTMENT RECORD</view>
- </view>
- <view class="img_wrap img2" @click="$jump('/pages/driver/queueUp')">
- <image
- src="@/static/driver/wuliu_ic_paidui@2x.png"
- class="img"
- ></image>
- <view class="h1">鏈堝彴鎺掗槦鎯呭喌</view>
- <view class="h2">HIDDEN DANGER</view>
- </view>
- <view class="img_wrap img2">
- <image
- src="@/static/driver/wuliu_ic_daolan@2x.png"
- class="img"
- ></image>
- <view class="h1">鍥尯瀵艰鍥�</view>
- <view class="h2">GUIDE MAP</view>
- </view>
- </view>
- </view>
- <!-- -->
- <view class="copyright">
- <image src="@/static/logo_s@2x.png" class="mr6" mode="widthFix" />
- <text>瀹夊窘瀹夋嘲鐗╂祦鏈夐檺璐d换鍏徃鐗堟潈鎵�鏈�</text>
- </view>
- </view>
+ <view class="main_app">
+ <view class="title_wrap">
+ <view class="name">{{ driverInfo.realname }}锛屾杩庣櫥褰曪綖</view>
+ <view class="btn" @click="loginOut">閫�鍑虹櫥褰�</view>
+ </view>
+ <!-- -->
+ <view class="banner_wrap">
+ <view class="h1">瀹夋嘲鐗╂祦鏅烘収鍥尯</view>
+ <view class="h2">鐗╂祦杞︿笓鍖�</view>
+ <image class="banner" src="../../static/driver/wuliuche_banner@2x.png" mode="widthFix"></image>
+ </view>
+ <!-- -->
+ <view class="task_list">
+ <swiper circular class="task_swiper">
+ <swiper-item>
+ <view class="item">
+ <view class="head">
+ <view class="name">杩愯緭鍗�222</view>
+ <view class="status">
+ <view class="text">璇风‘璁や换鍔�</view>
+ <view class="time">棰勮绛夊緟锛�12灏忔椂</view>
+ </view>
+ </view>
+ <view class="content">
+ <view class="info">
+ <view class="plate">
+ <image src="@/static/driver/wuliu_ic_car@2x.png" class="icon" mode=""></image>
+ <text>鐨朅D</text>
+ </view>
+ <view class="plate">
+ <image src="@/static/driver/wuliu_ic_huowu@2x.png" class="icon" mode=""></image>
+ <text>3000涓�</text>
+ </view>
+ </view>
+ <view class="sub">
+ <view class="time">02-01 08:11:11</view>
+ <view class="sub_btn" @click="handleTask()">纭浠诲姟</view>
+ </view>
+ </view>
+ </view>
+ </swiper-item>
+ <swiper-item>
+ <view class="item">
+ <view class="head">
+ <view class="name">杩愯緭鍗�222</view>
+ <view class="status"><view class="text">璇蜂笌鐜板満绛惧埌</view></view>
+ </view>
+ <view class="content">
+ <view class="info">
+ <view class="plate">
+ <image src="@/static/driver/wuliu_ic_car@2x.png" class="icon" mode=""></image>
+ <text>鐨朅D</text>
+ </view>
+ <view class="plate">
+ <image src="@/static/driver/wuliu_ic_huowu@2x.png" class="icon" mode=""></image>
+ <text>3000涓�</text>
+ </view>
+ </view>
+ <view class="sub">
+ <view class="time">02-01 08:11:11</view>
+ <view class="sub_btn" @click="handleTask(1)">绔嬪嵆绛惧埌</view>
+ </view>
+ </view>
+ </view>
+ </swiper-item>
+ </swiper>
+ </view>
+ <!-- -->
+ <view class="title_wrap"><view class="name">涓氬姟鍔炵悊</view></view>
+ <view class="container1">
+ <view class="left">
+ <view class="img_wrap img1" @click="$jump('/pages/driver/reserved')">
+ <image src="@/static/driver/wuliu_ic_ruyuanyuyue@2x.png" class="img"></image>
+ <view class="h1">鍏ュ洯椤荤煡</view>
+ <view class="h2">RESERVATION</view>
+ </view>
+ <view class="img_wrap img2" @click="$jump('/pages/driver/reservedGuide?str=bookingTips')">
+ <image src="@/static/driver/wuliu_ic_zhinan@2x.png" class="img"></image>
+ <view class="h1">棰勭害鎸囧崡</view>
+ <view class="h2">APPOINTMENT GUIDE</view>
+ </view>
+ </view>
+ <view class="right">
+ <view class="img_wrap img2" @click="$jump('/pages/driver/reservedRecord')">
+ <image src="@/static/driver/wuliu_ic_yuyuejilu@2x.png" class="img"></image>
+ <view class="h1">棰勭害璁板綍</view>
+ <view class="h2">APPOINTMENT RECORD</view>
+ </view>
+ <view class="img_wrap img2" @click="$jump('/pages/driver/queueUp')">
+ <image src="@/static/driver/wuliu_ic_paidui@2x.png" class="img"></image>
+ <view class="h1">鏈堝彴鎺掗槦鎯呭喌</view>
+ <view class="h2">HIDDEN DANGER</view>
+ </view>
+ <view class="img_wrap img2" @click="$jump('/pages/driver/reservedGuide?str=reservationMap')">
+ <image src="@/static/driver/wuliu_ic_daolan@2x.png" class="img"></image>
+ <view class="h1">鍥尯瀵艰鍥�</view>
+ <view class="h2">GUIDE MAP</view>
+ </view>
+ </view>
+ </view>
+ <!-- -->
+ <view class="copyright">
+ <image src="@/static/logo_s@2x.png" class="mr6" mode="widthFix" />
+ <text>瀹夊窘瀹夋嘲鐗╂祦鏈夐檺璐d换鍏徃鐗堟潈鎵�鏈�</text>
+ </view>
+ </view>
</template>
<script>
+import { logoutPost, driverHomeData } from '@/api';
export default {
- data() {
- return {
-
- }
- },
- methods: {
- handleTask() {
- uni.navigateTo({
- url: '/pages/driver/taskConfirm'
- })
- }
- }
-}
+ data() {
+ return {
+ driverInfo: uni.getStorageSync('driverInfo')
+ };
+ },
+ created() {
+ this.initData();
+ },
+ methods: {
+ initData() {
+ driverHomeData().then(res => {
+ if (res.code == 200) {
+ uni.setStorageSync('driverGuide', {
+ bookingTips: res.data.bookingTips,
+ reservationMap: res.data.reservationMap
+ });
+ }
+ });
+ },
+ loginOut() {
+ this.$store.commit('empty');
+ logoutPost();
+ uni.redirectTo({
+ url: '/pages/driver/login'
+ });
+ },
+ handleTask(status) {
+ if (status == 1) {
+ return uni.navigateTo({
+ url: '/pages/driver/taskDetail'
+ });
+ }
+ uni.navigateTo({
+ url: '/pages/driver/taskConfirm'
+ });
+ }
+ }
+};
</script>
<style lang="scss">
.title_wrap {
- display: flex;
- justify-content: space-between;
- align-items: center;
- margin-bottom: 24rpx;
- .name {
- font-weight: 600;
- font-size: 34rpx;
- color: #222222;
- }
- .btn {
- width: 144rpx;
- height: 56rpx;
- border-radius: 36rpx;
- border: 1rpx solid $uni-color-primary;
- font-size: 26rpx;
- color: $uni-color-primary;
- display: flex;
- justify-content: center;
- align-items: center;
- }
+ display: flex;
+ justify-content: space-between;
+ align-items: center;
+ margin-bottom: 24rpx;
+ .name {
+ font-weight: 600;
+ font-size: 34rpx;
+ color: #222222;
+ }
+ .btn {
+ width: 144rpx;
+ height: 56rpx;
+ border-radius: 36rpx;
+ border: 1rpx solid $uni-color-primary;
+ font-size: 26rpx;
+ color: $uni-color-primary;
+ display: flex;
+ justify-content: center;
+ align-items: center;
+ }
}
.main_app {
- padding-top: 12rpx;
+ padding-top: 12rpx;
}
.banner_wrap {
- padding: 54rpx 44rpx;
- color: #fff;
- position: relative;
- width: 688rpx;
- height: 270rpx;
- margin-bottom: 40rpx;
- .h1 {
- font-weight: bold;
- line-height: 66rpx;
- font-size: 44rpx;
- margin-bottom: 14rpx;
- }
- .h2 {
- font-weight: 600;
- font-size: 28rpx;
- width: 192rpx;
- color: $uni-color-primary;
- height: 48rpx;
- line-height: 48rpx;
- text-align: center;
- background: #ffffff;
- box-shadow: 0rpx 4rpx 8rpx 0rpx rgba(39, 155, 170, 0.31);
- border-radius: 24rpx;
- }
- .banner {
- position: absolute;
- top: 0;
- left: 0;
- width: 100%;
- z-index: -1;
- }
+ padding: 54rpx 44rpx;
+ color: #fff;
+ position: relative;
+ width: 688rpx;
+ height: 270rpx;
+ margin-bottom: 40rpx;
+ .h1 {
+ font-weight: bold;
+ line-height: 66rpx;
+ font-size: 44rpx;
+ margin-bottom: 14rpx;
+ }
+ .h2 {
+ font-weight: 600;
+ font-size: 28rpx;
+ width: 192rpx;
+ color: $uni-color-primary;
+ height: 48rpx;
+ line-height: 48rpx;
+ text-align: center;
+ background: #ffffff;
+ box-shadow: 0rpx 4rpx 8rpx 0rpx rgba(39, 155, 170, 0.31);
+ border-radius: 24rpx;
+ }
+ .banner {
+ position: absolute;
+ top: 0;
+ left: 0;
+ width: 100%;
+ z-index: -1;
+ }
}
.container1 {
- display: flex;
- flex-wrap: wrap;
- view {
- width: 336rpx;
- }
- .left {
- margin-right: 18rpx;
- }
- .img_wrap {
- position: relative;
- padding: 24rpx 0rpx 0 28rpx;
- border-radius: 8rpx;
- overflow: hidden;
- .h1 {
- font-weight: 600;
- font-size: 32rpx;
- color: #222222;
- line-height: 48rpx;
- margin-bottom: 4rpx;
- }
- .h2 {
- font-size: 22rpx;
- color: #7b9da1;
- line-height: 34rpx;
- }
- .img {
- width: 100%;
- height: 100%;
- position: absolute;
- top: 0;
- left: 0;
- z-index: -1;
- }
- }
- .img1 {
- width: 336rpx;
- height: 296rpx;
- margin-bottom: 16rpx;
- }
- .img2 {
- width: 336rpx;
- height: 140rpx;
- margin-bottom: 16rpx;
- }
+ display: flex;
+ flex-wrap: wrap;
+ view {
+ width: 336rpx;
+ }
+ .left {
+ margin-right: 18rpx;
+ }
+ .img_wrap {
+ position: relative;
+ padding: 24rpx 0rpx 0 28rpx;
+ border-radius: 8rpx;
+ overflow: hidden;
+ .h1 {
+ font-weight: 600;
+ font-size: 32rpx;
+ color: #222222;
+ line-height: 48rpx;
+ margin-bottom: 4rpx;
+ }
+ .h2 {
+ font-size: 22rpx;
+ color: #7b9da1;
+ line-height: 34rpx;
+ }
+ .img {
+ width: 100%;
+ height: 100%;
+ position: absolute;
+ top: 0;
+ left: 0;
+ z-index: -1;
+ }
+ }
+ .img1 {
+ width: 336rpx;
+ height: 296rpx;
+ margin-bottom: 16rpx;
+ }
+ .img2 {
+ width: 336rpx;
+ height: 140rpx;
+ margin-bottom: 16rpx;
+ }
}
.task_list {
- margin-bottom: 48rpx;
- .item {
- background: #ffffff;
- box-shadow: 0rpx 4rpx 32rpx 0rpx rgba(39, 155, 170, 0.18);
- border-radius: 16rpx;
- .head {
- display: flex;
- justify-content: space-between;
- align-items: center;
- background: linear-gradient(270deg, #fefeff 0%, #e1f7fe 100%);
- padding: 20rpx 30rpx;
- .name {
- font-weight: 600;
- font-size: 36rpx;
- color: #222222;
- }
- .status {
- color: $uni-color-primary;
- font-weight: 600;
- .time {
- font-size: 24rpx;
- font-weight: 360;
- }
- }
- }
- .content {
- .info {
- display: flex;
- padding: 24rpx 30rpx;
- .plate {
- flex: 1;
- display: flex;
- align-items: center;
- .icon {
- width: 26rpx;
- height: 26rpx;
- margin-right: 10rpx;
- }
- }
- }
- .sub {
- display: flex;
- justify-content: space-between;
- align-items: center;
- padding: 0 30rpx 24rpx;
- .time {
- font-size: 26rpx;
- color: #999999;
- }
- .sub_btn {
- height: 68rpx;
- line-height: 68rpx;
- padding: 0 34rpx;
- color: #ffffff;
- background: $uni-color-primary;
- box-shadow: 0rpx 4rpx 12rpx 0rpx rgba(39, 155, 170, 0.4);
- border-radius: 40rpx;
- }
- }
- }
- }
+ margin-bottom: 48rpx;
+ .task_swiper {
+ padding: 16rpx 10rpx;
+ height: 320rpx;
+ width: 730rpx;
+ margin-left: -20rpx;
+ box-sizing: border-box;
+ }
+ .item {
+ background: #ffffff;
+ box-shadow: 0rpx 0rpx 12rpx 0rpx rgba(39, 155, 170, 0.32);
+ border-radius: 16rpx;
+ height: 280rpx;
+ width: 98%;
+ margin-left: 1%;
+ .head {
+ display: flex;
+ justify-content: space-between;
+ align-items: center;
+ background: linear-gradient(270deg, #fefeff 0%, #e1f7fe 100%);
+ padding: 0rpx 30rpx;
+ height: 92rpx;
+ .name {
+ font-weight: 600;
+ font-size: 36rpx;
+ color: #222222;
+ }
+ .status {
+ color: $uni-color-primary;
+ font-weight: 600;
+ text-align: right;
+ .time {
+ font-size: 24rpx;
+ font-weight: 360;
+ }
+ }
+ }
+ .content {
+ height: 180rpx;
+ .info {
+ display: flex;
+ padding: 24rpx 30rpx;
+ .plate {
+ flex: 1;
+ display: flex;
+ align-items: center;
+ .icon {
+ width: 26rpx;
+ height: 26rpx;
+ margin-right: 10rpx;
+ }
+ }
+ }
+ .sub {
+ display: flex;
+ justify-content: space-between;
+ align-items: center;
+ padding: 0 30rpx 24rpx;
+ .time {
+ font-size: 26rpx;
+ color: #999999;
+ }
+ .sub_btn {
+ height: 68rpx;
+ line-height: 68rpx;
+ padding: 0 34rpx;
+ color: #ffffff;
+ background: $uni-color-primary;
+ box-shadow: 0rpx 4rpx 12rpx 0rpx rgba(39, 155, 170, 0.4);
+ border-radius: 40rpx;
+ }
+ }
+ }
+ }
}
.copyright {
- display: flex;
- align-items: center;
- justify-content: center;
- margin-top: 44rpx;
- font-size: 24rpx;
- color: #666666;
- image {
- width: 40rpx;
- height: 40rpx;
- }
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ margin-top: 44rpx;
+ font-size: 24rpx;
+ color: #666666;
+ image {
+ width: 40rpx;
+ height: 40rpx;
+ }
}
</style>
diff --git a/h5/pages/driver/login.vue b/h5/pages/driver/login.vue
index cc0ff66..4dede46 100644
--- a/h5/pages/driver/login.vue
+++ b/h5/pages/driver/login.vue
@@ -7,7 +7,7 @@
<view class="login_list">
<view class="login_list_item">
<image src="@/static/login_ic_phone@2x.png" mode="widthFix" />
- <input v-model="form.phone" maxlength="18" placeholder="鎵嬫満鍙�" />
+ <input v-model="form.username" maxlength="18" placeholder="鎵嬫満鍙�" />
</view>
<view class="login_list_item">
<image src="@/static/login_ic_password@2x.png" mode="widthFix" />
@@ -25,52 +25,53 @@
<view class="btns">
<view class="btn" @click="handleRegister">绔嬪嵆娉ㄥ唽</view>
<view class="btn separate"> | </view>
- <view class="btn">蹇樿瀵嗙爜</view>
+ <view class="btn" @click="handleSetPsd">蹇樿瀵嗙爜</view>
</view>
</view>
</template>
<script>
-import { resetPassword, sendSms } from '@/api'
+import { driverLogin, loginCaptcha, getUserInfo } from '@/api'
+import { mapState, mapMutations } from 'vuex'
export default {
data() {
return {
form: {
+ username: '13996529050',
+ password: '1'
},
isShowProtocol: false,
countDown: 0
}
},
-
onLoad() {
+ this.initCaptcha()
},
-
+
methods: {
+ ...mapMutations(["setToken", "setDriverInfo"]),
handleRegister() {
uni.navigateTo({
url: "/pages/driver/register"
+ })
+ },
+ handleSetPsd() {
+ uni.navigateTo({
+ url: "/pages/driver/forgetPsd"
})
},
dealChange(e) {
console.log(e)
},
initCaptcha() {
- if (!this.form.phone) return uni.showToast({
- title: '鎵嬫満鍙蜂笉鑳戒负绌�',
- icon: 'none'
- })
- sendSms({ phone: this.form.phone }).then(res => {
- this.countDown = 60
- setInterval(() => {
- if (this.countDown == 0) return
- this.countDown--
- }, 1000)
+ loginCaptcha().then(res => {
+ this.captcha = res.data
})
},
onLogin() {
const { form } = this
- if (!form.phone) return uni.showToast({
+ if (!form.username) return uni.showToast({
title: '鎵嬫満鍙蜂笉鑳戒负绌�',
icon: 'none'
})
@@ -78,19 +79,21 @@
title: '瀵嗙爜涓嶈兘涓虹┖',
icon: 'none'
})
- resetPassword({
- ...form
+ driverLogin({
+ ...form,
+ uuid: this.captcha.uuid,
+ code: '1'
}).then(res => {
- if (res && res.code == 200) {
- setTimeout(() => {
- uni.showToast({
- title: '瀵嗙爜淇敼鎴愬姛,璇烽噸鏂扮櫥褰�',
- icon: 'success',
- duration: 2000
+ if (res.code === 200) {
+ this.setToken(res.data)
+ getUserInfo().then(ress => {
+ setTimeout(() => {
+ this.showToast('鐧诲綍鎴愬姛')
+ })
+ this.setDriverInfo(ress.data)
+ uni.redirectTo({
+ url: "/pages/driver/index"
})
- })
- uni.redirectTo({
- url: "/pages/staffLogin/login"
})
}
})
diff --git a/h5/pages/driver/register.vue b/h5/pages/driver/register.vue
index ae1b1a5..89fe60a 100644
--- a/h5/pages/driver/register.vue
+++ b/h5/pages/driver/register.vue
@@ -49,12 +49,11 @@
</template>
<script>
-import { resetPassword, sendSms } from '@/api'
+import { driverRegister, sendSms } from '@/api'
export default {
data() {
return {
- form: {
- },
+ form: {},
isShowProtocol: false,
countDown: 0
}
@@ -84,7 +83,7 @@
onLogin() {
const { form } = this
if (!form.name) return uni.showToast({
- title: '鎵嬫満鍙峰鍚�',
+ title: '濮撳悕涓嶈兘涓虹┖',
icon: 'none'
})
if (!form.phone) return uni.showToast({
@@ -99,14 +98,14 @@
title: '瀵嗙爜涓嶈兘涓虹┖',
icon: 'none'
})
- resetPassword({
+ driverRegister({
...form
}).then(res => {
if (res && res.code == 200) {
setTimeout(() => {
uni.showToast({
title: '娉ㄥ唽鎴愬姛,璇峰墠寰�鐧诲綍',
- icon: 'success',
+ icon: 'none',
duration: 2000
})
})
diff --git a/h5/pages/driver/reserved.vue b/h5/pages/driver/reserved.vue
index c201b32..813062c 100644
--- a/h5/pages/driver/reserved.vue
+++ b/h5/pages/driver/reserved.vue
@@ -5,9 +5,19 @@
<view class="line">
<view class="label">
<text>*</text>
+ <text>鍏ュ洯鍘熷洜</text>
+ </view>
+ <view class="value" @click="showReason = true">
+ <text class="mr6" :style="{ color: param.inReason ? '#000000' : '#999999' }">{{ param.inReason ? param.inReason : '璇烽�夋嫨' }}</text>
+ <u-icon name="arrow-right" color="#CCCCCC" size="16"></u-icon>
+ </view>
+ </view>
+ <view class="line">
+ <view class="label">
+ <text>*</text>
<text>鍚堝悓鍙�</text>
</view>
- <view class="value"><input type="text" placeholder="璇疯緭鍏ユ偍鐨勫悎鍚屽彿" v-model="param.receptMemberName" placeholder-style="color: #999999;" /></view>
+ <view class="value"><input type="text" placeholder="璇疯緭鍏ユ偍鐨勫悎鍚屽彿" v-model="param.contractNum" placeholder-style="color: #999999;" /></view>
</view>
<!-- -->
<view class="line">
@@ -16,7 +26,7 @@
<text>鍒板満鏃堕棿</text>
</view>
<view class="value" @click="showDatetime = true">
- <text class="mr6" :style="{ color: param.area ? '#000000' : '#999999' }">{{ param.area ? param.area : '璇烽�夋嫨' }}</text>
+ <text class="mr6" :style="{ color: param.arriveDate ? '#000000' : '#999999' }">{{ param.arriveDate ? param.arriveDate : '璇烽�夋嫨' }}</text>
<u-icon name="arrow-right" color="#CCCCCC" size="16"></u-icon>
</view>
</view>
@@ -27,8 +37,8 @@
</view>
<view class="value">
<view class="btns">
- <view class="btn active">鏁存墭鐩�</view>
- <view class="btn">浠剁儫</view>
+ <view @click="inTypeClick(0)" :class="{ active: param.inType == 0 }" class="btn">鏁存墭鐩�</view>
+ <view @click="inTypeClick(1)" :class="{ active: param.inType == 1 }" class="btn">浠剁儫</view>
</view>
</view>
</view>
@@ -38,7 +48,7 @@
<text>鎬昏繍杈撻噺</text>
</view>
<view class="value">
- <input type="text" placeholder="璇疯緭鍏ユ�昏繍杈撻噺" v-model="param.receptMemberName" placeholder-style="color: #999999;" />
+ <input type="number" placeholder="璇疯緭鍏ユ�昏繍杈撻噺" v-model="param.totalNum" placeholder-style="color: #999999;" />
<text class="unit">涓囨敮</text>
</view>
</view>
@@ -47,8 +57,9 @@
<text>*</text>
<text>鍑嗚繍璇佺収鐗�</text>
</view>
- <view class="value">
- <view class="upload_wrap"><u-icon name="plus" size="20" color="#999999"></u-icon></view>
+ <view class="value" @click="handleUpload">
+ <image v-if="param.transportImgFull" class="upload_wrap" :src="param.transportImgFull" alt="">
+ <view v-else class="upload_wrap"><u-icon name="plus" size="20" color="#999999"></u-icon></view>
</view>
</view>
<view class="empty"></view>
@@ -58,14 +69,14 @@
<text>*</text>
<text>鍙告満濮撳悕</text>
</view>
- <view class="value"><input type="text" placeholder="璇疯緭鍏ユ偍鐨勭湡瀹炲鍚�" v-model="param.receptMemberName" placeholder-style="color: #999999;" /></view>
+ <view class="value"><input type="text" placeholder="璇疯緭鍏ユ偍鐨勭湡瀹炲鍚�" v-model="param.driverName" placeholder-style="color: #999999;" /></view>
</view>
<view class="line">
<view class="label">
<text>*</text>
<text>鎵嬫満鍙�</text>
</view>
- <view class="value"><input type="text" placeholder="璇疯緭鍏ユ偍鐨勬墜鏈哄彿" v-model="param.receptMemberName" placeholder-style="color: #999999;" /></view>
+ <view class="value"><input type="number" placeholder="璇疯緭鍏ユ偍鐨勬墜鏈哄彿" v-model="param.driverPhone" placeholder-style="color: #999999;" /></view>
</view>
<!-- -->
<view class="line">
@@ -74,7 +85,7 @@
<text>杞﹀墠鐗岀収鍙�</text>
</view>
<view class="value" @click="openInput(1)">
- <text :style="{ color: param.carNos ? '#000000' : '' }">{{ param.carNos ? param.carNos : '璇疯緭鍏ヨ溅鐗屽彿鐮�' }}</text>
+ <text :style="{ color: param.carCodeFront ? '#000000' : '#999999' }">{{ param.carCodeFront ? param.carCodeFront : '璇疯緭鍏ヨ溅鐗屽彿鐮�' }}</text>
</view>
</view>
<view class="line">
@@ -82,18 +93,19 @@
<text>*</text>
<text>杞﹀悗鐗岀収鍙�</text>
</view>
- <view class="value" @click="openInput(1)">
- <text :style="{ color: param.carNos ? '#000000' : '' }">{{ param.carNos ? param.carNos : '璇疯緭鍏ヨ溅鐗屽彿鐮�' }}</text>
+ <view class="value" @click="openInput(2)">
+ <text :style="{ color: param.carCodeBack ? '#000000' : '#999999' }">{{ param.carCodeBack ? param.carCodeBack : '璇疯緭鍏ヨ溅鐗屽彿鐮�' }}</text>
</view>
</view>
<view class="copy" @click="copy">澶嶅埗杞﹀墠鐗岀収鍙�</view>
<view class="perch"></view>
- <view class="handle_sub">
+ <view class="handle_sub" @click="onSubmit">
鎻愪氦
</view>
-
- <!-- -->
</view>
+
+ <!-- -->
+ <u-picker :show="showReason" keyName="reason" :columns="reasonList" @confirm="reasonConfirm"></u-picker>
<u-datetime-picker
:show="showDatetime"
closeOnClickOverlay
@@ -109,74 +121,130 @@
<script>
import keyboardInput from '@/components/keyboard-input/keyboard-input.vue';
-import { uploadUrl } from '@/api';
+import { uploadUrl, driverCarApply, driverReasonList } from '@/api';
+import dayjs from 'dayjs'
export default {
components: {
keyboardInput
},
data() {
return {
- param: {},
+ param: {
+ inType: 0,
+ driverName: uni.getStorageSync('driverInfo').realname,
+ driverPhone: uni.getStorageSync('driverInfo').username,
+ },
+ reasonIndex: -1,
+ reasonList: [],
showDatetime: false,
+ showReason: false,
inputType: ''
};
},
+ created() {
+ this.initData()
+ },
methods: {
- copy(){
- this.param.carNos = this.param.carNos
- uni.showToast({
- title: '澶嶅埗鎴愬姛',
- duration: 1000
- });
- },
- handleUpload() {
- uni.chooseImage({
- success: chooseImageRes => {
- uni.showLoading({ title: '涓婁紶涓�', mask: true });
- for (let i = 0; i < chooseImageRes.tempFilePaths.length; i++) {
- uni.uploadFile({
- url: `${uploadUrl}visitsAdmin/cloudService/web/public/uploadFtp.do`,
- filePath: chooseImageRes.tempFilePaths[i],
- name: 'file',
- formData: {
- folderCode: 'MEMBER_IMG'
- },
- success: uploadFileRes => {
- console.log('uploadFileRes', uploadFileRes);
- let res = JSON.parse(uploadFileRes.data);
- if (type === 'faceImg') {
- this.param.faceImg = res.data.halfPath;
- this.param.faceImgUrl = res.data.prefixPath + res.data.folder + res.data.halfPath;
- } else {
- this.param.imgurl = res.data.halfPath;
- this.param.imgurlUrl = res.data.prefixPath + res.data.folder + res.data.halfPath;
- }
- },
- complete() {
- if (i === chooseImageRes.tempFilePaths.length - 1) {
- uni.hideLoading();
- }
- }
- });
- }
+ onSubmit() {
+ const param = { ...this.param }
+ if (!param.arriveDate) return this.showToast('璇烽�夋嫨鍒板満鏃堕棿')
+ if (!param.inType && param.inType != 0) return this.showToast('璇烽�夋嫨鍏ュ簱绫诲瀷')
+ if (!param.contractNum) return this.showToast('璇疯緭鍏ュ悎鍚屽彿')
+ if (!param.totalNum) return this.showToast('璇疯緭鍏ユ�昏繍杈撻噺')
+ if (!param.driverName) return this.showToast('璇疯緭鍏ュ徃鏈哄鍚�')
+ if (!param.driverPhone) return this.showToast('璇疯緭鍏ユ墜鏈哄彿')
+ if (!param.carCodeFront) return this.showToast('璇疯緭鍏ヨ溅鍓嶇墝鍙�')
+ if (!param.carCodeBack) return this.showToast('璇疯緭鍏ヨ溅鍚庣墝鍙�')
+ if (!param.transportImgFull) return this.showToast('璇蜂笂浼犲噯杩愯瘉鐓х墖')
+ param.arriveDate = param.arriveDate + ':00'
+ driverCarApply({...param}).then(res => {
+ if(res && res.code === 200){
+ uni.navigateBack()
}
- });
+ })
},
- setinDate(e) {},
+ initData(){
+ driverReasonList().then(res => {
+ this.reasonList = [res.data]
+ })
+ },
+ reasonConfirm(e) {
+ const reasonList = this.reasonList[0]
+ const index = e.indexs[0]
+ this.$set(this.param, 'inReason', reasonList[index].reason)
+ this.$set(this.param, 'reasonId', reasonList[index].id)
+ this.showReason = false
+ },
+ setinDate(e) {
+ this.$set(this.param, 'arriveDate', dayjs(e.value).format('YYYY-MM-DD HH:mm'))
+ this.showDatetime = false
+ },
+ inTypeClick(e) {
+ this.param.inType = e
+ },
openInput(type) {
this.inputType = type;
this.$refs.keyboard.open();
},
setPlate(e) {
if (this.inputType === 1) {
- this.param.carNos = e;
+ this.$set(this.param, 'carCodeFront', e)
} else if (this.inputType === 2) {
- this.param.carNos = e;
+ this.$set(this.param, 'carCodeBack', e)
}
this.$forceUpdate();
this.closeInput();
},
+ copy(){
+ if(this.param.carCodeFront){
+ this.$set(this.param, 'carCodeBack', this.param.carCodeFront)
+ this.showToast('澶嶅埗鎴愬姛');
+ }
+
+ },
+ handleUpload() {
+ let token = uni.getStorageSync('token') || ''
+ uni.chooseImage({
+ count: 1,
+ success: (chooseImageRes) => {
+ uni.showLoading({ title: '涓婁紶涓�', mask: true })
+ const tempFilePaths = chooseImageRes.tempFilePaths
+ let imgs = tempFilePaths.map((value, index) => {
+ return {
+ name: 'file',
+ uri: value
+ }
+ })
+ uni.uploadFile({
+ url: `${uploadUrl}`,
+ files: imgs,
+ name: 'file',
+ formData: {
+ folder: 'PLATFORM'
+ },
+ header: {
+ Dm_user_token: token
+ },
+ success: (uploadFileRes) => {
+ let res = JSON.parse(uploadFileRes.data)
+ console.log('res', res.data)
+ if (res.data && res.data.length > 0) {
+ this.$set(this.param, 'transportImg', res.data[0].imgaddr)
+ this.$set(this.param, 'transportImgFull', res.data[0].url)
+ }
+ },
+ fail(err) {
+ console.log('err', err)
+ },
+ complete() {
+ uni.hideLoading()
+ }
+ })
+ // }
+ }
+ })
+ },
closeInput() {
this.$refs.keyboard.close();
}
diff --git a/h5/pages/driver/reservedDetail.vue b/h5/pages/driver/reservedDetail.vue
index e87dc36..2303e6f 100644
--- a/h5/pages/driver/reservedDetail.vue
+++ b/h5/pages/driver/reservedDetail.vue
@@ -1,142 +1,171 @@
<template>
<view class="main_app">
<view class="status_wrap">
- <view class="name">涓佹仼鍑殑璁垮鐢宠</view>
- <view class="desc">绛夊緟鎴戝鐞�</view>
- <view class="status">瀹℃壒涓�</view>
+ <view class="name">{{info.driverName}}鐨勫叆鍥绾�</view>
+ <view class="desc">{{info.carCodeFront}}</view>
+ <view class="status">{{ statusMap[info.status] }}</view>
</view>
<!-- -->
<view class="emyty"></view>
<view class="module_list">
<view class="item">
- <view class="label">鎷滆浜�</view>
- <view class="value">寤栨垚鐟�</view>
+ <view class="label">鍏ュ洯鍘熷洜</view>
+ <view class="value">{{info.inReason}}</view>
</view>
<view class="item">
- <view class="label">棰勮鍏�/绂诲洯鏃堕棿</view>
- <view class="value">05/01 8:00 - 05/01 18:00</view>
+ <view class="label">鍚堝悓缂栧彿</view>
+ <view class="value">{{info.contractNum}}</view>
</view>
+ <view class="item">
+ <view class="label">鍒板満鏃堕棿</view>
+ <view class="value" v-if="info.arriveDate">{{info.arriveDate.slice(0,16)}}</view>
+ </view>
+ <view class="item">
+ <view class="label">鍑嗚繍璇佺収鐗�</view>
+ <view class="value">
+ <image
+ v-if="info.transportImg"
+ class="avatar_wrap"
+ :src="info.prefixUrl + info.transportImg"
+ ></image>
+ </view>
+ </view>
+ <view class="item">
+ <view class="label">鍏ュ簱绫诲瀷</view>
+ <view class="value">{{info.inType == 0 ? '鏁存墭鐩�' : '浠剁儫'}}</view>
+ </view>
+ <view class="item">
+ <view class="label">鎬昏繍鏁伴噺</view>
+ <view class="value">{{info.totalNum}}涓囨敮</view>
+ </view>
<view class="emyty"></view>
<view class="item">
- <view class="label">璁垮淇℃伅</view>
- <view class="value">
- <image
- class="avatar"
- src="@/static/logo@2x.png"
- mode="widthFix"
- ></image>
- <view class="info">
- <text class="name">瀛欏織 18177665678</text>
- <text>韬唤璇佸彿锛�3309****2910</text>
- <text>鍏ュ洯杞﹁締锛氱殩A88789</text>
- </view>
+ <view class="label">鍙告満濮撳悕</view>
+ <view class="value">{{info.driverName}}
</view>
</view>
<view class="item">
- <view class="label">鍏徃鍚嶇О</view>
- <view class="value">涓浗绉诲姩</view>
+ <view class="label">鎵嬫満鍙�</view>
+ <view class="value">{{info.driverPhone}}</view>
</view>
- <view class="item">
- <view class="label">鏂藉伐浜哄憳</view>
- <view class="value">鍚�</view>
- </view>
- <view class="item">
- <view class="label">鏉ヨ浜嬬敱</view>
- <view class="value">涓氬姟娲借皥</view>
- </view>
+ <view class="item">
+ <view class="label">杞︾墝鐓�</view>
+ <view class="value">鍓� {{info.carCodeFront}}锛屽悗 {{info.carCodeBack}}</view>
+ </view>
</view>
<!-- 娴佺▼ -->
<view class="flow_wrap">
<view class="flow_title">娴佺▼</view>
- <view class="list">
- <view class="item">
- <view class="avatar">
- <image class="img" src="@/static/logo@2x.png" mode="widthFix" />
+ <view class="list" v-if="info.approveDateVO != null && info.approveDateVO.approveList != null">
+ <view class="item" v-for="item,index in info.approveDateVO.approveList">
+ <view v-if="index != info.approveDateVO.approveList.length - 1" class="separate"></view>
+ <view class="avatar_wrap">
<image
+ class="img"
+ :src="
+ item.faceImg
+ ? item.faceImg
+ : require('@/static/meeting/common/default_user@2x.png')
+ "
+ />
+ <image
+ v-if="item.status == 2"
class="status"
src="@/static/staff/liucheng_success@2x.png"
mode="widthFix"
/>
- <view class="separate"></view>
+ <image
+ v-if="item.status == 3"
+ class="status"
+ src="@/static/staff/liucheng_fail@2x.png"
+ mode="widthFix"
+ />
</view>
<view class="content">
<view class="head">
- <view class="event">鏌愭煇鎻愪氦鐨勬嫓璁跨敵璇�</view>
- <view class="time">time</view>
+ <view class="event">{{ item.title }}</view>
+ <view class="time">{{item.createDate}}</view>
</view>
<view class="name_wrap">
- <text>鏉庝笢(<text class="status">澶勭悊涓�</text>)</text>
+ <text>{{item.memberName}}<text v-if="item.statusInfo" class="status">({{item.statusInfo}})</text></text>
</view>
- <view class="remark">鍚屾剰鏀捐</view>
- </view>
- </view>
- <view class="item">
- <view class="avatar">
- <image class="img" src="@/static/logo@2x.png" mode="widthFix" />
- <image
- class="status"
- src="@/static/staff/liucheng_success@2x.png"
- mode="widthFix"
- />
- </view>
- <view class="content">
- <view class="head">
- <view class="event">鏌愭煇鎻愪氦鐨勬嫓璁跨敵璇�</view>
- <view class="time">time</view>
- </view>
- <view class="name_wrap">
- <text>鏉庝笢(<text class="status">澶勭悊涓�</text>)</text>
- </view>
- <view class="carbon">
- <view class="carbon_item" v-for="i in 12">
- <image src="@/static/logo@2x.png" mode="widthFix"></image>
- <view class="text">name</view>
- </view>
- </view>
+ <view v-if="item.approveType == 1" class="carbon">
+ <view class="carbon_item" v-for="child in item.approveList"
+ :key="child.id">
+ <image :src="
+ child.faceImg
+ ? child.faceImg
+ : require('@/static/meeting/common/default_user@2x.png')
+ "></image>
+ <view class="text">{{ child.memberName }}</view>
+ </view>
+ </view>
</view>
</view>
</view>
</view>
<view class="emyty"></view>
<view class="main_footer">
- <view class="btn" @click="handleSub('0')">鎷掔粷</view>
- <view class="btn agree" @click="handleSub('1')">鍚屾剰</view>
+ <view v-if="info.status == 0 || info.status == 1" class="btn" @click="handleCancel">鎾ゅ洖鐢宠</view>
+ <view v-if="info.status == 0 || info.status == 1" class="btn agree" @click="handleEdit">淇敼</view>
+ <view v-if="info.status == 3" class="btn agree aga" @click="handleAga">鍐嶆鐢宠</view>
</view>
-
- <!-- -->
- <u-popup
- :show="showApprModal"
- :round="10"
- :safeAreaInsetBottom="true"
- mode="bottom"
- @close="showApprModal = false"
- >
- <view class="appr_modal">
- <view class="title">鍚屾剰</view>
- <textarea
- placeholder="鍚屾剰璇存槑锛岄潪蹇呭~"
- placeholder-class="placeholder9"
- />
- <view class="main_footer">
- <view class="btn" @click="showApprModal = false">鍙栨秷</view>
- <view class="btn agree">鎻愪氦</view>
- </view>
- </view>
- </u-popup>
</view>
</template>
<script>
+ import { driverApplyDetail, driverCarRevoke } from '@/api'
export default {
data() {
return {
showApprModal: false,
- param: {}
+ info: {},
+ statusMap: {
+ 0: '寰呭鎵�',
+ 1: '瀹℃壒涓�',
+ 2: '瀹℃壒閫氳繃',
+ 3: '瀹℃壒涓嶉�氳繃',
+ 4: '宸插彇娑�',
+ },
}
},
+ onLoad(option) {
+ this.getDetail(option.id)
+ },
methods: {
+ handleCancel(){
+ uni.showModal({
+ title: '鎻愮ず',
+ content: '杩欐槸涓�涓ā鎬佸脊绐�',
+ success: function (res) {
+ if (res.confirm) {
+ console.log('鐢ㄦ埛鐐瑰嚮纭畾');
+ } else if (res.cancel) {
+ console.log('鐢ㄦ埛鐐瑰嚮鍙栨秷');
+ }
+ }
+ });
+ // driverCarRevoke
+ },
+ handleEdit(){},
+ handleAga(){},
+ getDetail(id) {
+ driverApplyDetail({id}).then(res => {
+ this.info = res.data
+ if(this.info.approveDateVO && this.info.approveDateVO.approveList.length > 0 ){
+ this.info.approveDateVO.approveList.forEach(item => {
+ if(item.approveList && item.approveList.length == 1 && item.type !== 1){
+ item.title = item.approveList[0].title
+ item.faceImg = item.approveList[0].faceImg
+ item.memberName = item.approveList[0].memberName
+ item.statusInfo = item.approveList[0].statusInfo
+ item.approveList = []
+ }
+ })
+ }
+ })
+ },
handleSub(flag) {
- // this.param.flag =
if (flag === '1') {
} else {
@@ -172,7 +201,7 @@
display: flex;
margin-bottom: 48rpx;
- .avatar {
+ .avatar_wrap {
width: 80rpx;
height: 80rpx;
position: relative;
@@ -281,7 +310,7 @@
display: flex;
align-items: center;
- .avatar {
+ .avatar_wrap {
margin-right: 20rpx;
width: 120rpx;
height: 120rpx;
@@ -319,7 +348,7 @@
.desc {
font-size: 26rpx;
- color: #ed4545;
+ color: #999999;
}
.status {
@@ -339,7 +368,7 @@
padding-bottom: 64rpx;
display: flex;
justify-content: space-between;
-
+
.btn {
width: 336rpx;
height: 88rpx;
@@ -357,6 +386,9 @@
color: #fff;
border: 1rpx solid $uni-color-primary;
}
+ .aga{
+ width: 100%;
+ }
}
.appr_modal {
diff --git a/h5/pages/driver/reservedGuide.vue b/h5/pages/driver/reservedGuide.vue
index 8c3b35f..73789e1 100644
--- a/h5/pages/driver/reservedGuide.vue
+++ b/h5/pages/driver/reservedGuide.vue
@@ -1,6 +1,6 @@
<template>
<view>
-
+ <mp-html :content="content" />
</view>
</template>
@@ -8,8 +8,14 @@
export default {
data() {
return {
-
+ content: ''
};
+ },
+ onLoad(option) {
+ this.content = uni.getStorageSync('driverGuide')[option.str]
+ },
+ methods: {
+
}
}
</script>
diff --git a/h5/pages/driver/reservedRecord.vue b/h5/pages/driver/reservedRecord.vue
index f76ba2e..0d19bd6 100644
--- a/h5/pages/driver/reservedRecord.vue
+++ b/h5/pages/driver/reservedRecord.vue
@@ -4,74 +4,77 @@
<view class="box_list">
<view
class="box_list_item"
- v-for="(item, index) in 3"
+ v-for="(item, index) in datalist"
:key="index"
- @click="handleDetail()"
+ @click="handleDetail(item.id)"
>
<view class="box_list_item_head">
- <text>涓佹仼鍑殑鍔冲姟鍏ュ洯鐢宠</text>
- <text class="loading">寰呭鏍�</text>
+ <text>{{item.driverName}}鐨勫叆鍥绾�</text>
+ <text class="loading">{{ statusMap[item.status] }}</text>
</view>
<view class="box_list_item_nr">
<view class="box_list_item_nr_item">
- <text>琚闂汉锛�</text>
- <text>浜轰簨閮�-鐜嬩簹钃�</text>
+ <text>鍚堝悓缂栧彿锛�</text>
+ <text>{{item.contractNum}}</text>
</view>
<view class="box_list_item_nr_item">
- <text>杩涘巶鏃堕棿锛�</text>
- <text>12-12 09:00</text>
+ <text>鍒板満鏃堕棿锛�</text>
+ <text>{{item.arriveDate.slice(5,16)}}</text>
</view>
<view class="box_list_item_nr_item">
- <text>绂诲洯鏃堕棿锛�</text>
- <text>12-12 12:00</text>
+ <text>鍙告満濮撳悕锛�</text>
+ <text>{{item.driverName}}</text>
</view>
<view class="box_list_item_nr_item">
- <text>鏉ヨ浜嬬敱锛�</text>
- <text>涓氬姟鏉ュ線</text>
+ <text>杞﹁締淇℃伅锛�</text>
+ <text>{{item.carCodeFront}}</text>
</view>
<view class="box_list_item_nr_item">
- <text>闅忚杞﹁締锛�</text>
- <text>鐨朅88888</text>
+ <text class="placeholder9">{{item.createDate.slice(0,16)}}鎻愪氦</text>
</view>
</view>
</view>
</view>
- <!-- 閫夋嫨杞﹁締 -->
- <u-picker
- keyName="name"
- closeOnClickOverlay
- @close="isShowCar = false"
- :show="isShowCar"
- :columns="carList"
- @confirm="seletedCar"
- @cancel="isShowCar = false"
- ></u-picker>
- <!-- 鏃ユ湡 -->
- <u-datetime-picker
- :show="isShowDate"
- :minDate="minDate"
- @confirm="confirmDate"
- @cancel="isShowDate = false"
- mode="date"
- ></u-datetime-picker>
</view>
</template>
<script>
+ import { driverApplyRecord } from "@/api"
export default {
data() {
return {
isShowCar: false,
isShowDate: false,
param: {},
- carList: [[{ name: 'aa', value: '11' }]],
- timeList: [{ time: '08:30-09:00' }, { time: '08:30-09:00' }, { time: '08:30-09:00' }, { time: '08:30-09:00' }]
+ page: 1,
+ capacity: 10,
+ total: 0,
+ datalist: [],
+ statusMap: {
+ 0: '寰呭鎵�',
+ 1: '瀹℃壒涓�',
+ 2: '瀹℃壒閫氳繃',
+ 3: '瀹℃壒涓嶉�氳繃',
+ 4: '宸插彇娑�',
+ }
}
},
+ created() {
+ this.getList()
+ },
methods: {
- handleDetail() {
+ getList() {
+ const { page, capacity } = this
+ driverApplyRecord({
+ page, capacity,model: {}
+ }).then(res => {
+ this.datalist = res.data.records
+ this.total = res.data.total
+ })
+ },
+ handleDetail(id) {
uni.navigateTo({
- url: "/pages/driver/reservedDetail"
+ url: `/pages/driver/reservedDetail?id=${id}`
})
},
confirmDate(e) {
@@ -89,6 +92,9 @@
</script>
<style lang="scss">
+ page{
+ background: #f7f7f7;
+ }
.main_app {
background: #f7f7f7;
padding: 0;
@@ -151,7 +157,7 @@
}
}
.box_list_item_nr {
- padding: 30rpx;
+ padding: 30rpx 30rpx 10rpx;
width: 100%;
box-sizing: border-box;
background-color: #ffffff;
@@ -159,18 +165,11 @@
width: 100%;
display: flex;
align-items: center;
- margin-bottom: 20rpx;
+ margin-bottom: 16rpx;
text {
- &:nth-child(1) {
- font-size: 26rpx;
- font-weight: 400;
- color: #666666;
- }
- &:nth-child(2) {
- font-size: 26rpx;
- font-weight: 400;
- color: #333333;
- }
+ font-size: 26rpx;
+ font-weight: 400;
+ color: #666666;
}
}
}
diff --git a/h5/pages/driver/taskDetail.vue b/h5/pages/driver/taskDetail.vue
index 8734397..9985e40 100644
--- a/h5/pages/driver/taskDetail.vue
+++ b/h5/pages/driver/taskDetail.vue
@@ -164,7 +164,9 @@
getLocation() {
uni.getLocation({
type: 'wgs84',
+
success: function (res) {
+ console.log(res);
console.log('褰撳墠浣嶇疆鐨勭粡搴︼細' + res.longitude)
console.log('褰撳墠浣嶇疆鐨勭含搴︼細' + res.latitude)
}
diff --git a/h5/pages/staff/task/driver.vue b/h5/pages/staff/task/driver.vue
new file mode 100644
index 0000000..6532036
--- /dev/null
+++ b/h5/pages/staff/task/driver.vue
@@ -0,0 +1,445 @@
+<template>
+ <view class="main_app">
+ <view class="status_wrap">
+ <view class="name">{{info.driverName}}鐨勫叆鍥绾�</view>
+ <view class="desc">{{info.carCodeFront}}</view>
+ <view class="status">{{ statusMap[info.status] }}</view>
+ </view>
+ <!-- -->
+ <view class="emyty"></view>
+ <view class="module_list">
+ <view class="item">
+ <view class="label">鍏ュ洯鍘熷洜</view>
+ <view class="value">{{info.inReason}}</view>
+ </view>
+ <view class="item">
+ <view class="label">鍚堝悓缂栧彿</view>
+ <view class="value">{{info.contractNum}}</view>
+ </view>
+ <view class="item">
+ <view class="label">鍒板満鏃堕棿</view>
+ <view v-if="info.arriveDate" class="value">{{info.arriveDate.slice(0,16)}}</view>
+ </view>
+ <view class="item">
+ <view class="label">鍑嗚繍璇佺収鐗�</view>
+ <view class="value">
+ <image
+ v-if="info.transportImg"
+ class="avatar_wrap"
+ :src="info.prefixUrl + info.transportImg"
+ ></image>
+ </view>
+ </view>
+ <view class="item">
+ <view class="label">鍏ュ簱绫诲瀷</view>
+ <view class="value">{{info.inType == 0 ? '鏁存墭鐩�' : '浠剁儫'}}</view>
+ </view>
+ <view class="item">
+ <view class="label">鎬昏繍鏁伴噺</view>
+ <view class="value">{{info.totalNum}}涓囨敮</view>
+ </view>
+ <view class="emyty"></view>
+ <view class="item">
+ <view class="label">鍙告満濮撳悕</view>
+ <view class="value">{{info.driverName}}
+ </view>
+ </view>
+ <view class="item">
+ <view class="label">鎵嬫満鍙�</view>
+ <view class="value">{{info.driverPhone}}</view>
+ </view>
+ <view class="item">
+ <view class="label">杞︾墝鐓�</view>
+ <view class="value">鍓� {{info.carCodeFront}}锛屽悗 {{info.carCodeBack}}</view>
+ </view>
+ </view>
+ <!-- 娴佺▼ -->
+ <view class="flow_wrap">
+ <view class="flow_title">娴佺▼</view>
+ <view class="list" v-if="info.approveDateVO != null && info.approveDateVO.approveList != null">
+ <view class="item" v-for="item,index in info.approveDateVO.approveList">
+ <view v-if="index != info.approveDateVO.approveList.length - 1" class="separate"></view>
+ <view class="avatar_wrap">
+ <image
+ class="img"
+ :src="
+ item.faceImg
+ ? item.faceImg
+ : require('@/static/meeting/common/default_user@2x.png')
+ "
+ />
+ <image
+ v-if="item.status == 2"
+ class="status"
+ src="@/static/staff/liucheng_success@2x.png"
+ mode="widthFix"
+ />
+ <image
+ v-if="item.status == 3"
+ class="status"
+ src="@/static/staff/liucheng_fail@2x.png"
+ mode="widthFix"
+ />
+ </view>
+ <view class="content">
+ <view class="head">
+ <view class="event">{{ item.title }}</view>
+ <view class="time">{{item.createDate}}</view>
+ </view>
+ <view class="name_wrap">
+ <text>{{item.memberName}}<text v-if="item.statusInfo" class="status">({{item.statusInfo}})</text></text>
+ </view>
+ <view v-if="item.approveType == 1" class="carbon">
+ <view class="carbon_item" v-for="child in item.approveList"
+ :key="child.id">
+ <image :src="
+ child.faceImg
+ ? child.faceImg
+ : require('@/static/meeting/common/default_user@2x.png')
+ "></image>
+ <view class="text">{{ child.memberName }}</view>
+ </view>
+ </view>
+ </view>
+ </view>
+ </view>
+ </view>
+ <view class="emyty"></view>
+ <view class="main_footer">
+ <view class="btn" @click="handleSub('0')">鎷掔粷</view>
+ <view class="btn agree" @click="handleSub('1')">鍚屾剰</view>
+ </view>
+
+ <!-- -->
+ <u-popup
+ :show="showApprModal"
+ :round="10"
+ :safeAreaInsetBottom="true"
+ mode="bottom"
+ @close="showApprModal = false"
+ >
+ <view class="appr_modal">
+ <view class="title">{{ this.flag == '0' ? '鎷掔粷' : '鍚屾剰' }}</view>
+ <textarea
+ :placeholder="this.flag == '0' ? '鎷掔粷璇存槑锛屽繀濉�' : '鍚屾剰璇存槑锛岄潪蹇呭~'"
+ placeholder-class="placeholder9"
+ />
+ <view class="main_footer">
+ <view class="btn" @click="showApprModal = false">鍙栨秷</view>
+ <view class="btn agree" @click="handleAppy">鎻愪氦</view>
+ </view>
+ </view>
+ </u-popup>
+ </view>
+</template>
+
+<script>
+ import { driverApplyDetail, carUseBookAppr } from '@/api'
+export default {
+ data() {
+ return {
+ showApprModal: false,
+ checkInfo: '',
+ flag: '1',
+ info: {},
+ type: 0,
+ statusMap: {
+ 0: '寰呭鎵�',
+ 1: '瀹℃壒涓�',
+ 2: '瀹℃壒閫氳繃',
+ 3: '瀹℃壒涓嶉�氳繃',
+ 4: '宸插彇娑�',
+ },
+ }
+ },
+ onLoad(option) {
+ this.type = option.objType
+ this.getDetail(option.id)
+ },
+ methods: {
+ getDetail(id) {
+ driverApplyDetail({id}).then(res => {
+ this.info = res.data
+ if(this.info.approveDateVO && this.info.approveDateVO.approveList.length > 0 ){
+ this.info.approveDateVO.approveList.forEach(item => {
+ if(item.approveList && item.approveList.length == 1 && item.type !== 1){
+ item.title = item.approveList[0].title
+ item.faceImg = item.approveList[0].faceImg
+ item.memberName = item.approveList[0].memberName
+ item.statusInfo = item.approveList[0].statusInfo
+ item.approveList = []
+ }
+ })
+ }
+ console.log('this.info.approveDateVO', this.info.approveDateVO.approveList);
+ })
+ },
+ handleAppy() {
+ const {flag,checkInfo, type,info } = this
+ if(flag == 0 && !checkInfo) return this.showToast('鎷掔粷璇存槑蹇呭~')
+ carUseBookAppr({
+ checkInfo,objId: info.id,objType: 6,status: flag == 0 ? 3 : 2
+ }).then(res => {
+ if(res.code == 200){
+ setTimeout(() => {
+ this.showToast('鎿嶄綔鎴愬姛')
+ })
+ this.showApprModal = false
+ uni.navigateBack()
+ }
+ })
+ },
+ handleSub(flag) {
+ this.flag = flag
+ this.checkInfo = ''
+ if (flag === '1') {
+
+ } else {
+
+ }
+ this.showApprModal = true
+ }
+ },
+}
+</script>
+<style>
+page {
+ background-color: #f7f7f7;
+}
+</style>
+<style lang="scss">
+.main_app {
+ background-color: #fff;
+ padding-bottom: 0;
+
+ .flow_wrap {
+ padding: 30rpx 0;
+
+ .flow_title {
+ font-weight: 600;
+ font-size: 32rpx;
+ color: #222222;
+ margin-bottom: 24rpx;
+ }
+
+ .list {
+ .item {
+ display: flex;
+ margin-bottom: 48rpx;
+ position: relative;
+ .separate {
+ position: absolute;
+ width: 4rpx;
+ height: calc( 100% - 52rpx );
+ background-color: #eeeeee;
+ left: 40rpx;
+ top: 90rpx;
+ }
+ .avatar_wrap {
+ width: 80rpx;
+ height: 80rpx;
+ position: relative;
+ margin-right: 20rpx;
+ .img {
+ width: 80rpx;
+ height: 80rpx;
+ border-radius: 50%;
+ }
+
+ .status {
+ width: 28rpx;
+ height: 28rpx;
+ border-radius: 50%;
+ position: absolute;
+ right: 0;
+ bottom: 0;
+ }
+
+ }
+
+ .content {
+ flex: 1;
+
+ .head {
+ display: flex;
+ justify-content: space-between;
+ margin-bottom: 4rpx;
+
+ .event {
+ font-size: 30rpx;
+ }
+
+ .time {
+ font-size: 26rpx;
+ color: #999999;
+ }
+ }
+
+ .name_wrap {
+ font-size: 26rpx;
+ color: #777777;
+
+ .status {
+ color: $uni-color-primary;
+ }
+ }
+
+ .remark {
+ margin-top: 12rpx;
+ background-color: #f7f7f7;
+ padding: 14rpx 20rpx;
+ border-radius: 8rpx;
+ font-size: 26rpx;
+ color: #666666;
+ line-height: 36rpx;
+ }
+ }
+ .carbon {
+ display: flex;
+ width: 590rpx;
+ overflow-x: auto;
+ margin-top: 12rpx;
+ .carbon_item {
+ text-align: center;
+ flex-shrink: 0;
+ width: 100rpx;
+ image {
+ width: 60rpx;
+ height: 60rpx;
+ margin: 0 auto;
+ }
+ view {
+ font-size: 26rpx;
+ color: #777777;
+ }
+ }
+ }
+ }
+ }
+ }
+
+ .module_list {
+ .item {
+ padding: 30rpx 0;
+ border-bottom: 1rpx solid #e5e5e5;
+
+ .label {
+ font-size: 26rpx;
+ color: #666666;
+ margin-bottom: 20rpx;
+ }
+
+ .value {
+ font-size: 30rpx;
+ display: flex;
+ align-items: center;
+
+ .avatar_wrap {
+ margin-right: 20rpx;
+ width: 120rpx;
+ height: 120rpx;
+ border-radius: 8rpx;
+ border: 2rpx solid #e5e5e5;
+ }
+
+ .info {
+ flex: 1;
+ display: flex;
+ flex-direction: column;
+ justify-content: space-between;
+ font-size: 26rpx;
+ color: #666666;
+
+ .name {
+ font-size: 30rpx;
+ color: #333333;
+ }
+ }
+ }
+ }
+ }
+
+ .status_wrap {
+ position: relative;
+ padding: 30rpx 0;
+
+ .name {
+ font-weight: 600;
+ font-size: 32rpx;
+ margin-bottom: 20rpx;
+ color: #222222;
+ }
+
+ .desc {
+ font-size: 26rpx;
+ color: #999999;
+ }
+
+ .status {
+ position: absolute;
+ right: -30rpx;
+ top: 0;
+ height: 60rpx;
+ line-height: 60rpx;
+ padding: 0 32rpx;
+ border-radius: 0rpx 0rpx 0rpx 30rpx;
+ background-color: #e9edff;
+ color: $uni-color-primary;
+ }
+ }
+
+ .main_footer {
+ padding-bottom: 64rpx;
+ display: flex;
+ justify-content: space-between;
+
+ .btn {
+ width: 336rpx;
+ height: 88rpx;
+ line-height: 88rpx;
+ background: #ffffff;
+ border-radius: 44rpx;
+ border: 1rpx solid #999999;
+ font-size: 32rpx;
+ text-align: center;
+ margin: 16rpx 0;
+ }
+
+ .agree {
+ background: $uni-color-primary;
+ color: #fff;
+ border: 1rpx solid $uni-color-primary;
+ }
+ }
+
+ .appr_modal {
+ padding: 36rpx 30rpx 0;
+
+ .title {
+ font-weight: 600;
+ font-size: 32rpx;
+ color: #222222;
+ margin-bottom: 40rpx;
+ text-align: center;
+ }
+
+ textarea {
+ box-sizing: border-box;
+ width: 690rpx;
+ background-color: #f7f7f7;
+ font-size: 28rpx;
+ color: #333333;
+ padding: 24rpx;
+ border-radius: 8rpx;
+ margin-bottom: 30rpx;
+ }
+ }
+
+ .emyty {
+ width: 750rpx;
+ height: 20rpx;
+ background-color: #f7f7f7;
+ margin: 0 -30rpx;
+ }
+}
+</style>
diff --git a/h5/pages/staff/task/index.vue b/h5/pages/staff/task/index.vue
index b0b64bb..854541f 100644
--- a/h5/pages/staff/task/index.vue
+++ b/h5/pages/staff/task/index.vue
@@ -76,6 +76,23 @@
<view class="info loading">{{ item.info }}</view>
</view>
<view class="box_list_item_nr">
+ <view v-if="item.param1.arriveDate" class="box_list_item_nr_item">
+ <text></text>
+ <text>{{ item.param1.arriveDate }}</text>
+ </view>
+ <view v-if="item.param1.inType" class="box_list_item_nr_item">
+ <text></text>
+ <text>{{ item.param1.inType }}</text>
+ </view>
+ <view v-if="item.param1.totalNum" class="box_list_item_nr_item">
+ <text></text>
+ <text>{{ item.param1.totalNum }}</text>
+ </view>
+ <view v-if="item.param1.carNum" class="box_list_item_nr_item">
+ <text></text>
+ <text>{{ item.param1.carNum }}</text>
+ </view>
+
<view v-if="item.param1.name" class="box_list_item_nr_item">
<text></text>
<text>{{ item.param1.name }}</text>
@@ -342,7 +359,11 @@
uni.navigateTo({
url: `/pages/staff/task/vDangetAppr?id=${objId}&objType=${objType}`
})
- } else {
+ } else if (objType === 6 || objType === 5) {
+ uni.navigateTo({
+ url: `/pages/staff/task/driver?id=${objId}&objType=${objType}`
+ })
+ }else {
uni.navigateTo({
url: `/pages/staff/task/visitorApprove?id=${objId}&objType=${objType}`
})
diff --git a/h5/pages/staff/task/visitorApprove.vue b/h5/pages/staff/task/visitorApprove.vue
index 82883a4..4b75f1c 100644
--- a/h5/pages/staff/task/visitorApprove.vue
+++ b/h5/pages/staff/task/visitorApprove.vue
@@ -94,10 +94,17 @@
"
/>
<image
+ v-if="item.status == 2"
class="status"
src="@/static/staff/liucheng_success@2x.png"
mode="widthFix"
/>
+ <image
+ v-if="item.status == 3"
+ class="status"
+ src="@/static/staff/liucheng_fail@2x.png"
+ mode="widthFix"
+ />
</view>
<view class="content">
<view class="head">
diff --git a/h5/store/index.js b/h5/store/index.js
index 44fb682..0da49e4 100644
--- a/h5/store/index.js
+++ b/h5/store/index.js
@@ -13,6 +13,7 @@
const token = uni.getStorageSync('token')
const time = uni.getStorageSync('time')
const userInfo = uni.getStorageSync('userInfo')
+const driverInfo = uni.getStorageSync('driverInfo')
const sessionKey = uni.getStorageSync('sessionKey')
const store = new Vuex.Store({
@@ -26,6 +27,7 @@
token: token || null,
time: time || null,
userInfo: userInfo || {},
+ driverInfo: driverInfo || {},
height: height || '0',
sessionKey: sessionKey || '',
primaryColor: '#279baa'
@@ -66,6 +68,11 @@
state.userInfo = obj
uni.setStorageSync('userInfo', obj)
},
+ // 璁剧疆鍙告満淇℃伅
+ setDriverInfo(state, obj) {
+ state.driverInfo = obj
+ uni.setStorageSync('driverInfo', obj)
+ },
// 璁剧疆SessionKey
setSessionKey(state, val) {
state.sessionKey = val
--
Gitblit v1.9.3