From c72cb6959cbf43520fbc88f390e2e21da7fbfbf4 Mon Sep 17 00:00:00 2001
From: liukangdong <898885815@qq.com>
Date: 星期四, 10 十月 2024 09:09:43 +0800
Subject: [PATCH] ll

---
 admin/public/favicon.ico                                          |    0 
 admin/src/components/business/OperaPlatformApproveTemplWindow.vue |  660 ++++++++++++++++++++++------------------------
 screen/src/views/PlatformCall.vue                                 |  112 ++++++-
 admin/src/components/business/OperaDeviceLedWindow.vue            |    2 
 admin/src/layouts/TableLayout1.vue                                |    4 
 admin/src/views/platform/LogisticsRecord/leaveAuth.vue            |    2 
 admin/src/views/vehicle/components/OperaCategoryWindow.vue        |    6 
 screen/vite.config.js                                             |    3 
 admin/src/views/platform/platformGroup.vue                        |    4 
 admin/src/components/business/OperaCarsWindow.vue                 |    1 
 10 files changed, 410 insertions(+), 384 deletions(-)

diff --git a/admin/public/favicon.ico b/admin/public/favicon.ico
index c6ff5db..ec96d02 100644
--- a/admin/public/favicon.ico
+++ b/admin/public/favicon.ico
Binary files differ
diff --git a/admin/src/components/business/OperaCarsWindow.vue b/admin/src/components/business/OperaCarsWindow.vue
index f8bfc58..a81913f 100644
--- a/admin/src/components/business/OperaCarsWindow.vue
+++ b/admin/src/components/business/OperaCarsWindow.vue
@@ -16,6 +16,7 @@
           label: 'name',
           value: 'id',
           children: 'childCategoryList',
+          checkStrictly: true
         }"></el-cascader>
       </el-form-item>
       <el-form-item label="閫夋嫨缁勭粐锛�" prop="groupId">
diff --git a/admin/src/components/business/OperaDeviceLedWindow.vue b/admin/src/components/business/OperaDeviceLedWindow.vue
index 03cb79a..c135b7e 100644
--- a/admin/src/components/business/OperaDeviceLedWindow.vue
+++ b/admin/src/components/business/OperaDeviceLedWindow.vue
@@ -10,7 +10,7 @@
                 <el-input v-model="form.title" placeholder="璇疯緭鍏ED灞忔樉绀哄唴瀹�" v-trim/>
             </el-form-item>
             <el-form-item label="鎾斁閫熷害" prop="speed">
-                <el-input type="number" v-model="form.speed" placeholder="璇疯緭鍏ユ挱鏀鹃�熷害(澶т簬0鏁板瓧锛�" v-trim/>
+                <el-input type="number" v-model="form.speed" placeholder="璇疯緭鍏ユ挱鏀鹃�熷害锛屾暟瀛楄秺灏忔挱鏀捐秺蹇紝寤鸿閫熷害8" v-trim/>
             </el-form-item>
         </el-form>
     </GlobalWindow>
diff --git a/admin/src/components/business/OperaPlatformApproveTemplWindow.vue b/admin/src/components/business/OperaPlatformApproveTemplWindow.vue
index 6ff22bc..3b093f9 100644
--- a/admin/src/components/business/OperaPlatformApproveTemplWindow.vue
+++ b/admin/src/components/business/OperaPlatformApproveTemplWindow.vue
@@ -1,11 +1,5 @@
 <template>
-  <GlobalWindow
-      :title="title"
-      width="100%"
-      :visible.sync="visible"
-      :confirm-working="isWorking"
-      @confirm="confirm"
-  >
+  <GlobalWindow :title="title" width="100%" :visible.sync="visible" :confirm-working="isWorking" @confirm="confirm">
     <TableLayout>
       <template v-slot:table-wrap>
         <div class="config">
@@ -23,14 +17,10 @@
                 <img src="@/assets/images/peizhi_ar@2x.png" alt="" />
               </div>
               <div v-for="(item, index) in apprList" :key="index">
-                <div
-                    class="item yellow"
-                    :class="{
+                <div class="item yellow" :class="{
                   active: activeIndex == index,
                   blue: item.type == '1',
-                }"
-                    @click="flowClick(index)"
-                >
+                }" @click="flowClick(index)">
                   <div class="head">{{ item.remark }}</div>
                   <div class="content">
                     <!-- 瀹℃壒 -->
@@ -40,25 +30,19 @@
                       </template>
                       <template v-if="item.memberType == '1'">
                         <div v-if="item.objIds && item.objIds.length === 1">
-                        <span
-                        >{{ item.objIds[0].name }}
-                          {{ item.objIds[0].companyName }}</span
-                        >
+                          <span>{{ item.objIds[0].name }}
+                            {{ item.objIds[0].companyName }}</span>
                           <span v-if="item.approveType == 0 && item.type == '0'">
-                          鎴栫</span
-                          >
+                            鎴栫</span>
                           <span v-if="item.approveType == 1 && item.type == '0'">
-                          浼氱</span
-                          >
+                            浼氱</span>
                         </div>
                         <div v-else-if="item.objIds && item.objIds.length > 1">
                           <span>{{ item.objIds[0].name }} 绛�</span>
                           <span v-if="item.approveType == 0 && item.type == '0'">
-                          鎴栫</span
-                          >
+                            鎴栫</span>
                           <span v-if="item.approveType == 1 && item.type == '0'">
-                          浼氱</span
-                          >
+                            浼氱</span>
                         </div>
                         <div v-else>璇烽�夋嫨</div>
                         <i class="el-icon-arrow-right"></i>
@@ -67,19 +51,14 @@
                     <!-- 鎶勯�� -->
                     <template v-if="item.type == 1">
                       <div v-if="item.objIds && item.objIds.length === 1">
-                        <span
-                        >{{ item.objIds[0].name }}
-                          {{ item.objIds[0].companyName }}</span
-                        >
+                        <span>{{ item.objIds[0].name }}
+                          {{ item.objIds[0].companyName }}</span>
                       </div>
                       <div v-else-if="item.objIds && item.objIds.length > 1">
                         <span>{{ item.objIds[0].name }} 绛�</span>
                       </div>
                       <div v-else>璇烽�夋嫨</div>
-                      <i
-                          v-if="item.memberType == '1'"
-                          class="el-icon-arrow-right"
-                      ></i>
+                      <i v-if="item.memberType == '1'" class="el-icon-arrow-right"></i>
                     </template>
                   </div>
                 </div>
@@ -88,11 +67,7 @@
                     <div class="line"></div>
                     <img src="@/assets/images/peizhi_ar@2x.png" alt="" />
                   </template>
-                  <i
-                      v-if="apprList.length - 2 === index"
-                      @click="handleAddAppr()"
-                      class="el-icon-circle-plus add"
-                  ></i>
+                  <i v-if="apprList.length - 2 === index" @click="handleAddAppr()" class="el-icon-circle-plus add"></i>
                 </div>
               </div>
             </div>
@@ -102,171 +77,114 @@
               <div class="config_data_item_label">閫夋嫨璇ヨ妭鐐圭殑瀹℃壒浜�</div>
               <div class="df_ac mb10">
                 <div>瀹℃壒鑺傜偣鍚嶇О</div>
-                <el-input
-                    class="w200 ml10"
-                    v-model="apprList[activeIndex].remark"
-                ></el-input>
+                <el-input class="w200 ml10" v-model="apprList[activeIndex].remark"></el-input>
               </div>
               <!-- 鎶勯�佷汉 -->
               <template v-if="apprList[activeIndex].type == '1'">
                 <div class="config_data_item_reviewed_content">
-                  <div
-                      v-for="mem in apprList[activeIndex].objIds"
-                      :key="mem.id"
-                      class="config_data_item_reviewed_content_item"
-                  >
+                  <div v-for="mem in apprList[activeIndex].objIds" :key="mem.id"
+                    class="config_data_item_reviewed_content_item">
                     <span>{{ mem.name }}</span>
                     <i class="el-icon-close"></i>
                   </div>
                   <span class="add" @click="selStaff">+娣诲姞</span>
                 </div>
               </template>
-              <el-radio-group
-                  v-if="apprList[activeIndex].type == '0'"
-                  v-model="apprList[activeIndex].memberType"
-              >
-<!--                <el-radio :label="0">鐢宠浜�</el-radio>-->
+              <el-radio-group v-if="apprList[activeIndex].type == '0'" v-model="apprList[activeIndex].memberType">
+                <!--                <el-radio :label="0">鐢宠浜�</el-radio>-->
                 <el-radio :label="1">鎸囧畾浜哄憳</el-radio>
                 <el-radio :label="2">閮ㄩ棬涓荤</el-radio>
               </el-radio-group>
-              <div
-                  class="config_data_item_reviewed"
-                  v-if="apprList[activeIndex].memberType == 1"
-              >
+              <div class="config_data_item_reviewed" v-if="apprList[activeIndex].memberType == 1">
                 <div class="config_data_item_reviewed_label">
                   <span>鎸囧畾瀹℃牳浜�</span>
                   <span>涓嶈秴杩�20浜�</span>
                 </div>
                 <div class="config_data_item_reviewed_content">
-                  <div
-                      v-for="(mem, memIndex) in apprList[activeIndex].objIds"
-                      :key="mem.id"
-                      class="config_data_item_reviewed_content_item"
-                  >
+                  <div v-for="(mem, memIndex) in apprList[activeIndex].objIds" :key="mem.id"
+                    class="config_data_item_reviewed_content_item">
                     <span>{{ mem.name }}</span>
                     <i class="el-icon-close" @click="memDel(memIndex)"></i>
                   </div>
                   <span class="add" @click="selStaff">+娣诲姞</span>
                 </div>
               </div>
-              <div
-                  class="config_data_item_reviewed"
-                  v-if="apprList[activeIndex].memberType == 2"
-              >
+              <div class="config_data_item_reviewed" v-if="apprList[activeIndex].memberType == 2">
                 <div class="config_data_item_reviewed_label">
                   <span>閮ㄩ棬涓荤</span>
                 </div>
                 <div class="config_data_item_reviewed_r">
                   <span>鐢宠浜虹殑</span>
-                  <el-select
-                      v-model="apprList[activeIndex].objLevel"
-                      placeholder="璇烽�夋嫨"
-                      style="margin: 0 20px 0 10px"
-                  >
+                  <el-select v-model="apprList[activeIndex].objLevel" placeholder="璇烽�夋嫨" style="margin: 0 20px 0 10px">
                     <el-option label="鐩存帴涓荤" :value="0" />
                     <el-option label="浜岀骇涓荤" :value="1" />
                     <el-option label="涓夌骇涓荤" :value="2" />
                     <el-option label="鍥涚骇涓荤" :value="4" />
                   </el-select>
-                  <el-checkbox
-                      v-model="apprList[activeIndex].noleaderOpt"
-                      :true-label="1"
-                      :false-label="0"
-                  >鎵句笉鍒颁富绠℃椂锛岀敱涓婄骇涓荤浠e鏍�</el-checkbox>
+                  <el-checkbox v-model="apprList[activeIndex].noleaderOpt" :true-label="1"
+                    :false-label="0">鎵句笉鍒颁富绠℃椂锛岀敱涓婄骇涓荤浠e鏍�</el-checkbox>
                 </div>
               </div>
             </div>
-            <div
-                class="config_data_item"
-                v-if="
+            <div class="config_data_item" v-if="
               (apprList[activeIndex].memberType == 1 ||
                 apprList[activeIndex].memberType == 2) &&
               apprList[activeIndex].type == '0'
-            "
-            >
+            ">
               <div class="config_data_item_label">
                 瀹℃壒鏂瑰紡
                 <span>瀹℃壒浜轰负澶氫釜鏃讹紝閲囩敤鐨勫鎵规柟寮�</span>
               </div>
-              <el-radio-group
-                  v-model="apprList[activeIndex].approveType"
-                  style="display: flex; flex-direction: column"
-              >
-                <el-radio :label="0" style="margin-bottom: 20px"
-                >鎴栫锛堝叾涓竴鍚嶅鎵逛汉鍚屾剰鎴栨嫆缁濆嵆鍙級</el-radio
-                >
+              <el-radio-group v-model="apprList[activeIndex].approveType" style="display: flex; flex-direction: column">
+                <el-radio :label="0" style="margin-bottom: 20px">鎴栫锛堝叾涓竴鍚嶅鎵逛汉鍚屾剰鎴栨嫆缁濆嵆鍙級</el-radio>
                 <el-radio :label="1">浼氱锛堟墍鏈夊鎵逛汉閮藉悓鎰忔墠鍙�氳繃锛�</el-radio>
               </el-radio-group>
             </div>
             <div class="config_data_submit">
-              <el-button
-                  @click="onSubmit"
-                  :loading="subLoading"
-                  style="background: #435ebe"
-                  type="primary"
-              >淇濆瓨閰嶇疆椤�</el-button
-              >
-              <el-button
-                  v-if="activeIndex !== 0 && activeIndex !== apprList.length - 1"
-                  type="danger"
-                  plain
-                  @click="handleDel"
-              >鍒犻櫎鑺傜偣</el-button
-              >
+              <el-button @click="onSubmit" :loading="subLoading" style="background: #435ebe"
+                type="primary">淇濆瓨閰嶇疆椤�</el-button>
+              <el-button v-if="activeIndex !== 0 && activeIndex !== apprList.length - 1" type="danger" plain
+                @click="handleDel">鍒犻櫎鑺傜偣</el-button>
             </div>
           </div>
         </div>
       </template>
       <!--  -->
-      <el-dialog title="閫夋嫨鍛樺伐" :visible.sync="isShowTransfer" width="1000px" style="z-index: 99999" append-to-body>
+      <el-dialog title="閫夋嫨鍛樺伐" :visible.sync="isShowTransfer" width="900px" style="z-index: 99999" append-to-body>
         <div class="staff_modal">
           <div class="left">
-            <div
-                style="
+            <div style="
               width: 100%;
               height: 50px;
               background: rgba(242, 242, 242, 1);
               line-height: 50px;
               text-align: center;
               font-size: 14px;
-            "
-            >
+            ">
               浼佷笟缁勭粐鏋舵瀯
             </div>
             <div style="width: 100%; height: 100%; overflow-y: scroll">
-              <Tree
-                  :list="companyTree"
-                  :defaultProps="{
+              <Tree :list="companyTree" :defaultProps="{
                 name: 'name',
                 status: 'fsStatus',
                 children: 'childList',
                 id: 'id',
-              }"
-                  @callback="callback"
-              />
+              }" @callback="callback" />
             </div>
           </div>
-          <el-transfer
-              filterable
-              :title="['鏈��', '宸查��']"
-              openAll
-              :props="{ label: 'name', key: 'keyTemp' }"
-              filter-placeholder="鎼滅储鍛樺伐"
-              v-model="searchForm.objIds"
-              :data="memberList"
-              class="transfer"
-          >
+          <el-transfer filterable  :titles="['鏈��', '宸查��']" openAll :props="{ label: 'name', key: 'keyTemp' }"
+            filter-placeholder="鎼滅储鍛樺伐" v-model="searchForm.objIds" :data="memberList" class="transfer">
           </el-transfer>
         </div>
         <span slot="footer" class="dialog-footer">
-        <el-button @click="isShowTransfer = false">鍙� 娑�</el-button>
-        <el-button type="primary" @click="TransferSub">纭� 瀹�</el-button>
-      </span>
+          <el-button @click="isShowTransfer = false">鍙� 娑�</el-button>
+          <el-button type="primary" @click="TransferSub">纭� 瀹�</el-button>
+        </span>
       </el-dialog>
     </TableLayout>
     <span slot="footer" class="dialog-footer">
-        <el-button @click="visible= false">杩斿洖</el-button>
-      </span>
+      <el-button @click="visible = false">杩斿洖</el-button>
+    </span>
   </GlobalWindow>
 </template>
 
@@ -274,7 +192,7 @@
 import BaseOpera from '@/components/base/BaseOpera'
 import TableLayout from '@/layouts/TableLayout'
 import Tree from '@/components/common/Tree'
-import {approveTemplSave, approveTemplById} from '@/api'
+import { approveTemplSave, approveTemplById } from '@/api'
 import { fetchList } from '@/api/business/company'
 import { fetchList as memberListPost } from '@/api/business/member'
 import GlobalWindow from '@/components/common/GlobalWindow'
@@ -282,14 +200,14 @@
   name: 'OperaPlatformReasonWindow',
   extends: BaseOpera,
   components: { Tree, GlobalWindow, TableLayout },
-  data () {
+  data() {
     return {
-      model:{},
+      model: {},
       reasonId: null,
       activeType: '6',
       subLoading: false,
       apprList: [
-        { remark: '瀹℃壒浜�', active: false,memberType:1, type: '1', objIds: [] },
+        { remark: '瀹℃壒浜�', active: false, memberType: 1, type: '1', objIds: [] },
         { remark: '鎶勯�佷汉', active: false, type: '1', objIds: [] }
       ],
       activeIndex: 0,
@@ -300,18 +218,18 @@
       companyTree: []
     }
   },
-  created () {
+  created() {
 
   },
   methods: {
-    open (title, row) {
+    open(title, row) {
       this.title = title + '銆�' + row.reason + '銆�'
       this.visible = true
       this.reasonId = row.id
       this.model = row
       this.getfindCompanyTreePage()
       this.apprList = [
-        { remark: '瀹℃壒浜�', active: false, type: '0',memberType:1, objIds: [] },
+        { remark: '瀹℃壒浜�', active: false, type: '0', memberType: 1, objIds: [] },
         { remark: '鎶勯�佷汉', active: false, type: '1', objIds: [] }
       ]
       this.param = {}
@@ -321,7 +239,7 @@
       this.companyTree = []
       this.initDate()
     },
-    flowClick (i) {
+    flowClick(i) {
       this.activeIndex = i
       this.apprList.forEach((item, index) => {
         if (i === index) {
@@ -339,8 +257,8 @@
         }
       })
     },
-    initDate () {
-      if(this.model.approveTemplId){
+    initDate() {
+      if (this.model.approveTemplId) {
         approveTemplById(this.model.approveTemplId).then(res => {
           if (res && res.paramList) {
             const arr = res.paramList || []
@@ -353,7 +271,7 @@
                     companyName: i.companyName
                   }
                 })
-              }else{
+              } else {
                 item.objIds = []
               }
             })
@@ -365,7 +283,7 @@
         })
       }
     },
-    onSubmit () {
+    onSubmit() {
       const { apprList, activeType } = this
       const temp = JSON.parse(JSON.stringify(apprList))
       temp.forEach((item, index) => {
@@ -379,7 +297,7 @@
       this.subLoading = true
       approveTemplSave({
         type: activeType,
-        reasonId:this.model.id,
+        reasonId: this.model.id,
         paramList: temp
       }).then(res => {
         this.subLoading = false
@@ -389,17 +307,17 @@
         this.subLoading = false
       })
     },
-    handleDel () {
+    handleDel() {
       const { activeIndex } = this
       this.apprList.splice(activeIndex, 1)
       this.activeIndex = 0
     },
-    handleAddAppr () {
-      this.apprList.splice(this.apprList.length - 1, 0, { remark: '瀹℃壒浜�', active: false,memberType:1, type: 0, objIds: [] })
+    handleAddAppr() {
+      this.apprList.splice(this.apprList.length - 1, 0, { remark: '瀹℃壒浜�', active: false, memberType: 1, type: 0, objIds: [] })
       // this.apprList.push({ remark: '瀹℃壒浜�', active: false, type: '0' })
     },
     // 鑾峰彇缁勭粐鏍�
-    getfindCompanyTreePage () {
+    getfindCompanyTreePage() {
       fetchList()
         .then(res => {
           if (res && res.length > 0) {
@@ -411,7 +329,7 @@
           }
         })
     },
-    getMemberList () {
+    getMemberList() {
       memberListPost({
         model: {
           companyId: this.searchForm.companyId || '',
@@ -433,13 +351,13 @@
         // console.log('defaultProps', res)
       })
     },
-    callback (row) {
+    callback(row) {
       console.log(row)
       this.$set(this.searchForm, 'companyId', row.id)
       this.$set(this.searchForm, 'erpOrgId', row.erpId)
       this.getMemberList()
     },
-    TransferSub () {
+    TransferSub() {
       const { activeIndex } = this
       if (this.searchForm.objIds && this.searchForm.objIds.length > 0) {
         if (this.searchForm.objIds.length > 20) return this.$message.warning('鏈�澶氶�夋嫨20浜�')
@@ -460,7 +378,7 @@
       this.isShowTransfer = false
       console.log(this.searchForm.objIds)
     },
-    memDel (memIndex) {
+    memDel(memIndex) {
       const { activeIndex } = this
       this.apprList.forEach((item, index) => {
         if (activeIndex === index) {
@@ -472,11 +390,11 @@
         }
       })
     },
-    selStaff () {
+    selStaff() {
       this.isShowTransfer = true
       this.getMemberList()
     },
-    seleItem (i) {
+    seleItem(i) {
       this.list.forEach((item, index) => {
         item.active = index === i
       })
@@ -485,175 +403,205 @@
 }
 </script>
 <style lang="scss" scoped>
-.labelTip{
+.labelTip {
   font-size: 12px;
   color: #666666;
 }
+
 .config {
- width: 100%;
- padding-bottom: 20px;
- box-sizing: border-box;
- height: calc(100vh - 140px);
- display: flex;
- align-items: center;
- justify-content: space-between;
-.config_list {
-  width: 543px;
-  height: 100%;
-  flex-shrink: 0;
-  border-radius: 2px;
-  padding: 20px;
-  box-sizing: border-box;
-  border: 1px solid #eeeeee;
-  background: #f7f7f7;
-.config_list_head {
   width: 100%;
-  height: 40px;
+  padding-bottom: 20px;
+  box-sizing: border-box;
+  height: calc(100vh - 140px);
   display: flex;
   align-items: center;
   justify-content: space-between;
-span {
-  font-size: 18px;
-  font-weight: 500;
-  color: #222222;
+
+  .config_list {
+    width: 543px;
+    height: 100%;
+    flex-shrink: 0;
+    border-radius: 2px;
+    padding: 20px;
+    box-sizing: border-box;
+    border: 1px solid #eeeeee;
+    background: #f7f7f7;
+
+    .config_list_head {
+      width: 100%;
+      height: 40px;
+      display: flex;
+      align-items: center;
+      justify-content: space-between;
+
+      span {
+        font-size: 18px;
+        font-weight: 500;
+        color: #222222;
+      }
+    }
+
+    .config_content {
+      width: 100%;
+      height: calc(100% - 40px);
+      padding-top: 45px;
+      box-sizing: border-box;
+      overflow-y: scroll;
+      display: flex;
+      align-items: center;
+      flex-direction: column;
+
+      &::-webkit-scrollbar {
+        width: 0;
+      }
+
+      .active {
+        border: 2px solid #4456ac !important;
+      }
+
+      .yellow {
+        background: #e89e42 !important;
+      }
+
+      .blue {
+        background: #5094f3 !important;
+      }
+
+      .arrows {
+        display: flex;
+        flex-direction: column;
+        align-items: center;
+        position: relative;
+
+        .line {
+          width: 1px;
+          height: 60px;
+          background-color: #ccc;
+        }
+
+        .add {
+          font-size: 40px;
+          color: #2080f7;
+          position: absolute;
+          cursor: pointer;
+          z-index: 999;
+          top: 10px;
+        }
+
+        img {
+          width: 12px;
+        }
+      }
+
+      .item {
+        width: 200px;
+        cursor: pointer;
+        border: 2px solid #f7f7f7;
+        height: 80px;
+        background: #4456ac;
+        border-radius: 2px;
+        position: relative;
+        display: flex;
+        flex-direction: column;
+
+        .head {
+          height: 32px;
+          line-height: 32px;
+          padding: 2px 12px;
+          color: #fff;
+        }
+
+        .content {
+          flex: 1;
+          background-color: #fff;
+          display: flex;
+          align-items: center;
+          padding: 0 12px;
+          justify-content: space-between;
+        }
+
+        &:last-child {
+          margin: 0 !important;
+        }
+      }
+    }
+  }
+
+  .config_data {
+    flex: 1;
+    height: 100%;
+    margin-left: 20px;
+
+    .config_data_submit {
+      margin-top: 50px;
+    }
+
+    .config_data_item {
+      width: 100%;
+      display: flex;
+      flex-direction: column;
+      margin-bottom: 30px;
+
+      &:last-child {
+        margin: 0 !important;
+      }
+
+      .config_data_item_label {
+        font-size: 16px;
+        font-weight: 500;
+        color: #222222;
+        margin-bottom: 20px;
+
+        span {
+          font-size: 12px;
+          font-weight: 400;
+          color: #999999;
+          margin-left: 10px;
+        }
+      }
+
+      .config_data_item_reviewed {
+        width: 100%;
+        margin-top: 20px;
+
+        .config_data_item_reviewed_r {
+          margin-top: 10px;
+          width: 100%;
+          display: flex;
+          align-items: center;
+
+          span {
+            flex-shrink: 0;
+            font-size: 14px;
+            font-weight: 400;
+            color: #666666;
+          }
+        }
+
+        .config_data_item_reviewed_label {
+          display: flex;
+          align-items: center;
+
+          span {
+            &:nth-child(1) {
+              font-size: 14px;
+              font-weight: 400;
+              color: #222222;
+            }
+
+            &:nth-child(2) {
+              font-size: 12px;
+              font-weight: 400;
+              color: #999999;
+              margin-left: 8px;
+            }
+          }
+        }
+      }
+    }
+  }
 }
-}
-.config_content {
-  width: 100%;
-  height: calc(100% - 40px);
-  padding-top: 45px;
-  box-sizing: border-box;
-  overflow-y: scroll;
-  display: flex;
-  align-items: center;
-  flex-direction: column;
-&::-webkit-scrollbar {
-   width: 0;
- }
-.active {
-  border: 2px solid #4456ac !important;
-}
-.yellow {
-  background: #e89e42 !important;
-}
-.blue {
-  background: #5094f3 !important;
-}
-.arrows {
-  display: flex;
-  flex-direction: column;
-  align-items: center;
-  position: relative;
-.line {
-  width: 1px;
-  height: 60px;
-  background-color: #ccc;
-}
-.add {
-  font-size: 40px;
-  color: #2080f7;
-  position: absolute;
-  cursor: pointer;
-  z-index: 999;
-  top: 10px;
-}
-img {
-  width: 12px;
-}
-}
-.item {
-  width: 200px;
-  cursor: pointer;
-  border: 2px solid #f7f7f7;
-  height: 80px;
-  background: #4456ac;
-  border-radius: 2px;
-  position: relative;
-  display: flex;
-  flex-direction: column;
-.head {
-  height: 32px;
-  line-height: 32px;
-  padding: 2px 12px;
-  color: #fff;
-}
-.content {
-  flex: 1;
-  background-color: #fff;
-  display: flex;
-  align-items: center;
-  padding: 0 12px;
-  justify-content: space-between;
-}
-&:last-child {
-   margin: 0 !important;
- }
-}
-}
-}
-.config_data {
-  flex: 1;
-  height: 100%;
-  margin-left: 20px;
-.config_data_submit {
-  margin-top: 50px;
-}
-.config_data_item {
-  width: 100%;
-  display: flex;
-  flex-direction: column;
-  margin-bottom: 30px;
-&:last-child {
-   margin: 0 !important;
- }
-.config_data_item_label {
-  font-size: 16px;
-  font-weight: 500;
-  color: #222222;
-  margin-bottom: 20px;
-span {
-  font-size: 12px;
-  font-weight: 400;
-  color: #999999;
-  margin-left: 10px;
-}
-}
-.config_data_item_reviewed {
-  width: 100%;
-  margin-top: 20px;
-.config_data_item_reviewed_r {
-  margin-top: 10px;
-  width: 100%;
-  display: flex;
-  align-items: center;
-span {
-  flex-shrink: 0;
-  font-size: 14px;
-  font-weight: 400;
-  color: #666666;
-}
-}
-.config_data_item_reviewed_label {
-  display: flex;
-  align-items: center;
-span {
-&:nth-child(1) {
-   font-size: 14px;
-   font-weight: 400;
-   color: #222222;
- }
-&:nth-child(2) {
-   font-size: 12px;
-   font-weight: 400;
-   color: #999999;
-   margin-left: 8px;
- }
-}
-}
-}
-}
-}
-}
+
 .config_data_item_reviewed_content {
   width: 400px;
   margin-top: 10px;
@@ -665,46 +613,62 @@
   display: flex;
   align-items: flex-start;
   flex-wrap: wrap;
-.add {
-  font-size: 12px;
-  font-weight: 400;
-  color: #435ebe;
-  cursor: pointer;
-  margin-top: 3px;
+
+  .add {
+    font-size: 12px;
+    font-weight: 400;
+    color: #435ebe;
+    cursor: pointer;
+    margin-top: 3px;
+  }
+
+  .config_data_item_reviewed_content_item {
+    padding: 3px 5px;
+    background: #f4f7fc;
+    border-radius: 2px;
+    box-sizing: border-box;
+    margin-right: 10px;
+    margin-bottom: 10px;
+
+    span {
+      font-size: 12px;
+      font-weight: 400;
+      color: #333333;
+    }
+
+    i {
+      color: #949ba2;
+      margin-left: 10px;
+      cursor: pointer;
+    }
+  }
 }
-.config_data_item_reviewed_content_item {
-  padding: 3px 5px;
-  background: #f4f7fc;
-  border-radius: 2px;
-  box-sizing: border-box;
-  margin-right: 10px;
-  margin-bottom: 10px;
-span {
-  font-size: 12px;
-  font-weight: 400;
-  color: #333333;
-}
-i {
-  color: #949ba2;
-  margin-left: 10px;
-  cursor: pointer;
-}
-}
-}
+
 .staff_modal {
   display: flex;
-.left {
-  width: 300px;
-  margin-right: 20px;
-}
-.transfer {
-  height: 600px;
-::v-deep .el-transfer-panel__body {
-  height: 500px;
-}
-::v-deep .el-transfer-panel__list.is-filterable {
-  height: 480px;
-}
-}
+
+  .left {
+    width: 240px;
+    margin-right: 20px;
+  }
+
+  .transfer {
+    height: 600px;
+    width: 100%;
+    display: flex;
+    justify-content: center;
+    align-items: center;
+    ::v-deep .el-transfer-panel{
+      flex: 1;
+      height: 100%;
+    }
+    ::v-deep .el-transfer-panel__body {
+      height: 500px;
+    }
+
+    ::v-deep .el-transfer-panel__list.is-filterable {
+      height: 480px;
+    }
+  }
 }
 </style>
diff --git a/admin/src/layouts/TableLayout1.vue b/admin/src/layouts/TableLayout1.vue
index dd2e38d..56992b0 100644
--- a/admin/src/layouts/TableLayout1.vue
+++ b/admin/src/layouts/TableLayout1.vue
@@ -8,10 +8,10 @@
         </div>-->
         <Profile :roles="roles" :permissions="permissions">
             <div style="width: 100%; height: 100%; padding: 0 16px; box-sizing: border-box; display: flex; align-items: center; justify-content: space-between;">
-                <div style="width: 300px; height: 100%; flex-shrink: 0; background: #ffffff;">
+                <div style="width: 240px; height: 100%; flex-shrink: 0; background: #ffffff;">
                     <slot name="menu"></slot>
                 </div>
-                <div style="width: calc(100% - 310px); height: 100%">
+                <div style="width: calc(100% - 250px); height: 100%">
                     <!-- 鎼滅储琛ㄥ崟閮ㄥ垎 -->
                     <div class="table-search-form" style="padding: 0 !important;">
                         <div class="form-wrap">
diff --git a/admin/src/views/platform/LogisticsRecord/leaveAuth.vue b/admin/src/views/platform/LogisticsRecord/leaveAuth.vue
index 688c2ef..032b282 100644
--- a/admin/src/views/platform/LogisticsRecord/leaveAuth.vue
+++ b/admin/src/views/platform/LogisticsRecord/leaveAuth.vue
@@ -122,7 +122,7 @@
           {
             filed: 'selDate',
             type: 'datetimerange',
-            label: '鎿嶄綔鏃堕棿',
+            label: '浣滀笟瀹屾垚鏃堕棿鎼滅储',
             pickerOptions: {}
           },
           {
diff --git a/admin/src/views/platform/platformGroup.vue b/admin/src/views/platform/platformGroup.vue
index 52fb60f..62b3061 100644
--- a/admin/src/views/platform/platformGroup.vue
+++ b/admin/src/views/platform/platformGroup.vue
@@ -26,8 +26,8 @@
             <span v-if="row.type == 2">甯傚叕鍙稿嵏璐�</span>
           </template>
         </el-table-column>
-        <el-table-column prop="waitCallTime" label="鍙彿绛夊緟鏃堕棿锛堝垎閽燂級" min-width="100px"  align="center"></el-table-column>
-        <el-table-column prop="editDate" label="鏈�杩戞洿鏂版椂闂�" min-width="140px"  align="center"></el-table-column>
+        <el-table-column prop="waitCallTime" label="鍙彿绛夊緟鏃堕棿锛堝垎閽燂級" min-width="140px"  align="center"></el-table-column>
+        <el-table-column prop="editDate" label="鏈�杩戞洿鏂版椂闂�" min-width="150px"  align="center"></el-table-column>
         <el-table-column
           v-if="containPermissions(['business:platformgroup:update', 'business:platformgroup:delete'])"
           label="鎿嶄綔"
diff --git a/admin/src/views/vehicle/components/OperaCategoryWindow.vue b/admin/src/views/vehicle/components/OperaCategoryWindow.vue
index feaead6..962c1b8 100644
--- a/admin/src/views/vehicle/components/OperaCategoryWindow.vue
+++ b/admin/src/views/vehicle/components/OperaCategoryWindow.vue
@@ -1,13 +1,13 @@
 <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-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 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="璇烽�夋嫨">
diff --git a/screen/src/views/PlatformCall.vue b/screen/src/views/PlatformCall.vue
index a3ed50c..dbe977f 100644
--- a/screen/src/views/PlatformCall.vue
+++ b/screen/src/views/PlatformCall.vue
@@ -1,5 +1,5 @@
 <script setup>
-import { ref, onMounted } from 'vue'
+import { ref, onMounted, nextTick } from 'vue'
 import dayjs from 'dayjs'
 import UQRCode from 'uqrcodejs'
 import { getLargeScreenData } from '@/utils/request'
@@ -22,7 +22,8 @@
     if (res.data && res.data.allList) {
       contentList.value = res.data.allList.map(item => {
         if (item.optTime) {
-          item.optTimeTemp = dayjs.duration(item.optTime).format('HH灏忔椂mm鍒�')
+          item.optTimeTemp = dayjs(item.optTime).format('HH:mm')
+          // item.optTimeTemp = dayjs.duration(Math.abs(new Date().getTime() - item.optTime)).format('HH:mm')
         }
         return item
       })
@@ -106,7 +107,7 @@
   var qr = new UQRCode()
   // 璁剧疆浜岀淮鐮佸唴瀹�
   qr.data = qrcode.value
-  qr.size = 220
+  qr.size = 210
   // 璋冪敤鍒朵綔浜岀淮鐮佹柟娉�
   qr.make()
   var canvas = document.getElementById("qrcode")
@@ -139,6 +140,51 @@
   newDate.value = dayjs().format('YYYY-MM-DD')
   newTime.value = dayjs().format('HH:mm')
 }, 1000)
+
+const isFullscreen = ref(false);
+const handleFull = () => {
+  if(!isFullscreen.value){
+    handleFullScreen()
+  }else{
+    cancelFullscreen()
+  }
+}
+setTimeout(() => {
+  handleFull()
+}, 1000)
+const handler = () => {
+  isFullscreen.value = document.fullscreenElement !== null;
+  if (!isFullscreen) {
+    // 閫�鍑哄叏灞忔椂鍊欒В闄ょ洃鍚紝涓嶇劧姣忔鐩戝惉閮戒細娣诲姞涓�娆$粦瀹� 
+    document.removeEventListener("fullscreenchange", handler);
+  }
+};
+document.addEventListener("fullscreenchange", handler);
+const handleFullScreen = () => {
+  let elem = document.documentElement
+  // 灏濊瘯鍚敤鍏ㄥ睆妯″紡
+  if (elem.requestFullscreen) {
+    elem.requestFullscreen()
+  } else if (elem.mozRequestFullScreen) { // 鍏煎 Firefox
+    elem.mozRequestFullScreen()
+  } else if (elem.webkitRequestFullscreen) { // 鍏煎 Chrome, Safari 鍜� Opera
+    elem.webkitRequestFullscreen()
+  } else if (elem.msRequestFullscreen) { // 鍏煎 IE/Edge
+    elem.msRequestFullscreen()
+  }
+}
+function cancelFullscreen() {
+  if (document.exitFullscreen) {
+    document.exitFullscreen();
+  } else if (document.msExitFullscreen) {
+    document.msExitFullscreen();
+  } else if (document.mozCancelFullScreen) {
+    document.mozCancelFullScreen();
+  } else if (document.webkitExitFullscreen) {
+    document.webkitExitFullscreen();
+  }
+}
+
 </script>
 <template>
   <div class="main_app">
@@ -203,14 +249,14 @@
         </div>
         <div class="qrcode_wrap">
           <div class="qrcode">
-            <canvas id="qrcode" width="220" height="220"></canvas>
+            <canvas id="qrcode" width="210" height="210"></canvas>
           </div>
           <div class="title">璇锋壂鐮佺鍒�</div>
         </div>
       </div>
     </div>
     <div class="main_footer">
-      <img src="@/assets/images/call/ic_news@2x.png" class="icon" alt="">
+      <img @click="handleFull" src="@/assets/images/call/ic_news@2x.png" class="icon" alt="">
       <div class="title">璇锋牴鎹槦鍒楁彁绀轰俊鎭紝渚濇绛夊�欒繘鍦�</div>
       <div class="icon"></div>
     </div>
@@ -218,9 +264,10 @@
 </template>
 
 <style lang="scss" scoped>
-div{
+div {
   box-sizing: border-box;
 }
+
 .main_app {
   color: #fff;
   position: fixed;
@@ -231,10 +278,10 @@
   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;
@@ -243,7 +290,7 @@
     align-items: center;
     justify-content: space-between;
     padding: 0 50px;
-
+    z-index: 11;
     .title {
       font-weight: 800;
       font-size: 48px;
@@ -288,15 +335,18 @@
     display: flex;
     padding: 30px 20px;
     position: relative;
+
     .list {
       flex: 5;
       margin-right: 20px;
       display: flex;
       flex-direction: column;
+
       .line {
         display: flex;
         align-items: center;
-        flex: 1;
+        height: 11.1%;
+
         &:nth-of-type(2n) {
           background: rgba(255, 255, 255, 0);
         }
@@ -311,13 +361,15 @@
           align-items: center;
           flex-direction: column;
           font-weight: 500;
-          font-size: 36px;
+          font-size: 30px;
           flex: 10;
           height: 100%;
-          .time_place{
+
+          .time_place {
             font-weight: 500;
-            font-size: 24px;
+            font-size: 22px;
           }
+
           .status {
             /* padding: 0 28px; */
             width: 170px;
@@ -348,8 +400,10 @@
       }
 
       .header {
-        font-size: bold;
-        font-size: 40px;
+        .item {
+          font-size: bold;
+          font-size: 36px;
+        }
         background: linear-gradient(180deg, #00B5D1 0%, #003C57 100%) !important;
       }
     }
@@ -359,13 +413,14 @@
       flex: 2;
       display: flex;
       flex-direction: column;
-      border: 1px solid red;
+
       .tip_wrap {
         margin-bottom: 20px;
         width: 100%;
         position: relative;
         /* flex-shrink: 0; */
         flex: 1;
+
         .current_plat {
           display: flex;
           flex-direction: column;
@@ -373,14 +428,14 @@
           justify-content: center;
           padding: 30px 40px;
           color: #FFA000;
-
+          height: 100%;
           .id_card {
-            font-weight: bold;
+            font-weight: 500;
             font-size: 68px;
           }
 
           .no {
-            margin: 10px 0;
+            margin: 8px 0;
             font-weight: 500;
             font-size: 52px;
           }
@@ -392,24 +447,27 @@
 
           .plat {
             color: #fff;
-            margin: 0 10px;
+            margin: 0 6px;
           }
         }
 
         .empty {
-          padding: 30px 40px;
+          display: flex;
+          flex-direction: column;
+          justify-content: center;
           font-weight: 500;
-          font-size: 30px;
-
+          font-size: 26px;
+          height: 100%;
           .title {
             text-align: center;
             font-weight: bold;
-            font-size: 36px;
-            margin-bottom: 20px;
+            font-size: 32px;
+            margin-bottom: 16px;
           }
 
           .line {
-            margin-bottom: 10px;
+            margin-bottom: 8px;
+            padding-left: 32px;
           }
         }
 
@@ -446,9 +504,9 @@
         }
 
         .title {
-          margin-top: 20px;
+          margin-top: 16px;
           font-weight: bold;
-          font-size: 34px;
+          font-size: 28px;
           color: #111111;
         }
       }
diff --git a/screen/vite.config.js b/screen/vite.config.js
index ed0cd2f..fe6a483 100644
--- a/screen/vite.config.js
+++ b/screen/vite.config.js
@@ -16,6 +16,9 @@
       '@': fileURLToPath(new URL('./src', import.meta.url))
     }
   },
+  build: {
+    outDir: 'platform_screen'
+  },
   server: {
     proxy: {
       "/gateway_interface": {

--
Gitblit v1.9.3