From dfba7e1ef745a0e1f03bc596855c350067b8bbd2 Mon Sep 17 00:00:00 2001
From: jiangping <jp@doumee.com>
Date: 星期五, 18 十月 2024 18:21:41 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/master'

---
 h5/static/home/ic_kaoqin@3x.png                                   |    0 
 h5/pages/staff/vehicle/shiwai.vue                                 |   17 
 pda/unpackage/res/icons/40x40.png                                 |    0 
 h5/pages/staff/vehicle/sendACar.vue                               |   17 
 h5/pages/staff/vehicle/shinei.vue                                 |    2 
 admin/src/api/system/sms.js                                       |   17 
 admin/src/components/business/OperaPlatformApproveTemplWindow.vue |   20 
 admin/src/views/task/visReportDetail.vue                          |   32 
 h5_meeting/unpackage/release/apk/会议室.apk                          |    0 
 admin/src/components/common/CommonHeader.vue                      |  116 +
 h5/pages/staff/memberSel.vue                                      |    5 
 pda/pages/index/center.vue                                        |   11 
 admin/src/components/system/role/OperaSystemRoleDataWindow.vue    |   84 
 h5/manifest.json                                                  |   40 
 pda/static/staff/liucheng_success@2x.png                          |    0 
 h5/pages/staff/meetingSubOrder.vue                                |    2 
 pda/static/ic_refused@2x.png                                      |    0 
 pda/unpackage/res/icons/80x80.png                                 |    0 
 pda/unpackage/res/icons/144x144.png                               |    0 
 h5/pages/staff/index.vue                                          |  186 +-
 h5/pages/staff/meetingSel.vue                                     |    5 
 admin/src/components/common/GlobalAlertWindow.vue                 |   12 
 pda/static/staff/ic_chaosong@2x.png                               |    0 
 admin/src/views/business/approvalReport.vue                       |  263 +--
 h5/static/home/ic_yongcheshenqing@3x.png                          |    0 
 pda/pages/index/login.vue                                         |    4 
 pda/unpackage/res/icons/96x96.png                                 |    0 
 h5/static/home/ic_xiugaimima@3x.png                               |    0 
 pda/unpackage/res/icons/167x167.png                               |    0 
 h5/pages/staff/task/index.vue                                     |   11 
 admin/src/views/platform/index.vue                                |   22 
 h5/pages/staff/vehicle/sendACarDetail.vue                         | 1144 ++++++++--------
 pda/unpackage/res/icons/1024x1024.png                             |    0 
 pda/unpackage/res/icons/72x72.png                                 |    0 
 admin/src/views/task/dangetDetail.vue                             |    3 
 pda/unpackage/res/icons/192x192.png                               |    0 
 pda/unpackage/res/icons/152x152.png                               |    0 
 pda/api/index.js                                                  |    8 
 h5/static/home/ic_paichejilu@3x.png                               |    0 
 h5/static/home/ic_yinhuansuishoupai@3x.png                        |    0 
 admin/src/views/business/approvalConfiguration.vue                |  265 +--
 pda/pages.json                                                    |    7 
 h5/static/home/ic_huiyishiguanli@3x.png                           |    0 
 admin/src/components/system/role/PermissionConfigWindow.vue       |   35 
 admin/src/components/operation/OperCarUseBookParamWindow.vue      |   39 
 h5/pages/staff/task/visitorApprove.vue                            |    3 
 pda/unpackage/res/icons/87x87.png                                 |    0 
 pda/pages/index/queueup.vue                                       |    6 
 h5/pages/staff/task/driver.vue                                    |    1 
 pda/unpackage/res/icons/58x58.png                                 |    0 
 h5/static/home/ic_yuyuehuiyishi@3x.png                            |    0 
 admin/src/components/business/OperaCarUseBookWindow.vue           |  242 ++-
 pda/unpackage/res/icons/20x20.png                                 |    0 
 admin/src/views/task/visSubDetail.vue                             |    2 
 admin/src/views/task/driverDetail.vue                             |   35 
 admin/src/views/login.vue                                         |   91 
 h5/pages/staff/task/visitorReport.vue                             |    3 
 pda/unpackage/res/icons/180x180.png                               |    0 
 h5/static/home/ic_fangkebaobei@3x.png                             |    0 
 pda/unpackage/res/icons/29x29.png                                 |    0 
 admin/src/views/operation/serviceCar/apprConfig.vue               |  267 +--
 h5/static/home/ic_wodehuiyi@3x.png                                |    0 
 pda/pages/index/SubDetail.vue                                     |  466 +++++++
 pda/unpackage/res/icons/120x120.png                               |    0 
 pda/static/staff/ic_shenpiren@2x.png                              |    0 
 pda/static/staff/liucheng_fail@2x.png                             |    0 
 pda/static/ic_passed@2x.png                                       |    0 
 h5/static/home/ic_renwuzhongxin@3x.png                            |    0 
 admin/src/views/task/index.vue                                    |    5 
 pda/unpackage/res/icons/60x60.png                                 |    0 
 admin/src/views/system/publicMsg.vue                              |  159 ++
 admin/src/components/business/OperaHiddenDangerWindow.vue         |    3 
 pda/unpackage/release/apk/__UNI__8789FB4__20241018164933.apk      |    0 
 pda/unpackage/res/icons/76x76.png                                 |    0 
 h5/App.vue                                                        |   13 
 h5/pages/staff/vehicle/applePeo.vue                               |    4 
 pda/manifest.json                                                 |  197 +-
 admin/src/views/meeting/components/OperaBookingsWindow.vue        |    3 
 pda/unpackage/release/apk/pda.apk                                 |    0 
 79 files changed, 2,295 insertions(+), 1,572 deletions(-)

diff --git a/admin/src/api/system/sms.js b/admin/src/api/system/sms.js
index 9a34d4d..6c3eedb 100644
--- a/admin/src/api/system/sms.js
+++ b/admin/src/api/system/sms.js
@@ -16,3 +16,20 @@
     }
   })
 }
+
+// 鍏紬鍙烽�氱煡 鍒嗛〉鍒楄〃
+export function getH5List (data) {
+  return request.post('/visitsAdmin/cloudService/business/wxNoticeConfig/page', data)
+}
+// 鍏紬鍙烽�氱煡 鐘舵�佹洿鏂�
+export function H5StatusUpdate (data) {
+  return request.post('/visitsAdmin/cloudService/business/wxNoticeConfig/updateById', data)
+}
+// 鍏紬鍙烽�氱煡 鎵归噺鐘舵�佹洿鏂�
+export function H5StatussUpdate (data) {
+  return request.get('/visitsAdmin/cloudService/business/wxNoticeConfig/updateStatus/batch', {
+    params: {
+      ...data
+    }
+  })
+}
\ No newline at end of file
diff --git a/admin/src/components/business/OperaCarUseBookWindow.vue b/admin/src/components/business/OperaCarUseBookWindow.vue
index 8321ae4..e1afa43 100644
--- a/admin/src/components/business/OperaCarUseBookWindow.vue
+++ b/admin/src/components/business/OperaCarUseBookWindow.vue
@@ -1,18 +1,14 @@
 <template>
-  <GlobalWindow
-      :title="title"
-      :visible.sync="visible"
-      @confirm="confirm"
-  >
+  <GlobalWindow :title="title" :visible.sync="visible" @confirm="confirm">
     <div class="modal_wrap">
       <div class="modal_content">
         <div class="header">
           <div class="left">
             <div class="h1">鍏姟杞︾敵璇�</div>
-            <div class="time">鎻愪氦鏃堕棿锛歿{model.createDate}}</div>
+            <div class="time">鎻愪氦鏃堕棿锛歿{ model.createDate }}</div>
           </div>
-          <span class="right"  v-if="model.status === 0">鐢宠涓�</span>
-          <span class="right"  v-if="model.status === 1">瀹℃壒涓�</span>
+          <span class="right" v-if="model.status === 0">鐢宠涓�</span>
+          <span class="right" v-if="model.status === 1">瀹℃壒涓�</span>
           <span class="right" style="background:#53b76f " v-if="model.status === 2">瀹℃壒閫氳繃</span>
           <span class="right" style="background:#dc362e " v-if="model.status === 3">瀹℃壒涓嶉�氳繃</span>
           <span class="right" style="background:#B2B2B2; " v-if="model.status === 4">宸叉挙閿�</span>
@@ -22,86 +18,98 @@
           <div class="list">
             <div class="item" style="width: 100%">
               <div class="label">鐢宠浜�</div>
-              <div class="value">{{model.memberName || ''}} {{model.memberPhone || ''}} ({{model.companyName || ''}})</div>
+              <div class="value">{{ model.memberName || '' }} {{ model.memberPhone || '' }} ({{ model.companyName || '' }})
+              </div>
             </div>
             <div class="item">
               <div class="label">鐢宠杞﹁締</div>
-              <div class="value">{{model.carCode || ''}}</div>
+              <div class="value">{{ model.carCode || '' }}</div>
             </div>
             <div class="item">
               <div class="label">鍙告満淇℃伅</div>
-              <div class="value" v-if="model.driverId !=null">{{model.driverName || ''}} {{model.driverPhone || ''}}</div>
-              <div class="value" v-if="model.driverId ==null">鏈寚娲�</div>
+              <div class="value" v-if="model.driverId != null">{{ model.driverName || '' }} {{ model.driverPhone || '' }}
+              </div>
+              <div class="value" v-if="model.driverId == null">鏈寚娲�</div>
             </div>
-            <div class="item"  >
-            <div class="label">鐢ㄨ溅浜嬬敱</div>
-            <div class="value">{{model.content}}</div>
-          </div>
+            <div class="item">
+              <div class="label">鐢ㄨ溅浜嬬敱</div>
+              <div class="value">{{ model.content }}</div>
+            </div>
             <div class="item">
               <div class="label">涔樿溅浜哄憳</div>
-              <div class="value">{{model.memberNames || ''}}</div>
+              <div class="value">{{ model.memberNames || '' }}</div>
             </div>
             <div class="item">
               <div class="label">鐩殑鍦扮被鍒�</div>
               <div class="value status-green" v-if="model.type == 0">銆愬競鍐呯敤杞︺��</div>
-              <div class="value status-red"   v-if="model.type == 1">銆愬競澶栫敤杞︺��</div>
+              <div class="value status-red" v-if="model.type == 1">銆愬競澶栫敤杞︺��</div>
             </div>
             <div class="item">
               <div class="label">鐩殑鍦�</div>
-              <div class="value">{{model.addr || ''}}</div>
+              <div class="value">{{ model.addr || '' }}</div>
             </div>
             <div class="item">
               <div class="label">棰勮鍑哄彂鏃堕棿</div>
-              <div class="value">{{model.planUseDate || ''}}</div>
+              <div class="value">{{ model.planUseDate || '' }}</div>
             </div>
             <div class="item">
               <div class="label">鐢ㄨ溅鏃舵</div>
-              <div class="value">濮�:{{model.startTime || ''}}<br>姝�:{{model.endTime || ''}}</div>
+              <div class="value">濮�:{{ model.startTime || '' }}<br>姝�:{{ model.endTime || '' }}</div>
             </div>
           </div>
         </div>
       </div>
       <div class="side">
         <div class="side_title">瀹℃壒娴佺▼</div>
-        <div class="list"  v-if="model.approveDateVO !=null && model.approveDateVO.approveList !=null">
-          <div class="item" v-for="(item,index) in model.approveDateVO.approveList" :key="item.id">
-            <div class="separate" v-if=" (index < model.approveDateVO.approveList.length-1)"></div>
+        <div class="list" v-if="
+          model.approveDateVO != null && model.approveDateVO.approveList != null
+        ">
+          <div class="item" v-for="(item, index) in model.approveDateVO.approveList" :key="item.id">
+            <div class="separate" v-if="index < model.approveDateVO.approveList.length - 1"></div>
             <div class="info">
-              <img src="@/assets/icons/ic_tongguo.png"   class="iconnew" v-if="( item.status ==2)"/>
-              <img src="@/assets/icons/ic_dangqian.png"   class="iconnew"  v-if="( item.status==1)"/>
-              <img src="@/assets/icons/ic_jujue.png"  class="iconnew"  v-if="( item.status==3)"/>
-              <img src="@/assets/icons/ic_grey.png"  class="iconnew" v-if=" (item.status==null || item.status==0 )"/>
-              <div style="display: inline" v-if="item.approveType !=1">
-                <img v-if="item.faceImg!=null && item.faceImg !=''" :src="item.faceImg" class="avatar" alt="" />
-                <img v-if="item.faceImg ==null ||item.faceImg ==''"  src="@/assets/avatar/man.png" class="avatar" alt="" />
+              <img src="@/assets/icons/ic_tongguo.png" class="iconnew" v-if="item.status == 2" />
+              <img src="@/assets/icons/ic_dangqian.png" class="iconnew" v-if="item.status == 1" />
+              <img src="@/assets/icons/ic_jujue.png" class="iconnew" v-if="item.status == 3" />
+              <img src="@/assets/icons/ic_grey.png" class="iconnew" v-if="item.status == null || item.status == 0" />
+              <div style="display: inline" v-if="item.approveType != 1">
+                <img v-if="item.faceImg != null && item.faceImg != ''" :src="item.faceImg" class="avatar" alt="" />
+                <img v-if="item.faceImg == null || item.faceImg == ''" src="@/assets/avatar/man.png" class="avatar"
+                  alt="" />
               </div>
-              <div style="display: inline" v-if="item.approveType  == 1">
-                <img  v-if="item.type !=1"  src="@/assets/icons/ic_duoren.png" class="avatar" alt="" />
-                <img v-if="item.type == 1"  src="@/assets/icons/ic_chaosong.png" class="avatar" alt="" />
+              <div style="display: inline" v-if="item.approveType == 1">
+                <img v-if="item.type != 1" src="@/assets/icons/ic_duoren.png" class="avatar" alt="" />
+                <img v-if="item.type == 1" src="@/assets/icons/ic_chaosong.png" class="avatar" alt="" />
               </div>
               <div class="content">
                 <div class="line">
-                  <div class="name">{{ item.title}}</div>
+                  <div class="name">{{ item.title }}</div>
                   <div class="time">{{ item.checkDate }}</div>
                 </div>
                 <div class="line">
                   <div class="company">
                     {{ item.memberName }}
-                    <div style="display: inline" v-if="item.statusInfo!=null && item.statusInfo!=''">
-                       锛�<span class="status-green">{{item.statusInfo ||''}}</span>锛�
+                    <div style="display: inline" v-if="item.statusInfo != null && item.statusInfo != ''">
+                      锛�<span :class="{ padding: item.statusInfo == '澶勭悊涓�' || item.status == '1' }">{{
+                        item.statusInfo || ""
+                      }}</span>锛�
                     </div>
                   </div>
                 </div>
               </div>
             </div>
-            <div v-if="item.approveType != 1 && item.checkInfo !=null && item.checkInfo !=''" class="remark">
-              {{ item.checkInfo || '' }}
+            <div v-if="
+              item.approveType != 1 &&
+              item.checkInfo != null &&
+              item.checkInfo != ''
+            " class="remark">
+              {{ item.checkInfo || "" }}
             </div>
-            <div v-if="item.approveType == 1 "  class="childList">
+            <div v-if="item.approveType == 0 || item.type == 1 || item.approveType == 1" class="childList">
               <div class="m_content company" v-for="item1 in item.approveList" :key="item1.id">
-                <img v-if="item1.faceImg!=null && item1.faceImg !=''" :src="item1.faceImg" class="avatar" alt="" />
-                <img v-if="item1.faceImg ==null ||item1.faceImg ==''"  src="@/assets/avatar/man.png" class="avatar" alt="" />
-                <span > {{item1.memberName}}</span>
+                <img v-if="item1.faceImg != null && item1.faceImg != ''" :src="item1.faceImg" class="avatar" alt="" />
+                <img v-if="item1.faceImg == null || item1.faceImg == ''" src="@/assets/avatar/man.png" class="avatar"
+                  alt="" />
+                <span> {{ item1.memberName }}</span>
               </div>
             </div>
           </div>
@@ -109,38 +117,27 @@
       </div>
     </div>
     <!--  -->
-    <template   v-slot:footer>
-      <el-button @click="agreeOpen"  type="primary"  v-if="model.approveDateVO!=null&& model.approveDateVO.canBeApproved!=null &&model.approveDateVO.canBeApproved ==1 "  class="status-red">鍚屾剰</el-button>
-      <el-button @click="jectOpen"  type="danger"  v-if="model.approveDateVO!=null&& model.approveDateVO.canBeApproved!=null &&model.approveDateVO.canBeApproved ==1 "  >鎷掔粷</el-button>
-      <el-button @click="visible=false">杩斿洖</el-button>
+    <template v-slot:footer>
+      <el-button @click="agreeOpen" type="primary"
+        v-if="model.approveDateVO != null && model.approveDateVO.canBeApproved != null && model.approveDateVO.canBeApproved == 1"
+        class="status-red">鍚屾剰</el-button>
+      <el-button @click="jectOpen" type="danger"
+        v-if="model.approveDateVO != null && model.approveDateVO.canBeApproved != null && model.approveDateVO.canBeApproved == 1">鎷掔粷</el-button>
+      <el-button @click="visible = false">杩斿洖</el-button>
     </template>
-    <el-dialog
-        append-to-body
-        title="鍚屾剰鐢宠"
-        style="text-align: center"
-        class="dialogCl"
-        :visible.sync="isShowProblem"
-        width="480px"
-    >
-      <el-form :model="dealForm" :rules="rules" ref="dealForm" >
+    <el-dialog append-to-body title="鍚屾剰鐢宠" style="text-align: center" class="dialogCl" :visible.sync="isShowProblem"
+      width="480px">
+      <el-form :model="dealForm" :rules="rules" ref="dealForm">
         <!-- <el-form-item label="娲捐溅鍙告満" prop="driverId" required v-if="model.approveDateVO!=null && model.approveDateVO.driverParam === 1"> -->
-        <el-form-item label="娲捐溅鍙告満" prop="driverId" v-if="model.approveDateVO!=null && model.approveDateVO.driverParam == 1">
-          <el-select v-model="dealForm.driverId" style="width: 300px"  filterable clearable placeholder="璇烽�夋嫨娲鹃仯鍙告満">
-            <el-option
-                v-for="item in memberList"
-                :key="item.id"
-                :label="item.name+'-'+item.phone"
-                :value="item.id">
+        <el-form-item label="娲捐溅鍙告満" prop="driverId"
+          v-if="model.approveDateVO != null && model.approveDateVO.driverParam == 1">
+          <el-select v-model="dealForm.driverId" style="width: 300px" filterable clearable placeholder="璇烽�夋嫨娲鹃仯鍙告満">
+            <el-option v-for="item in memberList" :key="item.id" :label="item.name + '-' + item.phone" :value="item.id">
             </el-option>
           </el-select>
         </el-form-item>
         <el-form-item label="鍚屾剰璇存槑">
-          <el-input
-              type="textarea"
-              placeholder="璇峰~鍐欒鏄�"
-              :rows="4"
-              v-model="dealForm.checkInfo"
-          />
+          <el-input type="textarea" placeholder="璇峰~鍐欒鏄�" :rows="4" v-model="dealForm.checkInfo" />
         </el-form-item>
       </el-form>
       <span slot="footer" class="dialog-footer">
@@ -148,26 +145,15 @@
         <el-button type="primary" :loading="dealing" @click="dealDo">纭畾</el-button>
       </span>
     </el-dialog>
-    <el-dialog
-        append-to-body
-        title="鎷掔粷鐢宠"
-        style="text-align: center"
-        class="dialogCl"
-        :visible.sync="isBackProblem"
-        width="600px"
-    >
-      <el-form :model="backForm"  ref="backForm" label-width="100px">
+    <el-dialog append-to-body title="鎷掔粷鐢宠" style="text-align: center" class="dialogCl" :visible.sync="isBackProblem"
+      width="600px">
+      <el-form :model="backForm" ref="backForm" label-width="100px">
         <el-form-item label="鎷掔粷璇存槑">
-          <el-input
-              type="textarea"
-              placeholder="璇峰~鍐欒鏄�"
-              :rows="4"
-              v-model="backForm.checkInfo"
-          />
+          <el-input type="textarea" placeholder="璇峰~鍐欒鏄�" :rows="4" v-model="backForm.checkInfo" />
         </el-form-item>
       </el-form>
       <span slot="footer" class="dialog-footer">
-        <el-button @click="isBackProblem= false">鍙栨秷</el-button>
+        <el-button @click="isBackProblem = false">鍙栨秷</el-button>
         <el-button type="primary" :loading="dealing" @click="backDo">纭畾</el-button>
       </span>
     </el-dialog>
@@ -184,12 +170,12 @@
   name: 'OperaCarUseBookWindow',
   components: { GlobalWindow },
   extends: BaseOpera,
-  data () {
+  data() {
     return {
       title: '鍏姟杞︾敵璇�',
       visible: false,
       dataId: null,
-      model: { },
+      model: {},
       dealing: false,
       isShowProblem: false,
       isBackProblem: false,
@@ -209,14 +195,14 @@
   computed: {
     ...mapState(['userInfo'])
   },
-  created () {
+  created() {
     this.config({
       api: '/business/carUseBook',
       'field.id': 'id'
     })
   },
   methods: {
-    dealDo () {
+    dealDo() {
       this.$refs.dealForm.validate((valid) => {
         if (!valid) {
           return
@@ -242,18 +228,18 @@
           })
       })
     },
-    agreeOpen () {
+    agreeOpen() {
       this.isShowProblem = true
       this.$set(this.dealForm, 'checkInfo', '')
       this.loadMemberList()
     },
-    jectOpen () {
+    jectOpen() {
       this.isBackProblem = true
       this.backForm = {
         checkInfo: null
       }
     },
-    backDo () {
+    backDo() {
       this.$refs.backForm.validate((valid) => {
         if (!valid) {
           return
@@ -275,7 +261,7 @@
           })
       })
     },
-    open (title, target) {
+    open(title, target) {
       this.title = title
       this.visible = true
       this.model = {}
@@ -292,14 +278,26 @@
         this.getDetail()
       })
     },
-    getDetail () {
+    getDetail() {
       this.api.detail(this.dataId)
         .then(res => {
           this.model = res
+          if (this.model.approveDateVO && this.model.approveDateVO.approveList.length > 0) {
+            this.model.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 = []
+              }
+            })
+          }
           this.dealForm.driveId = res.driveId
         })
     },
-    loadMemberList () {
+    loadMemberList() {
       driveList({}).then(res => {
         this.memberList = res
       })
@@ -309,6 +307,8 @@
 </script>
 
 <style lang="scss" scoped>
+@import "@/assets/style/variables.scss";
+
 .upload_box {
   width: 84px;
   height: 84px;
@@ -320,14 +320,17 @@
   align-items: center;
   color: #999999;
   border: 1px solid #e4e4e4;
+
   .icon {
     font-size: 24px;
   }
+
   .text {
     font-size: 12px;
   }
 }
-.side_title{
+
+.side_title {
   font-weight: 600;
   font-size: 18px;
   color: #111111;
@@ -335,9 +338,11 @@
   margin-left: 20px;
   margin-top: 20px;
 }
+
 .modal_wrap {
   display: flex;
   height: 100%;
+
   .modal_content {
     flex: 1;
     padding: 0px 30px;
@@ -352,6 +357,7 @@
       margin-bottom: 20px;
       margin-top: 30px;
     }
+
     .info {
       .list {
         display: flex;
@@ -361,6 +367,7 @@
           display: flex;
           width: 40%;
           margin-bottom: 20px;
+
           &:nth-of-type(2n) {
             width: 60%;
           }
@@ -410,20 +417,24 @@
         border-radius: 16px 0px 16px 0px;
       }
     }
+
     .table_info {
       .name_wrap {
         display: flex;
         align-items: center;
+
         .avatar {
           width: 40px;
           height: 40px;
           border-radius: 50%;
           margin-right: 12px;
         }
+
         .content {
           .line {
             display: flex;
           }
+
           .tag {
             color: #b2cbf9;
             border: 1px solid #b2cbf9;
@@ -441,17 +452,20 @@
     width: 420px;
     background: #ffffff;
     border-left: 20px solid #f7f7f7;
+
     .list {
       .item {
         padding: 8px 0;
         position: relative;
+
         .separate {
           position: absolute;
           border-left: 2px dashed #cccccc;
           left: 31px;
-          height: calc(100% - 36px);
+          height: calc(100% - 30px);
           top: 49px;
         }
+
         .avatar {
           width: 40px;
           height: 40px;
@@ -459,75 +473,98 @@
           margin: 0 12px 0 16px;
           //border: 1px solid;
         }
-        .childList{
+
+        .childList {
           display: flex;
           flex-wrap: wrap;
           margin-left: 100px;
         }
+
         .company {
           font-size: 13px;
           color: #888888;
+
           .status {
-            color: #00ba67;
+            color: $primaryColor;
           }
         }
-        .m_content{
+
+        .m_content {
           display: flex;
           flex-direction: column;
           align-items: center;
           justify-content: center;
           margin-bottom: 4px;
         }
+
         .info {
           display: flex;
           align-items: center;
           margin-left: 20px;
+
           .icon {
             position: relative;
             z-index: 11;
             color: #53b76f;
             font-size: 24px;
           }
+
           .icon1 {
             position: relative;
             z-index: 11;
             color: deepskyblue;
             font-size: 24px;
           }
+
           .icon2 {
             position: relative;
             z-index: 11;
             color: #dc362e;
             font-size: 24px;
           }
-          .iconnew{
+
+          .iconnew {
             width: 24px;
             height: 24px;
           }
+
           .icon3 {
             position: relative;
             z-index: 11;
-            color:gray;
+            color: gray;
             font-size: 24px;
           }
+
           .content {
             flex: 1;
+
             .line {
               display: flex;
               justify-content: space-between;
               align-content: center;
               margin-bottom: 6px;
+
+              .status {
+                color: #888888;
+              }
+
+              .padding {
+                color: $primaryColor;
+              }
+
               .name {
                 font-weight: 600;
                 font-size: 16px;
                 color: #111111;
               }
+
               .time {
                 color: #888888;
               }
             }
           }
         }
+
         .remark {
           background: #f7f7f7;
           border-radius: 4px;
@@ -535,7 +572,6 @@
           color: #666666;
           margin-left: 100px;
         }
-
       }
     }
   }
diff --git a/admin/src/components/business/OperaHiddenDangerWindow.vue b/admin/src/components/business/OperaHiddenDangerWindow.vue
index 6937591..694ad5b 100644
--- a/admin/src/components/business/OperaHiddenDangerWindow.vue
+++ b/admin/src/components/business/OperaHiddenDangerWindow.vue
@@ -551,6 +551,7 @@
 </script>
 
 <style lang="scss" scoped>
+@import "@/assets/style/variables.scss";
 .side_title{
   font-weight: 600;
   font-size: 18px;
@@ -748,7 +749,7 @@
                 font-size: 13px;
                 color: #888888;
                 .status {
-                  color: #00ba67;
+                  color: $primaryColor;
                 }
               }
             }
diff --git a/admin/src/components/business/OperaPlatformApproveTemplWindow.vue b/admin/src/components/business/OperaPlatformApproveTemplWindow.vue
index b9c8038..47520d4 100644
--- a/admin/src/components/business/OperaPlatformApproveTemplWindow.vue
+++ b/admin/src/components/business/OperaPlatformApproveTemplWindow.vue
@@ -82,7 +82,7 @@
               <!-- 鎶勯�佷汉 -->
               <template v-if="apprList[activeIndex].type == '1'">
                 <div class="config_data_item_reviewed_content">
-                  <div v-for="(mem,memIndex) in apprList[activeIndex].objIds" :key="mem.id"
+                  <div v-for="(mem, memIndex) in apprList[activeIndex].objIds" :key="mem.id"
                     class="config_data_item_reviewed_content_item">
                     <span>{{ mem.name }}</span>
                     <i @click="memDel(memIndex)" class="el-icon-close"></i>
@@ -163,7 +163,7 @@
             ">
               浼佷笟缁勭粐鏋舵瀯
             </div>
-            <div style="width: 100%; height: 100%; overflow-y: scroll">
+            <div style="width: 100%; max-height: 560px; overflow-y: scroll">
               <Tree :list="companyTree" :defaultProps="{
                 name: 'name',
                 status: 'fsStatus',
@@ -172,7 +172,7 @@
               }" @callback="callback" />
             </div>
           </div>
-          <el-transfer filterable  :titles="['鏈��', '宸查��']" openAll :props="{ label: 'name', key: 'keyTemp' }"
+          <el-transfer filterable :titles="['鏈��', '宸查��']" openAll :props="{ label: 'name', key: 'keyTemp' }"
             filter-placeholder="鎼滅储鍛樺伐" v-model="searchForm.objIds" :data="memberList" class="transfer">
           </el-transfer>
         </div>
@@ -207,7 +207,7 @@
       activeType: '6',
       subLoading: false,
       apprList: [
-        { remark: '瀹℃壒浜�', active: false,approveType: 0, memberType: 1, type: '1', objIds: [] },
+        { remark: '瀹℃壒浜�', active: false, approveType: 0, memberType: 1, type: '1', objIds: [] },
         { remark: '鎶勯�佷汉', active: false, type: '1', objIds: [] }
       ],
       activeIndex: 0,
@@ -230,7 +230,7 @@
       this.getfindCompanyTreePage()
       this.apprList = [
         { remark: '瀹℃壒浜�', active: false, type: '0', memberType: 1, objIds: [] },
-        { remark: '鎶勯�佷汉', active: false,approveType: 0, type: '1', objIds: [] }
+        { remark: '鎶勯�佷汉', active: false, approveType: 0, type: '1', objIds: [] }
       ]
       this.param = {}
       this.searchForm = {}
@@ -313,7 +313,7 @@
       this.activeIndex = 0
     },
     handleAddAppr() {
-      this.apprList.splice(this.apprList.length - 1, 0, { remark: '瀹℃壒浜�',approveType: 0, active: false, memberType: 1, type: 0, objIds: [] })
+      this.apprList.splice(this.apprList.length - 1, 0, { remark: '瀹℃壒浜�', approveType: 0, active: false, memberType: 1, type: 0, objIds: [] })
       // this.apprList.push({ remark: '瀹℃壒浜�', active: false, type: '0' })
     },
     // 鑾峰彇缁勭粐鏍�
@@ -338,11 +338,11 @@
           erpOrgId: '',
           hasFace: '',
           hkStatus: '',
-          includeChild: false,
+          includeChild: true,
           type: 2
         },
         page: 1,
-        capacity: 30
+        capacity: 300
       }).then(res => {
         this.memberList = res.records || []
         this.memberList.forEach(item => {
@@ -658,10 +658,12 @@
     display: flex;
     justify-content: center;
     align-items: center;
-    ::v-deep .el-transfer-panel{
+
+    ::v-deep .el-transfer-panel {
       flex: 1;
       height: 100%;
     }
+
     ::v-deep .el-transfer-panel__body {
       height: 500px;
     }
diff --git a/admin/src/components/common/CommonHeader.vue b/admin/src/components/common/CommonHeader.vue
index cab4be2..f72b38a 100644
--- a/admin/src/components/common/CommonHeader.vue
+++ b/admin/src/components/common/CommonHeader.vue
@@ -19,61 +19,35 @@
         <el-dropdown v-if="isLogined" trigger="click">
           <span class="el-dropdown-link">
             <!-- <img v-if="userInfo != null" :src="userInfo.avatar == null ? `${require('@/assets/avatar/man.png')}` : userInfo.avatar" alt="">{{userInfo | displayName}}<i class="el-icon-arrow-down el-icon--right"></i> -->
-            <img
-              v-if="userInfo != null"
-              style="width: 30px !important"
-              src="@/assets/avatar/man.png"
-              alt=""
-            />{{ userInfo | displayName
+            <img v-if="userInfo != null" style="width: 30px !important" src="@/assets/avatar/man.png" alt="" />{{
+              userInfo | displayName
             }}<i class="el-icon-arrow-down el-icon--right"></i>
           </span>
           <el-dropdown-menu slot="dropdown">
-            <el-dropdown-item @click.native="changePwd"
-              >淇敼瀵嗙爜</el-dropdown-item
-            >
+            <el-dropdown-item @click.native="changePwd">淇敼瀵嗙爜</el-dropdown-item>
             <el-dropdown-item @click.native="logout">閫�鍑虹櫥褰�</el-dropdown-item>
           </el-dropdown-menu>
         </el-dropdown>
       </div>
     </div>
     <!-- 淇敼瀵嗙爜 -->
-    <GlobalAlertWindow
-      title="淇敼瀵嗙爜"
-      :visible.sync="visible.changePwd"
-      @confirm="confirmChangePwd"
-      @close="visible.changePwd = false"
-    >
-      <el-form
-        :model="changePwdData.form"
-        ref="changePwdDataForm"
-        :rules="changePwdData.rules"
-      >
+    <GlobalAlertWindow title="淇敼瀵嗙爜" :visible.sync="visible.changePwd"
+      :showClose="!userInfo.needChangePwd || userInfo.needChangePwd == '1'"
+      :showCancel="!userInfo.needChangePwd || userInfo.needChangePwd == '1'" @confirm="confirmChangePwd"
+      @close="visible.changePwd = false">
+      <el-form :model="changePwdData.form" ref="changePwdDataForm" :rules="changePwdData.rules">
         <el-form-item label="鍘熷瀵嗙爜" prop="oldPwd" required>
-          <el-input
-            v-model="changePwdData.form.oldPwd"
-            type="password"
-            placeholder="璇疯緭鍏ュ師濮嬪瘑鐮�"
-            maxlength="30"
-            show-password
-          ></el-input>
+          <el-input v-model="changePwdData.form.oldPwd" type="password" placeholder="璇疯緭鍏ュ師濮嬪瘑鐮�" maxlength="30"
+            show-password></el-input>
         </el-form-item>
         <el-form-item label="鏂板瘑鐮�" prop="newPwd" required>
-          <el-input
-            v-model="changePwdData.form.newPwd"
-            type="password"
-            placeholder="璇疯緭鍏ユ柊瀵嗙爜"
-            maxlength="30"
-            show-password
-          ></el-input>
+          <el-input v-model="changePwdData.form.newPwd" type="password" placeholder="璇疯緭鍏ユ柊瀵嗙爜锛屽瘑鐮侀渶鍖呭惈瀛楁瘝銆佹暟瀛楀強鐗规畩瀛楃涓殑鑷冲皯涓ょ" maxlength="20"
+            show-password></el-input>
         </el-form-item>
+        <!-- <div style="font-size: 12px;color:#999999">瀵嗙爜闇�鍖呭惈瀛楁瘝銆佹暟瀛楀強鐗规畩瀛楃涓殑鑷冲皯涓ょ</div> -->
         <el-form-item label="纭鏂板瘑鐮�" prop="confirmPwd" required>
-          <el-input
-            v-model="changePwdData.form.confirmPwd"
-            type="password"
-            placeholder="璇峰啀娆¤緭鍏ユ柊瀵嗙爜"
-            maxlength="30"
-            show-password
-          ></el-input>
+          <el-input v-model="changePwdData.form.confirmPwd" type="password" placeholder="璇峰啀娆¤緭鍏ユ柊瀵嗙爜" maxlength="20"
+            show-password></el-input>
         </el-form-item>
       </el-form>
     </GlobalAlertWindow>
@@ -119,7 +93,8 @@
             { required: true, message: '璇疯緭鍏ュ師濮嬪瘑鐮�' }
           ],
           newPwd: [
-            { required: true, message: '璇疯緭鍏ユ柊瀵嗙爜' }
+            { required: true, message: '璇疯緭鍏ュ瘑鐮�', trigger: 'blur' },
+            { validator: this.validatePassword, trigger: 'blur' },
           ],
           confirmPwd: [
             { required: true, message: '璇峰啀娆¤緭鍏ユ柊瀵嗙爜' }
@@ -133,6 +108,13 @@
     // title () {
     //   return this.$route.meta.title
     // }
+  },
+  mounted() {
+    // console.log('userInfo',this.userInfo);
+    if (!this.userInfo.needChangePwd || this.userInfo.needChangePwd == '0') {
+      // this.visible.changePwd = true
+    }
+
   },
   filters: {
     // 灞曠ず鍚嶇О
@@ -155,9 +137,29 @@
         this.$refs.changePwdDataForm.resetFields()
       })
     },
-    getHeaderNav(type){
+    validatePassword(rule, value, callback) {
+      if (!value) {
+        callback(new Error('璇疯緭鍏ュ瘑鐮�'))
+      } else {
+        const lengthValid = /^.{6,20}$/.test(value)
+        const hasLetter = /[a-zA-Z]/.test(value)
+        const hasNumber = /[0-9]/.test(value)
+        const hasSpecial = /[!@#$%^&*(),.?":{}|<>]/.test(value)
+
+        const typesCount = [hasLetter, hasNumber, hasSpecial].filter(Boolean).length
+
+        if (!lengthValid) {
+          callback(new Error('瀵嗙爜闀垮害闇�涓�6鍒�20涓瓧绗�'))
+        } else if (typesCount < 2) {
+          callback(new Error('瀵嗙爜闇�鍖呭惈瀛楁瘝銆佹暟瀛楀強鐗规畩瀛楃涓殑鑷冲皯涓ょ'))
+        } else {
+          callback() // 楠岃瘉閫氳繃
+        }
+      }
+    },
+    getHeaderNav(type) {
       getAppHeaderNav(type).then(res => {
-        window.open(res, "_blank");
+        window.open(res, "_blank")
       })
     },
     // 纭畾淇敼瀵嗙爜
@@ -185,7 +187,7 @@
             this.visible.changePwd = false
           })
           .catch(e => {
-           //  this.$tip.apiFailed(e)
+            //  this.$tip.apiFailed(e)
           })
           .finally(() => {
             this.isWorking.changePwd = false
@@ -211,15 +213,18 @@
 
 <style scoped lang="scss">
 @import "@/assets/style/variables.scss";
+
 .common-header {
   background-color: #2080f7;
 }
-.list{
+
+.list {
   flex: 1;
   display: flex;
   align-items: center;
   margin-left: 60px;
-  .item{
+
+  .item {
     margin-right: 40px;
     font-size: 16px;
     font-weight: 400;
@@ -229,16 +234,19 @@
     justify-content: flex-start;
     height: 40px;
     cursor: pointer;
-    .linellae{
+
+    .linellae {
       width: 64px;
       height: 2px;
       background: #FFFFFF;
     }
   }
-  .active{
+
+  .active {
     font-weight: 500;
   }
 }
+
 .header {
   overflow: hidden;
   // background: #fff;
@@ -259,9 +267,11 @@
     color: #fff;
     display: flex;
     align-items: center;
-    .title{
+
+    .title {
       width: 200px;
     }
+
     // display: inline;
     .title-en {
       font-size: 11px;
@@ -269,6 +279,7 @@
       color: rgb(202, 214, 238);
     }
   }
+
   .user {
     width: 212px;
     box-sizing: border-box;
@@ -277,10 +288,13 @@
     background: url("../../assets/images/top_ic_bolang@2x.png") no-repeat;
     flex-shrink: 0;
     text-align: right;
+    cursor: pointer;
+
     .el-dropdown {
       top: 2px;
       color: #fff;
     }
+
     img {
       width: 32px;
       position: relative;
@@ -289,9 +303,11 @@
     }
   }
 }
+
 // 涓嬫媺鑿滃崟妗�
 .el-dropdown-menu {
   width: 140px;
+
   .el-dropdown-menu__item:hover {
     background: #e3edfb;
     color: $primary-color;
diff --git a/admin/src/components/common/GlobalAlertWindow.vue b/admin/src/components/common/GlobalAlertWindow.vue
index 53b0597..f252722 100644
--- a/admin/src/components/common/GlobalAlertWindow.vue
+++ b/admin/src/components/common/GlobalAlertWindow.vue
@@ -6,8 +6,10 @@
     :with-header="true"
     :width="width"
     :close-on-press-escape="false"
+    :close-on-click-modal="false"
     :wrapper-closable="false"
     :append-to-body="true"
+    :show-close="!showClose"
     @close="close"
   >
     <div slot="title" class="window__header">
@@ -19,7 +21,7 @@
     <div v-if="withFooter" class="window__footer">
       <slot name="footer">
         <el-button @click="confirm" :loading="confirmWorking" type="primary">纭畾</el-button>
-        <el-button @click="close">鍙栨秷</el-button>
+        <el-button v-if="!showCancel" @click="close">鍙栨秷</el-button>
       </slot>
     </div>
   </el-dialog>
@@ -33,6 +35,14 @@
       type: String,
       default: '50%'
     },
+    showClose: {
+      type: Boolean,
+      default: false
+    },
+    showCancel: {
+      type: Boolean,
+      default: false
+    },
     // 鏄惁鍖呭惈搴曢儴鎿嶄綔
     withFooter: {
       type: Boolean,
diff --git a/admin/src/components/operation/OperCarUseBookParamWindow.vue b/admin/src/components/operation/OperCarUseBookParamWindow.vue
index 64f9063..980be80 100644
--- a/admin/src/components/operation/OperCarUseBookParamWindow.vue
+++ b/admin/src/components/operation/OperCarUseBookParamWindow.vue
@@ -107,7 +107,7 @@
       title="閫夋嫨鐢ㄨ溅鏃堕棿"
       :visible.sync="isShowTime"
       append-to-body
-      width="600px"
+      width="640px"
     >
       <el-form :model="form" ref="modalRef" class="el_form" :rules="rules">
         <el-form-item label="鐢ㄨ溅鏃ユ湡" prop="dateDay">
@@ -587,32 +587,41 @@
     div {
       line-height: 28px;
     }
-  }
+  } 
 }
 .time_list {
   display: flex;
-  justify-content: space-between;
   flex-wrap: wrap;
   .item {
-    width: 154px;
-    height: 32px;
-    line-height: 32px;
-    text-align: center;
-    background: #f7f7f7;
-    border-radius: 4px;
-    margin-bottom: 10px;
+    margin-right: 8px;
+    margin-bottom: 8px;
+    font-size: 14px;
+    font-weight: 400;
+    line-height: 14px;
+    width: 124px;
+    height: 36px;
+    display: flex;
+    justify-content: center;
+    align-items: center;
+    border-radius: 5px;
+    color: #111;
+    border: #cccccc solid 1px;
+    cursor: pointer;
   }
   .active {
-    background-color: $primary-color;
-    color: #fff;
+    border-color: $primary-color;
+    background-color: #f6f9fe;
+    color: $primary-color;
   }
   .disable {
+    color: #fff;
+    border-color: #cccccc;
     background-color: #cccccc;
-    color: #999999;
   }
   .hasSub {
-      color: #fff;
-      background: #cccccc;
+    border-color: #bed6f9;
+    background-color: #bed6f9;
+    color: #fff;
     }
 }
 .color_op {
diff --git a/admin/src/components/system/role/OperaSystemRoleDataWindow.vue b/admin/src/components/system/role/OperaSystemRoleDataWindow.vue
index 9528a0b..5727a97 100644
--- a/admin/src/components/system/role/OperaSystemRoleDataWindow.vue
+++ b/admin/src/components/system/role/OperaSystemRoleDataWindow.vue
@@ -1,32 +1,16 @@
 <template>
-  <GlobalWindow
-    :title="title"
-    width="60%"
-    :visible.sync="visible"
-    :confirm-working="isWorking"
-    @confirm="confirm"
-  >
-    <p class="tip">姝e湪涓鸿鑹层�� <em>{{role.name || '-'}}</em>銆� 閰嶇疆鏁版嵁鏉冮檺</p>
+  <GlobalWindow :title="title" width="80%" :visible.sync="visible" :confirm-working="isWorking" @confirm="confirm">
+    <p class="tip">姝e湪涓鸿鑹层�� <em>{{ role.name || '-' }}</em>銆� 閰嶇疆鏁版嵁鏉冮檺</p>
     <p class="tip-warn"><i class="el-icon-warning"></i>鎻愰啋锛氭潈闄愰厤缃悗闇�閲嶆柊鐧诲綍鍚庣敓鏁�</p>
     <el-form :model="form" ref="form" style="margin-top:15px">
       <el-form-item label="鏉冮檺绫诲瀷锛�" prop="type">
         <el-select v-model="form.type" clearable filterable placeholder="璇烽�夋嫨鏉冮檺绫诲瀷">
-          <el-option
-            v-for="(item, index) in options"
-            :key="index"
-            :label="item.name"
-            :value="item.id"
-          >
+          <el-option v-for="(item, index) in options" :key="index" :label="item.name" :value="item.id">
           </el-option>
         </el-select>
       </el-form-item>
       <el-form-item v-if="form.type == 4" label="鑷畾涔夐儴闂細" prop="customData">
-        <el-cascader
-          :options="departments"
-          v-model="form.customData"
-          :props=defaultProps
-          clearable
-        ></el-cascader>
+        <el-cascader :options="departments" v-model="form.customData" :props=defaultProps clearable></el-cascader>
       </el-form-item>
 
     </el-form>
@@ -38,13 +22,13 @@
 import GlobalWindow from '@/components/common/GlobalWindow'
 import { createRoleDataPermission } from '@/api/system/role'
 import { fetchList } from '@/api/business/company'
-  // import the styles
+// import the styles
 import '@riophae/vue-treeselect/dist/vue-treeselect.css'
 export default {
   name: 'OperaSystemRoleWindow',
   extends: BaseOpera,
   components: { GlobalWindow },
-  data () {
+  data() {
     return {
       options: [
         { name: '鍏ㄩ儴', id: 0 },
@@ -71,11 +55,11 @@
         value: 'id',
         emitPath: false
       },
-      role:{},
+      role: {},
       departments: []
     }
   },
-  created () {
+  created() {
     this.config({
       api: '/system/role',
       'field.id': 'id'
@@ -84,18 +68,18 @@
   },
   methods: {
     // 閮ㄩ棬鏍戠姸缁撴瀯鏁版嵁
-    treeComList () {
+    treeComList() {
       fetchList()
         .then(res => {
           // this.departments = this.tree([res])
-          this.departments =this.newTree(res)
+          this.departments = this.newTree(res)
         })
     },
-    open (title, target,role) {
+    open(title, target, role) {
       // console.log(title, target)
       this.title = title
       this.visible = true
-      this.role=role
+      this.role = role
       // 鏂板缓
       if (target == null) {
         this.$nextTick(() => {
@@ -109,33 +93,33 @@
         for (const key in this.form) {
           this.form[key] = target[key]
         }
-        console.log(target);
-        if (target.customData === undefined ||target.customData === null || target.customData === '') {
+        console.log(target)
+        if (target.customData === undefined || target.customData === null || target.customData === '') {
           this.form.customData = []
         } else {
-          const customD  = this.form.customData.split(',')
+          const customD = this.form.customData.split(',')
           this.form.customData = customD.map((item) => { return parseInt(item) })
         }
       })
     },
     newTree(tree) {
-      if(tree ==null){
+      if (tree == null) {
         return []
       }
       return tree.map(item => {
-        let newItem = {...item}
-        if(newItem){
-          newItem.children=newItem.childList
+        let newItem = { ...item }
+        if (newItem) {
+          newItem.children = newItem.childList
         }
         if (item.children && item.children.length == 0) {
-          this.$delete( newItem, 'children' )
+          this.$delete(newItem, 'children')
         } else {
           newItem.children = this.newTree(newItem.children)
         }
         return newItem
-      });
+      })
     },
-    __confirmCreate () {
+    __confirmCreate() {
       // console.log(JSON.stringify(this.form.customData));
       // return
       this.$refs.form.validate((valid) => {
@@ -164,7 +148,7 @@
           })
       })
     },
-    __confirmEdit () {
+    __confirmEdit() {
       // console.log(JSON.stringify(this.form.customData));
       // return
       this.$refs.form.validate((valid) => {
@@ -196,3 +180,25 @@
   }
 }
 </script>
+<style scoped lang="scss">
+.transfer {
+  height: 600px;
+  width: 100%;
+  display: flex;
+  justify-content: center;
+  align-items: center;
+
+  ::v-deep .el-transfer-panel {
+    flex: 1;
+    height: 100%;
+  }
+
+  ::v-deep .el-transfer-panel__body {
+    height: 500px;
+  }
+
+  ::v-deep .el-transfer-panel__list.is-filterable {
+    height: 480px;
+  }
+}
+</style>
diff --git a/admin/src/components/system/role/PermissionConfigWindow.vue b/admin/src/components/system/role/PermissionConfigWindow.vue
index 63f4835..4a08fbf 100644
--- a/admin/src/components/system/role/PermissionConfigWindow.vue
+++ b/admin/src/components/system/role/PermissionConfigWindow.vue
@@ -1,25 +1,12 @@
 <template>
-  <GlobalWindow
-    :visible.sync="visible"
-    :confirm-working="isWorking"
-    width="582px"
-    title="閰嶇疆瑙掕壊鏉冮檺"
-    @confirm="confirm"
-  >
-    <p class="tip" v-if="role != null">涓鸿鑹� <em>{{role.name}}</em> 閰嶇疆鏉冮檺</p>
+  <GlobalWindow :visible.sync="visible" :confirm-working="isWorking" width="80%" title="閰嶇疆瑙掕壊鏉冮檺" @confirm="confirm">
+    <p class="tip" v-if="role != null">涓鸿鑹� <em>{{ role.name }}</em> 閰嶇疆鏉冮檺</p>
     <p class="tip-warn"><i class="el-icon-warning"></i>鎻愰啋锛氭潈闄愰厤缃悗闇�閲嶆柊鐧诲綍鍚庣敓鏁�</p>
-    <el-transfer
-      ref="permissionTransfer"
-      v-model="selectedIds"
-      filterable
-      class="transfer"
-      :filter-method="filterPermissions"
-      :titles="['鏈巿鏉冩潈闄�', '宸叉巿鏉冩潈闄�']"
-      :props="{
+    <el-transfer ref="permissionTransfer" v-model="selectedIds" filterable class="transfer"
+      :filter-method="filterPermissions" :titles="['鏈巿鏉冩潈闄�', '宸叉巿鏉冩潈闄�']" :props="{
         key: 'id',
         label: 'name'
-      }"
-      :data="permissions">
+      }" :data="permissions">
     </el-transfer>
   </GlobalWindow>
 </template>
@@ -31,7 +18,7 @@
 export default {
   name: 'PermissionConfigWindow',
   components: { GlobalWindow },
-  data () {
+  data() {
     return {
       visible: false,
       isWorking: false,
@@ -47,7 +34,7 @@
     /**
      * @role 瑙掕壊瀵硅薄
      */
-    open (role) {
+    open(role) {
       if (this.$refs.permissionTransfer) {
         this.$refs.permissionTransfer.clearQuery('left')
         this.$refs.permissionTransfer.clearQuery('right')
@@ -72,7 +59,7 @@
         })
     },
     // 纭閫夋嫨鏉冮檺
-    confirm () {
+    confirm() {
       this.isWorking = true
       createRolePermission({
         roleId: this.role.id,
@@ -91,7 +78,7 @@
         })
     },
     // 鎼滅储鏉冮檺
-    filterPermissions (query, item) {
+    filterPermissions(query, item) {
       const lowerCaseQuery = query.toLowerCase()
       return item.code.toLowerCase().indexOf(lowerCaseQuery) > -1 || item.name.toLowerCase().indexOf(lowerCaseQuery) > -1
     }
@@ -101,6 +88,7 @@
 
 <style scoped lang="scss">
 @import "@/assets/style/variables.scss";
+
 .global-window {
   .tip {
     em {
@@ -109,10 +97,12 @@
       font-weight: bold;
     }
   }
+
   .tip-warn {
     margin: 4px 0 12px 0;
     font-size: 12px;
     color: #999;
+
     i {
       color: orange;
       margin-right: 4px;
@@ -122,6 +112,7 @@
     }
   }
 }
+
 .transfer {
   height: 600px;
   width: 100%;
diff --git a/admin/src/views/business/approvalConfiguration.vue b/admin/src/views/business/approvalConfiguration.vue
index cd61e1f..09b2d8f 100644
--- a/admin/src/views/business/approvalConfiguration.vue
+++ b/admin/src/views/business/approvalConfiguration.vue
@@ -20,45 +20,35 @@
               <img src="@/assets/images/peizhi_ar@2x.png" alt="" />
             </div>
             <div v-for="(item, index) in apprList" :key="index">
-              <div
-                class="item yellow"
-                :class="{
-                  active: activeIndex == index,
-                  blue: item.type == '1',
-                }"
-                @click="flowClick(index)"
-              >
+              <div class="item yellow" :class="{
+                active: activeIndex == index,
+                blue: item.type == '1',
+              }" @click="flowClick(index)">
                 <div class="head">{{ item.remark }}</div>
                 <div class="content">
                   <!-- 瀹℃壒 -->
                   <template v-if="item.type == 0">
                     <template v-if="item.memberType == '0'">
-                    <div>琚浜�</div>
-                  </template>
+                      <div>琚浜�</div>
+                    </template>
                     <template v-if="item.memberType == '2'">
                       <div>閮ㄩ棬涓荤</div>
                     </template>
                     <template v-if="item.memberType == '1'">
                       <div v-if="item.objIds && item.objIds.length === 1">
-                        <span
-                          >{{ item.objIds[0].name }}
-                          {{ item.objIds[0].companyName }}</span
-                        >
+                        <span>{{ item.objIds[0].name }}
+                          {{ item.objIds[0].companyName }}</span>
                         <span v-if="item.approveType == 0 && item.type == '0'">
-                          鎴栫</span
-                        >
+                          鎴栫</span>
                         <span v-if="item.approveType == 1 && item.type == '0'">
-                          浼氱</span
-                        >
+                          浼氱</span>
                       </div>
                       <div v-else-if="item.objIds && item.objIds.length > 1">
                         <span>{{ item.objIds[0].name }} 绛�</span>
                         <span v-if="item.approveType == 0 && item.type == '0'">
-                          鎴栫</span
-                        >
+                          鎴栫</span>
                         <span v-if="item.approveType == 1 && item.type == '0'">
-                          浼氱</span
-                        >
+                          浼氱</span>
                       </div>
                       <div v-else>璇烽�夋嫨</div>
                       <i class="el-icon-arrow-right"></i>
@@ -67,19 +57,14 @@
                   <!-- 鎶勯�� -->
                   <template v-if="item.type == 1">
                     <div v-if="item.objIds && item.objIds.length === 1">
-                        <span
-                          >{{ item.objIds[0].name }}
-                          {{ item.objIds[0].companyName }}</span
-                        >
-                      </div>
-                      <div v-else-if="item.objIds && item.objIds.length > 1">
-                        <span>{{ item.objIds[0].name }} 绛�</span>
-                      </div>
-                      <div v-else>璇烽�夋嫨</div>
-                    <i
-                      v-if="item.memberType == '1'"
-                      class="el-icon-arrow-right"
-                    ></i>
+                      <span>{{ item.objIds[0].name }}
+                        {{ item.objIds[0].companyName }}</span>
+                    </div>
+                    <div v-else-if="item.objIds && item.objIds.length > 1">
+                      <span>{{ item.objIds[0].name }} 绛�</span>
+                    </div>
+                    <div v-else>璇烽�夋嫨</div>
+                    <i v-if="item.memberType == '1'" class="el-icon-arrow-right"></i>
                   </template>
                 </div>
               </div>
@@ -88,11 +73,7 @@
                   <div class="line"></div>
                   <img src="@/assets/images/peizhi_ar@2x.png" alt="" />
                 </template>
-                <i
-                  v-if="apprList.length - 2 === index"
-                  @click="handleAddAppr()"
-                  class="el-icon-circle-plus add"
-                ></i>
+                <i v-if="apprList.length - 2 === index" @click="handleAddAppr()" class="el-icon-circle-plus add"></i>
               </div>
             </div>
           </div>
@@ -102,118 +83,74 @@
             <div class="config_data_item_label">閫夋嫨璇ヨ妭鐐圭殑瀹℃壒浜�</div>
             <div class="df_ac mb10">
               <div>瀹℃壒鑺傜偣鍚嶇О</div>
-              <el-input
-                class="w200 ml10"
-                v-model="apprList[activeIndex].remark"
-              ></el-input>
+              <el-input class="w200 ml10" v-model="apprList[activeIndex].remark"></el-input>
             </div>
             <!-- 鎶勯�佷汉 -->
             <template v-if="apprList[activeIndex].type == '1'">
               <div class="config_data_item_reviewed_content">
-                <div
-                  v-for="mem, memIndex in apprList[activeIndex].objIds"
-                  :key="mem.id"
-                  class="config_data_item_reviewed_content_item"
-                >
+                <div v-for="mem, memIndex in apprList[activeIndex].objIds" :key="mem.id"
+                  class="config_data_item_reviewed_content_item">
                   <span>{{ mem.name }}</span>
                   <i @click="memDel(memIndex)" class="el-icon-close"></i>
                 </div>
                 <span class="add" @click="selStaff">+娣诲姞</span>
               </div>
             </template>
-            <el-radio-group
-              v-if="apprList[activeIndex].type == '0'"
-              v-model="apprList[activeIndex].memberType"
-            >
+            <el-radio-group v-if="apprList[activeIndex].type == '0'" v-model="apprList[activeIndex].memberType">
               <el-radio :label="0">琚浜�</el-radio>
               <el-radio :label="1">鎸囧畾浜哄憳</el-radio>
               <el-radio :label="2">閮ㄩ棬涓荤</el-radio>
             </el-radio-group>
-            <div
-              class="config_data_item_reviewed"
-              v-if="apprList[activeIndex].memberType == 1"
-            >
+            <div class="config_data_item_reviewed" v-if="apprList[activeIndex].memberType == 1">
               <div class="config_data_item_reviewed_label">
                 <span>鎸囧畾瀹℃牳浜�</span>
                 <span>涓嶈秴杩�20浜�</span>
               </div>
               <div class="config_data_item_reviewed_content">
-                <div
-                  v-for="mem,memIndex in apprList[activeIndex].objIds"
-                  :key="mem.id"
-                  class="config_data_item_reviewed_content_item"
-                >
+                <div v-for="mem, memIndex in apprList[activeIndex].objIds" :key="mem.id"
+                  class="config_data_item_reviewed_content_item">
                   <span>{{ mem.name }}</span>
                   <i class="el-icon-close" @click="memDel(memIndex)"></i>
                 </div>
                 <span class="add" @click="selStaff">+娣诲姞</span>
               </div>
             </div>
-            <div
-              class="config_data_item_reviewed"
-              v-if="apprList[activeIndex].memberType == 2"
-            >
+            <div class="config_data_item_reviewed" v-if="apprList[activeIndex].memberType == 2">
               <div class="config_data_item_reviewed_label">
                 <span>閮ㄩ棬涓荤</span>
               </div>
               <div class="config_data_item_reviewed_r">
                 <span>琚浜虹殑</span>
-                <el-select
-                  v-model="apprList[activeIndex].objLevel"
-                  placeholder="璇烽�夋嫨"
-                  style="margin: 0 20px 0 10px"
-                >
+                <el-select v-model="apprList[activeIndex].objLevel" placeholder="璇烽�夋嫨" style="margin: 0 20px 0 10px">
                   <el-option label="鐩存帴涓荤" :value="0" />
                   <el-option label="浜岀骇涓荤" :value="1" />
                   <el-option label="涓夌骇涓荤" :value="2" />
                   <el-option label="鍥涚骇涓荤" :value="4" />
                 </el-select>
-                <el-checkbox
-                  v-model="apprList[activeIndex].noleaderOpt"
-                  :true-label="1"
-                  :false-label="0"
-                  >鎵句笉鍒颁富绠℃椂锛岀敱涓婄骇涓荤浠e鏍�</el-checkbox
-                >
+                <el-checkbox v-model="apprList[activeIndex].noleaderOpt" :true-label="1"
+                  :false-label="0">鎵句笉鍒颁富绠℃椂锛岀敱涓婄骇涓荤浠e鏍�</el-checkbox>
               </div>
             </div>
           </div>
-          <div
-            class="config_data_item"
-            v-if="
-              (apprList[activeIndex].memberType == 1 ||
-                apprList[activeIndex].memberType == 2) &&
-              apprList[activeIndex].type == '0'
-            "
-          >
+          <div class="config_data_item" v-if="
+            (apprList[activeIndex].memberType == 1 ||
+              apprList[activeIndex].memberType == 2) &&
+            apprList[activeIndex].type == '0'
+          ">
             <div class="config_data_item_label">
               瀹℃壒鏂瑰紡
               <span>瀹℃壒浜轰负澶氫釜鏃讹紝閲囩敤鐨勫鎵规柟寮�</span>
             </div>
-            <el-radio-group
-              v-model="apprList[activeIndex].approveType"
-              style="display: flex; flex-direction: column"
-            >
-              <el-radio :label="0" style="margin-bottom: 20px"
-                >鎴栫锛堝叾涓竴鍚嶅鎵逛汉鍚屾剰鎴栨嫆缁濆嵆鍙級</el-radio
-              >
+            <el-radio-group v-model="apprList[activeIndex].approveType" style="display: flex; flex-direction: column">
+              <el-radio :label="0" style="margin-bottom: 20px">鎴栫锛堝叾涓竴鍚嶅鎵逛汉鍚屾剰鎴栨嫆缁濆嵆鍙級</el-radio>
               <el-radio :label="1">浼氱锛堟墍鏈夊鎵逛汉閮藉悓鎰忔墠鍙�氳繃锛�</el-radio>
             </el-radio-group>
           </div>
           <div class="config_data_submit">
-            <el-button
-              @click="onSubmit"
-              :loading="subLoading"
-              style="background: #435ebe"
-              type="primary"
-              >淇濆瓨閰嶇疆椤�</el-button
-            >
-            <el-button
-              v-if="activeIndex !== 0 && activeIndex !== apprList.length - 1"
-              type="danger"
-              plain
-              @click="handleDel"
-              >鍒犻櫎鑺傜偣</el-button
-            >
+            <el-button @click="onSubmit" :loading="subLoading" style="background: #435ebe"
+              type="primary">淇濆瓨閰嶇疆椤�</el-button>
+            <el-button v-if="activeIndex !== 0 && activeIndex !== apprList.length - 1" type="danger" plain
+              @click="handleDel">鍒犻櫎鑺傜偣</el-button>
           </div>
         </div>
       </div>
@@ -222,41 +159,27 @@
     <el-dialog title="閫夋嫨鍛樺伐" :visible.sync="isShowTransfer" width="1000px">
       <div class="staff_modal">
         <div class="left">
-          <div
-            style="
+          <div style="
               width: 100%;
               height: 50px;
               background: rgba(242, 242, 242, 1);
               line-height: 50px;
               text-align: center;
               font-size: 14px;
-            "
-          >
+            ">
             浼佷笟缁勭粐鏋舵瀯
           </div>
-          <div style="width: 100%; height: 100%; overflow-y: scroll">
-            <Tree
-              :list="companyTree"
-              :defaultProps="{
-                name: 'name',
-                status: 'fsStatus',
-                children: 'childList',
-                id: 'id',
-              }"
-              @callback="callback"
-            />
+          <div style="width: 100%; max-height: 560px; overflow-y: scroll">
+            <Tree :list="companyTree" :defaultProps="{
+              name: 'name',
+              status: 'fsStatus',
+              children: 'childList',
+              id: 'id',
+            }" @callback="callback" />
           </div>
         </div>
-        <el-transfer
-          filterable
-          :title="['鏈��', '宸查��']"
-          openAll
-          :props="{ label: 'name', key: 'keyTemp' }"
-          filter-placeholder="鎼滅储鍛樺伐"
-          v-model="searchForm.objIds"
-          :data="memberList"
-          class="transfer"
-        >
+        <el-transfer filterable :title="['鏈��', '宸查��']" openAll :props="{ label: 'name', key: 'keyTemp' }"
+          filter-placeholder="鎼滅储鍛樺伐" v-model="searchForm.objIds" :data="memberList" class="transfer">
         </el-transfer>
       </div>
       <span slot="footer" class="dialog-footer">
@@ -280,7 +203,7 @@
     TableLayout,
     Tree
   },
-  data () {
+  data() {
     return {
       activeType: '0',
       subLoading: false,
@@ -297,12 +220,12 @@
       companyTree: []
     }
   },
-  created () {
+  created() {
     this.getfindCompanyTreePage()
     this.initDate()
   },
   methods: {
-    handleClick () {
+    handleClick() {
       this.apprList = []
       const arr = [
         { remark: '瀹℃壒浜�', active: false, type: 0, objIds: [] },
@@ -311,12 +234,12 @@
       this.apprList = [...arr]
       this.initDate()
     },
-    flowClick (i) {
+    flowClick(i) {
       this.activeIndex = i
       this.apprList.forEach((item, index) => {
         if (i === index) {
           item.active = true
-          console.log("====================",item.objIds)
+          console.log("====================", item.objIds)
           if (item.objIds && item.objIds.length > 0) {
             const objIds = item.objIds.map(i => {
               return `${i.id}-${i.name}${i.companyName ? '-' + i.companyName : ''}`
@@ -330,7 +253,7 @@
         }
       })
     },
-    initDate () {
+    initDate() {
       const { activeType } = this
       approveTemplByType(activeType).then(res => {
         if (res && res.paramList) {
@@ -344,7 +267,7 @@
                   companyName: i.companyName
                 }
               })
-            }else{
+            } else {
               item.objIds = []
             }
           })
@@ -356,7 +279,7 @@
         // console.log(res);
       })
     },
-    onSubmit () {
+    onSubmit() {
       const { apprList, activeType } = this
       const temp = JSON.parse(JSON.stringify(apprList))
       temp.forEach((item, index) => {
@@ -378,18 +301,18 @@
         this.subLoading = false
       })
     },
-    handleDel () {
+    handleDel() {
       const { activeIndex } = this
       this.apprList.splice(activeIndex, 1)
       this.activeIndex = 0
     },
-    handleAddAppr () {
-      this.apprList.splice(this.apprList.length - 1, 0, { remark: '瀹℃壒浜�',approveType: 0, active: false, type: 0, objIds: [] })
+    handleAddAppr() {
+      this.apprList.splice(this.apprList.length - 1, 0, { remark: '瀹℃壒浜�', approveType: 0, active: false, type: 0, objIds: [] })
       // this.apprList.push({ remark: '瀹℃壒浜�', active: false, type: '0' })
     },
 
     // 鑾峰彇缁勭粐鏍�
-    getfindCompanyTreePage () {
+    getfindCompanyTreePage() {
       fetchList()
         .then(res => {
           if (res && res.length > 0) {
@@ -401,7 +324,7 @@
           }
         })
     },
-    getMemberList () {
+    getMemberList() {
       memberListPost({
         model: {
           companyId: this.searchForm.companyId || '',
@@ -410,11 +333,11 @@
           erpOrgId: '',
           hasFace: '',
           hkStatus: '',
-          includeChild: false,
+          includeChild: true,
           type: 2
         },
         page: 1,
-        capacity: 30
+        capacity: 300
       }).then(res => {
         this.memberList = res.records || []
         this.memberList.forEach(item => {
@@ -423,13 +346,13 @@
         // console.log('defaultProps', res)
       })
     },
-    callback (row) {
+    callback(row) {
       console.log(row)
       this.$set(this.searchForm, 'companyId', row.id)
       this.$set(this.searchForm, 'erpOrgId', row.erpId)
       this.getMemberList()
     },
-    TransferSub () {
+    TransferSub() {
       const { activeIndex } = this
       if (this.searchForm.objIds && this.searchForm.objIds.length > 0) {
         if (this.searchForm.objIds.length > 20) return this.$message.warning('鏈�澶氶�夋嫨20浜�')
@@ -450,7 +373,7 @@
       this.isShowTransfer = false
       console.log(this.searchForm.objIds)
     },
-    memDel (memIndex) {
+    memDel(memIndex) {
       const { activeIndex } = this
       this.apprList.forEach((item, index) => {
         if (activeIndex === index) {
@@ -462,11 +385,11 @@
         }
       })
     },
-    selStaff () {
+    selStaff() {
       this.isShowTransfer = true
       this.getMemberList()
     },
-    seleItem (i) {
+    seleItem(i) {
       this.list.forEach((item, index) => {
         item.active = index === i
       })
@@ -484,6 +407,7 @@
   display: flex;
   align-items: center;
   justify-content: space-between;
+
   .config_list {
     width: 543px;
     height: 100%;
@@ -493,18 +417,21 @@
     box-sizing: border-box;
     border: 1px solid #eeeeee;
     background: #f7f7f7;
+
     .config_list_head {
       width: 100%;
       height: 40px;
       display: flex;
       align-items: center;
       justify-content: space-between;
+
       span {
         font-size: 18px;
         font-weight: 500;
         color: #222222;
       }
     }
+
     .config_content {
       width: 100%;
       height: calc(100% - 40px);
@@ -514,28 +441,35 @@
       display: flex;
       align-items: center;
       flex-direction: column;
+
       &::-webkit-scrollbar {
         width: 0;
       }
+
       .active {
         border: 2px solid #4456ac !important;
       }
+
       .yellow {
         background: #e89e42 !important;
       }
+
       .blue {
         background: #5094f3 !important;
       }
+
       .arrows {
         display: flex;
         flex-direction: column;
         align-items: center;
         position: relative;
+
         .line {
           width: 1px;
           height: 60px;
           background-color: #ccc;
         }
+
         .add {
           font-size: 40px;
           color: #2080f7;
@@ -544,10 +478,12 @@
           z-index: 999;
           top: 10px;
         }
+
         img {
           width: 12px;
         }
       }
+
       .item {
         width: 200px;
         cursor: pointer;
@@ -558,12 +494,14 @@
         position: relative;
         display: flex;
         flex-direction: column;
+
         .head {
           height: 32px;
           line-height: 32px;
           padding: 2px 12px;
           color: #fff;
         }
+
         .content {
           flex: 1;
           background-color: #fff;
@@ -572,32 +510,39 @@
           padding: 0 12px;
           justify-content: space-between;
         }
+
         &:last-child {
           margin: 0 !important;
         }
       }
     }
   }
+
   .config_data {
     flex: 1;
     height: 100%;
     margin-left: 20px;
+
     .config_data_submit {
       margin-top: 50px;
     }
+
     .config_data_item {
       width: 100%;
       display: flex;
       flex-direction: column;
       margin-bottom: 30px;
+
       &:last-child {
         margin: 0 !important;
       }
+
       .config_data_item_label {
         font-size: 16px;
         font-weight: 500;
         color: #222222;
         margin-bottom: 20px;
+
         span {
           font-size: 12px;
           font-weight: 400;
@@ -605,14 +550,17 @@
           margin-left: 10px;
         }
       }
+
       .config_data_item_reviewed {
         width: 100%;
         margin-top: 20px;
+
         .config_data_item_reviewed_r {
           margin-top: 10px;
           width: 100%;
           display: flex;
           align-items: center;
+
           span {
             flex-shrink: 0;
             font-size: 14px;
@@ -620,15 +568,18 @@
             color: #666666;
           }
         }
+
         .config_data_item_reviewed_label {
           display: flex;
           align-items: center;
+
           span {
             &:nth-child(1) {
               font-size: 14px;
               font-weight: 400;
               color: #222222;
             }
+
             &:nth-child(2) {
               font-size: 12px;
               font-weight: 400;
@@ -641,6 +592,7 @@
     }
   }
 }
+
 .config_data_item_reviewed_content {
   width: 400px;
   margin-top: 10px;
@@ -652,6 +604,7 @@
   display: flex;
   align-items: flex-start;
   flex-wrap: wrap;
+
   .add {
     font-size: 12px;
     font-weight: 400;
@@ -659,6 +612,7 @@
     cursor: pointer;
     margin-top: 3px;
   }
+
   .config_data_item_reviewed_content_item {
     padding: 3px 5px;
     background: #f4f7fc;
@@ -666,11 +620,13 @@
     box-sizing: border-box;
     margin-right: 10px;
     margin-bottom: 10px;
+
     span {
       font-size: 12px;
       font-weight: 400;
       color: #333333;
     }
+
     i {
       color: #949ba2;
       margin-left: 10px;
@@ -678,22 +634,27 @@
     }
   }
 }
+
 .staff_modal {
   display: flex;
+
   .left {
     width: 300px;
     margin-right: 20px;
   }
+
   .transfer {
     height: 600px;
     width: 100%;
     display: flex;
     justify-content: center;
     align-items: center;
-    ::v-deep .el-transfer-panel{
+
+    ::v-deep .el-transfer-panel {
       flex: 1;
       height: 100%;
     }
+
     ::v-deep .el-transfer-panel__body {
       height: 500px;
     }
diff --git a/admin/src/views/business/approvalReport.vue b/admin/src/views/business/approvalReport.vue
index 0ce20bd..d37953a 100644
--- a/admin/src/views/business/approvalReport.vue
+++ b/admin/src/views/business/approvalReport.vue
@@ -9,52 +9,42 @@
           <div class="config_content">
             <div class="item">
               <div class="head">鍙戣捣浜�</div>
-              <div class="content">璁垮</div>
+              <div class="content">琚浜�</div>
             </div>
             <div class="arrows">
               <div class="line"></div>
               <img src="@/assets/images/peizhi_ar@2x.png" alt="" />
             </div>
             <div v-for="(item, index) in apprList" :key="index">
-              <div
-                class="item yellow"
-                :class="{
-                  active: activeIndex == index,
-                  blue: item.type == '1',
-                }"
-                @click="flowClick(index)"
-              >
+              <div class="item yellow" :class="{
+                active: activeIndex == index,
+                blue: item.type == '1',
+              }" @click="flowClick(index)">
                 <div class="head">{{ item.remark }}</div>
                 <div class="content">
                   <!-- 瀹℃壒 -->
                   <template v-if="item.type == 0">
                     <template v-if="item.memberType == '0'">
-                    <div>琚浜�</div>
-                  </template>
+                      <div>琚浜�</div>
+                    </template>
                     <template v-if="item.memberType == '2'">
                       <div>閮ㄩ棬涓荤</div>
                     </template>
                     <template v-if="item.memberType == '1'">
                       <div v-if="item.objIds && item.objIds.length === 1">
-                        <span
-                          >{{ item.objIds[0].name }}
-                          {{ item.objIds[0].companyName }}</span
-                        >
+                        <span>{{ item.objIds[0].name }}
+                          {{ item.objIds[0].companyName }}</span>
                         <span v-if="item.approveType == 0 && item.type == '0'">
-                          鎴栫</span
-                        >
+                          鎴栫</span>
                         <span v-if="item.approveType == 1 && item.type == '0'">
-                          浼氱</span
-                        >
+                          浼氱</span>
                       </div>
                       <div v-else-if="item.objIds && item.objIds.length > 1">
                         <span>{{ item.objIds[0].name }} 绛�</span>
                         <span v-if="item.approveType == 0 && item.type == '0'">
-                          鎴栫</span
-                        >
+                          鎴栫</span>
                         <span v-if="item.approveType == 1 && item.type == '0'">
-                          浼氱</span
-                        >
+                          浼氱</span>
                       </div>
                       <div v-else>璇烽�夋嫨</div>
                       <i class="el-icon-arrow-right"></i>
@@ -63,19 +53,14 @@
                   <!-- 鎶勯�� -->
                   <template v-if="item.type == 1">
                     <div v-if="item.objIds && item.objIds.length === 1">
-                        <span
-                          >{{ item.objIds[0].name }}
-                          {{ item.objIds[0].companyName }}</span
-                        >
-                      </div>
-                      <div v-else-if="item.objIds && item.objIds.length > 1">
-                        <span>{{ item.objIds[0].name }} 绛�</span>
-                      </div>
-                      <div v-else>璇烽�夋嫨</div>
-                    <i
-                      v-if="item.memberType == '1'"
-                      class="el-icon-arrow-right"
-                    ></i>
+                      <span>{{ item.objIds[0].name }}
+                        {{ item.objIds[0].companyName }}</span>
+                    </div>
+                    <div v-else-if="item.objIds && item.objIds.length > 1">
+                      <span>{{ item.objIds[0].name }} 绛�</span>
+                    </div>
+                    <div v-else>璇烽�夋嫨</div>
+                    <i v-if="item.memberType == '1'" class="el-icon-arrow-right"></i>
                   </template>
                 </div>
               </div>
@@ -84,11 +69,7 @@
                   <div class="line"></div>
                   <img src="@/assets/images/peizhi_ar@2x.png" alt="" />
                 </template>
-                <i
-                  v-if="apprList.length - 2 === index"
-                  @click="handleAddAppr()"
-                  class="el-icon-circle-plus add"
-                ></i>
+                <i v-if="apprList.length - 2 === index" @click="handleAddAppr()" class="el-icon-circle-plus add"></i>
               </div>
             </div>
           </div>
@@ -98,118 +79,74 @@
             <div class="config_data_item_label">閫夋嫨璇ヨ妭鐐圭殑瀹℃壒浜�</div>
             <div class="df_ac mb10">
               <div>瀹℃壒鑺傜偣鍚嶇О</div>
-              <el-input
-                class="w200 ml10"
-                v-model="apprList[activeIndex].remark"
-              ></el-input>
+              <el-input class="w200 ml10" v-model="apprList[activeIndex].remark"></el-input>
             </div>
             <!-- 鎶勯�佷汉 -->
             <template v-if="apprList[activeIndex].type == '1'">
               <div class="config_data_item_reviewed_content">
-                <div
-                  v-for="mem,memIndex in apprList[activeIndex].objIds"
-                  :key="mem.id"
-                  class="config_data_item_reviewed_content_item"
-                >
+                <div v-for="mem, memIndex in apprList[activeIndex].objIds" :key="mem.id"
+                  class="config_data_item_reviewed_content_item">
                   <span>{{ mem.name }}</span>
                   <i @click="memDel(memIndex)" class="el-icon-close"></i>
                 </div>
                 <span class="add" @click="selStaff">+娣诲姞</span>
               </div>
             </template>
-            <el-radio-group
-              v-if="apprList[activeIndex].type == '0'"
-              v-model="apprList[activeIndex].memberType"
-            >
+            <el-radio-group v-if="apprList[activeIndex].type == '0'" v-model="apprList[activeIndex].memberType">
               <el-radio :label="0">琚浜�</el-radio>
               <el-radio :label="1">鎸囧畾浜哄憳</el-radio>
               <el-radio :label="2">閮ㄩ棬涓荤</el-radio>
             </el-radio-group>
-            <div
-              class="config_data_item_reviewed"
-              v-if="apprList[activeIndex].memberType == 1"
-            >
+            <div class="config_data_item_reviewed" v-if="apprList[activeIndex].memberType == 1">
               <div class="config_data_item_reviewed_label">
                 <span>鎸囧畾瀹℃牳浜�</span>
                 <span>涓嶈秴杩�20浜�</span>
               </div>
               <div class="config_data_item_reviewed_content">
-                <div
-                  v-for="(mem, memIndex) in apprList[activeIndex].objIds"
-                  :key="mem.id"
-                  class="config_data_item_reviewed_content_item"
-                >
+                <div v-for="(mem, memIndex) in apprList[activeIndex].objIds" :key="mem.id"
+                  class="config_data_item_reviewed_content_item">
                   <span>{{ mem.name }}</span>
                   <i class="el-icon-close" @click="memDel(memIndex)"></i>
                 </div>
                 <span class="add" @click="selStaff">+娣诲姞</span>
               </div>
             </div>
-            <div
-              class="config_data_item_reviewed"
-              v-if="apprList[activeIndex].memberType == 2"
-            >
+            <div class="config_data_item_reviewed" v-if="apprList[activeIndex].memberType == 2">
               <div class="config_data_item_reviewed_label">
                 <span>閮ㄩ棬涓荤</span>
               </div>
               <div class="config_data_item_reviewed_r">
                 <span>琚浜虹殑</span>
-                <el-select
-                  v-model="apprList[activeIndex].objLevel"
-                  placeholder="璇烽�夋嫨"
-                  style="margin: 0 20px 0 10px"
-                >
+                <el-select v-model="apprList[activeIndex].objLevel" placeholder="璇烽�夋嫨" style="margin: 0 20px 0 10px">
                   <el-option label="鐩存帴涓荤" :value="0" />
                   <el-option label="浜岀骇涓荤" :value="1" />
                   <el-option label="涓夌骇涓荤" :value="2" />
                   <el-option label="鍥涚骇涓荤" :value="4" />
                 </el-select>
-                <el-checkbox
-                  v-model="apprList[activeIndex].noleaderOpt"
-                  :true-label="1"
-                  :false-label="0"
-                  >鎵句笉鍒颁富绠℃椂锛岀敱涓婄骇涓荤浠e鏍�</el-checkbox
-                >
+                <el-checkbox v-model="apprList[activeIndex].noleaderOpt" :true-label="1"
+                  :false-label="0">鎵句笉鍒颁富绠℃椂锛岀敱涓婄骇涓荤浠e鏍�</el-checkbox>
               </div>
             </div>
           </div>
-          <div
-            class="config_data_item"
-            v-if="
-              (apprList[activeIndex].memberType == 1 ||
-                apprList[activeIndex].memberType == 2) &&
-              apprList[activeIndex].type == '0'
-            "
-          >
+          <div class="config_data_item" v-if="
+            (apprList[activeIndex].memberType == 1 ||
+              apprList[activeIndex].memberType == 2) &&
+            apprList[activeIndex].type == '0'
+          ">
             <div class="config_data_item_label">
               瀹℃壒鏂瑰紡
               <span>瀹℃壒浜轰负澶氫釜鏃讹紝閲囩敤鐨勫鎵规柟寮�</span>
             </div>
-            <el-radio-group
-              v-model="apprList[activeIndex].approveType"
-              style="display: flex; flex-direction: column"
-            >
-              <el-radio :label="0" style="margin-bottom: 20px"
-                >鎴栫锛堝叾涓竴鍚嶅鎵逛汉鍚屾剰鎴栨嫆缁濆嵆鍙級</el-radio
-              >
+            <el-radio-group v-model="apprList[activeIndex].approveType" style="display: flex; flex-direction: column">
+              <el-radio :label="0" style="margin-bottom: 20px">鎴栫锛堝叾涓竴鍚嶅鎵逛汉鍚屾剰鎴栨嫆缁濆嵆鍙級</el-radio>
               <el-radio :label="1">浼氱锛堟墍鏈夊鎵逛汉閮藉悓鎰忔墠鍙�氳繃锛�</el-radio>
             </el-radio-group>
           </div>
           <div class="config_data_submit">
-            <el-button
-              @click="onSubmit"
-              :loading="subLoading"
-              style="background: #435ebe"
-              type="primary"
-              >淇濆瓨閰嶇疆椤�</el-button
-            >
-            <el-button
-              v-if="activeIndex !== 0 && activeIndex !== apprList.length - 1"
-              type="danger"
-              plain
-              @click="handleDel"
-              >鍒犻櫎鑺傜偣</el-button
-            >
+            <el-button @click="onSubmit" :loading="subLoading" style="background: #435ebe"
+              type="primary">淇濆瓨閰嶇疆椤�</el-button>
+            <el-button v-if="activeIndex !== 0 && activeIndex !== apprList.length - 1" type="danger" plain
+              @click="handleDel">鍒犻櫎鑺傜偣</el-button>
           </div>
         </div>
       </div>
@@ -218,41 +155,27 @@
     <el-dialog title="閫夋嫨鍛樺伐" :visible.sync="isShowTransfer" width="1000px">
       <div class="staff_modal">
         <div class="left">
-          <div
-            style="
+          <div style="
               width: 100%;
               height: 50px;
               background: rgba(242, 242, 242, 1);
               line-height: 50px;
               text-align: center;
               font-size: 14px;
-            "
-          >
+            ">
             浼佷笟缁勭粐鏋舵瀯
           </div>
-          <div style="width: 100%; height: 100%; overflow-y: scroll">
-            <Tree
-              :list="companyTree"
-              :defaultProps="{
-                name: 'name',
-                status: 'fsStatus',
-                children: 'childList',
-                id: 'id',
-              }"
-              @callback="callback"
-            />
+          <div style="width: 100%; max-height: 560px; overflow-y: scroll">
+            <Tree :list="companyTree" :defaultProps="{
+              name: 'name',
+              status: 'fsStatus',
+              children: 'childList',
+              id: 'id',
+            }" @callback="callback" />
           </div>
         </div>
-        <el-transfer
-          filterable
-          :title="['鏈��', '宸查��']"
-          openAll
-          :props="{ label: 'name', key: 'keyTemp' }"
-          filter-placeholder="鎼滅储鍛樺伐"
-          v-model="searchForm.objIds"
-          :data="memberList"
-          class="transfer"
-        >
+        <el-transfer filterable :title="['鏈��', '宸查��']" openAll :props="{ label: 'name', key: 'keyTemp' }"
+          filter-placeholder="鎼滅储鍛樺伐" v-model="searchForm.objIds" :data="memberList" class="transfer">
         </el-transfer>
       </div>
       <span slot="footer" class="dialog-footer">
@@ -276,7 +199,7 @@
     TableLayout,
     Tree
   },
-  data () {
+  data() {
     return {
       activeType: '2',
       subLoading: false,
@@ -293,12 +216,12 @@
       companyTree: []
     }
   },
-  created () {
+  created() {
     this.getfindCompanyTreePage()
     this.initDate()
   },
   methods: {
-    flowClick (i) {
+    flowClick(i) {
       this.activeIndex = i
       this.apprList.forEach((item, index) => {
         if (i === index) {
@@ -316,7 +239,7 @@
         }
       })
     },
-    initDate () {
+    initDate() {
       const { activeType } = this
       approveTemplByType(activeType).then(res => {
         if (res && res.paramList) {
@@ -330,7 +253,7 @@
                   companyName: i.companyName
                 }
               })
-            }else{
+            } else {
               item.objIds = []
             }
           })
@@ -342,7 +265,7 @@
         // console.log(res);
       })
     },
-    onSubmit () {
+    onSubmit() {
       const { apprList, activeType } = this
       const temp = JSON.parse(JSON.stringify(apprList))
       temp.forEach((item, index) => {
@@ -364,18 +287,18 @@
         this.subLoading = false
       })
     },
-    handleDel () {
+    handleDel() {
       const { activeIndex } = this
       this.apprList.splice(activeIndex, 1)
       this.activeIndex = 0
     },
-    handleAddAppr () {
-      this.apprList.splice(this.apprList.length - 2, 0, { remark: '瀹℃壒浜�',approveType: 0, active: false, type: 0, objIds: [] })
+    handleAddAppr() {
+      this.apprList.splice(this.apprList.length - 2, 0, { remark: '瀹℃壒浜�', approveType: 0, active: false, type: 0, objIds: [] })
       // this.apprList.push({ remark: '瀹℃壒浜�', active: false, type: '0' })
     },
 
     // 鑾峰彇缁勭粐鏍�
-    getfindCompanyTreePage () {
+    getfindCompanyTreePage() {
       fetchList()
         .then(res => {
           if (res && res.length > 0) {
@@ -387,7 +310,7 @@
           }
         })
     },
-    getMemberList () {
+    getMemberList() {
       memberListPost({
         model: {
           companyId: this.searchForm.companyId || '',
@@ -396,11 +319,11 @@
           erpOrgId: '',
           hasFace: '',
           hkStatus: '',
-          includeChild: false,
+          includeChild: true,
           type: 2
         },
         page: 1,
-        capacity: 30
+        capacity: 300
       }).then(res => {
         this.memberList = res.records || []
         this.memberList.forEach(item => {
@@ -409,13 +332,13 @@
         // console.log('defaultProps', res)
       })
     },
-    callback (row) {
+    callback(row) {
       console.log(row)
       this.$set(this.searchForm, 'companyId', row.id)
       this.$set(this.searchForm, 'erpOrgId', row.erpId)
       this.getMemberList()
     },
-    TransferSub () {
+    TransferSub() {
       const { activeIndex } = this
       if (this.searchForm.objIds && this.searchForm.objIds.length > 0) {
         if (this.searchForm.objIds.length > 20) return this.$message.warning('鏈�澶氶�夋嫨20浜�')
@@ -436,7 +359,7 @@
       this.isShowTransfer = false
       console.log(this.searchForm.objIds)
     },
-    memDel (memIndex) {
+    memDel(memIndex) {
       const { activeIndex } = this
       this.apprList.forEach((item, index) => {
         if (activeIndex === index) {
@@ -448,11 +371,11 @@
         }
       })
     },
-    selStaff () {
+    selStaff() {
       this.isShowTransfer = true
       this.getMemberList()
     },
-    seleItem (i) {
+    seleItem(i) {
       this.list.forEach((item, index) => {
         item.active = index === i
       })
@@ -470,6 +393,7 @@
   display: flex;
   align-items: center;
   justify-content: space-between;
+
   .config_list {
     width: 543px;
     height: 100%;
@@ -479,18 +403,21 @@
     box-sizing: border-box;
     border: 1px solid #eeeeee;
     background: #f7f7f7;
+
     .config_list_head {
       width: 100%;
       height: 40px;
       display: flex;
       align-items: center;
       justify-content: space-between;
+
       span {
         font-size: 18px;
         font-weight: 500;
         color: #222222;
       }
     }
+
     .config_content {
       width: 100%;
       height: calc(100% - 40px);
@@ -500,28 +427,35 @@
       display: flex;
       align-items: center;
       flex-direction: column;
+
       &::-webkit-scrollbar {
         width: 0;
       }
+
       .active {
         border: 2px solid #4456ac !important;
       }
+
       .yellow {
         background: #e89e42 !important;
       }
+
       .blue {
         background: #5094f3 !important;
       }
+
       .arrows {
         display: flex;
         flex-direction: column;
         align-items: center;
         position: relative;
+
         .line {
           width: 1px;
           height: 60px;
           background-color: #ccc;
         }
+
         .add {
           font-size: 40px;
           color: #2080f7;
@@ -530,10 +464,12 @@
           z-index: 999;
           top: 10px;
         }
+
         img {
           width: 12px;
         }
       }
+
       .item {
         width: 200px;
         cursor: pointer;
@@ -544,12 +480,14 @@
         position: relative;
         display: flex;
         flex-direction: column;
+
         .head {
           height: 32px;
           line-height: 32px;
           padding: 2px 12px;
           color: #fff;
         }
+
         .content {
           flex: 1;
           background-color: #fff;
@@ -558,32 +496,39 @@
           padding: 0 12px;
           justify-content: space-between;
         }
+
         &:last-child {
           margin: 0 !important;
         }
       }
     }
   }
+
   .config_data {
     flex: 1;
     height: 100%;
     margin-left: 20px;
+
     .config_data_submit {
       margin-top: 50px;
     }
+
     .config_data_item {
       width: 100%;
       display: flex;
       flex-direction: column;
       margin-bottom: 30px;
+
       &:last-child {
         margin: 0 !important;
       }
+
       .config_data_item_label {
         font-size: 16px;
         font-weight: 500;
         color: #222222;
         margin-bottom: 20px;
+
         span {
           font-size: 12px;
           font-weight: 400;
@@ -591,14 +536,17 @@
           margin-left: 10px;
         }
       }
+
       .config_data_item_reviewed {
         width: 100%;
         margin-top: 20px;
+
         .config_data_item_reviewed_r {
           margin-top: 10px;
           width: 100%;
           display: flex;
           align-items: center;
+
           span {
             flex-shrink: 0;
             font-size: 14px;
@@ -606,15 +554,18 @@
             color: #666666;
           }
         }
+
         .config_data_item_reviewed_label {
           display: flex;
           align-items: center;
+
           span {
             &:nth-child(1) {
               font-size: 14px;
               font-weight: 400;
               color: #222222;
             }
+
             &:nth-child(2) {
               font-size: 12px;
               font-weight: 400;
@@ -627,6 +578,7 @@
     }
   }
 }
+
 .config_data_item_reviewed_content {
   width: 400px;
   margin-top: 10px;
@@ -638,6 +590,7 @@
   display: flex;
   align-items: flex-start;
   flex-wrap: wrap;
+
   .add {
     font-size: 12px;
     font-weight: 400;
@@ -645,6 +598,7 @@
     cursor: pointer;
     margin-top: 3px;
   }
+
   .config_data_item_reviewed_content_item {
     padding: 3px 5px;
     background: #f4f7fc;
@@ -652,11 +606,13 @@
     box-sizing: border-box;
     margin-right: 10px;
     margin-bottom: 10px;
+
     span {
       font-size: 12px;
       font-weight: 400;
       color: #333333;
     }
+
     i {
       color: #949ba2;
       margin-left: 10px;
@@ -664,22 +620,27 @@
     }
   }
 }
+
 .staff_modal {
   display: flex;
+
   .left {
     width: 300px;
     margin-right: 20px;
   }
+
   .transfer {
     height: 600px;
     width: 100%;
     display: flex;
     justify-content: center;
     align-items: center;
-    ::v-deep .el-transfer-panel{
+
+    ::v-deep .el-transfer-panel {
       flex: 1;
       height: 100%;
     }
+
     ::v-deep .el-transfer-panel__body {
       height: 500px;
     }
diff --git a/admin/src/views/login.vue b/admin/src/views/login.vue
index 652081b..296a05e 100644
--- a/admin/src/views/login.vue
+++ b/admin/src/views/login.vue
@@ -6,39 +6,55 @@
         <div class="h3">鏅烘収鐗╂祦鍥尯瀹夋秷涓�浣撳寲绯荤粺</div>
       </div>
       <div class="form_wrap">
-        <!-- <div class="tabs">
-          <div class="tab active">
+        <div class="tabs">
+          <div class="tab" @click="tabClick('0')" :class="{ active: activeTab == '0' }">
             <div class="name">甯愬彿鐧诲綍</div>
             <div class="icon"></div>
           </div>
-          <div class="tab">
+          <div class="tab" @click="tabClick('1')" :class="{ active: activeTab == '1' }">
             <div class="name">鎵嬫満鐧诲綍</div>
             <div class="icon"></div>
           </div>
-        </div> -->
-        <div class="df_ac">
-          <div class="label">甯愬彿</div>
-          <div class="line">
-            <el-input v-model="username" placeholder="璇疯緭鍏ュ笎鍙�" maxlength="50" v-trim />
-          </div>
         </div>
-        <div class="df_ac">
-          <div class="label">瀵嗙爜</div>
-          <div class="line">
-            <el-input v-model="password" placeholder="璇疯緭鍏ュ瘑鐮�" type="password" maxlength="30" show-password />
+        <template v-if="activeTab == '0'">
+          <div class="df_ac">
+            <div class="label">甯愬彿</div>
+            <div class="line">
+              <el-input v-model="username" placeholder="璇疯緭鍏ュ笎鍙�" maxlength="50" v-trim />
+            </div>
           </div>
-        </div>
+          <div class="df_ac">
+            <div class="label">瀵嗙爜</div>
+            <div class="line">
+              <el-input v-model="password" placeholder="璇疯緭鍏ュ瘑鐮�" type="password" maxlength="30" show-password />
+            </div>
+          </div>
+          <div class="df_ac">
+            <div class="label">楠岃瘉鐮�</div>
+            <div class="line">
+              <el-input v-model="captcha.value" placeholder="璇疯緭鍏ラ獙璇佺爜" maxlength="4" @keypress.enter.native="login" />
+              <img v-if="!captcha.loading" class="code_image" :src="captcha.uri" @click="refreshCaptcha">
+              <span v-else><i class="el-icon-loading"></i></span>
+            </div>
+          </div>
+        </template>
+        <template v-if="activeTab == '1'">
+          <div class="df_ac">
+            <div class="label">鎵嬫満鍙�</div>
+            <div class="line">
+              <el-input v-model="password" placeholder="璇疯緭鍏ユ墜鏈哄彿" type="password" maxlength="30" show-password />
+            </div>
+          </div>
+          <div class="df_ac">
+            <div class="label">楠岃瘉鐮�</div>
+            <div class="line">
+              <el-input v-model="captcha.value" placeholder="璇疯緭鍏ラ獙璇佺爜" maxlength="4" @keypress.enter.native="login" />
+              <span class="code_get" @click="getCode">鑾峰彇楠岃瘉鐮�</span>
+            </div>
+          </div>
+        </template>
 
-        <div class="df_ac">
-          <div class="label">楠岃瘉鐮�</div>
-          <div class="line">
-            <el-input v-model="captcha.value" placeholder="璇疯緭鍏ラ獙璇佺爜" maxlength="4" @keypress.enter.native="login" />
-            <img v-if="!captcha.loading" class="code_image" :src="captcha.uri" @click="refreshCaptcha">
-            <span v-else><i class="el-icon-loading"></i></span>
-          </div>
-        </div>
-        <el-button :loading="loading" type="primary" class="login_btn"
-          @click.native.prevent="login">绔嬪嵆鐧诲綍</el-button>
+        <el-button :loading="loading" type="primary" class="login_btn" @click.native.prevent="login">绔嬪嵆鐧诲綍</el-button>
         <div class="btn_wrap">
           <el-checkbox v-model="isRemPsd">
             <span style="font-size: 13px; font-weight: 400" class="placeholder9">璁颁綇瀵嗙爜</span>
@@ -66,6 +82,7 @@
       isRemPsd: false,
       username: '',
       password: '',
+      activeTab: '0',
       // 楠岃瘉鐮�
       captcha: {
         loading: false,
@@ -120,6 +137,13 @@
         .finally(() => {
           this.loading = false
         })
+    },
+    getCode() {
+      console.log('getCode');
+      
+    },
+    tabClick(val) {
+      this.activeTab = val
     },
     // 鍒锋柊楠岃瘉鐮�
     refreshCaptcha() {
@@ -221,7 +245,7 @@
       background-color: #fff;
       box-sizing: border-box;
       /* padding: 50px 80px 20px; */
-      padding: 80px 80px 20px;
+      padding: 50px 80px 20px;
       position: relative;
 
       .tabs {
@@ -236,6 +260,7 @@
           flex-direction: column;
           justify-content: center;
           align-items: center;
+          cursor: pointer;
 
           .icon {
             width: 36px;
@@ -287,10 +312,11 @@
         margin-bottom: 17px;
         display: flex;
         width: 100%;
-
+        align-items: center;
+        position: relative;
         .el-input {
           height: 40px;
-
+          flex: 1;
           // font-size: 14px;
           ::v-deep .el-input__inner {
             height: 40px !important;
@@ -301,6 +327,17 @@
           width: 100px;
           margin-left: 10px;
         }
+        .code_get{
+          position: absolute;
+          top: 10px;
+          right: 10px;
+          font-size: 14px;
+          width: 72px;
+          z-index: 11;
+          margin-left: 10px;
+          cursor: pointer;
+          color: $primary-color;
+        }
       }
 
       .forget {
diff --git a/admin/src/views/meeting/components/OperaBookingsWindow.vue b/admin/src/views/meeting/components/OperaBookingsWindow.vue
index 2d9a785..3f5b2c7 100644
--- a/admin/src/views/meeting/components/OperaBookingsWindow.vue
+++ b/admin/src/views/meeting/components/OperaBookingsWindow.vue
@@ -466,7 +466,6 @@
   .time-item {
     margin-right: 8px;
     margin-bottom: 8px;
-    border: #cccccc solid 1px;
     font-size: 14px;
     font-weight: 400;
     line-height: 14px;
@@ -477,6 +476,8 @@
     align-items: center;
     border-radius: 5px;
     color: #111;
+    border: #cccccc solid 1px;
+    cursor: pointer;
   }
   .time-item-sel {
     border-color: $primary-color;
diff --git a/admin/src/views/operation/serviceCar/apprConfig.vue b/admin/src/views/operation/serviceCar/apprConfig.vue
index 53a5e9c..e0bb8c7 100644
--- a/admin/src/views/operation/serviceCar/apprConfig.vue
+++ b/admin/src/views/operation/serviceCar/apprConfig.vue
@@ -20,14 +20,10 @@
               <img src="@/assets/images/peizhi_ar@2x.png" alt="" />
             </div>
             <div v-for="(item, index) in apprList" :key="index">
-              <div
-                class="item yellow"
-                :class="{
-                  active: activeIndex == index,
-                  blue: item.type == '1',
-                }"
-                @click="flowClick(index)"
-              >
+              <div class="item yellow" :class="{
+                active: activeIndex == index,
+                blue: item.type == '1',
+              }" @click="flowClick(index)">
                 <div class="head">{{ item.remark }}</div>
                 <div class="content">
                   <!-- 瀹℃壒 -->
@@ -37,25 +33,19 @@
                     </template>
                     <template v-if="item.memberType == '1'">
                       <div v-if="item.objIds && item.objIds.length === 1">
-                        <span
-                          >{{ item.objIds[0].name }}
-                          {{ item.objIds[0].companyName }}</span
-                        >
+                        <span>{{ item.objIds[0].name }}
+                          {{ item.objIds[0].companyName }}</span>
                         <span v-if="item.approveType == 0 && item.type == '0'">
-                          鎴栫</span
-                        >
+                          鎴栫</span>
                         <span v-if="item.approveType == 1 && item.type == '0'">
-                          浼氱</span
-                        >
+                          浼氱</span>
                       </div>
                       <div v-else-if="item.objIds && item.objIds.length > 1">
                         <span>{{ item.objIds[0].name }} 绛�</span>
                         <span v-if="item.approveType == 0 && item.type == '0'">
-                          鎴栫</span
-                        >
+                          鎴栫</span>
                         <span v-if="item.approveType == 1 && item.type == '0'">
-                          浼氱</span
-                        >
+                          浼氱</span>
                       </div>
                       <div v-else>璇烽�夋嫨</div>
                       <i class="el-icon-arrow-right"></i>
@@ -64,19 +54,14 @@
                   <!-- 鎶勯�� -->
                   <template v-if="item.type == 1">
                     <div v-if="item.objIds && item.objIds.length === 1">
-                        <span
-                          >{{ item.objIds[0].name }}
-                          {{ item.objIds[0].companyName }}</span
-                        >
-                      </div>
-                      <div v-else-if="item.objIds && item.objIds.length > 1">
-                        <span>{{ item.objIds[0].name }} 绛�</span>
-                      </div>
-                      <div v-else>璇烽�夋嫨</div>
-                    <i
-                      v-if="item.memberType == '1'"
-                      class="el-icon-arrow-right"
-                    ></i>
+                      <span>{{ item.objIds[0].name }}
+                        {{ item.objIds[0].companyName }}</span>
+                    </div>
+                    <div v-else-if="item.objIds && item.objIds.length > 1">
+                      <span>{{ item.objIds[0].name }} 绛�</span>
+                    </div>
+                    <div v-else>璇烽�夋嫨</div>
+                    <i v-if="item.memberType == '1'" class="el-icon-arrow-right"></i>
                   </template>
                 </div>
               </div>
@@ -85,11 +70,7 @@
                   <div class="line"></div>
                   <img src="@/assets/images/peizhi_ar@2x.png" alt="" />
                 </template>
-                <i
-                  v-if="apprList.length - 2 === index"
-                  @click="handleAddAppr()"
-                  class="el-icon-circle-plus add"
-                ></i>
+                <i v-if="apprList.length - 2 === index" @click="handleAddAppr()" class="el-icon-circle-plus add"></i>
               </div>
             </div>
           </div>
@@ -99,127 +80,79 @@
             <div class="config_data_item_label">閫夋嫨璇ヨ妭鐐圭殑瀹℃壒浜�</div>
             <div class="df_ac mb10">
               <div>瀹℃壒鑺傜偣鍚嶇О</div>
-              <el-input
-                class="w200 ml10"
-                v-model="apprList[activeIndex].remark"
-              ></el-input>
+              <el-input class="w200 ml10" v-model="apprList[activeIndex].remark"></el-input>
             </div>
             <!-- 鎶勯�佷汉 -->
             <template v-if="apprList[activeIndex].type == '1'">
               <div class="config_data_item_reviewed_content">
-                <div
-                  v-for="mem, memIndex in apprList[activeIndex].objIds"
-                  :key="mem.id"
-                  class="config_data_item_reviewed_content_item"
-                >
+                <div v-for="mem, memIndex in apprList[activeIndex].objIds" :key="mem.id"
+                  class="config_data_item_reviewed_content_item">
                   <span>{{ mem.name }}</span>
                   <i @click="memDel(memIndex)" class="el-icon-close"></i>
                 </div>
                 <span class="add" @click="selStaff">+娣诲姞</span>
               </div>
             </template>
-            <el-radio-group
-              v-if="apprList[activeIndex].type == '0'"
-              v-model="apprList[activeIndex].memberType"
-            >
+            <el-radio-group v-if="apprList[activeIndex].type == '0'" v-model="apprList[activeIndex].memberType">
               <!-- <el-radio :label="0">琚浜�</el-radio> -->
               <el-radio :label="1">鎸囧畾浜哄憳</el-radio>
               <el-radio :label="2">閮ㄩ棬涓荤</el-radio>
             </el-radio-group>
-            <div
-              class="config_data_item_reviewed"
-              v-if="apprList[activeIndex].memberType == 1"
-            >
+            <div class="config_data_item_reviewed" v-if="apprList[activeIndex].memberType == 1">
               <div class="config_data_item_reviewed_label">
                 <span>鎸囧畾瀹℃牳浜�</span>
                 <span>涓嶈秴杩�20浜�</span>
               </div>
               <div class="config_data_item_reviewed_content">
-                <div
-                  v-for="(mem, memIndex) in apprList[activeIndex].objIds"
-                  :key="mem.id"
-                  class="config_data_item_reviewed_content_item"
-                >
+                <div v-for="(mem, memIndex) in apprList[activeIndex].objIds" :key="mem.id"
+                  class="config_data_item_reviewed_content_item">
                   <span>{{ mem.name }}</span>
                   <i class="el-icon-close" @click="memDel(memIndex)"></i>
                 </div>
                 <span class="add" @click="selStaff">+娣诲姞</span>
               </div>
             </div>
-            <div
-              class="config_data_item_reviewed"
-              v-if="apprList[activeIndex].memberType == 2"
-            >
+            <div class="config_data_item_reviewed" v-if="apprList[activeIndex].memberType == 2">
               <div class="config_data_item_reviewed_label">
                 <span>閮ㄩ棬涓荤</span>
               </div>
               <div class="config_data_item_reviewed_r">
                 <span>鐢宠浜虹殑</span>
-                <el-select
-                  v-model="apprList[activeIndex].objLevel"
-                  placeholder="璇烽�夋嫨"
-                  style="margin: 0 20px 0 10px"
-                >
+                <el-select v-model="apprList[activeIndex].objLevel" placeholder="璇烽�夋嫨" style="margin: 0 20px 0 10px">
                   <el-option label="鐩存帴涓荤" :value="0" />
                   <el-option label="浜岀骇涓荤" :value="1" />
                   <el-option label="涓夌骇涓荤" :value="2" />
                   <el-option label="鍥涚骇涓荤" :value="4" />
                 </el-select>
-                <el-checkbox
-                  v-model="apprList[activeIndex].noleaderOpt"
-                  :true-label="1"
-                  :false-label="0"
-                  >鎵句笉鍒颁富绠℃椂锛岀敱涓婄骇涓荤浠e鏍�</el-checkbox
-                >
+                <el-checkbox v-model="apprList[activeIndex].noleaderOpt" :true-label="1"
+                  :false-label="0">鎵句笉鍒颁富绠℃椂锛岀敱涓婄骇涓荤浠e鏍�</el-checkbox>
               </div>
             </div>
           </div>
-          <div
-            class="config_data_item"
-            v-if="
-              (apprList[activeIndex].memberType == 1 ||
-                apprList[activeIndex].memberType == 2) &&
-              apprList[activeIndex].type == '0'
-            "
-          >
+          <div class="config_data_item" v-if="
+            (apprList[activeIndex].memberType == 1 ||
+              apprList[activeIndex].memberType == 2) &&
+            apprList[activeIndex].type == '0'
+          ">
             <div class="config_data_item_label">
               瀹℃壒鏂瑰紡
               <span>瀹℃壒浜轰负澶氫釜鏃讹紝閲囩敤鐨勫鎵规柟寮�</span>
             </div>
-            <el-radio-group
-              v-model="apprList[activeIndex].approveType"
-              style="display: flex; flex-direction: column"
-            >
-              <el-radio :label="0" style="margin-bottom: 20px"
-                >鎴栫锛堝叾涓竴鍚嶅鎵逛汉鍚屾剰鎴栨嫆缁濆嵆鍙級</el-radio
-              >
+            <el-radio-group v-model="apprList[activeIndex].approveType" style="display: flex; flex-direction: column">
+              <el-radio :label="0" style="margin-bottom: 20px">鎴栫锛堝叾涓竴鍚嶅鎵逛汉鍚屾剰鎴栨嫆缁濆嵆鍙級</el-radio>
               <el-radio :label="1">浼氱锛堟墍鏈夊鎵逛汉閮藉悓鎰忔墠鍙�氳繃锛�</el-radio>
             </el-radio-group>
           </div>
           <div v-if="apprList[activeIndex].type == '0'" class="df_ac mb10">
             <div>鍏佽淇敼"椹鹃┒鍛�"</div>
-            <el-switch
-              class="ml10"
-              :active-value="1"
-              :inactive-value="0"
-              v-model="apprList[activeIndex].driverParam"
-            ></el-switch>
+            <el-switch class="ml10" :active-value="1" :inactive-value="0"
+              v-model="apprList[activeIndex].driverParam"></el-switch>
           </div>
           <div class="config_data_submit">
-            <el-button
-              @click="onSubmit"
-              :loading="subLoading"
-              style="background: #435ebe"
-              type="primary"
-              >淇濆瓨閰嶇疆椤�</el-button
-            >
-            <el-button
-              v-if="activeIndex !== 0 && activeIndex !== apprList.length - 1"
-              type="danger"
-              plain
-              @click="handleDel"
-              >鍒犻櫎鑺傜偣</el-button
-            >
+            <el-button @click="onSubmit" :loading="subLoading" style="background: #435ebe"
+              type="primary">淇濆瓨閰嶇疆椤�</el-button>
+            <el-button v-if="activeIndex !== 0 && activeIndex !== apprList.length - 1" type="danger" plain
+              @click="handleDel">鍒犻櫎鑺傜偣</el-button>
           </div>
         </div>
       </div>
@@ -228,41 +161,27 @@
     <el-dialog title="閫夋嫨鍛樺伐" :visible.sync="isShowTransfer" width="1000px">
       <div class="staff_modal">
         <div class="left">
-          <div
-            style="
+          <div style="
               width: 100%;
               height: 50px;
               background: rgba(242, 242, 242, 1);
               line-height: 50px;
               text-align: center;
               font-size: 14px;
-            "
-          >
+            ">
             浼佷笟缁勭粐鏋舵瀯
           </div>
-          <div style="width: 100%; height: 100%; overflow-y: scroll">
-            <Tree
-              :list="companyTree"
-              :defaultProps="{
-                name: 'name',
-                status: 'fsStatus',
-                children: 'childList',
-                id: 'id',
-              }"
-              @callback="callback"
-            />
+          <div style="width: 100%; max-height: 560px; overflow-y: scroll">
+            <Tree :list="companyTree" :defaultProps="{
+              name: 'name',
+              status: 'fsStatus',
+              children: 'childList',
+              id: 'id',
+            }" @callback="callback" />
           </div>
         </div>
-        <el-transfer
-          filterable
-          :title="['鏈��', '宸查��']"
-          openAll
-          :props="{ label: 'name', key: 'keyTemp' }"
-          filter-placeholder="鎼滅储鍛樺伐"
-          v-model="searchForm.objIds"
-          :data="memberList"
-          class="transfer"
-        >
+        <el-transfer filterable :title="['鏈��', '宸查��']" openAll :props="{ label: 'name', key: 'keyTemp' }"
+          filter-placeholder="鎼滅储鍛樺伐" v-model="searchForm.objIds" :data="memberList" class="transfer">
         </el-transfer>
       </div>
       <span slot="footer" class="dialog-footer">
@@ -286,7 +205,7 @@
     TableLayout,
     Tree
   },
-  data () {
+  data() {
     return {
       activeType: '3',
       subLoading: false,
@@ -303,12 +222,12 @@
       companyTree: []
     }
   },
-  created () {
+  created() {
     this.getfindCompanyTreePage()
     this.initDate()
   },
   methods: {
-    handleClick () {
+    handleClick() {
       this.apprList = []
       const arr = [
         { remark: '瀹℃壒浜�', active: false, type: 0, objIds: [] },
@@ -317,7 +236,7 @@
       this.apprList = [...arr]
       this.initDate()
     },
-    flowClick (i) {
+    flowClick(i) {
       this.activeIndex = i
       this.apprList.forEach((item, index) => {
         if (i === index) {
@@ -335,7 +254,7 @@
         }
       })
     },
-    initDate () {
+    initDate() {
       const { activeType } = this
       approveTemplByType(activeType).then(res => {
         if (res && res.paramList) {
@@ -349,7 +268,7 @@
                   companyName: i.companyName
                 }
               })
-            }else{
+            } else {
               item.objIds = []
             }
           })
@@ -361,7 +280,7 @@
         // console.log(res);
       })
     },
-    onSubmit () {
+    onSubmit() {
       const { apprList, activeType } = this
       const temp = JSON.parse(JSON.stringify(apprList))
       temp.forEach((item, index) => {
@@ -383,18 +302,18 @@
         this.subLoading = false
       })
     },
-    handleDel () {
+    handleDel() {
       const { activeIndex } = this
       this.apprList.splice(activeIndex, 1)
       this.activeIndex = 0
     },
-    handleAddAppr () {
-      this.apprList.splice(this.apprList.length - 1, 0, { remark: '瀹℃壒浜�',approveType: 0, active: false, type: 0, objIds: [] })
+    handleAddAppr() {
+      this.apprList.splice(this.apprList.length - 1, 0, { remark: '瀹℃壒浜�', approveType: 0, active: false, type: 0, objIds: [] })
       // this.apprList.push({ remark: '瀹℃壒浜�', active: false, type: '0' })
     },
 
     // 鑾峰彇缁勭粐鏍�
-    getfindCompanyTreePage () {
+    getfindCompanyTreePage() {
       fetchList()
         .then(res => {
           if (res && res.length > 0) {
@@ -406,7 +325,7 @@
           }
         })
     },
-    getMemberList () {
+    getMemberList() {
       memberListPost({
         model: {
           companyId: this.searchForm.companyId || '',
@@ -415,11 +334,11 @@
           erpOrgId: '',
           hasFace: '',
           hkStatus: '',
-          includeChild: false,
+          includeChild: true,
           type: 2
         },
         page: 1,
-        capacity: 30
+        capacity: 300
       }).then(res => {
         this.memberList = res.records || []
         this.memberList.forEach(item => {
@@ -428,13 +347,13 @@
         // console.log('defaultProps', res)
       })
     },
-    callback (row) {
+    callback(row) {
       console.log(row)
       this.$set(this.searchForm, 'companyId', row.id)
       this.$set(this.searchForm, 'erpOrgId', row.erpId)
       this.getMemberList()
     },
-    TransferSub () {
+    TransferSub() {
       const { activeIndex } = this
       if (this.searchForm.objIds && this.searchForm.objIds.length > 0) {
         if (this.searchForm.objIds.length > 20) return this.$message.warning('鏈�澶氶�夋嫨20浜�')
@@ -455,7 +374,7 @@
       this.isShowTransfer = false
       console.log(this.searchForm.objIds)
     },
-    memDel (memIndex) {
+    memDel(memIndex) {
       const { activeIndex } = this
       this.apprList.forEach((item, index) => {
         if (activeIndex === index) {
@@ -467,11 +386,11 @@
         }
       })
     },
-    selStaff () {
+    selStaff() {
       this.isShowTransfer = true
       this.getMemberList()
     },
-    seleItem (i) {
+    seleItem(i) {
       this.list.forEach((item, index) => {
         item.active = index === i
       })
@@ -489,6 +408,7 @@
   display: flex;
   align-items: center;
   justify-content: space-between;
+
   .config_list {
     width: 543px;
     height: 100%;
@@ -498,18 +418,21 @@
     box-sizing: border-box;
     border: 1px solid #eeeeee;
     background: #f7f7f7;
+
     .config_list_head {
       width: 100%;
       height: 40px;
       display: flex;
       align-items: center;
       justify-content: space-between;
+
       span {
         font-size: 18px;
         font-weight: 500;
         color: #222222;
       }
     }
+
     .config_content {
       width: 100%;
       height: calc(100% - 40px);
@@ -519,28 +442,35 @@
       display: flex;
       align-items: center;
       flex-direction: column;
+
       &::-webkit-scrollbar {
         width: 0;
       }
+
       .active {
         border: 2px solid #4456ac !important;
       }
+
       .yellow {
         background: #e89e42 !important;
       }
+
       .blue {
         background: #5094f3 !important;
       }
+
       .arrows {
         display: flex;
         flex-direction: column;
         align-items: center;
         position: relative;
+
         .line {
           width: 1px;
           height: 60px;
           background-color: #ccc;
         }
+
         .add {
           font-size: 40px;
           color: #2080f7;
@@ -549,10 +479,12 @@
           z-index: 999;
           top: 10px;
         }
+
         img {
           width: 12px;
         }
       }
+
       .item {
         width: 200px;
         cursor: pointer;
@@ -563,12 +495,14 @@
         position: relative;
         display: flex;
         flex-direction: column;
+
         .head {
           height: 32px;
           line-height: 32px;
           padding: 2px 12px;
           color: #fff;
         }
+
         .content {
           flex: 1;
           background-color: #fff;
@@ -577,32 +511,39 @@
           padding: 0 12px;
           justify-content: space-between;
         }
+
         &:last-child {
           margin: 0 !important;
         }
       }
     }
   }
+
   .config_data {
     flex: 1;
     height: 100%;
     margin-left: 20px;
+
     .config_data_submit {
       margin-top: 50px;
     }
+
     .config_data_item {
       width: 100%;
       display: flex;
       flex-direction: column;
       margin-bottom: 30px;
+
       &:last-child {
         margin: 0 !important;
       }
+
       .config_data_item_label {
         font-size: 16px;
         font-weight: 500;
         color: #222222;
         margin-bottom: 20px;
+
         span {
           font-size: 12px;
           font-weight: 400;
@@ -610,14 +551,17 @@
           margin-left: 10px;
         }
       }
+
       .config_data_item_reviewed {
         width: 100%;
         margin-top: 20px;
+
         .config_data_item_reviewed_r {
           margin-top: 10px;
           width: 100%;
           display: flex;
           align-items: center;
+
           span {
             flex-shrink: 0;
             font-size: 14px;
@@ -625,15 +569,18 @@
             color: #666666;
           }
         }
+
         .config_data_item_reviewed_label {
           display: flex;
           align-items: center;
+
           span {
             &:nth-child(1) {
               font-size: 14px;
               font-weight: 400;
               color: #222222;
             }
+
             &:nth-child(2) {
               font-size: 12px;
               font-weight: 400;
@@ -646,6 +593,7 @@
     }
   }
 }
+
 .config_data_item_reviewed_content {
   width: 400px;
   margin-top: 10px;
@@ -657,6 +605,7 @@
   display: flex;
   align-items: flex-start;
   flex-wrap: wrap;
+
   .add {
     font-size: 12px;
     font-weight: 400;
@@ -664,6 +613,7 @@
     cursor: pointer;
     margin-top: 3px;
   }
+
   .config_data_item_reviewed_content_item {
     padding: 3px 5px;
     background: #f4f7fc;
@@ -671,11 +621,13 @@
     box-sizing: border-box;
     margin-right: 10px;
     margin-bottom: 10px;
+
     span {
       font-size: 12px;
       font-weight: 400;
       color: #333333;
     }
+
     i {
       color: #949ba2;
       margin-left: 10px;
@@ -683,22 +635,27 @@
     }
   }
 }
+
 .staff_modal {
   display: flex;
+
   .left {
     width: 300px;
     margin-right: 20px;
   }
+
   .transfer {
     height: 600px;
     width: 100%;
     display: flex;
     justify-content: center;
     align-items: center;
-    ::v-deep .el-transfer-panel{
+
+    ::v-deep .el-transfer-panel {
       flex: 1;
       height: 100%;
     }
+
     ::v-deep .el-transfer-panel__body {
       height: 500px;
     }
diff --git a/admin/src/views/platform/index.vue b/admin/src/views/platform/index.vue
index 6e75cf5..7b3ed4a 100644
--- a/admin/src/views/platform/index.vue
+++ b/admin/src/views/platform/index.vue
@@ -62,27 +62,27 @@
               </div>
             </div>
             <div class="line">
-              <div v-if="task.billCode" class="ite">
+              <div v-if="task.billCode" style="width: 40%;" class="ite">
                 <span>杩愯緭鍗曞彿锛�</span>
                 <span>{{ task.billCode }}</span>
               </div>
-              <div v-else class="ite">
+              <div v-else class="ite" style="width: 40%;">
                 <span>鍚堝悓鍗曞彿锛�</span>
                 <span>{{ task.contractNum }}</span>
               </div>
-              <div class="ite siji">
+              <div class="ite jiashi">
                 <span>椹鹃┒鍛橈細</span>
-                <span>{{ task.driverName }}</span>
+                <span>{{ task.driverName }} {{ task.drivierPhone }}</span>
               </div>
-              <div class="ite phone">
+              <!-- <div class="ite phone">
                 <span>鎵嬫満鍙凤細</span>
                 <span>{{ task.drivierPhone }}</span>
-              </div>
-              <div class="ite">
+              </div> -->
+              <div class="ite" style="width: 40%">
                 <span>鎬昏繍杈撻噺锛�</span>
                 <span>{{ task.totalNum }}涓囨敮</span>
               </div>
-              <div v-if="task.billCode" class="ite" style="width: 66.6%">
+              <div v-if="task.billCode" class="ite" style="width: 60%">
                 <span>杩愯緭鍏徃锛�</span>
                 <span>{{ task.carrierName }}</span>
               </div>
@@ -497,12 +497,12 @@
           margin-bottom: 6px;
 
           .ite {
-            width: 33.3%;
+            width: 50%;
             margin-top: 8px;
           }
 
-          .siji {
-            width: 29%;
+          .jiashi {
+            width: 60%;
           }
 
           .phone {
diff --git a/admin/src/views/system/publicMsg.vue b/admin/src/views/system/publicMsg.vue
new file mode 100644
index 0000000..085dbd0
--- /dev/null
+++ b/admin/src/views/system/publicMsg.vue
@@ -0,0 +1,159 @@
+<template>
+  <div class="main_app">
+    <QueryForm v-model="filters" :query-form-config="queryFormConfig" @handleQuery="getList(1)" @clear="clear">
+    </QueryForm>
+    <div class="pt16 mb10">
+      <el-button type="primary" @click="batchStatus(0)" v-permissions="['business:platformjob:update']">鎵归噺鍚敤</el-button>
+      <el-button @click="batchStatus(1)" v-permissions="['business:platformjob:update']">鎵归噺绂佺敤</el-button>
+    </div>
+    <el-table @selection-change="handleSelectionChange" class="mb20" v-loading="loading" :data="list" stripe>
+      <el-table-column align="center" type="selection" width="55">
+      </el-table-column>
+      <el-table-column prop="titile" label="娑堟伅鏍囬" min-width="160" show-overflow-tooltip />
+      <el-table-column prop="objCode" label="娑堟伅缂栫爜" min-width="150" show-overflow-tooltip />
+      <el-table-column prop="tempId" label="妯℃澘ID" min-width="300" show-overflow-tooltip />
+      <el-table-column label="鐘舵��" width="120" align="center" fixed="right">
+        <template v-slot="scope">
+          <el-switch v-permissions="['business:platformjob:update']" v-model="scope.row.status"
+            @change="changeStatus(scope.row)" :active-value="0" :inactive-value="1">
+          </el-switch>
+        </template>
+      </el-table-column>
+    </el-table>
+    <Pagination @size-change="handleSizeChange" @current-change="getList" :pagination="pagination" />
+  </div>
+</template>
+
+<script>
+import Pagination from '@/components/common/Pagination'
+import QueryForm from '@/components/common/QueryForm'
+import { getH5List, H5StatusUpdate, H5StatussUpdate } from '@/api/system/sms'
+
+import GlobalWindow from '@/components/common/GlobalWindow'
+import { Message } from 'element-ui'
+import dayjs from 'dayjs'
+export default {
+  components: {
+    Pagination,
+    QueryForm,
+    GlobalWindow,
+  },
+  data() {
+    return {
+      ids: [],
+      isShowDetail: false,
+      exLoading: false,
+      loading: false,
+      pagination: {
+        pageSize: 10,
+        page: 1,
+        total: 0
+      },
+      filters: {},
+      list: [],
+      queryFormConfig: {
+        formItems: [
+          {
+            filed: 'titile',
+            type: 'input',
+            label: '娑堟伅鏍囬'
+          },
+          {
+            filed: 'status',
+            type: 'select',
+            label: '鍚敤鐘舵��',
+            options: [
+              { value: 0, label: '鍚敤' },
+              { value: 1, label: '绂佺敤' },
+            ]
+          },
+          {
+            filed: 'objCode',
+            type: 'input',
+            label: '娑堟伅缂栫爜'
+          }
+        ],
+        online: true
+      },
+    }
+  },
+  created() {
+    this.getList()
+  },
+  methods: {
+    handleSelectionChange(val) {
+      this.ids = val.map(i => i.id)
+      console.log('ids', this.ids)
+    },
+    batchStatus(status) {
+      const { ids } = this
+      if (ids.length == 0) return Message.error('璇峰厛閫夋嫨瑕佹洿鏀圭殑鐭俊閫氱煡')
+      this.$confirm(`纭畾${status == 0 ? '鍚敤' : '绂佺敤'}閫変腑鐨勬墍鏈夌煭淇¢�氱煡鍚�?`, '鎻愮ず', {
+        confirmButtonText: '纭畾',
+        cancelButtonText: '鍙栨秷',
+        type: 'warning'
+      }).then(() => {
+        H5StatussUpdate({
+          ids: ids.join(','),
+          status
+        }).then(res => {
+          Message.success('鎵归噺鏇存柊鎴愬姛')
+          this.getList()
+        }, () => {
+          this.getList()
+        })
+      })
+
+    },
+    changeStatus(row) {
+      console.log('row', row)
+      H5StatusUpdate({
+        ...row
+      }).then(res => {
+        Message.success('鐘舵�佹洿鏂版垚鍔�')
+      }, () => {
+        this.getList()
+      })
+    },
+    getList(page) {
+      const { pagination, filters } = this
+      this.loading = true
+      getH5List({
+        model: {
+          ...filters,
+        },
+        capacity: pagination.pageSize,
+        page: page || pagination.page,
+      }).then(res => {
+        this.loading = false
+        this.list = res.records || []
+        this.list.forEach(item => {
+          item.inTypeTemp = item.inType == 0 ? '鏁存墭鐩�' : '浠剁儫'
+          item.taskOrigin = 'WMS鑾峰彇'
+        })
+        this.pagination.total = res.total || 0
+      }, () => {
+        this.loading = false
+      })
+    },
+
+
+    clear() {
+      this.pagination.page = 1
+      this.filters = {}
+      this.getList()
+    },
+    handleSizeChange(capacity) {
+      this.pagination.pageSize = capacity
+    }
+  }
+}
+</script>
+<style lang="scss" scoped>
+.param_title {
+  font-size: 18px;
+  font-weight: 600;
+  color: #000000;
+  margin-bottom: 15px;
+}
+</style>
\ No newline at end of file
diff --git a/admin/src/views/task/dangetDetail.vue b/admin/src/views/task/dangetDetail.vue
index 700880c..35c7845 100644
--- a/admin/src/views/task/dangetDetail.vue
+++ b/admin/src/views/task/dangetDetail.vue
@@ -601,6 +601,7 @@
 </script>
 
 <style lang="scss" scoped>
+@import "@/assets/style/variables.scss";
 .upload_wrap {
   display: flex;
   flex-wrap: wrap;
@@ -800,7 +801,7 @@
           font-size: 13px;
           color: #888888;
           .status {
-            color: #00ba67;
+            color: $primaryColor;
           }
         }
         .m_content {
diff --git a/admin/src/views/task/driverDetail.vue b/admin/src/views/task/driverDetail.vue
index a63e59c..385d4dd 100644
--- a/admin/src/views/task/driverDetail.vue
+++ b/admin/src/views/task/driverDetail.vue
@@ -3,15 +3,19 @@
     <div class="modal_wrap">
       <div class="modal_content">
         <div class="header">
-          <img v-if="info.status == '3' || info.status == '6'" class="head_bg" src="@/assets/task/bg_shenhe_fail@2x.png" alt="">
-          <img v-else-if="info.status == '2' || info.status == '5'" class="head_bg" src="@/assets/task/bg_shenhe_pass@2x.png" alt="">
+          <img v-if="info.status == '3' || info.status == '6'" class="head_bg" src="@/assets/task/bg_shenhe_fail@2x.png"
+            alt="">
+          <img v-else-if="info.status == '2' || info.status == '5'" class="head_bg"
+            src="@/assets/task/bg_shenhe_pass@2x.png" alt="">
           <img v-else-if="info.status == '4'" class="head_bg" src="@/assets/task/bg_shenhe_chexiao@2x.png" alt="">
           <img v-else class="head_bg" src="@/assets/task/bg_shenhe@2x.png" alt="">
           <div class="left">
             <div class="h1">鐗╂祦杞﹂绾�</div>
             <div class="time">鎻愪氦鏃堕棿锛歿{ info.createDate }}</div>
           </div>
-          <div class="right" :class="{ scs: info.status == '2' || info.status == '5', msg: info.status == '3' || info.status == '6' }">{{ statusMap[info.status] }}</div>
+          <div class="right"
+            :class="{ scs: info.status == '2' || info.status == '5', msg: info.status == '3' || info.status == '6' }">{{
+              statusMap[info.status] }}</div>
         </div>
         <div class="info">
           <div class="title">鐗╂祦杞﹂绾︿俊鎭�</div>
@@ -43,7 +47,8 @@
             <div class="item">
               <div class="label">鍑嗚繍璇佺収鐗�</div>
               <div v-if="info.transportImg" class="value">
-                <el-image  style="width: 100px" :preview-src-list="[info.prefixUrl + info.transportImg]" :src="info.prefixUrl + info.transportImg" alt="" />
+                <el-image style="width: 100px" :preview-src-list="[info.prefixUrl + info.transportImg]"
+                  :src="info.prefixUrl + info.transportImg" alt="" />
               </div>
             </div>
           </div>
@@ -210,7 +215,7 @@
         }
       })
     },
-    close(){
+    close() {
       this.isShowModal = false
       this.$emit('close')
     },
@@ -275,6 +280,7 @@
     border-radius: 8px;
     overflow: hidden;
     height: 100%;
+
     .title {
       font-weight: 600;
       font-size: 18px;
@@ -317,7 +323,8 @@
       margin: 0 -30px;
       border-radius: 8px 8px 0 0;
       position: relative;
-      .head_bg{
+
+      .head_bg {
         position: absolute;
         width: 100%;
         height: 100%;
@@ -325,6 +332,7 @@
         top: 0;
         z-index: 9;
       }
+
       .h1 {
         font-weight: 600;
         font-size: 22px;
@@ -349,10 +357,12 @@
         position: relative;
         z-index: 99;
       }
-      .scs{
+
+      .scs {
         background-color: #00BA67;
       }
-      .msg{
+
+      .msg {
         background-color: #ED4545;
       }
     }
@@ -398,6 +408,7 @@
         display: flex;
         margin-bottom: 24px;
         position: relative;
+
         .separate {
           position: absolute;
           border-left: 2px dashed #cccccc;
@@ -405,15 +416,18 @@
           height: calc(100% - 2px);
           top: 42px;
         }
-        .info{
+
+        .info {
           padding-top: 10px;
           margin-left: 20px;
           margin-right: 16px;
+
           .iconnew {
             width: 24px;
             height: 24px;
           }
         }
+
         .avatar_wrap {
           width: 40px;
           height: 40px;
@@ -460,7 +474,7 @@
             color: #777777;
 
             .status {
-              color: $primary-color;
+              color: $primaryColor;
             }
           }
 
@@ -480,6 +494,7 @@
           width: 100%;
           overflow-x: auto;
           margin-top: 12px;
+
           .carbon_item {
             text-align: center;
             flex-shrink: 0;
diff --git a/admin/src/views/task/index.vue b/admin/src/views/task/index.vue
index 28e27df..ac5d8d1 100644
--- a/admin/src/views/task/index.vue
+++ b/admin/src/views/task/index.vue
@@ -165,12 +165,12 @@
       },
       pagination: {
         capacity: 10,
-        page: 1
+        page: 1,
+        total: 0,
       },
       loading: false,
       dataList: [],
       headData: {},
-      total: 0,
 
       cateList: [
         { name: '璁垮鐢宠', id: 0 },
@@ -268,6 +268,7 @@
       }).then(res => {
         console.log('res', res)
         this.dataList = res.records || []
+        this.pagination.total = res.total || 0
         this.dataList.forEach(i => {
           i.param1 = JSON.parse(i.param1)
         })
diff --git a/admin/src/views/task/visReportDetail.vue b/admin/src/views/task/visReportDetail.vue
index 60f8ec5..83c8ce0 100644
--- a/admin/src/views/task/visReportDetail.vue
+++ b/admin/src/views/task/visReportDetail.vue
@@ -3,19 +3,17 @@
     <div class="modal_wrap">
       <div class="modal_content">
         <div class="header">
-          <img v-if="info.businessStatus == '3'" class="head_bg" src="@/assets/task/bg_shenhe_fail@2x.png"
+          <img v-if="info.businessStatus == '3'" class="head_bg" src="@/assets/task/bg_shenhe_fail@2x.png" alt="">
+          <img v-else-if="info.businessStatus == '2'" class="head_bg" src="@/assets/task/bg_shenhe_pass@2x.png" alt="">
+          <img v-else-if="info.businessStatus == '4'" class="head_bg" src="@/assets/task/bg_shenhe_chexiao@2x.png"
             alt="">
-          <img v-else-if="info.businessStatus == '2'" class="head_bg"
-            src="@/assets/task/bg_shenhe_pass@2x.png" alt="">
-          <img v-else-if="info.businessStatus == '4'" class="head_bg" src="@/assets/task/bg_shenhe_chexiao@2x.png" alt="">
           <img v-else class="head_bg" src="@/assets/task/bg_shenhe@2x.png" alt="">
           <div class="left">
             <div class="h1">{{ cateList[type] }}</div>
             <div class="time">鎻愪氦鏃堕棿锛歿{ info.createDate }}</div>
           </div>
-          <div class="right"
-            :class="{ scs: info.businessStatus == '2', msg: info.businessStatus == '3' }">{{
-              statusMap[info.businessStatus] }}</div>
+          <div class="right" :class="{ scs: info.businessStatus == '2', msg: info.businessStatus == '3' }">{{
+            statusMap[info.businessStatus] }}</div>
         </div>
         <div class="info">
           <div class="title">璁垮鎶ュ淇℃伅</div>
@@ -83,7 +81,7 @@
                     <div style="display: inline" v-if="item.statusInfo != null && item.statusInfo != ''">
                       锛�<span :class="{ padding: item.statusInfo == '澶勭悊涓�' || item.status == '1' }">{{
                         item.statusInfo || ""
-                        }}</span>锛�
+                      }}</span>锛�
                     </div>
                   </div>
                 </div>
@@ -96,7 +94,7 @@
             " class="remark">
               {{ item.checkInfo || "" }}
             </div>
-            <div v-if="item.approveType == 1" class="childList">
+            <div v-if="item.approveType == 0 || item.type == 1 || item.approveType == 1" class="childList">
               <div class="m_content company" v-for="item1 in item.approveList" :key="item1.id">
                 <img v-if="item1.faceImg != null && item1.faceImg != ''" :src="item1.faceImg" class="avatar" alt="" />
                 <img v-if="item1.faceImg == null || item1.faceImg == ''" src="@/assets/avatar/man.png" class="avatar"
@@ -238,7 +236,7 @@
           })
       })
     },
-    close(){
+    close() {
       this.isShowModal = false
       this.$emit('close')
     },
@@ -246,6 +244,18 @@
       const { id } = this
       getVisitedReDetail({ id }).then(res => {
         this.info = res
+        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 = []
+            }
+          })
+        }
       })
     },
     handleAppr(val) {
@@ -463,7 +473,7 @@
           color: #888888;
 
           .status {
-            color: #00ba67;
+            color: $primaryColor;
           }
         }
 
diff --git a/admin/src/views/task/visSubDetail.vue b/admin/src/views/task/visSubDetail.vue
index db8dd9b..d9f19b2 100644
--- a/admin/src/views/task/visSubDetail.vue
+++ b/admin/src/views/task/visSubDetail.vue
@@ -516,7 +516,7 @@
           color: #888888;
 
           .status {
-            color: #00ba67;
+            color: $primaryColor;
           }
         }
 
diff --git a/h5/App.vue b/h5/App.vue
index 137957d..487c8ad 100644
--- a/h5/App.vue
+++ b/h5/App.vue
@@ -29,7 +29,18 @@
   max-width: 800rpx;
   overflow-y: auto;
 }
-
+.empty_wrap{
+	display: flex;
+	flex-direction: column;
+	justify-content: center;
+	align-items: center;
+	color: #666666;
+	min-height: 600rpx;
+	image{
+		width: 300rpx;
+		height: 300rpx;
+	}
+}
 .doumee-container .ivu-tabs-nav {
   width: 100%;
 }
diff --git a/h5/manifest.json b/h5/manifest.json
index bde4892..aa547f7 100644
--- a/h5/manifest.json
+++ b/h5/manifest.json
@@ -41,9 +41,45 @@
                 ]
             },
             /* ios鎵撳寘閰嶇疆 */
-            "ios" : {},
+            "ios" : {
+                "dSYMs" : false
+            },
             /* SDK閰嶇疆 */
-            "sdkConfigs" : {}
+            "sdkConfigs" : {
+                "ad" : {}
+            },
+            "icons" : {
+                "android" : {
+                    "hdpi" : "",
+                    "xhdpi" : "",
+                    "xxhdpi" : "",
+                    "xxxhdpi" : ""
+                },
+                "ios" : {
+                    "appstore" : "",
+                    "ipad" : {
+                        "app" : "",
+                        "app@2x" : "",
+                        "notification" : "",
+                        "notification@2x" : "",
+                        "proapp@2x" : "",
+                        "settings" : "",
+                        "settings@2x" : "",
+                        "spotlight" : "",
+                        "spotlight@2x" : ""
+                    },
+                    "iphone" : {
+                        "app@2x" : "",
+                        "app@3x" : "",
+                        "notification@2x" : "",
+                        "notification@3x" : "",
+                        "settings@2x" : "",
+                        "settings@3x" : "",
+                        "spotlight@2x" : "",
+                        "spotlight@3x" : ""
+                    }
+                }
+            }
         }
     },
     /* 蹇簲鐢ㄧ壒鏈夌浉鍏� */
diff --git a/h5/pages/staff/index.vue b/h5/pages/staff/index.vue
index bc60368..87dae86 100644
--- a/h5/pages/staff/index.vue
+++ b/h5/pages/staff/index.vue
@@ -18,9 +18,17 @@
         mode="widthFix"
       ></image>
     </view>
-    <view class="title_wrap"><view class="name">涓氬姟鍔炵悊</view></view>
+    <view v-if="list1.filter(i => checkAuth(i.auth)).length > 0" class="title_wrap"><view class="name">涓氬姟鍔炵悊</view></view>
     <view class="container1">
-      <view class="left">
+			<view class="list">
+				<block v-for="item in list1" :key="item.name">
+					<view v-if="checkAuth(item.auth)" class="item" @click="jump(item.url)">
+						<image :src="item.img" class="icon" />
+						<view class="name">{{item.name}}</view>
+					</view>
+				</block>
+			</view>
+<!--      <view class="left">
         <view class="img_wrap img1" @click="jump('/pages/staff/visitorReport')">
           <image src="@/static/staff/ic_fangkebaobei.png" class="img"></image>
           <view class="h1">璁垮鎶ュ</view>
@@ -54,12 +62,22 @@
           <view class="h1">淇敼瀵嗙爜</view>
           <view class="h2">CHANGE PASSWORD</view>
         </view>
-      </view>
+      </view> -->
     </view>
     <!--  -->
-    <view class="title_wrap"><view class="name">涓氬姟鏌ヨ</view></view>
+    <view v-if="list2.filter(i => checkAuth(i.auth)).length > 0" class="title_wrap"><view class="name">涓氬姟鏌ヨ</view></view>
     <view class="container2">
-      <view class="img_wrap" @click="jump('/pages/staff/task/index')">
+			<view class="list">
+				<block v-for="item in list2" :key="item.name">
+					<view v-if="checkAuth(item.auth)" class="item" @click="jump(item.url)">
+						<image :src="item.img" class="icon" />
+						<view class="name">{{item.name}}</view>
+						<view v-if="item.name == '浠诲姟涓績' && taskInfo" class="task_num">{{ taskInfo }}</view>
+					</view>
+				</block>
+			</view>
+			
+<!--      <view class="img_wrap" @click="jump('/pages/staff/task/index')">
         <image class="img" src="@/static/staff/ic_renwuzhongxin.png"></image>
         <view class="h1">浠诲姟涓績</view>
         <view class="h2">TASK CENTER</view>
@@ -81,7 +99,7 @@
         <image class="img" src="@/static/staff/ic_huiyishiguanli.png"></image>
         <view class="h1">浼氳瀹ょ鐞�</view>
         <view class="h2">MANAGE MEETING ROOMS</view>
-      </view>
+      </view> -->
     </view>
     <view class="copyright">
       <image src="@/static/logo_s@2x.png" mode="widthFix" />
@@ -95,8 +113,23 @@
 export default {
   data() {
     return {
-      userInfo: uni.getStorageSync('userInfo'),
-      taskInfo: 0
+      userInfo: uni.getStorageSync('userInfo') || {permissions: []},
+      taskInfo: 0,
+			list1: [
+				{ name: '璁垮鎶ュ', url: '/pages/staff/visitorReport', img: require('@/static/home/ic_fangkebaobei@3x.png'),auth: 'weixin:menu:visitcar' },
+				{ name: '闅愭偅闅忔墜鎷�', url: '/pages/staff/snapshot', img: require('@/static/home/ic_yinhuansuishoupai@3x.png'),auth: 'weixin:menu:hiddendanger' },
+				{ name: '鐢ㄨ溅鐢宠', url: '/pages/staff/vehicle/index', img: require('@/static/home/ic_yongcheshenqing@3x.png'),auth: 'weixin:menu:usecar' },
+				{ name: '棰勭害浼氳瀹�', url: '/pages/staff/meetingSub', img: require('@/static/home/ic_yuyuehuiyishi@3x.png'),auth: 'weixin:menu:meeting' },
+				{ name: '淇敼瀵嗙爜', url: '/pages/changePassword/changePassword', img: require('@/static/home/ic_xiugaimima@3x.png'),auth: 'weixin:menu:password' },
+				{ name: '鍛樺伐鑰冨嫟', url: '', img: require('@/static/home/ic_kaoqin@3x.png'),auth: 'weixin:menu:attendance' },
+			],
+			list2: [
+				{ name: '浠诲姟涓績', url: '/pages/staff/task/index', img: require('@/static/home/ic_renwuzhongxin@3x.png'),auth: 'weixin:menu:taskcenter' },
+				{ name: '鎴戠殑浼氳鏃ュ巻', url: '/pages/staff/meetingCalendar', img: require('@/static/home/ic_wodehuiyi@3x.png'),auth: 'weixin:menu:meetingcalendar' },
+				{ name: '娲捐溅璁板綍', url: '/pages/staff/vehicle/sendACar', img: require('@/static/home/ic_paichejilu@3x.png'),auth: 'weixin:menu:usecarrecord' },
+				{ name: '浼氳瀹ょ鐞�', url: '/pages/staff/meetingManager', img: require('@/static/home/ic_huiyishiguanli@3x.png'),auth: 'weixin:menu:meetingmanage' }
+			],
+			
     }
   },
   onLoad() {
@@ -152,6 +185,7 @@
       console.log('----');
       this.getTaskInfo()
     })
+		console.log('aaa', this.userInfo.permissions.indexOf('system:user:create'));
   },
   methods: {
     jump(path) {
@@ -159,6 +193,10 @@
         url: path
       })
     },
+		checkAuth(str) {
+			const permissions = this.userInfo.permissions
+			return permissions.indexOf(str) > -1
+		},
     loginOut() {
       this.$store.commit('empty')
       logoutPost()
@@ -171,6 +209,9 @@
         isDetail: '1'
       }).then(res => {
         this.taskInfo = res.data.noticeWaitNum + res.data.noticeCopyNum
+				if(this.taskInfo && this.taskInfo > 99){
+					this.taskInfo = 99
+				}
       })
     },
   }
@@ -203,6 +244,40 @@
 .main_app {
   padding-top: 12rpx;
 }
+.list{
+	display: flex;
+	width: 100%;
+	flex-wrap: wrap;
+	.item{
+		display: flex;
+		flex-direction: column;
+		justify-content: center;
+		align-items: center;
+		width: 25%;
+		margin-bottom: 40rpx;
+		font-size: 26rpx;
+		position: relative;
+		image{
+			width: 88rpx;
+			height: 88rpx;
+			margin-bottom: 20rpx;
+		}
+		.task_num{
+			position: absolute;
+			top: -10rpx;
+			right: 28rpx;
+			font-size: 24rpx;
+			width: 36rpx;
+			height: 36rpx;
+			background-color: red;
+			color: #fff;
+			border-radius: 50%;
+			display: flex;
+			justify-content: center;
+			align-items: center;
+		}
+	}
+}
 .banner_wrap {
   padding: 54rpx 44rpx;
   color: #fff;
@@ -227,107 +302,22 @@
 .container1 {
   display: flex;
   flex-wrap: wrap;
-  view {
-    width: 336rpx;
-  }
-  .left {
-    margin-right: 18rpx;
-  }
-  .img_wrap {
-    position: relative;
-    padding: 24rpx 0rpx 0 28rpx;
-    border-radius: 8rpx;
-    overflow: hidden;
-    .h1 {
-      font-weight: 600;
-      font-size: 32rpx;
-      color: #222222;
-      line-height: 48rpx;
-      margin-bottom: 4rpx;
-    }
-    .h2 {
-      font-size: 22rpx;
-      color: #7b9da1;
-      line-height: 34rpx;
-    }
-    .img {
-      width: 100%;
-      height: 100%;
-      position: absolute;
-      top: 0;
-      left: 0;
-      z-index: -1;
-    }
-  }
-  .img1 {
-    width: 336rpx;
-    height: 296rpx;
-    margin-bottom: 16rpx;
-  }
-  .img2 {
-    width: 336rpx;
-    height: 140rpx;
-    margin-bottom: 16rpx;
-  }
+	padding: 10rpx 0 10rpx;
 }
 .container2 {
   display: flex;
   flex-wrap: wrap;
-  .img_wrap {
-    width: 336rpx;
-    height: 140rpx;
-    margin-bottom: 16rpx;
-    position: relative;
-    border-radius: 8rpx;
-    overflow: hidden;
-    padding: 24rpx 0rpx 0 28rpx;
-    &:nth-of-type(2n) {
-      margin-left: 18rpx;
-    }
-    .task_num {
-      position: absolute;
-      left: 168rpx;
-      top: 26rpx;
-      width: 52rpx;
-      height: 52rpx;
-      border-radius: 50%;
-      /* border: 1px solid; */
-      background-color: #fff;
-      color: #db534c;
-      display: flex;
-      align-items: center;
-      justify-content: center;
-      font-size: 24rpx;
-    }
-    .h1 {
-      font-weight: 600;
-      font-size: 32rpx;
-      color: #222222;
-      line-height: 48rpx;
-      margin-bottom: 4rpx;
-    }
-    .h2 {
-      font-size: 22rpx;
-      color: #7b9da1;
-      line-height: 34rpx;
-    }
-    .img {
-      width: 100%;
-      height: 100%;
-      position: absolute;
-      top: 0;
-      left: 0;
-      z-index: -1;
-    }
-  }
 }
 .copyright {
   display: flex;
   align-items: center;
   justify-content: center;
-  margin-top: 44rpx;
   font-size: 24rpx;
   color: #666666;
+	position: fixed;
+	width: 100%;
+	left: 0;
+	bottom: 88rpx;
   image {
     width: 40rpx;
     height: 40rpx;
diff --git a/h5/pages/staff/meetingSel.vue b/h5/pages/staff/meetingSel.vue
index 9fb133c..a5b2594 100644
--- a/h5/pages/staff/meetingSel.vue
+++ b/h5/pages/staff/meetingSel.vue
@@ -22,7 +22,10 @@
 					mode="widthFix" class="checked"></image>
 				<text></text>
 			</view>
-			<view class="empty"></view>
+			<view v-if="memberList.length == 0" class="empty">
+				<image src="@/static/empty.png" mode=""></image>
+				<text>鏆傛棤鏁版嵁</text>
+			</view>
 		</view>
 		<!--  -->
 		<view class="sub_wrap">
diff --git a/h5/pages/staff/meetingSubOrder.vue b/h5/pages/staff/meetingSubOrder.vue
index 1d82d33..a99b6a1 100644
--- a/h5/pages/staff/meetingSubOrder.vue
+++ b/h5/pages/staff/meetingSubOrder.vue
@@ -80,7 +80,7 @@
           />
         </view>
       </view>
-      <view class="item">
+      <view class="item" v-if="info.projectList && info.projectList.length > 0">
         <view class="name">閫夋嫨鏈嶅姟椤�</view>
         <view class="line">
           <view class="label">
diff --git a/h5/pages/staff/memberSel.vue b/h5/pages/staff/memberSel.vue
index 8405ca0..0ec93ae 100644
--- a/h5/pages/staff/memberSel.vue
+++ b/h5/pages/staff/memberSel.vue
@@ -35,7 +35,10 @@
           <text></text>
         </view>
       </checkbox-group>
-      <view class="empty"></view>
+      <view v-if="memberList.length == 0" class="empty_wrap">
+      	<image src="../../static/empty.png"></image>
+      	<text>鏆傛棤鏁版嵁</text>
+      </view>
     </view>
     <!--  -->
     <!-- <view class="sub_wrap">
diff --git a/h5/pages/staff/task/driver.vue b/h5/pages/staff/task/driver.vue
index 7018b5d..9726ae1 100644
--- a/h5/pages/staff/task/driver.vue
+++ b/h5/pages/staff/task/driver.vue
@@ -70,6 +70,7 @@
       			<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" />
+						<image v-else-if="item.faceImg" :src="item.faceImg" class="img"></image>
       			<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" />
diff --git a/h5/pages/staff/task/index.vue b/h5/pages/staff/task/index.vue
index 8ee559c..56ed2e0 100644
--- a/h5/pages/staff/task/index.vue
+++ b/h5/pages/staff/task/index.vue
@@ -242,6 +242,7 @@
       },
       headData: {},
       dataList: [],
+			total: 0,
       cateList: [
         { name: '璁垮鐢宠', id: 0 },
         { name: '璁垮鎶ュ', id: 1 },
@@ -258,9 +259,12 @@
   //   this.getList()
   // },
   onReachBottom() {
-    // this.pagination.page = 0
-    // this.dataList = []
-    this.getList()
+		const { total,  dataList} = this
+    if(dataList.length < total){
+			this.getList()
+		} else {
+			this.showToast('鏆傛棤鏇村鏁版嵁')
+		}
   },
   onBackPress(options) {
     setTimeout(()=>{
@@ -316,6 +320,7 @@
         }
       }).then(res => {
         this.dataList = [...this.dataList, ...res.data.records]
+				this.total = res.data.total
         this.dataList.forEach(i => {
           if (i.param1) {
             i.param1 = JSON.parse(i.param1)
diff --git a/h5/pages/staff/task/visitorApprove.vue b/h5/pages/staff/task/visitorApprove.vue
index d695e11..da9ddc3 100644
--- a/h5/pages/staff/task/visitorApprove.vue
+++ b/h5/pages/staff/task/visitorApprove.vue
@@ -68,7 +68,8 @@
 					<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" />
+							src="@/static/staff/ic_shenpiren@2x.png" />
+						<image v-else-if="item.faceImg" :src="item.faceImg" class="img"></image>
 						<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" />
diff --git a/h5/pages/staff/task/visitorReport.vue b/h5/pages/staff/task/visitorReport.vue
index 15e713a..b51016a 100644
--- a/h5/pages/staff/task/visitorReport.vue
+++ b/h5/pages/staff/task/visitorReport.vue
@@ -44,7 +44,7 @@
       </view>
       <view class="item">
         <view class="label">璁垮鍗曚綅</view>
-        <view class="value">{{ info.companyName }}浜�</view>
+        <view class="value">{{ info.companyName }}</view>
       </view>
       <view class="item">
         <view class="label">鏉ヨ浜嬬敱</view>
@@ -63,6 +63,7 @@
             <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" />
+						<image v-else-if="item.faceImg" :src="item.faceImg" class="img"></image>
             <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" />
diff --git a/h5/pages/staff/vehicle/applePeo.vue b/h5/pages/staff/vehicle/applePeo.vue
index 42e4a0e..58ec92a 100644
--- a/h5/pages/staff/vehicle/applePeo.vue
+++ b/h5/pages/staff/vehicle/applePeo.vue
@@ -15,7 +15,7 @@
       />
     </view>
     <view class="member_list">
-      <view v-for="(item, index) in memberList" :key="item.id" class="line">
+      <view @click="changeMem(item, index)" v-for="(item, index) in memberList" :key="item.id" class="line">
         <image
           v-if="item.faceImgFull"
           :src="item.faceImgFull"
@@ -31,14 +31,12 @@
           <view class="depart">{{ item.companyName }}</view>
         </view>
         <image
-          @click="changeMem(item, index)"
           v-if="item.checked"
           src="@/static/checkbox_sel@2x.png"
           mode="widthFix"
           class="checked"
         ></image>
         <image
-          @click="changeMem(item, index)"
           v-if="!item.checked"
           src="@/static/meeting/icon/ic_choose@2x.png"
           mode="widthFix"
diff --git a/h5/pages/staff/vehicle/sendACar.vue b/h5/pages/staff/vehicle/sendACar.vue
index 997a031..bcf1fcc 100644
--- a/h5/pages/staff/vehicle/sendACar.vue
+++ b/h5/pages/staff/vehicle/sendACar.vue
@@ -96,7 +96,7 @@
       minDate: '',
       pagination: {
         page: 0,
-        capacity: 10
+        capacity: 6
       },
       total: 0,
       dataList: [],
@@ -109,9 +109,12 @@
     this.initData()
   },
   onReachBottom() {
-    if (this.total > 10) {
+		console.log('onReachBottom');
+    if (this.total > this.dataList.length) {
       this.getList()
-    }
+    }else {
+			this.showToast('鏆傛棤鏇村鏁版嵁')
+		}
   },
   methods: {
     getList() {
@@ -125,11 +128,7 @@
         ...pagination,
         model: { ...param }
       }).then(res => {
-        if (pagination.page === 1) {
-          this.dataList = res.data.records
-        } else {
-          this.dataList = [...list, ...res.data.records]
-        }
+        this.dataList = [...this.dataList, ...res.data.records]
         this.total = res.data.total
       })
     },
@@ -167,7 +166,7 @@
     },
     initData() {
       getCarsList({
-        type: 1
+        type: 0
       }).then(res => {
         this.carsList = [res.data]
       })
diff --git a/h5/pages/staff/vehicle/sendACarDetail.vue b/h5/pages/staff/vehicle/sendACarDetail.vue
index da13b54..6e62334 100644
--- a/h5/pages/staff/vehicle/sendACarDetail.vue
+++ b/h5/pages/staff/vehicle/sendACarDetail.vue
@@ -1,538 +1,506 @@
-<template>
-  <view class="main_app">
-    <view class="status_wrap">
-      <view class="name">{{ info.memberName }}鐨勭敤杞︾敵璇�</view>
-      <view class="placeholder9">{{ info.companyName }}</view>
-			<view
-			  class="desc"
-			  :class="{
-			    gray: info.businessStatus == '2' || info.businessStatus == '3' || info.businessStatus == '4',
-			  }"
-			  >{{ infoStatus }}</view
-			>
-      <view class="status">
-        <text class="loading" :class="{
-					grr: info.status == 1 || info.status == 2 || info.status == 4,
-					error: info.status == 3
-				}" v-if="info.status == '0'">{{statusMap[info.status]}}</text>
-      </view>
-    </view>
-    <!--  -->
-    <view class="emyty"></view>
-    <view class="module_list">
-      <view class="item">
-        <view class="label">棰勮鐢ㄨ溅鏃舵</view>
-        <view class="value" v-if="info.startTime"
-          >{{ info.startTime.slice(0, 16) }}鑷硔{
-            info.endTime.slice(0, 16)
-          }}</view
-        >
-      </view>
-      <view class="item">
-        <view class="label">棰勮鍑哄彂鏃堕棿</view>
-        <view class="value">{{ info.planUseDate }}</view>
-      </view>
-      <view class="item">
-        <view class="label">涔樿溅浜哄憳</view>
-        <view class="value">{{ info.memberNames }}</view>
-      </view>
-      <view class="item">
-        <view class="label">鐩殑鍦�</view>
-        <view class="value"
-          >{{ info.type == "1" ? "甯傚" : "瀹ゅ唴" }}锛歿{ info.addr }}</view
-        >
-      </view>
-      <view class="item">
-        <view class="label">鐢ㄨ溅浜嬬敱</view>
-        <view class="value">{{ info.content }}</view>
-      </view>
-      <view class="item">
-        <view class="label">杞﹁締淇℃伅</view>
-        <view class="value">{{ info.carCode }}</view>
-      </view>
-      <view class="item">
-        <view class="label">鍙告満淇℃伅</view>
-        <view class="value">{{ info.driverName }} {{ info.driverPhone }}</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" v-if="item.statusInfo"
-                  >({{ item.statusInfo }})</text
-                ></text
-              >
-            </view>
-            <view v-if="item.checkInfo" class="remark">{{
-              item.checkInfo
-            }}</view>
-            <!-- 鎶勯�佷汉 -->
-            <view v-if="item.approveType == 1" class="children">
-              <view
-                class="child"
-                v-for="child in item.approveList"
-                :key="child.id"
-              >
-                <image
-                  class="child_img"
-                  :src="
-                    child.faceImg
-                      ? child.faceImg
-                      : require('@/static/meeting/common/default_user@2x.png')
-                  "
-                />
-                <view>{{ child.memberName }}</view>
-              </view>
-            </view>
-          </view>
-        </view>
-      </view>
-    </view>
-    <view class="emyty"></view>
-    <view
-      class="main_footer"
-      v-if="
-        info.approveDateVO != null &&
-        info.approveDateVO.canBeApproved != null &&
-        info.approveDateVO.canBeApproved == 1
-      "
-    >
-      <template v-if="appr == '1'">
-        <view class="btn" @click="handleSub(3)">鎷掔粷</view>
-        <view class="btn agree" @click="handleSub(2)">鍚屾剰</view>
-      </template>
-      <view v-else class="btn agree" @click="isShowBack = true">鎾ら攢鐢ㄨ溅</view>
-    </view>
-
-    <!-- 鎾ら攢 -->
-    <u-popup
-      :show="isShowBack"
-      :round="10"
-      :safeAreaInsetBottom="true"
-      mode="bottom"
-      @close="isShowBack = false"
-    >
-      <view class="appr_modal">
-        <view class="title">鎾ら攢鐢ㄨ溅</view>
-        <view class="line"> 鎾ら攢璇存槑 </view>
-        <textarea
-          v-model="backParam.info"
-          placeholder="闈炲繀濉�"
-          placeholder-class="placeholder9"
-        />
-        <view class="main_footer">
-          <view class="btn agree" @click="onSubBack">鎻愪氦</view>
-        </view>
-      </view>
-    </u-popup>
-    <!--  -->
-    <u-popup
-      :show="showApprModal"
-      :round="10"
-      :safeAreaInsetBottom="true"
-      mode="bottom"
-      @close="showApprModal = false"
-    >
-      <view class="appr_modal">
-        <view class="title">{{ param.status == 2 ? "鍚屾剰" : "鎷掔粷" }}</view>
-        <view v-if="param.status == 2" class="line" @click="isShowDrive = true">
-          <text v-if="param.driverName">{{ param.driverName }}</text>
-          <text v-else class="placeholder9">娲捐溅鍙告満</text>
-          <u-icon class="ml12" name="arrow-right" color="#999999" />
-        </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>
-    <!-- 鍙告満 -->
-    <u-picker
-      keyName="name"
-      :show="isShowDrive"
-      @close="isShowDrive = false"
-      :closeOnClickOverlay="true"
-      :columns="driveList"
-      @confirm="seletedDrive"
-      @cancel="isShowDrive = false"
-    ></u-picker>
-  </view>
-</template>
-
-<script>
-import { carUseBookDetail, carUseBookAppr, driveListPost, carUseBookBack } from '@/api'
-export default {
-  data() {
-    return {
-      showApprModal: false,
-      isShowBack: false,
-      backParam: {},
-      isShowDrive: false,
-      id: '',
-      appr: '',
-			infoStatus: '',
-      info: {},
-      param: {
-        status: ''
-      },
-			statusMap: {
-			  0: '寰呭鎵�',
-			  1: '瀹℃壒涓�',
-			  2: '宸查�氳繃',
-			  3: '鎾ゅ洖鐢宠',
-			  4: '宸插彇娑�',
-			},
-      driveList: []
-
-    }
-  },
-  onLoad(option) {
-    this.id = option.id
-    this.appr = option.appr || ''
-		this.infoStatus = option.info
-    this.getDetail()
-  },
-  methods: {
-    getDetail() {
-      const { id } = this
-      carUseBookDetail(id).then(res => {
-        this.info = { ...res.data }
-      })
-    },
-    onSubBack() {
-      carUseBookBack({
-        id: this.id,
-        info: this.backParam.info
-      }).then(res => {
-        if (res.code === 200) {
-          uni.showToast({
-            title: '鎾ら攢鎴愬姛',
-            icon: 'success',
-            duration: 2000
-          })
-          this.isShowBack = false
-          setTimeout(() => {
-            uni.navigateBack()
-          }, 1000)
-        }
-      })
-    },
-    onSubmit() {
-      const { param, info } = this
-      carUseBookAppr({
-        status: param.status,
-        objType: info.type == 1 ? 4 : 3,
-        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
-      if (status === 2) { // 鍚屾剰
-        this.getDriveList()
-      } else {
-
-      }
-      this.showApprModal = true
-    },
-    getDriveList() {
-      driveListPost({}).then(res => {
-        this.driveList = [res.data]
-      })
-    },
-    seletedDrive(e) {
-      console.log(e.value[0])
-      this.$set(this.param, 'driverId', e.value[0].id)
-      this.$set(this.param, 'driverName', e.value[0].name)
-      this.isShowDrive = false
-    },
-  },
-}
-</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 {
+<template>
+	<view class="main_app">
+		<view class="status_wrap">
+		  <view class="name">{{ info.createMemberName }}鎻愪氦鐨勭敤杞︾敵璇�</view>
+		  <view
+		    class="desc"
+		    :class="{
+		      gray: info.status == '2' || info.status == '3' || info.status == '4',
+		    }"
+		    >{{ infoStatus }}</view
+		  >
+		  <view v-if="info.status == '0' || info.status == '1'" class="status">{{
+		    statusMap[info.status]
+		  }}</view>
+		  <image v-if="info.status == '2'" src="@/static/ic_passed@2x.png" mode="widthFix" class="status_img"></image>
+		  <image v-if="info.status == '3' || info.status == '6'" 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" v-if="info.startTime">{{ info.startTime.slice(0, 16) }}鑷硔{
+            info.endTime.slice(0, 16)
+          }}</view>
+			</view>
+			<view class="item">
+				<view class="label">棰勮鍑哄彂鏃堕棿</view>
+				<view class="value">{{ info.planUseDate }}</view>
+			</view>
+			<view class="item">
+				<view class="label">涔樿溅浜哄憳</view>
+				<view class="value">{{ info.memberNames }}</view>
+			</view>
+			<view class="item">
+				<view class="label">鐩殑鍦�</view>
+				<view class="value">{{ info.type == "1" ? "甯傚" : "甯傚唴" }}锛歿{ info.addr }}</view>
+			</view>
+			<view class="item">
+				<view class="label">鐢ㄨ溅浜嬬敱</view>
+				<view class="value">{{ info.content }}</view>
+			</view>
+			<view class="item">
+				<view class="label">杞﹁締淇℃伅</view>
+				<view class="value">{{ info.carCode }}</view>
+			</view>
+			<view class="item">
+				<view class="label">鍙告満淇℃伅</view>
+				<view class="value">{{ info.driverName }} {{ info.driverPhone }}</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" />
+						<image v-else-if="item.faceImg" :src="item.faceImg" class="img"></image>
+						<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 class="main_footer" v-if="
+        info.approveDateVO != null &&
+        info.approveDateVO.canBeApproved != null &&
+        info.approveDateVO.canBeApproved == 1
+      ">
+			<template v-if="appr == '1'">
+				<view class="btn" @click="handleSub(3)">鎷掔粷</view>
+				<view class="btn agree" @click="handleSub(2)">鍚屾剰</view>
+			</template>
+			<view v-else class="btn agree" @click="isShowBack = true">鎾ら攢鐢ㄨ溅</view>
+		</view>
+
+		<!-- 鎾ら攢 -->
+		<u-popup :show="isShowBack" :round="10" :safeAreaInsetBottom="true" mode="bottom" @close="isShowBack = false">
+			<view class="appr_modal">
+				<view class="title">鎾ら攢鐢ㄨ溅</view>
+				<view class="line"> 鎾ら攢璇存槑 </view>
+				<textarea v-model="backParam.info" placeholder="闈炲繀濉�" placeholder-class="placeholder9" />
+				<view class="main_footer">
+					<view class="btn agree" @click="onSubBack">鎻愪氦</view>
+				</view>
+			</view>
+		</u-popup>
+		<!--  -->
+		<u-popup :show="showApprModal" :round="10" :safeAreaInsetBottom="true" mode="bottom" @close="showApprModal = false">
+			<view class="appr_modal">
+				<view class="title">{{ param.status == 2 ? "鍚屾剰" : "鎷掔粷" }}</view>
+				<view v-if="param.status == 2" class="line" @click="isShowDrive = true">
+					<text v-if="param.driverName">{{ param.driverName }}</text>
+					<text v-else class="placeholder9">娲捐溅鍙告満</text>
+					<u-icon class="ml12" name="arrow-right" color="#999999" />
+				</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>
+		<!-- 鍙告満 -->
+		<u-picker keyName="name" :show="isShowDrive" @close="isShowDrive = false" :closeOnClickOverlay="true"
+			:columns="driveList" @confirm="seletedDrive" @cancel="isShowDrive = false"></u-picker>
+	</view>
+</template>
+
+<script>
+	import {
+		carUseBookDetail,
+		carUseBookAppr,
+		driveListPost,
+		carUseBookBack
+	} from '@/api'
+	export default {
+		data() {
+			return {
+				showApprModal: false,
+				isShowBack: false,
+				backParam: {},
+				isShowDrive: false,
+				id: '',
+				appr: '',
+				infoStatus: '',
+				info: {},
+				param: {
+					status: ''
+				},
+				statusMap: {
+					0: '寰呭鎵�',
+					1: '瀹℃壒涓�',
+					2: '宸查�氳繃',
+					3: '鎾ゅ洖鐢宠',
+					4: '宸插彇娑�',
+				},
+				driveList: []
+
+			}
+		},
+		onLoad(option) {
+			this.id = option.id
+			this.appr = option.appr || ''
+			this.infoStatus = option.info
+			this.getDetail()
+		},
+		methods: {
+			getDetail() {
+				const {
+					id
+				} = this
+				carUseBookDetail(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 = []
+							}
+						})
+					}
+				})
+			},
+			onSubBack() {
+				carUseBookBack({
+					id: this.id,
+					info: this.backParam.info
+				}).then(res => {
+					if (res.code === 200) {
+						uni.showToast({
+							title: '鎾ら攢鎴愬姛',
+							icon: 'success',
+							duration: 2000
+						})
+						this.isShowBack = false
+						setTimeout(() => {
+							uni.navigateBack()
+						}, 1000)
+					}
+				})
+			},
+			onSubmit() {
+				const {
+					param,
+					info
+				} = this
+				carUseBookAppr({
+					status: param.status,
+					objType: info.type == 1 ? 4 : 3,
+					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
+				if (status === 2) { // 鍚屾剰
+					this.getDriveList()
+				} else {
+
+				}
+				this.showApprModal = true
+			},
+			getDriveList() {
+				driveListPost({}).then(res => {
+					this.driveList = [res.data]
+				})
+			},
+			seletedDrive(e) {
+				console.log(e.value[0])
+				this.$set(this.param, 'driverId', e.value[0].id)
+				this.$set(this.param, 'driverName', e.value[0].name)
+				this.isShowDrive = false
+			},
+		},
+	}
+</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: 16rpx;
+      margin-bottom: 20rpx;
       color: #222222;
     }
 
     .desc {
       font-size: 26rpx;
       color: #ed4545;
-			margin-top: 16rpx;
     }
+
     .gray {
       color: #999999;
     }
@@ -548,67 +516,75 @@
       background-color: #e9edff;
       color: $uni-color-primary;
     }
-  }
 
-  .main_footer {
-    padding-bottom: 64rpx;
-    display: flex;
-    justify-content: space-between;
-
-    .btn {
-      flex: 1;
-      height: 88rpx;
-      line-height: 88rpx;
-      background: #ffffff;
-      border-radius: 44rpx;
-      border: 1rpx solid #999999;
-      font-size: 32rpx;
-      text-align: center;
-      margin: 16rpx;
+    .status_img {
+      position: absolute;
+      right: 0rpx;
+      top: 20rpx;
+      width: 120rpx;
     }
-
-    .agree {
-      background: $uni-color-primary;
-      color: #fff;
-      border: 1rpx solid $uni-color-primary;
-    }
-  }
-
-  .appr_modal {
-    padding: 36rpx 30rpx 0;
-    .line {
-      height: 90rpx;
-      display: flex;
-      align-items: center;
-      justify-content: space-between;
-      border-bottom: 1rpx solid #e4e4e4;
-      margin-bottom: 20rpx;
-    }
-    .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>
+  }
+		.main_footer {
+			padding-bottom: 64rpx;
+			display: flex;
+			justify-content: space-between;
+
+			.btn {
+				flex: 1;
+				height: 88rpx;
+				line-height: 88rpx;
+				background: #ffffff;
+				border-radius: 44rpx;
+				border: 1rpx solid #999999;
+				font-size: 32rpx;
+				text-align: center;
+				margin: 16rpx;
+			}
+
+			.agree {
+				background: $uni-color-primary;
+				color: #fff;
+				border: 1rpx solid $uni-color-primary;
+			}
+		}
+
+		.appr_modal {
+			padding: 36rpx 30rpx 0;
+
+			.line {
+				height: 90rpx;
+				display: flex;
+				align-items: center;
+				justify-content: space-between;
+				border-bottom: 1rpx solid #e4e4e4;
+				margin-bottom: 20rpx;
+			}
+
+			.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/staff/vehicle/shinei.vue b/h5/pages/staff/vehicle/shinei.vue
index 5413edf..35e29fe 100644
--- a/h5/pages/staff/vehicle/shinei.vue
+++ b/h5/pages/staff/vehicle/shinei.vue
@@ -226,7 +226,7 @@
     },
     initData() {
       getCarsList({
-        type: 1
+        type: 0
       }).then(res => {
         this.carsList = [res.data]
       })
diff --git a/h5/pages/staff/vehicle/shiwai.vue b/h5/pages/staff/vehicle/shiwai.vue
index ff51cda..8470ad9 100644
--- a/h5/pages/staff/vehicle/shiwai.vue
+++ b/h5/pages/staff/vehicle/shiwai.vue
@@ -83,7 +83,7 @@
       @confirm="seletedCar"
       @cancel="isShowCar = false"
     ></u-picker>
-    <u-datetime-picker
+   <!-- <u-datetime-picker
       mode="datetime"
       :show="isShowDate"
       :filter="timeFilter"
@@ -93,11 +93,20 @@
       :closeOnClickOverlay="true"
       @confirm="seletedDate"
       @cancel="isShowDate = false"
-    />
+    /> -->
+		<u-datetime-picker
+		   mode="datetime"
+		   :show="isShowDate"
+		   title="寮�濮嬫椂闂�"
+		   :minDate="minDate"
+		   @close="isShowDate = false"
+		   :closeOnClickOverlay="true"
+		   @confirm="seletedDate"
+		   @cancel="isShowDate = false"
+		 />
     <u-datetime-picker
       mode="datetime"
       :show="isShowEndDate"
-      :filter="timeFilter"
       title="缁撴潫鏃堕棿"
       :minDate="new Date(param.startTime || null).getTime()"
       @close="endtimeClose"
@@ -204,7 +213,7 @@
     },
     initData() {
       getCarsList({
-        type: 1
+        type: 0
       }).then(res => {
         this.carsList = [res.data]
       })
diff --git a/h5/static/home/ic_fangkebaobei@3x.png b/h5/static/home/ic_fangkebaobei@3x.png
new file mode 100644
index 0000000..d1018ca
--- /dev/null
+++ b/h5/static/home/ic_fangkebaobei@3x.png
Binary files differ
diff --git a/h5/static/home/ic_huiyishiguanli@3x.png b/h5/static/home/ic_huiyishiguanli@3x.png
new file mode 100644
index 0000000..a7a0263
--- /dev/null
+++ b/h5/static/home/ic_huiyishiguanli@3x.png
Binary files differ
diff --git a/h5/static/home/ic_kaoqin@3x.png b/h5/static/home/ic_kaoqin@3x.png
new file mode 100644
index 0000000..da0d369
--- /dev/null
+++ b/h5/static/home/ic_kaoqin@3x.png
Binary files differ
diff --git a/h5/static/home/ic_paichejilu@3x.png b/h5/static/home/ic_paichejilu@3x.png
new file mode 100644
index 0000000..de7192e
--- /dev/null
+++ b/h5/static/home/ic_paichejilu@3x.png
Binary files differ
diff --git a/h5/static/home/ic_renwuzhongxin@3x.png b/h5/static/home/ic_renwuzhongxin@3x.png
new file mode 100644
index 0000000..0e54df7
--- /dev/null
+++ b/h5/static/home/ic_renwuzhongxin@3x.png
Binary files differ
diff --git a/h5/static/home/ic_wodehuiyi@3x.png b/h5/static/home/ic_wodehuiyi@3x.png
new file mode 100644
index 0000000..77bd6c2
--- /dev/null
+++ b/h5/static/home/ic_wodehuiyi@3x.png
Binary files differ
diff --git a/h5/static/home/ic_xiugaimima@3x.png b/h5/static/home/ic_xiugaimima@3x.png
new file mode 100644
index 0000000..612d5bd
--- /dev/null
+++ b/h5/static/home/ic_xiugaimima@3x.png
Binary files differ
diff --git a/h5/static/home/ic_yinhuansuishoupai@3x.png b/h5/static/home/ic_yinhuansuishoupai@3x.png
new file mode 100644
index 0000000..0850454
--- /dev/null
+++ b/h5/static/home/ic_yinhuansuishoupai@3x.png
Binary files differ
diff --git a/h5/static/home/ic_yongcheshenqing@3x.png b/h5/static/home/ic_yongcheshenqing@3x.png
new file mode 100644
index 0000000..b84bb18
--- /dev/null
+++ b/h5/static/home/ic_yongcheshenqing@3x.png
Binary files differ
diff --git a/h5/static/home/ic_yuyuehuiyishi@3x.png b/h5/static/home/ic_yuyuehuiyishi@3x.png
new file mode 100644
index 0000000..f444555
--- /dev/null
+++ b/h5/static/home/ic_yuyuehuiyishi@3x.png
Binary files differ
diff --git "a/h5_meeting/unpackage/release/apk/\344\274\232\350\256\256\345\256\244.apk" "b/h5_meeting/unpackage/release/apk/\344\274\232\350\256\256\345\256\244.apk"
new file mode 100644
index 0000000..eff3492
--- /dev/null
+++ "b/h5_meeting/unpackage/release/apk/\344\274\232\350\256\256\345\256\244.apk"
Binary files differ
diff --git a/pda/api/index.js b/pda/api/index.js
index c7c9064..7ac7ff8 100644
--- a/pda/api/index.js
+++ b/pda/api/index.js
@@ -157,4 +157,12 @@
     method: 'get',
     data
   })
+}
+// 棰勭害 	璇︽儏
+export const driverApplyDetail = (data) => {
+  return http({
+    url: 'visitsAdmin/cloudService/web/driverPlatform/getDetail',
+    method: 'get',
+    data
+  })
 }
\ No newline at end of file
diff --git a/pda/manifest.json b/pda/manifest.json
index cb7800a..06d4bc0 100644
--- a/pda/manifest.json
+++ b/pda/manifest.json
@@ -1,96 +1,101 @@
-{
-	"name": "pda",
-	"appid": "__UNI__8789FB4",
-	"description": "",
-	"versionName": "1.0.0",
-	"versionCode": "100",
-	"transformPx": false,
-	"h5": {
-		"router": {
-			"mode": "hash",
-			"base": "./"
-		},
-		// "base" : "/h5/"
-		"devServer": {
-			"port": 8090,
-			"historyApiFallback": true,
-			"disableHostCheck": true,
-			"proxy": {
-				"/gateway_interface": {
-					// 杩欎釜瀛楁鍚嶉渶涓庝綘閰嶇疆鐨刡asePrefixUrl涓�鑷达紝绯荤粺璇嗗埆鍒板甫鏈�/dev-api璇锋眰鐨勫湴鍧�鏃讹紝浼氬湪鍓嶉潰鎷兼帴涓婁唬鐞嗘湇鍔″櫒鍦板潃
-					"target" : "http://10.50.250.253:8088/gateway_interface", // 浠g悊鏈嶅姟鍣ㄥ煙鍚嶆垨IP鍦板潃
-					// "target": "http://192.168.0.100:10010", // 浠g悊鏈嶅姟鍣ㄥ煙鍚嶆垨IP鍦板潃
-					"changeOrigin": true, // 鍏佽璺ㄥ煙 
-					"pathRewrite": {
-						"^/gateway_interface": "" // 閲嶅啓鍦板潃锛屽鏋滃疄闄呮帴鍙d腑鏄笉甯�/dev-api锛岄渶瑕佸皢杩欎釜鍓嶇紑缃┖锛屽洜涓鸿繖涓墠缂�鍙槸涓轰簡璇嗗埆鐢紝璇嗗埆瀹屼箣鍚庡氨娌$敤浜�
-					}
-				}
-			},
-			"https": false
-		}
-	},
-	/* 5+App鐗规湁鐩稿叧 */
-	"app-plus": {
-		"usingComponents": true,
-		"nvueStyleCompiler": "uni-app",
-		"compilerVersion": 3,
-		"splashscreen": {
-			"alwaysShowBeforeRender": true,
-			"waiting": true,
-			"autoclose": true,
-			"delay": 0
-		},
-		/* 妯″潡閰嶇疆 */
-		"modules": {},
-		/* 搴旂敤鍙戝竷淇℃伅 */
-		"distribute": {
-			/* android鎵撳寘閰嶇疆 */
-			"android": {
-				"permissions": [
-					"<uses-permission android:name=\"android.permission.CHANGE_NETWORK_STATE\"/>",
-					"<uses-permission android:name=\"android.permission.MOUNT_UNMOUNT_FILESYSTEMS\"/>",
-					"<uses-permission android:name=\"android.permission.VIBRATE\"/>",
-					"<uses-permission android:name=\"android.permission.READ_LOGS\"/>",
-					"<uses-permission android:name=\"android.permission.ACCESS_WIFI_STATE\"/>",
-					"<uses-feature android:name=\"android.hardware.camera.autofocus\"/>",
-					"<uses-permission android:name=\"android.permission.ACCESS_NETWORK_STATE\"/>",
-					"<uses-permission android:name=\"android.permission.CAMERA\"/>",
-					"<uses-permission android:name=\"android.permission.GET_ACCOUNTS\"/>",
-					"<uses-permission android:name=\"android.permission.READ_PHONE_STATE\"/>",
-					"<uses-permission android:name=\"android.permission.CHANGE_WIFI_STATE\"/>",
-					"<uses-permission android:name=\"android.permission.WAKE_LOCK\"/>",
-					"<uses-permission android:name=\"android.permission.FLASHLIGHT\"/>",
-					"<uses-feature android:name=\"android.hardware.camera\"/>",
-					"<uses-permission android:name=\"android.permission.WRITE_SETTINGS\"/>"
-				]
-			},
-			/* ios鎵撳寘閰嶇疆 */
-			"ios": {},
-			/* SDK閰嶇疆 */
-			"sdkConfigs": {}
-		}
-	},
-	/* 蹇簲鐢ㄧ壒鏈夌浉鍏� */
-	"quickapp": {},
-	/* 灏忕▼搴忕壒鏈夌浉鍏� */
-	"mp-weixin": {
-		"appid": "",
-		"setting": {
-			"urlCheck": false
-		},
-		"usingComponents": true
-	},
-	"mp-alipay": {
-		"usingComponents": true
-	},
-	"mp-baidu": {
-		"usingComponents": true
-	},
-	"mp-toutiao": {
-		"usingComponents": true
-	},
-	"uniStatistics": {
-		"enable": false
-	},
-	"vueVersion": "2"
-}
\ No newline at end of file
+{
+    "name" : "鏈堝彴璋冨害",
+    "appid" : "__UNI__8789FB4",
+    "description" : "",
+    "versionName" : "1.0.0",
+    "versionCode" : "100",
+    "transformPx" : false,
+    "h5" : {
+        "router" : {
+            "mode" : "hash",
+            "base" : "./"
+        },
+        // "base" : "/h5/"
+        "devServer" : {
+            "port" : 8090,
+            "historyApiFallback" : true,
+            "disableHostCheck" : true,
+            "proxy" : {
+                "/gateway_interface" : {
+                    // 杩欎釜瀛楁鍚嶉渶涓庝綘閰嶇疆鐨刡asePrefixUrl涓�鑷达紝绯荤粺璇嗗埆鍒板甫鏈�/dev-api璇锋眰鐨勫湴鍧�鏃讹紝浼氬湪鍓嶉潰鎷兼帴涓婁唬鐞嗘湇鍔″櫒鍦板潃
+                    "target" : "http://10.50.250.253:8088/gateway_interface", // 浠g悊鏈嶅姟鍣ㄥ煙鍚嶆垨IP鍦板潃
+
+                    // "target": "http://192.168.0.100:10010", // 浠g悊鏈嶅姟鍣ㄥ煙鍚嶆垨IP鍦板潃
+                    "changeOrigin" : true, // 鍏佽璺ㄥ煙 
+                    "pathRewrite" : {
+                        "^/gateway_interface" : "" // 閲嶅啓鍦板潃锛屽鏋滃疄闄呮帴鍙d腑鏄笉甯�/dev-api锛岄渶瑕佸皢杩欎釜鍓嶇紑缃┖锛屽洜涓鸿繖涓墠缂�鍙槸涓轰簡璇嗗埆鐢紝璇嗗埆瀹屼箣鍚庡氨娌$敤浜�
+                    }
+                }
+            },
+            "https" : false
+        }
+    },
+    /* 5+App鐗规湁鐩稿叧 */
+    "app-plus" : {
+        "usingComponents" : true,
+        "nvueStyleCompiler" : "uni-app",
+        "compilerVersion" : 3,
+        "splashscreen" : {
+            "alwaysShowBeforeRender" : true,
+            "waiting" : true,
+            "autoclose" : true,
+            "delay" : 0
+        },
+        /* 妯″潡閰嶇疆 */
+        "modules" : {},
+        /* 搴旂敤鍙戝竷淇℃伅 */
+        "distribute" : {
+            /* android鎵撳寘閰嶇疆 */
+            "android" : {
+                "permissions" : [
+                    "<uses-permission android:name=\"android.permission.CHANGE_NETWORK_STATE\"/>",
+                    "<uses-permission android:name=\"android.permission.MOUNT_UNMOUNT_FILESYSTEMS\"/>",
+                    "<uses-permission android:name=\"android.permission.VIBRATE\"/>",
+                    "<uses-permission android:name=\"android.permission.READ_LOGS\"/>",
+                    "<uses-permission android:name=\"android.permission.ACCESS_WIFI_STATE\"/>",
+                    "<uses-feature android:name=\"android.hardware.camera.autofocus\"/>",
+                    "<uses-permission android:name=\"android.permission.ACCESS_NETWORK_STATE\"/>",
+                    "<uses-permission android:name=\"android.permission.CAMERA\"/>",
+                    "<uses-permission android:name=\"android.permission.GET_ACCOUNTS\"/>",
+                    "<uses-permission android:name=\"android.permission.READ_PHONE_STATE\"/>",
+                    "<uses-permission android:name=\"android.permission.CHANGE_WIFI_STATE\"/>",
+                    "<uses-permission android:name=\"android.permission.WAKE_LOCK\"/>",
+                    "<uses-permission android:name=\"android.permission.FLASHLIGHT\"/>",
+                    "<uses-feature android:name=\"android.hardware.camera\"/>",
+                    "<uses-permission android:name=\"android.permission.WRITE_SETTINGS\"/>"
+                ]
+            },
+            /* ios鎵撳寘閰嶇疆 */
+            "ios" : {
+                "dSYMs" : false
+            },
+            /* SDK閰嶇疆 */
+            "sdkConfigs" : {
+                "ad" : {}
+            }
+        }
+    },
+    /* 蹇簲鐢ㄧ壒鏈夌浉鍏� */
+    "quickapp" : {},
+    /* 灏忕▼搴忕壒鏈夌浉鍏� */
+    "mp-weixin" : {
+        "appid" : "",
+        "setting" : {
+            "urlCheck" : false
+        },
+        "usingComponents" : true
+    },
+    "mp-alipay" : {
+        "usingComponents" : true
+    },
+    "mp-baidu" : {
+        "usingComponents" : true
+    },
+    "mp-toutiao" : {
+        "usingComponents" : true
+    },
+    "uniStatistics" : {
+        "enable" : false
+    },
+    "vueVersion" : "2"
+}
diff --git a/pda/pages.json b/pda/pages.json
index 1ee5126..6d9ccbf 100644
--- a/pda/pages.json
+++ b/pda/pages.json
@@ -44,6 +44,13 @@
 				"navigationBarTitleText": "閰嶇疆鏄剧ず鏈堝彴",
 				"enablePullDownRefresh": false
 			}
+		},
+		{
+			"path": "pages/index/SubDetail",
+			"style": {
+				"navigationBarTitleText": "棰勭害璇︽儏",
+				"enablePullDownRefresh": false
+			}
 		}
 	],
 	"globalStyle": {
diff --git a/pda/pages/index/SubDetail.vue b/pda/pages/index/SubDetail.vue
new file mode 100644
index 0000000..c554aa8
--- /dev/null
+++ b/pda/pages/index/SubDetail.vue
@@ -0,0 +1,466 @@
+<template>
+  <view class="main_app">
+    <view class="status_wrap">
+      <view class="name">{{info.driverName}}鐨勫叆鍥绾�</view>
+      <view class="gray">{{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>
+    </view>
+    <!--  -->
+    <view class="emyty"></view>
+    <view class="module_list">
+      <view class="item">
+        <view class="label">鍏ュ洯鍘熷洜</view>
+        <view class="value">{{info.inReason}}</view>
+      </view>
+      <view class="item">
+        <view class="label">鍚堝悓缂栧彿</view>
+        <view class="value">{{info.contractNum}}</view>
+      </view>
+			<view class="item">
+			  <view class="label">鍒板満鏃堕棿</view>
+			  <view v-if="info.arriveDate" class="value">{{info.arriveDate.slice(0,16)}}</view>
+			</view>
+			<view class="item">
+			  <view class="label">鍑嗚繍璇佺収鐗�</view>
+			  <view class="value">
+					<image
+						v-if="info.transportImg"
+					  class="avatar_wrap"
+					  :src="info.prefixUrl + info.transportImg"
+					></image>
+				</view>
+			</view>
+			<view class="item">
+			  <view class="label">鍏ュ簱绫诲瀷</view>
+			  <view class="value">{{info.inType == 0 ? '鏁存墭鐩�' : '浠剁儫'}}</view>
+			</view>
+			<view class="item">
+			  <view class="label">鎬昏繍鏁伴噺</view>
+			  <view class="value">{{info.totalNum}}涓囨敮</view>
+			</view>
+      <view class="emyty"></view>
+      <view class="item">
+        <view class="label">鍙告満濮撳悕</view>
+        <view class="value">{{info.driverName}}
+        </view>
+      </view>
+      <view class="item">
+        <view class="label">鎵嬫満鍙�</view>
+        <view class="value">{{info.driverPhone}}</view>
+      </view>
+			<view class="item">
+			  <view class="label">杞︾墝鐓�</view>
+			  <view class="value">鍓� {{info.carCodeFront}}锛屽悗 {{info.carCodeBack}}</view>
+			</view>
+    </view>
+    <!-- 娴佺▼ -->
+    <view class="flow_wrap">
+      <view class="flow_title">娴佺▼</view>
+      <view class="list" v-if="
+          info.approveDateVO != null && info.approveDateVO.approveList != null
+        ">
+      	<view class="item" v-for="(item, index) in info.approveDateVO.approveList" :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" />
+						<image v-else-if="item.faceImg" :src="item.faceImg" class="img"></image>
+      			<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>
+</template>
+
+<script>
+	import { driverApplyDetail } from '@/api'
+export default {
+  data() {
+    return {
+      showApprModal: false,
+			checkInfo: '',
+			infoStatus: '',
+			flag: '1',
+      info: {},
+			type: 0,
+			statusMap: {
+				0: '寰呭鎵�',
+				1: '瀹℃壒涓�',
+				2: '宸查�氳繃',
+				3: '宸叉嫆缁�',
+				4: '宸插彇娑�',
+			},
+    }
+  },
+	onLoad(option) {
+		// this.type = option.objType
+		// this.infoStatus = option.info
+		this.getDetail(option.id)
+	},
+  methods: {
+		getDetail(id) {
+			driverApplyDetail({id}).then(res => {
+				this.info = res.data
+				if(this.info.approveDateVO && this.info.approveDateVO.approveList.length > 0 ){
+					this.info.approveDateVO.approveList.forEach(item => {
+						if(item.approveList && item.approveList.length == 1 && item.type !== 1){
+							item.title = item.approveList[0].title
+							item.faceImg = item.approveList[0].faceImg
+							item.memberName = item.approveList[0].memberName
+							item.statusInfo = item.approveList[0].statusInfo
+							item.approveList = []
+						}
+					})
+				}
+				console.log('this.info.approveDateVO', this.info.approveDateVO.approveList);
+			})
+		},
+  },
+}
+</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_wrap {
+          margin-right: 20rpx;
+          width: 120rpx;
+          height: 120rpx;
+          border-radius: 8rpx;
+          border: 2rpx solid #e5e5e5;
+        }
+
+        .info {
+          flex: 1;
+          display: flex;
+          flex-direction: column;
+          justify-content: space-between;
+          font-size: 26rpx;
+          color: #666666;
+
+          .name {
+            font-size: 30rpx;
+            color: #333333;
+          }
+        }
+      }
+    }
+  }
+
+  .status_wrap {
+    position: relative;
+    padding: 30rpx 0;
+
+    .name {
+      font-weight: 600;
+      font-size: 32rpx;
+      margin-bottom: 20rpx;
+      color: #222222;
+    }
+		
+    .desc {
+      font-size: 26rpx;
+      color: #ed4545;
+			margin-bottom: 12rpx;
+    }
+		.gray {
+			color: #999999;
+			margin-bottom: 12rpx;
+		}
+
+    .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;
+    }
+		.icon{
+			width: 120rpx;
+			height: 120rpx;
+			border-radius: 50%;
+			position: absolute;
+			right: 0rpx;
+			top: 20rpx;
+			
+		}
+  }
+
+  .main_footer {
+    padding-bottom: 64rpx;
+    display: flex;
+    justify-content: space-between;
+
+    .btn {
+      width: 336rpx;
+      height: 88rpx;
+      line-height: 88rpx;
+      background: #ffffff;
+      border-radius: 44rpx;
+      border: 1rpx solid #999999;
+      font-size: 32rpx;
+      text-align: center;
+      margin: 16rpx 0;
+    }
+
+    .agree {
+      background: $uni-color-primary;
+      color: #fff;
+      border: 1rpx solid $uni-color-primary;
+    }
+  }
+
+  .appr_modal {
+    padding: 36rpx 30rpx 0;
+
+    .title {
+      font-weight: 600;
+      font-size: 32rpx;
+      color: #222222;
+      margin-bottom: 40rpx;
+      text-align: center;
+    }
+
+    textarea {
+      box-sizing: border-box;
+      width: 690rpx;
+      background-color: #f7f7f7;
+      font-size: 28rpx;
+      color: #333333;
+      padding: 24rpx;
+      border-radius: 8rpx;
+      margin-bottom: 30rpx;
+    }
+  }
+
+  .emyty {
+    width: 750rpx;
+    height: 20rpx;
+    background-color: #f7f7f7;
+    margin: 0 -30rpx;
+  }
+}
+</style>
diff --git a/pda/pages/index/center.vue b/pda/pages/index/center.vue
index 478bfab..1452c7a 100644
--- a/pda/pages/index/center.vue
+++ b/pda/pages/index/center.vue
@@ -39,7 +39,8 @@
 				</view>
 				<view class="line" v-else>
 					<text class="label">鍚堝悓鍗曞彿</text>
-					<text class="value">{{ item.contractNum }}</text>
+					<text class="value">{{ item.contractNum }}</text>
+					<text class="primaryColor" @click="subDetail(item)">棰勭害璇︽儏</text>
 				</view>
 				<view class="line">
 					<text class="label">椹鹃┒鍛�</text>
@@ -103,7 +104,8 @@
 							</view>
 							<view class="line" v-else>
 								<text class="label">鍚堝悓鍗曞彿</text>
-								<text class="value">{{ item.contractNum }}</text>
+								<text class="value">{{ item.contractNum }}</text>
+								<text class="primaryColor" @click="subDetail(item)">棰勭害璇︽儏</text>
 							</view>
 							<view class="line">
 								<text class="label">椹鹃┒鍛�</text>
@@ -325,6 +327,11 @@
 					this.wmsInfo = res.data
 					this.showDetail = true
 				})
+			},
+			subDetail(item) {
+				uni.navigateTo({
+				  url: `/pages/index/SubDetail?id=${item.bookId}`
+				})
 			},
 			handleFinish(item) {
 				finishWork({
diff --git a/pda/pages/index/login.vue b/pda/pages/index/login.vue
index 8a53efa..e07389e 100644
--- a/pda/pages/index/login.vue
+++ b/pda/pages/index/login.vue
@@ -42,8 +42,8 @@
   data() {
     return {
       form: {
-        username: '13996529050',
-        password: '123456',
+        username: '',
+        password: '',
       },
 			err: '',
       isShowProtocol: false,
diff --git a/pda/pages/index/queueup.vue b/pda/pages/index/queueup.vue
index f3e8a24..816e324 100644
--- a/pda/pages/index/queueup.vue
+++ b/pda/pages/index/queueup.vue
@@ -46,6 +46,7 @@
         <view class="line" v-else>
           <text class="label">鍚堝悓鍗曞彿</text>
           <text class="value">{{ item.contractNum }}</text>
+					<text class="primaryColor" @click="subDetail(item)">棰勭害璇︽儏</text>
         </view>
         <view class="line">
           <text class="label">椹鹃┒鍛�</text>
@@ -163,6 +164,11 @@
       	this.showDetail = true
       })
     },
+		subDetail(item) {
+			uni.navigateTo({
+			  url: `/pages/index/SubDetail?id=${item.bookId}`
+			})
+		},
     getPlatformGroup() {
       getPlatformGroupList({
         queryData: 1,
diff --git a/pda/static/ic_passed@2x.png b/pda/static/ic_passed@2x.png
new file mode 100644
index 0000000..97d3aa1
--- /dev/null
+++ b/pda/static/ic_passed@2x.png
Binary files differ
diff --git a/pda/static/ic_refused@2x.png b/pda/static/ic_refused@2x.png
new file mode 100644
index 0000000..87fb1d0
--- /dev/null
+++ b/pda/static/ic_refused@2x.png
Binary files differ
diff --git a/pda/static/staff/ic_chaosong@2x.png b/pda/static/staff/ic_chaosong@2x.png
new file mode 100644
index 0000000..8743f53
--- /dev/null
+++ b/pda/static/staff/ic_chaosong@2x.png
Binary files differ
diff --git a/pda/static/staff/ic_shenpiren@2x.png b/pda/static/staff/ic_shenpiren@2x.png
new file mode 100644
index 0000000..6f2c7c9
--- /dev/null
+++ b/pda/static/staff/ic_shenpiren@2x.png
Binary files differ
diff --git a/pda/static/staff/liucheng_fail@2x.png b/pda/static/staff/liucheng_fail@2x.png
new file mode 100644
index 0000000..c686a8c
--- /dev/null
+++ b/pda/static/staff/liucheng_fail@2x.png
Binary files differ
diff --git a/pda/static/staff/liucheng_success@2x.png b/pda/static/staff/liucheng_success@2x.png
new file mode 100644
index 0000000..9fb9e77
--- /dev/null
+++ b/pda/static/staff/liucheng_success@2x.png
Binary files differ
diff --git a/pda/unpackage/release/apk/__UNI__8789FB4__20241018164933.apk b/pda/unpackage/release/apk/__UNI__8789FB4__20241018164933.apk
new file mode 100644
index 0000000..304d595
--- /dev/null
+++ b/pda/unpackage/release/apk/__UNI__8789FB4__20241018164933.apk
Binary files differ
diff --git a/pda/unpackage/release/apk/pda.apk b/pda/unpackage/release/apk/pda.apk
new file mode 100644
index 0000000..b25044c
--- /dev/null
+++ b/pda/unpackage/release/apk/pda.apk
Binary files differ
diff --git a/pda/unpackage/res/icons/1024x1024.png b/pda/unpackage/res/icons/1024x1024.png
new file mode 100644
index 0000000..8e5ccd4
--- /dev/null
+++ b/pda/unpackage/res/icons/1024x1024.png
Binary files differ
diff --git a/pda/unpackage/res/icons/120x120.png b/pda/unpackage/res/icons/120x120.png
new file mode 100644
index 0000000..650cc00
--- /dev/null
+++ b/pda/unpackage/res/icons/120x120.png
Binary files differ
diff --git a/pda/unpackage/res/icons/144x144.png b/pda/unpackage/res/icons/144x144.png
new file mode 100644
index 0000000..1b2fc49
--- /dev/null
+++ b/pda/unpackage/res/icons/144x144.png
Binary files differ
diff --git a/pda/unpackage/res/icons/152x152.png b/pda/unpackage/res/icons/152x152.png
new file mode 100644
index 0000000..0bc20ba
--- /dev/null
+++ b/pda/unpackage/res/icons/152x152.png
Binary files differ
diff --git a/pda/unpackage/res/icons/167x167.png b/pda/unpackage/res/icons/167x167.png
new file mode 100644
index 0000000..bd290e8
--- /dev/null
+++ b/pda/unpackage/res/icons/167x167.png
Binary files differ
diff --git a/pda/unpackage/res/icons/180x180.png b/pda/unpackage/res/icons/180x180.png
new file mode 100644
index 0000000..93ab56f
--- /dev/null
+++ b/pda/unpackage/res/icons/180x180.png
Binary files differ
diff --git a/pda/unpackage/res/icons/192x192.png b/pda/unpackage/res/icons/192x192.png
new file mode 100644
index 0000000..e6e6595
--- /dev/null
+++ b/pda/unpackage/res/icons/192x192.png
Binary files differ
diff --git a/pda/unpackage/res/icons/20x20.png b/pda/unpackage/res/icons/20x20.png
new file mode 100644
index 0000000..ceaeb7c
--- /dev/null
+++ b/pda/unpackage/res/icons/20x20.png
Binary files differ
diff --git a/pda/unpackage/res/icons/29x29.png b/pda/unpackage/res/icons/29x29.png
new file mode 100644
index 0000000..154fa02
--- /dev/null
+++ b/pda/unpackage/res/icons/29x29.png
Binary files differ
diff --git a/pda/unpackage/res/icons/40x40.png b/pda/unpackage/res/icons/40x40.png
new file mode 100644
index 0000000..d1c2b47
--- /dev/null
+++ b/pda/unpackage/res/icons/40x40.png
Binary files differ
diff --git a/pda/unpackage/res/icons/58x58.png b/pda/unpackage/res/icons/58x58.png
new file mode 100644
index 0000000..a4cc188
--- /dev/null
+++ b/pda/unpackage/res/icons/58x58.png
Binary files differ
diff --git a/pda/unpackage/res/icons/60x60.png b/pda/unpackage/res/icons/60x60.png
new file mode 100644
index 0000000..d42638d
--- /dev/null
+++ b/pda/unpackage/res/icons/60x60.png
Binary files differ
diff --git a/pda/unpackage/res/icons/72x72.png b/pda/unpackage/res/icons/72x72.png
new file mode 100644
index 0000000..f6ef39e
--- /dev/null
+++ b/pda/unpackage/res/icons/72x72.png
Binary files differ
diff --git a/pda/unpackage/res/icons/76x76.png b/pda/unpackage/res/icons/76x76.png
new file mode 100644
index 0000000..afed12c
--- /dev/null
+++ b/pda/unpackage/res/icons/76x76.png
Binary files differ
diff --git a/pda/unpackage/res/icons/80x80.png b/pda/unpackage/res/icons/80x80.png
new file mode 100644
index 0000000..e0b8ee0
--- /dev/null
+++ b/pda/unpackage/res/icons/80x80.png
Binary files differ
diff --git a/pda/unpackage/res/icons/87x87.png b/pda/unpackage/res/icons/87x87.png
new file mode 100644
index 0000000..09839e1
--- /dev/null
+++ b/pda/unpackage/res/icons/87x87.png
Binary files differ
diff --git a/pda/unpackage/res/icons/96x96.png b/pda/unpackage/res/icons/96x96.png
new file mode 100644
index 0000000..dcccdbc
--- /dev/null
+++ b/pda/unpackage/res/icons/96x96.png
Binary files differ

--
Gitblit v1.9.3