From 8f2ad5eb040a2f3f1cae62a9c099c8f5f66750e1 Mon Sep 17 00:00:00 2001
From: k94314517 <8417338+k94314517@user.noreply.gitee.com>
Date: 星期三, 09 十月 2024 16:18:04 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/master'

---
 h5/static/driver/ic_dangqian.png                                                                                                            |    0 
 server/system_service/src/main/java/com/doumee/core/utils/Constants.java                                                                    |    1 
 admin/src/views/vehicle/category.vue                                                                                                        |  120 +++
 admin/src/views/statistics/platformRecord.vue                                                                                               |   20 
 server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/PlatformEventMapper.java                                                |    3 
 admin/src/assets/style/style.scss                                                                                                           |    5 
 admin/src/views/vehicle/components/OperaCategoryWindow.vue                                                                                  |   79 ++
 h5/static/driver/ic_mostarted.png                                                                                                           |    0 
 server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/admin/PlatformEventCloudController.java                                          |   91 ++
 admin/.env.production                                                                                                                       |    2 
 screen/src/views/PlatformCall.vue                                                                                                           |   46 
 admin/src/api/business/category.js                                                                                                          |   11 
 admin/src/views/vehicle/cars.vue                                                                                                            |  250 ++++---
 h5_meeting/pages/index/index.vue                                                                                                            |  248 ++++---
 admin/src/views/business/platformEvent.vue                                                                                                  |  161 +++++
 admin/src/api/business/platformEvent.js                                                                                                     |   18 
 h5_meeting/unpackage/release/apk/__UNI__EF8BAA7__20241008151948.apk                                                                         |    0 
 admin/.env.development                                                                                                                      |    2 
 admin/src/views/vehicle/parkBook.vue                                                                                                        |    4 
 server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/hksync/HkSyncLoginAuthServiceImpl.java                         |    2 
 h5/pages.json                                                                                                                               |    7 
 admin/src/components/business/OperaTrainTimeImportWindow.vue                                                                                |    2 
 h5/pages/waybill/waybillDetail.vue                                                                                                          |  207 ++++++
 server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/PlatformEvent.java                                                |   24 
 admin/src/views/platform/queueUp.vue                                                                                                        |   40 
 server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/MemberServiceImpl.java                                         |    1 
 admin/src/api/platform/index.js                                                                                                             |    4 
 admin/src/views/platform/LogisticsRecord/leaveAuth.vue                                                                                      |    7 
 server/visits/dmvisit_service/src/main/java/com/doumee/core/haikang/model/param/respose/PlatformCameraInfoResponse.java                     |    2 
 server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/hksync/HkSyncImgServiceImpl.java                               |   36 +
 h5/static/driver/wuliuche_bg@2x.png                                                                                                         |    0 
 admin/src/components/system/user/RoleConfigWindow.vue                                                                                       |    6 
 server/system_service/src/main/java/com/doumee/core/utils/HttpsUtil.java                                                                    |   36 +
 /dev/null                                                                                                                                   |   93 --
 admin/src/views/business/visitorManagement.vue                                                                                              |    6 
 server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/admin/PlatformDeviceCloudController.java                                         |   28 
 server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/hksync/HkSyncPushServiceImpl.java                              |   19 
 admin/.env.test                                                                                                                             |    2 
 server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/PlatformEventServiceImpl.java                                  |  111 ++-
 admin/src/views/business/relativeMember.vue                                                                                                 |    2 
 admin/src/views/platform/index.vue                                                                                                          |    6 
 admin/src/api/business/company.js                                                                                                           |    4 
 server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/CompanyServiceImpl.java                                        |    8 
 server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/hksync/HkSyncPlatformsServiceImpl.java                         |    2 
 server/visits/dmvisit_service/src/main/java/com/doumee/core/haikang/model/param/request/event/parks/EventPlatformCarsStatusInfoRequest.java |    2 
 admin/src/components/business/OperaCarsWindow.vue                                                                                           |  158 +++-
 h5_meeting/pages/index/config.vue                                                                                                           |   10 
 47 files changed, 1,390 insertions(+), 496 deletions(-)

diff --git a/admin/.env.development b/admin/.env.development
index f279109..8dd310d 100644
--- a/admin/.env.development
+++ b/admin/.env.development
@@ -2,6 +2,6 @@
 NODE_ENV = 'development'
 
 VUE_APP_API_URL  = 'http://localhost:10010'
-# VUE_APP_API_URL  = 'http://192.168.0.101:10010'
+# VUE_APP_API_URL  = 'http://192.168.0.103:10010'
 VUE_APP_API_URL  = 'http://10.50.250.253:8088/gateway_interface'
 
diff --git a/admin/.env.production b/admin/.env.production
index 5a7a449..7406b0f 100644
--- a/admin/.env.production
+++ b/admin/.env.production
@@ -1,4 +1,4 @@
 # 鐢熶骇鐜閰嶇疆
 NODE_ENV = 'production'
 
-VUE_APP_API_URL  = 'http://10.50.250.178:8088/gateway_interface'
+# VUE_APP_API_URL  = 'http://10.50.250.178:8088/gateway_interface'
diff --git a/admin/.env.test b/admin/.env.test
index 0e7cb4a..2d37af3 100644
--- a/admin/.env.test
+++ b/admin/.env.test
@@ -1,4 +1,4 @@
 # 娴嬭瘯鐜閰嶇疆
 NODE_ENV = 'production'
 
-VUE_APP_API_URL  = 'http://192.168.5.13/gateway_interface'
+# VUE_APP_API_URL  = 'http://192.168.5.13/gateway_interface'
diff --git a/admin/src/api/business/category.js b/admin/src/api/business/category.js
index f912616..76cddde 100644
--- a/admin/src/api/business/category.js
+++ b/admin/src/api/business/category.js
@@ -6,12 +6,21 @@
     trim: true
   })
 }
+// 涓�绾у垎绫绘煡璇�
+export function fetchCateList (data) {
+  return request.post('/visitsAdmin/cloudService/business/category/list', data, {
+    trim: true
+  })
+}
 
 // 鍒涘缓
 export function create (data) {
   return request.post('/visitsAdmin/cloudService/business/category/create', data)
 }
-
+// 璇︽儏
+export function getInfoById (id) {
+  return request.get('/visitsAdmin/cloudService/business/category/' + id)
+}
 // 淇敼
 export function updateById (data) {
   return request.post('/visitsAdmin/cloudService/business/category/updateById', data)
diff --git a/admin/src/api/business/company.js b/admin/src/api/business/company.js
index b1b1863..dd0434d 100644
--- a/admin/src/api/business/company.js
+++ b/admin/src/api/business/company.js
@@ -37,6 +37,10 @@
 export function companySync (data) {
   return request.post('/visitsAdmin/cloudService/business/company/syncAll', data)
 }
+// 鍒嗛〉鏌ヨ
+export function companyGetList (data) {
+  return request.post('/visitsAdmin/cloudService/business/company/page', data)
+}
 
 // 鍒犻櫎
 export function deleteById (id) {
diff --git a/admin/src/api/business/platformEvent.js b/admin/src/api/business/platformEvent.js
new file mode 100644
index 0000000..8dc388c
--- /dev/null
+++ b/admin/src/api/business/platformEvent.js
@@ -0,0 +1,18 @@
+import request from '../../utils/request'
+
+// 鏌ヨ
+export function fetchList (data) {
+  return request.post('/visitsAdmin/cloudService/business/platformEvent/page', data, {
+    trim: true
+  })
+}
+
+// 瀵煎嚭Excel
+export function exportExcel (data) {
+  return request.post('/visitsAdmin/cloudService/business/platformEvent/exportExcel', data, {
+    trim: true,
+    download: true
+  })
+}
+
+
diff --git a/admin/src/api/platform/index.js b/admin/src/api/platform/index.js
index fc0eaa6..4e85937 100644
--- a/admin/src/api/platform/index.js
+++ b/admin/src/api/platform/index.js
@@ -97,6 +97,10 @@
 export function platformJobPage(data) {
   return request.post('/visitsAdmin/cloudService/business/platformJob/page', data)
 }
+// 缁熻鏈堝彴浣滀笟浠诲姟 鍒嗛〉鍒楄〃
+export function platformLogPage(data) {
+  return request.post('/visitsAdmin/cloudService/business/platformLog/page', data)
+}
 // 鏈堝彴浣滀笟缁熻 鍒嗛〉鍒楄〃
 export function platformWorkReportPage(data) {
   return request.post('/visitsAdmin/cloudService/business/platform/platformWorkReportPage', data)
diff --git a/admin/src/assets/style/style.scss b/admin/src/assets/style/style.scss
index 0bcff9d..f6a469f 100644
--- a/admin/src/assets/style/style.scss
+++ b/admin/src/assets/style/style.scss
@@ -291,6 +291,11 @@
 .df{
   display: flex;
 }
+.df_center{
+  display: flex;
+  align-items: center;
+  justify-content: center;
+}
 .df_ac{
   display: flex;
   align-items: center;
diff --git a/admin/src/components/business/OperaCarsWindow.vue b/admin/src/components/business/OperaCarsWindow.vue
index 966e8f2..f8bfc58 100644
--- a/admin/src/components/business/OperaCarsWindow.vue
+++ b/admin/src/components/business/OperaCarsWindow.vue
@@ -1,45 +1,52 @@
 <template>
-    <GlobalWindow
-        :title="title"
-        width="500px"
-        :visible.sync="visible"
-        :confirm-working="isWorking"
-        @confirm="confirm"
-    >
-      <el-form :model="form" ref="form" :rules="rules">
-          <el-form-item label="杞︾墝鍙�" prop="code">
-            <el-input v-model="form.code" placeholder="璇疯緭鍏ヨ溅鐗屽彿" v-trim/>
-          </el-form-item>
-          <el-form-item label="杞﹁締绫诲瀷" prop="type">
-            <el-radio-group v-model="form.type" >
-              <el-radio  :label="0"  >瀹夋嘲鍏姟杞�</el-radio>
-              <el-radio  :label="1"  >瀹夋嘲鐗╂祦杞�</el-radio>
-              <el-radio  :label="2"  >鍏朵粬</el-radio>
-            </el-radio-group>
-          </el-form-item>
-          <el-form-item label="閫夋嫨杞︿富锛�" prop="memberId">
-            <el-select v-model="form.memberId" clearable filterable placeholder="璇烽�夋嫨">
-              <el-option
-                  v-for="item in memberList"
-                  :key="item.id"
-                  :label="item.name"
-                  :value="item.id">
-              </el-option>
-            </el-select>
-          </el-form-item>
-        </el-form>
-    </GlobalWindow>
+  <GlobalWindow :title="title" width="500px" @close="close" :visible.sync="visible" :confirm-working="isWorking" @confirm="confirm">
+    <el-form :model="form" ref="form" :rules="rules">
+      <el-form-item label="杞︾墝鍙�" prop="code">
+        <el-input v-model="form.code" placeholder="璇疯緭鍏ヨ溅鐗屽彿" v-trim />
+      </el-form-item>
+      <el-form-item label="杞﹁締绫诲瀷" prop="type">
+        <el-radio-group v-model="form.type">
+          <el-radio :label="0">瀹夋嘲鍏姟杞�</el-radio>
+          <el-radio :label="1">瀹夋嘲鐗╂祦杞�</el-radio>
+          <el-radio :label="2">鍏朵粬</el-radio>
+        </el-radio-group>
+      </el-form-item>
+      <el-form-item label="閫夋嫨鍒嗙被锛�" prop="type">
+        <el-cascader v-model="form.cateId" @change="changeSel" :options="cateList" :props="{
+          label: 'name',
+          value: 'id',
+          children: 'childCategoryList',
+        }"></el-cascader>
+      </el-form-item>
+      <el-form-item label="閫夋嫨缁勭粐锛�" prop="groupId">
+        <el-select v-model="form.groupId" @change="changeSel" clearable filterable placeholder="璇烽�夋嫨">
+          <el-option v-for="item in companyList" :key="item.id" :label="item.name" :value="item.id">
+          </el-option>
+        </el-select>
+      </el-form-item>
+      <el-form-item label="閫夋嫨杞︿富锛�" prop="memberId">
+        <el-select v-model="form.memberId" clearable filterable placeholder="璇烽�夋嫨">
+          <el-option v-for="item in memberList" :key="item.id" :label="item.name" :value="item.id">
+          </el-option>
+        </el-select>
+      </el-form-item>
+    </el-form>
+  </GlobalWindow>
 </template>
 
 <script>
 import BaseOpera from '@/components/base/BaseOpera'
 import GlobalWindow from '@/components/common/GlobalWindow'
 import { allList } from '@/api/business/member'
+import { fetchList } from '@/api/business/category.js'
+import { create, updateById } from '@/api/business/cars'
+import { companyGetList } from '@/api/business/company'
+import { Message } from 'element-ui'
 export default {
   name: 'OperaInternalCompanyWindow',
   extends: BaseOpera,
   components: { GlobalWindow },
-  data () {
+  data() {
     return {
       // 琛ㄥ崟鏁版嵁
       memberList: [],
@@ -47,49 +54,112 @@
         id: null,
         code: null,
         memberId: null,
-        type: 0
+        type: 0,
+        groupId: null,
+        cateId: [],
       },
+      cateList: [],
+      companyList: [],
       // 楠岃瘉瑙勫垯
       rules: {
-        code: [
-          { required: true, message: '璇疯緭鍏ヨ溅鐗屽彿' }
-        ],
+        code: [{ required: true, message: '璇疯緭鍏ヨ溅鐗屽彿' }],
+        groupId: [{ required: true, message: '璇烽�夋嫨缁勭粐' }],
         type: [
           { required: true, message: '璇烽�夋嫨杞﹁締绫诲瀷' }
         ]
       }
     }
   },
-  created () {
+  created() {
     this.config({
       api: '/business/cars',
       'field.id': 'id'
     })
   },
   methods: {
-    open (title, target) {
+    open(title, target) {
       this.title = title
       this.visible = true
-      this.loadMember()
+      this.getCate()
+      this.getCompany()
       // 鏂板缓缁勭粐
       if (target == null) {
         this.$nextTick(() => {
           this.$refs.form.resetFields()
           this.form[this.configData['field.id']] = null
-          this.form.type=0
+          this.form.type = 0
         })
         return
       }
       // 缂栬緫
-      this.$nextTick(() => {
-        for (const key in this.form) {
-          this.form[key] = target[key]
+      // this.$nextTick(() => {
+      //   for (const key in this.form) {
+      //     this.form[key] = target[key]
+      //   }
+      // })
+    },
+    changeSel() {
+      const { form } = this
+      if (form.groupId) {
+        this.loadMember()
+      }
+    },
+    confirm() {
+      console.log('form', this.form.cateId)
+      const { form } = this
+      if(form.cateId && form.cateId.length == 2){
+
+      }else{
+        return Message.error('璇烽�夋嫨浜岀骇鍒嗙被')
+      }
+      this.$refs['form'].validate((valid) => {
+        if (valid) {
+          let fn = form.id ? updateById : create
+          fn({
+            ...form,
+            cateId: form.cateId[1]
+          }).then(res => {
+            Message.success('淇濆瓨鎴愬姛')
+            this.visible = false
+            this.$emit('success')
+          })
         }
       })
+
     },
-    loadMember () {
+    close() {
+      this.visible = false
+      this.$emit('close')
+    },
+    handleChange(val) {
+
+    },
+    getCate() {
+      fetchList({
+        model: {},
+        capacity: 1000,
+        page: 1,
+      }).then(res => {
+        this.cateList = res.records || []
+
+      })
+    },
+    getCompany() {
+      companyGetList({
+        model: {},
+        capacity: 1000,
+        page: 1,
+      }).then(res => {
+        this.companyList = res.records || []
+
+      })
+    },
+    loadMember() {
+      const { form } = this
       allList({
-        type: 2
+        type: 2,
+        companyId: form.groupId,
+
       })
         .then(res => {
           this.memberList = res
diff --git a/admin/src/components/business/OperaCategoryWindow.vue b/admin/src/components/business/OperaCategoryWindow.vue
deleted file mode 100644
index d170a56..0000000
--- a/admin/src/components/business/OperaCategoryWindow.vue
+++ /dev/null
@@ -1,59 +0,0 @@
-<template>
-    <GlobalWindow
-        :title="title"
-        :visible.sync="visible"
-        :confirm-working="isWorking"
-        @confirm="confirm"
-    >
-        <el-form :model="form" ref="form" :rules="rules">
-            <el-form-item label="缁勭粐绫诲瀷" prop="name">
-                <el-input v-model="form.name" placeholder="璇疯緭鍏ョ粍缁囩被鍨�" v-trim/>
-            </el-form-item>
-            <el-form-item label="鐘舵��" prop="status">
-                <el-select v-model="form.status" placeholder="璇烽�夋嫨">
-                    <el-option label="鍚敤" value="0"></el-option>
-                    <el-option label="绂佺敤" value="1"></el-option>
-                </el-select>
-            </el-form-item>
-            <el-form-item label="澶囨敞" prop="remark">
-                <el-input type="textarea" v-model="form.remark" placeholder="璇疯緭鍏ュ娉�" v-trim/>
-            </el-form-item>
-        </el-form>
-    </GlobalWindow>
-</template>
-
-<script>
-import BaseOpera from '@/components/base/BaseOpera'
-import GlobalWindow from '@/components/common/GlobalWindow'
-export default {
-  name: 'OperaCategoryWindow',
-  extends: BaseOpera,
-  components: { GlobalWindow },
-  data () {
-    return {
-      // 琛ㄥ崟鏁版嵁
-      form: {
-        id: null,
-        name: '',
-        remark: '',
-        status: ''
-      },
-      // 楠岃瘉瑙勫垯
-      rules: {
-        name: [
-          { required: true, message: '璇疯緭鍏ョ粍缁囩被鍨�', trigger: 'blur' }
-        ],
-        status: [
-          { required: true, message: '璇烽�夋嫨鏄惁鍚敤', trigger: 'change' }
-        ]
-      }
-    }
-  },
-  created () {
-    this.config({
-      api: '/business/category',
-      'field.id': 'id'
-    })
-  }
-}
-</script>
diff --git a/admin/src/components/business/OperaTrainTimeImportWindow.vue b/admin/src/components/business/OperaTrainTimeImportWindow.vue
index 07bdf26..7e578bf 100644
--- a/admin/src/components/business/OperaTrainTimeImportWindow.vue
+++ b/admin/src/components/business/OperaTrainTimeImportWindow.vue
@@ -12,7 +12,7 @@
       1.璇峰厛涓嬭浇鏂囦欢妯℃澘锛屽苟鎸夌収妯℃澘瑕佸幓濉啓琛ㄦ牸鍐呭;<br>
     </p>
     <el-form class="demo-form-inline" >
-      <el-form-item label="浜哄憳鍩硅鏈熷悕鍗�" required>
+      <el-form-item label="浜哄憳鍚嶅崟" required>
         <div style="width: 100%;display: flex;align-items: center;">
           <el-button type="primary" :loading="importing"   @click="clickRef">鐐瑰嚮涓婁紶</el-button>
           <el-button type="text" @click="exportTemplate">鐐瑰嚮涓嬭浇妯$増.EXCEL</el-button>
diff --git a/admin/src/components/system/user/RoleConfigWindow.vue b/admin/src/components/system/user/RoleConfigWindow.vue
index 5b029f7..35fb877 100644
--- a/admin/src/components/system/user/RoleConfigWindow.vue
+++ b/admin/src/components/system/user/RoleConfigWindow.vue
@@ -2,13 +2,14 @@
   <GlobalWindow
     :visible.sync="visible"
     :confirm-working="isWorking"
-    width="582px"
+    width="620px"
     title="閰嶇疆鐢ㄦ埛瑙掕壊"
     @confirm="confirm"
   >
     <p class="tip" v-if="user != null">涓虹敤鎴� <em>{{user.realname}}</em> 閰嶇疆瑙掕壊</p>
     <p class="tip-warn"><i class="el-icon-warning"></i>鎻愰啋锛氳鑹查厤缃悗闇�閲嶆柊鐧诲綍鍚庣敓鏁�</p>
-    <el-transfer
+    <div class="df_center">
+      <el-transfer
       v-model="selectedIds"
       :titles="['鏈巿鏉冭鑹�', '宸叉巿鏉冭鑹�']"
       :props="{
@@ -17,6 +18,7 @@
       }"
       :data="roles">
     </el-transfer>
+    </div>
   </GlobalWindow>
 </template>
 
diff --git a/admin/src/views/business/category.vue b/admin/src/views/business/category.vue
deleted file mode 100644
index fda2f2b..0000000
--- a/admin/src/views/business/category.vue
+++ /dev/null
@@ -1,93 +0,0 @@
-<template>
-    <TableLayout :permissions="['business:category:query']">
-        <!-- 鎼滅储琛ㄥ崟 -->
-        <el-form ref="searchForm" slot="search-form" :model="searchForm" label-width="100px" inline>
-            <el-form-item label="鍚嶇О" prop="name">
-                <el-input v-model="searchForm.name" placeholder="璇疯緭鍏ュ悕绉�" @keypress.enter.native="search"></el-input>
-            </el-form-item>
-            <el-form-item label="鐘舵��" prop="status">
-                <el-select v-model="searchForm.status" placeholder="璇烽�夋嫨">
-                    <el-option label="鍚敤" value="0"></el-option>
-                    <el-option label="绂佺敤" value="1"></el-option>
-                </el-select>
-            </el-form-item>
-            <section>
-                <el-button type="primary" @click="search">鎼滅储</el-button>
-                <el-button @click="reset">閲嶇疆</el-button>
-            </section>
-        </el-form>
-        <!-- 琛ㄦ牸鍜屽垎椤� -->
-        <template v-slot:table-wrap>
-            <ul class="toolbar" v-permissions="['business:category:create', 'business:category:delete']">
-                <li><el-button type="primary" @click="$refs.operaCategoryWindow.open('鏂板缓鍒嗙被淇℃伅琛�')" icon="el-icon-plus" v-permissions="['business:category:create']">鏂板缓</el-button></li>
-                <li><el-button @click="deleteByIdInBatch" icon="el-icon-delete" v-permissions="['business:category:delete']">鍒犻櫎</el-button></li>
-            </ul>
-            <el-table
-                v-loading="isWorking.search"
-                :data="tableData.list"
-                stripe
-                @selection-change="handleSelectionChange"
-            >
-                <el-table-column type="selection" width="55"></el-table-column>
-                <el-table-column prop="name" label="缁勭粐绫诲瀷" min-width="100px"></el-table-column>
-                <el-table-column prop="remark" label="澶囨敞" min-width="100px"></el-table-column>
-                <el-table-column prop="status" label="鐘舵��" min-width="100px">
-                    <template slot-scope="{row}">
-                        <span v-if="row.status === 0">鍚敤</span>
-                        <span v-if="row.status === 1">绂佺敤</span>
-                    </template>
-                </el-table-column>
-                <el-table-column prop="createDate" label="鍒涘缓鏃堕棿" min-width="100px"></el-table-column>
-                <el-table-column
-                    v-if="containPermissions(['business:category:update', 'business:category:delete'])"
-                    label="鎿嶄綔"
-                    min-width="120"
-                    fixed="right"
-                >
-                    <template slot-scope="{row}">
-                        <el-button type="text" @click="$refs.operaCategoryWindow.open('缂栬緫鍒嗙被淇℃伅琛�', row)" icon="el-icon-edit" v-permissions="['business:category:update']">缂栬緫</el-button>
-                        <el-button type="text" @click="deleteById(row)" icon="el-icon-delete" v-permissions="['business:category:delete']">鍒犻櫎</el-button>
-                    </template>
-                </el-table-column>
-            </el-table>
-            <pagination
-                @size-change="handleSizeChange"
-                @current-change="handlePageChange"
-                :pagination="tableData.pagination"
-            >
-            </pagination>
-        </template>
-        <!-- 鏂板缓/淇敼 -->
-        <OperaCategoryWindow ref="operaCategoryWindow" @success="handlePageChange"/>
-    </TableLayout>
-</template>
-
-<script>
-import BaseTable from '@/components/base/BaseTable'
-import TableLayout from '@/layouts/TableLayout'
-import Pagination from '@/components/common/Pagination'
-import OperaCategoryWindow from '@/components/business/OperaCategoryWindow'
-export default {
-  name: 'Category',
-  extends: BaseTable,
-  components: { TableLayout, Pagination, OperaCategoryWindow },
-  data () {
-    return {
-      // 鎼滅储
-      searchForm: {
-        name: '',
-        status: ''
-      }
-    }
-  },
-  created () {
-    this.config({
-      module: '鍒嗙被淇℃伅琛�',
-      api: '/business/category',
-      'field.id': 'id',
-      'field.main': 'id'
-    })
-    this.search()
-  }
-}
-</script>
diff --git a/admin/src/views/business/platformEvent.vue b/admin/src/views/business/platformEvent.vue
new file mode 100644
index 0000000..d0b6bc8
--- /dev/null
+++ b/admin/src/views/business/platformEvent.vue
@@ -0,0 +1,161 @@
+<template>
+    <TableLayout :permissions="['business:interfacelog:query']">
+        <!-- 鎼滅储琛ㄥ崟 -->
+        <el-form ref="searchForm" slot="search-form" :model="searchForm" label-width="100px" inline>
+          <el-form-item label="" prop="platformName">
+            <el-input v-model="searchForm.platformName" placeholder="璇疯緭鍏ユ湀鍙板悕绉�" @keypress.enter.native="search"></el-input>
+          </el-form-item>
+          <el-form-item label="" prop="channelName">
+            <el-input v-model="searchForm.channelName" placeholder="璇疯緭鍏ョ洃鎺х偣鍚嶇О" @keypress.enter.native="search"></el-input>
+          </el-form-item>
+          <el-form-item label="" prop="plateNo">
+            <el-input v-model="searchForm.plateNo" placeholder="璇疯緭鍏ヨ溅鐗屽彿" @keypress.enter.native="search"></el-input>
+          </el-form-item>
+          <el-form-item label="" prop="eventType">
+            <el-select v-model="searchForm.motionStatus" placeholder="璇烽�夋嫨杩涘嚭绫诲瀷">
+              <el-option label="绂诲紑" value="leave"></el-option>
+              <el-option label="杩涘叆" value="enter"></el-option>
+            </el-select>
+          </el-form-item>
+          <el-form-item label="璧锋鏃堕棿" prop="startDate">
+                <el-date-picker
+                    @change="seleTime"
+                    v-model="time"
+                    type="datetimerange"
+                    format="yyyy-MM-dd HH:mm:ss"
+                    value-format="yyyy-MM-dd HH:mm:ss"
+                    range-separator="鑷�"
+                    start-placeholder="寮�濮嬫椂闂�"
+                    end-placeholder="缁撴潫鏃堕棿">
+                </el-date-picker>
+            </el-form-item>
+            <el-radio-group v-model="searchForm.radio" size="small" @input="changeRadio">
+                <el-radio-button label="0">褰撳ぉ</el-radio-button>
+                <el-radio-button label="1">杩�7澶�</el-radio-button>
+                <el-radio-button label="2">杩�30澶�</el-radio-button>
+            </el-radio-group>
+            <section>
+                <el-button type="primary" @click="search">鎼滅储</el-button>
+                <el-button @click="reset">閲嶇疆</el-button>
+            </section>
+        </el-form>
+        <!-- 琛ㄦ牸鍜屽垎椤� -->
+        <template v-slot:table-wrap>
+            <el-table
+                v-loading="isWorking.search"
+                :data="tableData.list"
+                stripe
+            >
+                <el-table-column prop="platformName" label="鏈堝彴鍚嶇О" min-width="180px"></el-table-column>
+                <el-table-column prop="channelName" label="鐩戞帶鐐瑰悕绉�" min-width="180px"></el-table-column>
+                <el-table-column prop="plateNo" label="杞︾墝鍙�" min-width="180px"></el-table-column>
+                <el-table-column   label="杞﹁締杩涘嚭绫诲瀷" min-width="180px">
+                  <template slot-scope="{row}">
+                    <span v-if="row.motionStatus == 'enter'">杩涘叆span>
+                    <span v-if="row.motionStatus == 'leave'">绂诲紑</span>
+                    <span v-if="row.motionStatus != 'leave' && row.motionStatus != 'enter'">{{ row.motionStatus }}</span>
+                  </template>
+                </el-table-column>
+                <el-table-column   label="鍓嶅悗鏍囪瘑" min-width="180px">
+                  <template slot-scope="{row}">
+                    <span v-if="row.stockStatus == 'rear'">杞﹀熬</span>
+                    <span v-if="row.stockStatus == 'front'">杞﹀ご</span>
+                    <span v-if="row.stockStatus != 'rear' && row.stockStatus != 'front'">{{ row.stockStatus }}</span>
+                  </template>
+                </el-table-column>
+                <el-table-column prop="stockStatus" label="杞﹂棬鐘舵��" min-width="180px"></el-table-column>
+                <el-table-column label="杞﹂棬鐘舵��" min-width="100px">
+                    <template slot-scope="{row}">
+                        <span v-if="row.vehicleDoorStatus == 'open'">寮�闂�</span>
+                        <span v-if="row.vehicleDoorStatus == 'close'">鍏抽棬</span>
+                        <span v-if="row.vehicleDoorStatus != 'open' && row.vehicleDoorStatus != 'close'">{{ row.vehicleDoorStatus }}</span>
+                    </template>
+                </el-table-column>
+                <el-table-column prop="deviceId" label="璁惧缂栫爜" min-width="150px"></el-table-column>
+                <el-table-column prop="ipAddress" label="IP鍦板潃" min-width="100px"></el-table-column>
+                <el-table-column prop="portNo" label="绔彛" min-width="100px"></el-table-column>
+                <el-table-column fixed="right" label="鎶撴媿鍥�" min-width="100px">
+                  <template slot-scope="{row}">
+                    <el-image v-if="row.backgroundImageDown" style="width: 60px; height: 60px" :src="row.backgroundImageDown"
+                              :preview-src-list="[row.backgroundImageDown]">
+                    </el-image>
+                  </template>
+                </el-table-column>
+                <el-table-column prop="createDate" label="鍒涘缓鏃堕棿" min-width="100px"></el-table-column>
+            </el-table>
+            <pagination
+                @size-change="handleSizeChange"
+                @current-change="handlePageChange"
+                :pagination="tableData.pagination"
+            >
+            </pagination>
+        </template>
+    </TableLayout>
+</template>
+
+<script>
+import BaseTable from '@/components/base/BaseTable'
+import TableLayout from '@/layouts/TableLayout'
+import Pagination from '@/components/common/Pagination'
+import { timeForMat } from '@/utils/util'
+export default {
+  name: 'platformEvent',
+  extends: BaseTable,
+  components: { TableLayout, Pagination },
+  data () {
+    return {
+      // 鎼滅储
+      searchForm: {
+        plateNo: '',
+        motionStatus: '',
+        channelName: '',
+        platformName: '',
+        endDate: '',
+        startDate: '',
+        radio: '0'
+      },
+      time: []
+    }
+  },
+  created () {
+    this.config({
+      module: '鏈堝彴杞﹁締鐘舵�佷簨浠朵氦浜掕褰�',
+      api: '/business/platformEvent',
+      'field.id': 'id',
+      'field.main': 'id'
+    })
+    this.changeRadio('0')
+  },
+  methods: {
+    changeRadio (e) {
+      if (e === '0') {
+        this.searchForm.startDate = timeForMat(0)[0]
+        this.searchForm.endDate = timeForMat(0)[1]
+        this.time = timeForMat(0)
+      } else if (e === '1') {
+        this.searchForm.startDate = timeForMat(6)[0]
+        this.searchForm.endDate = timeForMat(6)[1]
+        this.time = timeForMat(6)
+      } else if (e === '2') {
+        this.searchForm.startDate = timeForMat(29)[0]
+        this.searchForm.endDate = timeForMat(29)[1]
+        this.time = timeForMat(29)
+      }
+      this.search()
+    },
+    seleTime (e) {
+      this.searchForm.startDate = e[0]
+      this.searchForm.endDate = e[1]
+      this.searchForm.radio = null
+      this.search()
+    },
+    reset () {
+      this.$refs.searchForm.resetFields()
+      this.searchForm.startDate = ''
+      this.searchForm.endDate = ''
+      this.time = []
+      this.search()
+    }
+  }
+}
+</script>
diff --git a/admin/src/views/business/relativeMember.vue b/admin/src/views/business/relativeMember.vue
index 8baf6ad..5452250 100644
--- a/admin/src/views/business/relativeMember.vue
+++ b/admin/src/views/business/relativeMember.vue
@@ -61,7 +61,7 @@
         <li><el-button type="primary" @click="$refs.OperaMemberImportWindow.open('浜哄憳瀵煎叆', searchForm.companyType)"
             icon="el-icon-plus" v-permissions="['business:member:create']">浜哄憳瀵煎叆</el-button></li>
         <li><el-button type="primary"
-            @click="$refs.OperaTrainTimeImportWindow.open('鍩硅鏈熷鍏�', department, searchForm.companyType)"
+            @click="$refs.OperaTrainTimeImportWindow.open('鍩硅鏈夋晥鏈熷鍏�', department, searchForm.companyType)"
             icon="el-icon-plus" v-permissions="['business:traintime:create']">鍩硅鏈熷鍏�</el-button></li>
         <li><el-button type="danger" @click="deleteByIdInBatch" icon="el-icon-delete"
             v-permissions="['business:member:delete']">鎵归噺鍒犻櫎</el-button></li>
diff --git a/admin/src/views/business/visitorManagement.vue b/admin/src/views/business/visitorManagement.vue
index 04cffad..fe0cd12 100644
--- a/admin/src/views/business/visitorManagement.vue
+++ b/admin/src/views/business/visitorManagement.vue
@@ -8,8 +8,8 @@
             <el-form-item label="鎵嬫満鍙�" prop="phone">
                 <el-input v-model="searchForm.phone" placeholder="璇疯緭鍏ユ墜鏈哄彿" @keypress.enter.native="search"></el-input>
             </el-form-item>
-            <el-form-item label="缁勭粐鍚嶇О" prop="companyName">
-                <el-input v-model="searchForm.companyName" placeholder="璇疯緭鍏ョ粍缁囧悕绉�" @keypress.enter.native="search"></el-input>
+            <el-form-item label="鍏徃鍚嶇О" prop="companyName">
+                <el-input v-model="searchForm.companyName" placeholder="璇疯緭鍏ュ叕鍙稿悕绉�" @keypress.enter.native="search"></el-input>
             </el-form-item>
             <el-form-item label="韬唤璇佸彿" prop="idcardNo">
                 <el-input v-model="searchForm.idcardNo" placeholder="璇疯緭鍏ヨ韩浠借瘉鍙�" @keypress.enter.native="search"></el-input>
@@ -54,7 +54,7 @@
                     </template>
                 </el-table-column>
                 <el-table-column prop="idcardDecode" label="韬唤璇佸彿" width="150px"></el-table-column>
-                <el-table-column prop="visitCompanyName" label="缁勭粐" min-width="100px"></el-table-column>
+                <el-table-column prop="visitCompanyName" label="鍏徃" min-width="100px"></el-table-column>
                 <el-table-column prop="visitTimes" label="鎷滆娆℃暟" min-width="100px"></el-table-column>
                 <el-table-column prop="lastVisitDate" label="鏈�鍚庢嫓璁挎椂闂�" min-width="100px"></el-table-column>
             </el-table>
diff --git a/admin/src/views/platform/LogisticsRecord/leaveAuth.vue b/admin/src/views/platform/LogisticsRecord/leaveAuth.vue
index 5a0dfa0..688c2ef 100644
--- a/admin/src/views/platform/LogisticsRecord/leaveAuth.vue
+++ b/admin/src/views/platform/LogisticsRecord/leaveAuth.vue
@@ -50,8 +50,9 @@
       <el-table-column prop="remark" label="澶囨敞" min-width="150" show-overflow-tooltip />
       <el-table-column label="鎿嶄綔" align="center" fixed="right" min-width="100" show-overflow-tooltip>
         <template v-slot="scope">
-          <el-button type="text" v-permissions="['business:platformbooks:detail']"
+          <el-button v-if="scope.row.status == 6" type="text" v-permissions="['business:platformbooks:detail']"
             @click="handleAuth(scope.row)">绂诲洯鎺堟潈</el-button>
+            <span v-else>-</span>
         </template>
       </el-table-column>
     </el-table>
@@ -178,8 +179,8 @@
       this.$prompt('澶囨敞', '绂诲洯鎺堟潈', {
         confirmButtonText: '纭畾',
         cancelButtonText: '鍙栨秷',
-      }).then(({ remark }) => {
-        platformPowerLevel({ jobId: row.id, remark }).then(res => {
+      }).then(({ value }) => {
+        platformPowerLevel({ jobId: row.id, remark: value }).then(res => {
           Message.success('绂诲洯鎺堟潈鎴愬姛')
           this.getList()
         })
diff --git a/admin/src/views/platform/index.vue b/admin/src/views/platform/index.vue
index 6be4435..8f4bacf 100644
--- a/admin/src/views/platform/index.vue
+++ b/admin/src/views/platform/index.vue
@@ -314,6 +314,12 @@
       this.$nextTick(() => {
         this.$refs.PlatformQueuingRef.isShowModal = true
         this.$refs.PlatformQueuingRef.callType = callType
+        this.$refs.PlatformQueuingRef.carCodeFront = ''
+        this.$refs.PlatformQueuingRef.pagination = {
+          total: 0,
+          pageSize: 10,
+          page: 1
+        }
         this.$refs.PlatformQueuingRef.activePlat = { ...item }
         this.$refs.PlatformQueuingRef.getList()
         this.$refs.PlatformQueuingRef.title = item.name
diff --git a/admin/src/views/platform/queueUp.vue b/admin/src/views/platform/queueUp.vue
index b19f7ea..20aff75 100644
--- a/admin/src/views/platform/queueUp.vue
+++ b/admin/src/views/platform/queueUp.vue
@@ -21,7 +21,7 @@
         <span></span>
       </div>
     </div>
-    <el-table class="mb20" v-loading="loading" :data="dataList" stripe row-key="id" default-expand-all>
+    <el-table v-if="activeGroup.type == 2" class="mb20" v-loading="loading" :data="dataList" stripe row-key="id" default-expand-all>
       <el-table-column type="index" label="搴忓彿" width="80" />
       <el-table-column label="杞︾墝鍙�" width="130">
         <template slot-scope="{ row }">
@@ -33,13 +33,9 @@
           </div>
         </template>
       </el-table-column>
-      <el-table-column v-if="activeGroup.type == 2" prop="contractNum" label="鍚堝悓鍗曞彿" min-width="120" />
-      <template v-else>
-        <el-table-column prop="carrierName" label="杩愯緭鍏徃" min-width="120" />
-        <el-table-column prop="billCode" label="杩愬崟鍙�" min-width="120" />
-      </template>
+      <el-table-column prop="contractNum" label="鍚堝悓鍗曞彿" min-width="120" />
       <el-table-column prop="totalNum" label="鎬昏繍杈撻噺(涓囨敮)" min-width="110" />
-      <el-table-column prop="driverName" label="椹鹃┒鍛�" min-width="130">
+      <el-table-column label="椹鹃┒鍛�" min-width="130">
         <template slot-scope="{ row }">
           <span class="mr10">{{ row.driverName }}</span>
           <span>{{ row.drivierPhone }}</span>
@@ -48,12 +44,38 @@
       <el-table-column prop="signDate" label="绛惧埌鏃堕棿" min-width="150" />
       <el-table-column label="鎿嶄綔" align="center" width="100" fixed="right">
         <template slot-scope="{ row }">
-          <el-button v-if="activeGroup.type != 2" type="text" @click="handleDetail(row)"
-            v-permissions="['business:company:update']">杩愬崟璇︽儏</el-button>
           <el-button v-if="activeGroup.type == 2" type="text" @click="subDetail(row)">棰勭害璇︽儏</el-button>
         </template>
       </el-table-column>
     </el-table>
+    <el-table v-else class="mb20" v-loading="loading" :data="dataList" stripe row-key="id" default-expand-all>
+      <el-table-column type="index" label="搴忓彿" width="80" />
+      <el-table-column label="杞︾墝鍙�" width="130">
+        <template slot-scope="{ row }">
+          <div class="plate_id">
+            <span>{{ row.carCodeFront.slice(0, 1) }}</span>
+            <span>{{ row.carCodeFront.slice(1, 2) }}</span>
+            <span>路</span>
+            <span>{{ row.carCodeFront.slice(2) }}</span>
+          </div>
+        </template>
+      </el-table-column>
+      <el-table-column prop="carrierName" label="杩愯緭鍏徃" min-width="120" />
+      <el-table-column prop="totalNum" label="鎬昏繍杈撻噺(涓囨敮)" min-width="110" />
+      <el-table-column label="椹鹃┒鍛�" min-width="130">
+        <template slot-scope="{ row }">
+          <span class="mr10">{{ row.driverName }}</span>
+          <span>{{ row.drivierPhone }}</span>
+        </template>
+      </el-table-column>
+      <el-table-column prop="signDate" label="绛惧埌鏃堕棿" min-width="150" />
+      <el-table-column label="鎿嶄綔" align="center" width="100" fixed="right">
+        <template slot-scope="{ row }">
+          <el-button type="text" @click="handleDetail(row)"
+            v-permissions="['business:company:update']">杩愬崟璇︽儏</el-button>
+        </template>
+      </el-table-column>
+    </el-table>
     <pagination @size-change="handleSizeChange" @current-change="handlePageChange" :pagination="pagination" />
 
     <!--  -->
diff --git a/admin/src/views/statistics/platformRecord.vue b/admin/src/views/statistics/platformRecord.vue
index 1d71124..49f98e1 100644
--- a/admin/src/views/statistics/platformRecord.vue
+++ b/admin/src/views/statistics/platformRecord.vue
@@ -6,9 +6,10 @@
       <el-table-column prop="platformGroupName" label="鏈堝彴缁�" min-width="100" show-overflow-tooltip />
       <el-table-column prop="carCodeFront" label="杞﹀墠鐗岀収鍙�" min-width="100" show-overflow-tooltip />
       <el-table-column prop="carCodeBack" label="杞﹀悗鐗岀収鍙�" min-width="100" show-overflow-tooltip />
-      <el-table-column prop="startDate" label="浣滀笟寮�濮�" min-width="100" show-overflow-tooltip />
-      <el-table-column prop="doneDate" label="浣滀笟缁撴潫" min-width="100" show-overflow-tooltip />
-      <el-table-column prop="workTime" label="浣滀笟鏃堕暱" min-width="100" show-overflow-tooltip /><el-table-column prop="name"
+      <el-table-column prop="param1" label="浣滀笟寮�濮�" min-width="100" show-overflow-tooltip />
+      <el-table-column prop="param2" label="浣滀笟缁撴潫" min-width="100" show-overflow-tooltip />
+      <el-table-column prop="workTime" label="浣滀笟鏃堕暱" min-width="100" show-overflow-tooltip />
+      <el-table-column prop="name"
         label="杩愯緭鍗曞彿/鍚堝悓鍙�" min-width="100" show-overflow-tooltip>
         <template v-slot="scope">
           <span>{{ scope.row.billCode || scope.row.contractNum }}</span>
@@ -26,8 +27,8 @@
 import QueryForm from '@/components/common/QueryForm'
 import dayjs from 'dayjs'
 import duration from 'dayjs/plugin/duration'
-dayjs.extend(duration);
-import { platformJobPage, getPlatformGroupList } from '@/api'
+dayjs.extend(duration)
+import { platformLogPage, getPlatformGroupList } from '@/api'
 export default {
   components: {
     Pagination,
@@ -86,7 +87,7 @@
       })
     },
     getGroupList() {
-      getPlatformGroupList({queryData: 0,queryType: 0}).then(res => {
+      getPlatformGroupList({ queryData: 0, queryType: 0 }).then(res => {
         this.queryFormConfig.formItems[1].options = res.map(i => {
           return {
             value: i.id,
@@ -99,13 +100,14 @@
     getList(page) {
       const { pagination, filters } = this
       this.loading = true
-      platformJobPage({
+      platformLogPage({
         model: {
           ...filters,
-          queryStatus: '5,6,9,10',
+          queryStatus: '6,7,8',
           beginWorkDateStart: filters.selDate && filters.selDate.length > 0 ? filters.selDate[0] : null,
           beginWorkDateEnd: filters.selDate && filters.selDate.length > 0 ? filters.selDate[1] : null,
         },
+        sorts: [{ direction: 'DESC', property: 'param1' }],
         capacity: pagination.pageSize,
         page: page || pagination.page,
       }).then(res => {
@@ -114,7 +116,7 @@
         this.list.forEach(item => {
           item.inTypeTemp = item.inType == 0 ? '鏁存墭鐩�' : '浠剁儫'
           item.taskOrigin = 'WMS鑾峰彇'
-          item.workTime = dayjs.duration(item.workTime, 'seconds').format('H鏃秏鍒唖绉�');
+          item.workTime = dayjs.duration(item.param3, 'seconds').format('H鏃秏鍒唖绉�')
         })
         this.pagination.total = res.total || 0
       }, () => {
diff --git a/admin/src/views/vehicle/cars.vue b/admin/src/views/vehicle/cars.vue
index 55d2b4e..2477ce4 100644
--- a/admin/src/views/vehicle/cars.vue
+++ b/admin/src/views/vehicle/cars.vue
@@ -1,113 +1,116 @@
 <template>
-    <TableLayout :permissions="['business:member:query']">
-        <!-- 鎼滅储琛ㄥ崟 -->
-        <el-form ref="searchForm" slot="search-form" :model="searchForm" label-width="100px" inline>
-            <el-form-item label="" prop="code" title="杞︾墝鍙�">
-                <el-input v-model="searchForm.code" clearable placeholder="杞︾墝鍙�" @keypress.enter.native="search"></el-input>
-            </el-form-item>
-          <el-form-item label="" prop="memberName" title="杞︿富濮撳悕/鎵嬫満鍙�">
-            <el-input v-model="searchForm.memberName" clearable placeholder="杞︿富濮撳悕/鎵嬫満鍙�" @keypress.enter.native="search"></el-input>
-          </el-form-item>
-          <el-form-item label="" prop="companyName" title="杞︿富閮ㄩ棬鍚嶇О">
-            <el-input v-model="searchForm.companyName" clearable placeholder="杞︿富閮ㄩ棬鍚嶇О" @keypress.enter.native="search"></el-input>
-          </el-form-item>
-          <el-form-item label="" prop="authStatus" title="鏄惁鎺堟潈">
-            <el-select v-model="searchForm.authStatus" @change="search" clearable placeholder="鏄惁鎺堟潈">
-              <el-option label="宸叉巿鏉�" value="1"></el-option>
-              <el-option label="鏈巿鏉�" value="0"></el-option>
-            </el-select>
-          </el-form-item>
-          <el-form-item label="" prop="type" title="杞﹁締绫诲瀷">
-            <el-select v-model="searchForm.type" @change="search" clearable placeholder="杞﹁締绫诲瀷">
-             <el-option label="瀹夋嘲鍏姟杞�" value="0"></el-option>
-              <el-option label="瀹夋嘲鑷湁鐗╂祦杞�" value="1"></el-option>
-              <el-option label="鍏朵粬" value="2"></el-option>
-          </el-select>
-          </el-form-item>
-                      <section>
-                <el-button type="primary" @click="search">鎼滅储</el-button>
-                <el-button @click="reset">閲嶇疆</el-button>
-            </section>
-        </el-form>
-        <!-- 琛ㄦ牸鍜屽垎椤� -->
-        <template v-slot:table-wrap>
-            <ul class="toolbar" v-permissions="['business:cars:create', 'business:parkBook:create']">
-                <li><el-button type="primary" @click="$refs.operaCarsWindow.open('鏂板缓杞﹁締')" icon="el-icon-plus" v-permissions="['business:cars:create']">鏂板缓</el-button></li>
-                <li><el-button type="primary" @click="startEmpowerBatch" icon="el-icon-plus" v-permissions="['business:parkbook:create']">涓嬪彂鎺堟潈</el-button></li>
-            </ul>
-            <el-table
-                v-loading="isWorking.search"
-                :data="tableData.list"
-                stripe
-                @selection-change="handleSelectionChange"
-            >
-                <el-table-column type="selection" width="55"></el-table-column>
-                <el-table-column prop="code" label="杞︾墝鍙�" min-width="100px"></el-table-column>
-                <el-table-column label="杞﹁締绫诲瀷" min-width="100px">
-                    <template slot-scope="{row}">
-                      <span v-if="row.type == 0" >瀹夋嘲鍏姟杞�</span>
-                      <span v-if="row.type == 1">瀹夋嘲鑷湁鐗╂祦杞�</span>
-                      <span v-if="row.type == 2" >鍏朵粬</span>
-                    </template>
-                </el-table-column>
-              <el-table-column prop="memberName" label="杞︿富濮撳悕"  min-width="100px"></el-table-column>
-              <el-table-column prop="memberPhone" label="杞︿富鎵嬫満鍙�" min-width="100px"></el-table-column>
-              <el-table-column prop="companyName" label="杞︿富缁勭粐" min-width="200px"></el-table-column>
-              <el-table-column label="鏄惁鎺堟潈" align="center" min-width="100px">
-                <template slot-scope="{row}">
-                  <span v-if="row.authStatus == 1" style="color: green">鏄�</span>
-                  <span v-else style="color: red">鍚�</span>
-                </template>
-              </el-table-column>
-              <el-table-column prop="parksName" align="center" label="宸叉巿鏉冨仠杞﹀満" min-width="200px">
-                <template slot-scope="{row}">
-                  <div  v-if="row.parkBookList && row.parkBookList.length" >
-                    <span v-for="item in row.parkBookList"  :key="item.id" style="display: block">
-                      <span  :style="(item.hkStatus== 0?'color:#2080f7':(item.hkStatus== 1?'color:green':(item.hkStatus== 2?'color:red':'')))">銆恵{item.hkStatus== 0?'绛夊緟涓嬪彂':(item.hkStatus== 1?'涓嬪彂鎴愬姛':(item.hkStatus== 2?'涓嬪彂澶辫触':''))}}銆� </span>{{item.parksName}}
-                    </span>
-                  </div>
-                  <span  v-if="row.parkBookList ==null ||row.parkBookList.length ==0">-</span>
-                </template>
-              </el-table-column>
-              <el-table-column label="涓嬪彂鏈夋晥鏈�" align="center" min-width="170px">
-                <template slot-scope="{row}">
-                  <div v-if="row.authStatus !=null && row.authStatus == 1 && row.parkBookList!=null && row.parkBookList.length>0">
-                    <div v-if="!row.startTime || !row.endTime">闀挎湡鏈夋晥</div>
-                    <div v-else>
-                      <span style="color: green">璧凤細{{row.startTime}}</span><br/>
-                      <span style="color: red">姝細{{row.endTime}}</span>
-                    </div>
-                  </div>
-                  <div v-else >-</div>
-                </template>
-              </el-table-column>
-                <el-table-column prop="editorName" label="鎿嶄綔浜�" min-width="100px"></el-table-column>
-                <el-table-column prop="editDate" label="鎿嶄綔鏃堕棿" min-width="140px"></el-table-column>
-              <el-table-column
-                  v-if="containPermissions(['business:member:update', 'business:member:delete','business:empower:create'])"
-                  label="鎿嶄綔"
-                  min-width="200"
-                  align="center"
-                  fixed="right"
-              >
-                <template slot-scope="{row}">
-                  <el-button type="text" icon="el-icon-edit" @click="$refs.operaCarsWindow.open('缂栬緫杞﹁締淇℃伅',row)" v-permissions="['business:cars:update']">缂栬緫</el-button>
-                  <el-button type="text" icon="el-icon-edit" @click="$refs.operaCarAuthWindow.open('涓嬪彂鎺堟潈',[row.id],[row.code])" v-permissions="['business:parkbook:create']">涓嬪彂鎺堟潈</el-button>
-                  <el-button  type="text"  icon="el-icon-delete" @click="deleteById(row)" style="color: red" v-permissions="['business:empower:delete']">鍒犻櫎</el-button>
-                </template>
-              </el-table-column>
-            </el-table>
-            <pagination
-                @size-change="handleSizeChange"
-                @current-change="handlePageChange"
-                :pagination="tableData.pagination"
-            >
-            </pagination>
-        </template>
-        <!-- 鏂板缓/淇敼 -->
-        <OperaCarAuthWindow ref="operaCarAuthWindow" @success="handlePageChange"/>
-        <OperaCarsWindow ref="operaCarsWindow" @success="handlePageChange"/>
-    </TableLayout>
+  <TableLayout :permissions="['business:member:query']">
+    <!-- 鎼滅储琛ㄥ崟 -->
+    <el-form ref="searchForm" slot="search-form" :model="searchForm" label-width="100px" inline>
+      <el-form-item label="" prop="code" title="杞︾墝鍙�">
+        <el-input v-model="searchForm.code" clearable placeholder="杞︾墝鍙�" @keypress.enter.native="search"></el-input>
+      </el-form-item>
+      <el-form-item label="" prop="memberName" title="杞︿富淇℃伅">
+        <el-input v-model="searchForm.memberName" clearable placeholder="杞︿富淇℃伅"
+          @keypress.enter.native="search"></el-input>
+      </el-form-item>
+      <!-- <el-form-item label="" prop="cateName" title="杞﹁締鍒嗙被鍚嶇О">
+        <el-input v-model="searchForm.cateName" clearable placeholder="杞﹁締鍒嗙被鍚嶇О"
+          @keypress.enter.native="search"></el-input>
+      </el-form-item> -->
+      <el-form-item label="" prop="companyName" title="杞︿富缁勭粐鍚嶇О">
+        <el-input v-model="searchForm.companyName" clearable placeholder="杞︿富缁勭粐鍚嶇О"
+          @keypress.enter.native="search"></el-input>
+      </el-form-item>
+      <el-form-item label="" prop="authStatus" title="鏄惁鎺堟潈">
+        <el-select v-model="searchForm.authStatus" @change="search" clearable placeholder="鏄惁鎺堟潈">
+          <el-option label="宸叉巿鏉�" value="1"></el-option>
+          <el-option label="鏈巿鏉�" value="0"></el-option>
+        </el-select>
+      </el-form-item>
+      <el-form-item label="" prop="type" title="杞﹁締绫诲瀷">
+        <el-select v-model="searchForm.type" @change="search" clearable placeholder="杞﹁締绫诲瀷">
+          <el-option label="瀹夋嘲鍏姟杞�" value="0"></el-option>
+          <el-option label="瀹夋嘲鑷湁鐗╂祦杞�" value="1"></el-option>
+          <el-option label="鍏朵粬" value="2"></el-option>
+        </el-select>
+      </el-form-item>
+      <section>
+        <el-button type="primary" @click="search">鎼滅储</el-button>
+        <el-button @click="reset">閲嶇疆</el-button>
+      </section>
+    </el-form>
+    <!-- 琛ㄦ牸鍜屽垎椤� -->
+    <template v-slot:table-wrap>
+      <ul class="toolbar" v-permissions="['business:cars:create', 'business:parkBook:create']">
+        <li><el-button type="primary" @click="handleEdit" icon="el-icon-plus"
+            v-permissions="['business:cars:create']">鏂板缓</el-button></li>
+        <li><el-button type="primary" @click="startEmpowerBatch" icon="el-icon-plus"
+            v-permissions="['business:parkbook:create']">涓嬪彂鎺堟潈</el-button></li>
+      </ul>
+      <el-table v-loading="isWorking.search" :data="tableData.list" stripe @selection-change="handleSelectionChange">
+        <el-table-column type="selection" width="55"></el-table-column>
+        <el-table-column prop="code" label="杞︾墝鍙�" min-width="100px"></el-table-column>
+        <el-table-column label="杞﹁締绫诲瀷" min-width="120px">
+          <template slot-scope="{row}">
+            <span v-if="row.type == 0">瀹夋嘲鍏姟杞�</span>
+            <span v-if="row.type == 1">瀹夋嘲鑷湁鐗╂祦杞�</span>
+            <span v-if="row.type == 2">鍏朵粬</span>
+          </template>
+        </el-table-column>
+        <el-table-column prop="memberName" label="杞︿富濮撳悕" min-width="100px"></el-table-column>
+        <el-table-column prop="memberPhone" label="杞︿富鎵嬫満鍙�" min-width="100px"></el-table-column>
+        <el-table-column prop="cateName" label="杞﹁締鍒嗙被" min-width="160px"></el-table-column>
+        <el-table-column prop="companyName" label="杞︿富缁勭粐" min-width="200px"></el-table-column>
+        <el-table-column label="鏄惁鎺堟潈" align="center" min-width="100px">
+          <template slot-scope="{row}">
+            <span v-if="row.authStatus == 1" style="color: green">鏄�</span>
+            <span v-else style="color: red">鍚�</span>
+          </template>
+        </el-table-column>
+        <el-table-column prop="parksName" align="center" label="宸叉巿鏉冨仠杞﹀満" min-width="200px">
+          <template slot-scope="{row}">
+            <div v-if="row.parkBookList && row.parkBookList.length">
+              <span v-for="item in row.parkBookList" :key="item.id" style="display: block">
+                <span
+                  :style="(item.hkStatus == 0 ? 'color:#2080f7' : (item.hkStatus == 1 ? 'color:green' : (item.hkStatus == 2 ? 'color:red' : '')))">銆恵{ item.hkStatus ==
+                    0 ? '绛夊緟涓嬪彂' : (item.hkStatus == 1 ? '涓嬪彂鎴愬姛' : (item.hkStatus == 2?'涓嬪彂澶辫触':''))}}銆� </span>{{ item.parksName }}
+              </span>
+            </div>
+            <span v-if="row.parkBookList == null || row.parkBookList.length == 0">-</span>
+          </template>
+        </el-table-column>
+        <el-table-column label="涓嬪彂鏈夋晥鏈�" align="center" min-width="170px">
+          <template slot-scope="{row}">
+            <div
+              v-if="row.authStatus != null && row.authStatus == 1 && row.parkBookList != null && row.parkBookList.length > 0">
+              <div v-if="!row.startTime || !row.endTime">闀挎湡鏈夋晥</div>
+              <div v-else>
+                <span style="color: green">璧凤細{{ row.startTime }}</span><br />
+                <span style="color: red">姝細{{ row.endTime }}</span>
+              </div>
+            </div>
+            <div v-else>-</div>
+          </template>
+        </el-table-column>
+        <el-table-column prop="editorName" label="鎿嶄綔浜�" min-width="100px"></el-table-column>
+        <el-table-column prop="editDate" label="鎿嶄綔鏃堕棿" min-width="140px"></el-table-column>
+        <el-table-column
+          v-if="containPermissions(['business:member:update', 'business:member:delete', 'business:empower:create'])"
+          label="鎿嶄綔" min-width="200" align="center" fixed="right">
+          <template slot-scope="{row}">
+            <el-button type="text" icon="el-icon-edit" @click="handleEdit(row)"
+              v-permissions="['business:cars:update']">缂栬緫</el-button>
+            <el-button type="text" icon="el-icon-edit"
+              @click="$refs.operaCarAuthWindow.open('涓嬪彂鎺堟潈', [row.id], [row.code])"
+              v-permissions="['business:parkbook:create']">涓嬪彂鎺堟潈</el-button>
+            <el-button type="text" icon="el-icon-delete" @click="deleteById(row)" style="color: red"
+              v-permissions="['business:empower:delete']">鍒犻櫎</el-button>
+          </template>
+        </el-table-column>
+      </el-table>
+      <pagination @size-change="handleSizeChange" @current-change="handlePageChange" :pagination="tableData.pagination">
+      </pagination>
+    </template>
+    <!-- 鏂板缓/淇敼 -->
+    <OperaCarAuthWindow ref="operaCarAuthWindow" @success="handlePageChange" />
+    <OperaCarsWindow v-if="isShowEdit" ref="operaCarsWindow" @close="isShowEdit = false" @success="handlePageChange" />
+  </TableLayout>
 </template>
 
 <script>
@@ -119,20 +122,21 @@
 export default {
   name: 'Cars',
   extends: BaseTable,
-  components: { TableLayout, Pagination, OperaCarsWindow,OperaCarAuthWindow },
-  data () {
+  components: { TableLayout, Pagination, OperaCarsWindow, OperaCarAuthWindow },
+  data() {
     return {
       // 鎼滅储
       searchForm: {
         code: '',
         memberName: '',
         companyName: '',
-        type:null,
-        authStatus:null
-      }
+        type: null,
+        authStatus: null
+      },
+      isShowEdit: false
     }
   },
-  created () {
+  created() {
     this.config({
       module: '杞﹁締淇℃伅琛�',
       api: '/business/cars',
@@ -142,8 +146,22 @@
     this.search()
   },
   methods: {
+    handleEdit(row) {
+      this.isShowEdit = true
+      let str = row && row.id ? '缂栬緫杞﹁締' : '鏂板缓杞﹁締'
+      this.$nextTick(() => {
+        this.$refs.operaCarsWindow.open(str, row)
+        if (row && row.id) {
+          let form = { ...row, cateId: []}
+          if(row.catePId){ form.cateId.push(row.catePId) }
+          if(row.cateId){ form.cateId.push(row.cateId) }
+          this.$refs.operaCarsWindow.form = form
+          this.$refs.operaCarsWindow.loadMember()
+        }
+      })
+    },
     // 鍚屾淇℃伅
-    startEmpowerBatch () {
+    startEmpowerBatch() {
       if (this.tableData.selectedRows.length === 0) {
         this.$tip.warning('璇疯嚦灏戦�夋嫨涓�鏉℃暟鎹�')
         return
diff --git a/admin/src/views/vehicle/category.vue b/admin/src/views/vehicle/category.vue
new file mode 100644
index 0000000..73b3540
--- /dev/null
+++ b/admin/src/views/vehicle/category.vue
@@ -0,0 +1,120 @@
+<template>
+    <TableLayout>
+        <!-- 鎼滅储琛ㄥ崟 -->
+        <!-- <el-form ref="searchForm" slot="search-form" label-width="100px" inline>
+            <el-form-item label="鐘舵��" prop="status">
+                <el-select v-model="filters.status" placeholder="璇烽�夋嫨">
+                    <el-option label="鍚敤" value="0"></el-option>
+                    <el-option label="绂佺敤" value="1"></el-option>
+                </el-select>
+            </el-form-item>
+            <section>
+                <el-button type="primary" @click="search">鎼滅储</el-button>
+                <el-button @click="reset">閲嶇疆</el-button>
+            </section>
+        </el-form> -->
+        <!-- 琛ㄦ牸鍜屽垎椤� -->
+        <template v-slot:table-wrap>
+            <ul class="toolbar" v-permissions="['business:category:create', 'business:category:delete']">
+                <li><el-button type="primary" @click="handleEdit()" icon="el-icon-plus"
+                        v-permissions="['business:category:create']">鏂板缓</el-button></li>
+            </ul>
+            <el-table row-key="id" :tree-props="{children: 'childCategoryList'}" v-loading="isWorking.search" :data="dataList" stripe @selection-change="handleSelectionChange">
+                <el-table-column prop="name" label="鍒嗙被鍚嶇О" min-width="100px"></el-table-column>
+                <el-table-column prop="remark" label="澶囨敞" min-width="100px"></el-table-column>
+                <!-- <el-table-column prop="status" label="鐘舵��" min-width="100px">
+                    <template slot-scope="{row}">
+                        <span v-if="row.status === 0">鍚敤</span>
+                        <span v-if="row.status === 1">绂佺敤</span>
+                    </template>
+                </el-table-column> -->
+                <el-table-column prop="createDate" label="鍒涘缓鏃堕棿" min-width="100px"></el-table-column>
+                <el-table-column v-if="containPermissions(['business:category:update', 'business:category:delete'])"
+                    label="鎿嶄綔" min-width="120" fixed="right">
+                    <template slot-scope="{row}">
+                        <el-button type="text" @click="handleEdit(row)" icon="el-icon-edit"
+                            v-permissions="['business:category:update']">缂栬緫</el-button>
+                        <el-button type="text" @click="deleteById(row)" icon="el-icon-delete"
+                            v-permissions="['business:category:delete']">鍒犻櫎</el-button>
+                    </template>
+                </el-table-column>
+            </el-table>
+            <pagination @size-change="handleSizeChange" @current-change="getList" :pagination="tableData.pagination">
+            </pagination>
+        </template>
+        <!-- 鏂板缓/淇敼 -->
+        <OperaCategoryWindow v-if="isShowEdit" @close="isShowEdit = false" ref="operaCategoryWindow" @success="getList" />
+    </TableLayout>
+</template>
+
+<script>
+import BaseTable from '@/components/base/BaseTable'
+import TableLayout from '@/layouts/TableLayout'
+import Pagination from '@/components/common/Pagination'
+import OperaCategoryWindow from './components/OperaCategoryWindow'
+import { fetchList, deleteById } from '@/api/business/category.js'
+export default {
+    name: 'Category',
+    extends: BaseTable,
+    components: { TableLayout, Pagination, OperaCategoryWindow },
+    data() {
+        return {
+            // 鎼滅储
+            filters: {
+                parentId: ''
+            },
+            isShowEdit: false,
+            loading: false,
+            pagination: {
+                pageSize: 10,
+                page: 1,
+                total: 0,
+            },
+            dataList: []
+        }
+    },
+    created() {
+        this.getList()
+    },
+    methods: {
+        handleEdit(row) {
+            this.isShowEdit = true
+            let str = row && row.id ? '缂栬緫杞﹁締鍒嗙被' : '鏂板缓杞﹁締鍒嗙被'
+            this.$nextTick(() => {
+                this.$refs.operaCategoryWindow.open(str)
+                this.$refs.operaCategoryWindow.getList()
+                if(row && row.id){
+                    this.$refs.operaCategoryWindow.getDetail(row.id)
+                }
+            })
+        },
+        deleteById(row) {
+            this.$confirm(`鎮ㄧ‘璁よ鍒犻櫎璇ュ垎绫诲悧`, '娓╅Θ鎻愮ず', {
+                confirmButtonText: '纭畾',
+                cancelButtonText: '鍙栨秷',
+                type: 'warning'
+            }).then(() => {
+                deleteById(row.id).then(res => {
+                    this.getList()
+                })
+            })
+
+        },
+        getList() {
+            const { pagination, filters } = this
+            this.loading = true
+            fetchList({
+                model: { ...filters },
+                capacity: pagination.pageSize,
+                page: pagination.page,
+            }).then(res => {
+                this.loading = false
+                this.dataList = res.records || []
+                this.pagination.total = res.total || 0
+            }, () => {
+                this.loading = false
+            })
+        },
+    }
+}
+</script>
diff --git a/admin/src/views/vehicle/components/OperaCategoryWindow.vue b/admin/src/views/vehicle/components/OperaCategoryWindow.vue
new file mode 100644
index 0000000..feaead6
--- /dev/null
+++ b/admin/src/views/vehicle/components/OperaCategoryWindow.vue
@@ -0,0 +1,79 @@
+<template>
+  <GlobalWindow :title="title" :visible.sync="visible" :confirm-working="isWorking" width="600px" @close="close" @confirm="confirm">
+    <el-form :model="form" ref="form" :rules="rules">
+      <el-form-item label="涓�绾у垎绫�" prop="parentId">
+        <el-select v-model="form.parentId" placeholder="涓嶅~涓哄垯涓�绾у垎绫�">
+          <el-option v-for="op in dataList" :key="op.id" :label="op.name" :value="op.id"></el-option>
+        </el-select>
+      </el-form-item>
+      <el-form-item label="浜岀骇鍒嗙被" prop="name">
+        <el-input v-model="form.name" placeholder="璇疯緭鍏ヤ簩绾у垎绫�" v-trim />
+      </el-form-item>
+      <!-- <el-form-item label="鐘舵��" prop="status">
+        <el-select v-model="form.status" placeholder="璇烽�夋嫨">
+          <el-option label="鍚敤" value="0"></el-option>
+          <el-option label="绂佺敤" value="1"></el-option>
+        </el-select>
+      </el-form-item> -->
+      <el-form-item label="澶囨敞" prop="remark">
+        <el-input type="textarea" v-model="form.remark" placeholder="璇疯緭鍏ュ娉�" v-trim />
+      </el-form-item>
+    </el-form>
+  </GlobalWindow>
+</template>
+
+<script>
+import BaseOpera from '@/components/base/BaseOpera'
+import GlobalWindow from '@/components/common/GlobalWindow'
+import { create, fetchCateList, getInfoById } from '@/api/business/category.js'
+export default {
+  name: 'OperaCategoryWindow',
+  extends: BaseOpera,
+  components: { GlobalWindow },
+  data() {
+    return {
+      // 琛ㄥ崟鏁版嵁
+      form: {
+        parentId: null,
+        name: '',
+        remark: '',
+        status: '',
+        type: 1
+      },
+      // 楠岃瘉瑙勫垯
+      rules: {
+        name: [
+          { required: true, message: '璇疯緭鍏ヤ簩绾у垎绫诲悕绉�', trigger: 'blur' }
+        ],
+        status: [
+          { required: true, message: '璇烽�夋嫨鏄惁鍚敤', trigger: 'change' }
+        ]
+      },
+      dataList: []
+    }
+  },
+  created() {
+    this.config({
+      api: '/business/category',
+      'field.id': 'id'
+    })
+  },
+  methods: {
+    getList() {
+      fetchCateList({}).then(res => {
+        this.dataList = res || []
+        
+      })
+    },
+    close() {
+      this.visible = false
+      this.$emit('close')
+    },
+    getDetail(id) {
+      getInfoById(id).then(res => {
+        this.form = res
+      })
+    },
+  }
+}
+</script>
diff --git a/admin/src/views/vehicle/parkBook.vue b/admin/src/views/vehicle/parkBook.vue
index ee74c48..5902ae2 100644
--- a/admin/src/views/vehicle/parkBook.vue
+++ b/admin/src/views/vehicle/parkBook.vue
@@ -5,8 +5,8 @@
             <el-form-item title="杞︾墝鍙�" prop="carCode">
                 <el-input v-model="searchForm.carCode" placeholder="杞︾墝鍙�" @keypress.enter.native="search"></el-input>
             </el-form-item>
-            <el-form-item title="杞︿富濮撳悕/鎵嬫満鍙�" prop="memberName">
-                <el-input v-model="searchForm.memberName" placeholder="鍛樺伐濮撳悕/鎵嬫満鍙�" @keypress.enter.native="search"></el-input>
+            <el-form-item title="杞︿富淇℃伅" prop="memberName">
+                <el-input v-model="searchForm.memberName" placeholder="杞︿富淇℃伅" @keypress.enter.native="search"></el-input>
             </el-form-item>
             <el-form-item title="杞︿富缁勭粐" prop="companyName">
                 <el-input v-model="searchForm.companyName" placeholder="杞︿富缁勭粐鍚嶇О" @keypress.enter.native="search"></el-input>
diff --git a/h5/pages.json b/h5/pages.json
index 7a5fc0f..cc71d51 100644
--- a/h5/pages.json
+++ b/h5/pages.json
@@ -447,6 +447,13 @@
         	{
         		"navigationBarTitleText" : "鍏ュ洯椤荤煡"
         	}
+        },
+        {
+        	"path" : "pages/waybill/waybillDetail",
+        	"style" : 
+        	{
+        		"navigationBarTitleText" : "杩愬崟鏌ヨ"
+        	}
         }
     ],
 	"subPackages": [
diff --git a/h5/pages/waybill/waybillDetail.vue b/h5/pages/waybill/waybillDetail.vue
new file mode 100644
index 0000000..da8e896
--- /dev/null
+++ b/h5/pages/waybill/waybillDetail.vue
@@ -0,0 +1,207 @@
+<template>
+	<view class="main_app">
+		<image src="@/static/driver/wuliuche_bg@2x.png" class="main_bg"></image>
+		<view class="form_wrap">
+			<view class="item">
+				<view class="label">鍚堝悓缂栧彿</view>
+				<view class="line">
+					<view class="input_wrap"><input v-model="param.aa" placeholder="璇疯緭鍏ュ悎鍚岀紪鍙�" placeholder-class="place" type="text" /></view>
+				</view>
+			</view>
+			<view class="item">
+				<view class="label">闇�鏂圭紪鍙�</view>
+				<view class="line">
+					<view class="input_wrap"><input v-model="param.aa" placeholder="璇疯緭鍏ュ悎鍚屼腑闇�鏂圭紪鍙�" placeholder-class="place" type="text" /></view>
+				</view>
+			</view>
+			<view class="item">
+				<view class="label">楠岃瘉鐮�</view>
+				<view class="line">
+					<view class="input_wrap"><input v-model="param.aa" placeholder="璇疯緭鍏ラ獙璇佺爜" placeholder-class="place" type="text" /></view>
+					<image src="" class="auth_code" mode=""></image>
+				</view>
+			</view>
+			<view class="query">鏌ヨ</view>
+		</view>
+		<view class="title">鏌ヨ缁撴灉</view>
+		<view class="drive_info">
+			<view class="title">鍚堝悓缂栧彿</view>
+			<view class="line">
+				<view class="label">杩愯緭杞﹁締</view>
+				<view class="val">11</view>
+			</view>
+			<view class="line">
+				<view class="label">鍙告満淇℃伅</view>
+				<view class="val">11</view>
+			</view>
+			<view class="line">
+				<view class="label">杞﹁締浣嶇疆</view>
+				<view class="val">11</view>
+			</view>
+		</view>
+		<view class="drive_info">
+			<view class="title">鐗╂祦淇℃伅</view>
+			<view class="item">
+				<view class="h2">
+					<view class="icon_wrap"><image src="@/static/driver/ic_mostarted.png" class="icon"></image></view>
+					<view class="text">鍒拌揪鍗歌揣鍦�</view>
+				</view>
+				<view class="time">202422222222</view>
+				<view class="separate"></view>
+			</view>
+			<view class="item">
+				<view class="h2 h1">
+					<view class="icon_wrap"><image src="@/static/driver/ic_dangqian.png" class="icon"></image></view>
+					<view class="text">鍒拌揪鍗歌揣鍦�</view>
+				</view>
+				<view class="time">202422222222</view>
+				<view class="separate separate_ac"></view>
+			</view>
+			<view class="item">
+				<view class="h2">
+					<view class="icon_wrap"><image src="@/static/driver/ic_mostarted.png" class="icon"></image></view>
+					<view class="text">鍒拌揪鍗歌揣鍦�</view>
+				</view>
+				<view class="time">202422222222</view>
+				<view class="separate"></view>
+			</view>
+		</view>
+	</view>
+</template>
+
+<script>
+	export default {
+		data() {
+			return {
+				param: {}
+			};
+		}
+	}
+</script>
+
+<style lang="scss" scoped>
+	.form_wrap {
+		width: 690rpx;
+		height: 646rpx;
+		background: #FFFFFF;
+		box-shadow: 0rpx 4rpx 20rpx 0rpx rgba(39,155,170,0.16);
+		border-radius: 16rpx;
+		padding: 10rpx 30rpx;
+		margin-bottom: 40rpx;
+		.item{
+			height: 154rpx;
+			padding: 30rpx 0 8rpx;
+			border-bottom: 1rpx solid #E5E5E5;
+			.label{}
+			.line{
+				display: flex;
+				.input_wrap{
+					padding: 18rpx 0;
+					flex: 1;
+					.place{
+						color: #999999;
+						font-size: 28rpx;
+					}
+				}
+				.auth_code{
+					width: 160rpx;
+					height: 64rpx;
+					border: 2px solid;
+				}
+			}
+		}
+		.query{
+			width: 630rpx;
+			height: 88rpx;
+			background: $uni-color-primary;
+			border-radius: 44rpx;
+			margin-top: 40rpx;
+			color: #fff;
+			display: flex;
+			justify-content: center;
+			align-items: center;
+			font-size: 30rpx;
+		}
+	}
+	.main_app{
+		padding-top: 218rpx;
+		.title{
+			font-weight: 500;
+			font-size: 32rpx;
+			margin-bottom: 30rpx;
+		}
+		.drive_info{
+			background: #F7F7F7;
+			border-radius: 16rpx;
+			padding: 30rpx;
+			margin-bottom: 20rpx;
+			.line{
+				display: flex;
+				margin-bottom: 24rpx;
+				.label{
+					color: #666666;
+					margin-right: 40rpx;
+				}
+				.val{
+					
+				}
+			}
+			.item{
+				position: relative;
+				color: #999999;
+				margin-bottom: 30rpx;
+				.h2{
+					display: flex;
+					align-items: center;
+					height: 48rpx;
+					.icon_wrap{
+						width: 48rpx;
+						margin-right: 30rpx;
+						display: flex;
+						align-items: center;
+						justify-content: center;
+						.icon{
+							width: 24rpx;
+							height: 24rpx;
+							position: relative;
+							z-index: 2;
+						}
+					}
+				}
+				.h1{
+					.icon_wrap{
+						.icon{
+							width: 48rpx;
+							height: 48rpx;
+						}
+					}
+				}
+				.time{
+					padding-left: 78rpx;
+					font-size: 24rpx;
+					margin-top: 6rpx;
+				}
+				.separate{
+					height: calc( 100% );
+					width: 2rpx;
+					border: 2rpx dashed red;
+					position: absolute;
+					left: 22rpx;
+					top: 24rpx;
+					z-index: 1;
+				}
+				.separate_ac{
+					top: 48rpx;
+				}
+			}
+		}
+	}
+	.main_bg {
+		position: absolute;
+		left: 0;
+		top: 0;
+		width: 100%;
+		z-index: -1;
+		color: #222222;
+	}
+</style>
\ No newline at end of file
diff --git a/h5/static/driver/ic_dangqian.png b/h5/static/driver/ic_dangqian.png
new file mode 100644
index 0000000..774a4fb
--- /dev/null
+++ b/h5/static/driver/ic_dangqian.png
Binary files differ
diff --git a/h5/static/driver/ic_mostarted.png b/h5/static/driver/ic_mostarted.png
new file mode 100644
index 0000000..e5e966d
--- /dev/null
+++ b/h5/static/driver/ic_mostarted.png
Binary files differ
diff --git a/h5/static/driver/wuliuche_bg@2x.png b/h5/static/driver/wuliuche_bg@2x.png
new file mode 100644
index 0000000..227c21f
--- /dev/null
+++ b/h5/static/driver/wuliuche_bg@2x.png
Binary files differ
diff --git a/h5_meeting/pages/index/config.vue b/h5_meeting/pages/index/config.vue
index b2578aa..58301ed 100644
--- a/h5_meeting/pages/index/config.vue
+++ b/h5_meeting/pages/index/config.vue
@@ -11,7 +11,7 @@
 			<view class="item">
 				<view class="title">鎺ュ彛鍦板潃</view>
 				<view class="line">
-					<input type="text" placeholder="http://10.50.250.178:8088/gateway_interface/" v-model="param.baseUrl" />
+					<input type="text" v-model="param.baseUrl" />
 					<image src="../../static/icon/right.svg" class="icon"></image>
 				</view>
 			</view>
@@ -31,11 +31,15 @@
 	export default {
 		data() {
 			return {
-				param: {}
+				param: {
+					baseUrl: 'http://192.168.5.13/gateway_interface/'
+				}
 			};
 		},
 		onLoad(){
-			const param = uni.getStorageSync('param') || {}
+			const param = uni.getStorageSync('param') || {
+				baseUrl: 'http://192.168.5.13/gateway_interface/'
+			}
 			this.param = { ...param }
 		},
 		methods: {
diff --git a/h5_meeting/pages/index/index.vue b/h5_meeting/pages/index/index.vue
index 6682e3c..6f01181 100644
--- a/h5_meeting/pages/index/index.vue
+++ b/h5_meeting/pages/index/index.vue
@@ -8,13 +8,18 @@
 				<view class="date">{{date}}</view>
 			</view>
 		</view>
-		<view class="home_status">
-			<text v-if="!info.meetingListResponseList || info.meetingListResponseList.length == 0">绌洪棽涓�</text>
-			<text v-if="info.meetingListResponseList && info.meetingListResponseList.length > 0 && info.meetingListResponseList[0].meetingStatus == 4">鍗冲皢寮�濮�</text>
-			<text class="orange" v-if="info.meetingListResponseList && info.meetingListResponseList.length > 0 && info.meetingListResponseList[0].meetingStatus == 2">浼氳涓�</text>
-			<text v-if="info.meetingListResponseList && info.meetingListResponseList.length > 0 && info.meetingListResponseList[0].meetingStatus == 1">鏈紑濮�</text>
-			<text v-if="info.meetingListResponseList && info.meetingListResponseList.length > 0 && info.meetingListResponseList[0].meetingStatus == 3">宸茬粨鏉�</text>
-			<text v-if="info.meetingListResponseList && info.meetingListResponseList.length > 0 && info.meetingListResponseList[0].meetingStatus == 5">宸叉挙閿�</text>
+		<view class="home_status">
+			<text v-if="!info.meetingListResponseList || info.meetingListResponseList.length == 0">绌洪棽涓�</text>
+			<text
+				v-if="info.meetingListResponseList && info.meetingListResponseList.length > 0 && info.meetingListResponseList[0].meetingStatus == 4">鍗冲皢寮�濮�</text>
+			<text class="orange"
+				v-if="info.meetingListResponseList && info.meetingListResponseList.length > 0 && info.meetingListResponseList[0].meetingStatus == 2">浼氳涓�</text>
+			<text
+				v-if="info.meetingListResponseList && info.meetingListResponseList.length > 0 && info.meetingListResponseList[0].meetingStatus == 1">鏈紑濮�</text>
+			<text
+				v-if="info.meetingListResponseList && info.meetingListResponseList.length > 0 && info.meetingListResponseList[0].meetingStatus == 3">宸茬粨鏉�</text>
+			<text
+				v-if="info.meetingListResponseList && info.meetingListResponseList.length > 0 && info.meetingListResponseList[0].meetingStatus == 5">宸叉挙閿�</text>
 		</view>
 		<view v-if="meetingInfo.meetingName" class="meeting_name">{{meetingInfo.meetingName}}</view>
 		<view v-if="meetingInfo.meetingTime && meetingInfo.bookingUser" class="meeting_con">
@@ -27,13 +32,15 @@
 					<image src="@/static/ic_people@2x.png"></image>
 					<text>棰勭害浜猴細{{meetingInfo.bookingUser }}</text>
 				</view>
-			</view>
-			<view v-if="meetingInfo.meetingTime" class="qrcode_wrap">
-				<canvas id="qrcode" canvas-id="qrcode" class="qrcode"></canvas>
+			</view>
+			<view v-if="showQrbg" class="qrcode_wrap">
+				<canvas id="qrcode" canvas-id="qrcode" class="qrcode"></canvas>
 			</view>
 		</view>
 		<view class="meeting_wrap">
-			<view class="title">浠婃棩浼氳锛坽{ info.meetingListResponseList && info.meetingListResponseList.length > 0 ? info.meetingListResponseList.length : 0 }}锛�</view>
+			<view class="title">
+				浠婃棩浼氳锛坽{ info.meetingListResponseList && info.meetingListResponseList.length > 0 ? info.meetingListResponseList.length : 0 }}锛�
+			</view>
 			<view class="list">
 				<view class="item" v-for="item in info.meetingListResponseList">
 					<view class="name">{{item.meetingName}}</view>
@@ -51,42 +58,46 @@
 		</view>
 
 		<!--  -->
-		<swiper v-if="info.fileType == 0 && (info.meetingListResponseList == null || info.meetingListResponseList.length == 0)" class="swiper" circular autoplay indicator-dots>
+		<swiper
+			v-if="info.fileType == 0 && (info.meetingListResponseList == null || info.meetingListResponseList.length == 0)"
+			class="swiper" circular autoplay indicator-dots>
 			<swiper-item v-for="item in info.multifileList">
 				<image class="swiper_item" :src="item.fileurlFull" mode="aspectFill"></image>
 			</swiper-item>
-		</swiper>
-		<!--  -->
-		<template v-if="info.fileType == 1 && info.multifileList && info.multifileList.length > 0 && (info.meetingListResponseList == null || info.meetingListResponseList.length == 0)">
-			<video  :src="info.multifileList[0].fileurlFull" class="app_video" :autoplay="true" loop :controls="false"></video>
+		</swiper>
+		<!--  -->
+		<template
+			v-if="info.fileType == 1 && info.multifileList && info.multifileList.length > 0 && (info.meetingListResponseList == null || info.meetingListResponseList.length == 0)">
+			<video :src="info.multifileList[0].fileurlFull" class="app_video" :autoplay="true" loop :controls="false"></video>
 		</template>
 	</view>
 </template>
 
 <script>
-	import dayjs from 'dayjs'
-	// import vueQr from 'vue-qr/src/packages/vue-qr.vue'
+	import dayjs from 'dayjs'
+	// import vueQr from 'vue-qr/src/packages/vue-qr.vue'
 	import UQRCode from 'uqrcodejs'
 	import {
 		meetScreenData
 	} from '@/api/index.js'
-	export default {
+	export default {
 		// components: {vueQr},
 		data() {
 			return {
 				time: '',
 				date: '',
+				showQrbg: false,
 				timer: null,
 				touchNum: 0,
-				param: {},
-				info: {},
-				statusMap: {
-					1: '鏈紑濮�',
-					2: '杩涜涓�',
-					3: '宸茬粨鏉�',
-					4: '鍗冲皢寮�濮�',
-					5: '宸叉挙閿�',
-				},
+				param: {},
+				info: {},
+				statusMap: {
+					1: '鏈紑濮�',
+					2: '杩涜涓�',
+					3: '宸茬粨鏉�',
+					4: '鍗冲皢寮�濮�',
+					5: '宸叉挙閿�',
+				},
 				meetingInfo: {}
 			}
 		},
@@ -99,40 +110,47 @@
 				})
 			}
 			this.getData()
-		},
-		onReady() {
 		},
+		onReady() {},
 		methods: {
 			getData() {
+				this.showQrbg = false
 				meetScreenData({
 					roomId: this.param.code
-				}).then(res => {
-					this.info = res.data
-					if(this.info.meetingListResponseList && this.info.meetingListResponseList.length > 0){
-						this.meetingInfo = this.info.meetingListResponseList[0]
-						this.$nextTick(() => {
-							this.qrcodeCreate()
-							this.$forceUpdate()
-						})
-					}
+				}).then(res => {
+					this.info = res.data
+					if (this.info.meetingListResponseList && this.info.meetingListResponseList.length > 0) {
+						this.meetingInfo = this.info.meetingListResponseList[0]
+						this.$nextTick(() => {
+							this.qrcodeCreate()
+							this.$forceUpdate()
+						})
+					} else {
+						this.showQrbg = false
+						this.meetingInfo = {}
+					}
 				})
-			},
-			qrcodeCreate(){
-				 // 鑾峰彇uQRCode瀹炰緥
-				  var qr = new UQRCode();
-				  // 璁剧疆浜岀淮鐮佸唴瀹�
-				  // qr.data = "https://uqrcode.cn/doc";
-				  qr.data = "https://open.weixin.qq.com/connect/oauth2/authorize?appid=wxac2a80c2144c4ee0&redirect_uri=http://192.168.0.109:8080/redirect.html&response_type=code&scope=snsapi_base&state=1#wechat_redirect";
-				  // 璁剧疆浜岀淮鐮佸ぇ灏忥紝蹇呴』涓巆anvas璁剧疆鐨勫楂樹竴鑷�
-				  qr.size = 83;
-				  // 璋冪敤鍒朵綔浜岀淮鐮佹柟娉�
-				  qr.make();
-				  // 鑾峰彇canvas涓婁笅鏂�
-				  var canvasContext = uni.createCanvasContext('qrcode', this); // 濡傛灉鏄粍浠讹紝this蹇呴』浼犲叆
-				  // 璁剧疆uQRCode瀹炰緥鐨刢anvas涓婁笅鏂�
-				  qr.canvasContext = canvasContext;
-				  // 璋冪敤缁樺埗鏂规硶灏嗕簩缁寸爜鍥炬缁樺埗鍒癱anvas涓�
-				  qr.drawCanvas();
+			},
+			qrcodeCreate() {
+				this.showQrbg = true
+				this.$nextTick(() => {
+					// 鑾峰彇uQRCode瀹炰緥
+					var qr = new UQRCode();
+					// 璁剧疆浜岀淮鐮佸唴瀹�
+					// qr.data = "https://uqrcode.cn/doc";
+					qr.data =
+						"https://open.weixin.qq.com/connect/oauth2/authorize?appid=wxac2a80c2144c4ee0&redirect_uri=http://192.168.0.109:8080/redirect.html&response_type=code&scope=snsapi_base&state=1#wechat_redirect";
+					// 璁剧疆浜岀淮鐮佸ぇ灏忥紝蹇呴』涓巆anvas璁剧疆鐨勫楂樹竴鑷�
+					qr.size = 83;
+					// 璋冪敤鍒朵綔浜岀淮鐮佹柟娉�
+					qr.make();
+					// 鑾峰彇canvas涓婁笅鏂�
+					var canvasContext = uni.createCanvasContext('qrcode', this); // 濡傛灉鏄粍浠讹紝this蹇呴』浼犲叆
+					// 璁剧疆uQRCode瀹炰緥鐨刢anvas涓婁笅鏂�
+					qr.canvasContext = canvasContext;
+					// 璋冪敤缁樺埗鏂规硶灏嗕簩缁寸爜鍥炬缁樺埗鍒癱anvas涓�
+					qr.drawCanvas();
+				})
 			},
 			touchend() {
 				this.touchNum++
@@ -155,44 +173,53 @@
 				this.timer = setInterval(() => {
 					this.time = dayjs().format('HH:mm')
 					this.date = dayjs().format('YYYY-MM-DD') + ' ' + weeks[new Date().getDay()]
-				}, 1000)
-				setInterval(() => {
-					this.getData()
-				},this.param.time ? this.param.time * 1000 : 60 * 1000)
+				}, 1000)
+				setInterval(() => {
+					this.getData()
+				}, this.param.time ? this.param.time * 1000 : 60 * 1000)
 			}
 		}
 	}
 </script>
 
-<style lang="scss" scoped>
-	page,body{
-		overflow: hidden;
-	}
-	.swiper{
-		position: fixed;
-		top: 0;
-		left: 0;
-		z-index: 999;
-		width: 100%;
-		height: 100vh;
-		.swiper_item{
-			background-color: #0095AC;
-			width: 100%;
-			height: 100vh;
-		}
-	}
-	.app_video{
-		width: 100%;
-		height: 100vh;
-		position: fixed;
-		top: 0;
-		left: 0;
-		z-index: 999;
+<style lang="scss" scoped>
+	page,
+	body {
+		overflow: hidden;
 	}
+
+	.swiper {
+		position: fixed;
+		top: 0;
+		left: 0;
+		z-index: 999;
+		width: 100%;
+		height: 100vh;
+
+		.swiper_item {
+			background-color: #0095AC;
+			width: 100%;
+			height: 100vh;
+		}
+	}
+
+	.app_video {
+		width: 100%;
+		height: 100vh;
+		position: fixed;
+		top: 0;
+		left: 0;
+		z-index: 999;
+	}
+
 	.main_app {
 		width: 100%;
 		height: 100vh;
-		position: relative;
+		position: fixed;
+		top: 0;
+		left: 0;
+		right: 0;
+		bottom: 0;
 		font-size: 28rpx;
 		display: flex;
 		flex-direction: column;
@@ -230,14 +257,16 @@
 					flex-shrink: 0;
 					flex-direction: column;
 					width: 403rpx;
-					height: 315rpx;
-					background: linear-gradient( 90deg, #0080FF 0%, #00B0FF 100%);
+					height: 315rpx;
+					background: linear-gradient(90deg, #0080FF 0%, #00B0FF 100%);
 					border-radius: 7rpx;
 					margin-right: 28rpx;
 					position: relative;
-					&:nth-of-type(1){
-						background: linear-gradient(90deg, #0095AC 0%, #00B5D1 100%);
+
+					&:nth-of-type(1) {
+						background: linear-gradient(90deg, #0095AC 0%, #00B5D1 100%);
 					}
+
 					.item_bg {
 						position: absolute;
 						width: 178rpx;
@@ -250,13 +279,14 @@
 					.name {
 						flex: 1;
 						font-weight: bold;
-						font-size: 39rpx;
-						width: 100%;
-						word-break: break-all;
-						text-overflow: ellipsis;
-						display: -webkit-box;
-						-webkit-box-orient: vertical;
-						-webkit-line-clamp: 3; /* 瓒呭嚭鍑犺鐪佺暐 */
+						font-size: 39rpx;
+						width: 100%;
+						word-break: break-all;
+						text-overflow: ellipsis;
+						display: -webkit-box;
+						-webkit-box-orient: vertical;
+						-webkit-line-clamp: 3;
+						/* 瓒呭嚭鍑犺鐪佺暐 */
 					}
 
 					.line {
@@ -292,19 +322,21 @@
 					}
 				}
 			}
-			.qrcode_wrap{
-				width: 92px;
-				height: 92px;
-				display: flex;
-				align-items: center;
-				justify-content: center;
-				background-color: #fff;
-				.qrcode {
-					width: 84px;
-					height: 84px;
-				}
+
+			.qrcode_wrap {
+				width: 92px;
+				height: 92px;
+				display: flex;
+				align-items: center;
+				justify-content: center;
+				background-color: #fff;
+
+				.qrcode {
+					width: 84px;
+					height: 84px;
+				}
 			}
-			
+
 		}
 
 		.meeting_name {
diff --git a/h5_meeting/unpackage/release/apk/__UNI__EF8BAA7__20241008151948.apk b/h5_meeting/unpackage/release/apk/__UNI__EF8BAA7__20241008151948.apk
new file mode 100644
index 0000000..eff3492
--- /dev/null
+++ b/h5_meeting/unpackage/release/apk/__UNI__EF8BAA7__20241008151948.apk
Binary files differ
diff --git a/screen/src/views/PlatformCall.vue b/screen/src/views/PlatformCall.vue
index 9d2a827..a3ed50c 100644
--- a/screen/src/views/PlatformCall.vue
+++ b/screen/src/views/PlatformCall.vue
@@ -106,7 +106,7 @@
   var qr = new UQRCode()
   // 璁剧疆浜岀淮鐮佸唴瀹�
   qr.data = qrcode.value
-  qr.size = 254
+  qr.size = 220
   // 璋冪敤鍒朵綔浜岀淮鐮佹柟娉�
   qr.make()
   var canvas = document.getElementById("qrcode")
@@ -174,7 +174,7 @@
           </div>
           <div class="item">{{ item.platformName || '-' }}</div>
           <div class="item">
-            <div class="time_place">棰勮瀹屾垚鏃堕棿</div>
+            <div v-if="item.optTimeTemp" class="time_place">棰勮瀹屾垚鏃堕棿</div>
             <div>{{ item.optTimeTemp || '-' }}</div>
           </div>
         </div>
@@ -203,7 +203,7 @@
         </div>
         <div class="qrcode_wrap">
           <div class="qrcode">
-            <canvas id="qrcode" width="254" height="254"></canvas>
+            <canvas id="qrcode" width="220" height="220"></canvas>
           </div>
           <div class="title">璇锋壂鐮佺鍒�</div>
         </div>
@@ -218,16 +218,23 @@
 </template>
 
 <style lang="scss" scoped>
+div{
+  box-sizing: border-box;
+}
 .main_app {
   color: #fff;
+  position: fixed;
+  top: 0;
+  left: 0;
   width: 100%;
   height: 100vh;
+  overflow: hidden;
   background-color: #092030;
   position: relative;
   z-index: -2;
   display: flex;
   flex-direction: column;
-
+  justify-content: space-between;
   .main_header {
     width: 100%;
     height: 112px;
@@ -281,16 +288,15 @@
     display: flex;
     padding: 30px 20px;
     position: relative;
-
     .list {
       flex: 5;
       margin-right: 20px;
-
+      display: flex;
+      flex-direction: column;
       .line {
         display: flex;
         align-items: center;
-        height: 100px;
-
+        flex: 1;
         &:nth-of-type(2n) {
           background: rgba(255, 255, 255, 0);
         }
@@ -307,13 +313,15 @@
           font-weight: 500;
           font-size: 36px;
           flex: 10;
+          height: 100%;
           .time_place{
             font-weight: 500;
             font-size: 24px;
           }
           .status {
-            width: 174px;
-            height: 76px;
+            /* padding: 0 28px; */
+            width: 170px;
+            height: 72%;
             border-radius: 8px;
             display: flex;
             justify-content: center;
@@ -351,14 +359,13 @@
       flex: 2;
       display: flex;
       flex-direction: column;
-
+      border: 1px solid red;
       .tip_wrap {
         margin-bottom: 20px;
         width: 100%;
         position: relative;
-        flex-shrink: 0;
+        /* flex-shrink: 0; */
         flex: 1;
-
         .current_plat {
           display: flex;
           flex-direction: column;
@@ -369,18 +376,18 @@
 
           .id_card {
             font-weight: bold;
-            font-size: 86px;
+            font-size: 68px;
           }
 
           .no {
             margin: 10px 0;
             font-weight: 500;
-            font-size: 58px;
+            font-size: 52px;
           }
 
           .place {
             font-weight: 500;
-            font-size: 42px;
+            font-size: 36px;
           }
 
           .plat {
@@ -426,23 +433,22 @@
       .qrcode_wrap {
         width: 100%;
         flex: 1;
-        flex-shrink: 0;
+        /* flex-shrink: 0; */
         background-color: #51b2ce;
-        padding: 36px 0;
         display: flex;
         flex-direction: column;
         align-items: center;
         justify-content: center;
 
         .qrcode {
-          padding: 12px;
+          padding: 6px;
           background-color: #fff;
         }
 
         .title {
           margin-top: 20px;
           font-weight: bold;
-          font-size: 38px;
+          font-size: 34px;
           color: #111111;
         }
       }
diff --git a/server/system_service/src/main/java/com/doumee/core/utils/Constants.java b/server/system_service/src/main/java/com/doumee/core/utils/Constants.java
index 1c38558..8417fc0 100644
--- a/server/system_service/src/main/java/com/doumee/core/utils/Constants.java
+++ b/server/system_service/src/main/java/com/doumee/core/utils/Constants.java
@@ -71,6 +71,7 @@
     // 璁垮鏉ヨ閰嶇疆
     public static final String VISIT_CONFIG = "VISIT_CONFIG";
     public static final String MEMBER_IMG = "MEMBER_IMG";
+    public static final String PLATFORM_EVENT_IMG = "PLATFORM_EVENT_IMG";
     public static final String VISIT_NOTICE = "VISIT_NOTICE";
     //鍋ュ悍璇侀厤缃�
     public static final String LW_HEALTH_CARD = "LW_HEALTH_CARD";
diff --git a/server/system_service/src/main/java/com/doumee/core/utils/HttpsUtil.java b/server/system_service/src/main/java/com/doumee/core/utils/HttpsUtil.java
index c74af73..d0025db 100644
--- a/server/system_service/src/main/java/com/doumee/core/utils/HttpsUtil.java
+++ b/server/system_service/src/main/java/com/doumee/core/utils/HttpsUtil.java
@@ -1,5 +1,7 @@
 package com.doumee.core.utils;
 
+import org.springframework.http.HttpMethod;
+
 import javax.net.ssl.*;
 import java.io.ByteArrayOutputStream;
 import java.io.InputStream;
@@ -87,6 +89,40 @@
         }
         return null;
     }
+    public static InputStream connectionInputsteam(String url,String method,String data,String contentType ){
+        HttpURLConnection connection = null;
+        try {
+            URL _url = new URL(url);
+            connection = (HttpURLConnection) _url.openConnection();
+            connection.setRequestMethod(method);
+            connection.setDoOutput(true);
+            connection.setDoInput(true);
+            connection.setUseCaches(false);
+            if(contentType != null){
+                connection.setRequestProperty("Content-Type", contentType);
+            }
+
+            connection.connect();
+
+            if(data != null){
+                OutputStream outputStream = connection.getOutputStream();
+                outputStream.write(data.getBytes("utf-8"));
+                outputStream.close();
+            }
+
+            int responseCode = connection.getResponseCode();
+            if (responseCode == HttpsURLConnection.HTTP_OK) {
+               return  connection.getInputStream();
+            }
+        } catch (Exception e) {
+            e.printStackTrace();
+        } finally {
+            if(connection != null){
+                connection.disconnect();
+            }
+        }
+        return null;
+    }
     public static String connectionHttp(String url,String method,String data,String contentType ){
         HttpURLConnection connection = null;
         try {
diff --git a/server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/admin/PlatformDeviceCloudController.java b/server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/admin/PlatformDeviceCloudController.java
index 4104693..986896f 100644
--- a/server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/admin/PlatformDeviceCloudController.java
+++ b/server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/admin/PlatformDeviceCloudController.java
@@ -1,21 +1,21 @@
 package com.doumee.cloud.admin;
 
 import com.doumee.api.BaseController;
+import com.doumee.config.annotation.CloudRequiredPermission;
 import com.doumee.core.annotation.excel.ExcelExporter;
 import com.doumee.core.annotation.pr.PreventRepeat;
 import com.doumee.core.model.ApiResponse;
-import com.doumee.core.model.PageWrap;
 import com.doumee.core.model.PageData;
+import com.doumee.core.model.PageWrap;
 import com.doumee.core.utils.Constants;
 import com.doumee.dao.business.model.PlatformDevice;
 import com.doumee.service.business.PlatformDeviceService;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
-import org.apache.shiro.authz.annotation.RequiresPermissions;    
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.*;
-import javax.servlet.http.HttpServletResponse;
 
+import javax.servlet.http.HttpServletResponse;
 import java.util.ArrayList;
 import java.util.List;
 
@@ -34,14 +34,14 @@
     @PreventRepeat
     @ApiOperation("鏂板缓")
     @PostMapping("/create")
-    @RequiresPermissions("business:platformdevice:create")
+    @CloudRequiredPermission("business:platformdevice:create")
     public ApiResponse create(@RequestBody PlatformDevice platformDevice) {
         return ApiResponse.success(platformDeviceService.create(platformDevice));
     }
 
     @ApiOperation("鏍规嵁ID鍒犻櫎")
     @GetMapping("/delete/{id}")
-    @RequiresPermissions("business:platformdevice:delete")
+    @CloudRequiredPermission("business:platformdevice:delete")
     public ApiResponse deleteById(@PathVariable Integer id) {
         platformDeviceService.deleteById(id);
         return ApiResponse.success(null);
@@ -49,7 +49,7 @@
 
     @ApiOperation("鎵归噺鍒犻櫎")
     @GetMapping("/delete/batch")
-    @RequiresPermissions("business:platformdevice:delete")
+    @CloudRequiredPermission("business:platformdevice:delete")
     public ApiResponse deleteByIdInBatch(@RequestParam String ids) {
         String [] idArray = ids.split(",");
         List<Integer> idList = new ArrayList<>();
@@ -62,30 +62,30 @@
 
     @ApiOperation("鏍规嵁ID淇敼")
     @PostMapping("/updateById")
-    @RequiresPermissions("business:platformdevice:update")
-    public ApiResponse updateById(@RequestBody PlatformDevice platformDevice) {
+    @CloudRequiredPermission("business:platformdevice:update")
+    public ApiResponse updateById(@RequestBody PlatformDevice platformDevice,@RequestHeader(Constants.HEADER_USER_TOKEN) String token) {
         platformDeviceService.updateById(platformDevice);
         return ApiResponse.success(null);
     }
 
     @ApiOperation("鍒嗛〉鏌ヨ")
     @PostMapping("/page")
-    @RequiresPermissions("business:platformdevice:query")
-    public ApiResponse<PageData<PlatformDevice>> findPage (@RequestBody PageWrap<PlatformDevice> pageWrap) {
+    @CloudRequiredPermission("business:platformdevice:query")
+    public ApiResponse<PageData<PlatformDevice>> findPage (@RequestBody PageWrap<PlatformDevice> pageWrap,@RequestHeader(Constants.HEADER_USER_TOKEN) String token) {
         return ApiResponse.success(platformDeviceService.findPage(pageWrap));
     }
 
     @ApiOperation("瀵煎嚭Excel")
     @PostMapping("/exportExcel")
-    @RequiresPermissions("business:platformdevice:exportExcel")
-    public void exportExcel (@RequestBody PageWrap<PlatformDevice> pageWrap, HttpServletResponse response) {
+    @CloudRequiredPermission("business:platformdevice:exportExcel")
+    public void exportExcel (@RequestBody PageWrap<PlatformDevice> pageWrap, HttpServletResponse response,@RequestHeader(Constants.HEADER_USER_TOKEN) String token) {
         ExcelExporter.build(PlatformDevice.class).export(platformDeviceService.findPage(pageWrap).getRecords(), "鏈堝彴_鍏宠仈鐩戞帶鐐筁ED鍜屽箍鎾俊鎭〃", response);
     }
 
     @ApiOperation("鏍规嵁ID鏌ヨ")
     @GetMapping("/{id}")
-    @RequiresPermissions("business:platformdevice:query")
-    public ApiResponse findById(@PathVariable Integer id) {
+    @CloudRequiredPermission("business:platformdevice:query")
+    public ApiResponse findById(@PathVariable Integer id,@RequestHeader(Constants.HEADER_USER_TOKEN) String token) {
         return ApiResponse.success(platformDeviceService.findById(id));
     }
 }
diff --git a/server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/admin/PlatformEventCloudController.java b/server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/admin/PlatformEventCloudController.java
new file mode 100644
index 0000000..90ad9d4
--- /dev/null
+++ b/server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/admin/PlatformEventCloudController.java
@@ -0,0 +1,91 @@
+package com.doumee.cloud.admin;
+
+import com.doumee.api.BaseController;
+import com.doumee.config.annotation.CloudRequiredPermission;
+import com.doumee.core.annotation.excel.ExcelExporter;
+import com.doumee.core.annotation.pr.PreventRepeat;
+import com.doumee.core.model.ApiResponse;
+import com.doumee.core.model.PageData;
+import com.doumee.core.model.PageWrap;
+import com.doumee.core.utils.Constants;
+import com.doumee.dao.business.model.PlatformEvent;
+import com.doumee.service.business.PlatformEventService;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+
+import javax.servlet.http.HttpServletResponse;
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * @author 姹熻箘韫�
+ * @date 2024/08/28 17:24
+ */
+@Api(tags = "鏈堝彴_杞﹁締杩涘嚭浜嬩欢鎺ㄩ�佽褰曡〃")
+@RestController
+@RequestMapping(Constants.CLOUD_SERVICE_URL_INDEX+"/business//platformEvent")
+public class PlatformEventCloudController extends BaseController {
+
+    @Autowired
+    private PlatformEventService platformEventService;
+
+    @PreventRepeat
+    @ApiOperation("鏂板缓")
+    @PostMapping("/create")
+    @CloudRequiredPermission("business:platformevent:create")
+    public ApiResponse create(@RequestBody PlatformEvent platformEvent,@RequestHeader(Constants.HEADER_USER_TOKEN) String token) {
+        return ApiResponse.success(platformEventService.create(platformEvent));
+    }
+
+    @ApiOperation("鏍规嵁ID鍒犻櫎")
+    @GetMapping("/delete/{id}")
+    @CloudRequiredPermission("business:platformevent:delete")
+    public ApiResponse deleteById(@PathVariable Integer id,@RequestHeader(Constants.HEADER_USER_TOKEN) String token) {
+        platformEventService.deleteById(id);
+        return ApiResponse.success(null);
+    }
+
+    @ApiOperation("鎵归噺鍒犻櫎")
+    @GetMapping("/delete/batch")
+    @CloudRequiredPermission("business:platformevent:delete")
+    public ApiResponse deleteByIdInBatch(@RequestParam String ids,@RequestHeader(Constants.HEADER_USER_TOKEN) String token) {
+        String [] idArray = ids.split(",");
+        List<Integer> idList = new ArrayList<>();
+        for (String id : idArray) {
+            idList.add(Integer.valueOf(id));
+        }
+        platformEventService.deleteByIdInBatch(idList);
+        return ApiResponse.success(null);
+    }
+
+    @ApiOperation("鏍规嵁ID淇敼")
+    @PostMapping("/updateById")
+    @CloudRequiredPermission("business:platformevent:update")
+    public ApiResponse updateById(@RequestBody PlatformEvent platformEvent,@RequestHeader(Constants.HEADER_USER_TOKEN) String token) {
+        platformEventService.updateById(platformEvent);
+        return ApiResponse.success(null);
+    }
+
+    @ApiOperation("鍒嗛〉鏌ヨ")
+    @PostMapping("/page")
+    @CloudRequiredPermission("business:platformevent:query")
+    public ApiResponse<PageData<PlatformEvent>> findPage (@RequestBody PageWrap<PlatformEvent> pageWrap,@RequestHeader(Constants.HEADER_USER_TOKEN) String token) {
+        return ApiResponse.success(platformEventService.findPage(pageWrap));
+    }
+
+    @ApiOperation("瀵煎嚭Excel")
+    @PostMapping("/exportExcel")
+    @CloudRequiredPermission("business:platformevent:exportExcel")
+    public void exportExcel (@RequestBody PageWrap<PlatformEvent> pageWrap, HttpServletResponse response,@RequestHeader(Constants.HEADER_USER_TOKEN) String token) {
+        ExcelExporter.build(PlatformEvent.class).export(platformEventService.findPage(pageWrap).getRecords(), "鏈堝彴杞﹁締杩涘嚭浜嬩欢鎺ㄩ�佽褰曡〃", response);
+    }
+
+    @ApiOperation("鏍规嵁ID鏌ヨ")
+    @GetMapping("/{id}")
+    @CloudRequiredPermission("business:platformevent:query")
+    public ApiResponse findById(@PathVariable Integer id,@RequestHeader(Constants.HEADER_USER_TOKEN) String token) {
+        return ApiResponse.success(platformEventService.findById(id));
+    }
+}
diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/core/haikang/model/param/request/event/parks/EventPlatformCarsStatusInfoRequest.java b/server/visits/dmvisit_service/src/main/java/com/doumee/core/haikang/model/param/request/event/parks/EventPlatformCarsStatusInfoRequest.java
index ae2e55d..73b7235 100644
--- a/server/visits/dmvisit_service/src/main/java/com/doumee/core/haikang/model/param/request/event/parks/EventPlatformCarsStatusInfoRequest.java
+++ b/server/visits/dmvisit_service/src/main/java/com/doumee/core/haikang/model/param/request/event/parks/EventPlatformCarsStatusInfoRequest.java
@@ -15,7 +15,7 @@
     private String motionStatus;//'leave',杩愬姩鐘舵��  enter#杩涘叆,leave#绂诲紑
     private String plateNo;//'A12345',杞︾墝鍙�
     private String vehicleDoorStatus;//'open',杞﹂棬鐘舵�伮� open-寮�闂紝close-鍏抽棬
-    private String stockStatus;//'rear',杞﹀ご杞﹀熬鐘舵�伮� 聽front#杞﹀ご,rear#杞﹀熬
+    private String stockStatus;//'rear',杞﹀ご杞﹀熬鐘舵�� front#杞﹀ご,rear#杞﹀熬
     @JSONField(name="BackgroundImage")
     @JsonProperty(value = "BackgroundImage")
     private EventImageInfoRequest backgroundImage;//鏈堝彴鑳屾櫙澶у浘
diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/core/haikang/model/param/respose/PlatformCameraInfoResponse.java b/server/visits/dmvisit_service/src/main/java/com/doumee/core/haikang/model/param/respose/PlatformCameraInfoResponse.java
index 993861a..c02b729 100644
--- a/server/visits/dmvisit_service/src/main/java/com/doumee/core/haikang/model/param/respose/PlatformCameraInfoResponse.java
+++ b/server/visits/dmvisit_service/src/main/java/com/doumee/core/haikang/model/param/respose/PlatformCameraInfoResponse.java
@@ -6,6 +6,6 @@
 public class PlatformCameraInfoResponse {
 
 
- private String  cameraIdompan;//	String	false	鐩戞帶鐐笽D
+ private String  cameraId;//	String	false	鐩戞帶鐐笽D
  private String  cameraName	;//String	false	鐩戞帶鐐瑰悕绉�
 }
diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/PlatformEventMapper.java b/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/PlatformEventMapper.java
index a7ebd19..17ff953 100644
--- a/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/PlatformEventMapper.java
+++ b/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/PlatformEventMapper.java
@@ -2,11 +2,12 @@
 
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.doumee.dao.business.model.PlatformEvent;
+import com.github.yulichang.base.MPJBaseMapper;
 
 /**
  * @author 姹熻箘韫�
  * @date 2024/08/28 17:24
  */
-public interface PlatformEventMapper extends BaseMapper<PlatformEvent> {
+public interface PlatformEventMapper extends MPJBaseMapper<PlatformEvent> {
 
 }
diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/PlatformEvent.java b/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/PlatformEvent.java
index 3f39246..ade66f6 100644
--- a/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/PlatformEvent.java
+++ b/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/PlatformEvent.java
@@ -1,5 +1,6 @@
 package com.doumee.dao.business.model;
 
+import com.baomidou.mybatisplus.annotation.TableField;
 import com.doumee.core.annotation.excel.ExcelColumn;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
@@ -46,6 +47,9 @@
     @ApiModelProperty(value = "鏄惁鍒犻櫎0鍚� 1鏄�", example = "1")
     @ExcelColumn(name="鏄惁鍒犻櫎0鍚� 1鏄�")
     private Integer isdeleted;
+    @ApiModelProperty(value = "鏈堝彴缂栫爜,鍏宠仈platform琛�", example = "1")
+    @ExcelColumn(name="鏈堝彴缂栫爜,鍏宠仈platform琛�")
+    private Integer platformId;
 
     @ApiModelProperty(value = "澶囨敞")
     @ExcelColumn(name="澶囨敞")
@@ -158,8 +162,8 @@
     @ExcelColumn(name="杞﹂棬鐘舵�伮� open-寮�闂紝close-鍏抽棬")
     private String vehicleDoorStatus;
 
-    @ApiModelProperty(value = "杞﹀ご杞﹀熬鐘舵�伮� 聽front#杞﹀ご,rear#杞﹀熬", example = "1")
-    @ExcelColumn(name="杞﹀ご杞﹀熬鐘舵�伮� 聽front#杞﹀ご,rear#杞﹀熬")
+    @ApiModelProperty(value = "杞﹀ご杞﹀熬鐘舵�乫ront#杞﹀ご,rear#杞﹀熬", example = "1")
+    @ExcelColumn(name="杞﹀ご杞﹀熬鐘舵�乫ront#杞﹀ご,rear#杞﹀熬")
     private String stockStatus;
 
     @ApiModelProperty(value = "杞︾墝璇勫垎[0-100]", example = "1")
@@ -173,5 +177,21 @@
     @ApiModelProperty(value = "杞︾墝鍥�", example = "1")
     @ExcelColumn(name="杞︾墝鍥�")
     private String platePictureContent;
+    @ApiModelProperty(value = "鏈堝彴鑳屾櫙澶у浘鏈湴涓嬭浇", example = "1")
+    @ExcelColumn(name="鏈堝彴鑳屾櫙澶у浘鏈湴涓嬭浇")
+    private String backgroundImageDown;
 
+    @ApiModelProperty(value = "杞︾墝鍥炬湰鍦颁笅杞�", example = "1")
+    @ExcelColumn(name="杞︾墝鍥炬湰鍦颁笅杞�")
+    private String platePictureDown;
+    @ApiModelProperty(value = "鏈堝彴鍚嶇ū", example = "1")
+    @TableField(exist = false)
+    private String  platformName;
+
+    @ApiModelProperty(value = "寮�濮嬫椂闂�")
+    @TableField(exist = false)
+    private String startDate;
+    @ApiModelProperty(value = "缁撴潫鏃堕棿")
+    @TableField(exist = false)
+    private String endDate;
 }
diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/CompanyServiceImpl.java b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/CompanyServiceImpl.java
index ff8ceb5..a79a985 100644
--- a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/CompanyServiceImpl.java
+++ b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/CompanyServiceImpl.java
@@ -74,11 +74,11 @@
             throw new BusinessException(ResponseStatus.DATA_EXISTS.getCode(), "瀵逛笉璧凤紝缁勭粐绫诲瀷涓嶆纭紝璇锋寜瑕佹眰濉啓~");
         }
         //鏌ヨ鍚嶇О涓嶈兘閲嶅
-      /*  if(companyMapper.selectCount(new QueryWrapper<Company>().lambda()
+        if(companyMapper.selectCount(new QueryWrapper<Company>().lambda()
                 .eq(Company::getName,company.getName())
                 .eq(Company::getIsdeleted,Constants.ZERO)) >0){
             throw new BusinessException(ResponseStatus.DATA_EXISTS.getCode(), "瀵逛笉璧凤紝缁勭粐鍚嶇О涓嶈兘閲嶅~");
-        }*/
+        }
         LoginUserInfo user = (LoginUserInfo) SecurityUtils.getSubject().getPrincipal();
         if(user ==null){
             user = company.getLoginUserInfo();
@@ -275,12 +275,12 @@
             throw new BusinessException(ResponseStatus.DATA_EXISTS.getCode(), "瀵逛笉璧凤紝缁勭粐绫诲瀷涓嶆纭紝璇锋寜瑕佹眰濉啓~");
         }
         //鏌ヨ鍚嶇О涓嶈兘閲嶅
- /*       if(companyMapper.selectCount(new QueryWrapper<Company>().lambda()
+        if(companyMapper.selectCount(new QueryWrapper<Company>().lambda()
                 .eq(Company::getName,company.getName())
                 .ne(Company::getId,company.getId())
                 .eq(Company::getIsdeleted,Constants.ZERO)) >0){
             throw new BusinessException(ResponseStatus.DATA_EXISTS.getCode(), "瀵逛笉璧凤紝缁勭粐鍚嶇О涓嶈兘閲嶅~");
-        }*/
+        }
         LoginUserInfo user = (LoginUserInfo) SecurityUtils.getSubject().getPrincipal();
         if(user == null){
             user = company.getLoginUserInfo();
diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/MemberServiceImpl.java b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/MemberServiceImpl.java
index f71435f..7a0a0f7 100644
--- a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/MemberServiceImpl.java
+++ b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/MemberServiceImpl.java
@@ -154,6 +154,7 @@
             }
         }catch (Exception e){
             //濡傛灉鍙戠敓寮傚父锛屽垹闄ゅ凡缁忓垱寤虹殑浜哄憳淇℃伅
+            e.printStackTrace();
             deleteHkUserBiz(new String[]{insert.getHkId()});
             throw  new BusinessException(ResponseStatus.SERVER_ERROR.getCode(),"瀵逛笉璧凤紝鍛樺伐淇℃伅鏂板缓澶辫触锛岃绋嶅悗閲嶈瘯锛�");
         }
diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/PlatformEventServiceImpl.java b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/PlatformEventServiceImpl.java
index cddc0f2..1b631ea 100644
--- a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/PlatformEventServiceImpl.java
+++ b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/PlatformEventServiceImpl.java
@@ -1,20 +1,27 @@
 package com.doumee.service.business.impl;
 
+import com.doumee.biz.system.SystemDictDataBiz;
 import com.doumee.core.model.PageData;
 import com.doumee.core.model.PageWrap;
+import com.doumee.core.utils.Constants;
 import com.doumee.core.utils.Utils;
 import com.doumee.dao.business.PlatformEventMapper;
+import com.doumee.dao.business.model.Empower;
+import com.doumee.dao.business.model.Platform;
 import com.doumee.dao.business.model.PlatformEvent;
 import com.doumee.service.business.PlatformEventService;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.github.yulichang.wrapper.MPJLambdaWrapper;
+import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.util.CollectionUtils;
 
 import java.util.List;
+import java.util.Objects;
 
 /**
  * 鏈堝彴杞﹁締杩涘嚭浜嬩欢鎺ㄩ�佽褰曡〃Service瀹炵幇
@@ -24,6 +31,8 @@
 @Service
 public class PlatformEventServiceImpl implements PlatformEventService {
 
+    @Autowired
+    private SystemDictDataBiz systemDictDataBiz;
     @Autowired
     private PlatformEventMapper platformEventMapper;
 
@@ -87,129 +96,139 @@
     @Override
     public PageData<PlatformEvent> findPage(PageWrap<PlatformEvent> pageWrap) {
         IPage<PlatformEvent> page = new Page<>(pageWrap.getPage(), pageWrap.getCapacity());
-        QueryWrapper<PlatformEvent> queryWrapper = new QueryWrapper<>();
+        MPJLambdaWrapper<PlatformEvent> queryWrapper = new MPJLambdaWrapper<>();
+        queryWrapper.selectAll(PlatformEvent.class)
+                .selectAs(Platform::getName,PlatformEvent::getPlatformName)
+                .leftJoin(Platform.class, Platform::getId,PlatformEvent::getPlatformId);
         Utils.MP.blankToNull(pageWrap.getModel());
         if (pageWrap.getModel().getId() != null) {
-            queryWrapper.lambda().eq(PlatformEvent::getId, pageWrap.getModel().getId());
+            queryWrapper.eq(PlatformEvent::getId, pageWrap.getModel().getId());
         }
         if (pageWrap.getModel().getCreator() != null) {
-            queryWrapper.lambda().eq(PlatformEvent::getCreator, pageWrap.getModel().getCreator());
+            queryWrapper.eq(PlatformEvent::getCreator, pageWrap.getModel().getCreator());
         }
         if (pageWrap.getModel().getCreateDate() != null) {
-            queryWrapper.lambda().ge(PlatformEvent::getCreateDate, Utils.Date.getStart(pageWrap.getModel().getCreateDate()));
-            queryWrapper.lambda().le(PlatformEvent::getCreateDate, Utils.Date.getEnd(pageWrap.getModel().getCreateDate()));
+            queryWrapper.ge(PlatformEvent::getCreateDate, Utils.Date.getStart(pageWrap.getModel().getCreateDate()));
+            queryWrapper.le(PlatformEvent::getCreateDate, Utils.Date.getEnd(pageWrap.getModel().getCreateDate()));
         }
         if (pageWrap.getModel().getEditor() != null) {
-            queryWrapper.lambda().eq(PlatformEvent::getEditor, pageWrap.getModel().getEditor());
+            queryWrapper.eq(PlatformEvent::getEditor, pageWrap.getModel().getEditor());
         }
         if (pageWrap.getModel().getEditDate() != null) {
-            queryWrapper.lambda().ge(PlatformEvent::getEditDate, Utils.Date.getStart(pageWrap.getModel().getEditDate()));
-            queryWrapper.lambda().le(PlatformEvent::getEditDate, Utils.Date.getEnd(pageWrap.getModel().getEditDate()));
+            queryWrapper.ge(PlatformEvent::getEditDate, Utils.Date.getStart(pageWrap.getModel().getEditDate()));
+            queryWrapper.le(PlatformEvent::getEditDate, Utils.Date.getEnd(pageWrap.getModel().getEditDate()));
         }
         if (pageWrap.getModel().getIsdeleted() != null) {
-            queryWrapper.lambda().eq(PlatformEvent::getIsdeleted, pageWrap.getModel().getIsdeleted());
+            queryWrapper.eq(PlatformEvent::getIsdeleted, pageWrap.getModel().getIsdeleted());
         }
         if (pageWrap.getModel().getRemark() != null) {
-            queryWrapper.lambda().eq(PlatformEvent::getRemark, pageWrap.getModel().getRemark());
+            queryWrapper.eq(PlatformEvent::getRemark, pageWrap.getModel().getRemark());
         }
         if (pageWrap.getModel().getEventId() != null) {
-            queryWrapper.lambda().eq(PlatformEvent::getEventId, pageWrap.getModel().getEventId());
+            queryWrapper.eq(PlatformEvent::getEventId, pageWrap.getModel().getEventId());
         }
         if (pageWrap.getModel().getEventType() != null) {
-            queryWrapper.lambda().eq(PlatformEvent::getEventType, pageWrap.getModel().getEventType());
+            queryWrapper.eq(PlatformEvent::getEventType, pageWrap.getModel().getEventType());
         }
         if (pageWrap.getModel().getSrcType() != null) {
-            queryWrapper.lambda().eq(PlatformEvent::getSrcType, pageWrap.getModel().getSrcType());
+            queryWrapper.eq(PlatformEvent::getSrcType, pageWrap.getModel().getSrcType());
         }
         if (pageWrap.getModel().getHappenTime() != null) {
-            queryWrapper.lambda().eq(PlatformEvent::getHappenTime, pageWrap.getModel().getHappenTime());
+            queryWrapper.eq(PlatformEvent::getHappenTime, pageWrap.getModel().getHappenTime());
         }
         if (pageWrap.getModel().getSrcIndex() != null) {
-            queryWrapper.lambda().eq(PlatformEvent::getSrcIndex, pageWrap.getModel().getSrcIndex());
+            queryWrapper.eq(PlatformEvent::getSrcIndex, pageWrap.getModel().getSrcIndex());
         }
         if (pageWrap.getModel().getSrcName() != null) {
-            queryWrapper.lambda().eq(PlatformEvent::getSrcName, pageWrap.getModel().getSrcName());
+            queryWrapper.eq(PlatformEvent::getSrcName, pageWrap.getModel().getSrcName());
         }
         if (pageWrap.getModel().getStatus() != null) {
-            queryWrapper.lambda().eq(PlatformEvent::getStatus, pageWrap.getModel().getStatus());
+            queryWrapper.eq(PlatformEvent::getStatus, pageWrap.getModel().getStatus());
         }
         if (pageWrap.getModel().getTimeout() != null) {
-            queryWrapper.lambda().eq(PlatformEvent::getTimeout, pageWrap.getModel().getTimeout());
+            queryWrapper.eq(PlatformEvent::getTimeout, pageWrap.getModel().getTimeout());
         }
         if (pageWrap.getModel().getDataType() != null) {
-            queryWrapper.lambda().eq(PlatformEvent::getDataType, pageWrap.getModel().getDataType());
+            queryWrapper.eq(PlatformEvent::getDataType, pageWrap.getModel().getDataType());
         }
         if (pageWrap.getModel().getSendTime() != null) {
-            queryWrapper.lambda().eq(PlatformEvent::getSendTime, pageWrap.getModel().getSendTime());
+            queryWrapper.eq(PlatformEvent::getSendTime, pageWrap.getModel().getSendTime());
         }
         if (pageWrap.getModel().getDateTime() != null) {
-            queryWrapper.lambda().eq(PlatformEvent::getDateTime, pageWrap.getModel().getDateTime());
+            queryWrapper.eq(PlatformEvent::getDateTime, pageWrap.getModel().getDateTime());
         }
         if (pageWrap.getModel().getIpAddress() != null) {
-            queryWrapper.lambda().eq(PlatformEvent::getIpAddress, pageWrap.getModel().getIpAddress());
+            queryWrapper.eq(PlatformEvent::getIpAddress, pageWrap.getModel().getIpAddress());
         }
         if (pageWrap.getModel().getIpv6Address() != null) {
-            queryWrapper.lambda().eq(PlatformEvent::getIpv6Address, pageWrap.getModel().getIpv6Address());
+            queryWrapper.eq(PlatformEvent::getIpv6Address, pageWrap.getModel().getIpv6Address());
         }
         if (pageWrap.getModel().getPortNo() != null) {
-            queryWrapper.lambda().eq(PlatformEvent::getPortNo, pageWrap.getModel().getPortNo());
+            queryWrapper.eq(PlatformEvent::getPortNo, pageWrap.getModel().getPortNo());
         }
         if (pageWrap.getModel().getProtocol() != null) {
-            queryWrapper.lambda().eq(PlatformEvent::getProtocol, pageWrap.getModel().getProtocol());
+            queryWrapper.eq(PlatformEvent::getProtocol, pageWrap.getModel().getProtocol());
         }
         if (pageWrap.getModel().getMacAddress() != null) {
-            queryWrapper.lambda().eq(PlatformEvent::getMacAddress, pageWrap.getModel().getMacAddress());
+            queryWrapper.eq(PlatformEvent::getMacAddress, pageWrap.getModel().getMacAddress());
         }
         if (pageWrap.getModel().getChannelId() != null) {
-            queryWrapper.lambda().eq(PlatformEvent::getChannelId, pageWrap.getModel().getChannelId());
+            queryWrapper.eq(PlatformEvent::getChannelId, pageWrap.getModel().getChannelId());
         }
         if (pageWrap.getModel().getActivePostCount() != null) {
-            queryWrapper.lambda().eq(PlatformEvent::getActivePostCount, pageWrap.getModel().getActivePostCount());
+            queryWrapper.eq(PlatformEvent::getActivePostCount, pageWrap.getModel().getActivePostCount());
         }
         if (pageWrap.getModel().getEventState() != null) {
-            queryWrapper.lambda().eq(PlatformEvent::getEventState, pageWrap.getModel().getEventState());
+            queryWrapper.eq(PlatformEvent::getEventState, pageWrap.getModel().getEventState());
         }
         if (pageWrap.getModel().getEventDescription() != null) {
-            queryWrapper.lambda().eq(PlatformEvent::getEventDescription, pageWrap.getModel().getEventDescription());
+            queryWrapper.eq(PlatformEvent::getEventDescription, pageWrap.getModel().getEventDescription());
         }
         if (pageWrap.getModel().getChannelName() != null) {
-            queryWrapper.lambda().eq(PlatformEvent::getChannelName, pageWrap.getModel().getChannelName());
+            queryWrapper.like(PlatformEvent::getChannelName, pageWrap.getModel().getChannelName());
         }
         if (pageWrap.getModel().getDeviceId() != null) {
-            queryWrapper.lambda().eq(PlatformEvent::getDeviceId, pageWrap.getModel().getDeviceId());
+            queryWrapper.eq(PlatformEvent::getDeviceId, pageWrap.getModel().getDeviceId());
         }
         if (pageWrap.getModel().getHpno() != null) {
-            queryWrapper.lambda().eq(PlatformEvent::getHpno, pageWrap.getModel().getHpno());
+            queryWrapper.eq(PlatformEvent::getHpno, pageWrap.getModel().getHpno());
         }
         if (pageWrap.getModel().getMotionStatus() != null) {
-            queryWrapper.lambda().eq(PlatformEvent::getMotionStatus, pageWrap.getModel().getMotionStatus());
+            queryWrapper.eq(PlatformEvent::getMotionStatus, pageWrap.getModel().getMotionStatus());
         }
         if (pageWrap.getModel().getPlateNo() != null) {
-            queryWrapper.lambda().eq(PlatformEvent::getPlateNo, pageWrap.getModel().getPlateNo());
+            queryWrapper.like(PlatformEvent::getPlateNo, pageWrap.getModel().getPlateNo());
         }
         if (pageWrap.getModel().getVehicleDoorStatus() != null) {
-            queryWrapper.lambda().eq(PlatformEvent::getVehicleDoorStatus, pageWrap.getModel().getVehicleDoorStatus());
+            queryWrapper.eq(PlatformEvent::getVehicleDoorStatus, pageWrap.getModel().getVehicleDoorStatus());
         }
         if (pageWrap.getModel().getStockStatus() != null) {
-            queryWrapper.lambda().eq(PlatformEvent::getStockStatus, pageWrap.getModel().getStockStatus());
+            queryWrapper.eq(PlatformEvent::getStockStatus, pageWrap.getModel().getStockStatus());
         }
         if (pageWrap.getModel().getPlateScore() != null) {
-            queryWrapper.lambda().eq(PlatformEvent::getPlateScore, pageWrap.getModel().getPlateScore());
+            queryWrapper.eq(PlatformEvent::getPlateScore, pageWrap.getModel().getPlateScore());
         }
         if (pageWrap.getModel().getBackgroundImageContent() != null) {
-            queryWrapper.lambda().eq(PlatformEvent::getBackgroundImageContent, pageWrap.getModel().getBackgroundImageContent());
+            queryWrapper.eq(PlatformEvent::getBackgroundImageContent, pageWrap.getModel().getBackgroundImageContent());
         }
         if (pageWrap.getModel().getPlatePictureContent() != null) {
-            queryWrapper.lambda().eq(PlatformEvent::getPlatePictureContent, pageWrap.getModel().getPlatePictureContent());
+            queryWrapper.eq(PlatformEvent::getPlatePictureContent, pageWrap.getModel().getPlatePictureContent());
         }
-        for(PageWrap.SortData sortData: pageWrap.getSorts()) {
-            if (sortData.getDirection().equalsIgnoreCase(PageWrap.DESC)) {
-                queryWrapper.orderByDesc(sortData.getProperty());
-            } else {
-                queryWrapper.orderByAsc(sortData.getProperty());
+        queryWrapper.like(StringUtils.isNotBlank(pageWrap.getModel().getPlatformName()), Platform::getName,pageWrap.getModel().getPlatformName());
+        queryWrapper.ge(Objects.nonNull(pageWrap.getModel().getStartDate()), PlatformEvent::getCreateDate,pageWrap.getModel().getStartDate());
+        queryWrapper.le(Objects.nonNull(pageWrap.getModel().getEndDate()),PlatformEvent::getCreateDate,pageWrap.getModel().getEndDate());
+        queryWrapper.orderByDesc(PlatformEvent::getCreateDate);
+        PageData<PlatformEvent> result = PageData.from(platformEventMapper.selectJoinPage(page, PlatformEvent.class,queryWrapper));
+        if(result!=null && result.getRecords()!=null){
+            String prefixUrl = systemDictDataBiz.queryByCode(Constants.FTP,Constants.FTP_RESOURCE_PATH).getCode() +
+                    systemDictDataBiz.queryByCode(Constants.FTP,Constants.MEMBER_IMG).getCode();
+            for(PlatformEvent model : result.getRecords()){
+                if(StringUtils.isNotBlank(model.getBackgroundImageContent())){
+                    model.setBackgroundImageDown(prefixUrl + model.getBackgroundImageContent());
+                }
             }
         }
-        return PageData.from(platformEventMapper.selectPage(page, queryWrapper));
+        return  result;
     }
 
     @Override
diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/hksync/HkSyncImgServiceImpl.java b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/hksync/HkSyncImgServiceImpl.java
index 302bf9b..d37efcd 100644
--- a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/hksync/HkSyncImgServiceImpl.java
+++ b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/hksync/HkSyncImgServiceImpl.java
@@ -8,6 +8,7 @@
 import com.doumee.core.utils.Constants;
 import com.doumee.core.utils.DateUtil;
 import com.doumee.core.utils.FtpUtil;
+import com.doumee.core.utils.HttpsUtil;
 import com.doumee.dao.business.*;
 import com.doumee.dao.business.model.*;
 import lombok.extern.slf4j.Slf4j;
@@ -34,6 +35,8 @@
     @Autowired
     private MemberMapper memberMapper;
     @Autowired
+    private PlatformEventMapper platformEventMapper;
+    @Autowired
     private DeviceEventMapper deviceEventMapper;
     @Autowired
     private VisitEventMapper visitEventMapper;
@@ -54,6 +57,8 @@
             startDealDeviceImg();
             //鏌ヨ鎵�鏈変汉鍛樹汉鑴哥収鐗�
             startDealMemberImg();
+            //鏌ヨ鎵�鏈夋湀鍙颁簨浠朵腑鎶撴媿鍥剧収鐗�
+            startDealPlatformEventImg();
         }catch (Exception e){
             e.printStackTrace();
         }finally {
@@ -87,6 +92,33 @@
                     }
                 }
                 memberMapper.updateById(event);
+            }
+        }
+
+    }
+    private void startDealPlatformEventImg() {
+        List<PlatformEvent> list = platformEventMapper.selectList(new QueryWrapper<PlatformEvent>().lambda()
+                .eq(PlatformEvent::getIsdeleted,Constants.ZERO)
+                .isNotNull(PlatformEvent::getBackgroundImageContent)
+                .notLikeRight(PlatformEvent::getBackgroundImageContent, HKConstants.IMG_INDEX_ERROR)
+                .isNull(PlatformEvent::getBackgroundImageDown));
+        Date date= new Date();
+        if(list !=null && list.size()>0){
+            for(PlatformEvent model:list){
+                String rs1 = null;
+                PlatformEvent event = new PlatformEvent();
+                event.setId(model.getId());
+                event.setEditDate(date);
+                if(StringUtils.isNotBlank(model.getBackgroundImageContent())){
+                    String img1 = model.getBackgroundImageContent();
+                    rs1 = downHkImgToFtp(img1,"",Constants.PLATFORM_EVENT_IMG);
+                    if(StringUtils.isNotBlank(rs1)){
+                        event.setBackgroundImageDown(rs1);
+                    }else{
+                        event.setBackgroundImageContent(HKConstants.IMG_INDEX_ERROR+model.getBackgroundImageContent());
+                    }
+                }
+                platformEventMapper.updateById(event);
             }
         }
 
@@ -251,11 +283,13 @@
             param.setPicUri(img1.replace(HKConstants.IMG_INDEX_ERROR,"").replace(HKConstants.IMG_INDEX,""));
             param.setServerIndexCode(serverIndex);
             is = HKService.getFaceInputStream(param);
+        }else if(StringUtils.equals(folder_code,Constants.PLATFORM_EVENT_IMG)){
+            //鏈堝彴浜嬩欢鍥剧墖
+            is = HttpsUtil.connectionInputsteam(img1,"GET",null,null);
         }
         if(is ==null){
             return  null;
         }
-
         try {
             if(ftp == null){
                  ftp = new FtpUtil(systemDictDataBiz.queryByCode(Constants.FTP,Constants.FTP_HOST).getCode(),
diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/hksync/HkSyncLoginAuthServiceImpl.java b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/hksync/HkSyncLoginAuthServiceImpl.java
index d971291..c6cadc8 100644
--- a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/hksync/HkSyncLoginAuthServiceImpl.java
+++ b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/hksync/HkSyncLoginAuthServiceImpl.java
@@ -27,7 +27,6 @@
 
     @Autowired
     private DeviceMapper deviceMapper;
-
     @Autowired
     private RedisTemplate<String, Object> redisTemplate;
     @Autowired
@@ -76,7 +75,6 @@
                 }catch (Exception e){
                     throw  new BusinessException(ResponseStatus.SERVER_ERROR.getCode(),"瀵逛笉璧凤紝鐧诲綍缁勪欢澶辫触锛岃绋嶅悗閲嶈瘯锛�");
                 }
-               
             }else{
                 throw  new BusinessException(ResponseStatus.SERVER_ERROR.getCode(),"瀵逛笉璧凤紝鐧诲綍缁勪欢澶辫触锛岃绋嶅悗閲嶈瘯锛�");
             }
diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/hksync/HkSyncPlatformsServiceImpl.java b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/hksync/HkSyncPlatformsServiceImpl.java
index b418e56..10e2a89 100644
--- a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/hksync/HkSyncPlatformsServiceImpl.java
+++ b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/hksync/HkSyncPlatformsServiceImpl.java
@@ -188,7 +188,7 @@
                 d.setCreateDate(model.getCreateDate());
                 d.setPlatformId(model.getId());
                 d.setIsdeleted(Constants.ZERO);
-                d.setDeviceId(param.getCameraIdompan());
+                d.setDeviceId(param.getCameraId());
                 d.setName(param.getCameraName());
                 d.setType(Constants.ONE);
                 list.add(d);
diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/hksync/HkSyncPushServiceImpl.java b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/hksync/HkSyncPushServiceImpl.java
index 8dbd506..6800469 100644
--- a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/hksync/HkSyncPushServiceImpl.java
+++ b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/hksync/HkSyncPushServiceImpl.java
@@ -867,17 +867,23 @@
                 }
                 //鍚勮溅閬撹溅杈嗙姸鎬�
                 EventPlatformCarsStatusInfoRequest status = data.getHPVehicleStatus();
-                eventList.add(initPlatformEventModel(request,data,status));//灏佽浜嬩欢锛堝凡鏈堝彴閫氶亾涓虹淮搴︼級
+                PlatformEvent event = initPlatformEventModel(request,data,status);
+                if(StringUtils.isBlank(status.getPlateNo())){
+                    eventList.add(event);//灏佽浜嬩欢锛堝凡鏈堝彴閫氶亾涓虹淮搴︼級
+                    continue;//濡傛灉杞﹁締淇℃伅涓虹┖锛屼笉澶勭悊鐩存帴璺宠繃
+                }
                 PlatformDevice model = platformDeviceMapper.selectOne(new QueryWrapper<PlatformDevice>().lambda()
                         .eq(PlatformDevice::getDeviceId,request.getSrcIndex())
                         .eq(PlatformDevice::getIsdeleted,Constants.ZERO)
                         .last("limit 1"));
                 if(model ==null){
+                    eventList.add(event);//灏佽浜嬩欢锛堝凡鏈堝彴閫氶亾涓虹淮搴︼級
                     continue;//鐩戞帶鐐规湭鍚屾锛岃烦杩囧鐞�
                 }
-                if(StringUtils.isBlank(status.getPlateNo())){
-                    continue;//濡傛灉杞﹁締淇℃伅涓虹┖锛屼笉澶勭悊鐩存帴璺宠繃
-                }
+                event.setPlatformId(model.getPlatformId());//鏈堝彴缂栫爜
+                eventList.add(event);//灏佽浜嬩欢锛堝凡鏈堝彴閫氶亾涓虹淮搴︼級
+                //鎴帀绗竴涓鑹叉眽瀛�,鍘绘帀鈥滄寕鈥濆瓧
+                status.setPlateNo(status.getPlateNo().substring(1,status.getPlateNo().length()).replace("鎸�",""));
                 PlatformJob job = platformJobMapper.selectJoinOne(PlatformJob.class, new MPJLambdaWrapper<PlatformJob>()
                         .selectAll(PlatformJob.class)
                         .selectAs(Platform::getName,PlatformJob::getPlatformName)
@@ -886,12 +892,15 @@
                         .eq(!StringUtils.equals(status.getStockStatus(),"front"),PlatformJob::getCarCodeBack,status.getPlateNo() )//鍚庤溅鐗屽彿
                         .eq(PlatformJob::getIsdeleted,Constants.ZERO )
                         .last("limit 1 "));
+                if(job == null){
+                    continue;//濡傛灉浣滀笟涓虹┖锛岃烦杩囧鐞�
+                }
                 PlatformJob update = new PlatformJob();
                 update.setId(job.getId());
                 update.setEditDate(new Date());
                 if(StringUtils.equals(status.getMotionStatus(),"leave")){
                     //濡傛灉鏄溅杈嗙寮�,涓嶅仛鐩稿叧鑷姩瀹屾垚浣滀笟涓氬姟澶勭悊
-                 /*   if(job ==null && !Constants.equalsInteger(job.getStatus(),Constants.PlatformJobStatus.WORKING.getKey())){
+                   /* if(job ==null && !Constants.equalsInteger(job.getStatus(),Constants.PlatformJobStatus.WORKING.getKey())){
                         continue;//濡傛灉娌℃煡鍒板搴旂殑浣滀笟鎴栬�呬綔涓氬苟闈炰綔涓氫腑锛屼笉鍋氫笟鍔″鐞�
                     }
                     if(Constants.equalsInteger(job.getType(), Constants.THREE) || Constants.equalsInteger(job.getType(), Constants.TWO)){

--
Gitblit v1.9.3