From bd11d32a4e0fab6e4e6c4a32d5e7e3fe26abb271 Mon Sep 17 00:00:00 2001
From: baoshiwei <baoshiwei@shlanbao.cn>
Date: 星期五, 06 十二月 2024 16:15:11 +0800
Subject: [PATCH] 完成设备大屏,新增报警大屏

---
 src/views/dry/bigScreen/BigFault.vue      | 1372 +++++++++++++++++++++++++
 src/views/system/tenant/tenant.api.ts     |    6 
 src/views/dry/bigScreen/BigEqpCloud.vue   |  187 ++
 src/views/dashboard/map/index.vue         |  233 ++++
 package.json                              |    2 
 src/views/system/loginmini/MiniLogin.vue  |   72 
 src/views/dry/bigScreen/BigEqp.vue        |  420 ++++++
 src/router/routes/index.ts                |   11 
 src/views/dry/bigScreen/BigFaultCloud.vue |  905 +++++++++++-----
 9 files changed, 2,775 insertions(+), 433 deletions(-)

diff --git a/package.json b/package.json
index 1634a5e..5449600 100644
--- a/package.json
+++ b/package.json
@@ -34,6 +34,7 @@
     "gen:icon": "esno ./build/generate/icon/index.ts"
   },
   "dependencies": {
+    "@amap/amap-jsapi-loader": "^1.0.1",
     "@ant-design/colors": "^6.0.0",
     "@ant-design/icons-vue": "^6.1.0",
     "@dataview/datav-vue3": "^0.0.0-test.1672506674342",
@@ -82,6 +83,7 @@
     "tinymce": "^5.10.3",
     "vditor": "^3.8.13",
     "vue": "^3.2.33",
+    "vue-amap": "^0.5.10",
     "vue-cropper": "^0.5.6",
     "vue-cropperjs": "^5.0.0",
     "vue-i18n": "^9.1.9",
diff --git a/src/router/routes/index.ts b/src/router/routes/index.ts
index 2128c2e..3d24577 100644
--- a/src/router/routes/index.ts
+++ b/src/router/routes/index.ts
@@ -81,6 +81,15 @@
   },
 }
 
+export const BigFault: AppRouteRecordRaw = {
+  path: '/bigFault',
+  name: 'BigFault',
+  component: () => import('/@/views/dry/bigScreen/BigFault.vue'),
+  meta: {
+    title: t('big.screen.fault'),
+  },
+}
+
 //update-begin---author:wangshuai ---date:20220629  for锛歛uth2鐧诲綍椤甸潰璺敱------------
 export const Oauth2LoginRoute: AppRouteRecordRaw = {
 	path: '/oauth2-app/login',
@@ -108,4 +117,4 @@
 }
 
 // Basic routing without permission
-export const basicRoutes = [LoginRoute, RootRoute, ...mainOutRoutes, REDIRECT_ROUTE, PAGE_NOT_FOUND_ROUTE, TokenLoginRoute, Oauth2LoginRoute,BigScreen,BigScreenN,BigEqp,BigEqpCloud,BigFaultCloud]
+export const basicRoutes = [LoginRoute, RootRoute, ...mainOutRoutes, REDIRECT_ROUTE, PAGE_NOT_FOUND_ROUTE, TokenLoginRoute, Oauth2LoginRoute,BigScreen,BigScreenN,BigEqp,BigEqpCloud,BigFaultCloud,BigFault]
diff --git a/src/views/dashboard/map/index.vue b/src/views/dashboard/map/index.vue
new file mode 100644
index 0000000..1bd6800
--- /dev/null
+++ b/src/views/dashboard/map/index.vue
@@ -0,0 +1,233 @@
+<template>
+	<div class="home_div">
+		<div id="container" style="height: 100%; width: 100%"></div>
+	</div>
+</template>
+<script setup lang="ts">
+	import AMapLoader from '@amap/amap-jsapi-loader'
+	import { listAllTenant } from '../../system/tenant/tenant.api'
+	import { onMounted, ref } from 'vue'
+  import { router } from '/@/router'
+  const tenants = ref([])
+	const points = ref([])
+
+	const initMap = () => {
+		window._AMapSecurityConfig = {
+			securityJsCode: 'c1fa6ceb212b62bf9489da9c9986eb5e',
+		}
+		AMapLoader.load({
+			key: '1582675884a1ef3c90b5ae1769c765a7', // 鐢宠濂界殑Web绔紑鍙戣�匥ey锛岄娆¤皟鐢� load 鏃跺繀濉�
+			version: '2.0', // 鎸囧畾瑕佸姞杞界殑 JSAPI 鐨勭増鏈紝缂虹渷鏃堕粯璁や负 1.4.15
+			plugins: ['AMap.Scale'], //闇�瑕佷娇鐢ㄧ殑鐨勬彃浠跺垪琛紝濡傛瘮渚嬪昂'AMap.Scale'锛屾敮鎸佹坊鍔犲涓锛歔'...','...']
+		}).then((AMap) => {
+			var map = new AMap.Map('container', {
+				viewMode: '2D', //  鏄惁涓�3D鍦板浘妯″紡
+				zoom: 5, //  鍦板浘鏄剧ず鐨勭缉鏀剧骇鍒�
+				zooms: [2, 22], // 鍦板浘缂╂斁鑼冨洿
+				// center: arr, //  鍦板浘涓績鐐瑰潗鏍�
+				layers: [new AMap.createDefaultLayer()], //璁剧疆鍥惧眰,鍙缃垚鍖呭惈涓�涓垨澶氫釜鍥惧眰鐨勬暟缁�
+				mapStyle: 'amap://styles/whitesmoke', //璁剧疆鍦板浘鐨勬樉绀烘牱寮�
+				resizeEnable: true, //  鏄惁鐩戞帶鍦板浘瀹瑰櫒灏哄鍙樺寲
+			})
+
+			var clusterIndexSet = {
+				//瀹氫箟鐐硅仛鍚堣鍒�
+				city: {
+					minZoom: 2,
+					maxZoom: 9,
+				},
+				district: {
+					minZoom: 9,
+					maxZoom: 11,
+				},
+				building: {
+					minZoom: 11,
+					maxZoom: 22,
+				},
+			}
+
+			function getStyle(context) {
+				var clusterData = context.clusterData // 鑱氬悎涓寘鍚暟鎹�
+				var index = context.index // 鑱氬悎鐨勬潯浠�
+				var count = context.count // 鑱氬悎涓偣鐨勬�绘暟
+				var marker = context.marker // 鑱氬悎缁樺埗鐐� Marker 瀵硅薄
+				var color = ['66,130,198', '107,174,214', '78,200,211']
+				var indexs = ['city', 'district', 'building']
+				var i = indexs.indexOf(index['mainKey'])
+				var text = clusterData[0][index['mainKey']]
+				var size = Math.round(30 + Math.pow(count / points.value.length, 1 / 5) * 70)
+				if (i <= 1) {
+					var extra = '<span class="showCount">' + context.count + '瀹�</span>'
+					text = '<span class="showName">' + text + '</span>'
+					text += extra
+				} else {
+					size = 12 * text.length + 20
+				}
+				var style = {
+					bgColor: 'rgba(' + color[i] + ',.8)',
+					borderColor: 'rgba(' + color[i] + ',1)',
+					text: text,
+					size: size,
+					index: i,
+					color: '#ffffff',
+					textAlign: 'center',
+					boxShadow: '0px 0px 3px rgba(0,0,0,0.6)',
+				}
+				return style
+			}
+			function getPosition(context) {
+				var key = context.index.mainKey
+				var dataItem = context.clusterData && context.clusterData[0]
+				var districtName = dataItem[key]
+				if (!district[districtName]) {
+					return null
+				}
+				var center = district[districtName].center.split(',')
+				var centerLnglat = new AMap.LngLat(center[0], center[1])
+				return centerLnglat
+			}
+			function _customRender(data) {
+				const keys = Object.keys(data.clusterData)
+				let markers = []
+				for (var i = 0; i < keys.length; i++) {
+					var key = keys[i]
+					var cluster = data.clusterData[key]
+					var position = cluster.data[0].lnglat
+					var marker = new AMap.LabelMarker({
+						position: position,
+						text: {
+							content: cluster.data.length.toString(),
+							style: {
+								fillColor: '#ffffff',
+							},
+						},
+					})
+					markers.push(marker)
+				}
+				return {
+					type: 'type',
+					layer: null,
+					markers: markers,
+				}
+			}
+
+			//鑱氬悎鐐规牱寮�
+			// var _renderClusterMarker = function (context) {
+			// 	//context 涓哄洖璋冨弬鏁帮紝
+			//   console.log("context", context)
+			// 	//鍖呭惈濡備笅灞炴�� marker:褰撳墠鑱氬悎鐐癸紝count:褰撳墠鑱氬悎鐐瑰唴鐨勭偣鏁伴噺
+			// 	var clusterCount = context.count //鑱氬悎鐐瑰唴鐐规暟閲�
+			// 	context.marker.setContent('<div style="background-color:#00ff00">' + clusterCount + '</div>')
+			// }
+			// 鑷畾涔夎仛鍚堢偣鏍峰紡
+			function _renderClusterMarker(context) {
+				var clusterData = context.clusterData // 鑱氬悎涓寘鍚暟鎹�
+				var index = context.index // 鑱氬悎鐨勬潯浠�
+				var count = context.count // 鑱氬悎涓偣鐨勬�绘暟
+				var marker = context.marker // 鑱氬悎鐐规爣璁板璞�
+				var styleObj = getStyle(context)
+				// 鑷畾涔夌偣鏍囪鏍峰紡
+				var div = document.createElement('div')
+				div.className = 'amap-cluster'
+				div.style.backgroundColor = styleObj.bgColor
+				div.style.width = styleObj.size + 'px'
+				if (styleObj.index <= 1) {
+					div.style.height = styleObj.size + 'px'
+					// 鑷畾涔夌偣鍑讳簨浠�
+					context.marker.on('click', function (e) {
+						console.log(e)
+						var curZoom = map.getZoom()
+						if (curZoom < 9) {
+							curZoom = 9
+						} else if (curZoom < 11) {
+              curZoom = 11
+            }
+						map.setZoomAndCenter(curZoom, e.lnglat)
+					})
+				} else {
+          // 鑷畾涔夌偣鍑讳簨浠�
+          context.marker.on('click', function (e) {
+            let innerText = e.target.dom.innerText;
+            tenants.value.forEach(item => {
+              if(item.companyAddress.includes(innerText)) {
+                //router.push({ path: '/tongjitang/bigworkshop', params: { tenant: item.id } })
+                // router.push( {path: '/tongjitang/bigworkshop/' + item.id} )
+                // router.push( '/tongjitang/bigworkshop/' + item.id )
+                let href = '/tongjitang/bigworkshop/' + item.id;
+                window.open(href, '_blank');
+              }
+            })
+          })
+          console.log(router)
+        }
+				div.style.border = 'solid 1px ' + styleObj.borderColor
+				div.style.borderRadius = styleObj.size + 'px'
+				div.innerHTML = styleObj.text
+				div.style.color = styleObj.color
+				div.style.textAlign = styleObj.textAlign
+				div.style.boxShadow = styleObj.boxShadow
+				context.marker.setContent(div)
+				// 鑷畾涔夎仛鍚堢偣鏍囪鏄剧ず浣嶇疆
+				// var position = getPosition(context);
+				// if(position){
+				//   context.marker.setPosition(position);
+				// }
+				context.marker.setAnchor('center')
+			}
+
+			map.plugin(['AMap.IndexCluster'], function () {
+				console.log('cluster', points.value)
+				var indexCluster = new AMap.IndexCluster(map, points.value, {
+					renderClusterMarker: _renderClusterMarker, //鑷畾涔夎仛鍚堢偣鏍峰紡
+					clusterIndexSet: clusterIndexSet, //鑱氬悎瑙勫垯
+				})
+			})
+		})
+	}
+
+	const getTenants = () => {
+		listAllTenant().then((res) => {
+      tenants.value = res
+			res.forEach((item) => {
+				let point = JSON.parse(item.companyAddress)
+				points.value.push(point)
+			})
+			initMap()
+			//console.log('points', points.value)
+		})
+	}
+
+	getTenants()
+	onMounted(() => {})
+</script>
+<style>
+.amap-cluster {
+  display: flex;
+  justify-content: center;
+  flex-direction: column;
+  align-items: center;
+  font-size: 12px;
+}
+.showName {
+  font-size: 14px;
+}
+.showCount,
+.showName {
+  display: block;
+  text-overflow: ellipsis;
+  white-space: nowrap;
+  overflow: hidden;
+  width: 80%;
+}
+</style>
+<style scoped lang="less">
+	.home_div {
+		height: 100%;
+		width: 100%;
+		padding: 0px;
+		margin: 0px;
+		position: relative;
+	}
+
+</style>
+
diff --git a/src/views/dry/bigScreen/BigEqp.vue b/src/views/dry/bigScreen/BigEqp.vue
index 7f8f689..5a7b020 100644
--- a/src/views/dry/bigScreen/BigEqp.vue
+++ b/src/views/dry/bigScreen/BigEqp.vue
@@ -118,45 +118,236 @@
 									>
 										{{ statusTxt }}
 									</div>
-									<div v-if="realData?.warning" style=" 
-											margin-left: 100px;
-											font-size: 22px;
-											background: sandybrown;
+<!--									<div v-if="realData?.warning" style=" -->
+<!--											margin-left: 100px;-->
+<!--											font-size: 22px;-->
+<!--											background: sandybrown;-->
 
-											border-radius: 10px;
-											line-height: 25px;
-											max-width: 500px;
-											padding: 15px;
-											font-weight: bold;" >
-										{{ realData?.warnMsg }}
-									</div>
-									
-									
-								
-									<div
-										v-if="realData?.isError"
-										class="eqpInfoText blingbling outDiv"
-										style="
-											position: absolute;
-											font-size: 30px;
-											max-height: 200px;
-											max-width: 720px;
-											margin-top: 300px;
-											border-radius: 10px;
-											background-color: #ce0000;
-											color: white;
-											padding: 10px 30px;
-										"
-									>
-										<div class="outDiv">
-											<div><Icon icon="bx:error" :size="30" /> </div>
-											<div
-												><span>{{ realData?.errorMsg }}</span></div
-											>
-										</div>
-									</div>
+<!--											border-radius: 10px;-->
+<!--											line-height: 25px;-->
+<!--											max-width: 500px;-->
+<!--											padding: 15px;-->
+<!--											font-weight: bold;" >-->
+<!--										{{ realData?.warnMsg }}-->
+<!--									</div>-->
+<!--									-->
+
+
+<!--									<div-->
+<!--										v-if="realData?.isError"-->
+<!--										class="eqpInfoText blingbling outDiv"-->
+<!--										style="-->
+<!--											position: absolute;-->
+<!--											font-size: 30px;-->
+<!--											max-height: 200px;-->
+<!--											max-width: 720px;-->
+<!--											margin-top: 300px;-->
+<!--											border-radius: 10px;-->
+<!--											background-color: #ce0000;-->
+<!--											color: white;-->
+<!--											padding: 10px 30px;-->
+<!--										"-->
+<!--									>-->
+<!--										<div class="outDiv">-->
+<!--											<div><Icon icon="bx:error" :size="30" /> </div>-->
+<!--											<div-->
+<!--												><span>{{ realData?.errorMsg }}</span></div-->
+<!--											>-->
+<!--										</div>-->
+<!--									</div>-->
 								</div>
 							</div>
+              <div style="width: 848px; height: 485px; position: absolute;" @click="showFault">
+                <div v-if="zuoqianjiting" class="error-div" style=" top:309px; left:418px">
+                  <div class="blingbling error-marker" ></div>
+                  <div class="error-msg" style="width: 70px;">
+                    &nbsp;&nbsp;宸﹀墠鎬ュ仠
+                  </div>
+                </div>
+                <div v-if="shebeijiting" class="error-div"  style=" top:111px; left:484px">
+                  <div class="blingbling error-marker" ></div>
+                  <div class="error-msg" style=" width: 106px;">
+                    &nbsp;&nbsp;璁惧鎬ュ仠锛堟�伙級
+                  </div>
+                </div>
+                <div v-if="chuliaojiting" class="error-div"  style=" top:300px; left:129px">
+                  <div class="blingbling error-marker" ></div>
+                  <div class="error-msg" style=" width: 70px;">
+                    &nbsp;&nbsp;鍑烘枡鎬ュ仠
+                  </div>
+                </div>
+                <div v-if="mianbanjiting" class="error-div"  style=" top:258px; left:659px">
+                  <div class="blingbling error-marker" ></div>
+                  <div class="error-msg" style=" width: 70px;">
+                    &nbsp;&nbsp;闈㈡澘鎬ュ仠
+                  </div>
+                </div>
+                <div v-if="fengxiangsheng" class="error-div"  style=" top:294px; left:517px">
+                  <div class="blingbling error-marker" ></div>
+                  <div class="error-msg" style=" width: 86px;">
+                    &nbsp;&nbsp;椋庣鍗囧紓甯�
+                  </div>
+                </div>
+                <div v-if="fengxiangjiang" class="error-div"  style=" top:319px; left:517px">
+                  <div class="blingbling error-marker" ></div>
+                  <div class="error-msg" style=" width: 86px;">
+                    &nbsp;&nbsp;椋庣闄嶅紓甯�
+                  </div>
+                </div>
+                <div v-if="fengjiguoliu" class="error-div"  style=" top:335px; left:655px">
+                  <div class="blingbling error-marker" ></div>
+                  <div class="error-msg" style=" width: 70px;">
+                    &nbsp;&nbsp;椋庢満杩囨祦
+                  </div>
+                </div>
+                <div v-if="guntongsheng" class="error-div"  style=" top:198px; left:517px">
+                  <div class="blingbling error-marker" ></div>
+                  <div class="error-msg" style=" width: 86px;">
+                    &nbsp;&nbsp;婊氱瓛鍗囧紓甯�
+                  </div>
+                </div>
+                <div v-if="guntongjiang" class="error-div"  style=" top:223px; left:517px">
+                  <div class="blingbling error-marker" ></div>
+                  <div class="error-msg" style=" width: 86px;">
+                    &nbsp;&nbsp;婊氱瓛闄嶅紓甯�
+                  </div>
+                </div>
+                <div v-if="guntongguoliu" class="error-div"  style=" top:209px; left:642px">
+                  <div class="blingbling error-marker" ></div>
+                  <div class="error-msg" style=" width: 70px;">
+                    &nbsp;&nbsp;婊氱瓛杩囨祦
+                  </div>
+                </div>
+                <div v-if="wendubaojing" class="error-div"  style=" top:234px; left:659px">
+                  <div class="blingbling error-marker" ></div>
+                  <div class="error-msg" style=" width: 70px;">
+                    &nbsp;&nbsp;娓╁害鎶ヨ
+                  </div>
+                </div>
+
+                <div v-if="zuoqianmen" class="error-div"  style=" top:388px; left:415px">
+                  <div class="blingbling warn-marker" ></div>
+                  <div class="warn-msg" style=" width: 80px;">
+                    &nbsp;&nbsp;宸﹀墠闂ㄦ姤璀�
+                  </div>
+                </div>
+                <div v-if="zuohoumen" class="error-div"  style=" top:367px; left:587px">
+                  <div class="blingbling warn-marker" ></div>
+                  <div class="warn-msg" style=" width: 80px;">
+                    &nbsp;&nbsp;宸﹀悗闂ㄦ姤璀�
+                  </div>
+                </div>
+                <div v-if="youqianmen" class="error-div"  style=" top:388px; left:284px">
+                  <div class="blingbling warn-marker" ></div>
+                  <div class="warn-msg" style=" width: 80px;">
+                    &nbsp;&nbsp;鍙冲墠闂ㄦ姤璀�
+                  </div>
+                </div>
+                <div v-if="youhoumen" class="error-div"  style=" top:367px; left:478px">
+                  <div class="blingbling warn-marker" ></div>
+                  <div class="warn-msg" style=" width: 80px;">
+                    &nbsp;&nbsp;鍙冲悗闂ㄦ姤璀�
+                  </div>
+                </div>
+
+                <div v-if="guntongbuzaigaowei" class="error-div"  style=" top:173px; left:517px">
+                  <div class="blingbling warn-marker" ></div>
+                  <div class="warn-msg" style=" width: 100px;">
+                    &nbsp;&nbsp;婊氱瓛涓嶅湪楂樹綅
+                  </div>
+                </div>
+                <div v-if="fengxiangbuzaigaowei" class="error-div"  style=" top:269px; left:517px">
+                  <div class="blingbling warn-marker" ></div>
+                  <div class="warn-msg" style=" width: 100px;">
+                    &nbsp;&nbsp;椋庣涓嶅湪楂樹綅
+                  </div>
+                </div>
+                <div v-if="fengxiangbuzaidiwei" class="error-div"  style=" top:343px; left:517px">
+                  <div class="blingbling warn-marker" ></div>
+                  <div class="warn-msg" style=" width: 100px;">
+                    &nbsp;&nbsp;椋庣涓嶅湪浣庝綅
+                  </div>
+                </div>
+                <div v-if="jiareweichuanganqi" class="error-div"  style=" top:283px; left:642px">
+                  <div class="blingbling warn-marker" ></div>
+                  <div class="warn-msg" style=" width: 126px;">
+                    &nbsp;&nbsp;鍔犵儹浣嶄紶鎰熷櫒鎶ヨ
+                  </div>
+                </div>
+                <div v-if="zuoqianfengxianggaowei" class="error-div"  style=" top:334px; left:362px">
+                  <div class="blingbling warn-marker" ></div>
+                  <div class="warn-msg" style=" width: 126px;">
+                    &nbsp;&nbsp;宸﹀墠椋庣涓嶅湪楂樹綅
+                  </div>
+                </div>
+                <div v-if="zuoqianfengxiangdiwei" class="error-div"  style=" top:334px; left:362px">
+                  <div class="blingbling warn-marker" ></div>
+                  <div class="warn-msg" style=" width: 126px;">
+                    &nbsp;&nbsp;宸﹀墠椋庣涓嶅湪浣庝綅
+                  </div>
+                </div>
+                <div v-if="zuohoufengxianggaowei" class="error-div"  style=" top:309px; left:642px">
+                  <div class="blingbling warn-marker" ></div>
+                  <div class="warn-msg" style=" width: 126px;">
+                    &nbsp;&nbsp;宸﹀悗椋庣涓嶅湪楂樹綅
+                  </div>
+                </div>
+                <div v-if="zuohoufengxiangdiwei" class="error-div"  style=" top:309px; left:642px">
+                  <div class="blingbling warn-marker" ></div>
+                  <div class="warn-msg" style=" width: 126px;">
+                    &nbsp;&nbsp;宸﹀悗椋庣涓嶅湪浣庝綅
+                  </div>
+                </div>
+                <div v-if="youqianfengxianggaowei" class="error-div"  style=" top:272px; left:300px">
+                  <div class="blingbling warn-marker" ></div>
+                  <div class="warn-msg" style=" width: 126px;">
+                    &nbsp;&nbsp;鍙冲墠椋庣涓嶅湪楂樹綅
+                  </div>
+                </div>
+                <div v-if="youqianfengxiangdiwei" class="error-div"  style=" top:272px; left:300px">
+                  <div class="blingbling warn-marker" ></div>
+                  <div class="warn-msg" style=" width: 126px;">
+                    &nbsp;&nbsp;鍙冲墠椋庣涓嶅湪浣庝綅
+                  </div>
+                </div>
+                <div v-if="youhoufengxianggaowei" class="error-div"  style=" top:246px; left:506px">
+                  <div class="blingbling warn-marker" ></div>
+                  <div class="warn-msg" style=" width: 126px;">
+                    &nbsp;&nbsp;鍙冲悗椋庣涓嶅湪楂樹綅
+                  </div>
+                </div>
+                <div v-if="youhoufengxiangdiwei" class="error-div"  style=" top:246px; left:506px">
+                  <div class="blingbling warn-marker" ></div>
+                  <div class="warn-msg" style=" width: 126px;">
+                    &nbsp;&nbsp;鍙冲悗椋庣涓嶅湪浣庝綅
+                  </div>
+                </div>
+                <div v-if="zuoqianguntongdiwei" class="error-div"  style=" top:175px; left:358px">
+                  <div class="blingbling warn-marker" ></div>
+                  <div class="warn-msg" style=" width: 126px;">
+                    &nbsp;&nbsp;宸﹀墠婊氱瓛涓嶅湪浣庝綅
+                  </div>
+                </div>
+                <div v-if="zuohouguntongdiwei" class="error-div"  style=" top:158px; left:643px">
+                  <div class="blingbling warn-marker" ></div>
+                  <div class="warn-msg" style=" width: 126px;">
+                    &nbsp;&nbsp;宸﹀悗婊氱瓛涓嶅湪浣庝綅
+                  </div>
+                </div>
+                <div v-if="youqianguntongdiwei" class="error-div"  style=" top:150px; left:268px">
+                  <div class="blingbling warn-marker" ></div>
+                  <div class="warn-msg" style=" width: 126px;">
+                    &nbsp;&nbsp;鍙冲墠婊氱瓛涓嶅湪浣庝綅
+                  </div>
+                </div>
+                <div v-if="youhouguntongdiwei" class="error-div"  style=" top:135px; left:506px">
+                  <div class="blingbling warn-marker" ></div>
+                  <div class="warn-msg" style=" width: 126px;">
+                    &nbsp;&nbsp;鍙冲悗婊氱瓛涓嶅湪浣庝綅
+                  </div>
+                </div>
+
+              </div>
 						</dv-border-box7>
 						<dv-border-box7 class="infoChart" style="margin-left: 0px; margin-right: 10px">
 							<div class="chartTittle">椋庣娓╁害</div>
@@ -524,6 +715,40 @@
 	var efficiencyLineChart: echarts.ECharts
 
 	var compareChart: echarts.ECharts
+
+  //----------------error----------------
+  const shebeijiting = ref(false)
+  const chuliaojiting = ref(false)
+  const zuoqianjiting = ref(false)
+  const mianbanjiting = ref(false)
+  const fengxiangsheng = ref(false)
+  const fengxiangjiang = ref(false)
+  const fengjiguoliu = ref(false)
+  const guntongsheng = ref(false)
+  const guntongjiang = ref(false)
+  const guntongguoliu = ref(false)
+  const wendubaojing = ref(false)
+  //--------------warning------------
+  const zuoqianmen = ref(false)
+  const zuohoumen = ref(false)
+  const youqianmen = ref(false)
+  const youhoumen = ref(false)
+  const guntongbuzaigaowei = ref(false)
+  const fengxiangbuzaigaowei = ref(false)
+  const fengxiangbuzaidiwei = ref(false)
+  const jiareweichuanganqi = ref(false)
+  const zuoqianfengxianggaowei = ref(false)
+  const zuohoufengxianggaowei = ref(false)
+  const youqianfengxianggaowei = ref(false)
+  const youhoufengxianggaowei = ref(false)
+  const zuoqianfengxiangdiwei = ref(false)
+  const zuohoufengxiangdiwei = ref(false)
+  const youqianfengxiangdiwei = ref(false)
+  const youhoufengxiangdiwei = ref(false)
+  const zuoqianguntongdiwei = ref(false)
+  const zuohouguntongdiwei = ref(false)
+  const youqianguntongdiwei = ref(false)
+  const youhouguntongdiwei = ref(false)
 
 	function initCharts() {
 		let domId = 'moisChart'
@@ -1327,7 +1552,11 @@
 		statusGif = 'chaiwangban-1'
 		setTimeout(shangliao, 7000)
 	}
+  function showFault () {
+    console.log('showFault')
+    router.push({ path: '/bigFault', query: {  num: num } })
 
+  }
 	function shangliao() {
 		statusGif = 'shangliao-N'
 		setTimeout(() => {
@@ -1722,17 +1951,114 @@
 					} else if (res.herbName == '妗戠櫧鐨�') {
 						res.herbImage = 'sangbaipi.png'
 					}
-					
-					res.isError = false
-					if (res.fault) {
-						res.isError = true
-						res.errorMsg = res.fault
-					}
 
-					if (res.warning) {
-						res.isWarning = true
-						res.warnMsg = res.warning
-					}
+          res.isError = false
+          if (res.fault) {
+            res.isError = true
+            res.errorMsg = res.fault;
+            const faults = res.fault;
+            console.log('errorMsg:', res.fault)
+            if (faults.includes('鎬ュ仠鎶ヨ')) {
+              shebeijiting.value = true;
+            }
+            if (faults.includes('宸﹀墠鎬ュ仠')) {
+              zuoqianjiting.value = true;
+            }
+            if (faults.includes('闈㈡澘鎬ュ仠')) {
+              mianbanjiting.value = true;
+            }
+            if (faults.includes('鍑烘枡鎬ュ仠')) {
+              chuliaojiting.value = true;
+            }
+            if (faults.includes('娓╁害澶辨帶')) {
+              wendubaojing.value = true;
+            }
+            if (faults.includes('婊氱瓛鍗�')) {
+              guntongsheng.value = true;
+            }
+            if (faults.includes('婊氱瓛闄�')) {
+              guntongjiang.value = true;
+            }
+            if (faults.includes('婊氱瓛鐢垫満杩囨祦')) {
+              guntongguoliu.value = true;
+            }
+            if (faults.includes('椋庣鍗�')) {
+              fengxiangsheng.value = true;
+            }
+            if (faults.includes('椋庣闄�')) {
+              fengxiangjiang.value = true;
+            }
+            if (faults.includes('椋庣椋庢満杩囨祦')) {
+              fengjiguoliu.value = true;
+            }
+          }
+
+          if (res.warning) {
+            res.isWarning = true
+            res.warnMsg = res.warning
+            const warnings = res.warning;
+            console.log('warnMsg:', res.warning)
+            if (warnings.includes('宸﹀墠闂�')) {
+              zuoqianmen.value = true;
+            }
+            if (warnings.includes('鍙冲墠闂�')) {
+              youqianmen.value = true;
+            }
+            if (warnings.includes('宸﹀悗闂�')) {
+              zuohoumen.value = true;
+            }
+            if (warnings.includes('鍙冲悗闂�')) {
+              youhoumen.value = true;
+            }
+            if (warnings.includes('婊氱瓛涓嶅湪楂樹綅')) {
+              guntongbuzaigaowei.value = true;
+            }
+            if (warnings.includes('椋庣涓嶅湪浣庝綅')) {
+              fengxiangbuzaidiwei.value = true;
+            }
+            if (warnings.includes('椋庣涓嶅湪楂樹綅')) {
+              fengxiangbuzaigaowei.value = true;
+            }
+            if (warnings.includes('鍔犵儹浣嶄紶鎰熷櫒')) {
+              jiareweichuanganqi.value = true;
+            }
+            if (warnings.includes('宸﹀墠椋庣楂樹綅浼犳劅鍣�')) {
+              zuoqianfengxianggaowei.value = true;
+            }
+            if (warnings.includes('鍙冲墠椋庣楂樹綅浼犳劅鍣�')) {
+              youqianfengxianggaowei.value = true;
+            }
+            if (warnings.includes('宸﹀悗椋庣楂樹綅浼犳劅鍣�')) {
+              zuohoufengxianggaowei.value = true;
+            }
+            if (warnings.includes('鍙冲悗椋庣楂樹綅浼犳劅鍣�')) {
+              youhoufengxianggaowei.value = true;
+            }
+            if (warnings.includes('宸﹀墠椋庣浣庝綅浼犳劅鍣�')) {
+              zuoqianfengxiangdiwei.value = true;
+            }
+            if (warnings.includes('鍙冲墠椋庣浣庝綅浼犳劅鍣�')) {
+              youqianfengxiangdiwei.value = true;
+            }
+            if (warnings.includes('宸﹀悗椋庣浣庝綅浼犳劅鍣�')) {
+              zuohoufengxiangdiwei.value = true;
+            }
+            if (warnings.includes('鍙冲悗椋庣浣庝綅浼犳劅鍣�')) {
+              youhoufengxiangdiwei.value = true;
+            }
+            if (warnings.includes('宸﹀墠婊氱瓛浣庝綅浼犳劅鍣�')) {
+              zuoqianguntongdiwei.value = true;
+            }
+            if (warnings.includes('鍙冲墠婊氱瓛浣庝綅浼犳劅鍣�')) {
+              youqianguntongdiwei.value = true;
+            }
+            if (warnings.includes('宸﹀悗婊氱瓛浣庝綅浼犳劅鍣�')) {
+              zuohouguntongdiwei.value = true;
+            }
+            if (warnings.includes('鍙冲悗婊氱瓛浣庝綅浼犳劅鍣�')) {
+              youhouguntongdiwei.value = true;
+            }
+          }
 				} else {
 					res = {
 						mois: [],
@@ -1883,7 +2209,7 @@
 		margin-top: -30px;
 	}
 	.leftTop0 {
-		height: 600px;
+		height: 260px;
 		width: 848px;
 		display: flex;
 		justify-content: center;
diff --git a/src/views/dry/bigScreen/BigEqpCloud.vue b/src/views/dry/bigScreen/BigEqpCloud.vue
index f87b9a6..4c97ddb 100644
--- a/src/views/dry/bigScreen/BigEqpCloud.vue
+++ b/src/views/dry/bigScreen/BigEqpCloud.vue
@@ -158,189 +158,189 @@
 								</div>
 							</div>
               <div style="width: 848px; height: 485px; position: absolute;" @click="showFault">
-                <div v-if="true | zuoqianjiting" class="error-div" style=" top:309px; left:418px">
+                <div v-if="zuoqianjiting" class="error-div" style=" top:309px; left:418px">
                   <div class="blingbling error-marker" ></div>
                   <div class="error-msg" style="width: 70px;">
                     &nbsp;&nbsp;宸﹀墠鎬ュ仠
                   </div>
                 </div>
-                <div v-if="true | shebeijiting" class="error-div"  style=" top:111px; left:484px">
+                <div v-if="shebeijiting" class="error-div"  style=" top:111px; left:484px">
                   <div class="blingbling error-marker" ></div>
                   <div class="error-msg" style=" width: 106px;">
                     &nbsp;&nbsp;璁惧鎬ュ仠锛堟�伙級
                   </div>
                 </div>
-                <div v-if="true | chuliaojiting" class="error-div"  style=" top:300px; left:129px">
+                <div v-if="chuliaojiting" class="error-div"  style=" top:300px; left:129px">
                   <div class="blingbling error-marker" ></div>
                   <div class="error-msg" style=" width: 70px;">
                     &nbsp;&nbsp;鍑烘枡鎬ュ仠
                   </div>
                 </div>
-                <div v-if="true | mianbanjiting" class="error-div"  style=" top:258px; left:659px">
+                <div v-if="mianbanjiting" class="error-div"  style=" top:258px; left:659px">
                   <div class="blingbling error-marker" ></div>
                   <div class="error-msg" style=" width: 70px;">
                     &nbsp;&nbsp;闈㈡澘鎬ュ仠
                   </div>
                 </div>
-                <div v-if="true | fengxiangsheng" class="error-div"  style=" top:294px; left:517px">
+                <div v-if="fengxiangsheng" class="error-div"  style=" top:294px; left:517px">
                   <div class="blingbling error-marker" ></div>
                   <div class="error-msg" style=" width: 86px;">
                     &nbsp;&nbsp;椋庣鍗囧紓甯�
                   </div>
                 </div>
-                <div v-if="true | fengxiangjiang" class="error-div"  style=" top:319px; left:517px">
+                <div v-if="fengxiangjiang" class="error-div"  style=" top:319px; left:517px">
                   <div class="blingbling error-marker" ></div>
                   <div class="error-msg" style=" width: 86px;">
                     &nbsp;&nbsp;椋庣闄嶅紓甯�
                   </div>
                 </div>
-                <div v-if="true | fengjiguoliu" class="error-div"  style=" top:335px; left:655px">
+                <div v-if="fengjiguoliu" class="error-div"  style=" top:335px; left:655px">
                   <div class="blingbling error-marker" ></div>
                   <div class="error-msg" style=" width: 70px;">
                     &nbsp;&nbsp;椋庢満杩囨祦
                   </div>
                 </div>
-                <div v-if="true | guntongsheng" class="error-div"  style=" top:198px; left:517px">
+                <div v-if="guntongsheng" class="error-div"  style=" top:198px; left:517px">
                   <div class="blingbling error-marker" ></div>
                   <div class="error-msg" style=" width: 86px;">
                     &nbsp;&nbsp;婊氱瓛鍗囧紓甯�
                   </div>
                 </div>
-                <div v-if="true | guntongjiang" class="error-div"  style=" top:223px; left:517px">
+                <div v-if="guntongjiang" class="error-div"  style=" top:223px; left:517px">
                   <div class="blingbling error-marker" ></div>
                   <div class="error-msg" style=" width: 86px;">
                     &nbsp;&nbsp;婊氱瓛闄嶅紓甯�
                   </div>
                 </div>
-                <div v-if="true | guntongguoliu" class="error-div"  style=" top:209px; left:642px">
+                <div v-if="guntongguoliu" class="error-div"  style=" top:209px; left:642px">
                   <div class="blingbling error-marker" ></div>
                   <div class="error-msg" style=" width: 70px;">
                     &nbsp;&nbsp;婊氱瓛杩囨祦
                   </div>
                 </div>
-                <div v-if="true | wendubaojing" class="error-div"  style=" top:234px; left:659px">
+                <div v-if="wendubaojing" class="error-div"  style=" top:234px; left:659px">
                   <div class="blingbling error-marker" ></div>
                   <div class="error-msg" style=" width: 70px;">
                     &nbsp;&nbsp;娓╁害鎶ヨ
                   </div>
                 </div>
 
-                <div v-if="true | zuoqianmen" class="error-div"  style=" top:388px; left:415px">
+                <div v-if="zuoqianmen" class="error-div"  style=" top:388px; left:415px">
                   <div class="blingbling warn-marker" ></div>
                   <div class="warn-msg" style=" width: 80px;">
                     &nbsp;&nbsp;宸﹀墠闂ㄦ姤璀�
                   </div>
                 </div>
-                <div v-if="true | zuohoumen" class="error-div"  style=" top:367px; left:587px">
+                <div v-if="zuohoumen" class="error-div"  style=" top:367px; left:587px">
                   <div class="blingbling warn-marker" ></div>
                   <div class="warn-msg" style=" width: 80px;">
                     &nbsp;&nbsp;宸﹀悗闂ㄦ姤璀�
                   </div>
                 </div>
-                <div v-if="true | youqianmen" class="error-div"  style=" top:388px; left:284px">
+                <div v-if="youqianmen" class="error-div"  style=" top:388px; left:284px">
                   <div class="blingbling warn-marker" ></div>
                   <div class="warn-msg" style=" width: 80px;">
                     &nbsp;&nbsp;鍙冲墠闂ㄦ姤璀�
                   </div>
                 </div>
-                <div v-if="true | youhoumen" class="error-div"  style=" top:367px; left:478px">
+                <div v-if="youhoumen" class="error-div"  style=" top:367px; left:478px">
                   <div class="blingbling warn-marker" ></div>
                   <div class="warn-msg" style=" width: 80px;">
                     &nbsp;&nbsp;鍙冲悗闂ㄦ姤璀�
                   </div>
                 </div>
 
-                <div v-if="true | guntongbuzaigaowei" class="error-div"  style=" top:173px; left:517px">
+                <div v-if="guntongbuzaigaowei" class="error-div"  style=" top:173px; left:517px">
                   <div class="blingbling warn-marker" ></div>
                   <div class="warn-msg" style=" width: 100px;">
                     &nbsp;&nbsp;婊氱瓛涓嶅湪楂樹綅
                   </div>
                 </div>
-                <div v-if="true | fengxiangbuzaigaowei" class="error-div"  style=" top:269px; left:517px">
+                <div v-if="fengxiangbuzaigaowei" class="error-div"  style=" top:269px; left:517px">
                   <div class="blingbling warn-marker" ></div>
                   <div class="warn-msg" style=" width: 100px;">
                     &nbsp;&nbsp;椋庣涓嶅湪楂樹綅
                   </div>
                 </div>
-                <div v-if="true | fengxiangbuzaidiwei" class="error-div"  style=" top:343px; left:517px">
+                <div v-if="fengxiangbuzaidiwei" class="error-div"  style=" top:343px; left:517px">
                   <div class="blingbling warn-marker" ></div>
                   <div class="warn-msg" style=" width: 100px;">
                     &nbsp;&nbsp;椋庣涓嶅湪浣庝綅
                   </div>
                 </div>
-                <div v-if="true | jiareweichuanganqi" class="error-div"  style=" top:283px; left:642px">
+                <div v-if="jiareweichuanganqi" class="error-div"  style=" top:283px; left:642px">
                   <div class="blingbling warn-marker" ></div>
                   <div class="warn-msg" style=" width: 126px;">
                     &nbsp;&nbsp;鍔犵儹浣嶄紶鎰熷櫒鎶ヨ
                   </div>
                 </div>
-                <div v-if="true | zuoqianfengxianggaowei" class="error-div"  style=" top:334px; left:362px">
+                <div v-if="zuoqianfengxianggaowei" class="error-div"  style=" top:334px; left:362px">
                   <div class="blingbling warn-marker" ></div>
                   <div class="warn-msg" style=" width: 126px;">
                     &nbsp;&nbsp;宸﹀墠椋庣涓嶅湪楂樹綅
                   </div>
                 </div>
-                <div v-if="true | zuoqianfengxiangdiwei" class="error-div"  style=" top:334px; left:362px">
+                <div v-if="zuoqianfengxiangdiwei" class="error-div"  style=" top:334px; left:362px">
                   <div class="blingbling warn-marker" ></div>
                   <div class="warn-msg" style=" width: 126px;">
                     &nbsp;&nbsp;宸﹀墠椋庣涓嶅湪浣庝綅
                   </div>
                 </div>
-                <div v-if="true | zuohoufengxianggaowei" class="error-div"  style=" top:309px; left:642px">
+                <div v-if="zuohoufengxianggaowei" class="error-div"  style=" top:309px; left:642px">
                   <div class="blingbling warn-marker" ></div>
                   <div class="warn-msg" style=" width: 126px;">
                     &nbsp;&nbsp;宸﹀悗椋庣涓嶅湪楂樹綅
                   </div>
                 </div>
-                <div v-if="true | zuohoufengxiangdiwei" class="error-div"  style=" top:309px; left:642px">
+                <div v-if="zuohoufengxiangdiwei" class="error-div"  style=" top:309px; left:642px">
                   <div class="blingbling warn-marker" ></div>
                   <div class="warn-msg" style=" width: 126px;">
                     &nbsp;&nbsp;宸﹀悗椋庣涓嶅湪浣庝綅
                   </div>
                 </div>
-                <div v-if="true | youqianfengxianggaowei" class="error-div"  style=" top:272px; left:300px">
+                <div v-if="youqianfengxianggaowei" class="error-div"  style=" top:272px; left:300px">
                   <div class="blingbling warn-marker" ></div>
                   <div class="warn-msg" style=" width: 126px;">
                     &nbsp;&nbsp;鍙冲墠椋庣涓嶅湪楂樹綅
                   </div>
                 </div>
-                <div v-if="true | youqianfengxiangdiwei" class="error-div"  style=" top:272px; left:300px">
+                <div v-if="youqianfengxiangdiwei" class="error-div"  style=" top:272px; left:300px">
                   <div class="blingbling warn-marker" ></div>
                   <div class="warn-msg" style=" width: 126px;">
                     &nbsp;&nbsp;鍙冲墠椋庣涓嶅湪浣庝綅
                   </div>
                 </div>
-                <div v-if="true | youhoufengxianggaowei" class="error-div"  style=" top:246px; left:506px">
+                <div v-if="youhoufengxianggaowei" class="error-div"  style=" top:246px; left:506px">
                   <div class="blingbling warn-marker" ></div>
                   <div class="warn-msg" style=" width: 126px;">
                     &nbsp;&nbsp;鍙冲悗椋庣涓嶅湪楂樹綅
                   </div>
                 </div>
-                <div v-if="true | youhoufengxiangdiwei" class="error-div"  style=" top:246px; left:506px">
+                <div v-if="youhoufengxiangdiwei" class="error-div"  style=" top:246px; left:506px">
                   <div class="blingbling warn-marker" ></div>
                   <div class="warn-msg" style=" width: 126px;">
                     &nbsp;&nbsp;鍙冲悗椋庣涓嶅湪浣庝綅
                   </div>
                 </div>
-                <div v-if="true | zuoqianguntongdiwei" class="error-div"  style=" top:175px; left:358px">
+                <div v-if="zuoqianguntongdiwei" class="error-div"  style=" top:175px; left:358px">
                   <div class="blingbling warn-marker" ></div>
                   <div class="warn-msg" style=" width: 126px;">
                     &nbsp;&nbsp;宸﹀墠婊氱瓛涓嶅湪浣庝綅
                   </div>
                 </div>
-                <div v-if="true | zuohouguntongdiwei" class="error-div"  style=" top:158px; left:643px">
+                <div v-if="zuohouguntongdiwei" class="error-div"  style=" top:158px; left:643px">
                   <div class="blingbling warn-marker" ></div>
                   <div class="warn-msg" style=" width: 126px;">
                     &nbsp;&nbsp;宸﹀悗婊氱瓛涓嶅湪浣庝綅
                   </div>
                 </div>
-                <div v-if="true | youqianguntongdiwei" class="error-div"  style=" top:150px; left:268px">
+                <div v-if="youqianguntongdiwei" class="error-div"  style=" top:150px; left:268px">
                   <div class="blingbling warn-marker" ></div>
                   <div class="warn-msg" style=" width: 126px;">
                     &nbsp;&nbsp;鍙冲墠婊氱瓛涓嶅湪浣庝綅
                   </div>
                 </div>
-                <div v-if="true | youhouguntongdiwei" class="error-div"  style=" top:135px; left:506px">
+                <div v-if="youhouguntongdiwei" class="error-div"  style=" top:135px; left:506px">
                   <div class="blingbling warn-marker" ></div>
                   <div class="warn-msg" style=" width: 126px;">
                     &nbsp;&nbsp;鍙冲悗婊氱瓛涓嶅湪浣庝綅
@@ -713,7 +713,7 @@
 	var progressBarChart: echarts.ECharts
 	var efficiencyLineChart: echarts.ECharts
 
-	var compareChart: echarts.ECharts
+	var compareChart : echarts.ECharts
 
   //----------------error----------------
   const shebeijiting = ref(false)
@@ -1826,6 +1826,9 @@
 						res.zhengqi = lastTrend.steam / (res.originWeight - lastTrend.weight)
 					}
 					res.zhengqi = Number(res.zhengqi)
+          if (res.zhengqi < 0) {
+            res.zhengqi = 0
+          }
 					//eqp.value.steamConsumption = Number(eqp.value.steamConsumption)
 					// res.zhengqi = eqp.value.steamConsumption - 3
 					// console.log(res);
@@ -1850,7 +1853,10 @@
 						res.dian = lastTrend.watt / (res.originWeight - lastTrend.weight)
 					}
 					// res.dian = eqp.value.powerConsumption - 1.5
-					res.dian = Number(res.dian) 
+					res.dian = Number(res.dian)
+          if (res.dian < 0) {
+            res.dian = 0
+          }
 					//eqp.value.powerConsumption = Number(eqp.value.powerConsumption)
 					if (res.dian > res.wattAvg) {
 						console.log("dian::", res.dian,res.wattAvg )
@@ -1950,17 +1956,112 @@
 					}
 					
 					res.isError = false
-					if (res.fault) {
-						res.isError = true
-						res.errorMsg = res.fault
-            console.log("errorMsg:",res.fault)
-					}
+          if (res.fault) {
+            res.isError = true
+            res.errorMsg = res.fault;
+            const faults = res.fault;
+            console.log('errorMsg:', res.fault)
+            if (faults.includes('鎬ュ仠鎶ヨ')) {
+              shebeijiting.value = true;
+            }
+            if (faults.includes('宸﹀墠鎬ュ仠')) {
+              zuoqianjiting.value = true;
+            }
+            if (faults.includes('闈㈡澘鎬ュ仠')) {
+              mianbanjiting.value = true;
+            }
+            if (faults.includes('鍑烘枡鎬ュ仠')) {
+              chuliaojiting.value = true;
+            }
+            if (faults.includes('娓╁害澶辨帶')) {
+              wendubaojing.value = true;
+            }
+            if (faults.includes('婊氱瓛鍗�')) {
+              guntongsheng.value = true;
+            }
+            if (faults.includes('婊氱瓛闄�')) {
+              guntongjiang.value = true;
+            }
+            if (faults.includes('婊氱瓛鐢垫満杩囨祦')) {
+              guntongguoliu.value = true;
+            }
+            if (faults.includes('椋庣鍗�')) {
+              fengxiangsheng.value = true;
+            }
+            if (faults.includes('椋庣闄�')) {
+              fengxiangjiang.value = true;
+            }
+            if (faults.includes('椋庣椋庢満杩囨祦')) {
+              fengjiguoliu.value = true;
+            }
+          }
 
-					if (res.warning) {
-						res.isWarning = true
-						res.warnMsg = res.warning
-            console.log("warnMsg:",res.warning)
-					}
+          if (res.warning) {
+            res.isWarning = true
+            res.warnMsg = res.warning
+            const warnings = res.warning;
+            console.log('warnMsg:', res.warning)
+            if (warnings.includes('宸﹀墠闂�')) {
+              zuoqianmen.value = true;
+            }
+            if (warnings.includes('鍙冲墠闂�')) {
+              youqianmen.value = true;
+            }
+            if (warnings.includes('宸﹀悗闂�')) {
+              zuohoumen.value = true;
+            }
+            if (warnings.includes('鍙冲悗闂�')) {
+              youhoumen.value = true;
+            }
+            if (warnings.includes('婊氱瓛涓嶅湪楂樹綅')) {
+              guntongbuzaigaowei.value = true;
+            }
+            if (warnings.includes('椋庣涓嶅湪浣庝綅')) {
+              fengxiangbuzaidiwei.value = true;
+            }
+            if (warnings.includes('椋庣涓嶅湪楂樹綅')) {
+              fengxiangbuzaigaowei.value = true;
+            }
+            if (warnings.includes('鍔犵儹浣嶄紶鎰熷櫒')) {
+              jiareweichuanganqi.value = true;
+            }
+            if (warnings.includes('宸﹀墠椋庣楂樹綅浼犳劅鍣�')) {
+              zuoqianfengxianggaowei.value = true;
+            }
+            if (warnings.includes('鍙冲墠椋庣楂樹綅浼犳劅鍣�')) {
+              youqianfengxianggaowei.value = true;
+            }
+            if (warnings.includes('宸﹀悗椋庣楂樹綅浼犳劅鍣�')) {
+              zuohoufengxianggaowei.value = true;
+            }
+            if (warnings.includes('鍙冲悗椋庣楂樹綅浼犳劅鍣�')) {
+              youhoufengxianggaowei.value = true;
+            }
+            if (warnings.includes('宸﹀墠椋庣浣庝綅浼犳劅鍣�')) {
+              zuoqianfengxiangdiwei.value = true;
+            }
+            if (warnings.includes('鍙冲墠椋庣浣庝綅浼犳劅鍣�')) {
+              youqianfengxiangdiwei.value = true;
+            }
+            if (warnings.includes('宸﹀悗椋庣浣庝綅浼犳劅鍣�')) {
+              zuohoufengxiangdiwei.value = true;
+            }
+            if (warnings.includes('鍙冲悗椋庣浣庝綅浼犳劅鍣�')) {
+              youhoufengxiangdiwei.value = true;
+            }
+            if (warnings.includes('宸﹀墠婊氱瓛浣庝綅浼犳劅鍣�')) {
+              zuoqianguntongdiwei.value = true;
+            }
+            if (warnings.includes('鍙冲墠婊氱瓛浣庝綅浼犳劅鍣�')) {
+              youqianguntongdiwei.value = true;
+            }
+            if (warnings.includes('宸﹀悗婊氱瓛浣庝綅浼犳劅鍣�')) {
+              zuohouguntongdiwei.value = true;
+            }
+            if (warnings.includes('鍙冲悗婊氱瓛浣庝綅浼犳劅鍣�')) {
+              youhouguntongdiwei.value = true;
+            }
+          }
 				} else {
 					res = {
 						mois: [],
diff --git a/src/views/dry/bigScreen/BigFault.vue b/src/views/dry/bigScreen/BigFault.vue
new file mode 100644
index 0000000..52fe7ba
--- /dev/null
+++ b/src/views/dry/bigScreen/BigFault.vue
@@ -0,0 +1,1372 @@
+<template>
+	<dv-full-screen-container>
+		<div class="eqpBox">
+			<div class="eqpRow">
+				<div class="eqpImage" :style="{ 'background-position': position + 'px' }">
+					<div class="leftEqp">
+						<dv-border-box7 class="leftTop">
+							<div class="leftTop0">
+                <div style="padding-top: 20px; padding-left: 10px" @click="back">
+                  <Icon style="color: powderblue" icon="ion:caret-back-sharp" :size="35" />
+                </div>
+
+								<div class="leftTop1">
+
+									<Icon icon="emojione:hourglass-with-flowing-sand" :size="50" />
+									<div>
+										<div class="mainInfo">{{ realData?.totalRemain | 0 }} Min</div>
+										<div class="subhead">鍓╀綑鏃堕棿</div>
+									</div>
+								</div>
+								<div class="leftTop1">
+									<Icon icon="bi:fan" :size="50" />
+									<div>
+										<div class="mainInfo">{{ realData?.trendVo?.fanFrequency | 0 }} Hz</div>
+										<div class="subhead">椋庢満棰戠巼</div>
+									</div>
+								</div>
+								<div class="leftTop3" :style="{ 'background-image': 'url(' + getStatusImageUrl(statusGif) + ')' }"></div>
+								<div class="outDiv eqpStatus">
+									<div
+										style="
+											font-size: 28px;
+
+											color: white;
+											background-color: #1595ea;
+											height: 60px;
+											width: 180px;
+											line-height: 60px;
+											text-align: center;
+											border-radius: 10px;
+											font-weight: bold;
+										"
+									>
+										{{ statusTxt }}
+									</div>
+								</div>
+							</div>
+							<div style="width: 1200px; height: 798px; position: absolute">
+								<div v-if="zuoqianjiting" class="error-div" style="top: 466px; left: 589px">
+									<div class="blingbling error-marker"></div>
+									<div class="error-msg" style="width: 70px"> &nbsp;&nbsp;宸﹀墠鎬ュ仠 </div>
+								</div>
+								<div v-if="shebeijiting" class="error-div" style="top: 170px; left: 702px">
+									<div class="blingbling error-marker"></div>
+									<div class="error-msg" style="width: 106px"> &nbsp;&nbsp;璁惧鎬ュ仠锛堟�伙級 </div>
+								</div>
+								<div v-if="chuliaojiting" class="error-div" style="top: 450px; left: 158px">
+									<div class="blingbling error-marker"></div>
+									<div class="error-msg" style="width: 70px"> &nbsp;&nbsp;鍑烘枡鎬ュ仠 </div>
+								</div>
+								<div v-if="mianbanjiting" class="error-div" style="top: 398px; left: 978px">
+									<div class="blingbling error-marker"></div>
+									<div class="error-msg" style="width: 70px"> &nbsp;&nbsp;闈㈡澘鎬ュ仠 </div>
+								</div>
+								<div v-if="fengxiangsheng" class="error-div" style="top: 476px; left: 753px">
+									<div class="blingbling error-marker"></div>
+									<div class="error-msg" style="width: 86px"> &nbsp;&nbsp;椋庣鍗囧紓甯� </div>
+								</div>
+								<div v-if="fengxiangjiang" class="error-div" style="top: 502px; left: 753px">
+									<div class="blingbling error-marker"></div>
+									<div class="error-msg" style="width: 86px"> &nbsp;&nbsp;椋庣闄嶅紓甯� </div>
+								</div>
+								<div v-if="fengjiguoliu" class="error-div" style="top: 510px; left: 975px">
+									<div class="blingbling error-marker"></div>
+									<div class="error-msg" style="width: 70px"> &nbsp;&nbsp;椋庢満杩囨祦 </div>
+								</div>
+								<div v-if="guntongsheng" class="error-div" style="top: 331px; left: 753px">
+									<div class="blingbling error-marker"></div>
+									<div class="error-msg" style="width: 86px"> &nbsp;&nbsp;婊氱瓛鍗囧紓甯� </div>
+								</div>
+								<div v-if="guntongjiang" class="error-div" style="top: 356px; left: 753px">
+									<div class="blingbling error-marker"></div>
+									<div class="error-msg" style="width: 86px"> &nbsp;&nbsp;婊氱瓛闄嶅紓甯� </div>
+								</div>
+								<div v-if="guntongguoliu" class="error-div" style="top: 324px; left: 916px">
+									<div class="blingbling error-marker"></div>
+									<div class="error-msg" style="width: 70px"> &nbsp;&nbsp;婊氱瓛杩囨祦 </div>
+								</div>
+								<div v-if="wendubaojing" class="error-div" style="top: 373px; left: 978px">
+									<div class="blingbling error-marker"></div>
+									<div class="error-msg" style="width: 70px"> &nbsp;&nbsp;娓╁害鎶ヨ </div>
+								</div>
+
+								<div v-if="zuoqianmen" class="error-div" style="top: 595px; left: 591px">
+									<div class="blingbling warn-marker"></div>
+									<div class="warn-msg" style="width: 80px"> &nbsp;&nbsp;宸﹀墠闂ㄦ姤璀� </div>
+								</div>
+								<div v-if="zuohoumen" class="error-div" style="top: 565px; left: 868px">
+									<div class="blingbling warn-marker"></div>
+									<div class="warn-msg" style="width: 80px"> &nbsp;&nbsp;宸﹀悗闂ㄦ姤璀� </div>
+								</div>
+								<div v-if="youqianmen" class="error-div" style="top: 593px; left: 396px">
+									<div class="blingbling warn-marker"></div>
+									<div class="warn-msg" style="width: 80px"> &nbsp;&nbsp;鍙冲墠闂ㄦ姤璀� </div>
+								</div>
+								<div v-if="youhoumen" class="error-div" style="top: 565px; left: 697px">
+									<div class="blingbling warn-marker"></div>
+									<div class="warn-msg" style="width: 80px"> &nbsp;&nbsp;鍙冲悗闂ㄦ姤璀� </div>
+								</div>
+
+								<div v-if="guntongbuzaigaowei" class="error-div" style="top: 304px; left: 753px">
+									<div class="blingbling warn-marker"></div>
+									<div class="warn-msg" style="width: 100px"> &nbsp;&nbsp;婊氱瓛涓嶅湪楂樹綅 </div>
+								</div>
+								<div v-if="fengxiangbuzaigaowei" class="error-div" style="top: 451px; left: 753px">
+									<div class="blingbling warn-marker"></div>
+									<div class="warn-msg" style="width: 100px"> &nbsp;&nbsp;椋庣涓嶅湪楂樹綅 </div>
+								</div>
+								<div v-if="fengxiangbuzaidiwei" class="error-div" style="top: 528px; left: 753px">
+									<div class="blingbling warn-marker"></div>
+									<div class="warn-msg" style="width: 100px"> &nbsp;&nbsp;椋庣涓嶅湪浣庝綅 </div>
+								</div>
+								<div v-if="jiareweichuanganqi" class="error-div" style="top: 433px; left: 904px">
+									<div class="blingbling warn-marker"></div>
+									<div class="warn-msg" style="width: 126px"> &nbsp;&nbsp;鍔犵儹浣嶄紶鎰熷櫒鎶ヨ </div>
+								</div>
+								<div v-if="zuoqianfengxianggaowei" class="error-div" style="top: 502px; left: 535px">
+									<div class="blingbling warn-marker"></div>
+									<div class="warn-msg" style="width: 126px"> &nbsp;&nbsp;宸﹀墠椋庣涓嶅湪楂樹綅 </div>
+								</div>
+								<div v-if="zuoqianfengxiangdiwei" class="error-div" style="top: 528px; left: 535px">
+									<div class="blingbling warn-marker"></div>
+									<div class="warn-msg" style="width: 126px"> &nbsp;&nbsp;宸﹀墠椋庣涓嶅湪浣庝綅 </div>
+								</div>
+								<div v-if="zuohoufengxianggaowei" class="error-div" style="top: 459px; left: 904px">
+									<div class="blingbling warn-marker"></div>
+									<div class="warn-msg" style="width: 126px"> &nbsp;&nbsp;宸﹀悗椋庣涓嶅湪楂樹綅 </div>
+								</div>
+								<div v-if="zuohoufengxiangdiwei" class="error-div" style="top: 484px; left: 904px">
+									<div class="blingbling warn-marker"></div>
+									<div class="warn-msg" style="width: 126px"> &nbsp;&nbsp;宸﹀悗椋庣涓嶅湪浣庝綅 </div>
+								</div>
+								<div v-if="youqianfengxianggaowei" class="error-div" style="top: 447px; left: 420px">
+									<div class="blingbling warn-marker"></div>
+									<div class="warn-msg" style="width: 126px"> &nbsp;&nbsp;鍙冲墠椋庣涓嶅湪楂樹綅 </div>
+								</div>
+								<div v-if="youqianfengxiangdiwei" class="error-div" style="top: 473px; left: 420px">
+									<div class="blingbling warn-marker"></div>
+									<div class="warn-msg" style="width: 126px"> &nbsp;&nbsp;鍙冲墠椋庣涓嶅湪浣庝綅 </div>
+								</div>
+								<div v-if="youhoufengxianggaowei" class="error-div" style="top: 383px; left: 805px">
+									<div class="blingbling warn-marker"></div>
+									<div class="warn-msg" style="width: 126px"> &nbsp;&nbsp;鍙冲悗椋庣涓嶅湪楂樹綅 </div>
+								</div>
+								<div v-if="youhoufengxiangdiwei" class="error-div" style="top: 408px; left: 805px">
+									<div class="blingbling warn-marker"></div>
+									<div class="warn-msg" style="width: 126px"> &nbsp;&nbsp;鍙冲悗椋庣涓嶅湪浣庝綅 </div>
+								</div>
+								<div v-if="zuoqianguntongdiwei" class="error-div" style="top: 343px; left: 530px">
+									<div class="blingbling warn-marker"></div>
+									<div class="warn-msg" style="width: 126px"> &nbsp;&nbsp;宸﹀墠婊氱瓛涓嶅湪浣庝綅 </div>
+								</div>
+								<div v-if="zuohouguntongdiwei" class="error-div" style="top: 296px; left: 916px">
+									<div class="blingbling warn-marker"></div>
+									<div class="warn-msg" style="width: 126px"> &nbsp;&nbsp;宸﹀悗婊氱瓛涓嶅湪浣庝綅 </div>
+								</div>
+								<div v-if="youqianguntongdiwei" class="error-div" style="top: 316px; left: 419px">
+									<div class="blingbling warn-marker"></div>
+									<div class="warn-msg" style="width: 126px"> &nbsp;&nbsp;鍙冲墠婊氱瓛涓嶅湪浣庝綅 </div>
+								</div>
+								<div v-if="youhouguntongdiwei" class="error-div" style="top: 270px; left: 797px">
+									<div class="blingbling warn-marker"></div>
+									<div class="warn-msg" style="width: 126px"> &nbsp;&nbsp;鍙冲悗婊氱瓛涓嶅湪浣庝綅 </div>
+								</div>
+							</div>
+						</dv-border-box7>
+					</div>
+					<div class="rightInfo">
+						<div class="rightTop">
+							<dv-border-box7 class="tempMoisChart">
+								<a-row>
+									<a-col :span="7">鏁呴殰鍚嶇О</a-col>
+									<a-col :span="7">寮�濮嬫椂闂�</a-col>
+									<a-col :span="7">缁撴潫鏃堕棿</a-col>
+									<a-col :span="3">鎸佺画鏃堕暱</a-col>
+								</a-row>
+								<div ref="scrollContainer" class="scroll-container">
+									<a-row v-for="item in faultList" :key="item.id">
+										<a-col :span="7">{{ item.faultName }}</a-col>
+										<a-col :span="7">{{ item.startTime }}</a-col>
+										<a-col :span="7">{{ item.endTime }}</a-col>
+										<a-col :span="3">{{ item.totalTime }}</a-col>
+									</a-row>
+								</div>
+							</dv-border-box7>
+						</div>
+						<div class="rightTwo">
+							<dv-border-box7 class="infoChart">
+								<div class="chartTittle"> 鏁呴殰鏃堕暱缁熻 </div>
+								<!--								<div class="outDiv" style="padding-top: 20px">-->
+								<!--                  -->
+								<!--                </div>-->
+								<div :id="'chartDom'" style="width: 340px; height: 280px"></div>
+							</dv-border-box7>
+
+							<dv-border-box7 class="infoChart">
+								<div class="chartTittle">鏁呴殰娆℃暟绾� </div>
+								<div :id="'chartDom2'" style="width: 340px; height: 280px"></div>
+							</dv-border-box7>
+							<dv-border-box7 class="infoChart">
+								<div class="chartTittle">璀﹀憡鏃堕暱缁熻</div>
+								<div :id="'chartDom3'" style="width: 340px; height: 280px"></div>
+							</dv-border-box7>
+							<dv-border-box7 class="infoChart">
+								<div class="chartTittle">
+									<div> 璀﹀憡娆℃暟缁熻</div>
+								</div>
+								<div :id="'chartDom4'" style="width: 340px; height: 280px"></div>
+							</dv-border-box7>
+						</div>
+					</div>
+				</div>
+			</div>
+		</div>
+	</dv-full-screen-container>
+</template>
+
+<script setup lang="ts">
+	import { useFullscreen } from '@vueuse/core'
+	import { BorderBox7 as DvBorderBox7 } from '@kjgl77/datav-vue3'
+	import { router } from '/@/router'
+	import { onMounted, ref, onUnmounted } from 'vue'
+	import { Progress } from 'ant-design-vue'
+	import * as echarts from 'echarts'
+	import 'echarts-liquidfill'
+	import { Icon, IconPicker, SvgIcon } from '/@/components/Icon/index'
+	import { defHttp } from '/@/utils/http/axios'
+	import { queryById, listAll } from '../api/DryEquipment.api'
+	import { queryByOrderId } from '../dryFaultRecord/DryFaultRecord.api'
+	import { dryEquipment } from '../dataDefine/DryEquipment.data'
+	import { useUserStore } from '/@/store/modules/user'
+  import { getTenantId, getToken } from '/@/utils/auth'
+	const domRef = ref<Nullable<HTMLElement>>(null)
+	const { enter, toggle, exit, isFullscreen } = useFullscreen()
+
+	const { toggle: toggleDom } = useFullscreen(domRef)
+	const Timer = ref()
+	const Timer2 = ref()
+	const scrollContainer = ref(null)
+	let scrollInterval = null
+	const isScrolling = ref(false) // 鎺у埗鏄惁姝e湪婊氬姩浠ラ槻姝㈤噸澶嶈Е鍙�
+	const eqps = ref([] as dryEquipment[])
+	console.log(`output->router.currentRoute.value.params.num `, router.currentRoute.value.query)
+	const eqp = ref({} as dryEquipment)
+	const eqpNum = ref(router.currentRoute.value.query.num || 1)
+	const userStore = useUserStore()
+	const realData = ref({
+		code: 0,
+	})
+
+	const position = ref(1)
+	//realData.value.tempValue = [0, 100]
+	realData.value.mois = [0.5, 0.35, 0.2]
+	statusGif = 'tmrefeng2'
+	realData.value.herbImage = 'yaocai1.png'
+  // const faultConst = ['鎬ュ仠鎶ヨ','宸﹀墠鎬ュ仠','闈㈡澘鎬ュ仠','鍑烘枡鎬ュ仠','娓╁害澶辨帶','婊氱瓛鍗�','婊氱瓛闄�','婊氱瓛鐢垫満杩囨祦','椋庣鍗�','椋庣闄�','椋庣椋庢満杩囨祦']
+  // const warningConst = ['宸﹀墠闂�','鍙冲墠闂�','宸﹀悗闂�','鍙冲悗闂�','婊氱瓛涓嶅湪楂樹綅','椋庣涓嶅湪浣庝綅','椋庣涓嶅湪楂樹綅','鍔犵儹浣嶄紶鎰熷櫒','宸﹀墠椋庣楂樹綅浼犳劅鍣�','鍙冲墠椋庣楂樹綅浼犳劅鍣�','宸﹀悗椋庣楂樹綅浼犳劅鍣�','鍙冲悗椋庣楂樹綅浼犳劅鍣�','宸﹀墠椋庣浣庝綅浼犳劅鍣�','鍙冲墠椋庣浣庝綅浼犳劅鍣�','宸﹀悗椋庣浣庝綅浼犳劅鍣�','鍙冲悗椋庣浣庝綅浼犳劅鍣�','宸﹀墠婊氱瓛浣庝綅浼犳劅鍣�','鍙冲墠婊氱瓛浣庝綅浼犳劅鍣�','宸﹀悗婊氱瓛浣庝綅浼犳劅鍣�','鍙冲悗婊氱瓛浣庝綅浼犳劅鍣�']
+
+	//----------------error----------------
+	const shebeijiting = ref(false)
+	const chuliaojiting = ref(false)
+	const zuoqianjiting = ref(false)
+	const mianbanjiting = ref(false)
+	const fengxiangsheng = ref(false)
+	const fengxiangjiang = ref(false)
+	const fengjiguoliu = ref(false)
+	const guntongsheng = ref(false)
+	const guntongjiang = ref(false)
+	const guntongguoliu = ref(false)
+	const wendubaojing = ref(false)
+	//--------------warning------------
+	const zuoqianmen = ref(false)
+	const zuohoumen = ref(false)
+	const youqianmen = ref(false)
+	const youhoumen = ref(false)
+	const guntongbuzaigaowei = ref(false)
+	const fengxiangbuzaigaowei = ref(false)
+	const fengxiangbuzaidiwei = ref(false)
+	const jiareweichuanganqi = ref(false)
+	const zuoqianfengxianggaowei = ref(false)
+	const zuohoufengxianggaowei = ref(false)
+	const youqianfengxianggaowei = ref(false)
+	const youhoufengxianggaowei = ref(false)
+	const zuoqianfengxiangdiwei = ref(false)
+	const zuohoufengxiangdiwei = ref(false)
+	const youqianfengxiangdiwei = ref(false)
+	const youhoufengxiangdiwei = ref(false)
+	const zuoqianguntongdiwei = ref(false)
+	const zuohouguntongdiwei = ref(false)
+	const youqianguntongdiwei = ref(false)
+	const youhouguntongdiwei = ref(false)
+
+	const faultList = ref([])
+	var chart1: echarts.ECharts
+	var chart2: echarts.ECharts
+	var chart3: echarts.ECharts
+	var chart4: echarts.ECharts
+	// 鍔ㄦ�佽鍙栧浘鐗�
+	function getHerbImageUrl(name: string) {
+		return new URL(`/src/assets/images/dry/yaocai/${name}`, import.meta.url).href
+	}
+
+	// 鍔ㄦ�佽鍙栧浘鐗�
+	function getStatusImageUrl(name: string) {
+		if (name == 'zanting') {
+			return new URL(`/src/assets/images/dry/${name}.png`, import.meta.url).href
+		} else {
+			return new URL(`/src/assets/images/dry/${name}.gif`, import.meta.url).href
+		}
+	}
+	function queryEqp() {
+		queryById({ id: router.currentRoute.value.params.id }).then((res) => {
+			// console.log(`output->res`, res)
+			eqp.value = res
+			eqp.value.dryEfficiency = res.dryEfficiency
+			eqp.value.steamConsumption = res.steamConsumption
+			eqp.value.powerConsumption = res.powerConsumption
+			queryRealTime()
+		})
+	}
+
+	function listAllEqp() {
+		listAll({ enable: 'Y' })
+			.then((result) => {
+				//console.log(`output->result`, result)
+				eqps.value = result
+				// result.forEach((item) => {
+				// 	eqpCodes.push(item.code)
+				// })
+				queryRealTime()
+			})
+			.catch((err) => {
+				//console.log(`output->err`, err)
+			})
+	}
+
+	function initCharts() {
+		let chartDom1: HTMLElement = document.getElementById('chartDom') as HTMLElement
+		let chartDom2: HTMLElement = document.getElementById('chartDom2') as HTMLElement
+		let chartDom3: HTMLElement = document.getElementById('chartDom3') as HTMLElement
+		let chartDom4: HTMLElement = document.getElementById('chartDom4') as HTMLElement
+
+		chart1 = echarts.init(chartDom1)
+		chart2 = echarts.init(chartDom2)
+		chart3 = echarts.init(chartDom3)
+		chart4 = echarts.init(chartDom4)
+
+		const option2 = {
+			grid: {
+				left: '13%', // 宸﹁竟璺濓紝涔熷彲浠ユ槸鍏蜂綋鐨勫儚绱犲�硷紝渚嬪 50
+				right: '6%', // 鍙宠竟璺�
+				top: '13%', // 涓婅竟璺�
+				bottom: '35%', // 璁剧疆涓嬭竟璺濓紝渚嬪杩欓噷璁剧疆涓�15%
+			},
+			xAxis: {
+				type: 'category',
+				data: [],
+				axisLabel: {
+					rotate: 55, // 杩欓噷璁剧疆鏃嬭浆鐨勮搴︼紝姝e�艰〃绀洪『鏃堕拡鏃嬭浆
+					interval: 0, // 寮哄埗鏄剧ず鎵�鏈夋爣绛撅紝涓嶈繘琛岄棿闅旀樉绀�
+					color: '#fff', // 璁剧疆X杞存爣绛惧瓧浣撻鑹�
+				},
+			},
+			yAxis: {
+				type: 'value',
+				axisLabel: {
+					color: '#fff', // 璁剧疆Y杞存爣绛惧瓧浣撻鑹�
+				},
+				splitLine: { show: false }, // 涓嶆樉绀篩杞村垎鍓茬嚎锛堢綉鏍肩嚎锛�
+			},
+			series: [
+				{
+					data: [],
+					type: 'bar',
+					itemStyle: {
+						color: '#3398DB', // 鎸囧畾鏌卞瓙鐨勯鑹�
+					},
+				},
+			],
+		}
+		const option1 = {
+			tooltip: {
+				trigger: 'item',
+			},
+
+			series: [
+				{
+					data: [],
+					type: 'pie',
+					radius: '50%',
+					emphasis: {
+						itemStyle: {
+							shadowBlur: 10,
+							shadowOffsetX: 0,
+							shadowColor: 'rgba(0, 0, 0, 0.5)',
+						},
+					},
+					label: {
+						show: true, // 鏄剧ず鏍囩
+						//position: 'outside', // 鏍囩鐨勪綅缃紝鍙互鏄� 'outside', 'inside', 'center'
+						//formatter: '{b}: {c} ({d}%)', // 鏍囩鍐呭鏍煎紡鍖栧嚱鏁版垨瀛楃涓叉ā鏉�
+						fontSize: 12, // 璁剧疆瀛椾綋澶у皬
+						// fontWeight: 'bold', // 璁剧疆瀛椾綋绮楃粏
+						color: '#fff', // 璁剧疆瀛椾綋棰滆壊
+					},
+				},
+			],
+		}
+		const option4 = {
+			grid: {
+				left: '13%', // 宸﹁竟璺濓紝涔熷彲浠ユ槸鍏蜂綋鐨勫儚绱犲�硷紝渚嬪 50
+				right: '6%', // 鍙宠竟璺�
+				top: '13%', // 涓婅竟璺�
+				bottom: '35%', // 璁剧疆涓嬭竟璺濓紝渚嬪杩欓噷璁剧疆涓�15%
+			},
+			xAxis: {
+				type: 'category',
+				data: [],
+				axisLabel: {
+					rotate: 55, // 杩欓噷璁剧疆鏃嬭浆鐨勮搴︼紝姝e�艰〃绀洪『鏃堕拡鏃嬭浆
+					interval: 0, // 寮哄埗鏄剧ず鎵�鏈夋爣绛撅紝涓嶈繘琛岄棿闅旀樉绀�
+					color: '#fff', // 璁剧疆X杞存爣绛惧瓧浣撻鑹�
+				},
+			},
+			yAxis: {
+				type: 'value',
+				axisLabel: {
+					color: '#fff', // 璁剧疆Y杞存爣绛惧瓧浣撻鑹�
+				},
+				splitLine: { show: false }, // 涓嶆樉绀篩杞村垎鍓茬嚎锛堢綉鏍肩嚎锛�
+			},
+			series: [
+				{
+					data: [],
+					type: 'bar',
+					itemStyle: {
+						color: '#3398DB', // 鎸囧畾鏌卞瓙鐨勯鑹�
+					},
+				},
+			],
+		}
+		const option3 = {
+			tooltip: {
+				trigger: 'item',
+			},
+
+			series: [
+				{
+					data: [],
+					type: 'pie',
+					radius: '50%',
+					emphasis: {
+						itemStyle: {
+							shadowBlur: 10,
+							shadowOffsetX: 0,
+							shadowColor: 'rgba(0, 0, 0, 0.5)',
+						},
+					},
+					label: {
+						show: true, // 鏄剧ず鏍囩
+						//position: 'outside', // 鏍囩鐨勪綅缃紝鍙互鏄� 'outside', 'inside', 'center'
+						//formatter: '{b}: {c} ({d}%)', // 鏍囩鍐呭鏍煎紡鍖栧嚱鏁版垨瀛楃涓叉ā鏉�
+						fontSize: 12, // 璁剧疆瀛椾綋澶у皬
+						//fontWeight: 'bold', // 璁剧疆瀛椾綋绮楃粏
+						color: '#fff', // 璁剧疆瀛椾綋棰滆壊
+					},
+				},
+			],
+		}
+
+		option1 && chart1.setOption(option1)
+		option2 && chart2.setOption(option2)
+		option3 && chart3.setOption(option3)
+		option4 && chart4.setOption(option4)
+	}
+
+	var shangliaoFlag = false
+	var statusGif = 'tmrefeng2'
+	var statusTxt = '姝e湪骞茬嚗'
+
+	function chaiwangban() {
+		statusGif = 'chaiwangban-1'
+		setTimeout(shangliao, 7000)
+	}
+
+	function shangliao() {
+		statusGif = 'shangliao-N'
+		setTimeout(() => {
+			statusGif = 'zhuangwangban'
+			setTimeout(() => {
+				statusGif = 'guanmen1'
+				setTimeout(() => {
+					shangliaoFlag = false
+				}, 4000)
+			}, 7000)
+		}, 15000)
+	}
+  function back() {
+    router.back()
+  }
+	/**
+	 * 鏌ヨ瀹炴椂鏁版嵁
+	 */
+	function queryRealTime() {
+		if (eqp.value) {
+			eqp.value = eqps.value[eqpNum.value]
+			// console.log("888",eqp.value);
+      let tenantId = getTenantId()
+			let eqpCode = eqp.value.code
+			let queryRealTimeUrl = '/dry/real/getRealTimeData'
+			defHttp.get({ url: queryRealTimeUrl, params: { tenantid: tenantId, machineid: eqpCode } }).then((res) => {
+				if (res && res.trendVo) {
+					console.log(`output->re11s`, res)
+					var totalTime = 0
+
+					/**姘存淮鍥惧惈姘撮噺 */
+					res.mois = [
+						(res.trendVo.moisture / 100).toFixed(2),
+						(res.trendVo.moisture / 100 / 1.5).toFixed(2),
+						(res.trendVo.moisture / 100 / 3).toFixed(2),
+					]
+
+					/**鐘舵��/gif鍔ㄥ浘 */
+					if (!shangliaoFlag) {
+						if (res.orderStatus == 0) {
+							statusGif = 'zanting'
+							statusTxt = '鍑嗗'
+						} else if (res.orderStatus == 1) {
+							shangliaoFlag = true
+							statusGif = 'kaimen1'
+							statusTxt = '涓婃枡'
+							setTimeout(chaiwangban, 4000)
+						} else if (res.orderStatus == 2) {
+							// statusTxt = res.level
+							// statusGif = 'zanting'
+							// if (res.level === '鍑嗗闃舵') {
+							// 	console.log("鍑嗗闃舵" + statusGif);
+							// 	statusGif = 'zanting'
+							// } else if (res.level === '骞茬嚗闃舵' || res.level === '姝e湪骞茬嚗') {
+							// 	statusGif = 'tmrefeng2'
+							// } else if (res.level === '缈绘枡闃舵') {
+							// 	statusGif = 'fanliao-N'
+							// } else if (res.level === '鍑烘枡闃舵') {
+							// 	statusGif = 'chuliao-N'
+							// }
+
+							// if (res.state_fan == 1) {
+							statusGif = 'tmrefeng2'
+							statusTxt = '姝e湪骞茬嚗'
+							// }
+
+							// if (res.state_roller == 4) {
+							// 	statusGif = 'fanliao-N'
+							// 	statusTxt = '姝e湪缈绘枡'
+							// }
+
+							// if (res.state_roller == 5) {
+							// 	statusGif = 'chuliao-N'
+							// 	statusTxt = '姝e湪鍑烘枡'
+							// }
+
+							// if (res.state_windbox == 2 || res.state_windbox == 3) {
+							// 	statusGif = 'fengxiangsheng-1'
+							// 	statusTxt = '姝e湪骞茬嚗'
+							// }
+						} else if (res.orderStatus == 3) {
+							statusGif = 'zanting'
+							statusTxt = '鏆傚仠'
+						} else if (res.orderStatus == 4) {
+							statusGif = 'zanting'
+							statusTxt = '骞茬嚗瀹屾垚'
+						}
+					}
+					res.herbImage = 'yaocai1.png'
+
+					if (res.herbName == '鐧借姳铔囪垖鑽�') {
+						res.herbImage = 'baihuasheshecao.png'
+					} else if (res.herbName == '绯ョɑ鏍�') {
+						res.herbImage = 'nuodaogen.png'
+					} else if (res.herbName == '娣緤钘�') {
+						res.herbImage = 'yinyanghuo.png'
+					} else if (res.herbName == '椹娇鑻�') {
+						res.herbImage = 'machixian.png'
+					} else if (res.herbName == '澧ㄦ棻鑾�') {
+						res.herbImage = 'mohanlian.png'
+					} else if (res.herbName == '妗戠櫧鐨�') {
+						res.herbImage = 'sangbaipi.png'
+					}
+
+					res.isError = false
+					if (res.fault) {
+						res.isError = true
+						res.errorMsg = res.fault
+            const faults = res.fault;
+						console.log('errorMsg:', res.fault)
+            if (faults.includes('鎬ュ仠鎶ヨ')) {
+              shebeijiting.value = true;
+            }
+            if (faults.includes('宸﹀墠鎬ュ仠')) {
+              zuoqianjiting.value = true;
+            }
+            if (faults.includes('闈㈡澘鎬ュ仠')) {
+              mianbanjiting.value = true;
+            }
+            if (faults.includes('鍑烘枡鎬ュ仠')) {
+              chuliaojiting.value = true;
+            }
+            if (faults.includes('娓╁害澶辨帶')) {
+              wendubaojing.value = true;
+            }
+            if (faults.includes('婊氱瓛鍗�')) {
+              guntongsheng.value = true;
+            }
+            if (faults.includes('婊氱瓛闄�')) {
+              guntongjiang.value = true;
+            }
+            if (faults.includes('婊氱瓛鐢垫満杩囨祦')) {
+              guntongguoliu.value = true;
+            }
+            if (faults.includes('椋庣鍗�')) {
+              fengxiangsheng.value = true;
+            }
+            if (faults.includes('椋庣闄�')) {
+              fengxiangjiang.value = true;
+            }
+            if (faults.includes('椋庣椋庢満杩囨祦')) {
+              fengjiguoliu.value = true;
+            }
+					}
+
+					if (res.warning) {
+						res.isWarning = true
+						res.warnMsg = res.warning
+            const warnings = res.warning;
+						console.log('warnMsg:', res.warning)
+            if (warnings.includes('宸﹀墠闂�')) {
+              zuoqianmen.value = true;
+            }
+            if (warnings.includes('鍙冲墠闂�')) {
+              youqianmen.value = true;
+            }
+            if (warnings.includes('宸﹀悗闂�')) {
+              zuohoumen.value = true;
+            }
+            if (warnings.includes('鍙冲悗闂�')) {
+              youhoumen.value = true;
+            }
+            if (warnings.includes('婊氱瓛涓嶅湪楂樹綅')) {
+              guntongbuzaigaowei.value = true;
+            }
+            if (warnings.includes('椋庣涓嶅湪浣庝綅')) {
+              fengxiangbuzaidiwei.value = true;
+            }
+            if (warnings.includes('椋庣涓嶅湪楂樹綅')) {
+              fengxiangbuzaigaowei.value = true;
+            }
+            if (warnings.includes('鍔犵儹浣嶄紶鎰熷櫒')) {
+              jiareweichuanganqi.value = true;
+            }
+            if (warnings.includes('宸﹀墠椋庣楂樹綅浼犳劅鍣�')) {
+              zuoqianfengxianggaowei.value = true;
+            }
+            if (warnings.includes('鍙冲墠椋庣楂樹綅浼犳劅鍣�')) {
+              youqianfengxianggaowei.value = true;
+            }
+            if (warnings.includes('宸﹀悗椋庣楂樹綅浼犳劅鍣�')) {
+              zuohoufengxianggaowei.value = true;
+            }
+            if (warnings.includes('鍙冲悗椋庣楂樹綅浼犳劅鍣�')) {
+              youhoufengxianggaowei.value = true;
+            }
+            if (warnings.includes('宸﹀墠椋庣浣庝綅浼犳劅鍣�')) {
+              zuoqianfengxiangdiwei.value = true;
+            }
+            if (warnings.includes('鍙冲墠椋庣浣庝綅浼犳劅鍣�')) {
+              youqianfengxiangdiwei.value = true;
+            }
+            if (warnings.includes('宸﹀悗椋庣浣庝綅浼犳劅鍣�')) {
+              zuohoufengxiangdiwei.value = true;
+            }
+            if (warnings.includes('鍙冲悗椋庣浣庝綅浼犳劅鍣�')) {
+              youhoufengxiangdiwei.value = true;
+            }
+            if (warnings.includes('宸﹀墠婊氱瓛浣庝綅浼犳劅鍣�')) {
+              zuoqianguntongdiwei.value = true;
+            }
+            if (warnings.includes('鍙冲墠婊氱瓛浣庝綅浼犳劅鍣�')) {
+              youqianguntongdiwei.value = true;
+            }
+            if (warnings.includes('宸﹀悗婊氱瓛浣庝綅浼犳劅鍣�')) {
+              zuohouguntongdiwei.value = true;
+            }
+            if (warnings.includes('鍙冲悗婊氱瓛浣庝綅浼犳劅鍣�')) {
+              youhouguntongdiwei.value = true;
+            }
+					}
+          getRealFault()
+				} else {
+					res = {
+						mois: [],
+						gif: 'tmrefeng2',
+						herbImage: 'yaocai1.png',
+					}
+				}
+
+				res.totalRemain = res.remain - (res.dryTime - totalTime) > 0 ? res.remain - (res.dryTime - totalTime) : 0
+				// console.log(`output->res`, res.detailList[res.detailList.length-1])
+				realData.value = res
+
+			})
+		}
+	}
+
+	/**
+	 * 鏌ヨ褰撳墠宸ュ崟鏁呴殰鏄庣粏
+	 */
+	function getRealFault() {
+		return new Promise(() => {
+      let tenantId = getTenantId()
+			queryByOrderId({ orderId: realData.value.code, tenantId: tenantId }).then((res) => {
+				const faultStats = {}
+				const warningStats = {}
+				// 寰幆鍒楄〃锛屾牴鎹粨鏉熸椂闂村拰寮�濮嬫椂闂达紝璁$畻鏁呴殰鏃堕暱
+				res.forEach((item) => {
+					const faultName = item.faultName
+					item.totalTime = new Date(item.endTime) - new Date(item.startTime)
+					item.totalTime = item.totalTime / 1000
+
+					if (item.faultType === 1) {
+						if (!faultStats[faultName]) {
+							faultStats[faultName] = {
+								count: 0,
+								totalDuration: 0, // 姣
+							}
+						}
+						// 鏇存柊缁熻鏁版嵁
+						faultStats[faultName].count += 1
+						faultStats[faultName].totalDuration += item.totalTime
+					} else if (item.faultType === 2) {
+						if (!warningStats[faultName]) {
+							warningStats[faultName] = {
+								count: 0,
+								totalDuration: 0, // 姣
+							}
+						}
+						// 鏇存柊缁熻鏁版嵁
+						warningStats[faultName].count += 1
+						warningStats[faultName].totalDuration += item.totalTime
+					}
+				})
+				console.log(`output->res`, res)
+				faultList.value = res
+				const prepareFault = prepareData(faultStats)
+				const prepareWarning = prepareData(warningStats)
+				console.log('prePareFault', prepareFault)
+				console.log('prePareWarning', prepareWarning)
+				chart1.setOption({
+
+					series: [{ data: prepareFault.duration }],
+				})
+				chart2.setOption({
+          xAxis: { data: prepareFault.faultNames },
+					series: [{ data: prepareFault.count }],
+				})
+				chart3.setOption({
+					series: [{ data: prepareWarning.duration }],
+				})
+				chart4.setOption({
+          xAxis: { data: prepareWarning.faultNames },
+					series: [{ data: prepareWarning.count }],
+				})
+			})
+		})
+	}
+	// 灏嗙粺璁℃暟鎹浆鎹负閫傚悎ECharts浣跨敤鐨勬牸寮�
+	function prepareData(stats) {
+		const faultNames = Object.keys(stats)
+		const durationSorted = faultNames.sort((a, b) => stats[b].totalDuration - stats[a].totalDuration)
+		const countSorted = faultNames.sort((a, b) => stats[b].count - stats[a].count)
+
+		return {
+			faultNames: faultNames,
+			duration: durationSorted.map((name) => ({ name, value: stats[name].totalDuration })),
+			count: countSorted.map((name) => ({ name, value: stats[name].count })),
+		}
+	}
+	var move = true
+	function moveImage() {
+		if (move) {
+			position.value -= 0.3
+		} else {
+			position.value += 0.3
+		}
+		if (position.value < -240) {
+			move = false
+		}
+		if (position.value > -1) {
+			move = true
+		}
+	}
+
+	// 寮�濮嬭嚜鍔ㄦ粴鍔�
+	const startAutoScroll = () => {
+		console.log('寮�濮嬭嚜鍔ㄦ粴鍔�')
+		scrollInterval = setInterval(() => {
+			if (isScrolling.value) return
+			isScrolling.value = true
+
+			const container = scrollContainer.value
+
+			// 婊氬姩瀹瑰櫒
+			container.scrollTop += 1
+			// 褰撴粴鍔ㄥ埌搴曢儴鏃讹紝閲嶇疆鍒伴《閮�
+			if (container.scrollTop >= container.scrollHeight - container.clientHeight) {
+				setTimeout(() => {
+					container.scrollTop = 0
+					isScrolling.value = false // 绔嬪嵆鍏佽涓嬩竴娆℃粴鍔ㄥ紑濮�
+					return
+				}, 2000)
+			}
+			if (container.scrollTop < container.scrollHeight - container.clientHeight) {
+        setTimeout(() => {
+          isScrolling.value = false
+        }, 20) // 纭繚姣忔婊氬姩闂撮殧瓒冲闀匡紝閬垮厤杩炵画瑙﹀彂
+      }
+		}, 20) // 鎺у埗婊氬姩閫熷害锛屾暟鍊艰秺灏忔粴鍔ㄨ秺蹇�
+
+	}
+
+	// 鍋滄鑷姩婊氬姩
+	const stopAutoScroll = () => {
+		if (scrollInterval) {
+			clearInterval(scrollInterval)
+		}
+	}
+
+	listAllEqp()
+	//queryEqp()
+	// DOM鎸傝浇瀹屾垚鍚庢覆鏌撳浘琛�
+	onMounted(() => {
+		Timer.value = setInterval(queryRealTime, 3000)
+		Timer2.value = setInterval(moveImage, 50)
+		startAutoScroll()
+		setTimeout(initCharts, 500)
+	})
+
+	onUnmounted(() => {
+		clearInterval(Timer.value)
+		clearInterval(Timer2.value)
+		Timer.value = null
+		Timer2.value = null
+		stopAutoScroll()
+	})
+</script>
+
+<style scoped>
+	.eqpBox {
+		height: 100%;
+	}
+	.eqpRow {
+	}
+	.eqpImage {
+		height: 1080px;
+		width: 1920px;
+		background-image: url(/src/assets/images/dry/bg.png);
+		background-repeat: no-repeat;
+		color: white;
+		/*background-position: 160px 280px; */
+		/* background-color: red; */
+		background-size: 120%;
+		padding: 10px;
+		display: flex;
+		flex-wrap: wrap;
+		align-content: flex-start;
+	}
+
+	.leftEqp {
+		height: 1080px;
+		width: 1200px;
+		display: flex;
+		flex-wrap: wrap;
+		align-content: flex-start;
+
+		/* background-color: white;
+		background-image: url(/src/assets/images/dry/shebei1.png);
+		background-repeat: no-repeat;
+		background-size: 125%;
+		border-radius: 10px;
+		background-position: -119px 293px; */
+	}
+
+	.leftTop {
+		height: 1060px;
+		width: 1200px;
+		display: flex;
+		justify-content: center;
+		align-content: flex-start;
+		background-image: url(/src/assets/images/dry/ganzaoji-x.png);
+		background-repeat: no-repeat;
+		background-size: 86%;
+		border-radius: 10px;
+		flex-wrap: wrap;
+		background-position: 85px 279px;
+	}
+	.leftMid {
+		width: 850px;
+		height: 300px;
+		/* border: 1px solid; */
+		margin-top: 10px;
+		border-radius: 10px;
+		/* background: white; */
+	}
+	.mainInfo {
+		line-height: 33px;
+		padding-left: 10px;
+		font-size: 30px;
+		color: white;
+	}
+	.subhead {
+		color: #a19f9c;
+		font-size: 16px;
+		padding-left: 10px;
+	}
+
+	.mainInfo2 {
+		line-height: 20px;
+		padding-left: 0px;
+		font-size: 16px;
+	}
+	.subhead2 {
+		color: #a19f9c;
+		font-size: 10px;
+		padding-left: 0px;
+	}
+	.zhengqi {
+		height: 180px;
+		width: 200px;
+		background-image: url(/src/assets/images/dry/liuliangji.png);
+		background-repeat: no-repeat;
+		background-size: 160px;
+		/* border-radius: 10px; */
+		background-position: 17px -6px;
+	}
+
+	.liuliangji {
+	}
+	.leftData {
+		height: 250px;
+		width: 120px;
+	}
+	.rightChart {
+		height: 270px;
+		width: 170px;
+		margin-top: -30px;
+	}
+	.leftTop0 {
+		height: 260px;
+		width: 1200px;
+		display: flex;
+		justify-content: center;
+		align-content: flex-start;
+		flex-wrap: wrap;
+	}
+	.leftTop1 {
+		width: 360px;
+		height: 200px;
+		text-align: center;
+		display: flex;
+		justify-content: center;
+		align-items: center;
+		font-size: 30px;
+		color: #727272;
+	}
+	.leftTop2 {
+		width: 250px;
+		height: 200px;
+		text-align: center;
+		display: flex;
+		justify-content: center;
+		align-items: center;
+		font-size: 30px;
+		color: #727272;
+	}
+	.leftTop3 {
+		width: 340px;
+		height: 200px;
+		/* background-image: url(/src/assets/images/dry/fanliao.gif); */
+		background-repeat: no-repeat;
+		background-position: 0px 20px;
+		background-size: 300px;
+		border-radius: 50px;
+	}
+
+	.eqpStatus {
+		width: 848px;
+	}
+	.rightInfo {
+		display: flex;
+		flex-wrap: wrap;
+		align-content: flex-start;
+		height: 1060px;
+		width: 700px;
+	}
+
+	.rightTop {
+		display: flex;
+		height: 340px;
+		padding-left: 10px;
+	}
+	.rightTwo {
+		display: flex;
+		flex-wrap: wrap;
+	}
+
+	.infoChart {
+		width: 340px;
+		height: 350px;
+		/* background: white; */
+		margin-left: 10px;
+		margin-top: 10px;
+		border-radius: 10px;
+	}
+	.chartTittle {
+		width: 340px;
+		height: 30px;
+		font-size: 16px;
+		display: flex;
+		justify-content: space-between;
+		padding: 15px 15px;
+	}
+	.chartInfo {
+		width: 60px;
+		height: 180px;
+	}
+
+	.compareBar {
+		width: 55px;
+		height: 140px;
+	}
+	.margintop-30 {
+		margin-top: -30px;
+	}
+
+	.barTop {
+		width: 55px;
+		height: 30px;
+	}
+	.barBack {
+		width: 30px;
+		height: 100px;
+		/* border: 1px solid black; */
+		display: flex;
+		flex-wrap: wrap;
+		align-content: flex-end;
+	}
+	.barDiv {
+		width: 100%;
+
+		background-color: #1595ea;
+	}
+	.bad {
+		background-color: #973535;
+	}
+	.rightLabel {
+		width: 110px;
+		display: flex;
+		justify-content: space-between;
+	}
+	.label {
+		color: white;
+		text-align: center;
+		width: 50px;
+		border-radius: 4px;
+		height: 20px;
+		font-size: 10px;
+		line-height: 21px;
+	}
+	.good {
+		background-color: #0d6e24;
+	}
+
+	.mainInfo3 {
+		font-size: 24px;
+	}
+	.herbInfo {
+		width: 340px;
+		height: 440px;
+		color: #727272;
+	}
+
+	.curEqp {
+		width: 340px;
+		height: 170px;
+
+		/* background: white;
+		border-radius: 10px; */
+	}
+	.curHerb {
+		margin-top: 10px;
+		width: 340px;
+		height: 260px;
+		/* background: white;
+		border-radius: 10px; */
+
+		background-repeat: no-repeat;
+		background-size: 200px;
+		background-position: 0px 10px;
+	}
+	.tempMoisChart {
+		width: 690px;
+		height: 340px;
+		/* background: white; */
+
+		padding: 20px;
+		border-radius: 10px;
+	}
+	.topLeft {
+		margin: 20px 40px 60px 20px;
+		padding: 15px;
+		/* background: white; */
+		border-radius: 10px;
+		height: 325px;
+		width: 440px;
+		/* background-image: url(/src/assets/images/dry/yaocai.jpg); */
+		background-repeat: no-repeat;
+		background-size: 164px 132px;
+		background-position: 239px 65px;
+		display: flex;
+	}
+	.topMid {
+		margin: 20px 20px 60px 40px;
+		/* background: white; */
+		border-radius: 10px;
+		background-image: url(/src/assets/images/dry/fanliao.gif);
+		background-repeat: no-repeat;
+		background-position: 0px 20px;
+		background-size: 400px;
+		width: 400px;
+
+		padding: 20px;
+	}
+	.topRight {
+		margin: 20px 20px 60px 20px;
+		/* background: white; */
+		border-radius: 10px;
+		width: 700px;
+		padding: 20px;
+	}
+	.midLeft {
+		height: 450px;
+		width: 600px;
+		display: flex;
+		padding: 0 20px 20px 20px;
+	}
+	.midMid {
+		width: 500px;
+		padding-top: 50px;
+	}
+
+	.midRight {
+		background-image: url(/src/assets/images/dry/fengjixz.gif);
+		background-repeat: no-repeat;
+		background-position: 150px 260px;
+		background-size: 120px 120px;
+		width: 600px;
+	}
+
+	.shangJianTou {
+		margin-left: 140px;
+		width: 70px;
+		height: 100px;
+		background-image: url(/src/assets/images/dry/shangjiantoutou.gif);
+		background-repeat: no-repeat;
+		background-position: 0px 0px;
+		background-size: 70px 100px;
+	}
+
+	.zoujiantou {
+		margin-left: 225px;
+		margin-top: 30px;
+		width: 100px;
+		height: 70px;
+		background-image: url(/src/assets/images/dry/zuojiantou.gif);
+		background-repeat: no-repeat;
+		background-position: 0px 0px;
+		background-size: 100px 70px;
+	}
+	.fault {
+		padding: 10px;
+		height: 60px;
+		font-size: 26px;
+		width: 100%;
+		text-align: right;
+		color: red;
+	}
+	.eqpName {
+		padding: 20px;
+
+		height: 160px;
+	}
+
+	.formula {
+		display: flex;
+		width: 340px;
+		height: 40px;
+		padding: 0 20px;
+		justify-content: space-around;
+		justify-items: center;
+	}
+
+	.formulaItem {
+		display: flex;
+		justify-content: center;
+		width: 85px;
+		height: 40px;
+	}
+
+	.eqpInfoText {
+		font-size: 18px;
+		font-weight: bold;
+	}
+
+	:deep() .ant-slider-mark-text {
+		padding-left: 15px;
+		font-size: 10px;
+	}
+	:deep() .ant-slider-mark-text::before {
+		content: '';
+		display: block;
+		width: 6px;
+		height: 1px;
+		background-color: #1890ff;
+
+		position: absolute;
+		top: 10px;
+		left: 0px;
+	}
+	:deep() .ant-slider-rail {
+		width: 10px !important;
+		border-radius: 6px 6px 0 0;
+		background: linear-gradient(to top, #ce0000 0%, #ce0000 40%, #ce0000 75%, rgb(160, 160, 160) 100%);
+	}
+	:deep() .ant-slider-track {
+		background: rgb(216, 216, 216);
+
+		height: 20px;
+		width: 10px !important;
+		border-radius: 6px 6px 0 0;
+	}
+	:deep() .ant-slider-track:hover {
+	}
+	:deep() .ant-slider-handle {
+		display: none;
+	}
+	:deep() .ant-slider-dot {
+		display: none;
+	}
+	:deep() .ant-slider-step {
+		width: 10px !important;
+	}
+	:deep() .ant-slider-step > :first-child {
+		display: block !important;
+		width: 30px !important;
+		height: 30px !important;
+		bottom: -26px !important;
+		left: -6px;
+		border: none;
+		background: #ce0000;
+	}
+	:deep() .progress {
+		padding: 25px 25px;
+
+		width: 360px;
+		display: flex;
+	}
+	:deep() .ant-progress-bg {
+		height: 25px !important;
+	}
+	.outDiv {
+		display: flex;
+		justify-content: center;
+		justify-items: center;
+	}
+	.blingbling {
+		-webkit-animation: scaleout 1s infinite ease-in-out;
+		animation: scaleout 1s infinite ease-in-out;
+	}
+	.center {
+		display: flex;
+		justify-content: center;
+		justify-items: center;
+		align-items: center;
+		flex-wrap: wrap;
+		text-align: center;
+	}
+
+	.centerText {
+		width: 100%;
+		text-align: center;
+	}
+
+	@-webkit-keyframes scaleout {
+		0% {
+			-webkit-transform: scale(1);
+		}
+
+		100% {
+			-webkit-transform: scale(1.1);
+			opacity: 0;
+		}
+	}
+
+	@keyframes scaleout {
+		0% {
+			transform: scale(1);
+			-webkit-transform: scale(1);
+		}
+
+		100% {
+			transform: scale(1.1);
+			-webkit-transform: scale(1.1);
+			opacity: 0;
+		}
+	}
+	.error-div {
+		position: absolute;
+		display: flex;
+		align-items: center;
+	}
+	.error-marker {
+		width: 18px;
+		height: 18px;
+		background: red;
+		border-radius: 50%;
+	}
+	.error-msg {
+		margin-left: 6px;
+		height: 24px;
+		background: gray;
+		border-radius: 5px;
+		font-weight: bold;
+		color: red;
+	}
+	.warn-marker {
+		width: 18px;
+		height: 18px;
+		background: orange;
+		border-radius: 50%;
+	}
+	.warn-msg {
+		margin-left: 6px;
+		height: 24px;
+		background: gray;
+		border-radius: 5px;
+		font-weight: bold;
+		color: orange;
+	}
+	.scroll-container {
+		height: 280px; /* 璁剧疆浣犳兂瑕佺殑楂樺害 */
+		overflow: hidden;
+	}
+</style>
diff --git a/src/views/dry/bigScreen/BigFaultCloud.vue b/src/views/dry/bigScreen/BigFaultCloud.vue
index 3ec3f30..86dad08 100644
--- a/src/views/dry/bigScreen/BigFaultCloud.vue
+++ b/src/views/dry/bigScreen/BigFaultCloud.vue
@@ -4,10 +4,14 @@
 			<div class="eqpRow">
 				<div class="eqpImage" :style="{ 'background-position': position + 'px' }">
 					<div class="leftEqp">
-
 						<dv-border-box7 class="leftTop">
 							<div class="leftTop0">
+                <div style="padding-top: 20px; padding-left: 10px" @click="back">
+                  <Icon style="color: powderblue" icon="ion:caret-back-sharp" :size="35" />
+                </div>
+
 								<div class="leftTop1">
+
 									<Icon icon="emojione:hourglass-with-flowing-sand" :size="50" />
 									<div>
 										<div class="mainInfo">{{ realData?.totalRemain | 0 }} Min</div>
@@ -41,241 +45,177 @@
 									</div>
 								</div>
 							</div>
-              <div style="width: 1200px; height: 798px; position: absolute;">
-                <div v-if="true | zuoqianjiting" class="error-div" style=" top:466px; left:589px">
-                  <div class="blingbling error-marker" ></div>
-                  <div class="error-msg" style="width: 70px;">
-                    &nbsp;&nbsp;宸﹀墠鎬ュ仠
-                  </div>
-                </div>
-                <div v-if="true | shebeijiting" class="error-div"  style=" top:170px; left:702px">
-                  <div class="blingbling error-marker" ></div>
-                  <div class="error-msg" style=" width: 106px;">
-                    &nbsp;&nbsp;璁惧鎬ュ仠锛堟�伙級
-                  </div>
-                </div>
-                <div v-if="true | chuliaojiting" class="error-div"  style=" top:450px; left:158px">
-                  <div class="blingbling error-marker" ></div>
-                  <div class="error-msg" style=" width: 70px;">
-                    &nbsp;&nbsp;鍑烘枡鎬ュ仠
-                  </div>
-                </div>
-                <div v-if="true | mianbanjiting" class="error-div"  style=" top:398px; left:978px">
-                  <div class="blingbling error-marker" ></div>
-                  <div class="error-msg" style=" width: 70px;">
-                    &nbsp;&nbsp;闈㈡澘鎬ュ仠
-                  </div>
-                </div>
-                <div v-if="true | fengxiangsheng" class="error-div"  style=" top:476px; left:753px">
-                  <div class="blingbling error-marker" ></div>
-                  <div class="error-msg" style=" width: 86px;">
-                    &nbsp;&nbsp;椋庣鍗囧紓甯�
-                  </div>
-                </div>
-                <div v-if="true | fengxiangjiang" class="error-div"  style=" top:502px; left:753px">
-                  <div class="blingbling error-marker" ></div>
-                  <div class="error-msg" style=" width: 86px;">
-                    &nbsp;&nbsp;椋庣闄嶅紓甯�
-                  </div>
-                </div>
-                <div v-if="true | fengjiguoliu" class="error-div"  style=" top:510px; left:975px">
-                  <div class="blingbling error-marker" ></div>
-                  <div class="error-msg" style=" width: 70px;">
-                    &nbsp;&nbsp;椋庢満杩囨祦
-                  </div>
-                </div>
-                <div v-if="true | guntongsheng" class="error-div"  style=" top:331px; left:753px">
-                  <div class="blingbling error-marker" ></div>
-                  <div class="error-msg" style=" width: 86px;">
-                    &nbsp;&nbsp;婊氱瓛鍗囧紓甯�
-                  </div>
-                </div>
-                <div v-if="true | guntongjiang" class="error-div"  style=" top:356px; left:753px">
-                  <div class="blingbling error-marker" ></div>
-                  <div class="error-msg" style=" width: 86px;">
-                    &nbsp;&nbsp;婊氱瓛闄嶅紓甯�
-                  </div>
-                </div>
-                <div v-if="true | guntongguoliu" class="error-div"  style=" top:324px; left:916px">
-                  <div class="blingbling error-marker" ></div>
-                  <div class="error-msg" style=" width: 70px;">
-                    &nbsp;&nbsp;婊氱瓛杩囨祦
-                  </div>
-                </div>
-                <div v-if="true | wendubaojing" class="error-div"  style=" top:373px; left:978px">
-                  <div class="blingbling error-marker" ></div>
-                  <div class="error-msg" style=" width: 70px;">
-                    &nbsp;&nbsp;娓╁害鎶ヨ
-                  </div>
-                </div>
+							<div style="width: 1200px; height: 798px; position: absolute">
+								<div v-if="zuoqianjiting" class="error-div" style="top: 466px; left: 589px">
+									<div class="blingbling error-marker"></div>
+									<div class="error-msg" style="width: 70px"> &nbsp;&nbsp;宸﹀墠鎬ュ仠 </div>
+								</div>
+								<div v-if="shebeijiting" class="error-div" style="top: 170px; left: 702px">
+									<div class="blingbling error-marker"></div>
+									<div class="error-msg" style="width: 106px"> &nbsp;&nbsp;璁惧鎬ュ仠锛堟�伙級 </div>
+								</div>
+								<div v-if="chuliaojiting" class="error-div" style="top: 450px; left: 158px">
+									<div class="blingbling error-marker"></div>
+									<div class="error-msg" style="width: 70px"> &nbsp;&nbsp;鍑烘枡鎬ュ仠 </div>
+								</div>
+								<div v-if="mianbanjiting" class="error-div" style="top: 398px; left: 978px">
+									<div class="blingbling error-marker"></div>
+									<div class="error-msg" style="width: 70px"> &nbsp;&nbsp;闈㈡澘鎬ュ仠 </div>
+								</div>
+								<div v-if="fengxiangsheng" class="error-div" style="top: 476px; left: 753px">
+									<div class="blingbling error-marker"></div>
+									<div class="error-msg" style="width: 86px"> &nbsp;&nbsp;椋庣鍗囧紓甯� </div>
+								</div>
+								<div v-if="fengxiangjiang" class="error-div" style="top: 502px; left: 753px">
+									<div class="blingbling error-marker"></div>
+									<div class="error-msg" style="width: 86px"> &nbsp;&nbsp;椋庣闄嶅紓甯� </div>
+								</div>
+								<div v-if="fengjiguoliu" class="error-div" style="top: 510px; left: 975px">
+									<div class="blingbling error-marker"></div>
+									<div class="error-msg" style="width: 70px"> &nbsp;&nbsp;椋庢満杩囨祦 </div>
+								</div>
+								<div v-if="guntongsheng" class="error-div" style="top: 331px; left: 753px">
+									<div class="blingbling error-marker"></div>
+									<div class="error-msg" style="width: 86px"> &nbsp;&nbsp;婊氱瓛鍗囧紓甯� </div>
+								</div>
+								<div v-if="guntongjiang" class="error-div" style="top: 356px; left: 753px">
+									<div class="blingbling error-marker"></div>
+									<div class="error-msg" style="width: 86px"> &nbsp;&nbsp;婊氱瓛闄嶅紓甯� </div>
+								</div>
+								<div v-if="guntongguoliu" class="error-div" style="top: 324px; left: 916px">
+									<div class="blingbling error-marker"></div>
+									<div class="error-msg" style="width: 70px"> &nbsp;&nbsp;婊氱瓛杩囨祦 </div>
+								</div>
+								<div v-if="wendubaojing" class="error-div" style="top: 373px; left: 978px">
+									<div class="blingbling error-marker"></div>
+									<div class="error-msg" style="width: 70px"> &nbsp;&nbsp;娓╁害鎶ヨ </div>
+								</div>
 
-                <div v-if="true | zuoqianmen" class="error-div"  style=" top:595px; left:591px">
-                  <div class="blingbling warn-marker" ></div>
-                  <div class="warn-msg" style=" width: 80px;">
-                    &nbsp;&nbsp;宸﹀墠闂ㄦ姤璀�
-                  </div>
-                </div>
-                <div v-if="true | zuohoumen" class="error-div"  style=" top:565px; left:868px">
-                  <div class="blingbling warn-marker" ></div>
-                  <div class="warn-msg" style=" width: 80px;">
-                    &nbsp;&nbsp;宸﹀悗闂ㄦ姤璀�
-                  </div>
-                </div>
-                <div v-if="true | youqianmen" class="error-div"  style=" top:593px; left:396px">
-                  <div class="blingbling warn-marker" ></div>
-                  <div class="warn-msg" style=" width: 80px;">
-                    &nbsp;&nbsp;鍙冲墠闂ㄦ姤璀�
-                  </div>
-                </div>
-                <div v-if="true | youhoumen" class="error-div"  style=" top:565px; left:697px">
-                  <div class="blingbling warn-marker" ></div>
-                  <div class="warn-msg" style=" width: 80px;">
-                    &nbsp;&nbsp;鍙冲悗闂ㄦ姤璀�
-                  </div>
-                </div>
+								<div v-if="zuoqianmen" class="error-div" style="top: 595px; left: 591px">
+									<div class="blingbling warn-marker"></div>
+									<div class="warn-msg" style="width: 80px"> &nbsp;&nbsp;宸﹀墠闂ㄦ姤璀� </div>
+								</div>
+								<div v-if="zuohoumen" class="error-div" style="top: 565px; left: 868px">
+									<div class="blingbling warn-marker"></div>
+									<div class="warn-msg" style="width: 80px"> &nbsp;&nbsp;宸﹀悗闂ㄦ姤璀� </div>
+								</div>
+								<div v-if="youqianmen" class="error-div" style="top: 593px; left: 396px">
+									<div class="blingbling warn-marker"></div>
+									<div class="warn-msg" style="width: 80px"> &nbsp;&nbsp;鍙冲墠闂ㄦ姤璀� </div>
+								</div>
+								<div v-if="youhoumen" class="error-div" style="top: 565px; left: 697px">
+									<div class="blingbling warn-marker"></div>
+									<div class="warn-msg" style="width: 80px"> &nbsp;&nbsp;鍙冲悗闂ㄦ姤璀� </div>
+								</div>
 
-                <div v-if="true | guntongbuzaigaowei" class="error-div"  style=" top:304px; left:753px">
-                  <div class="blingbling warn-marker" ></div>
-                  <div class="warn-msg" style=" width: 100px;">
-                    &nbsp;&nbsp;婊氱瓛涓嶅湪楂樹綅
-                  </div>
-                </div>
-                <div v-if="true | fengxiangbuzaigaowei" class="error-div"  style=" top:451px; left:753px">
-                  <div class="blingbling warn-marker" ></div>
-                  <div class="warn-msg" style=" width: 100px;">
-                    &nbsp;&nbsp;椋庣涓嶅湪楂樹綅
-                  </div>
-                </div>
-                <div v-if="true | fengxiangbuzaidiwei" class="error-div"  style=" top:528px; left:753px">
-                  <div class="blingbling warn-marker" ></div>
-                  <div class="warn-msg" style=" width: 100px;">
-                    &nbsp;&nbsp;椋庣涓嶅湪浣庝綅
-                  </div>
-                </div>
-                <div v-if="true | jiareweichuanganqi" class="error-div"  style=" top:433px; left:904px">
-                  <div class="blingbling warn-marker" ></div>
-                  <div class="warn-msg" style=" width: 126px;">
-                    &nbsp;&nbsp;鍔犵儹浣嶄紶鎰熷櫒鎶ヨ
-                  </div>
-                </div>
-                <div v-if="true | zuoqianfengxianggaowei" class="error-div"  style=" top:502px; left:535px">
-                  <div class="blingbling warn-marker" ></div>
-                  <div class="warn-msg" style=" width: 126px;">
-                    &nbsp;&nbsp;宸﹀墠椋庣涓嶅湪楂樹綅
-                  </div>
-                </div>
-                <div v-if="true | zuoqianfengxiangdiwei" class="error-div"  style=" top:528px; left:535px">
-                  <div class="blingbling warn-marker" ></div>
-                  <div class="warn-msg" style=" width: 126px;">
-                    &nbsp;&nbsp;宸﹀墠椋庣涓嶅湪浣庝綅
-                  </div>
-                </div>
-                <div v-if="true | zuohoufengxianggaowei" class="error-div"  style=" top:459px; left:904px">
-                  <div class="blingbling warn-marker" ></div>
-                  <div class="warn-msg" style=" width: 126px;">
-                    &nbsp;&nbsp;宸﹀悗椋庣涓嶅湪楂樹綅
-                  </div>
-                </div>
-                <div v-if="true | zuohoufengxiangdiwei" class="error-div"  style=" top:484px; left:904px">
-                  <div class="blingbling warn-marker" ></div>
-                  <div class="warn-msg" style=" width: 126px;">
-                    &nbsp;&nbsp;宸﹀悗椋庣涓嶅湪浣庝綅
-                  </div>
-                </div>
-                <div v-if="true | youqianfengxianggaowei" class="error-div"  style=" top:447px; left:420px">
-                  <div class="blingbling warn-marker" ></div>
-                  <div class="warn-msg" style=" width: 126px;">
-                    &nbsp;&nbsp;鍙冲墠椋庣涓嶅湪楂樹綅
-                  </div>
-                </div>
-                <div v-if="true | youqianfengxiangdiwei" class="error-div"  style=" top:473px; left:420px">
-                  <div class="blingbling warn-marker" ></div>
-                  <div class="warn-msg" style=" width: 126px;">
-                    &nbsp;&nbsp;鍙冲墠椋庣涓嶅湪浣庝綅
-                  </div>
-                </div>
-                <div v-if="true | youhoufengxianggaowei" class="error-div"  style=" top:383px; left:805px">
-                  <div class="blingbling warn-marker" ></div>
-                  <div class="warn-msg" style=" width: 126px;">
-                    &nbsp;&nbsp;鍙冲悗椋庣涓嶅湪楂樹綅
-                  </div>
-                </div>
-                <div v-if="true | youhoufengxiangdiwei" class="error-div"  style=" top:408px; left:805px">
-                  <div class="blingbling warn-marker" ></div>
-                  <div class="warn-msg" style=" width: 126px;">
-                    &nbsp;&nbsp;鍙冲悗椋庣涓嶅湪浣庝綅
-                  </div>
-                </div>
-                <div v-if="true | zuoqianguntongdiwei" class="error-div"  style=" top:343px; left:530px">
-                  <div class="blingbling warn-marker" ></div>
-                  <div class="warn-msg" style=" width: 126px;">
-                    &nbsp;&nbsp;宸﹀墠婊氱瓛涓嶅湪浣庝綅
-                  </div>
-                </div>
-                <div v-if="true | zuohouguntongdiwei" class="error-div"  style=" top:296px; left:916px">
-                  <div class="blingbling warn-marker" ></div>
-                  <div class="warn-msg" style=" width: 126px;">
-                    &nbsp;&nbsp;宸﹀悗婊氱瓛涓嶅湪浣庝綅
-                  </div>
-                </div>
-                <div v-if="true | youqianguntongdiwei" class="error-div"  style=" top:316px; left:419px">
-                  <div class="blingbling warn-marker" ></div>
-                  <div class="warn-msg" style=" width: 126px;">
-                    &nbsp;&nbsp;鍙冲墠婊氱瓛涓嶅湪浣庝綅
-                  </div>
-                </div>
-                <div v-if="true | youhouguntongdiwei" class="error-div"  style=" top:270px; left:797px">
-                  <div class="blingbling warn-marker" ></div>
-                  <div class="warn-msg" style=" width: 126px;">
-                    &nbsp;&nbsp;鍙冲悗婊氱瓛涓嶅湪浣庝綅
-                  </div>
-                </div>
-
-              </div>
+								<div v-if="guntongbuzaigaowei" class="error-div" style="top: 304px; left: 753px">
+									<div class="blingbling warn-marker"></div>
+									<div class="warn-msg" style="width: 100px"> &nbsp;&nbsp;婊氱瓛涓嶅湪楂樹綅 </div>
+								</div>
+								<div v-if="fengxiangbuzaigaowei" class="error-div" style="top: 451px; left: 753px">
+									<div class="blingbling warn-marker"></div>
+									<div class="warn-msg" style="width: 100px"> &nbsp;&nbsp;椋庣涓嶅湪楂樹綅 </div>
+								</div>
+								<div v-if="fengxiangbuzaidiwei" class="error-div" style="top: 528px; left: 753px">
+									<div class="blingbling warn-marker"></div>
+									<div class="warn-msg" style="width: 100px"> &nbsp;&nbsp;椋庣涓嶅湪浣庝綅 </div>
+								</div>
+								<div v-if="jiareweichuanganqi" class="error-div" style="top: 433px; left: 904px">
+									<div class="blingbling warn-marker"></div>
+									<div class="warn-msg" style="width: 126px"> &nbsp;&nbsp;鍔犵儹浣嶄紶鎰熷櫒鎶ヨ </div>
+								</div>
+								<div v-if="zuoqianfengxianggaowei" class="error-div" style="top: 502px; left: 535px">
+									<div class="blingbling warn-marker"></div>
+									<div class="warn-msg" style="width: 126px"> &nbsp;&nbsp;宸﹀墠椋庣涓嶅湪楂樹綅 </div>
+								</div>
+								<div v-if="zuoqianfengxiangdiwei" class="error-div" style="top: 528px; left: 535px">
+									<div class="blingbling warn-marker"></div>
+									<div class="warn-msg" style="width: 126px"> &nbsp;&nbsp;宸﹀墠椋庣涓嶅湪浣庝綅 </div>
+								</div>
+								<div v-if="zuohoufengxianggaowei" class="error-div" style="top: 459px; left: 904px">
+									<div class="blingbling warn-marker"></div>
+									<div class="warn-msg" style="width: 126px"> &nbsp;&nbsp;宸﹀悗椋庣涓嶅湪楂樹綅 </div>
+								</div>
+								<div v-if="zuohoufengxiangdiwei" class="error-div" style="top: 484px; left: 904px">
+									<div class="blingbling warn-marker"></div>
+									<div class="warn-msg" style="width: 126px"> &nbsp;&nbsp;宸﹀悗椋庣涓嶅湪浣庝綅 </div>
+								</div>
+								<div v-if="youqianfengxianggaowei" class="error-div" style="top: 447px; left: 420px">
+									<div class="blingbling warn-marker"></div>
+									<div class="warn-msg" style="width: 126px"> &nbsp;&nbsp;鍙冲墠椋庣涓嶅湪楂樹綅 </div>
+								</div>
+								<div v-if="youqianfengxiangdiwei" class="error-div" style="top: 473px; left: 420px">
+									<div class="blingbling warn-marker"></div>
+									<div class="warn-msg" style="width: 126px"> &nbsp;&nbsp;鍙冲墠椋庣涓嶅湪浣庝綅 </div>
+								</div>
+								<div v-if="youhoufengxianggaowei" class="error-div" style="top: 383px; left: 805px">
+									<div class="blingbling warn-marker"></div>
+									<div class="warn-msg" style="width: 126px"> &nbsp;&nbsp;鍙冲悗椋庣涓嶅湪楂樹綅 </div>
+								</div>
+								<div v-if="youhoufengxiangdiwei" class="error-div" style="top: 408px; left: 805px">
+									<div class="blingbling warn-marker"></div>
+									<div class="warn-msg" style="width: 126px"> &nbsp;&nbsp;鍙冲悗椋庣涓嶅湪浣庝綅 </div>
+								</div>
+								<div v-if="zuoqianguntongdiwei" class="error-div" style="top: 343px; left: 530px">
+									<div class="blingbling warn-marker"></div>
+									<div class="warn-msg" style="width: 126px"> &nbsp;&nbsp;宸﹀墠婊氱瓛涓嶅湪浣庝綅 </div>
+								</div>
+								<div v-if="zuohouguntongdiwei" class="error-div" style="top: 296px; left: 916px">
+									<div class="blingbling warn-marker"></div>
+									<div class="warn-msg" style="width: 126px"> &nbsp;&nbsp;宸﹀悗婊氱瓛涓嶅湪浣庝綅 </div>
+								</div>
+								<div v-if="youqianguntongdiwei" class="error-div" style="top: 316px; left: 419px">
+									<div class="blingbling warn-marker"></div>
+									<div class="warn-msg" style="width: 126px"> &nbsp;&nbsp;鍙冲墠婊氱瓛涓嶅湪浣庝綅 </div>
+								</div>
+								<div v-if="youhouguntongdiwei" class="error-div" style="top: 270px; left: 797px">
+									<div class="blingbling warn-marker"></div>
+									<div class="warn-msg" style="width: 126px"> &nbsp;&nbsp;鍙冲悗婊氱瓛涓嶅湪浣庝綅 </div>
+								</div>
+							</div>
 						</dv-border-box7>
-
-
 					</div>
 					<div class="rightInfo">
 						<div class="rightTop">
 							<dv-border-box7 class="tempMoisChart">
-
+								<a-row>
+									<a-col :span="7">鏁呴殰鍚嶇О</a-col>
+									<a-col :span="7">寮�濮嬫椂闂�</a-col>
+									<a-col :span="7">缁撴潫鏃堕棿</a-col>
+									<a-col :span="3">鎸佺画鏃堕暱</a-col>
+								</a-row>
+								<div ref="scrollContainer" class="scroll-container">
+									<a-row v-for="item in faultList" :key="item.id">
+										<a-col :span="7">{{ item.faultName }}</a-col>
+										<a-col :span="7">{{ item.startTime }}</a-col>
+										<a-col :span="7">{{ item.endTime }}</a-col>
+										<a-col :span="3">{{ item.totalTime }}</a-col>
+									</a-row>
+								</div>
 							</dv-border-box7>
 						</div>
 						<div class="rightTwo">
 							<dv-border-box7 class="infoChart">
-								<div class="chartTittle">
-									鏁呴殰鏃堕暱缁熻
-
-								</div>
-								<div class="outDiv" style="padding-top: 20px">
-
-								</div>
+								<div class="chartTittle"> 鏁呴殰鏃堕暱缁熻 </div>
+								<!--								<div class="outDiv" style="padding-top: 20px">-->
+								<!--                  -->
+								<!--                </div>-->
+								<div :id="'chartDom'" style="width: 340px; height: 280px"></div>
 							</dv-border-box7>
 
 							<dv-border-box7 class="infoChart">
-								<div class="chartTittle"
-									>鏁呴殰娆℃暟绾�
-
-								</div>
-								<div class="outDiv" style="padding-top: 20px">
-
-								</div>
+								<div class="chartTittle">鏁呴殰娆℃暟绾� </div>
+								<div :id="'chartDom2'" style="width: 340px; height: 280px"></div>
 							</dv-border-box7>
 							<dv-border-box7 class="infoChart">
 								<div class="chartTittle">璀﹀憡鏃堕暱缁熻</div>
-								<div class="outDiv" style="padding-top: 10px">
-
-								</div>
+								<div :id="'chartDom3'" style="width: 340px; height: 280px"></div>
 							</dv-border-box7>
 							<dv-border-box7 class="infoChart">
 								<div class="chartTittle">
 									<div> 璀﹀憡娆℃暟缁熻</div>
-
 								</div>
-								<div class="outDiv" style="padding-top: 20px">
-
-								</div>
+								<div :id="'chartDom4'" style="width: 340px; height: 280px"></div>
 							</dv-border-box7>
 						</div>
 					</div>
@@ -296,7 +236,7 @@
 	import { Icon, IconPicker, SvgIcon } from '/@/components/Icon/index'
 	import { defHttp } from '/@/utils/http/axios'
 	import { queryById, listAll } from '../api/DryEquipment.api'
-  import { queryByOrderId } from '../dryFaultRecord/DryFaultRecord.api'
+	import { queryByOrderId } from '../dryFaultRecord/DryFaultRecord.api'
 	import { dryEquipment } from '../dataDefine/DryEquipment.data'
 	import { useUserStore } from '/@/store/modules/user'
 	const domRef = ref<Nullable<HTMLElement>>(null)
@@ -305,58 +245,66 @@
 	const { toggle: toggleDom } = useFullscreen(domRef)
 	const Timer = ref()
 	const Timer2 = ref()
-
+	const scrollContainer = ref(null)
+	let scrollInterval = null
+	const isScrolling = ref(false) // 鎺у埗鏄惁姝e湪婊氬姩浠ラ槻姝㈤噸澶嶈Е鍙�
 	const eqps = ref([] as dryEquipment[])
 	console.log(`output->router.currentRoute.value.params.num `, router.currentRoute.value.query)
 	const eqp = ref({} as dryEquipment)
 	const eqpNum = ref(router.currentRoute.value.query.num || 1)
-  const tenant = ref(router.currentRoute.value.query.tenant)
+	const tenant = ref(router.currentRoute.value.query.tenant)
 	const userStore = useUserStore()
-	const realData = ref({})
-
+	const realData = ref({
+		code: 0,
+	})
 
 	const position = ref(1)
 	//realData.value.tempValue = [0, 100]
 	realData.value.mois = [0.5, 0.35, 0.2]
 	statusGif = 'tmrefeng2'
 	realData.value.herbImage = 'yaocai1.png'
+  // const faultConst = ['鎬ュ仠鎶ヨ','宸﹀墠鎬ュ仠','闈㈡澘鎬ュ仠','鍑烘枡鎬ュ仠','娓╁害澶辨帶','婊氱瓛鍗�','婊氱瓛闄�','婊氱瓛鐢垫満杩囨祦','椋庣鍗�','椋庣闄�','椋庣椋庢満杩囨祦']
+  // const warningConst = ['宸﹀墠闂�','鍙冲墠闂�','宸﹀悗闂�','鍙冲悗闂�','婊氱瓛涓嶅湪楂樹綅','椋庣涓嶅湪浣庝綅','椋庣涓嶅湪楂樹綅','鍔犵儹浣嶄紶鎰熷櫒','宸﹀墠椋庣楂樹綅浼犳劅鍣�','鍙冲墠椋庣楂樹綅浼犳劅鍣�','宸﹀悗椋庣楂樹綅浼犳劅鍣�','鍙冲悗椋庣楂樹綅浼犳劅鍣�','宸﹀墠椋庣浣庝綅浼犳劅鍣�','鍙冲墠椋庣浣庝綅浼犳劅鍣�','宸﹀悗椋庣浣庝綅浼犳劅鍣�','鍙冲悗椋庣浣庝綅浼犳劅鍣�','宸﹀墠婊氱瓛浣庝綅浼犳劅鍣�','鍙冲墠婊氱瓛浣庝綅浼犳劅鍣�','宸﹀悗婊氱瓛浣庝綅浼犳劅鍣�','鍙冲悗婊氱瓛浣庝綅浼犳劅鍣�']
 
+	//----------------error----------------
+	const shebeijiting = ref(false)
+	const chuliaojiting = ref(false)
+	const zuoqianjiting = ref(false)
+	const mianbanjiting = ref(false)
+	const fengxiangsheng = ref(false)
+	const fengxiangjiang = ref(false)
+	const fengjiguoliu = ref(false)
+	const guntongsheng = ref(false)
+	const guntongjiang = ref(false)
+	const guntongguoliu = ref(false)
+	const wendubaojing = ref(false)
+	//--------------warning------------
+	const zuoqianmen = ref(false)
+	const zuohoumen = ref(false)
+	const youqianmen = ref(false)
+	const youhoumen = ref(false)
+	const guntongbuzaigaowei = ref(false)
+	const fengxiangbuzaigaowei = ref(false)
+	const fengxiangbuzaidiwei = ref(false)
+	const jiareweichuanganqi = ref(false)
+	const zuoqianfengxianggaowei = ref(false)
+	const zuohoufengxianggaowei = ref(false)
+	const youqianfengxianggaowei = ref(false)
+	const youhoufengxianggaowei = ref(false)
+	const zuoqianfengxiangdiwei = ref(false)
+	const zuohoufengxiangdiwei = ref(false)
+	const youqianfengxiangdiwei = ref(false)
+	const youhoufengxiangdiwei = ref(false)
+	const zuoqianguntongdiwei = ref(false)
+	const zuohouguntongdiwei = ref(false)
+	const youqianguntongdiwei = ref(false)
+	const youhouguntongdiwei = ref(false)
 
-  //----------------error----------------
-  const shebeijiting = ref(false)
-  const chuliaojiting = ref(false)
-  const zuoqianjiting = ref(false)
-  const mianbanjiting = ref(false)
-  const fengxiangsheng = ref(false)
-  const fengxiangjiang = ref(false)
-  const fengjiguoliu = ref(false)
-  const guntongsheng = ref(false)
-  const guntongjiang = ref(false)
-  const guntongguoliu = ref(false)
-  const wendubaojing = ref(false)
-  //--------------warning------------
-  const zuoqianmen = ref(false)
-  const zuohoumen = ref(false)
-  const youqianmen = ref(false)
-  const youhoumen = ref(false)
-  const guntongbuzaigaowei = ref(false)
-  const fengxiangbuzaigaowei = ref(false)
-  const fengxiangbuzaidiwei = ref(false)
-  const jiareweichuanganqi = ref(false)
-  const zuoqianfengxianggaowei = ref(false)
-  const zuohoufengxianggaowei = ref(false)
-  const youqianfengxianggaowei = ref(false)
-  const youhoufengxianggaowei = ref(false)
-  const zuoqianfengxiangdiwei = ref(false)
-  const zuohoufengxiangdiwei = ref(false)
-  const youqianfengxiangdiwei = ref(false)
-  const youhoufengxiangdiwei = ref(false)
-  const zuoqianguntongdiwei = ref(false)
-  const zuohouguntongdiwei = ref(false)
-  const youqianguntongdiwei = ref(false)
-  const youhouguntongdiwei = ref(false)
-
-
+	const faultList = ref([])
+	var chart1: echarts.ECharts
+	var chart2: echarts.ECharts
+	var chart3: echarts.ECharts
+	var chart4: echarts.ECharts
 	// 鍔ㄦ�佽鍙栧浘鐗�
 	function getHerbImageUrl(name: string) {
 		return new URL(`/src/assets/images/dry/yaocai/${name}`, import.meta.url).href
@@ -364,12 +312,11 @@
 
 	// 鍔ㄦ�佽鍙栧浘鐗�
 	function getStatusImageUrl(name: string) {
-		if (name =='zanting') {
+		if (name == 'zanting') {
 			return new URL(`/src/assets/images/dry/${name}.png`, import.meta.url).href
 		} else {
 			return new URL(`/src/assets/images/dry/${name}.gif`, import.meta.url).href
 		}
-		
 	}
 	function queryEqp() {
 		queryById({ id: router.currentRoute.value.params.id }).then((res) => {
@@ -397,8 +344,145 @@
 			})
 	}
 
-	var num = eqpNum.value
+	function initCharts() {
+		let chartDom1: HTMLElement = document.getElementById('chartDom') as HTMLElement
+		let chartDom2: HTMLElement = document.getElementById('chartDom2') as HTMLElement
+		let chartDom3: HTMLElement = document.getElementById('chartDom3') as HTMLElement
+		let chartDom4: HTMLElement = document.getElementById('chartDom4') as HTMLElement
 
+		chart1 = echarts.init(chartDom1)
+		chart2 = echarts.init(chartDom2)
+		chart3 = echarts.init(chartDom3)
+		chart4 = echarts.init(chartDom4)
+
+		const option2 = {
+			grid: {
+				left: '13%', // 宸﹁竟璺濓紝涔熷彲浠ユ槸鍏蜂綋鐨勫儚绱犲�硷紝渚嬪 50
+				right: '6%', // 鍙宠竟璺�
+				top: '13%', // 涓婅竟璺�
+				bottom: '35%', // 璁剧疆涓嬭竟璺濓紝渚嬪杩欓噷璁剧疆涓�15%
+			},
+			xAxis: {
+				type: 'category',
+				data: [],
+				axisLabel: {
+					rotate: 55, // 杩欓噷璁剧疆鏃嬭浆鐨勮搴︼紝姝e�艰〃绀洪『鏃堕拡鏃嬭浆
+					interval: 0, // 寮哄埗鏄剧ず鎵�鏈夋爣绛撅紝涓嶈繘琛岄棿闅旀樉绀�
+					color: '#fff', // 璁剧疆X杞存爣绛惧瓧浣撻鑹�
+				},
+			},
+			yAxis: {
+				type: 'value',
+				axisLabel: {
+					color: '#fff', // 璁剧疆Y杞存爣绛惧瓧浣撻鑹�
+				},
+				splitLine: { show: false }, // 涓嶆樉绀篩杞村垎鍓茬嚎锛堢綉鏍肩嚎锛�
+			},
+			series: [
+				{
+					data: [],
+					type: 'bar',
+					itemStyle: {
+						color: '#3398DB', // 鎸囧畾鏌卞瓙鐨勯鑹�
+					},
+				},
+			],
+		}
+		const option1 = {
+			tooltip: {
+				trigger: 'item',
+			},
+
+			series: [
+				{
+					data: [],
+					type: 'pie',
+					radius: '50%',
+					emphasis: {
+						itemStyle: {
+							shadowBlur: 10,
+							shadowOffsetX: 0,
+							shadowColor: 'rgba(0, 0, 0, 0.5)',
+						},
+					},
+					label: {
+						show: true, // 鏄剧ず鏍囩
+						//position: 'outside', // 鏍囩鐨勪綅缃紝鍙互鏄� 'outside', 'inside', 'center'
+						//formatter: '{b}: {c} ({d}%)', // 鏍囩鍐呭鏍煎紡鍖栧嚱鏁版垨瀛楃涓叉ā鏉�
+						fontSize: 12, // 璁剧疆瀛椾綋澶у皬
+						// fontWeight: 'bold', // 璁剧疆瀛椾綋绮楃粏
+						color: '#fff', // 璁剧疆瀛椾綋棰滆壊
+					},
+				},
+			],
+		}
+		const option4 = {
+			grid: {
+				left: '13%', // 宸﹁竟璺濓紝涔熷彲浠ユ槸鍏蜂綋鐨勫儚绱犲�硷紝渚嬪 50
+				right: '6%', // 鍙宠竟璺�
+				top: '13%', // 涓婅竟璺�
+				bottom: '35%', // 璁剧疆涓嬭竟璺濓紝渚嬪杩欓噷璁剧疆涓�15%
+			},
+			xAxis: {
+				type: 'category',
+				data: [],
+				axisLabel: {
+					rotate: 55, // 杩欓噷璁剧疆鏃嬭浆鐨勮搴︼紝姝e�艰〃绀洪『鏃堕拡鏃嬭浆
+					interval: 0, // 寮哄埗鏄剧ず鎵�鏈夋爣绛撅紝涓嶈繘琛岄棿闅旀樉绀�
+					color: '#fff', // 璁剧疆X杞存爣绛惧瓧浣撻鑹�
+				},
+			},
+			yAxis: {
+				type: 'value',
+				axisLabel: {
+					color: '#fff', // 璁剧疆Y杞存爣绛惧瓧浣撻鑹�
+				},
+				splitLine: { show: false }, // 涓嶆樉绀篩杞村垎鍓茬嚎锛堢綉鏍肩嚎锛�
+			},
+			series: [
+				{
+					data: [],
+					type: 'bar',
+					itemStyle: {
+						color: '#3398DB', // 鎸囧畾鏌卞瓙鐨勯鑹�
+					},
+				},
+			],
+		}
+		const option3 = {
+			tooltip: {
+				trigger: 'item',
+			},
+
+			series: [
+				{
+					data: [],
+					type: 'pie',
+					radius: '50%',
+					emphasis: {
+						itemStyle: {
+							shadowBlur: 10,
+							shadowOffsetX: 0,
+							shadowColor: 'rgba(0, 0, 0, 0.5)',
+						},
+					},
+					label: {
+						show: true, // 鏄剧ず鏍囩
+						//position: 'outside', // 鏍囩鐨勪綅缃紝鍙互鏄� 'outside', 'inside', 'center'
+						//formatter: '{b}: {c} ({d}%)', // 鏍囩鍐呭鏍煎紡鍖栧嚱鏁版垨瀛楃涓叉ā鏉�
+						fontSize: 12, // 璁剧疆瀛椾綋澶у皬
+						//fontWeight: 'bold', // 璁剧疆瀛椾綋绮楃粏
+						color: '#fff', // 璁剧疆瀛椾綋棰滆壊
+					},
+				},
+			],
+		}
+
+		option1 && chart1.setOption(option1)
+		option2 && chart2.setOption(option2)
+		option3 && chart3.setOption(option3)
+		option4 && chart4.setOption(option4)
+	}
 
 	var shangliaoFlag = false
 	var statusGif = 'tmrefeng2'
@@ -421,7 +505,12 @@
 			}, 7000)
 		}, 15000)
 	}
-
+  function back() {
+    router.back()
+  }
+	/**
+	 * 鏌ヨ瀹炴椂鏁版嵁
+	 */
 	function queryRealTime() {
 		if (eqp.value) {
 			eqp.value = eqps.value[eqpNum.value]
@@ -432,6 +521,7 @@
 			defHttp.get({ url: queryRealTimeUrl, params: { tenantid: tenant.value, machineid: eqpCode } }).then((res) => {
 				if (res && res.trendVo) {
 					console.log(`output->re11s`, res)
+					var totalTime = 0
 
 					/**姘存淮鍥惧惈姘撮噺 */
 					res.mois = [
@@ -439,7 +529,6 @@
 						(res.trendVo.moisture / 100 / 1.5).toFixed(2),
 						(res.trendVo.moisture / 100 / 3).toFixed(2),
 					]
-
 
 					/**鐘舵��/gif鍔ㄥ浘 */
 					if (!shangliaoFlag) {
@@ -466,8 +555,8 @@
 							// }
 
 							// if (res.state_fan == 1) {
-								statusGif = 'tmrefeng2'
-								statusTxt = '姝e湪骞茬嚗'
+							statusGif = 'tmrefeng2'
+							statusTxt = '姝e湪骞茬嚗'
 							// }
 
 							// if (res.state_roller == 4) {
@@ -507,19 +596,115 @@
 					} else if (res.herbName == '妗戠櫧鐨�') {
 						res.herbImage = 'sangbaipi.png'
 					}
-					
+
 					res.isError = false
 					if (res.fault) {
 						res.isError = true
 						res.errorMsg = res.fault
-            console.log("errorMsg:",res.fault)
+            const faults = res.fault;
+						console.log('errorMsg:', res.fault)
+            if (faults.includes('鎬ュ仠鎶ヨ')) {
+              shebeijiting.value = true;
+            }
+            if (faults.includes('宸﹀墠鎬ュ仠')) {
+              zuoqianjiting.value = true;
+            }
+            if (faults.includes('闈㈡澘鎬ュ仠')) {
+              mianbanjiting.value = true;
+            }
+            if (faults.includes('鍑烘枡鎬ュ仠')) {
+              chuliaojiting.value = true;
+            }
+            if (faults.includes('娓╁害澶辨帶')) {
+              wendubaojing.value = true;
+            }
+            if (faults.includes('婊氱瓛鍗�')) {
+              guntongsheng.value = true;
+            }
+            if (faults.includes('婊氱瓛闄�')) {
+              guntongjiang.value = true;
+            }
+            if (faults.includes('婊氱瓛鐢垫満杩囨祦')) {
+              guntongguoliu.value = true;
+            }
+            if (faults.includes('椋庣鍗�')) {
+              fengxiangsheng.value = true;
+            }
+            if (faults.includes('椋庣闄�')) {
+              fengxiangjiang.value = true;
+            }
+            if (faults.includes('椋庣椋庢満杩囨祦')) {
+              fengjiguoliu.value = true;
+            }
 					}
 
 					if (res.warning) {
 						res.isWarning = true
 						res.warnMsg = res.warning
-            console.log("warnMsg:",res.warning)
+            const warnings = res.warning;
+						console.log('warnMsg:', res.warning)
+            if (warnings.includes('宸﹀墠闂�')) {
+              zuoqianmen.value = true;
+            }
+            if (warnings.includes('鍙冲墠闂�')) {
+              youqianmen.value = true;
+            }
+            if (warnings.includes('宸﹀悗闂�')) {
+              zuohoumen.value = true;
+            }
+            if (warnings.includes('鍙冲悗闂�')) {
+              youhoumen.value = true;
+            }
+            if (warnings.includes('婊氱瓛涓嶅湪楂樹綅')) {
+              guntongbuzaigaowei.value = true;
+            }
+            if (warnings.includes('椋庣涓嶅湪浣庝綅')) {
+              fengxiangbuzaidiwei.value = true;
+            }
+            if (warnings.includes('椋庣涓嶅湪楂樹綅')) {
+              fengxiangbuzaigaowei.value = true;
+            }
+            if (warnings.includes('鍔犵儹浣嶄紶鎰熷櫒')) {
+              jiareweichuanganqi.value = true;
+            }
+            if (warnings.includes('宸﹀墠椋庣楂樹綅浼犳劅鍣�')) {
+              zuoqianfengxianggaowei.value = true;
+            }
+            if (warnings.includes('鍙冲墠椋庣楂樹綅浼犳劅鍣�')) {
+              youqianfengxianggaowei.value = true;
+            }
+            if (warnings.includes('宸﹀悗椋庣楂樹綅浼犳劅鍣�')) {
+              zuohoufengxianggaowei.value = true;
+            }
+            if (warnings.includes('鍙冲悗椋庣楂樹綅浼犳劅鍣�')) {
+              youhoufengxianggaowei.value = true;
+            }
+            if (warnings.includes('宸﹀墠椋庣浣庝綅浼犳劅鍣�')) {
+              zuoqianfengxiangdiwei.value = true;
+            }
+            if (warnings.includes('鍙冲墠椋庣浣庝綅浼犳劅鍣�')) {
+              youqianfengxiangdiwei.value = true;
+            }
+            if (warnings.includes('宸﹀悗椋庣浣庝綅浼犳劅鍣�')) {
+              zuohoufengxiangdiwei.value = true;
+            }
+            if (warnings.includes('鍙冲悗椋庣浣庝綅浼犳劅鍣�')) {
+              youhoufengxiangdiwei.value = true;
+            }
+            if (warnings.includes('宸﹀墠婊氱瓛浣庝綅浼犳劅鍣�')) {
+              zuoqianguntongdiwei.value = true;
+            }
+            if (warnings.includes('鍙冲墠婊氱瓛浣庝綅浼犳劅鍣�')) {
+              youqianguntongdiwei.value = true;
+            }
+            if (warnings.includes('宸﹀悗婊氱瓛浣庝綅浼犳劅鍣�')) {
+              zuohouguntongdiwei.value = true;
+            }
+            if (warnings.includes('鍙冲悗婊氱瓛浣庝綅浼犳劅鍣�')) {
+              youhouguntongdiwei.value = true;
+            }
 					}
+          getRealFault()
 				} else {
 					res = {
 						mois: [],
@@ -527,30 +712,87 @@
 						herbImage: 'yaocai1.png',
 					}
 				}
-        var totalTime = 0
-        res.totalRemain = res.remain - (res.dryTime - totalTime) > 0 ? res.remain - (res.dryTime - totalTime) : 0
+
+				res.totalRemain = res.remain - (res.dryTime - totalTime) > 0 ? res.remain - (res.dryTime - totalTime) : 0
 				// console.log(`output->res`, res.detailList[res.detailList.length-1])
 				realData.value = res
-        getRealFault()
+
 			})
 		}
 	}
 
+	/**
+	 * 鏌ヨ褰撳墠宸ュ崟鏁呴殰鏄庣粏
+	 */
+	function getRealFault() {
+		return new Promise(() => {
+			queryByOrderId({ orderId: realData.value.code, tenantId: tenant.value }).then((res) => {
+				const faultStats = {}
+				const warningStats = {}
+				// 寰幆鍒楄〃锛屾牴鎹粨鏉熸椂闂村拰寮�濮嬫椂闂达紝璁$畻鏁呴殰鏃堕暱
+				res.forEach((item) => {
+					const faultName = item.faultName
+					item.totalTime = new Date(item.endTime) - new Date(item.startTime)
+					item.totalTime = item.totalTime / 1000
 
-  function getRealFault() {
-    return new Promise((resolve, reject) => {
-      queryByOrderId({ orderId: realData.value.code, tenantId: tenant.value }).then((res) => {
-        console.log(`output->res`, res)
+					if (item.faultType === 1) {
+						if (!faultStats[faultName]) {
+							faultStats[faultName] = {
+								count: 0,
+								totalDuration: 0, // 姣
+							}
+						}
+						// 鏇存柊缁熻鏁版嵁
+						faultStats[faultName].count += 1
+						faultStats[faultName].totalDuration += item.totalTime
+					} else if (item.faultType === 2) {
+						if (!warningStats[faultName]) {
+							warningStats[faultName] = {
+								count: 0,
+								totalDuration: 0, // 姣
+							}
+						}
+						// 鏇存柊缁熻鏁版嵁
+						warningStats[faultName].count += 1
+						warningStats[faultName].totalDuration += item.totalTime
+					}
+				})
+				console.log(`output->res`, res)
+				faultList.value = res
+				const prepareFault = prepareData(faultStats)
+				const prepareWarning = prepareData(warningStats)
+				console.log('prePareFault', prepareFault)
+				console.log('prePareWarning', prepareWarning)
+				chart1.setOption({
 
-        // 寰幆鍒楄〃锛屾牴鎹粨鏉熸椂闂村拰寮�濮嬫椂闂达紝璁$畻鏁呴殰鏃堕暱
-        res.forEach((item) => {
-          item.totalTime = item.endTime - item.startTime
-        })
-})
-    })
-  }
+					series: [{ data: prepareFault.duration }],
+				})
+				chart2.setOption({
+          xAxis: { data: prepareFault.faultNames },
+					series: [{ data: prepareFault.count }],
+				})
+				chart3.setOption({
+					series: [{ data: prepareWarning.duration }],
+				})
+				chart4.setOption({
+          xAxis: { data: prepareWarning.faultNames },
+					series: [{ data: prepareWarning.count }],
+				})
+			})
+		})
+	}
+	// 灏嗙粺璁℃暟鎹浆鎹负閫傚悎ECharts浣跨敤鐨勬牸寮�
+	function prepareData(stats) {
+		const faultNames = Object.keys(stats)
+		const durationSorted = faultNames.sort((a, b) => stats[b].totalDuration - stats[a].totalDuration)
+		const countSorted = faultNames.sort((a, b) => stats[b].count - stats[a].count)
 
-
+		return {
+			faultNames: faultNames,
+			duration: durationSorted.map((name) => ({ name, value: stats[name].totalDuration })),
+			count: countSorted.map((name) => ({ name, value: stats[name].count })),
+		}
+	}
 	var move = true
 	function moveImage() {
 		if (move) {
@@ -566,8 +808,39 @@
 		}
 	}
 
-	function back() {
-		router.back()
+	// 寮�濮嬭嚜鍔ㄦ粴鍔�
+	const startAutoScroll = () => {
+		console.log('寮�濮嬭嚜鍔ㄦ粴鍔�')
+		scrollInterval = setInterval(() => {
+			if (isScrolling.value) return
+			isScrolling.value = true
+
+			const container = scrollContainer.value
+
+			// 婊氬姩瀹瑰櫒
+			container.scrollTop += 1
+			// 褰撴粴鍔ㄥ埌搴曢儴鏃讹紝閲嶇疆鍒伴《閮�
+			if (container.scrollTop >= container.scrollHeight - container.clientHeight) {
+				setTimeout(() => {
+					container.scrollTop = 0
+					isScrolling.value = false // 绔嬪嵆鍏佽涓嬩竴娆℃粴鍔ㄥ紑濮�
+					return
+				}, 2000)
+			}
+			if (container.scrollTop < container.scrollHeight - container.clientHeight) {
+        setTimeout(() => {
+          isScrolling.value = false
+        }, 20) // 纭繚姣忔婊氬姩闂撮殧瓒冲闀匡紝閬垮厤杩炵画瑙﹀彂
+      }
+		}, 20) // 鎺у埗婊氬姩閫熷害锛屾暟鍊艰秺灏忔粴鍔ㄨ秺蹇�
+
+	}
+
+	// 鍋滄鑷姩婊氬姩
+	const stopAutoScroll = () => {
+		if (scrollInterval) {
+			clearInterval(scrollInterval)
+		}
 	}
 
 	listAllEqp()
@@ -576,6 +849,8 @@
 	onMounted(() => {
 		Timer.value = setInterval(queryRealTime, 3000)
 		Timer2.value = setInterval(moveImage, 50)
+		startAutoScroll()
+		setTimeout(initCharts, 500)
 	})
 
 	onUnmounted(() => {
@@ -583,6 +858,7 @@
 		clearInterval(Timer2.value)
 		Timer.value = null
 		Timer2.value = null
+		stopAutoScroll()
 	})
 </script>
 
@@ -726,7 +1002,6 @@
 
 	.eqpStatus {
 		width: 848px;
-		
 	}
 	.rightInfo {
 		display: flex;
@@ -738,7 +1013,7 @@
 
 	.rightTop {
 		display: flex;
-		height: 440px;
+		height: 340px;
 		padding-left: 10px;
 	}
 	.rightTwo {
@@ -748,7 +1023,7 @@
 
 	.infoChart {
 		width: 340px;
-		height: 300px;
+		height: 350px;
 		/* background: white; */
 		margin-left: 10px;
 		margin-top: 10px;
@@ -842,7 +1117,7 @@
 	}
 	.tempMoisChart {
 		width: 690px;
-		height: 440px;
+		height: 340px;
 		/* background: white; */
 
 		padding: 20px;
@@ -1016,8 +1291,8 @@
 		justify-items: center;
 	}
 	.blingbling {
-		-webkit-animation: scaleout 1.0s infinite ease-in-out;
-		animation: scaleout 1.0s infinite ease-in-out;
+		-webkit-animation: scaleout 1s infinite ease-in-out;
+		animation: scaleout 1s infinite ease-in-out;
 	}
 	.center {
 		display: flex;
@@ -1056,23 +1331,41 @@
 			opacity: 0;
 		}
 	}
-  .error-div {
-    position: absolute; display: flex; align-items: center;
-  }
-  .error-marker {
-    width: 18px; height: 18px; background: red; border-radius: 50%;
-  }
-  .error-msg {
-    margin-left: 6px;
-    height: 24px;
-    background: gray; border-radius: 5px; font-weight: bold; color: red
-  }
-  .warn-marker {
-    width: 18px; height: 18px; background: orange; border-radius: 50%;
-  }
-  .warn-msg {
-    margin-left: 6px;
-    height: 24px;
-    background: gray; border-radius: 5px; font-weight: bold; color: orange;
-  }
+	.error-div {
+		position: absolute;
+		display: flex;
+		align-items: center;
+	}
+	.error-marker {
+		width: 18px;
+		height: 18px;
+		background: red;
+		border-radius: 50%;
+	}
+	.error-msg {
+		margin-left: 6px;
+		height: 24px;
+		background: gray;
+		border-radius: 5px;
+		font-weight: bold;
+		color: red;
+	}
+	.warn-marker {
+		width: 18px;
+		height: 18px;
+		background: orange;
+		border-radius: 50%;
+	}
+	.warn-msg {
+		margin-left: 6px;
+		height: 24px;
+		background: gray;
+		border-radius: 5px;
+		font-weight: bold;
+		color: orange;
+	}
+	.scroll-container {
+		height: 280px; /* 璁剧疆浣犳兂瑕佺殑楂樺害 */
+		overflow: hidden;
+	}
 </style>
diff --git a/src/views/system/loginmini/MiniLogin.vue b/src/views/system/loginmini/MiniLogin.vue
index d68028d..8fb6179 100644
--- a/src/views/system/loginmini/MiniLogin.vue
+++ b/src/views/system/loginmini/MiniLogin.vue
@@ -15,7 +15,7 @@
 		<div v-show="type === 'login'">
 			<div class="aui-content">
 				<div class="aui-container">
-					<div class="aui-form">
+					<div class="aui-form" style="min-height: 570px;">
 						<div class="aui-image">
 							<div>Lanpu</div>
 							<div>涓嵂杞﹂棿鏅鸿兘鐢熶骇绠$悊绯荤粺</div>
@@ -29,9 +29,9 @@
 									<div class="aui-flex-box" :class="activeIndex === 'accountLogin' ? 'activeNav on' : ''" @click="loginClick('accountLogin')"
 										>{{ t('sys.login.signInFormTitle') }}
 									</div>
-									<div class="aui-flex-box" :class="activeIndex === 'phoneLogin' ? 'activeNav on' : ''" @click="loginClick('phoneLogin')"
-										>{{ t('sys.login.mobileSignInFormTitle') }}
-									</div>
+<!--									<div class="aui-flex-box" :class="activeIndex === 'phoneLogin' ? 'activeNav on' : ''" @click="loginClick('phoneLogin')"-->
+<!--										>{{ t('sys.login.mobileSignInFormTitle') }}-->
+<!--									</div>-->
 								</div>
 								<div class="aui-form-box" style="height: 180px">
 									<a-form ref="loginRef" :model="formData" v-if="activeIndex === 'accountLogin'" @keyup.enter.native="loginHandleClick">
@@ -94,43 +94,43 @@
 											{{ t('sys.login.loginButton') }}</a-button
 										>
 									</div>
-									<div class="aui-flex">
-										<a class="aui-linek-code aui-flex-box" @click="codeHandleClick">{{ t('sys.login.qrSignInFormTitle') }}</a>
-									</div>
+<!--									<div class="aui-flex">-->
+<!--										<a class="aui-linek-code aui-flex-box" @click="codeHandleClick">{{ t('sys.login.qrSignInFormTitle') }}</a>-->
+<!--									</div>-->
 									<div class="aui-flex">
 										<a class="aui-linek-code aui-flex-box" @click="registerHandleClick">{{ t('sys.login.registerButton') }}</a>
 									</div>
 								</div>
 							</div>
-							<a-form @keyup.enter.native="loginHandleClick">
-								<div class="aui-flex aui-third-text">
-									<div class="aui-flex-box aui-third-border">
-										<span>{{ t('sys.login.otherSignIn') }}</span>
-									</div>
-								</div>
-								<div class="aui-flex" :class="`${prefixCls}-sign-in-way`">
-									<div class="aui-flex-box">
-										<div class="aui-third-login">
-											<a title="github" @click="onThirdLogin('github')"><GithubFilled /></a>
-										</div>
-									</div>
-									<div class="aui-flex-box">
-										<div class="aui-third-login">
-											<a title="浼佷笟寰俊" @click="onThirdLogin('wechat_enterprise')"><icon-font class="item-icon" type="icon-qiyeweixin3" /></a>
-										</div>
-									</div>
-									<div class="aui-flex-box">
-										<div class="aui-third-login">
-											<a title="閽夐拤" @click="onThirdLogin('dingtalk')"><DingtalkCircleFilled /></a>
-										</div>
-									</div>
-									<div class="aui-flex-box">
-										<div class="aui-third-login">
-											<a title="寰俊" @click="onThirdLogin('wechat_open')"><WechatFilled /></a>
-										</div>
-									</div>
-								</div>
-							</a-form>
+<!--							<a-form @keyup.enter.native="loginHandleClick">-->
+<!--								<div class="aui-flex aui-third-text">-->
+<!--									<div class="aui-flex-box aui-third-border">-->
+<!--										<span>{{ t('sys.login.otherSignIn') }}</span>-->
+<!--									</div>-->
+<!--								</div>-->
+<!--								<div class="aui-flex" :class="`${prefixCls}-sign-in-way`">-->
+<!--									<div class="aui-flex-box">-->
+<!--										<div class="aui-third-login">-->
+<!--											<a title="github" @click="onThirdLogin('github')"><GithubFilled /></a>-->
+<!--										</div>-->
+<!--									</div>-->
+<!--									<div class="aui-flex-box">-->
+<!--										<div class="aui-third-login">-->
+<!--											<a title="浼佷笟寰俊" @click="onThirdLogin('wechat_enterprise')"><icon-font class="item-icon" type="icon-qiyeweixin3" /></a>-->
+<!--										</div>-->
+<!--									</div>-->
+<!--									<div class="aui-flex-box">-->
+<!--										<div class="aui-third-login">-->
+<!--											<a title="閽夐拤" @click="onThirdLogin('dingtalk')"><DingtalkCircleFilled /></a>-->
+<!--										</div>-->
+<!--									</div>-->
+<!--									<div class="aui-flex-box">-->
+<!--										<div class="aui-third-login">-->
+<!--											<a title="寰俊" @click="onThirdLogin('wechat_open')"><WechatFilled /></a>-->
+<!--										</div>-->
+<!--									</div>-->
+<!--								</div>-->
+<!--							</a-form>-->
 						</div>
 					</div>
 				</div>
diff --git a/src/views/system/tenant/tenant.api.ts b/src/views/system/tenant/tenant.api.ts
index 2ac4a05..d4b1531 100644
--- a/src/views/system/tenant/tenant.api.ts
+++ b/src/views/system/tenant/tenant.api.ts
@@ -19,6 +19,7 @@
   recycleBinPageList = '/sys/tenant/recycleBinPageList',
   deleteLogicDeleted = '/sys/tenant/deleteLogicDeleted',
   revertTenantLogic = '/sys/tenant/revertTenantLogic',
+  listAll = '/sys/tenant/listAll',
 }
 
 /**
@@ -174,3 +175,8 @@
     handleSuccess();
   })
 };
+
+
+export const listAllTenant = (params) => {
+  return defHttp.get({url: Api.listAll, params});
+}

--
Gitblit v1.9.3