From 75428aa3f870b62c7ccc7ebc7c0360c5fa4fb3e6 Mon Sep 17 00:00:00 2001
From: liukangdong <898885815@qq.com>
Date: 星期五, 13 十二月 2024 20:03:07 +0800
Subject: [PATCH] ll

---
 h5/pages/driver/index.vue                                  |    2 
 screen/src/utils/request.js                                |    2 
 admin/src/views/platform/LogisticsRecord/operationCity.vue |    2 
 screen/src/views/LogisticsEfficiency.vue                   |  290 ++++++----
 h5/pages/staff/vehicle/shinei.vue                          |    2 
 screen/src/views/SecurityControl.vue                       |    9 
 h5/pages/userinfo/userinfo.vue                             |  873 +++++++++++++++++---------------
 screen/src/views/TaskEfficiency.vue                        |  113 ++-
 screen/src/assets/images/FireFighting/fire_right.png       |    0 
 admin/src/views/index.vue                                  |    2 
 h5/pages/driver/taskDetail.vue                             |   18 
 screen/src/api/index.js                                    |   14 
 screen/src/views/LogisticsCenter.vue                       |    1 
 h5/pages/driver/taskConfirm.vue                            |    2 
 h5/pages/staff/task/vDangetAppr.vue                        |    3 
 screen/src/views/EnergyConsum.vue                          |   71 +-
 h5/pages/staff/vehicle/apply.vue                           |   17 
 screen/src/views/FireFighting.vue                          |   92 ++
 18 files changed, 879 insertions(+), 634 deletions(-)

diff --git a/admin/src/views/index.vue b/admin/src/views/index.vue
index d7a404d..f97c7b7 100644
--- a/admin/src/views/index.vue
+++ b/admin/src/views/index.vue
@@ -1,6 +1,6 @@
 <template>
   <div class="main_home">
-    <div style="position: fixed;z-index: 99999"><video  style="height: 100px;width: 500px" src="rtsp://10.50.250.253:554/openUrl/K2y2vE4" controls></video></div>
+    <!-- <div style="position: fixed;z-index: 99999"><video  style="height: 100px;width: 500px" src="rtsp://10.50.250.253:554/openUrl/K2y2vE4" controls></video></div> -->
     <div class="home_header">
       <div class="mb10 fs17">涓嬪崍濂斤紝{{ userInfo.realname }}</div>
       <div class="fs13">
diff --git a/admin/src/views/platform/LogisticsRecord/operationCity.vue b/admin/src/views/platform/LogisticsRecord/operationCity.vue
index 3dceb78..8b0634f 100644
--- a/admin/src/views/platform/LogisticsRecord/operationCity.vue
+++ b/admin/src/views/platform/LogisticsRecord/operationCity.vue
@@ -19,7 +19,7 @@
     <el-table class="mb20" v-loading="loading" :data="list" stripe>
       <el-table-column prop="contractNum" label="鍚堝悓鍙�" min-width="100" show-overflow-tooltip />
       <el-table-column prop="reason" label="鍏ュ洯鍘熷洜" min-width="100" show-overflow-tooltip />
-      <el-table-column prop="totalNum" label="鎬讳綔涓氶噺(涓囨敮)" min-width="100" show-overflow-tooltip />
+      <el-table-column prop="totalNum" label="鎬讳綔涓氶噺(涓囨敮)" min-width="120" show-overflow-tooltip />
       <el-table-column prop="carCodeFront" label="杞︾墝鍓嶇収鍙�" min-width="100" show-overflow-tooltip />
       <el-table-column prop="carCodeBack" label="杞︾墝鍚庣収鍙�" min-width="100" show-overflow-tooltip />
       <!-- <el-table-column prop="taskOrigin" label="浠诲姟鏉ユ簮" min-width="100" show-overflow-tooltip />
diff --git a/h5/pages/driver/index.vue b/h5/pages/driver/index.vue
index 29134b3..b2f5b0c 100644
--- a/h5/pages/driver/index.vue
+++ b/h5/pages/driver/index.vue
@@ -327,7 +327,7 @@
 		background: #ffffff;
 		box-shadow: 0rpx 6rpx 24rpx 0rpx rgba(39, 155, 170, 0.32);
 		border-radius: 16rpx;
-		height: 280rpx;
+		height: 260rpx;
 		width: 98%;
 		margin-left: 1%;
 
diff --git a/h5/pages/driver/taskConfirm.vue b/h5/pages/driver/taskConfirm.vue
index 622fc0c..f8327f9 100644
--- a/h5/pages/driver/taskConfirm.vue
+++ b/h5/pages/driver/taskConfirm.vue
@@ -109,7 +109,7 @@
 								</view>
 								<view class="line">
 									<view class="label">鏁伴噺锛�</view>
-									<view class="value">{{ line.ioQty }}</view>
+									<view class="value">{{ line.ioQty }}涓囨敮</view>
 								</view>
 							</view>
 						</view>
diff --git a/h5/pages/driver/taskDetail.vue b/h5/pages/driver/taskDetail.vue
index e2aab9b..dedc18e 100644
--- a/h5/pages/driver/taskDetail.vue
+++ b/h5/pages/driver/taskDetail.vue
@@ -7,7 +7,9 @@
 			<view class="name" v-if="param.status == 3">鍏ュ洯绛夊緟</view>
 			<view class="name" v-if="param.status == 4">璇峰叆鍥仠闈爗{param.platformName}}浣滀笟</view>
 			<view class="name" v-if="param.status == 5">鏈堝彴浣滀笟涓�</view>
-			<view class="name" v-if="param.status == 6">浣滀笟宸插畬鎴�</view>
+			<view class="name" v-if="param.status == 6">浣滀笟宸插畬鎴�</view>
+			<view class="name" v-if="param.status == 7">杞Щ涓�</view>
+			<view class="name red" v-if="param.status == 8">寮傚父鎸傝捣</view>
 			<view class="id_card">{{ param.carCodeFront }}</view>
 			<view class="status">{{statusMap[param.status]}}</view>
 		</view>
@@ -104,7 +106,6 @@
 				<view class="time">{{nowTime}}</view>
 			</view>
 		</view>
-		<view class="space"></view>
 		<!-- 绛夊緟鍙彿 -->
 		<view v-if="param.status == 2" class="padding_wrap">
 			<view class="btn check" @click="handleQueue">鏌ョ湅鎺掗槦鎯呭喌</view>
@@ -152,7 +153,7 @@
 								</view>
 								<view class="line">
 									<view class="label">鏁伴噺锛�</view>
-									<view class="value">{{ line.ioQty }}</view>
+									<view class="value">{{ line.ioQty }}涓囨敮</view>
 								</view>
 							</view>
 						</view>
@@ -181,10 +182,10 @@
 					status: '0'
 				},
 				jobId: '',
-				lat: '',
-				lnt: '',
-				// lat: '31.783205',
-				// lnt: '117.262635',
+				// lat: '',
+				// lnt: '',
+				lat: '31.783205',
+				lnt: '117.262635',
 				nowTime: '',
 				wmsInfo: {},
 				signDistance: uni.getStorageSync('driverGuide').signDistance,
@@ -205,7 +206,8 @@
 				// 		'openLocation'
 				// 	] // 蹇呭~锛岄渶瑕佷娇鐢ㄧ殑JS鎺ュ彛鍒楄〃
 				// })
-				this.getLocation()
+				// this.getLocation()
+				this.getDetail()
 			} else {
 				this.getDetail()
 			}
diff --git a/h5/pages/staff/task/vDangetAppr.vue b/h5/pages/staff/task/vDangetAppr.vue
index 74c1459..b92706c 100644
--- a/h5/pages/staff/task/vDangetAppr.vue
+++ b/h5/pages/staff/task/vDangetAppr.vue
@@ -374,7 +374,8 @@
 			},
 			handleOpen() {
 				this.isShowHandle = true;
-				const submitFileList = this.info.submitFileList || []
+				const submitFileList = this.info.submitFileList || []
+				this.dealBeforeFileList  = [...submitFileList]
 				this.submitFileList = [...submitFileList];
 				this.$set(this.handleParam, 'dealTime', dayjs().format('YYYY-MM-DD HH:mm:ss'));
 			},
diff --git a/h5/pages/staff/vehicle/apply.vue b/h5/pages/staff/vehicle/apply.vue
index 23ad5ae..d0fa466 100644
--- a/h5/pages/staff/vehicle/apply.vue
+++ b/h5/pages/staff/vehicle/apply.vue
@@ -227,13 +227,19 @@
 </script>
 
 <style lang="scss">
+	page{
+		background-color: #f7f7f7;
+	}
 .main_wrap {
   .line {
     display: flex;
     justify-content: space-between;
     align-items: center;
     border-bottom: 1rpx solid #e5e5e5;
-    padding: 30rpx 0;
+    padding: 30rpx;
+		background-color: #fff;
+		width: 750rpx;
+		margin: 0 -30rpx;
     .label {
       font-size: 30rpx;
       font-weight: 400;
@@ -262,11 +268,14 @@
     }
   }
   .upload_line {
-    padding: 30rpx 0;
+    padding: 30rpx;
+		width: 750rpx;
+		margin: 0 -30rpx;
+		background-color: #fff;
     textarea {
       margin-top: 12rpx;
       width: 100%;
-      height: 180rpx;
+      height: 120rpx;
       font-size: 28rpx;
       font-weight: 400;
       color: #222222;
@@ -307,7 +316,7 @@
 }
 .tip {
   background: #f7f7f7;
-  padding: 30rpx 30rpx 180rpx;
+  padding: 30rpx 30rpx 10rpx;
   margin: 0 -30rpx;
   .title {
     line-height: 40rpx;
diff --git a/h5/pages/staff/vehicle/shinei.vue b/h5/pages/staff/vehicle/shinei.vue
index 3e00088..0c4d8da 100644
--- a/h5/pages/staff/vehicle/shinei.vue
+++ b/h5/pages/staff/vehicle/shinei.vue
@@ -262,7 +262,7 @@
 							// if (dayjs().format('YYYY-MM-DD') == param.queryDate) {
 							// let endTime = new Date(i.endTime).getTime()
 							// let nowTime = new Date().getTime()
-							i.pastFlag = new Date().getTime() > new Date(i.startTime).getTime()
+							i.pastFlag = new Date().getTime() > new Date(i.endTime).getTime()
 							// if (endTime < nowTime) {
 							//   i.isUse = 1
 							// }
diff --git a/h5/pages/userinfo/userinfo.vue b/h5/pages/userinfo/userinfo.vue
index 6d579f0..c825b10 100644
--- a/h5/pages/userinfo/userinfo.vue
+++ b/h5/pages/userinfo/userinfo.vue
@@ -1,409 +1,468 @@
-<template>
-	<view class="container">
-		<view class="visitor-form">
-			<view class="cell">
-				<view class="title"><b>*</b>濮撳悕</view>
-				<view class="content">
-					<input class="input" @focus="showKeyboard = true" @blur="showKeyboard = false" placeholder-style="color: #999999;" maxlength="30" v-model="visitorData.name" placeholder="璇疯緭鍏ユ偍鐨勭湡瀹炲鍚�" />
-				</view>
-			</view>
-			<view class="cell">
-				<view class="title"><b>*</b>鎵嬫満鍙�</view>
-				<view class="content">
-					<input type="number" @focus="showKeyboard = true" @blur="showKeyboard = false" class="input" maxlength="11" placeholder-style="color: #999999;" v-model="visitorData.phone" placeholder="璇疯緭鍏ユ偍鐨勬墜鏈哄彿" />
-				</view>
-			</view>
-			<view class="cell">
-				<view class="title"><b>*</b>璇佷欢绫诲瀷</view>
-				<view class="content" @click="show = true">
-					<text :style="{color: visitorData.idcardTypeName ? '#000000' : ''}">{{visitorData.idcardTypeName ? visitorData.idcardTypeName : '璇烽�夋嫨'}}</text>
-					<u-icon name="arrow-right" color="#CCCCCC" size="16" class="ml6"></u-icon>
-				</view>
-			</view>
-			<view class="cell">
-				<view class="title"><b>*</b>璇佷欢鍙风爜</view>
-				<view class="content">
-					<input class="input" maxlength="18" @focus="showKeyboard = true" @blur="showKeyboard = false" placeholder-style="color: #999999;" v-model="visitorData.idcardNo" placeholder="璇疯緭鍏ユ偍鐨勮瘉浠跺彿鐮�" />
-				</view>
-			</view>
-			<view class="empty"></view>
-			<view class="cell">
-				<view class="title"><b>*</b>鍏徃鍚嶇О</view>
-				<view class="content">
-					<input class="input" maxlength="50" @focus="showKeyboard = true" @blur="showKeyboard = false" placeholder-style="color: #999999;" v-model="visitorData.companyName" placeholder="璇疯緭鍏ユ偍鐨勫叕鍙稿悕绉�" />
-				</view>
-			</view>
-			<view class="cell">
-				<view class="title1">
-					<text class="title1_a"><b>*</b>浜鸿劯鐓х墖</text>
-					<text class="title1_b">1銆佽鎻愪緵浜斿畼娓呮櫚锛屼汉鑴稿眳涓殑姝i潰浜鸿劯鍏嶅啝鐓х墖锛�</text>
-					<text class="title1_b">2銆佺収鐗囨棤閫嗗厜銆佹棤PS銆佹棤杩囧害缇庨澶勭悊</text>
-				</view>
-				<view class="content">
-					<view class="content_uplaod" @click="upload('faceImg')" v-if="!visitorData.faceImgUrl">
-						<u-icon name="plus" color="rgb(153, 153, 153)" size="20"></u-icon>
-					</view>
-					<view class="content_uplaod" @click="upload('faceImg')" v-else>
-						<image :src="visitorData.faceImgUrl" mode="widthFix"></image>
-					</view>
-				</view>
-			</view>
-			<view style="height: 20rpx; background-color: #F7F7F7;"></view>
-			<!-- <view class="cell">
-				<view class="title">鍋ュ悍璇�<b v-if="visit === '1'">*</b></view>
-				<view class="content">
-					<view class="content_uplaod" @click="upload('imgurl')" v-if="!visitorData.imgurlUrl">
-						<u-icon name="plus" color="rgb(153, 153, 153)" size="28"></u-icon>
-					</view>
-					<view class="content_uplaod" @click="upload('imgurl')" v-else>
-						<image :src="visitorData.imgurlUrl" mode="widthFix"></image>
-					</view>
-				</view>
-			</view> -->
-		</view>
-		<view v-if="!showKeyboard" class="footer-box">
-			<view class="submit-button" @click="submit">涓嬩竴姝�</view>
-		</view>
-		<!-- <tly-picture-cut ref="tlyPictureCut" :pictureSrc="photoSrc" @createImg="uploadImg"></tly-picture-cut> -->
-		<u-picker :show="show" :columns="columns" keyName="name" @cancel="show = false" @confirm="confirm"></u-picker>
-		<qf-image-cropper ref="cropper" :width="280" :height="280" :radius="0" fileType="jpg" @crop="uploadImg"></qf-image-cropper>
-	</view>
-</template>
-
-<script>
-	import tlyPictureCut from "@/components/tly-picture-cut/tlyPictureCut.vue";
-	import QfImageCropper from '@/uni_modules/qf-image-cropper/components/qf-image-cropper/qf-image-cropper.vue';
-	import { mapState } from 'vuex'
-	import { uploadAvatar } from "@/utils/config"
-	import { getSystemDictData, visitorSub } from '@/api'
-	export default {
-		data() {
-			return {
-				photoSrc: "",
-				show: false,
-				showKeyboard: false,
-				visit: '',
-				type: '',
-				columns: [[{name: '韬唤璇�', id: 0}, {name: '娓境璇佷欢', id: 1},{name: '鎶ょ収', id: 2}]],
-				fileList: [],
-				visitorData: {
-					userAnswerId: '',
-					name: '',
-					phone: '',
-					idcardType: 0,
-					idcardTypeName: '韬唤璇�',
-					idcardNo: '',
-					faceImg: '',
-					faceImgUrl: '',
-					imgurl: '',
-					imgurlUrl: '',
-					companyName: ''
-				}
+<template>
+	<view class="container">
+		<view class="visitor-form">
+			<view class="cell">
+				<view class="title"><b>*</b>濮撳悕</view>
+				<view class="content">
+					<input class="input" @focus="showKeyboard = true" @blur="showKeyboard = false"
+						placeholder-style="color: #999999;" maxlength="30" v-model="visitorData.name" placeholder="璇疯緭鍏ユ偍鐨勭湡瀹炲鍚�" />
+				</view>
+			</view>
+			<view class="cell">
+				<view class="title"><b>*</b>鎵嬫満鍙�</view>
+				<view class="content">
+					<input type="number" @focus="showKeyboard = true" @blur="showKeyboard = false" class="input" maxlength="11"
+						placeholder-style="color: #999999;" v-model="visitorData.phone" placeholder="璇疯緭鍏ユ偍鐨勬墜鏈哄彿" />
+				</view>
+			</view>
+			<view class="cell">
+				<view class="title"><b>*</b>璇佷欢绫诲瀷</view>
+				<view class="content" @click="show = true">
+					<text
+						:style="{color: visitorData.idcardTypeName ? '#000000' : ''}">{{visitorData.idcardTypeName ? visitorData.idcardTypeName : '璇烽�夋嫨'}}</text>
+					<u-icon name="arrow-right" color="#CCCCCC" size="16" class="ml6"></u-icon>
+				</view>
+			</view>
+			<view class="cell">
+				<view class="title"><b>*</b>璇佷欢鍙风爜</view>
+				<view class="content">
+					<input class="input" maxlength="18" @focus="showKeyboard = true" @blur="showKeyboard = false"
+						placeholder-style="color: #999999;" v-model="visitorData.idcardNo" placeholder="璇疯緭鍏ユ偍鐨勮瘉浠跺彿鐮�" />
+				</view>
+			</view>
+			<view class="empty"></view>
+			<view class="cell">
+				<view class="title"><b>*</b>鍏徃鍚嶇О</view>
+				<view class="content">
+					<input class="input" maxlength="50" @focus="showKeyboard = true" @blur="showKeyboard = false"
+						placeholder-style="color: #999999;" v-model="visitorData.companyName" placeholder="璇疯緭鍏ユ偍鐨勫叕鍙稿悕绉�" />
+				</view>
+			</view>
+			<view class="cell">
+				<view class="title1">
+					<text class="title1_a"><b>*</b>浜鸿劯鐓х墖</text>
+					<text class="title1_b">1銆佽鎻愪緵浜斿畼娓呮櫚锛屼汉鑴稿眳涓殑姝i潰浜鸿劯鍏嶅啝鐓х墖锛�</text>
+					<text class="title1_b">2銆佺収鐗囨棤閫嗗厜銆佹棤PS銆佹棤杩囧害缇庨澶勭悊</text>
+				</view>
+				<view class="content">
+					<view class="content_uplaod" @click="upload('faceImg')" v-if="!visitorData.faceImgUrl">
+						<u-icon name="plus" color="rgb(153, 153, 153)" size="20"></u-icon>
+					</view>
+					<view class="content_uplaod" @click="upload('faceImg')" v-else>
+						<image :src="visitorData.faceImgUrl" mode="widthFix"></image>
+					</view>
+				</view>
+			</view>
+			<view style="height: 20rpx; background-color: #F7F7F7;"></view>
+			<!-- <view class="cell">
+				<view class="title">鍋ュ悍璇�<b v-if="visit === '1'">*</b></view>
+				<view class="content">
+					<view class="content_uplaod" @click="upload('imgurl')" v-if="!visitorData.imgurlUrl">
+						<u-icon name="plus" color="rgb(153, 153, 153)" size="28"></u-icon>
+					</view>
+					<view class="content_uplaod" @click="upload('imgurl')" v-else>
+						<image :src="visitorData.imgurlUrl" mode="widthFix"></image>
+					</view>
+				</view>
+			</view> -->
+		</view>
+		<view v-if="!showKeyboard" class="footer-box">
+			<view class="submit-button" @click="submit">涓嬩竴姝�</view>
+		</view>
+		<!-- <tly-picture-cut ref="tlyPictureCut" :pictureSrc="photoSrc" @createImg="uploadImg"></tly-picture-cut> -->
+		<u-picker :show="show" :columns="columns" keyName="name" @cancel="show = false" @confirm="confirm"></u-picker>
+		<qf-image-cropper ref="cropper" :width="280" :height="280" :radius="0" fileType="jpg"
+			@crop="uploadImg"></qf-image-cropper>
+	</view>
+</template>
+
+<script>
+	import tlyPictureCut from "@/components/tly-picture-cut/tlyPictureCut.vue";
+	import QfImageCropper from '@/uni_modules/qf-image-cropper/components/qf-image-cropper/qf-image-cropper.vue';
+	import {
+		mapState
+	} from 'vuex'
+	import {
+		uploadAvatar
+	} from "@/utils/config"
+	import {
+		getSystemDictData,
+		visitorSub
+	} from '@/api'
+	export default {
+		data() {
+			return {
+				photoSrc: "",
+				show: false,
+				showKeyboard: false,
+				visit: '',
+				type: '',
+				columns: [
+					[{
+						name: '韬唤璇�',
+						id: 0
+					}, {
+						name: '娓境璇佷欢',
+						id: 1
+					}, {
+						name: '鎶ょ収',
+						id: 2
+					}]
+				],
+				fileList: [],
+				visitorData: {
+					userAnswerId: '',
+					name: '',
+					phone: '',
+					idcardType: 0,
+					idcardTypeName: '韬唤璇�',
+					idcardNo: '',
+					faceImg: '',
+					faceImgUrl: '',
+					imgurl: '',
+					imgurlUrl: '',
+					companyName: ''
+				}
+			}
+		},
+		components: {
+			tlyPictureCut,
+			QfImageCropper
+		},
+
+		onLoad(option) {
+			const visitorData = uni.getStorageSync('member')
+			if (visitorData.faceImg) {
+				visitorData.faceImgUrl = visitorData.prefixUrl + visitorData.faceImg
+			}
+			if (visitorData && visitorData.name) {
+				this.visitorData = visitorData
+			}
+			this.visitorData.companyName = visitorData.visitCompanyName
+			this.visitorData.idcardNo = visitorData.idcardDecode
+			if (this.visitorData.idcardType === 0) {
+				this.visitorData.idcardTypeName = '韬唤璇�'
+			} else if (this.visitorData.idcardType === 1) {
+				this.visitorData.idcardTypeName = '娓境璇佷欢'
+			} else if (this.visitorData.idcardType === 2) {
+				this.visitorData.idcardTypeName = '鎶ょ収'
 			}
-		},
-		components: { tlyPictureCut, QfImageCropper },
-		
-		onLoad(option) {
-			const visitorData = uni.getStorageSync('visitorData')
-			if(visitorData && visitorData.name){
-				this.visitorData = visitorData
-			}
-			// if (this.member ) {
-			// 	this.visitorData.name = this.member.name
-			// 	this.visitorData.phone = this.member.phone
-			// 	this.visitorData.idcardNo = this.member.idcardDecode
-			// 	this.visitorData.companyName = this.member.visitCompanyName
-			// 	this.visitorData.faceImg = this.member.faceImg
-			// 	if (this.member.faceImg) {
-			// 		this.visitorData.faceImgUrl = this.member.prefixUrl + this.member.faceImg
-			// 	}
-			// 	this.visitorData.imgurl = this.member.imgurl
-			// 	if (this.member.imgurl) {
-			// 		this.visitorData.imgurlUrl = this.member.prefixUrl + this.member.imgurl
-			// 	}
-			// 	this.visitorData.idcardType = this.member.idcardType
-			// 	if (this.member.idcardType === 0) {
-			// 		this.visitorData.idcardTypeName = '韬唤璇�'
-			// 	} else if (this.member.idcardType === 1) {
-			// 		this.visitorData.idcardTypeName = '娓境璇佷欢'
-			// 	} else if (this.member.idcardType === 2) {
-			// 		this.visitorData.idcardTypeName = '鎶ょ収'
-			// 	}
-			// }
-			this.visitorData.userAnswerId = option.answerId || ''
-			// this.getVisit()
-			// uni.$on('update', (data) => {
-			// 	this.uploadImg(data.tempFilePath)
-			// })
-		},
-
-		methods: {
-			submit() {
-				const { visitorData } = this
-				if (!this.visitorData.name) return uni.showToast({
-					title: '濮撳悕涓嶈兘涓虹┖',
-					icon: 'none'
-				})
-				if (!this.visitorData.phone) return uni.showToast({
-					title: '鎵嬫満鍙蜂笉鑳戒负绌�',
-					icon: 'none'
-				})
-				const regExp = /^1[3456789]\d{9}$/;
-				if (!regExp.test(this.visitorData.phone)) return uni.showToast({
-					title: '鎵嬫満鍙锋牸寮忛敊璇�',
-					icon: 'none'
-				})
-				if (!String(this.visitorData.idcardType)) return uni.showToast({
-					title: '璇佷欢绫诲瀷涓嶈兘涓虹┖',
-					icon: 'none'
-				})
-				if (!this.visitorData.idcardNo) return uni.showToast({
-					title: '璇佷欢鍙风爜涓嶈兘涓虹┖',
-					icon: 'none'
-				})
-				if (this.visitorData.idcardType === 0) {
-					const regex = /^[1-9]\d{5}(19|20)\d{2}(0[1-9]|1[0-2])(0[1-9]|[1-2]\d|3[0-1])\d{3}[\dxX]$/;
-					if (!regex.test(this.visitorData.idcardNo)) return uni.showToast({
-						title: '璇佷欢鍙风爜鏍煎紡閿欒',
-						icon: 'none'
-					})
-				}
-				if (!this.visitorData.companyName) return uni.showToast({
-					title: '鍏徃涓嶈兘涓虹┖',
-					icon: 'none'
-				})
-				if (!this.visitorData.faceImg) return uni.showToast({
-					title: '浜鸿劯鐓х墖涓嶈兘涓虹┖',
-					icon: 'none'
-				})
-				// if (this.visit === '1') {
-				// 	if (!this.visitorData.imgurl) return uni.showToast({
-				// 		title: '鍋ュ悍璇佷笉鑳戒负绌�',
-				// 		icon: 'none'
-				// 	})
-				// }
-				uni.setStorageSync('visitorData', this.visitorData)
-				uni.navigateTo({
-					url: `/pages/visitorApplication/visitorApplication?data=${JSON.stringify(this.visitorData)}`
-				});
-			},
-			getVisit() {
-				// 鏄惁闇�瑕� 鍋ュ悍璇�
-				getSystemDictData({
-					dictCode: 'SYSTEM',
-					label: 'HEALTH_CARD'
-				}).then(res => {
-					if (res.code === 200) {
-						this.visit = res.data.code
-					}
-				})
-			},
-			uploadImg(file) {
-				var that = this
-				that.$refs.cropper.close()
-				uni.showLoading({ title: '涓婁紶涓�', mask: true });
-				uni.uploadFile({
-					url: uploadAvatar,
-					filePath: file.tempFilePath,
-					name: 'file',
-					formData: {
-						folderCode: 'MEMBER_IMG',
-						isFace: 0
-					},
-					success: (uploadFileRes) => {
-						let res = JSON.parse(uploadFileRes.data)
-						this.visitorData.faceImg = res.data.halfPath
-						this.visitorData.faceImgUrl = res.data.prefixPath + res.data.folder + res.data.halfPath
-					},
-					fail(err) {
-						alert('澶辫触')
-					},
-					complete() {
-						uni.hideLoading();
-					}
-				});
-			},
-			upload(type) {
-				var that = this
-				that.type = type
-				if (type === 'faceImg') {
-					that.$refs.cropper.chooseImage()
-					return
-				}
-				uni.chooseImage({
-					count: 1,
-					success: (chooseImageRes) => {
-						// if (type === 'faceImg') {
-						// 	that.photoSrc = chooseImageRes.tempFilePaths[0];
-						// 	that.$refs.tlyPictureCut.showPop();
-						// }
-						if (type === 'imgurl') {
-							uni.showLoading({ title: '涓婁紶涓�', mask: true });
-							uni.uploadFile({
-								url: uploadAvatar,
-								filePath: chooseImageRes.tempFilePaths[0],
-								name: 'file',
-								formData: {
-									folderCode: 'MEMBER_IMG'
-								},
-								timeout: 60000,
-								success: (uploadFileRes) => {
-									let res = JSON.parse(uploadFileRes.data)
-									that.visitorData.imgurl = res.data.halfPath
-									that.visitorData.imgurlUrl = res.data.prefixPath + res.data.folder + res.data.halfPath
-								},
-								complete() {
-									uni.hideLoading();
-								}
-							});
-						}
-					},
-					fail(err) {
-						alert('api鎶ラ敊')
-					}
-				});
-			},
-			confirm(e) {
-				this.visitorData.idcardType = e.value[0].id
-				this.visitorData.idcardTypeName = e.value[0].name
-				this.show = false
-			}
-		}
-	}
-</script>
-
-<style lang="scss">
-	page {
-		background-color: #F7F7F7 !important;
-	}
-	.u-upload__button {
-		margin: 0 !important;
-	}
-	.content_uplaod {
-		width: 120rpx;
-		height: 120rpx;
-		background: #F7F7F7;
-		border-radius: 8rpx;
-		border: 2rpx solid #E5E5E5;
-		display: flex;
-		align-items: center;
-		justify-content: center;
-		overflow: hidden;
-	}
-	.content_uplaod image {
-		width: 100%;
-		height: 100%;
-	}
-	.empty{
-		width: 750rpx;
-		height: 20rpx;
-		margin: 0 -30rpx;
-		background-color: #f7f7f7;;
-	}
-	.title {
-		font-size: 30rpx;
-		font-weight: 400;
-		color: #222222;
-		display: flex;
-		align-items: center;
-	}
-
-	.title b {
-		color: #E42D2D;
-		margin-right: 4rpx;
-	}
-	
-	.title1 {
-		display: flex;
-		flex-direction: column;
-		.title1_a {
-			font-size: 30rpx !important;
-			font-weight: 400;
-			color: #222222;
-			display: flex;
-			align-items: center;
-			margin-bottom: 20rpx;
-			b {
-				color: #E42D2D;
-				margin-right: 4rpx;
-
-			}
-		}
-		.title1_b {
-			font-size: 24rpx !important;
-			font-weight: 400;
-			color: #999999;
-		}
-	}
-
-	.add-other {
-		border: 1rpx solid #4d99a8;
-		color: #4d99a8;
-		font-size: 11rpx;
-		padding: 0 12rpx;
-		height: 32rpx;
-		line-height: 32rpx;
-		width: 120rpx;
-		text-align: center;
-		border-radius: 24rpx;
-		margin: 20rpx auto;
-	}
-
-	.footer-box {
-		width: 100%;
-		position: fixed;
-		bottom: 30rpx;
-		height: 80rpx;
-		display: flex;
-		justify-content: center;
-		align-items: center;
-	}
-
-	.submit-button {
-		width: calc(100% - 60rpx);
-		height: 88rpx;
-		line-height: 88rpx;
-		background: #4d99a8;
-		border-radius: 4rpx;
-		color: #fff;
-		border-radius: 44rpx;
-		font-size: 32rpx;
-		display: flex;
-		align-items: center;
-		justify-content: center;
-	}
-</style>
-
-<style lang="scss" scoped>
-	.popup-content {
-		padding: 20rpx;
-		height: 100%;
-		overflow: hidden;
-		display: flex;
-		flex-flow: column;
-
-		.input {
-			border: 1rpx solid #ccc;
-			border-radius: 4rpx;
-			padding: 4rpx 12rpx;
-			font-size: 28rpx;
-			font-weight: 400;
-			color: #333333;
-		}
-
-		.respondent-item {
-			padding: 10rpx;
-			border-bottom: 1rpx solid #eee;
-			cursor: pointer;
-
-			&:hover {
-				background-color: #eee;
-			}
-		}
-
-		.van-list {
-			flex: 1;
-			overflow: auto;
-		}
-	}
+			if (this.visitorData.imgurl) {
+					this.visitorData.imgurlUrl = this.visitorData.prefixUrl + this.visitorData.imgurl
+				}
+			// if (this.member ) {
+			// 	this.visitorData.name = this.member.name
+			// 	this.visitorData.phone = this.member.phone
+			// 	this.visitorData.idcardNo = this.member.idcardDecode
+			// 	this.visitorData.companyName = this.member.visitCompanyName
+			// 	this.visitorData.faceImg = this.member.faceImg
+			// 	if (this.member.faceImg) {
+			// 		this.visitorData.faceImgUrl = this.member.prefixUrl + this.member.faceImg
+			// 	}
+			// 	this.visitorData.imgurl = this.member.imgurl
+			// 	if (this.member.imgurl) {
+			// 		this.visitorData.imgurlUrl = this.member.prefixUrl + this.member.imgurl
+			// 	}
+			// 	this.visitorData.idcardType = this.member.idcardType
+			// 	if (this.member.idcardType === 0) {
+			// 		this.visitorData.idcardTypeName = '韬唤璇�'
+			// 	} else if (this.member.idcardType === 1) {
+			// 		this.visitorData.idcardTypeName = '娓境璇佷欢'
+			// 	} else if (this.member.idcardType === 2) {
+			// 		this.visitorData.idcardTypeName = '鎶ょ収'
+			// 	}
+			// }
+			this.visitorData.userAnswerId = option.answerId || ''
+			// this.getVisit()
+			// uni.$on('update', (data) => {
+			// 	this.uploadImg(data.tempFilePath)
+			// })
+		},
+
+		methods: {
+			submit() {
+				const {
+					visitorData
+				} = this
+				if (!this.visitorData.name) return uni.showToast({
+					title: '濮撳悕涓嶈兘涓虹┖',
+					icon: 'none'
+				})
+				if (!this.visitorData.phone) return uni.showToast({
+					title: '鎵嬫満鍙蜂笉鑳戒负绌�',
+					icon: 'none'
+				})
+				const regExp = /^1[3456789]\d{9}$/;
+				if (!regExp.test(this.visitorData.phone)) return uni.showToast({
+					title: '鎵嬫満鍙锋牸寮忛敊璇�',
+					icon: 'none'
+				})
+				if (!String(this.visitorData.idcardType)) return uni.showToast({
+					title: '璇佷欢绫诲瀷涓嶈兘涓虹┖',
+					icon: 'none'
+				})
+				if (!this.visitorData.idcardNo) return uni.showToast({
+					title: '璇佷欢鍙风爜涓嶈兘涓虹┖',
+					icon: 'none'
+				})
+				if (this.visitorData.idcardType === 0) {
+					const regex = /^[1-9]\d{5}(19|20)\d{2}(0[1-9]|1[0-2])(0[1-9]|[1-2]\d|3[0-1])\d{3}[\dxX]$/;
+					if (!regex.test(this.visitorData.idcardNo)) return uni.showToast({
+						title: '璇佷欢鍙风爜鏍煎紡閿欒',
+						icon: 'none'
+					})
+				}
+				if (!this.visitorData.companyName) return uni.showToast({
+					title: '鍏徃涓嶈兘涓虹┖',
+					icon: 'none'
+				})
+				if (!this.visitorData.faceImg) return uni.showToast({
+					title: '浜鸿劯鐓х墖涓嶈兘涓虹┖',
+					icon: 'none'
+				})
+				// if (this.visit === '1') {
+				// 	if (!this.visitorData.imgurl) return uni.showToast({
+				// 		title: '鍋ュ悍璇佷笉鑳戒负绌�',
+				// 		icon: 'none'
+				// 	})
+				// }
+				uni.setStorageSync('visitorData', this.visitorData)
+				uni.navigateTo({
+					url: `/pages/visitorApplication/visitorApplication?data=${JSON.stringify(this.visitorData)}`
+				});
+			},
+			getVisit() {
+				// 鏄惁闇�瑕� 鍋ュ悍璇�
+				getSystemDictData({
+					dictCode: 'SYSTEM',
+					label: 'HEALTH_CARD'
+				}).then(res => {
+					if (res.code === 200) {
+						this.visit = res.data.code
+					}
+				})
+			},
+			uploadImg(file) {
+				var that = this
+				that.$refs.cropper.close()
+				uni.showLoading({
+					title: '涓婁紶涓�',
+					mask: true
+				});
+				uni.uploadFile({
+					url: uploadAvatar,
+					filePath: file.tempFilePath,
+					name: 'file',
+					formData: {
+						folderCode: 'MEMBER_IMG',
+						isFace: 0
+					},
+					success: (uploadFileRes) => {
+						let res = JSON.parse(uploadFileRes.data)
+						this.visitorData.faceImg = res.data.halfPath
+						this.visitorData.faceImgUrl = res.data.prefixPath + res.data.folder + res.data.halfPath
+					},
+					fail(err) {
+						alert('澶辫触')
+					},
+					complete() {
+						uni.hideLoading();
+					}
+				});
+			},
+			upload(type) {
+				var that = this
+				that.type = type
+				if (type === 'faceImg') {
+					that.$refs.cropper.chooseImage()
+					return
+				}
+				uni.chooseImage({
+					count: 1,
+					success: (chooseImageRes) => {
+						// if (type === 'faceImg') {
+						// 	that.photoSrc = chooseImageRes.tempFilePaths[0];
+						// 	that.$refs.tlyPictureCut.showPop();
+						// }
+						if (type === 'imgurl') {
+							uni.showLoading({
+								title: '涓婁紶涓�',
+								mask: true
+							});
+							uni.uploadFile({
+								url: uploadAvatar,
+								filePath: chooseImageRes.tempFilePaths[0],
+								name: 'file',
+								formData: {
+									folderCode: 'MEMBER_IMG'
+								},
+								timeout: 60000,
+								success: (uploadFileRes) => {
+									let res = JSON.parse(uploadFileRes.data)
+									that.visitorData.imgurl = res.data.halfPath
+									that.visitorData.imgurlUrl = res.data.prefixPath + res.data.folder + res.data.halfPath
+								},
+								complete() {
+									uni.hideLoading();
+								}
+							});
+						}
+					},
+					fail(err) {
+						alert('api鎶ラ敊')
+					}
+				});
+			},
+			confirm(e) {
+				this.visitorData.idcardType = e.value[0].id
+				this.visitorData.idcardTypeName = e.value[0].name
+				this.show = false
+			}
+		}
+	}
+</script>
+
+<style lang="scss">
+	page {
+		background-color: #F7F7F7 !important;
+	}
+
+	.u-upload__button {
+		margin: 0 !important;
+	}
+
+	.content_uplaod {
+		width: 120rpx;
+		height: 120rpx;
+		background: #F7F7F7;
+		border-radius: 8rpx;
+		border: 2rpx solid #E5E5E5;
+		display: flex;
+		align-items: center;
+		justify-content: center;
+		overflow: hidden;
+	}
+
+	.content_uplaod image {
+		width: 100%;
+		height: 100%;
+	}
+
+	.empty {
+		width: 750rpx;
+		height: 20rpx;
+		margin: 0 -30rpx;
+		background-color: #f7f7f7;
+		;
+	}
+
+	.title {
+		font-size: 30rpx;
+		font-weight: 400;
+		color: #222222;
+		display: flex;
+		align-items: center;
+	}
+
+	.title b {
+		color: #E42D2D;
+		margin-right: 4rpx;
+	}
+
+	.title1 {
+		display: flex;
+		flex-direction: column;
+
+		.title1_a {
+			font-size: 30rpx !important;
+			font-weight: 400;
+			color: #222222;
+			display: flex;
+			align-items: center;
+			margin-bottom: 20rpx;
+
+			b {
+				color: #E42D2D;
+				margin-right: 4rpx;
+
+			}
+		}
+
+		.title1_b {
+			font-size: 24rpx !important;
+			font-weight: 400;
+			color: #999999;
+		}
+	}
+
+	.add-other {
+		border: 1rpx solid #4d99a8;
+		color: #4d99a8;
+		font-size: 11rpx;
+		padding: 0 12rpx;
+		height: 32rpx;
+		line-height: 32rpx;
+		width: 120rpx;
+		text-align: center;
+		border-radius: 24rpx;
+		margin: 20rpx auto;
+	}
+
+	.footer-box {
+		width: 100%;
+		position: fixed;
+		bottom: 30rpx;
+		height: 80rpx;
+		display: flex;
+		justify-content: center;
+		align-items: center;
+	}
+
+	.submit-button {
+		width: calc(100% - 60rpx);
+		height: 88rpx;
+		line-height: 88rpx;
+		background: #4d99a8;
+		border-radius: 4rpx;
+		color: #fff;
+		border-radius: 44rpx;
+		font-size: 32rpx;
+		display: flex;
+		align-items: center;
+		justify-content: center;
+	}
+</style>
+
+<style lang="scss" scoped>
+	.popup-content {
+		padding: 20rpx;
+		height: 100%;
+		overflow: hidden;
+		display: flex;
+		flex-flow: column;
+
+		.input {
+			border: 1rpx solid #ccc;
+			border-radius: 4rpx;
+			padding: 4rpx 12rpx;
+			font-size: 28rpx;
+			font-weight: 400;
+			color: #333333;
+		}
+
+		.respondent-item {
+			padding: 10rpx;
+			border-bottom: 1rpx solid #eee;
+			cursor: pointer;
+
+			&:hover {
+				background-color: #eee;
+			}
+		}
+
+		.van-list {
+			flex: 1;
+			overflow: auto;
+		}
+	}
 </style>
\ No newline at end of file
diff --git a/screen/src/api/index.js b/screen/src/api/index.js
index ab60818..a20cb1c 100644
--- a/screen/src/api/index.js
+++ b/screen/src/api/index.js
@@ -49,6 +49,10 @@
 export const getFighalarmDataList = (data) => {
   return request('visitsAdmin/cloudService/board/api/fightingAdmin/alarmDataList', data)
 }
+// 娓╂箍搴︽暟鎹�
+export const getTemperatureHumidityData = (data) => {
+  return request('visitsAdmin/cloudService/board/api/fightingAdmin/getTemperatureHumidityData', data)
+}
 
 
 // 鍦哄唴璋冨害鐪嬫澘 浠婃棩鏈堝彴瀹屾垚璁㈠崟缁熻
@@ -68,7 +72,7 @@
   return request('visitsAdmin/cloudService/board/api/onSitDispatch/centerData', data)
 }
 // 鍦哄唴璋冨害鐪嬫澘 浠婃棩杞﹁締浣滀笟鎯呭喌
-export const cncarWorkSituation  = (data) => {
+export const cncarWorkSituation = (data) => {
   return request('visitsAdmin/cloudService/board/api/onSitDispatch/carWorkSituation', data)
 }
 // 鍦哄唴璋冨害鐪嬫澘 瀹炴椂浣滀笟鏁堢巼
@@ -104,6 +108,14 @@
 export const wltransportMeasure = (data) => {
   return request('visitsAdmin/cloudService/board/api/platformJobRun/transportMeasure', data)
 }
+// 鐗╂祦杩愯璋冨害鐪嬫澘 杞﹁締
+export const carsListPost = (data) => {
+  return request('/visitsAdmin/cloudService/board/api/platformJobRun/carsList', data)
+}
+// 鐗╂祦杩愯璋冨害鐪嬫澘 鏍规嵁杞﹁締鏌ヤ俊鎭�
+export const getCarsJobDetails = (data) => {
+  return request('/visitsAdmin/cloudService/board/api/platformJobRun/getCarsJobDetails', data, 'POST')
+}
 
 
 // 瀹夐槻绠℃帶澶у睆 涓績鏁版嵁
diff --git a/screen/src/assets/images/FireFighting/fire_right.png b/screen/src/assets/images/FireFighting/fire_right.png
new file mode 100644
index 0000000..4302af9
--- /dev/null
+++ b/screen/src/assets/images/FireFighting/fire_right.png
Binary files differ
diff --git a/screen/src/utils/request.js b/screen/src/utils/request.js
index a20accf..0beb37a 100644
--- a/screen/src/utils/request.js
+++ b/screen/src/utils/request.js
@@ -2,7 +2,7 @@
 
 const instance = axios.create({
   baseURL: '/gateway_interface',
-  timeout: 10000,
+  timeout: 30000,
   withCredentials: true,
   headers: {
     shopId: 1
diff --git a/screen/src/views/EnergyConsum.vue b/screen/src/views/EnergyConsum.vue
index 8e383e4..8035926 100644
--- a/screen/src/views/EnergyConsum.vue
+++ b/screen/src/views/EnergyConsum.vue
@@ -25,7 +25,7 @@
               <img src="@/assets/images/nenghao_ic1.png" class="co2" alt="">
               <div>
                 <div class="name">鏈勾绱寰幆鐑熺</div>
-                <div><span class="num" v-if="data1.smokeBoxTotal || data1.smokeBoxTotal == 0">{{
+                <div><span class="num" style="color: #68cfb2;" v-if="data1.smokeBoxTotal || data1.smokeBoxTotal == 0">{{
                   data1.smokeBoxTotal.toLocaleString()
                     }}</span><span>鍙�</span></div>
               </div>
@@ -81,25 +81,30 @@
                 </div>
                 <div class="static" v-if="data1.electricityQuantity">
                   <span class="lab">鍚屾瘮</span>
-                  <img v-if="data1.electricityQuantity.totalNum > data1.electricityQuantity.sameNum" class="icon"
-                    src="@/assets/images/ic_up.webp" alt="" />
-                  <img v-else class="icon" src="@/assets/images/ic_down.webp" alt="" />
+                  <template v-if="data1.electricityQuantity.sameNum">
+                    <img v-if="data1.electricityQuantity.totalNum > data1.electricityQuantity.sameNum" class="icon"
+                      src="@/assets/images/ic_up.webp" alt="" />
+                    <img v-else class="icon" src="@/assets/images/ic_down.webp" alt="" />
+                  </template>
                   <span class="val"
                     v-if="data1.electricityQuantity.totalNum && data1.electricityQuantity.totalNum != 0">{{
                       Math.abs(((data1.electricityQuantity.totalNum -
                         data1.electricityQuantity.sameNum) / data1.electricityQuantity.totalNum * 100).toFixed(1))
                     }}%</span>
-                  <span class="val" v-else>-</span>
+                  <span class="val" v-else style="margin-left: 4px;"> -</span>
                   <span class="lab">鐜瘮</span>
-                  <img v-if="data1.electricityQuantity.totalNum > data1.electricityQuantity.ringNum" class="icon"
-                    src="@/assets/images/ic_up.webp" alt="" />
-                  <img v-else class="icon" src="@/assets/images/ic_down.webp" alt="" />
+                  <template v-if="data1.electricityQuantity.ringNum">
+                    <img v-if="data1.electricityQuantity.totalNum > data1.electricityQuantity.ringNum" class="icon"
+                      src="@/assets/images/ic_up.webp" alt="" />
+                    <img v-else class="icon" src="@/assets/images/ic_down.webp" alt="" />
+                  </template>
+
                   <span class="val"
                     v-if="data1.electricityQuantity.totalNum && data1.electricityQuantity.totalNum != 0">{{
                       Math.abs(((data1.electricityQuantity.totalNum -
                         data1.electricityQuantity.ringNum) / data1.electricityQuantity.totalNum * 100).toFixed(1))
                     }}%</span>
-                  <span class="val" v-else>-</span>
+                  <span class="val" v-else style="margin-left: 4px;"> -</span>
                 </div>
               </div>
               <div class="item">
@@ -112,21 +117,25 @@
                 </div>
                 <div class="static" v-if="data1.waterQuantity">
                   <span class="lab">鍚屾瘮</span>
-                  <img v-if="data1.waterQuantity.totalNum > data1.waterQuantity.sameNum" class="icon"
-                    src="@/assets/images/ic_up.webp" alt="" />
-                  <img v-else class="icon" src="@/assets/images/ic_down.webp" alt="" />
-                  <span class="val" v-if="data1.waterQuantity.totalNum && data1.waterQuantity.totalNum != 0">{{
+                  <template v-if="data1.waterQuantity.sameNum">
+                    <img v-if="data1.waterQuantity.totalNum > data1.waterQuantity.sameNum" class="icon"
+                      src="@/assets/images/ic_up.webp" alt="" />
+                    <img v-else class="icon" src="@/assets/images/ic_down.webp" alt="" />
+                  </template>
+                  <span class="val" v-if="data1.waterQuantity.sameNum && data1.waterQuantity.sameNum != 0">{{
                     Math.abs(((data1.waterQuantity.totalNum -
-                      data1.waterQuantity.sameNum) / data1.waterQuantity.totalNum * 100).toFixed(1)) }}%</span>
-                  <span class="val" v-else>-</span>
+                      data1.waterQuantity.sameNum) / data1.waterQuantity.sameNum * 100).toFixed(1)) }}%</span>
+                  <span class="val" v-else style="margin-left: 4px;">-</span>
                   <span class="lab">鐜瘮</span>
-                  <img v-if="data1.waterQuantity.totalNum > data1.waterQuantity.ringNum" class="icon"
-                    src="@/assets/images/ic_up.webp" alt="" />
-                  <img v-else class="icon" src="@/assets/images/ic_down.webp" alt="" />
-                  <span class="val" v-if="data1.waterQuantity.totalNum && data1.waterQuantity.totalNum != 0">{{
+                  <template v-if="data1.waterQuantity.ringNum">
+                    <img v-if="data1.waterQuantity.totalNum > data1.waterQuantity.ringNum" class="icon"
+                      src="@/assets/images/ic_up.webp" alt="" />
+                    <img v-else class="icon" src="@/assets/images/ic_down.webp" alt="" />
+                  </template>
+                  <span class="val" v-if="data1.waterQuantity.ringNum && data1.waterQuantity.ringNum != 0">{{
                     Math.abs(((data1.waterQuantity.totalNum -
-                      data1.waterQuantity.ringNum) / data1.waterQuantity.totalNum * 100).toFixed(1)) }}%</span>
-                  <span class="val" v-else>-</span>
+                      data1.waterQuantity.ringNum) / data1.waterQuantity.ringNum * 100).toFixed(1)) }}%</span>
+                  <span class="val" v-else style="margin-left: 4px;">-</span>
                 </div>
               </div>
               <div class="item">
@@ -139,23 +148,27 @@
                 </div>
                 <div class="static" v-if="data1.gasQuantity">
                   <span class="lab">鍚屾瘮</span>
-                  <img v-if="data1.gasQuantity.totalNum > data1.gasQuantity.sameNum" class="icon"
-                    src="@/assets/images/ic_up.webp" alt="" />
-                  <img v-else class="icon" src="@/assets/images/ic_down.webp" alt="" />
+                  <template v-if="data1.gasQuantity.sameNum">
+                    <img v-if="data1.gasQuantity.totalNum > data1.gasQuantity.sameNum" class="icon"
+                      src="@/assets/images/ic_up.webp" alt="" />
+                    <img v-else class="icon" src="@/assets/images/ic_down.webp" alt="" />
+                  </template>
                   <span class="val" v-if="data1.gasQuantity.totalNum && data1.gasQuantity.totalNum != 0">{{
                     Math.abs(((data1.gasQuantity.totalNum - data1.gasQuantity.sameNum) / data1.gasQuantity.totalNum
                       * 100).toFixed(1))
                   }}%</span>
-                  <span class="val" v-else>-</span>
+                  <span class="val" v-else style="margin-left: 4px;">-</span>
                   <span class="lab">鐜瘮</span>
-                  <img v-if="data1.gasQuantity.totalNum > data1.gasQuantity.ringNum" class="icon"
-                    src="@/assets/images/ic_up.webp" alt="" />
-                  <img v-else class="icon" src="@/assets/images/ic_down.webp" alt="" />
+                  <template v-if="data1.gasQuantity.sameNum">
+                    <img v-if="data1.gasQuantity.totalNum > data1.gasQuantity.ringNum" class="icon"
+                      src="@/assets/images/ic_up.webp" alt="" />
+                    <img v-else class="icon" src="@/assets/images/ic_down.webp" alt="" />
+                  </template>
                   <span class="val" v-if="data1.gasQuantity.totalNum && data1.gasQuantity.totalNum != 0">{{
                     Math.abs(((data1.gasQuantity.totalNum - data1.gasQuantity.ringNum) / data1.gasQuantity.totalNum
                       * 100).toFixed(1))
                   }}%</span>
-                  <span class="val" v-else>-</span>
+                  <span class="val" v-else style="margin-left: 4px;">-</span>
                 </div>
               </div>
             </div>
diff --git a/screen/src/views/FireFighting.vue b/screen/src/views/FireFighting.vue
index 8e63144..3049f9f 100644
--- a/screen/src/views/FireFighting.vue
+++ b/screen/src/views/FireFighting.vue
@@ -37,7 +37,7 @@
                       <div class="line">
                         <span class="item name">{{ item.typeName }}</span>
                         <span class="item">{{ item.totalDeviceNum || 0 }}</span>
-                        <span class="item">{{ item.alarmDeviceNum || 0 }}</span>
+                        <span class="item" style="color: #FEAF01;">{{ item.alarmDeviceNum || 0 }}</span>
                         <span class="item">{{ item.shieldDeviceNum || 0 }}</span>
                         <span class="item">{{ item.errDeviceNum || 0 }}</span>
                         <span class="item">{{ item.offlineDeviceNum || 0 }}</span>
@@ -130,9 +130,9 @@
                   <span>娓╁害/婀垮害浼犳劅鍣�</span>
                 </div>
                 <div class="right">
-                  <img class="icon" src="@/assets/images/FireFighting/xiaofang_ar_left@2x.png" alt="">
-                  <div class="num">1/5</div>
-                  <img class="icon" src="@/assets/images/FireFighting/xiaofang_ar_right@2x.png" alt="">
+                  <img @click="changeData8(-1)" class="icon" src="@/assets/images/FireFighting/xiaofang_ar_left@2x.png" alt="">
+                  <div class="num">{{dataIndex8 + 1}}/{{ dataList8.length }}</div>
+                  <img @click="changeData8(1)" class="icon" src="@/assets/images/FireFighting/xiaofang_ar_right@2x.png" alt="">
                 </div>
               </div>
               <div class="list_wrap">
@@ -140,19 +140,19 @@
                   <img class="icon" src="@/assets/images/FireFighting/ic_location@2x.png" alt="">
                   <span>鍗歌揣鍖�1</span>
                 </div>
-                <div class="list">
+                <div class="list" v-if="dataList8 && dataList8.length > 0">
                   <div class="item">
                     <img class="icon" src="@/assets/images/FireFighting/ic_wendu@2x.png" alt="">
                     <div class="content">
-                      <div class="num">23<span>掳C</span></div>
-                      <div class="la">闃堝�� 0锝�100掳C</div>
+                      <div class="num">{{ dataList8[dataIndex8].temperatureData?.latestValue }}<span>掳C</span></div>
+                      <div class="la">闃堝�� {{ dataList8[dataIndex8].temperatureData?.alarmLow }}锝瀧{ dataList8[dataIndex8].temperatureData?.alarmHigh }}掳C</div>
                     </div>
                   </div>
                   <div class="item">
                     <img class="icon" src="@/assets/images/FireFighting/ic_shidu@2x.png" alt="">
                     <div class="content">
-                      <div class="num">23<span>%</span></div>
-                      <div class="la">闃堝�� 0锝�100%</div>
+                      <div class="num">{{ dataList8[dataIndex8].humidityData?.latestValue }}<span>%</span></div>
+                      <div class="la">闃堝�� {{ dataList8[dataIndex8].humidityData?.alarmLow }}锝瀧{ dataList8[dataIndex8].humidityData?.alarmHigh }}</div>
                     </div>
                   </div>
                 </div>
@@ -191,9 +191,9 @@
                     <div class="liquidlevel_wrap">
                       <div class="liquidlevel" id="liquidlevel"></div>
                       <div class="unit">3.45 <span>M</span></div>
-                      <div class="place">闃堝�� 0锝�4.50M</div>
+                      <div class="placeT">闃堝��</div>
                     </div>
-
+                    <div class="place">闃堝�� 0锝�4.50M</div>
                   </div>
                 </div>
               </div>
@@ -218,12 +218,12 @@
                 <div class="separate"></div>
                 <div class="item">
                   <div>璁″垝缁翠繚</div>
-                  <div class="num active">{{ dataList5.planProtectTotal }}</div>
+                  <div class="num acc">{{ dataList5.planProtectTotal }}</div>
                 </div>
                 <div class="separate"></div>
                 <div class="item">
                   <div>缁翠繚鐜�</div>
-                  <div v-if="dataList5.protectNum && dataList5.planProtectTotal" class="num active">{{
+                  <div v-if="dataList5.protectNum && dataList5.planProtectTotal" class="acc num">{{
                     ((dataList5.protectNum / dataList5.planProtectTotal) * 100).toFixed(0) }}%</div>
                 </div>
               </div>
@@ -326,7 +326,8 @@
   getFightingcenterData,
   getFightingDeAlarm,
   getFightingDeviceY,
-  getFighalarmDataList
+  getFighalarmDataList,
+  getTemperatureHumidityData
 } from '@/api'
 
 const colors = ['#FEAF01', '#01ABFE', '#51F9E4']
@@ -746,8 +747,9 @@
   const data4 = dataList3.value.map(i => i.errNum)
   const months = dataList3.value.map(i => {
     return i.startDate.substring(5, 7) + '鏈�'
-  }
-  )
+  })
+
+
   const option = {
     legend: {
       x: "center",
@@ -919,6 +921,23 @@
   })
 }
 
+const dataList8 = ref([])
+const dataIndex8 = ref(0)
+const getData8 = () => {
+  getTemperatureHumidityData().then(res => {
+    dataList8.value = res.data || []
+  })
+}
+const changeData8 = (num) => {
+  if(dataIndex8.value == dataList8.value.length - 1  && num > 0){
+    dataIndex8.value = 0
+  }else if (dataIndex8.value == 0 && num < 0){
+    dataIndex8.value = dataList8.value.length - 1
+  }else{
+    dataIndex8.value =  dataIndex8.value + num
+  }
+}
+
 const autoplayFlag = (list = [], leng = 4, time = 2000) => {
   if (list.length > leng) {
     return { delay: time, disableOnInteraction: false }
@@ -953,6 +972,7 @@
   getData5()
   // getData6()
   getData7()
+  getData8()
   setInterval(() => {
     getData2()
     getData3()
@@ -963,6 +983,7 @@
   setInterval(() => {
 
     getData5()
+    getData8()
 
   }, 60 * 60 * 1000)
 
@@ -973,7 +994,7 @@
     loopFn1()
     loopFn2()
   }, 12000)
-  
+
 })
 
 
@@ -1173,6 +1194,7 @@
 
       .content_wrap {
         flex: 1;
+        flex-shrink: 0;
         margin-right: 20px;
 
         .title_wrap {
@@ -1216,8 +1238,9 @@
             }
 
             .icon {
-              width: 13px;
-              height: 16px;
+              width: 30px;
+              cursor: pointer;
+              /* height: 16px; */
             }
           }
         }
@@ -1248,7 +1271,17 @@
             .item {
               display: flex;
               align-items: center;
-
+              position: relative;
+              .place{
+                position: absolute;
+                top: 120px;
+                right: 70px;
+                z-index: 999;
+                font-size: 13px;
+                color: #869CC9;
+                width: 120px;
+                text-align: center;
+              }
               .icon {
                 width: 70px;
                 height: 70px;
@@ -1278,7 +1311,6 @@
             text-align: center;
             position: relative;
             left: 30px;
-
             .watergage {
               width: 130px;
               height: 112px;
@@ -1327,17 +1359,18 @@
               }
             }
 
-            .place {
+            .placeT {
               position: relative;
               bottom: 10px;
               left: 4px;
               font-size: 44px;
               color: #869CC9;
+              opacity: 0;
             }
 
             .liquidlevel {
-              width: 320px;
-              height: 420px;
+              width: 300px;
+              height: 396px;
 
             }
           }
@@ -1372,6 +1405,17 @@
               margin-top: 12px;
               font-weight: bold;
               font-size: 32px;
+
+            }
+
+            .acc {
+              background-image: -webkit-linear-gradient(top,
+                  #ffffff 0%,
+                  #c8ddff 66%,
+                  #95eefc 72%,
+                  #95eefc 100%);
+              -webkit-background-clip: text;
+              -webkit-text-fill-color: transparent;
             }
 
             .active {
diff --git a/screen/src/views/LogisticsCenter.vue b/screen/src/views/LogisticsCenter.vue
index ccf7558..5e96964 100644
--- a/screen/src/views/LogisticsCenter.vue
+++ b/screen/src/views/LogisticsCenter.vue
@@ -722,7 +722,6 @@
   })
   myChart.on('click', function (params) {
     console.log(params.name)
-
   })
   window.addEventListener('resize', function () {//鎵ц
     myChart.resize()
diff --git a/screen/src/views/LogisticsEfficiency.vue b/screen/src/views/LogisticsEfficiency.vue
index 8a4cebb..51cf166 100644
--- a/screen/src/views/LogisticsEfficiency.vue
+++ b/screen/src/views/LogisticsEfficiency.vue
@@ -3,7 +3,7 @@
     <div class="main_app">
       <img src="@/assets/images/energy_ef/bg@2x.png" class="main_bg" alt="" />
       <div class="main_header">
-        <img src="@/assets/images/maintitle.gif" class="main_header_bg" alt="" />
+        <!-- <img src="@/assets/images/maintitle.gif" class="main_header_bg" alt="" /> -->
         <div class="title">瀹夋嘲鏅烘収鐗╂祦鍥尯-璋冨害鑳芥晥璺熻釜</div>
         <div class="time_wrap">
           <span class="date">{{ date }}</span>
@@ -151,21 +151,33 @@
             <div class="list">
               <div class="item">
                 <img src="@/assets/images/LogisticsCenter/car_zaitu@2x.png" alt="">
-                <span>鍦ㄩ�旓細{{ 8 }}</span>
+                <span>鍦ㄩ�旓細{{ data7.busyNum }}</span>
               </div>
               <div class="item">
                 <img src="@/assets/images/LogisticsCenter/car_kongxian@2x.png" alt="">
-                <span>绌洪棽锛歿{ 8 }}</span>
+                <span>绌洪棽锛歿{ data7.idleNum }}</span>
               </div>
               <div class="item">
                 <img src="@/assets/images/LogisticsCenter/car_lixian@2x.png" alt="">
-                <span>绂荤嚎锛歿{ 8 }}</span>
+                <span>绂荤嚎锛歿{ data7.offlineNum }}</span>
               </div>
             </div>
             <div class="echart_wrap">
               <div ref="echartMap" class="echart_map" id="echartMap"></div>
             </div>
-
+            <div class="warnning_info">
+              <div class="head" @click="isShowCarW = !isShowCarW"> 
+                <img src="../assets/images/FireFighting/fire_right.png" alt="">
+                <span>杞﹁締鎶ヨ</span>
+              </div>
+              <div v-if="isShowCarW" class="war_list">
+                <div class="line" v-for="item in data7.eventList">
+                  <div class="id_card">{{ item.carCode }}</div>
+                  <div class="title">{{ item.title }}</div>
+                  <div v-if="item.time">{{ item.time.slice(11) }}</div>
+                </div>
+              </div>
+            </div>
           </div>
         </div>
         <div class="right_box">
@@ -259,7 +271,7 @@
         </div>
       </div>
       <!--  -->
-      <div class="modal" v-if="showModal">
+      <div class="modal" v-if="activeCar && activeCar.phone">
         <div class="title_head">
           <img src="@/assets/images/energy_ef/chuku_ic_car@2x.png" alt="">
           <span>鐨朼222</span>
@@ -314,7 +326,7 @@
           </div>
         </div>
       </div>
-      <div class="modal_mask" v-if="showModal" @click="showModal = false"></div>
+      <div class="modal_mask" v-if="activeCar && activeCar.phone" @click="activeCar = {}"></div>
     </div>
   </v-scale-screen>
 </template>
@@ -336,6 +348,8 @@
   wlstockList,
   wltotalInList,
   wltransportMeasure,
+  carsListPost,
+  getCarsJobDetails
 } from '@/api'
 import 'swiper/css/swiper.min.css'
 import Swiper from 'swiper'
@@ -351,13 +365,6 @@
   time.value = dayjs().format('HH:mm:ss')
 
 }, 1000)
-
-const showModal = ref(false)
-const modalTab = ref(0)
-const modalTabClick = (val) => {
-  modalTab.value = val
-}
-
 
 
 const initEnergy = () => {
@@ -381,42 +388,62 @@
       left: '3%',
       right: '4%',
       bottom: '3%',
-      top: '18%',
+      top: '26%',
       containLabel: true
     },
     tooltip: {
       trigger: 'axis'
     },
-    xAxis: [{
-      nameGap: 5,
-      type: 'category',
-      axisLine: {
-        show: true,
-        lineStyle: {
-          color: '#999'
+    xAxis: [
+      {
+        nameGap: 5,
+        type: 'category',
+        axisLine: {
+          show: true,
+          lineStyle: {
+            color: '#999'
+          },
         },
-      },
-      axisLabel: {
-        color: '#869CC9'
-        // fontSize: 24,
-      },
-      axisTick: {
-        show: false,
-      },
-      data: dataList2.value.map(i => i.planDate),
-    }],
+        axisLabel: {
+          color: '#869CC9'
+          // fontSize: 24,
+        },
+        axisTick: {
+          show: false,
+        },
+        data: dataList2.value.map(i => i.planDateStrT),
+      }
+    ],
     yAxis: [
       {
-        nameTextStyle: {
-          color: '#869CC9',
-        },
-        offset: 0,
-        name: '涓囨敮',
         type: 'value',
+        name: '涓�',
+        min: 0,
         axisLabel: {
           show: true,
           color: "#869CC9",
         },
+        splitLine: {
+          show: true,
+          lineStyle: {
+            width: 1,
+            color: "rgba(49,105,129,0.4)",
+            type: 'dashed'
+          }
+        },
+        // interval: 5,
+        axisLabel: {
+          formatter: '{value}'
+        }
+      },
+      {
+        type: 'value',
+        name: '涓囨敮',
+        nameTextStyle: {
+          color: '#869CC9',
+        },
+        offset: 0,
+        type: 'value',
         axisLine: {
           show: true,
         },
@@ -428,18 +455,10 @@
             type: 'dashed'
           }
         },
-      },
-      {
-        type: 'value',
-        name: '%',
-        min: 0,
-        max: 100,
-        // interval: 5,
         axisLabel: {
-          formatter: '{value}%'
-        },
-        splitLine: false
-      }
+          formatter: '{value}'
+        }
+      },
     ],
     series: [
       {
@@ -452,6 +471,7 @@
           position: 'top',
           color: '#fff',
         },
+        yAxisIndex: 1,
         itemStyle: {
           color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [
             {
@@ -475,6 +495,7 @@
         name: '浠诲姟瀹屾垚閲�',
         type: 'bar',
         barWidth: 10,
+        yAxisIndex: 1,
         label: {
           show: false,
           position: 'top',
@@ -504,6 +525,7 @@
         type: 'line',
         smooth: false,
         showAllSymbol: true,
+        yAxisIndex: 0,
         symbol: 'none',
         lineStyle: {
           color: "#1a43bc"
@@ -555,26 +577,24 @@
 const initMap = () => {
   var myChart = echarts.init(echartMap.value)
   echarts.registerMap('js', ahJSON)
-  var scatterData = [
-    {
-      name: '骞煎効鍥�',
-      num: 15,
-      color: ['#1984ff', '#184b8d'],
-      img: icKongxian,
-      data: [
-        { name: '', value: [117.25, 31.49] },
-      ],
-    },
-    {
-      name: '灏忓',
-      num: 11,
-      color: ['#f16c08', '#7f3710'],
-      img: icLixian,
-      data: [
-        { name: '', value: [118.5, 31.08] },
-      ],
+  const scatterData = data7.value.carsList.map(item => {
+    return {
+      name: item.terminalId,
+      img: item.status == 0 ? icLixian : item.status == 1 || item.status == 2 ? icZaitu : icKongxian,
+      data: [{code: item.plateNum, value: [item.longitude,item.latitude]}]
     }
-  ]
+  })
+  // var scatterData = [
+  //   {
+  //     name: '骞煎効鍥�',
+  //     num: 15,
+  //     // color: ['#1984ff', '#184b8d'],
+  //     img: icKongxian,
+  //     data: [
+  //       { name: 'asdasdas ', value: [117.25, 31.49] },
+  //     ],
+  //   },
+  // ]
   let serData = []
   scatterData.forEach((item) => {
     serData.push({
@@ -609,30 +629,11 @@
       },
       symbolSize: [32, 40],
       hoverAnimation: true,
-
       zlevel: 99,
       data: item.data,
     })
   }
   )
-  var center = {
-    '鍚堣偉甯�': [117.25, 31.83],
-    '婊佸窞甯�': [118.32, 32.3],
-    '鑺滄箹甯�': [118.43, 31.35],
-    '闃滈槼甯�': [115.38, 32.89],
-    '铓屽煚甯�': [117.39, 32.92],
-    '娣崡甯�': [116.99, 32.63],
-    '椹瀺灞卞競': [118.5, 31.71],
-    '瀹夊簡甯�': [117.05, 30.52],
-    '榛勫北甯�': [118.33, 29.71],
-    '閾滈櫟甯�': [117.81, 30.94],
-    '瀹垮窞甯�': [116.98, 33.64],
-    '娣寳甯�': [116.8, 33.9],
-    '鍏畨甯�': [116.51, 31.75],
-    '姹犲窞甯�': [117.49, 30.66],
-    '瀹e煄甯�': [118.76, 30.94],
-    '浜冲窞甯�': [115.78, 33.84],
-  }
   var data = [
     { name: "鍚堣偉甯�", value: 3 },
     { name: "婊佸窞甯�", value: 0 },
@@ -659,16 +660,6 @@
       x: 'center',
       textStyle: {
         color: '#ffffff'
-      }
-    },
-    tooltip: {
-      trigger: 'item',
-      formatter: function (params) {
-        if (typeof (params.value)[2] == "undefined") {
-          return params.name + ' : ' + params.value
-        } else {
-          return params.name + ' : ' + params.value[2]
-        }
       }
     },
     visualMap: {
@@ -712,7 +703,7 @@
         symbolSize: 14,
         label: {
           normal: {
-            show: true,
+            show: false,
             formatter: function (params) {
               return '{fline|鍦扮偣锛�' + params.data.city + '}\n{tline|' + (params.data.info || '鍙戠敓xx闆嗕欢') + '}'
             },
@@ -751,10 +742,7 @@
         label: {
           show: true,
           color: '#ffffff',
-          emphasis: {
-            color: 'white',
-            show: false
-          }
+
         },
         itemStyle: {
           normal: {
@@ -763,9 +751,15 @@
             areaColor: '#1d3b60'
           },
           emphasis: {
-            areaColor: '#FA8C16',
-            borderWidth: 1,
-            color: '#428598'
+            disabled: true,
+            // areaColor: '#FA8C16',
+            // borderWidth: 1,
+            // color: '#428598',
+            label: {
+              show: true, // 濮嬬粓鏄剧ず鏂囧瓧
+              color: '#fff' // 璁剧疆鏂囧瓧棰滆壊
+            },
+            areaColor: null
           }
         },
         data: data
@@ -775,10 +769,22 @@
   }
 
   myChart.setOption(option)
+  myChart.on('click', function (params) {
+    const item = params.data
+    getCarsJobDetails({carCode: item.code}).then(res => {
+      activeCar.value = res.data
+    })
+  })
   window.addEventListener('resize', function () {//鎵ц
     myChart.resize()
   })
 }
+const activeCar = ref({})
+const modalTab = ref(0)
+const modalTabClick = (val) => {
+  modalTab.value = val
+}
+
 
 const data1 = ref({})
 const activeTab1 = ref(0)
@@ -798,11 +804,17 @@
 
 const dataList2 = ref([])
 const activeTab2 = ref(0)
-const tabClick2 = (val) => { activeTab2.value = val }
+const tabClick2 = (val) => {
+  activeTab2.value = val
+  getData2()
+}
 const getData2 = () => {
   wltransportMeasure({ queryType: activeTab2.value }).then(res => {
-    const result = res.data
+    const result = res.data || []
     dataList2.value = result
+    dataList2.value.forEach(item => {
+      item.planDateStrT = activeTab2.value == 2 ? dayjs(item.planDateStr).format('M') : dayjs(item.planDateStr).format('M.D')
+    })
     initEnergy()
   })
 }
@@ -831,7 +843,10 @@
 }
 const data4 = ref({})
 const activeTab4 = ref(0)
-const tabClick4 = (val) => { activeTab4.value = val }
+const tabClick4 = (val) => {
+  activeTab4.value = val
+  getData4()
+}
 const getData4 = () => {
   wljobData({ queryType: activeTab4.value }).then(res => {
     const result = res.data
@@ -861,6 +876,16 @@
   wlstockList().then(res => {
     const result = res.data
     dataList6.value = result
+  })
+}
+
+const isShowCarW = ref(false)
+const data7 = ref({})
+const getData7 = () => {
+  carsListPost().then(res => {
+    const result = res.data || {}
+    data7.value = result
+    initMap()
   })
 }
 
@@ -896,8 +921,7 @@
   getData4()
   getData5()
   getData6()
-
-  initMap()
+  getData7()
 
   setTimeout(() => {
     loopFn1()
@@ -1212,7 +1236,7 @@
       }
 
       .echart_wrap {
-        width: 100%;
+        width: 86%;
         height: 100%;
 
         .echart_map {
@@ -1221,6 +1245,52 @@
           /* transform: rotate(60deg); */
         }
       }
+
+      .warnning_info {
+        position: absolute;
+        right: 0;
+        bottom: 0;
+        border-top: 1px solid #5ecbce;
+        border-bottom: 1px solid #5ecbce;
+        .head {
+          display: flex;
+          width: 280px;
+          height: 57px;
+          background: rgba(0, 30, 63, 0.4);
+          backdrop-filter: blur(5px);
+          display: flex;
+          align-items: center;
+          padding-left: 10px;
+          font-weight: bold;
+          font-size: 16px;
+          cursor: pointer;
+          img {
+            width: 14px;
+            margin-right: 10px;
+          }
+        }
+
+        .war_list {
+          max-height: 300px;
+          overflow: auto;
+          .line {
+            font-size: 13px;
+            color: #D2E0FF;
+            display: flex;
+            align-items: center;
+            height: 30px;
+            div{
+              flex: 3;
+            }
+            .id_card{
+              color: #00F2F3;
+            }
+            .title{
+              flex: 4;
+            }
+          }
+        }
+      }
     }
   }
 
diff --git a/screen/src/views/SecurityControl.vue b/screen/src/views/SecurityControl.vue
index 1496439..17f7c0a 100644
--- a/screen/src/views/SecurityControl.vue
+++ b/screen/src/views/SecurityControl.vue
@@ -422,7 +422,7 @@
               </div>
               <div class="list two-swiper">
                 <div class="swiper-wrapper">
-                  <template v-for="item, i in dataList2">
+                  <template v-for="item, i in dataList2.filter(i => i.total > 0)">
                     <div class="item two-swiper-slide swiper-slide">
                       <div class="line">
                         <div class="driver">{{ item.deviceType }}</div>
@@ -948,7 +948,7 @@
     initialSlide: 0,
     direction: 'vertical', //绔栫洿鏂瑰悜
     slidesPerView: 3,
-    autoplay: autoplayFlag(dataList2.value, 3, 4000),
+    autoplay: autoplayFlag(dataList2.value.filter(i => i.total > 0), 3, 4000),
     observer: true, //淇敼swiper鑷繁鎴栧瓙鍏冪礌鏃讹紝鑷姩鍒濆鍖杝wiper
   })
 }
@@ -1688,7 +1688,8 @@
         display: flex;
         justify-content: center;
         align-items: center;
-        padding: 16px 24px;
+        padding-top: 16px;
+        padding-left: 24px;
 
         .echart_wrap {
           position: relative;
@@ -1724,7 +1725,7 @@
         }
 
         .list {
-          margin-left: 36px;
+          margin-left: 32px;
           flex: 1;
           display: flex;
           flex-direction: column;
diff --git a/screen/src/views/TaskEfficiency.vue b/screen/src/views/TaskEfficiency.vue
index 4bc1764..159aea2 100644
--- a/screen/src/views/TaskEfficiency.vue
+++ b/screen/src/views/TaskEfficiency.vue
@@ -2,7 +2,6 @@
   <v-scale-screen width="1920" height="960">
     <div class="main_app">
       <img src="@/assets/images/task/bg@2x.png" class="main_bg" alt="" />
-      <img class="point_icon" src="@/assets/ani/apngb-animated.png" alt="">
       <div class="main_header">
         <img src="@/assets/images/maintitle.gif" class="main_header_bg" alt="" />
         <div class="title">瀹夋嘲鏅烘収鐗╂祦鍥尯-浣滀笟鏁堣兘缁熺</div>
@@ -66,7 +65,7 @@
             <div class="list one-swiper">
               <div class="swiper-wrapper">
                 <div class="line one-swiper-slide swiper-slide" v-for="item, i in dataList2" :key="i">
-                  <div class="top"><span v-if="i < 3">top</span>{{ i }}</div>
+                  <div class="top"><span v-if="i < 3">top</span>{{ i + 1 }}</div>
                   <div class="id_card">{{ item.platformName }}</div>
                   <div class="wrap">
                     <ChargeRate :rate="item.rate" />
@@ -130,9 +129,7 @@
             </div>
           </div>
           <div class="center_box_bg">
-            <!-- <div class="no no1" @click="workModalClick">1</div>
-            <div class="no no2" @click="workModalClick">2</div>
-            <div class="no no3" @click="workModalClick">3</div> -->
+            <img class="point_icon" src="@/assets/ani/apngb-animated.png" alt="">
             <div class="work_modal" @click="showWorkModal = false" v-if="showWorkModal">
               <img class="bg" src="@/assets/images/LogisticsCenter/bg_yuetai@2x.png" alt="">
               <div class="head">
@@ -165,9 +162,11 @@
             </div>
           </div>
           <div class="center_box_two">
-            <!-- <div class="videos">
-              <div class="video" v-for="i in 4"></div>
-            </div> -->
+            <div v-if="data4.videoIndexCodes && data4.videoIndexCodes.length > 0" class="videos">
+              <div class="video" v-for="indexCode in data4.videoIndexCodes">
+                <Video v-if="indexCode" :href="data4.videoPluginUrl" :indexCode="indexCode" />
+              </div>
+            </div>
             <div class="list">
               <div class="line header">
                 <div>鏈堝彴鍚嶇О</div>
@@ -227,22 +226,24 @@
             <div class="echart_wrap">
               <div class="echart3" id="echart3"></div>
             </div>
-            <div class="list">
-              <div class="line" v-for="item, i in data6?.platformLogList">
-                <div class="time_wrap">
-                  <div class="time" :style="{
-                    backgroundColor: item.objType == 5 ? '#4ca8f7' : item.objType == 6 ? '#f2b23e' : item.objType == 10 ? '#4673f6' : '#4aa38f'
-                  }" v-if="item.createDate">{{ item.createDate.slice(11, 16) }}</div>
-                  <div class="sp" :style="{
-                    backgroundColor: item.objType == 5 ? '#4ca8f7' : item.objType == 6 ? '#f2b23e' : item.objType == 10 ? '#4673f6' : '#4aa38f'
-                  }"></div>
-                  <div class="dian" :style="{
-                    backgroundColor: item.objType == 5 ? '#4ca8f7' : item.objType == 6 ? '#f2b23e' : item.objType == 10 ? '#4673f6' : '#4aa38f'
-                  }"></div>
+            <div class="list four-swiper">
+              <div class="swiper-wrapper">
+                <div class="line four-swiper-slide swiper-slide" v-for="item, i in data6?.platformLogList">
+                  <div class="time_wrap">
+                    <div class="time" :style="{
+                      backgroundColor: item.objType == 5 ? '#4ca8f7' : item.objType == 6 ? '#f2b23e' : item.objType == 10 ? '#4673f6' : '#4aa38f'
+                    }" v-if="item.createDate">{{ item.createDate.slice(11, 16) }}</div>
+                    <div class="sp" :style="{
+                      backgroundColor: item.objType == 5 ? '#4ca8f7' : item.objType == 6 ? '#f2b23e' : item.objType == 10 ? '#4673f6' : '#4aa38f'
+                    }"></div>
+                    <div class="dian" :style="{
+                      backgroundColor: item.objType == 5 ? '#4ca8f7' : item.objType == 6 ? '#f2b23e' : item.objType == 10 ? '#4673f6' : '#4aa38f'
+                    }"></div>
+                  </div>
+                  <div class="id_card">{{ item.carCodeFront || item.param4 }}</div>
+                  <div class="status">{{ statusMap[item.objType] }}</div>
+                  <div class="desc">{{ item.content }}</div>
                 </div>
-                <div class="id_card">{{ item.carCodeFront || item.param4 }}</div>
-                <div class="status">{{ statusMap[item.objType] }}</div>
-                <div class="desc">{{ item.content }}</div>
               </div>
             </div>
           </div>
@@ -273,7 +274,7 @@
                           <span>鍛婅锛歿{ item.eventContent }}</span>
                         </div>
                         <div class="wrap">
-                          <!-- <span style="margin-right: 30px;">鐘舵�侊細寰呭鐞�</span> -->
+                          <span style="margin-right: 50px;">{{ item.platformName }}</span>
                           <span>宸插彂鐢燂細{{ item.haveTime }}</span>
                         </div>
                       </div>
@@ -305,6 +306,7 @@
 dayjs.extend(duration)
 import 'swiper/css/swiper.min.css'
 import Swiper from 'swiper'
+import Video from './videoUrl/Video.vue'
 import {
   cnplatformGroupFinish,
   cnplatformDuration,
@@ -563,7 +565,7 @@
     }]),
   ]
   const temp = []
-  temp.push({ name: '绛惧埌鏁�', value: data4.value?.signedNum || 0, rate: data4.value?.signedNum ? '100.0' : 0 })
+  temp.push({ name: '绛惧埌鏁�', value: data4.value?.signedNum || 0, rate: data4.value?.signedNum ? '100' : 0 })
   temp.push({ name: '宸插彨鍙�', value: data4.value?.calledNum || 0, rate: data4.value?.signedNum ? (data4.value.calledNum / data4.value?.signedNum * 100).toFixed(1) : 0 })
   temp.push({ name: '宸蹭綔涓�', value: data4.value?.workedNum || 0, rate: data4.value?.signedNum ? (data4.value.workedNum / data4.value?.signedNum * 100).toFixed(1) : 0 })
   temp.push({ name: '宸插畬鎴�', value: data4.value?.doneNum || 0, rate: data4.value?.signedNum ? (data4.value.doneNum / data4.value?.signedNum * 100).toFixed(1) : 0 })
@@ -754,7 +756,7 @@
 
 const data6 = ref({})
 const getData6 = () => {
-  cncarWorkSituation({ size: 7 }).then(res => {
+  cncarWorkSituation({ size: 30 }).then(res => {
     const result = res.data
     data6.value = result
   })
@@ -773,6 +775,23 @@
 
 const showWorkModal = ref(false)
 const workModalParam = ref({})
+// point_icon
+const pointList = ref([
+  { left: 230, top: 190 },
+  { left: 265, top: 180 },
+  { left: 300, top: 170 },
+  { left: 335, top: 160 },
+  { left: 370, top: 150 },
+
+  { left: 530, top: 50  },
+  { left: 550, top: 65 },
+  { left: 570, top: 75 },
+  { left: 590, top: 75 },
+  { left: 600, top: 80 },
+  { left: 850, top: 60 },
+
+])
+
 const platformClick = (val) => {
   workModalParam.value = val
   console.log(val)
@@ -812,6 +831,15 @@
     observer: true, //淇敼swiper鑷繁鎴栧瓙鍏冪礌鏃讹紝鑷姩鍒濆鍖杝wiper
   })
 }
+const loopFn6 = () => {
+  var newSwiper1 = new Swiper('.four-swiper', {
+    initialSlide: 0,
+    direction: 'vertical', //绔栫洿鏂瑰悜
+    slidesPerView: 7,
+    autoplay: autoplayFlag(data6.value.platformLogList, 7, 4000),
+    observer: true, //淇敼swiper鑷繁鎴栧瓙鍏冪礌鏃讹紝鑷姩鍒濆鍖杝wiper
+  })
+}
 const autoplayFlag = (list = [], leng = 4, time = 2000) => {
   if (list.length > leng) {
     return { delay: time, disableOnInteraction: false }
@@ -845,6 +873,7 @@
     loopFn2()
     loopFn5()
     loopFn7()
+    loopFn6()
   }, 12000)
 })
 
@@ -1068,6 +1097,13 @@
       display: flex;
       justify-content: center;
       align-items: center;
+      position: relative;
+      .point_icon {
+        position: absolute;
+        left: 850px;
+        top: 60px;
+      }
+
       .no {
         width: 28px;
         height: 28px;
@@ -1149,8 +1185,7 @@
 
     .center_box_two {
       width: 100%;
-      background: rgba(0, 86, 255, 0.05);
-      backdrop-filter: blur(5px);
+      
 
       .videos {
         width: 100%;
@@ -1173,7 +1208,8 @@
         width: 100%;
         height: 210px;
         overflow-y: auto;
-
+        background: rgba(0, 86, 255, 0.05);
+      backdrop-filter: blur(5px);
         .two-swiper {
           height: 180px;
           overflow: hidden;
@@ -1203,7 +1239,7 @@
         }
 
         .lined {
-          background: rgba(0,160,255,0.6) !important;
+          background: rgba(0, 160, 255, 0.6) !important;
           font-weight: 600 !important;
         }
 
@@ -1226,6 +1262,7 @@
       backdrop-filter: blur(5px);
       background: rgba(0, 86, 255, 0.05);
       backdrop-filter: blur(5px);
+
       .static_wrap {
         display: flex;
         padding: 20px 0 15px;
@@ -1261,14 +1298,16 @@
 
       .list {
         margin: 0 20px 0;
-        width: 100%;
-        height: 222px;
+        width: 430px;
+        height: 231px;
+        overflow: hidden;
+        scrollbar-width: none;
 
         .line {
           display: flex;
           align-items: center;
           font-size: 12px;
-          height: 33px;
+          height: 33px !important;
           color: #D2E0FF;
           width: 100%;
 
@@ -1321,6 +1360,7 @@
     .right_box_two {
       padding: 20px 20px 0;
       margin-top: 20px;
+
       .list {
         height: 220px;
         overflow: hidden;
@@ -1328,6 +1368,7 @@
         background: rgba(0, 86, 255, 0.05);
         backdrop-filter: blur(5px);
         padding-top: 15px;
+
         .item {
           display: flex;
           font-size: 13px;
@@ -1561,12 +1602,6 @@
   position: relative;
   z-index: -2;
   font-size: 14px;
-
-  .point_icon {
-    position: absolute;
-    left: 800px;
-    top: 420px;
-  }
 
   .main_bg {
     position: absolute;

--
Gitblit v1.9.3