From 57c140de40d75af475f5a1accc693172ffaaaf0d Mon Sep 17 00:00:00 2001
From: liukangdong <898885815@qq.com>
Date: 星期二, 24 九月 2024 09:15:06 +0800
Subject: [PATCH] ll

---
 admin/src/views/platform/LogisticsRecord/waybill.vue    |   26 
 admin/src/components/business/OperaPlatformWindow.vue   |   68 -
 pda/static/back.svg                                     |    1 
 admin/src/views/platform/components/PlatformQueuing.vue |    3 
 pda/pages.json                                          |    2 
 h5/pages/staff/task/visitorApprove.vue                  | 1135 +++++++++++++++---------------
 pda/pages/index/index.vue                               |  105 ++
 pda/utils/config.js                                     |    2 
 h5/pages/staff/task/driver.vue                          |  346 ++++----
 admin/src/views/meeting/bookings.vue                    |   17 
 pda/pages/index/control.vue                             |    2 
 admin/src/views/platform/LogisticsRecord/operation.vue  |    4 
 h5/manifest.json                                        |   13 
 admin/.env.development                                  |    3 
 h5/pages/staffLogin/login.vue                           |    2 
 admin/src/api/meeting/bookings.js                       |    4 
 admin/src/views/platform/queueUp.vue                    |   30 
 admin/src/views/platform/components/PlatformSign.vue    |  222 ++++++
 admin/src/api/platform/index.js                         |   50 
 admin/src/views/platform/LogisticsRecord/leaveAuth.vue  |    2 
 admin/src/views/platform/platform.vue                   |   93 +-
 pda/pages/index/login.vue                               |    5 
 h5/pages/driver/taskDetail.vue                          |   25 
 admin/src/views/platform/index.vue                      |    1 
 h5/pages/driver/reservedRecord.vue                      |    2 
 h5/pages/driver/login.vue                               |    2 
 pda/manifest.json                                       |    8 
 27 files changed, 1,213 insertions(+), 960 deletions(-)

diff --git a/admin/.env.development b/admin/.env.development
index 657e1bc..0778f82 100644
--- a/admin/.env.development
+++ b/admin/.env.development
@@ -2,5 +2,6 @@
 NODE_ENV = 'development'
 
 VUE_APP_API_URL  = 'http://localhost:10010'
-VUE_APP_API_URL  = 'http://192.168.137.1:10010'
+VUE_APP_API_URL  = 'http://192.168.0.103:10010'
 # VUE_APP_API_URL  = 'http://10.50.250.178:8088/gateway_interface'
+s
\ No newline at end of file
diff --git a/admin/src/api/meeting/bookings.js b/admin/src/api/meeting/bookings.js
index efd7284..d1ab7f7 100644
--- a/admin/src/api/meeting/bookings.js
+++ b/admin/src/api/meeting/bookings.js
@@ -31,6 +31,10 @@
 export function startById(data) {
   return request.post('/meetingAdmin/cloudService/business/meeting/start', data)
 }
+// 缁撴潫
+export function meetingEndById(data) {
+  return request.post('/meetingAdmin/cloudService/business/meeting/reservationOver', data)
+}
 // 鎻愬墠寮�濮�
 export function startEarlyById(data) {
   return request.post('/meetingAdmin/cloudService/business/meeting/startEarly', data)
diff --git a/admin/src/api/platform/index.js b/admin/src/api/platform/index.js
index b2dd326..a047f80 100644
--- a/admin/src/api/platform/index.js
+++ b/admin/src/api/platform/index.js
@@ -1,108 +1,112 @@
 import request from '@/utils/request'
 
 // 鑾峰彇鏈堝彴缁勪俊鎭�
-export function getPlatformGroupList (data) {
+export function getPlatformGroupList(data) {
   return request.post('/visitsAdmin/cloudService/business/platform/getPlatformGroupList', data)
 }
 // 鍙彿鍒楄〃
-export function platformCallList (data) {
+export function platformCallList(data) {
   return request.post('/visitsAdmin/cloudService/business/platform/platformCallList', data)
 }
 // 鍙彿
-export function platformCallNumber (data) {
+export function platformCallNumber(data) {
   return request.post('/visitsAdmin/cloudService/business/platform/platformCallNumber', data)
 }
 // 寮�濮嬩綔涓�
-export function platformBeginWork (data) {
+export function platformBeginWork(data) {
   return request.post('/visitsAdmin/cloudService/business/platform/beginWork', data)
 }
 // 瀹屾垚浣滀笟
-export function platformFinishWork (data) {
+export function platformFinishWork(data) {
   return request.post('/visitsAdmin/cloudService/business/platform/finishWork', data)
 }
 // 杩囧彿
-export function platformOverNumber (data) {
+export function platformOverNumber(data) {
   return request.post('/visitsAdmin/cloudService/business/platform/platformOverNumber', data)
 }
 // 寮傚父鎸傝捣
-export function platformErr (data) {
+export function platformErr(data) {
   return request.post('/visitsAdmin/cloudService/business/platform/platformErr', data)
 }
 // 寮傚父鎸傝捣
-export function platformMove (data) {
+export function platformMove(data) {
   return request.post('/visitsAdmin/cloudService/business/platform/platformMove', data)
 }
 // 鏈堝彴閰嶇疆
-export function updUserPlatformConfig (data) {
+export function updUserPlatformConfig(data) {
   return request.get('/visitsAdmin/cloudService/business/platform/updUserPlatformConfig?ids=' + data)
 }
 
 // 鏍规嵁鏈堝彴缁勮幏鍙栨湀鍙板垪琛ㄤ俊鎭�
-export function listByGroupId (id) {
+export function listByGroupId(id) {
   return request.get('/visitsAdmin/cloudService/business/platform/listByGroupId?groupId=' + id)
 }
 // 鏈堝彴鍒楄〃 缂栬緫
-export function PlatformEdit (data) {
+export function PlatformEdit(data) {
   return request.post('/visitsAdmin/cloudService/business/platform/updateById', data, {
     trim: true
   })
 }
 // 鏈堝彴鍒楄〃 鍒犻櫎
-export function PlatformDel (id) {
+export function PlatformDel(id) {
   return request.get('/visitsAdmin/cloudService/business/platform/delete/' + id, {
     trim: true
   })
 }
 // 鏈堝彴璋冨害涓績 鍒楄〃
-export function getPlatformJob (data) {
+export function getPlatformJob(data) {
   return request.post('/visitsAdmin/cloudService/business/platformJob/page', data, {
     trim: true
   })
 }
 // 杞﹁締鎺掗槦鎯呭喌
-export function platformLineUpPage (data) {
+export function platformLineUpPage(data) {
   return request.post('/visitsAdmin/cloudService/business/platform/platformLineUpPage', data, {
     trim: true
   })
 }
 
 // 鍏ュ洯鍘熷洜
-export function platformReasonList () {
+export function platformReasonList() {
   return request.get('/visitsAdmin/cloudService/business/platformBooks/platformReasonList')
 }
 // 鐗╂祦杞﹂绾�
-export function platformBooksApply (data) {
+export function platformBooksApply(data) {
   return request.post('/visitsAdmin/cloudService/business/platformBooks/apply', data)
 }
 // 鑾峰彇鏈堝彴缁� 绛夊緟涓庡紓甯告寕璧锋暟鎹�
-export function getPlatformGroupWork (id) {
+export function getPlatformGroupWork(id) {
   return request.get('/visitsAdmin/cloudService/business/platform/getPlatformGroupWork?platformGroupId=' + id)
 }
 // 鏈堝彴鍏ュ洯棰勭害 鍒嗛〉鍒楄〃
-export function platformBooksPage (data) {
+export function platformBooksPage(data) {
   return request.post('/visitsAdmin/cloudService/business/platformBooks/page', data)
 }
 // 鏈堝彴鍏ュ洯棰勭害 鍒楄〃瀵煎嚭
-export function platformBooksExport (data) {
+export function platformBooksExport(data) {
   return request.post('/visitsAdmin/cloudService/business/platformBooks/exportExcel', data, {
     trim: true,
     download: true
   })
 }
 // 鏈堝彴璋冨害浣滀笟浠诲姟 鍒嗛〉鍒楄〃
-export function platformJobPage (data) {
+export function platformJobPage(data) {
   return request.post('/visitsAdmin/cloudService/business/platformJob/page', data)
 }
 // 鏈堝彴璋冨害浣滀笟浠诲姟 鍒犻櫎
-export function platformJobDel (id) { 
+export function platformJobDel(id) {
   return request.get('/visitsAdmin/cloudService/business/platformJob/delete?id=' + id)
 }
+// 鏈堝彴璋冨害浣滀笟浠诲姟 绛惧埌
+export function platformJobSign(data) {
+  return request.post('/visitsAdmin/cloudService/business/platformJob/signIn', data)
+}
 // 鏈堝彴璋冨害浣滀笟浠诲姟 绂诲洯鎺堟潈
-export function platformPowerLevel (data) { 
+export function platformPowerLevel(data) {
   return request.post('/visitsAdmin/cloudService/business/platform/powerLevel', data)
 }
 // 鏈堝彴璋冨害浣滀笟浠诲姟 鍒楄〃瀵煎嚭
-export function platformJobExport (data) {
+export function platformJobExport(data) {
   return request.post('/visitsAdmin/cloudService/business/platformJob/exportExcel', data, {
     trim: true,
     download: true
diff --git a/admin/src/components/business/OperaPlatformWindow.vue b/admin/src/components/business/OperaPlatformWindow.vue
index c0157fb..c03564e 100644
--- a/admin/src/components/business/OperaPlatformWindow.vue
+++ b/admin/src/components/business/OperaPlatformWindow.vue
@@ -1,60 +1,42 @@
 <template>
-  <GlobalWindow
-    :title="title"
-    width="50%"
-    :visible.sync="visible"
-    :confirm-working="isWorking"
-    @confirm="confirm"
-  >
+  <GlobalWindow :title="title" width="50%" :visible.sync="visible" :confirm-working="isWorking" @confirm="confirm">
     <el-form :model="form" ref="form" :rules="rules">
-      <el-form-item label="鏈堝彴鍚嶇О锛�"  >
-       <span>{{form.name}}</span>
+      <el-form-item label="鏈堝彴鍚嶇О锛�">
+        <span>{{ form.name }}</span>
       </el-form-item>
       <el-form-item label="鏈堝彴缂栫爜锛�" prop="code">
-        <el-input v-model="form.code" placeholder="璇疯緭鍏ユ湀鍙扮紪鐮�" v-trim/>
-       <span class="tip-warn"><i class="el-icon-warning"></i>璇存槑锛氬搴擶MS绯荤粺涓殑缂栫爜</span>
+        <el-input v-model="form.code" placeholder="璇疯緭鍏ユ湀鍙扮紪鐮�" v-trim />
+        <span class="tip-warn"><i class="el-icon-warning"></i>璇存槑锛氬搴擶MS绯荤粺涓殑缂栫爜</span>
       </el-form-item>
       <el-form-item label="鎵�灞炴湀鍙板垎缁勶細" prop="groupId">
-        <el-select v-model="form.groupId"  >
-          <el-option
-              v-for="item in groupList"
-              :key="item.id"
-              :label="item.name"
-              :value="item.id">
+        <el-select v-model="form.groupId">
+          <el-option v-for="item in groupList" :key="item.id" :label="item.name" :value="item.id">
           </el-option>
         </el-select>
       </el-form-item>
       <el-form-item label="骞挎挱璁惧锛�" prop="broadcastIds">
-        <el-select v-model="form.broadcastIds" multiple >
-          <el-option
-              v-for="item in broadcastList"
-              :key="item.id"
-              :label="item.name"
-              :value="item.id">
+        <el-select v-model="form.broadcastIds" multiple>
+          <el-option v-for="item in broadcastList" :key="item.id" :label="item.name" :value="item.id">
           </el-option>
         </el-select>
       </el-form-item>
       <el-form-item label="LED璁惧锛�" prop="ledIds">
-        <el-select v-model="form.ledIds" multiple >
-          <el-option
-              v-for="item in ledList"
-              :key="item.id"
-              :label="item.name"
-              :value="item.id">
+        <el-select v-model="form.ledIds" multiple>
+          <el-option v-for="item in ledList" :key="item.id" :label="item.name" :value="item.id">
           </el-option>
         </el-select>
       </el-form-item>
-      <el-form-item label="鍚屾椂浣滀笟鏁伴噺锛�" prop="workingNum" >
-        <el-input type="number" v-model="form.workingNum" placeholder="璇疯緭鍏ュ悓鏃朵綔涓氭暟閲�" v-trim/>
+      <el-form-item label="鍚屾椂浣滀笟鏁伴噺锛�" prop="workingNum">
+        <el-input type="number" v-model="form.workingNum" placeholder="璇疯緭鍏ュ悓鏃朵綔涓氭暟閲�" v-trim />
       </el-form-item>
       <el-form-item label="鏈堝彴浣滀笟鏁堢巼(涓囧彧/灏忔椂)锛�" prop="workRate">
-        <el-input type="number"  v-model="form.workRate" placeholder="璇疯緭鍏ユ湀鍙颁綔涓氭晥鐜�(涓囧彧/灏忔椂)" v-trim/>
+        <el-input type="number" v-model="form.workRate" placeholder="璇疯緭鍏ユ湀鍙颁綔涓氭晥鐜�(涓囧彧/灏忔椂)" v-trim />
       </el-form-item>
       <el-form-item label="浣滀笟瓒呮椂鎶ヨ鏃堕棿(鍒嗛挓)锛�" prop="workTimeoutAlarmTime">
-        <el-input type="number"  v-model="form.workTimeoutAlarmTime" placeholder="璇疯緭鍏ヤ綔涓氳秴鏃舵姤璀︽椂闂�(鍒嗛挓)" v-trim/>
+        <el-input type="number" v-model="form.workTimeoutAlarmTime" placeholder="璇疯緭鍏ヤ綔涓氳秴鏃舵姤璀︽椂闂�(鍒嗛挓)" v-trim />
       </el-form-item>
-      <el-form-item label="鍋滅暀瓒呮椂鎶ヨ鏃堕棿(鍒嗛挓锛夛細" prop="stayTmeoutAlarmTime">
-        <el-input type="number"  v-model="form.stayTmeoutAlarmTime" placeholder="璇疯緭鍏ュ仠鐣欒秴鏃舵姤璀︽椂闂�(鍒嗛挓)" v-trim/>
+      <el-form-item label="鍋滅暀瓒呮椂鎶ヨ鏃堕棿(鍒嗛挓锛夛細" prop="stayTimeoutAlarmTime">
+        <el-input type="number" v-model="form.stayTimeoutAlarmTime" placeholder="璇疯緭鍏ュ仠鐣欒秴鏃舵姤璀︽椂闂�(鍒嗛挓)" v-trim />
       </el-form-item>
     </el-form>
   </GlobalWindow>
@@ -70,7 +52,7 @@
   name: 'OperaPlatformWindow',
   extends: BaseOpera,
   components: { GlobalWindow },
-  data () {
+  data() {
     return {
       // 琛ㄥ崟鏁版嵁
       groupList: [],
@@ -86,7 +68,7 @@
         endTime: '',
         workingNum: 1,
         workRate: '',
-        stayTmeoutAlarmTime: '',
+        stayTimeoutAlarmTime: '',
         workTimeoutAlarmTime: '',
       },
       // 楠岃瘉瑙勫垯
@@ -95,7 +77,7 @@
       }
     }
   },
-  created () {
+  created() {
     this.config({
       api: '/platform/platform',
       'field.id': 'id'
@@ -107,7 +89,7 @@
      * @title 绐楀彛鏍囬
      * @target 缂栬緫鐨勫璞�
      */
-    open (title, target) {
+    open(title, target) {
       this.title = title
       this.visible = true
       this.loadGroupList()
@@ -130,19 +112,19 @@
         this.form.workingNum = this.form.workingNum || 1
       })
     },
-    loadGroupList () {
+    loadGroupList() {
       allList({})
         .then(res => {
           this.groupList = res || []
         })
     },
-    loadLedList () {
+    loadLedList() {
       deviceList({ type: 2 })
         .then(res => {
           this.ledList = res || []
         })
     },
-    loadBroadcastList () {
+    loadBroadcastList() {
       deviceList({ type: 3 })
         .then(res => {
           this.broadcastList = res || []
@@ -152,7 +134,7 @@
 }
 </script>
 <style scoped>
-.labelTip{
+.labelTip {
   font-size: 12px;
   color: #666666;
 }
diff --git a/admin/src/views/meeting/bookings.vue b/admin/src/views/meeting/bookings.vue
index e9e45a1..73cc725 100644
--- a/admin/src/views/meeting/bookings.vue
+++ b/admin/src/views/meeting/bookings.vue
@@ -98,7 +98,7 @@
             'business:bookings:update',
             'business:bookings:delete',
           ])
-        " label="鎿嶄綔" min-width="100" align="center" fixed="right">
+        " label="鎿嶄綔" min-width="140" align="center" fixed="right">
           <template slot-scope="{ row }">
             <template>
               <el-button type="text" @click="$refs.operaBookingsDetailWindow.open('浼氳璇︽儏', row)">鏌ョ湅璇︽儏</el-button>
@@ -106,6 +106,7 @@
                 @click="$refs.operaBookingsWindow.open('缂栬緫浼氳棰勭害', row)"
                 v-permissions="['business:bookings:update']">缂栬緫</el-button>
               <el-button type="text" v-if="row.meetingStatus == '1'" @click="handleStart(row)">寮�濮�</el-button>
+              <el-button type="text" v-if="row.meetingStatus == '2'" @click="handleEnd(row)">缁撴潫</el-button>
               <el-button v-if="row.meetingStatus == '1'" type="text" @click="cancelMeeting(row.id)"
                 v-permissions="['business:bookings:update']">鎾ゅ洖</el-button>
             </template>
@@ -132,7 +133,7 @@
 import { findList } from '@/api/meeting/rooms'
 import { getSystemDictData } from '@/api/system/dictData'
 import { fetchList } from '@/api/business/company'
-import { cancelById, bookingsDetail, startEarlyById, startById } from '@/api/meeting/bookings'
+import { cancelById, bookingsDetail, startEarlyById, startById, meetingEndById } from '@/api/meeting/bookings'
 import { timeForMat } from '@/utils/util'
 export default {
   name: 'Bookings',
@@ -276,6 +277,18 @@
             })
         })
     },
+    handleEnd(row) {
+      this.$dialog.messageWaring('缁撴潫浼氳', '鏄惁缁撴潫褰撳墠浼氳锛�')
+        .then(() => {
+          meetingEndById({ id: row.id })
+            .then(() => {
+              this.$message.success('浼氳宸茬粨鏉�')
+              this.handlePageChange()
+            })
+            .catch(e => {
+            })
+        })
+    },
     cancelMeeting(id) {
       this.$dialog.messageWaring('鍙栨秷浼氳', '鏄惁鍙栨秷褰撳墠浼氳锛�')
         .then(() => {
diff --git a/admin/src/views/platform/LogisticsRecord/leaveAuth.vue b/admin/src/views/platform/LogisticsRecord/leaveAuth.vue
index 935607d..116e23f 100644
--- a/admin/src/views/platform/LogisticsRecord/leaveAuth.vue
+++ b/admin/src/views/platform/LogisticsRecord/leaveAuth.vue
@@ -16,7 +16,7 @@
     </div>
     <el-table class="mb20" v-loading="loading" :data="list" stripe>
       <el-table-column type="index" label="搴忓彿" width="70" show-overflow-tooltip />
-      <el-table-column prop="code" label="杩愬崟鍙�" min-width="100" show-overflow-tooltip />
+      <el-table-column prop="billCode" label="杩愬崟鍙�" min-width="100" show-overflow-tooltip />
       <!-- <el-table-column prop="totalNum" label="鎬讳綔涓氶噺(涓囨敮)" min-width="100" show-overflow-tooltip /> -->
       <el-table-column prop="carCodeFront" label="杞︾墝鍙�" min-width="100" show-overflow-tooltip />
       <el-table-column prop="carCodeBack" label="鐢靛瓙閿佺姸鎬�" min-width="100" show-overflow-tooltip>
diff --git a/admin/src/views/platform/LogisticsRecord/operation.vue b/admin/src/views/platform/LogisticsRecord/operation.vue
index 0c2d7f0..e06226e 100644
--- a/admin/src/views/platform/LogisticsRecord/operation.vue
+++ b/admin/src/views/platform/LogisticsRecord/operation.vue
@@ -17,7 +17,7 @@
       <el-button :loading="exLoading" @click="handleEx" v-permissions="['business:platformjob:exportExcel']">瀵煎嚭</el-button>
     </div>
     <el-table class="mb20" v-loading="loading" :data="list" stripe>
-      <el-table-column prop="code" label="杩愬崟鍙�" min-width="100" show-overflow-tooltip />
+      <el-table-column prop="billCode" label="杩愬崟鍙�" min-width="100" show-overflow-tooltip />
       <el-table-column prop="totalNum" label="鎬讳綔涓氶噺(涓囨敮)" min-width="100" show-overflow-tooltip />
       <el-table-column prop="carCodeFront" label="杞︾墝鍓嶇収鍙�" min-width="100" show-overflow-tooltip />
       <el-table-column prop="carCodeBack" label="杞︾墝鍚庣収鍙�" min-width="100" show-overflow-tooltip />
@@ -31,7 +31,7 @@
       <el-table-column prop="startDate" label="浣滀笟寮�濮嬫椂闂�" min-width="150" show-overflow-tooltip />
       <el-table-column prop="doneDate" label="浣滀笟瀹屾垚鏃堕棿" min-width="150" show-overflow-tooltip />
       <el-table-column prop="workTime" label="浣滀笟鏃堕暱" min-width="100" show-overflow-tooltip />
-      <el-table-column prop="platformName" label="鍙彿鏈堝彴" min-width="100" show-overflow-tooltip />
+      <el-table-column prop="platformNames" label="鍙彿鏈堝彴" min-width="100" show-overflow-tooltip />
       <el-table-column label="浣滀笟鎯呭喌" fixed="right" min-width="100" show-overflow-tooltip>
         <template v-slot="scope">
           <span>{{ statusMap[scope.row.status] }}</span>
diff --git a/admin/src/views/platform/LogisticsRecord/waybill.vue b/admin/src/views/platform/LogisticsRecord/waybill.vue
index ed49adb..a65fc5a 100644
--- a/admin/src/views/platform/LogisticsRecord/waybill.vue
+++ b/admin/src/views/platform/LogisticsRecord/waybill.vue
@@ -1,12 +1,9 @@
 <template>
   <div class="main_app">
-    <QueryForm v-model="filters" :query-form-config="queryFormConfig" @changeForm='changeForm' @handleQuery="getList(1)" @clear="clear">
+    <QueryForm v-model="filters" :query-form-config="queryFormConfig" @changeForm='changeForm' @handleQuery="getList(1)"
+      @clear="clear">
       <template #fastdate>
-        <el-radio-group
-          v-model="filters.fastdate"
-          size="small"
-          @input="changeRadio"
-        >
+        <el-radio-group v-model="filters.fastdate" size="small" @input="changeRadio">
           <el-radio-button label="0">褰撳ぉ</el-radio-button>
           <el-radio-button label="6">杩�7澶�</el-radio-button>
           <el-radio-button label="29">杩�30澶�</el-radio-button>
@@ -14,10 +11,11 @@
       </template>
     </QueryForm>
     <div class="pt16">
-      <el-button :loading="exLoading" @click="handleEx" v-permissions="['business:platformJob:exportExcel']">瀵煎嚭</el-button>
+      <el-button :loading="exLoading" @click="handleEx"
+        v-permissions="['business:platformjob:exportExcel']">瀵煎嚭</el-button>
     </div>
     <el-table class="mb20" v-loading="loading" :data="list" stripe>
-      <el-table-column prop="code" label="杩愬崟鍙�" min-width="100" show-overflow-tooltip />
+      <el-table-column prop="billCode" label="杩愬崟鍙�" min-width="100" show-overflow-tooltip />
       <el-table-column prop="carCodeFront" label="杞︾墝鍓嶇収鍙�" min-width="100" show-overflow-tooltip />
       <!-- <el-table-column prop="carCodeBack" label="杞︾墝鍚庣収鍙�" min-width="100" show-overflow-tooltip /> -->
       <el-table-column prop="taskOrigin" label="浠诲姟鏉ユ簮" min-width="100" show-overflow-tooltip />
@@ -41,9 +39,9 @@
       </el-table-column>
       <el-table-column prop="name" label="鎿嶄綔" min-width="120" align="center" fixed="right" show-overflow-tooltip>
         <template v-slot="scope">
-          <el-button v-if="scope.row.status == 12" type="text" class="red" v-permissions="['business:platformJob:delete']"
+          <el-button type="text" class="red" v-permissions="['business:platformjob:delete']"
             @click="handleDel(scope.row)">鍒犻櫎</el-button>
-          <el-button type="text" v-permissions="['business:platformJob:query']"
+          <el-button type="text" v-permissions="['business:platformjob:query']"
             @click="handleDetail(scope.row)">棰勭害璇︽儏</el-button>
         </template>
       </el-table-column>
@@ -58,7 +56,7 @@
 <script>
 import Pagination from '@/components/common/Pagination'
 import QueryForm from '@/components/common/QueryForm'
-import { platformJobPage,  platformJobExport,platformJobDel } from '@/api'
+import { platformJobPage, platformJobExport, platformJobDel } from '@/api'
 import { statusMap } from '../config'
 import DriverDetail from "@/views/task/driverDetail"
 import GlobalWindow from '@/components/common/GlobalWindow'
@@ -91,7 +89,7 @@
       list: [],
       queryFormConfig: {
         formItems: [
-        {
+          {
             filed: 'code',
             type: 'input',
             label: '杩愬崟鍙�'
@@ -127,12 +125,12 @@
     this.getList()
   },
   methods: {
-    changeRadio (day) {
+    changeRadio(day) {
       const arr = [dayjs().subtract(day, 'day').format('YYYY-MM-DD') + ' 00:00:00', dayjs().format('YYYY-MM-DD') + ' 23:59:59']
       this.$set(this.filters, 'selDate', arr)
       this.getList()
     },
-    changeForm (str) {
+    changeForm(str) {
       if (str === 'selDate') {
         this.$set(this.filters, 'fastdate', null)
         this.getList()
diff --git a/admin/src/views/platform/components/PlatformQueuing.vue b/admin/src/views/platform/components/PlatformQueuing.vue
index 4cbc85b..d32f32e 100644
--- a/admin/src/views/platform/components/PlatformQueuing.vue
+++ b/admin/src/views/platform/components/PlatformQueuing.vue
@@ -1,6 +1,6 @@
 <template>
   <GlobalWindow
-    title="鏈堝彴鍙彿-xx鍙锋湀鍙�"
+    :title="'鏈堝彴鍙彿-'+title"
     :visible.sync="isShowModal"
     :showConfirm="false"
     width="800px"
@@ -92,6 +92,7 @@
         page: 1
       },
       carCodeFront: '',
+      title: '',
       activePlat: {},
       dataList: []
 
diff --git a/admin/src/views/platform/components/PlatformSign.vue b/admin/src/views/platform/components/PlatformSign.vue
new file mode 100644
index 0000000..79b9000
--- /dev/null
+++ b/admin/src/views/platform/components/PlatformSign.vue
@@ -0,0 +1,222 @@
+<template>
+  <GlobalWindow title="杞﹁締绛惧埌" :visible.sync="isShowModal" :showConfirm="false" width="800px">
+    <div class="queuing_modal">
+      <div class="df_ac mb20">
+        <span>鎼滅储杞﹁締锛�</span>
+        <el-input class="flex1 mr20" v-model="carCodeFront" placeholder="璇疯緭鍏ヨ溅鐗屽彿"></el-input>
+        <el-button type="primary" @click="getList">鏌ユ壘</el-button>
+        <el-button @click="reset">閲嶇疆</el-button>
+      </div>
+      <div class="list">
+        <div class="item" v-for="item in dataList" :key="item.id">
+          <div class="head df_sb">
+            <div v-if="item.carCodeFront" class="code">
+              <span>{{ item.carCodeFront.slice(0, 1) }}</span>
+              <span>{{ item.carCodeFront.slice(1, 2) }}</span>
+              <span>路</span>
+              <span>{{ item.carCodeFront.slice(2) }}</span>
+            </div>
+            <div class="status" :class="{ red: item.status == 0 }">{{ statusMap[item.status] }}</div>
+          </div>
+          <div class="info">
+            <div v-if="item.type == 4" class="ite">
+              <span>鍚堝悓鍗曞彿锛�</span>
+              <span>{{ item.contractNum }}</span>
+            </div>
+            <div v-else class="ite">
+              <span>杩愯緭鍗曞彿锛�</span>
+              <span>{{ item.billCode }}</span>
+            </div>
+            <div class="ite">
+              <span>椹鹃┒鍛橈細</span>
+              <span>{{ item.driverName }}</span>
+            </div>
+            <div class="ite">
+              <span>鎵嬫満鍙凤細</span>
+              <span>{{ item.drivierPhone }}</span>
+            </div>
+            <div class="ite">
+              <span>鎬昏繍杈撻噺锛�</span>
+              <span>{{ item.totalNum }}涓囨敮</span>
+            </div>
+            <div v-if="item.type != 4" class="ite" style="width: 66%">
+              <span>杩愯緭鍏徃锛�</span>
+              <span>{{ item.carrierName }}</span>
+            </div>
+          </div>
+          <div class="footer df_sb">
+            <div v-if="item.type != 4" class="detail">杩愬崟璇︽儏</div>
+            <div v-else></div>
+            <el-button type="primary" @click="handleCall(item)">绛惧埌</el-button>
+          </div>
+        </div>
+      </div>
+      <pagination @size-change="handleSizeChange" @current-change="handlePageChange" :pagination="pagination">
+      </pagination>
+    </div>
+  </GlobalWindow>
+</template>
+
+<script>
+import GlobalWindow from '@/components/common/GlobalWindow'
+import Pagination from '@/components/common/Pagination'
+import { platformJobPage, platformJobSign } from '@/api'
+import { statusMap } from '../config'
+import { Message } from 'element-ui'
+export default {
+  components: {
+    GlobalWindow,
+    Pagination
+  },
+  data() {
+    return {
+      statusMap,
+      isShowModal: false,
+      subLoading: false,
+      pagination: {
+        total: 0,
+        pageSize: 10,
+        page: 1
+      },
+      carCodeFront: '',
+      // activePlat: {},
+      dataList: []
+
+    }
+  },
+  methods: {
+    handleCall(item) {
+      // const activePlatform = this.activePlat
+      platformJobSign({ jobId: item.id, signType: '2' }).then(res => {
+        Message.success('绛惧埌鎴愬姛')
+        this.$emit('success')
+        this.getList()
+      })
+    },
+    getList() {
+      const { activePlat, pagination, carCodeFront } = this
+      platformJobPage({
+        model: { platformGroupId: activePlat.id, queryStatus: '0,1' },
+        page: pagination.page,
+        capacity: pagination.pageSize
+      }).then(res => {
+        this.dataList = res.records
+        this.pagination.total = res.total
+      })
+    },
+    reset() {
+      this.carCodeFront = ''
+      this.pagination.page = 1
+      this.pagination.pageSize = 10
+      this.getList()
+    },
+    handleSizeChange(e) {
+      this.pagination.pageSize = e
+      this.getList()
+    },
+    handlePageChange(e) {
+      this.pagination.page = e
+      this.getList()
+    },
+    handleSub() {
+      const { param } = this
+      this.subLoading = true
+      PlatformEdit({
+        ...param
+      }).then(res => {
+        this.subLoading = false
+        this.isShowEdit = false
+        this.$tip.success('鎻愪氦鎴愬姛')
+        this.getList()
+      }, () => {
+        this.subLoading = false
+      })
+    }
+  }
+
+}
+</script>
+
+<style lang="scss" scoped>
+@import "@/assets/style/variables.scss";
+
+.queuing_modal {
+  padding: 10px 30px;
+
+  .list {
+    .item {
+      background: #f4fafb;
+      border-radius: 2px;
+      border: 1px solid #dfe2e8;
+      margin-bottom: 10px;
+      padding: 16px;
+
+      .head {
+        margin-bottom: 15px;
+
+        .plate {
+          width: 90px;
+          text-align: center;
+          font-size: 15px;
+          color: #111111;
+          padding: 4px 5px;
+          font-weight: 700;
+          border: 1px solid #279baa;
+          background-color: #fff;
+        }
+
+        .status {
+          color: $primaryColor;
+        }
+
+        .code {
+          display: flex;
+          font-weight: 600;
+          height: 30px;
+          line-height: 30px;
+          font-size: 15px;
+          color: #111111;
+          background-color: #fff;
+          border-radius: 4px;
+          border: 1px solid $primaryColor;
+          padding-right: 4px;
+
+          span {
+            &:nth-of-type(1) {
+              background: $primaryColor;
+              padding: 0 8px;
+              color: #fff;
+            }
+
+            &:nth-of-type(2) {
+              padding-left: 4px;
+            }
+          }
+        }
+      }
+
+      .info {
+        display: flex;
+        flex-wrap: wrap;
+
+        .ite {
+          width: 33.3%;
+          margin-bottom: 8px;
+
+          span {
+            &:nth-child(1) {
+              color: #666666;
+            }
+          }
+        }
+      }
+
+      .footer {
+        .detail {
+          color: $primaryColor;
+        }
+      }
+    }
+  }
+}
+</style>
diff --git a/admin/src/views/platform/index.vue b/admin/src/views/platform/index.vue
index 7e712e4..052788a 100644
--- a/admin/src/views/platform/index.vue
+++ b/admin/src/views/platform/index.vue
@@ -389,6 +389,7 @@
         this.$refs.PlatformQueuingRef.isShowModal = true
         this.$refs.PlatformQueuingRef.activePlat = { ...item }
         this.$refs.PlatformQueuingRef.getList()
+        this.$refs.PlatformQueuingRef.title = item.name
       })
     },
     handleDetail () {
diff --git a/admin/src/views/platform/platform.vue b/admin/src/views/platform/platform.vue
index 8ae1b2c..d344856 100644
--- a/admin/src/views/platform/platform.vue
+++ b/admin/src/views/platform/platform.vue
@@ -4,15 +4,12 @@
     <SearchFormCollapse slot="search-form" :need-more="false">
       <el-form ref="searchForm" :model="searchForm" label-width="100px" inline>
         <el-form-item label="" prop="name">
-          <el-input v-model="searchForm.name" clearable placeholder="璇疯緭鍏ユ湀鍙板悕绉�" @keypress.enter.native="search"></el-input>
+          <el-input v-model="searchForm.name" clearable placeholder="璇疯緭鍏ユ湀鍙板悕绉�"
+            @keypress.enter.native="search"></el-input>
         </el-form-item>
-        <el-form-item label="" >
-          <el-select v-model="searchForm.groupId"     placeholder="璇烽�夋嫨鏈堝彴鍒嗙粍" @change="search" clearable>
-            <el-option
-                v-for="item in groupList"
-                :key="item.id"
-                :label="item.name"
-                :value="item.id">
+        <el-form-item label="">
+          <el-select v-model="searchForm.groupId" placeholder="璇烽�夋嫨鏈堝彴鍒嗙粍" @change="search" clearable>
+            <el-option v-for="item in groupList" :key="item.id" :label="item.name" :value="item.id">
             </el-option>
           </el-select>
         </el-form-item>
@@ -25,71 +22,57 @@
     <!-- 琛ㄦ牸鍜屽垎椤� -->
     <template v-slot:table-wrap>
       <ul class="toolbar" v-permissions="['business:hksync:platforms']">
-        <li><el-button type="primary" :loading="working" @click="syncData" icon="el-icon-plus" v-permissions="['business:hksync:platforms']">鍚屾</el-button></li>
-        <li><el-button type="primary" :loading="working1" @click="syncStatus" icon="el-icon-plus" v-permissions="['business:hksync:platforms']">鍚屾瀹炴椂鐘舵��</el-button></li>
+        <li><el-button type="primary" :loading="working" @click="syncData" icon="el-icon-plus"
+            v-permissions="['business:hksync:platforms']">鍚屾</el-button></li>
+        <li><el-button type="primary" :loading="working1" @click="syncStatus" icon="el-icon-plus"
+            v-permissions="['business:hksync:platforms']">鍚屾瀹炴椂鐘舵��</el-button></li>
       </ul>
-      <el-table
-        v-loading="isWorking.search"
-        :data="tableData.list"
-        stripe
-        @selection-change="handleSelectionChange"
-      >
+      <el-table v-loading="isWorking.search" :data="tableData.list" stripe @selection-change="handleSelectionChange">
         <el-table-column type="selection" width="55"></el-table-column>
         <el-table-column prop="name" label="鏈堝彴鍚嶇О" fixed min-width="100px"></el-table-column>
         <el-table-column prop="code" label="鏈堝彴缂栫爜" fixed min-width="100px"></el-table-column>
         <el-table-column prop="groupName" label="鎵�灞炴湀鍙扮粍" fixed min-width="150px"></el-table-column>
         <el-table-column prop="workingNum" label="鍚屾椂鍙彿杞﹁締鏁�" min-width="120px"></el-table-column>
-        <el-table-column label="绂�/鍚敤" min-width="120px">
-          <template slot-scope="{row}">
-            <el-switch
-                @change="changeStatus($event, row)"
-                v-model="row.status"
-                active-color="#13ce66"
-                inactive-color="#ff4949"
-                :active-value="0"
-                :inactive-value="1">
-            </el-switch>
-          </template>
-        </el-table-column>
-        <el-table-column prop="stayTmeoutAlarmTime" label="鍋滅暀瓒呮椂鎶ヨ鏃堕棿(鍒嗛挓锛�" min-width="180px">
-          <template scope="{row}">{{row.stayTmeoutAlarmTime?(row.stayTmeoutAlarmTime):'-'}}</template>
+        <el-table-column prop="stayTimeoutAlarmTime" label="鍋滅暀瓒呮椂鎶ヨ鏃堕棿(鍒嗛挓锛�" min-width="180px">
+          <template scope="{row}">{{ row.stayTimeoutAlarmTime ? (row.stayTimeoutAlarmTime) : '-' }}</template>
         </el-table-column>
         <el-table-column prop="workTimeoutAlarmTime" label="浣滀笟瓒呮椂鎶ヨ鏃堕棿(鍒嗛挓锛�" min-width="180px">
-          <template scope="{row}"> {{row.workTimeoutAlarmTime?(row.workTimeoutAlarmTime):'-'}}</template>
+          <template scope="{row}"> {{ row.workTimeoutAlarmTime ? (row.workTimeoutAlarmTime) : '-' }}</template>
         </el-table-column>
         <el-table-column prop="workRate" label="鏈堝彴浣滀笟鏁堢巼(涓囧彧/灏忔椂)" min-width="180px"></el-table-column>
-        <el-table-column prop="platformStatus" label="鏈堝彴鐘舵��" min-width="100px">
+        <!-- <el-table-column prop="platformStatus" label="鏈堝彴鐘舵��" min-width="100px">
           <template scope="{row}">
             <span v-if="row.platformStatus == 0">鏃犺溅</span>
             <span v-if="row.platformStatus == 1">鏈夎溅</span>
             <span v-if="row.platformStatus == 2">瓒呮椂鍋滈潬</span>
             <span v-if="row.platformStatus == 3">閿欒鍋滈潬</span>
           </template>
-        </el-table-column>
+        </el-table-column> -->
         <el-table-column prop="broadcastNames" label="鍏宠仈骞挎挱" min-width="100px"></el-table-column>
         <el-table-column prop="ledNames" label="鍏宠仈LED" min-width="100px"></el-table-column>
         <el-table-column prop="hkDate" label="鍚屾鏃堕棿" min-width="150px"></el-table-column>
-        <el-table-column
-          v-if="containPermissions(['business:platform:update', 'business:platform:delete'])"
-          label="鎿嶄綔"
-          min-width="120"
-          fixed="right"
-        >
+        <el-table-column label="鏈堝彴鐘舵��" fixed="right" width="100px">
           <template slot-scope="{row}">
-            <el-button type="text" @click="$refs.operaPlatformWindow.open('缂栬緫鏈堝彴淇℃伅琛�', row)" icon="el-icon-edit" v-permissions="['business:platform:update']">缂栬緫</el-button>
-            <el-button type="text" @click="deleteById(row)" icon="el-icon-delete" v-permissions="['business:platform:delete']">鍒犻櫎</el-button>
+            <el-switch @change="changeStatus($event, row)" v-model="row.status" active-color="#13ce66"
+              inactive-color="#ff4949" :active-value="0" :inactive-value="1">
+            </el-switch>
+          </template>
+        </el-table-column>
+        <el-table-column v-if="containPermissions(['business:platform:update', 'business:platform:delete'])" label="鎿嶄綔"
+          min-width="120" fixed="right">
+          <template slot-scope="{row}">
+            <el-button type="text" @click="$refs.operaPlatformWindow.open('缂栬緫鏈堝彴淇℃伅琛�', row)" icon="el-icon-edit"
+              v-permissions="['business:platform:update']">缂栬緫</el-button>
+            <el-button type="text" @click="deleteById(row)" icon="el-icon-delete"
+              v-permissions="['business:platform:delete']">鍒犻櫎</el-button>
           </template>
         </el-table-column>
       </el-table>
-      <pagination
-        @size-change="handleSizeChange"
-        @current-change="handlePageChange"
-        :pagination="tableData.pagination"
-      >
+      <pagination @size-change="handleSizeChange" @current-change="handlePageChange" :pagination="tableData.pagination">
       </pagination>
     </template>
     <!-- 鏂板缓/淇敼 -->
-    <OperaPlatformWindow ref="operaPlatformWindow" @success="handlePageChange"/>
+    <OperaPlatformWindow ref="operaPlatformWindow" @success="handlePageChange" />
   </TableLayout>
 </template>
 
@@ -104,7 +87,7 @@
   name: 'Platform',
   extends: BaseTable,
   components: { SearchFormCollapse, TableLayout, Pagination, OperaPlatformWindow },
-  data () {
+  data() {
     return {
       groupList: [],
       // 鎼滅储
@@ -116,7 +99,7 @@
       }
     }
   },
-  created () {
+  created() {
     this.config({
       module: '鏈堝彴淇℃伅琛�',
       api: '/platform/platform',
@@ -127,19 +110,19 @@
     this.loadGroupList()
   },
   methods: {
-    loadGroupList () {
+    loadGroupList() {
       allList({})
         .then(res => {
           this.groupList = res || []
         })
     },
-    changeStatus (e, row) {
+    changeStatus(e, row) {
       this.api.updateStatusById({
         id: row.id,
         status: e
       })
     },
-    syncData () {
+    syncData() {
       this.$dialog.actionConfirm('鎿嶄綔纭鎻愰啋', '鎮ㄧ‘璁ゅ悓姝ュ叏閮ㄤ俊鎭悧锛�')
         .then(() => {
           this.isWorking.working = true
@@ -155,9 +138,9 @@
               this.isWorking.working = false
             })
         })
-        .catch(() => {})
+        .catch(() => { })
     },
-    syncStatus () {
+    syncStatus() {
       this.$dialog.actionConfirm('鎿嶄綔纭鎻愰啋', '鎮ㄧ‘璁ゅ悓姝ュ叏閮ㄤ俊鎭悧锛�')
         .then(() => {
           this.isWorking.working = true
@@ -173,7 +156,7 @@
               this.isWorking.working = false
             })
         })
-        .catch(() => {})
+        .catch(() => { })
     }
   }
 }
diff --git a/admin/src/views/platform/queueUp.vue b/admin/src/views/platform/queueUp.vue
index 9b7f0b2..4b2d2f3 100644
--- a/admin/src/views/platform/queueUp.vue
+++ b/admin/src/views/platform/queueUp.vue
@@ -8,8 +8,11 @@
         </div>
       </div>
     </div>
-    <QueryForm v-model="filters" :query-form-config="queryQueueUpConfig" @handleQuery="getList(1)" @clear="clear">
-    </QueryForm>
+    <div class="df_sb">
+      <QueryForm v-model="filters" :query-form-config="queryQueueUpConfig" @handleQuery="getList(1)" @clear="clear">
+      </QueryForm>
+      <el-button @click="openSign" type="primary" style="align-self: flex-start;">杞﹁締绛惧埌</el-button>
+    </div>
     <div class="main_content">
       <div class="static_wrap">
         <span>绛夊緟锛�<span class="num">{{ staticParam.waitNum }}</span></span>
@@ -31,7 +34,7 @@
         </template>
       </el-table-column>
       <el-table-column prop="carrierName" label="杩愯緭鍏徃" min-width="200" />
-      <el-table-column prop="code" label="杩愬崟鍙�" min-width="200" />
+      <el-table-column prop="billCode" label="杩愬崟鍙�" min-width="200" />
       <el-table-column prop="totalNum" label="鎬昏繍杈撻噺(涓囨敮)" min-width="130" />
       <el-table-column prop="driverName" label="椹鹃┒鍛�" min-width="140">
         <template slot-scope="{ row }">
@@ -49,12 +52,9 @@
     <pagination @size-change="handleSizeChange" @current-change="handlePageChange" :pagination="pagination" />
 
     <!--  -->
-    <WaybillDetail
-      ref="WaybillDetailRef"
-      v-if="isShowDetail"
-      @success="getList"
-      @close="isShowDetail = false"
-    />
+    <PlatformSign ref="PlatformSignRef" v-if="isPlatformSign" @success="getPlatGroupList"
+      @close="isPlatformSign = false" />
+    <WaybillDetail ref="WaybillDetailRef" v-if="isShowDetail" @success="getList" @close="isShowDetail = false" />
   </div>
 </template>
 
@@ -68,10 +68,12 @@
 } from '@/api'
 import { queryQueueUpConfig } from './config'
 import WaybillDetail from './components/WaybillDetail.vue'
+import PlatformSign from './components/PlatformSign.vue'
 export default {
   components: {
     Pagination,
     QueryForm,
+    PlatformSign,
     WaybillDetail
   },
   data() {
@@ -82,6 +84,7 @@
       staticParam: {},
       dataList: [],
       loading: false,
+      isPlatformSign: false,
       pagination: {
         pageSize: 10,
         page: 1,
@@ -96,6 +99,14 @@
     this.getPlatGroupList()
   },
   methods: {
+    openSign() {
+      this.isPlatformSign = true
+      this.$nextTick(() => {
+        this.$refs.PlatformSignRef.isShowModal = true
+        this.$refs.PlatformSignRef.activePlat = this.activeGroup
+        this.$refs.PlatformSignRef.getList()
+      })
+    },
     getPlatGroupList() {
       getPlatformGroupList({
         queryData: 1,
@@ -201,6 +212,7 @@
   color: #111111;
   border-radius: 4px;
   border: 1px solid #dfdede;
+
   span {
     &:nth-of-type(1) {
       background: $primary-color;
diff --git a/h5/manifest.json b/h5/manifest.json
index 8f1b88c..0688118 100644
--- a/h5/manifest.json
+++ b/h5/manifest.json
@@ -91,8 +91,8 @@
             "proxy" : {
                 "/admin_interface" : {
                     // 杩欎釜瀛楁鍚嶉渶涓庝綘閰嶇疆鐨刡asePrefixUrl涓�鑷达紝绯荤粺璇嗗埆鍒板甫鏈�/dev-api璇锋眰鐨勫湴鍧�鏃讹紝浼氬湪鍓嶉潰鎷兼帴涓婁唬鐞嗘湇鍔″櫒鍦板潃
-                    "target" : "http://172.20.10.7:10010", // 浠g悊鏈嶅姟鍣ㄥ煙鍚嶆垨IP鍦板潃
-                    // "target" : "http://192.168.31.42:10010", // 浠g悊鏈嶅姟鍣ㄥ煙鍚嶆垨IP鍦板潃
+                    // "target" : "http://172.20.10.7:10010", // 浠g悊鏈嶅姟鍣ㄥ煙鍚嶆垨IP鍦板潃
+                    "target" : "http://192.168.0.103:10010", // 浠g悊鏈嶅姟鍣ㄥ煙鍚嶆垨IP鍦板潃
                     // "target" : "http://10.50.250.178:8088/gateway_interface", // 浠g悊鏈嶅姟鍣ㄥ煙鍚嶆垨IP鍦板潃
                     "changeOrigin" : true, // 鍏佽璺ㄥ煙 
                     "pathRewrite" : {
@@ -101,6 +101,15 @@
                 }
             },
             "https" : false
+        },
+        "sdkConfigs" : {
+            "maps" : {
+                "amap" : {
+                    "key" : "d9a554b1808ce10a12a932ed9b0db1d0",
+                    "securityJsCode" : "",
+                    "serviceHost" : ""
+                }
+            }
         }
     }
 }
diff --git a/h5/pages/driver/login.vue b/h5/pages/driver/login.vue
index 2ea23f3..7671175 100644
--- a/h5/pages/driver/login.vue
+++ b/h5/pages/driver/login.vue
@@ -37,7 +37,7 @@
   data() {
     return {
       form: {
-				username: '13333333333',
+				username: '18056814089',
 				password: '1'
       },
       isShowProtocol: false,
diff --git a/h5/pages/driver/reservedRecord.vue b/h5/pages/driver/reservedRecord.vue
index fd44113..91c20e3 100644
--- a/h5/pages/driver/reservedRecord.vue
+++ b/h5/pages/driver/reservedRecord.vue
@@ -23,7 +23,7 @@
           </view>
           <view class="box_list_item_nr_item">
             <text>鍙告満濮撳悕锛�</text>
-            <text>{{item.driverName}}</text>
+            <text>{{item.driverName}} {{item.driverPhone}}</text>
           </view>
           <view class="box_list_item_nr_item">
             <text>杞﹁締淇℃伅锛�</text>
diff --git a/h5/pages/driver/taskDetail.vue b/h5/pages/driver/taskDetail.vue
index 42af4cd..6f15732 100644
--- a/h5/pages/driver/taskDetail.vue
+++ b/h5/pages/driver/taskDetail.vue
@@ -188,8 +188,10 @@
         status: '0'
       },
 			jobId: '',
-			lat: '',
-			lnt: '',
+			// lat: '',
+			// lnt: '',
+			lat: '31.783205',
+			lnt: '117.262635',
 			nowTime: '',
 			signDistance: uni.getStorageSync('driverGuide').signDistance,
       showDetail: false,
@@ -197,17 +199,12 @@
   },
 	onLoad(option) {
 		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,
-		// })
+		// if(option.status && option.status == '1'){
+		// 	this.getLocation()
+		// }else{
+		// 	this.getDetail()
+		// }
+		this.getDetail()
 		setInterval(() => {
 			this.nowTime = dayjs().format('HH:mm:ss')
 		})
@@ -243,7 +240,7 @@
 					this.getDetail()
         },
 				fail:(err) => {
-					console.log('err', err);
+					this.showToast('鑾峰彇瀹氫綅澶辫触')
 				}
       })
     },
diff --git a/h5/pages/staff/task/driver.vue b/h5/pages/staff/task/driver.vue
index dcb6811..d6c5060 100644
--- a/h5/pages/staff/task/driver.vue
+++ b/h5/pages/staff/task/driver.vue
@@ -3,6 +3,9 @@
     <view class="status_wrap">
       <view class="name">{{info.driverName}}鐨勫叆鍥绾�</view>
       <view class="desc">{{info.carCodeFront}}</view>
+			<view class="desc" :class="{
+			    gray: info.businessStatus == '2' || info.businessStatus == '3' || info.businessStatus == '4',
+			  }">{{ infoStatus }}</view>
       <view class="status" v-if="info.status != 2 && info.status != 3">{{ statusMap[info.status] }}</view>
 			<image v-if="info.status == 2" class="icon" src="@/static/ic_passed@2x.png" mode=""></image>
 			<image v-if="info.status == 3" class="icon" src="@/static/ic_refused@2x.png" mode=""></image>
@@ -58,58 +61,43 @@
     <!-- 娴佺▼ -->
     <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">
-            <image
-            	v-if="item.type == 1"
-              class="img"
-              src="@/static/staff/ic_chaosong@2x.png"
-            />
-            <image
-            	v-else-if="item.approveType == 1 || item.approveType == 0"
-              class="img"
-              src="@/static/staff/ic_shenpiren@2x.png"
-            />
-            <span v-else class="img_name">{{item.memberName && item.memberName.slice(0,1)}}</span>
-            <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>
-						<div v-if="item.checkInfo" class="remark">
-						    {{ item.checkInfo }}
-						</div>
-						<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 class="list" v-if="
+          info.approveDateVO != null && info.approveDateVO.approveList != null
+        ">
+      	<view class="item" v-for="(item, index) in info.approveDateVO.approveList" :key="item.id">
+      		<view class="separate"></view>
+      		<view class="avatar">
+      			<image v-if="item.type == 1" class="img" src="@/static/staff/ic_chaosong@2x.png" />
+      			<image v-else-if="item.approveType == 1 || item.approveType == 0" class="img"
+      				src="@/static/staff/ic_shenpiren@2x.png" />
+      			<span v-else class="img_name">{{item.memberName && item.memberName.slice(0,1)}}</span>
+      			<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.checkDate }}</view>
+      			</view>
+      			<view class="name_wrap">
+      				<text>{{ item.memberName
+                }}<text :class="{ status: item.statusInfo == '澶勭悊涓�' || item.status == '1'  }"
+      						v-if="item.statusInfo">({{ item.statusInfo }})</text></text>
+      			</view>
+      			<view v-if="item.checkInfo" class="remark">{{
+              item.checkInfo
+            }}</view>
+      			<!-- 鎶勯�佷汉 -->
+      			<view v-if="item.approveType == 0 || item.type == 1 || item.approveType == 1" class="children">
+      				<view class="child" v-for="child in item.approveList" :key="child.id">
+      					<image v-if="child.faceImg" class="child_img" :src="child.faceImg" />
+      					<view v-else class="child_name">{{ child.memberName && child.memberName.slice(0,1) }}</view>
+      					<view>{{ child.memberName }}</view>
+      				</view>
+      			</view>
+      		</view>
+      	</view>
       </view>
     </view>
     <view class="emyty"></view>
@@ -149,6 +137,7 @@
     return {
       showApprModal: false,
 			checkInfo: '',
+			infoStatus: '',
 			flag: '1',
       info: {},
 			type: 0,
@@ -163,6 +152,7 @@
   },
 	onLoad(option) {
 		this.type = option.objType
+		this.infoStatus = option.info
 		this.getDetail(option.id)
 	},
   methods: {
@@ -222,101 +212,110 @@
   padding-bottom: 0;
 
   .flow_wrap {
-    padding: 30rpx 0;
+  	padding: 30rpx 0;
   
-    .flow_title {
-      font-weight: 600;
-      font-size: 32rpx;
-      color: #222222;
-      margin-bottom: 24rpx;
-    }
+  	.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: 100%;
-          background-color: #eeeeee;
-          left: 40rpx;
-          transform: translate(-50%, 0);
-          top: 80rpx;
-        }
-        .avatar {
-          width: 80rpx;
-          height: 80rpx;
-          position: relative;
-          margin-right: 20rpx;
+  	.list {
+  		.item {
+  			display: flex;
+  			margin-bottom: 48rpx;
+  			position: relative;
+  
+  			.separate {
+  				position: absolute;
+  				width: 4rpx;
+  				height: 100%;
+  				background-color: #eeeeee;
+  				left: 40rpx;
+  				transform: translate(-50%, 0);
+  				top: 80rpx;
+  			}
+  
+  			.avatar {
+  				width: 80rpx;
+  				height: 80rpx;
+  				position: relative;
+  				margin-right: 20rpx;
   				display: flex;
   				align-items: center;
   				justify-content: center;
-          .img {
-            width: 80rpx;
-            height: 80rpx;
-            border-radius: 50%;
-          }
-  				.img_name{
+  
+  				.img {
+  					width: 80rpx;
+  					height: 80rpx;
+  					border-radius: 50%;
+  				}
+  
+  				.img_name {
   					font-size: 32rpx;
   					color: #FFFFFF;
   				}
-          .status {
-            width: 28rpx;
-            height: 28rpx;
-            border-radius: 50%;
-            position: absolute;
-            right: 0;
-            bottom: 0;
-          }
-        }
   
-        .content {
-          flex: 1;
+  				.status {
+  					width: 28rpx;
+  					height: 28rpx;
+  					border-radius: 50%;
+  					position: absolute;
+  					right: 0;
+  					bottom: 0;
+  				}
+  			}
   
-          .head {
-            display: flex;
-            justify-content: space-between;
-            margin-bottom: 4rpx;
+  			.content {
+  				flex: 1;
   
-            .event {
-              font-size: 30rpx;
-            }
+  				.head {
+  					display: flex;
+  					justify-content: space-between;
+  					margin-bottom: 4rpx;
   
-            .time {
-              font-size: 26rpx;
-              color: #999999;
-            }
-          }
+  					.event {
+  						font-size: 30rpx;
+  					}
   
-          .name_wrap {
-            font-size: 26rpx;
-            color: #777777;
+  					.time {
+  						font-size: 26rpx;
+  						color: #999999;
+  					}
+  				}
   
-            .status {
-              color: $uni-color-primary;
-            }
-          }
-          .children {
-            display: flex;
-            flex-wrap: wrap;
-            margin-top: 12rpx;
-            .child {
-              display: flex;
-              flex-direction: column;
-              justify-content: center;
-              align-items: center;
-              margin-right: 12rpx;
+  				.name_wrap {
+  					font-size: 26rpx;
+  					color: #777777;
+  
+  					.status {
+  						color: $uni-color-primary;
+  					}
+  				}
+  
+  				.children {
+  					display: flex;
+  					flex-wrap: wrap;
+  					margin-top: 12rpx;
+  
+  					.child {
+  						display: flex;
+  						flex-direction: column;
+  						justify-content: center;
+  						align-items: center;
+  						margin-right: 12rpx;
   						font-size: 26rpx;
   						color: #777777;
-              .child_img {
-                width: 48rpx;
-                height: 48rpx;
-                border-radius: 50%;
+  
+  						.child_img {
+  							width: 48rpx;
+  							height: 48rpx;
+  							border-radius: 50%;
   							margin-bottom: 2rpx;
-              }
-  						.child_name{
+  						}
+  
+  						.child_name {
   							margin-bottom: 2rpx;
   							width: 48rpx;
   							height: 48rpx;
@@ -328,46 +327,51 @@
   							color: #FFFFFF;
   							background-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;
-            }
-          }
-        }
-        &:nth-last-child(1) {
-          .separate {
-            height: 0;
-          }
-        }
-      }
-    }
+  				.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;
+  					}
+  				}
+  			}
+  
+  			&:nth-last-child(1) {
+  				.separate {
+  					height: 0;
+  				}
+  			}
+  		}
+  	}
   }
 
   .module_list {
@@ -425,7 +429,11 @@
     .desc {
       font-size: 26rpx;
       color: #999999;
+			margin-bottom: 12rpx;
     }
+		.gray {
+			color: #999999;
+		}
 
     .status {
       position: absolute;
diff --git a/h5/pages/staff/task/visitorApprove.vue b/h5/pages/staff/task/visitorApprove.vue
index f9eb139..d695e11 100644
--- a/h5/pages/staff/task/visitorApprove.vue
+++ b/h5/pages/staff/task/visitorApprove.vue
@@ -1,580 +1,555 @@
-<template>
-  <view class="main_app">
-    <view class="status_wrap">
-      <view class="name">{{ info.name }}鎻愪氦鐨剓{ cateList[type].name }}</view>
-      <view
-        class="desc"
-        :class="{
-          gray: info.businessStatus == '2' || info.businessStatus == '3' || info.businessStatus == '4',
-        }"
-        >{{ infoStatus }}</view
-      >
-      <view v-if="info.businessStatus == '0' || info.businessStatus == '1'" class="status">{{
-        statusMap[info.businessStatus]
-      }}</view>
-      <image
-        v-if="info.businessStatus == '2'"
-        src="@/static/ic_passed@2x.png"
-        mode="widthFix"
-        class="status_img"
-      ></image>
-      <image
-        v-if="info.businessStatus == '3'"
-        src="@/static/ic_refused@2x.png"
-        mode="widthFix"
-        class="status_img"
-      ></image>
-    </view>
-    <!--  -->
-    <view class="emyty"></view>
-    <view class="module_list">
-      <view class="item">
-        <view class="label">琚浜�</view>
-        <view class="value">{{ info.visitUserName }}</view>
-      </view>
-      <view class="item">
-        <view class="label">棰勮鍏�/绂诲洯鏃堕棿</view>
-        <view class="value" v-if="info.visitTime">{{ info.visitTime }}</view>
-      </view>
-      <view class="emyty"></view>
-      <view class="item">
-        <view class="label">璁垮淇℃伅</view>
-        <view class="value">
-          <image
-            class="avatar"
-            :src="
-              info.prefix
-                ? info.prefix + info.faceImg
-                : require('@/static/meeting/common/default_user@2x.png')
-            "
-            mode="widthFix"
-          ></image>
-          <view class="info">
-            <text class="name">{{ info.name }} {{ info.phone }}</text>
-            <text>韬唤璇佸彿锛歿{ info.idCardDecode }}</text>
-            <text>鍏ュ洯杞﹁締锛歿{ info.carNos }}</text>
-          </view>
-        </view>
-      </view>
-      <view class="item">
-        <view class="label">鍏徃鍚嶇О</view>
-        <view class="value">{{ info.companyName }}</view>
-      </view>
-      <view class="item">
-        <view class="label">鏂藉伐浜哄憳</view>
-        <view class="value">{{ info.type == 0 ? "鍚�" : "鏄�" }}</view>
-      </view>
-      <view class="item">
-        <view class="label">鏉ヨ浜嬬敱</view>
-        <view class="value">{{ info.visitReason }}</view>
-      </view>
-			<view v-if="info.constructionReason" class="item">
-			  <view class="label">鏂藉伐鍐呭</view>
-			  <view class="value">{{ info.constructionReason }}</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"
-          :key="item.id"
-        >
-          <view class="separate"></view>
-          <view class="avatar">
-						<image
-							v-if="item.type == 1"
-						  class="img"
-						  src="@/static/staff/ic_chaosong@2x.png"
-						/>
-            <image
-            	v-else-if="item.approveType == 1 || item.approveType == 0"
-              class="img"
-              src="@/static/staff/ic_shenpiren@2x.png"
-            />
-						<span v-else class="img_name">{{item.memberName && item.memberName.slice(0,1)}}</span>
-            <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.checkDate }}</view>
-            </view>
-            <view class="name_wrap">
-              <text
-                >{{ item.memberName
-                }}<text :class="{ status: item.statusInfo == '澶勭悊涓�' || item.status == '1'  }" v-if="item.statusInfo"
-                  >({{ item.statusInfo }})</text
-                ></text
-              >
-            </view>
-            <view v-if="item.checkInfo" class="remark">{{
-              item.checkInfo
-            }}</view>
-            <!-- 鎶勯�佷汉 -->
-            <view v-if="item.approveType == 0 || item.type == 1 || item.approveType == 1" class="children">
-              <view
-                class="child"
-                v-for="child in item.approveList"
-                :key="child.id"
-              >
-                <image
-									v-if="child.faceImg"
-                  class="child_img"
-                  :src="child.faceImg"
-                />
-								<view v-else class="child_name">{{ child.memberName && child.memberName.slice(0,1) }}</view>
-                <view>{{ child.memberName }}</view>
-              </view>
-            </view>
-          </view>
-        </view>
-      </view>
-    </view>
-    <view class="emyty"></view>
-    <view
-      v-if="
-        info.approveDateVO != null &&
-        info.approveDateVO.canBeApproved != null &&
-        info.approveDateVO.canBeApproved == 1
-      "
-      class="main_footer"
-    >
-      <view class="btn" @click="handleSub(3)">鎷掔粷</view>
-      <view class="btn agree" @click="handleSub(2)">鍚屾剰</view>
-    </view>
-
-    <u-popup
-      :show="showApprModal"
-      :round="10"
-      :safeAreaInsetBottom="true"
-      mode="bottom"
-      @close="showApprModal = false"
-    >
-      <view class="appr_modal">
-        <view class="title">{{ param.status == 2 ? "鍚屾剰" : "鎷掔粷" }}</view>
-        <textarea
-          v-model="param.checkInfo"
-          :placeholder="
-            param.status == 2 ? '鍚屾剰璇存槑锛岄潪蹇呭~' : '鎷掔粷璇存槑锛屽繀濉�'
-          "
-          placeholder-class="placeholder9"
-        />
-        <view class="main_footer">
-          <view class="btn" @click="showApprModal = false">鍙栨秷</view>
-          <view class="btn agree" @click="onSubmit">鎻愪氦</view>
-        </view>
-      </view>
-    </u-popup>
-  </view>
-</template>
-
-<script>
-import {
-  getVisitedDetail, // 璁垮棰勭害璇︽儏
-  carUseBookAppr
-} from '@/api'
-export default {
-  data() {
-    return {
-      showApprModal: false,
-      param: {},
-      info: {},
-
-      id: '',
-      type: '',
-			infoStatus: '',
-      cateList: [
-        { name: '璁垮鐢宠', id: 0 },
-        { name: '璁垮鎶ュ', id: 1 },
-        { name: '鐢ㄨ溅鐢宠', id: 2 },
-        { name: '闅愭偅闅忔墜鎷�', id: 3 },
-        { name: '鐗╂祦杞︾敵璇�', id: 4 },
-      ],
-      statusMap: {
-        0: '寰呭鎵�',
-        1: '瀹℃壒涓�',
-        2: '宸查�氳繃',
-        3: '宸叉嫆缁�',
-        4: '宸插彇娑�',
-      }
-    }
-  },
-  onLoad(op) {
-    this.id = op.id
-    this.type = op.objType
-    this.infoStatus = op.info
-    this.getDetail()
-  },
-  methods: {
-    getDetail() {
-      const { id } = this
-      getVisitedDetail({ 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.status = item.approveList[0].status
-							item.approveList = []
-						}
-					})
-				}
-      })
-    },
-    onSubmit() {
-      const { param, info } = this
-			if(param.status == '3' && !param.checkInfo){
-				return uni.showToast({
-              title: '璇疯緭鍏ユ嫆缁濊鏄�',
-              icon: 'none'
-            })
-			}
-      carUseBookAppr({
-        status: param.status,
-        objType: info.type,
-        objId: this.id,
-        // driverId: param.driverId,
-        checkInfo: param.checkInfo
-      }).then(res => {
-        if (res.code === 200) {
-          this.showApprModal = false
-          setTimeout(() => {
-            uni.showToast({
-              title: '鎿嶄綔鎴愬姛',
-              icon: 'success'
-            })
-          })
-          uni.navigateBack()
-        }
-      })
-    },
-    handleSub(status) {
-      // this.param.flag = 
-      this.param = {
-        status
-      }
-      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: 100%;
-          background-color: #eeeeee;
-          left: 40rpx;
-          transform: translate(-50%, 0);
-          top: 80rpx;
-        }
-        .avatar {
-          width: 80rpx;
-          height: 80rpx;
-          position: relative;
-          margin-right: 20rpx;
-					display: flex;
-					align-items: center;
-					justify-content: center;
-          .img {
-            width: 80rpx;
-            height: 80rpx;
-            border-radius: 50%;
-          }
-					.img_name{
-						font-size: 32rpx;
-						color: #FFFFFF;
-					}
-          .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;
-            }
-          }
-          .children {
-            display: flex;
-            flex-wrap: wrap;
-            margin-top: 12rpx;
-            .child {
-              display: flex;
-              flex-direction: column;
-              justify-content: center;
-              align-items: center;
-              margin-right: 12rpx;
-							font-size: 26rpx;
-							color: #777777;
-              .child_img {
-                width: 48rpx;
-                height: 48rpx;
-                border-radius: 50%;
-								margin-bottom: 2rpx;
-              }
-							.child_name{
-								margin-bottom: 2rpx;
-								width: 48rpx;
-								height: 48rpx;
-								text-align: center;
-								justify-content: center;
-								padding-top: 4rpx;
-								font-size: 28rpx;
-								border-radius: 50%;
-								color: #FFFFFF;
-								background-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;
-            }
-          }
-        }
-        &:nth-last-child(1) {
-          .separate {
-            height: 0;
-          }
-        }
-      }
-    }
-  }
-
-  .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 {
-          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: #ed4545;
-    }
-    .gray {
-      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;
-    }
-    .status_img {
-      position: absolute;
-      right: 0rpx;
-      top: 20rpx;
-      width: 120rpx;
-    }
-  }
-
-  .main_footer {
-    padding-bottom: 64rpx;
-    display: flex;
-    justify-content: space-between;
-    width: 100%;
-    left: 0;
-    // padding: 30rpx 10rpx 60rpx;
-    display: flex;
-    justify-content: space-between;
-    background: #ffffff;
-    .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>
+<template>
+	<view class="main_app">
+		<view class="status_wrap">
+			<view class="name">{{ info.name }}鎻愪氦鐨剓{ cateList[type].name }}</view>
+			<view class="desc" :class="{
+          gray: info.businessStatus == '2' || info.businessStatus == '3' || info.businessStatus == '4',
+        }">{{ infoStatus }}</view>
+			<view v-if="info.businessStatus == '0' || info.businessStatus == '1'" class="status">{{
+        statusMap[info.businessStatus]
+      }}</view>
+			<image v-if="info.businessStatus == '2'" src="@/static/ic_passed@2x.png" mode="widthFix" class="status_img">
+			</image>
+			<image v-if="info.businessStatus == '3'" src="@/static/ic_refused@2x.png" mode="widthFix" class="status_img">
+			</image>
+		</view>
+		<!--  -->
+		<view class="emyty"></view>
+		<view class="module_list">
+			<view class="item">
+				<view class="label">琚浜�</view>
+				<view class="value">{{ info.visitUserName }}</view>
+			</view>
+			<view class="item">
+				<view class="label">棰勮鍏�/绂诲洯鏃堕棿</view>
+				<view class="value" v-if="info.visitTime">{{ info.visitTime }}</view>
+			</view>
+			<view class="emyty"></view>
+			<view class="item">
+				<view class="label">璁垮淇℃伅</view>
+				<view class="value">
+					<image class="avatar" :src="
+              info.prefix
+                ? info.prefix + info.faceImg
+                : require('@/static/meeting/common/default_user@2x.png')
+            " mode="widthFix"></image>
+					<view class="info">
+						<text class="name">{{ info.name }} {{ info.phone }}</text>
+						<text>韬唤璇佸彿锛歿{ info.idCardDecode }}</text>
+						<text>鍏ュ洯杞﹁締锛歿{ info.carNos }}</text>
+					</view>
+				</view>
+			</view>
+			<view class="item">
+				<view class="label">鍏徃鍚嶇О</view>
+				<view class="value">{{ info.companyName }}</view>
+			</view>
+			<view class="item">
+				<view class="label">鏂藉伐浜哄憳</view>
+				<view class="value">{{ info.type == 0 ? "鍚�" : "鏄�" }}</view>
+			</view>
+			<view class="item">
+				<view class="label">鏉ヨ浜嬬敱</view>
+				<view class="value">{{ info.visitReason }}</view>
+			</view>
+			<view v-if="info.constructionReason" class="item">
+				<view class="label">鏂藉伐鍐呭</view>
+				<view class="value">{{ info.constructionReason }}</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" :key="item.id">
+					<view class="separate"></view>
+					<view class="avatar">
+						<image v-if="item.type == 1" class="img" src="@/static/staff/ic_chaosong@2x.png" />
+						<image v-else-if="item.approveType == 1 || item.approveType == 0" class="img"
+							src="@/static/staff/ic_shenpiren@2x.png" />
+						<span v-else class="img_name">{{item.memberName && item.memberName.slice(0,1)}}</span>
+						<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.checkDate }}</view>
+						</view>
+						<view class="name_wrap">
+							<text>{{ item.memberName
+                }}<text :class="{ status: item.statusInfo == '澶勭悊涓�' || item.status == '1'  }"
+									v-if="item.statusInfo">({{ item.statusInfo }})</text></text>
+						</view>
+						<view v-if="item.checkInfo" class="remark">{{
+              item.checkInfo
+            }}</view>
+						<!-- 鎶勯�佷汉 -->
+						<view v-if="item.approveType == 0 || item.type == 1 || item.approveType == 1" class="children">
+							<view class="child" v-for="child in item.approveList" :key="child.id">
+								<image v-if="child.faceImg" class="child_img" :src="child.faceImg" />
+								<view v-else class="child_name">{{ child.memberName && child.memberName.slice(0,1) }}</view>
+								<view>{{ child.memberName }}</view>
+							</view>
+						</view>
+					</view>
+				</view>
+			</view>
+		</view>
+		<view class="emyty"></view>
+		<view v-if="
+        info.approveDateVO != null &&
+        info.approveDateVO.canBeApproved != null &&
+        info.approveDateVO.canBeApproved == 1
+      " class="main_footer">
+			<view class="btn" @click="handleSub(3)">鎷掔粷</view>
+			<view class="btn agree" @click="handleSub(2)">鍚屾剰</view>
+		</view>
+
+		<u-popup :show="showApprModal" :round="10" :safeAreaInsetBottom="true" mode="bottom" @close="showApprModal = false">
+			<view class="appr_modal">
+				<view class="title">{{ param.status == 2 ? "鍚屾剰" : "鎷掔粷" }}</view>
+				<textarea v-model="param.checkInfo" :placeholder="
+            param.status == 2 ? '鍚屾剰璇存槑锛岄潪蹇呭~' : '鎷掔粷璇存槑锛屽繀濉�'
+          " placeholder-class="placeholder9" />
+				<view class="main_footer">
+					<view class="btn" @click="showApprModal = false">鍙栨秷</view>
+					<view class="btn agree" @click="onSubmit">鎻愪氦</view>
+				</view>
+			</view>
+		</u-popup>
+	</view>
+</template>
+
+<script>
+	import {
+		getVisitedDetail, // 璁垮棰勭害璇︽儏
+		carUseBookAppr
+	} from '@/api'
+	export default {
+		data() {
+			return {
+				showApprModal: false,
+				param: {},
+				info: {},
+
+				id: '',
+				type: '',
+				infoStatus: '',
+				cateList: [{
+						name: '璁垮鐢宠',
+						id: 0
+					},
+					{
+						name: '璁垮鎶ュ',
+						id: 1
+					},
+					{
+						name: '鐢ㄨ溅鐢宠',
+						id: 2
+					},
+					{
+						name: '闅愭偅闅忔墜鎷�',
+						id: 3
+					},
+					{
+						name: '鐗╂祦杞︾敵璇�',
+						id: 4
+					},
+				],
+				statusMap: {
+					0: '寰呭鎵�',
+					1: '瀹℃壒涓�',
+					2: '宸查�氳繃',
+					3: '宸叉嫆缁�',
+					4: '宸插彇娑�',
+				}
+			}
+		},
+		onLoad(op) {
+			this.id = op.id
+			this.type = op.objType
+			this.infoStatus = op.info
+			this.getDetail()
+		},
+		methods: {
+			getDetail() {
+				const {
+					id
+				} = this
+				getVisitedDetail({
+					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.status = item.approveList[0].status
+								item.approveList = []
+							}
+						})
+					}
+				})
+			},
+			onSubmit() {
+				const {
+					param,
+					info
+				} = this
+				if (param.status == '3' && !param.checkInfo) {
+					return uni.showToast({
+						title: '璇疯緭鍏ユ嫆缁濊鏄�',
+						icon: 'none'
+					})
+				}
+				carUseBookAppr({
+					status: param.status,
+					objType: info.type,
+					objId: this.id,
+					// driverId: param.driverId,
+					checkInfo: param.checkInfo
+				}).then(res => {
+					if (res.code === 200) {
+						this.showApprModal = false
+						setTimeout(() => {
+							uni.showToast({
+								title: '鎿嶄綔鎴愬姛',
+								icon: 'success'
+							})
+						})
+						uni.navigateBack()
+					}
+				})
+			},
+			handleSub(status) {
+				// this.param.flag = 
+				this.param = {
+					status
+				}
+				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: 100%;
+						background-color: #eeeeee;
+						left: 40rpx;
+						transform: translate(-50%, 0);
+						top: 80rpx;
+					}
+
+					.avatar {
+						width: 80rpx;
+						height: 80rpx;
+						position: relative;
+						margin-right: 20rpx;
+						display: flex;
+						align-items: center;
+						justify-content: center;
+
+						.img {
+							width: 80rpx;
+							height: 80rpx;
+							border-radius: 50%;
+						}
+
+						.img_name {
+							font-size: 32rpx;
+							color: #FFFFFF;
+						}
+
+						.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;
+							}
+						}
+
+						.children {
+							display: flex;
+							flex-wrap: wrap;
+							margin-top: 12rpx;
+
+							.child {
+								display: flex;
+								flex-direction: column;
+								justify-content: center;
+								align-items: center;
+								margin-right: 12rpx;
+								font-size: 26rpx;
+								color: #777777;
+
+								.child_img {
+									width: 48rpx;
+									height: 48rpx;
+									border-radius: 50%;
+									margin-bottom: 2rpx;
+								}
+
+								.child_name {
+									margin-bottom: 2rpx;
+									width: 48rpx;
+									height: 48rpx;
+									text-align: center;
+									justify-content: center;
+									padding-top: 4rpx;
+									font-size: 28rpx;
+									border-radius: 50%;
+									color: #FFFFFF;
+									background-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;
+							}
+						}
+					}
+
+					&:nth-last-child(1) {
+						.separate {
+							height: 0;
+						}
+					}
+				}
+			}
+		}
+
+		.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 {
+						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: #ed4545;
+			}
+
+			.gray {
+				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;
+			}
+
+			.status_img {
+				position: absolute;
+				right: 0rpx;
+				top: 20rpx;
+				width: 120rpx;
+			}
+		}
+
+		.main_footer {
+			padding-bottom: 64rpx;
+			display: flex;
+			justify-content: space-between;
+			width: 100%;
+			left: 0;
+			// padding: 30rpx 10rpx 60rpx;
+			display: flex;
+			justify-content: space-between;
+			background: #ffffff;
+
+			.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>
\ No newline at end of file
diff --git a/h5/pages/staffLogin/login.vue b/h5/pages/staffLogin/login.vue
index 6ab5bd1..a0a5506 100644
--- a/h5/pages/staffLogin/login.vue
+++ b/h5/pages/staffLogin/login.vue
@@ -71,7 +71,7 @@
   data() {
     return {
       form: {
-        username: '13996529050',
+        username: '18056814089',
         password: '123456',
 				code: 1
       },
diff --git a/pda/manifest.json b/pda/manifest.json
index c8e0e90..9b5c102 100644
--- a/pda/manifest.json
+++ b/pda/manifest.json
@@ -16,13 +16,13 @@
 			"historyApiFallback": true,
 			"disableHostCheck": true,
 			"proxy": {
-				"/admin_interface": {
+				"/gateway_interface": {
 					// 杩欎釜瀛楁鍚嶉渶涓庝綘閰嶇疆鐨刡asePrefixUrl涓�鑷达紝绯荤粺璇嗗埆鍒板甫鏈�/dev-api璇锋眰鐨勫湴鍧�鏃讹紝浼氬湪鍓嶉潰鎷兼帴涓婁唬鐞嗘湇鍔″櫒鍦板潃
-					// "target" : "http://192.168.0.173/admin_interface", // 浠g悊鏈嶅姟鍣ㄥ煙鍚嶆垨IP鍦板潃
-					"target": "http://192.168.0.139:10010", // 浠g悊鏈嶅姟鍣ㄥ煙鍚嶆垨IP鍦板潃
+					"target" : "http://10.50.250.178:8088/gateway_interface", // 浠g悊鏈嶅姟鍣ㄥ煙鍚嶆垨IP鍦板潃
+					// "target": "http://192.168.0.139:10010", // 浠g悊鏈嶅姟鍣ㄥ煙鍚嶆垨IP鍦板潃
 					"changeOrigin": true, // 鍏佽璺ㄥ煙 
 					"pathRewrite": {
-						"^/admin_interface": "" // 閲嶅啓鍦板潃锛屽鏋滃疄闄呮帴鍙d腑鏄笉甯�/dev-api锛岄渶瑕佸皢杩欎釜鍓嶇紑缃┖锛屽洜涓鸿繖涓墠缂�鍙槸涓轰簡璇嗗埆鐢紝璇嗗埆瀹屼箣鍚庡氨娌$敤浜�
+						"^/gateway_interface": "" // 閲嶅啓鍦板潃锛屽鏋滃疄闄呮帴鍙d腑鏄笉甯�/dev-api锛岄渶瑕佸皢杩欎釜鍓嶇紑缃┖锛屽洜涓鸿繖涓墠缂�鍙槸涓轰簡璇嗗埆鐢紝璇嗗埆瀹屼箣鍚庡氨娌$敤浜�
 					}
 				}
 			},
diff --git a/pda/pages.json b/pda/pages.json
index 1324dc8..1ee5126 100644
--- a/pda/pages.json
+++ b/pda/pages.json
@@ -13,7 +13,7 @@
 		{
 			"path": "pages/index/index",
 			"style": {
-				"navigationBarTitleText": "璋冨害骞冲彴",
+				"navigationStyle": "custom",
 				"enablePullDownRefresh": false
 			}
 		},
diff --git a/pda/pages/index/control.vue b/pda/pages/index/control.vue
index 02e61af..904ea22 100644
--- a/pda/pages/index/control.vue
+++ b/pda/pages/index/control.vue
@@ -8,7 +8,7 @@
 			<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)" />
+			    <u-switch v-model="platform.status" activeColor="#279BAA" inactiveColor="#cccccc" :inactiveValue="1" :activeValue="0" @change="e => changeStatus(platform)" />
 			  </view>
 			</view>
 		</template>
diff --git a/pda/pages/index/index.vue b/pda/pages/index/index.vue
index 3d00c04..843d90d 100644
--- a/pda/pages/index/index.vue
+++ b/pda/pages/index/index.vue
@@ -1,30 +1,37 @@
 <template>
-  <view class="main_app">
-    <view class="banner">
-      <image src="@/static/banner_diaodu@2x.png" mode=""></image>
-    </view>
-    <view class="module">
-      <view class="item" @click="jump('/pages/index/center')">
-        <image src="@/static/ic_yuetaidiaodu@2x.png" mode=""></image>
-        <view class="text">鏈堝彴璋冨害涓績</view>
-      </view>
-      <view class="item" @click="jump('/pages/index/queueup')">
-        <image src="@/static/ic_cheliangpaidui@2x.png" mode=""></image>
-        <view class="text">杞﹂槦鎺掗槦鎯呭喌</view>
-      </view>
-      <view class="item" @click="jump('/pages/index/control')">
-        <image src="@/static/ic_qiyong@2x.png" mode=""></image>
-        <view class="text">鏈堝彴鍚敤鍋滅敤</view>
-      </view>
-      <view class="item" @click="jump('/pages/index/set')">
-        <image src="@/static/ic_peizhiyuetai@2x.png" mode=""></image>
-        <view class="text">閰嶇疆鏄剧ず鏈堝彴</view>
-      </view>
-    </view>
-    <!-- footer -->
-    <view class="main_footer">
-      <image src="@/static/logo@2x.png" mode=""></image>
-      <text>瀹夊窘瀹夋嘲鐗╂祦鏈夐檺璐d换鍏徃鐗堟潈鎵�鏈�</text>
+  <view class="main_app">
+		<view class="main_header">
+			<image src="../../static/back.svg" class="back"></image>
+			<view class="title">璋冨害骞冲彴</view>
+			<view class="loginout" @click="loginout">閫�鍑虹櫥褰�</view>
+		</view>
+    <view class="main_content">
+    	<view class="banner">
+    	  <image src="@/static/banner_diaodu@2x.png" mode=""></image>
+    	</view>
+    	<view class="module">
+    	  <view class="item" @click="jump('/pages/index/center')">
+    	    <image src="@/static/ic_yuetaidiaodu@2x.png" mode=""></image>
+    	    <view class="text">鏈堝彴璋冨害涓績</view>
+    	  </view>
+    	  <view class="item" @click="jump('/pages/index/queueup')">
+    	    <image src="@/static/ic_cheliangpaidui@2x.png" mode=""></image>
+    	    <view class="text">杞﹂槦鎺掗槦鎯呭喌</view>
+    	  </view>
+    	  <view class="item" @click="jump('/pages/index/control')">
+    	    <image src="@/static/ic_qiyong@2x.png" mode=""></image>
+    	    <view class="text">鏈堝彴鍚敤鍋滅敤</view>
+    	  </view>
+    	  <view class="item" @click="jump('/pages/index/set')">
+    	    <image src="@/static/ic_peizhiyuetai@2x.png" mode=""></image>
+    	    <view class="text">閰嶇疆鏄剧ず鏈堝彴</view>
+    	  </view>
+    	</view>
+    	<!-- footer -->
+    	<view class="main_footer">
+    	  <image src="@/static/logo@2x.png" mode=""></image>
+    	  <text>瀹夊窘瀹夋嘲鐗╂祦鏈夐檺璐d换鍏徃鐗堟潈鎵�鏈�</text>
+    	</view>
     </view>
   </view>
 </template>
@@ -39,7 +46,24 @@
   onLoad() {
 
   },
-  methods: {
+  methods: {
+		loginout() {
+			uni.showModal({
+				title: '鎻愮ず',
+				content: '纭瑕侀��鍑虹櫥褰曞悧',
+				success: (res) => {
+					if (res.confirm) {
+						uni.clearStorageSync({})
+						uni.redirectTo({
+							url: '/pages/index/login'
+						})
+					} else if (res.cancel) {
+						console.log('鐢ㄦ埛鐐瑰嚮鍙栨秷');
+					}
+				}
+			});
+			
+		},
     jump(path) {
       uni.navigateTo({
         url: path
@@ -48,11 +72,32 @@
   }
 }
 </script>
-<style lang="scss">
+<style lang="scss">
+	.main_header{
+		width: 100%;
+		height: 176rpx;
+		padding: 88rpx 30rpx 0;
+		display: flex;
+		justify-content: space-between;
+		align-items: center;
+		background-color: $uni-color-primary;
+		color: #fff;
+		.back{
+			width: 42rpx;
+			height: 42rpx;
+		}
+		.title{
+			font-weight: 500;
+			font-size: 36rpx;
+		}
+	}
 .main_app {
-  padding: 30rpx;
   min-height: 100vh;
-  background: #f7f7f7;
+  background: #f7f7f7;
+	padding: 0;
+	.main_content{
+		padding: 30rpx;
+	}
   .banner {
     width: 100%;
     height: 270rpx;
diff --git a/pda/pages/index/login.vue b/pda/pages/index/login.vue
index 086de33..8a53efa 100644
--- a/pda/pages/index/login.vue
+++ b/pda/pages/index/login.vue
@@ -4,9 +4,6 @@
     <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: 60rpx;">鏁板瓧鍖栨湀鍙拌皟搴﹀钩鍙�</view>
-		<view class="">
-			{{err}}
-		</view>
     <view class="login_list">
       <view class="login_list_item">
         <image src="@/static/login_ic_phone@2x.png" mode="widthFix" />
@@ -91,7 +88,7 @@
 		      })
 		    }
 		  }, err => {
-				this.err = JSON.stringify(err)
+				// this.err = JSON.stringify(err)
 			})
 		},
     getContent() {
diff --git a/pda/static/back.svg b/pda/static/back.svg
new file mode 100644
index 0000000..ad67c73
--- /dev/null
+++ b/pda/static/back.svg
@@ -0,0 +1 @@
+<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1727082453936" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="4342" xmlns:xlink="http://www.w3.org/1999/xlink" width="128" height="128"><path d="M395.21518 513.604544l323.135538-312.373427c19.052938-18.416442 19.052938-48.273447 0-66.660212-19.053961-18.416442-49.910737-18.416442-68.964698 0L291.75176 480.290811c-19.052938 18.416442-19.052938 48.273447 0 66.660212l357.633237 345.688183c9.525957 9.207709 22.01234 13.796214 34.497699 13.796214 12.485359 0 24.971741-4.588505 34.466999-13.82896 19.052938-18.416442 19.052938-48.242747 0-66.660212L395.21518 513.604544z" fill="#ffffff" p-id="4343"></path></svg>
\ No newline at end of file
diff --git a/pda/utils/config.js b/pda/utils/config.js
index 40d7a58..6204c11 100644
--- a/pda/utils/config.js
+++ b/pda/utils/config.js
@@ -1,5 +1,5 @@
 
-export const baseUrl = 'admin_interface/'
+export const baseUrl = 'gateway_interface/'
 // export const baseUrl = 'http://192.168.0.139:10010/admin_interface/'
 export const uploadAvatar = `${baseUrl}visitsAdmin/cloudService/web/public/uploadFtp.do`
 export const uploadUrl = `${baseUrl}visitsAdmin/cloudService/public/uploadBatch`

--
Gitblit v1.9.3