From 346c9a61f4407be8180aff944bf75bed9c5efd00 Mon Sep 17 00:00:00 2001
From: baoshiwei <baoshiwei@shlanbao.cn>
Date: 星期五, 06 十二月 2024 16:08:40 +0800
Subject: [PATCH] 完成设备大屏,新增报警大屏
---
src/views/dry/bigScreen/BigFault.vue | 1372 +++++++++++++++++++++++++
src/views/dashboard/map/index.vue | 233 ++++
src/enums/pageEnum.ts | 2
src/views/sys/login/TokenLoginPage.vue | 2
.env | 2
src/views/system/tenant/tenant.api.ts | 6
src/views/dry/bigScreen/BigEqpCloud.vue | 187 ++
src/layouts/default/header/index.vue | 2
package.json | 2
src/views/system/loginmini/MiniLogin.vue | 74
src/views/dry/bigScreen/BigEqp.vue | 416 ++++++
src/router/routes/index.ts | 11
src/views/dry/bigScreen/BigFaultCloud.vue | 905 +++++++++++-----
13 files changed, 2,778 insertions(+), 436 deletions(-)
diff --git a/.env b/.env
index a2cd447..c0dab3c 100644
--- a/.env
+++ b/.env
@@ -2,7 +2,7 @@
VITE_PORT = 3100
# 缃戠珯鏍囬
-VITE_GLOB_APP_TITLE = 鍏版郸鏅鸿兘绉戞妧
+VITE_GLOB_APP_TITLE = 鍏版郸涓嵂骞茬嚗浜戝钩鍙�
# 绠�绉帮紝鐢ㄤ簬閰嶇疆鏂囦欢鍚嶅瓧 涓嶈鍑虹幇绌烘牸銆佹暟瀛楀紑澶寸瓑鐗规畩瀛楃
VITE_GLOB_APP_SHORT_NAME = JeecgBootAdmin
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/enums/pageEnum.ts b/src/enums/pageEnum.ts
index 7c48680..37deed3 100644
--- a/src/enums/pageEnum.ts
+++ b/src/enums/pageEnum.ts
@@ -2,7 +2,7 @@
// basic login path
BASE_LOGIN = '/login',
// basic home path
- BASE_HOME = '/dashboard/workshop',
+ BASE_HOME = '/dashboard/map',
// error page path
ERROR_PAGE = '/exception',
// error log page path
diff --git a/src/layouts/default/header/index.vue b/src/layouts/default/header/index.vue
index de8ea79..ba59bb1 100644
--- a/src/layouts/default/header/index.vue
+++ b/src/layouts/default/header/index.vue
@@ -11,7 +11,7 @@
/>
<LayoutBreadcrumb v-if="getShowContent && getShowBread" :theme="getHeaderTheme" />
<!-- 娆㈣繋璇� -->
- <span v-if="getShowContent && getShowBreadTitle && !getIsMobile" :class="[prefixCls, `${prefixCls}--${getHeaderTheme}`,'headerIntroductionClass']"> 娆㈣繋杩涘叆 {{ '涓嵂杞﹂棿鏅鸿兘鐢熶骇绠$悊绯荤粺' }} </span>
+ <span v-if="getShowContent && getShowBreadTitle && !getIsMobile" :class="[prefixCls, `${prefixCls}--${getHeaderTheme}`,'headerIntroductionClass']"> 娆㈣繋杩涘叆 {{ '鍏版郸涓嵂骞茬嚗浜戝钩鍙�' }} </span>
</div>
<!-- left end -->
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..97b590d 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>
-
+<!-- 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-->
+<!-- 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;">
+ 宸﹀墠鎬ュ仠
+ </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;">
+ 璁惧鎬ュ仠锛堟�伙級
+ </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;">
+ 鍑烘枡鎬ュ仠
+ </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;">
+ 闈㈡澘鎬ュ仠
+ </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;">
+ 椋庣鍗囧紓甯�
+ </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;">
+ 椋庣闄嶅紓甯�
+ </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;">
+ 椋庢満杩囨祦
+ </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;">
+ 婊氱瓛鍗囧紓甯�
+ </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;">
+ 婊氱瓛闄嶅紓甯�
+ </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;">
+ 婊氱瓛杩囨祦
+ </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;">
+ 娓╁害鎶ヨ
+ </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;">
+ 宸﹀墠闂ㄦ姤璀�
+ </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;">
+ 宸﹀悗闂ㄦ姤璀�
+ </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;">
+ 鍙冲墠闂ㄦ姤璀�
+ </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;">
+ 鍙冲悗闂ㄦ姤璀�
+ </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;">
+ 婊氱瓛涓嶅湪楂樹綅
+ </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;">
+ 椋庣涓嶅湪楂樹綅
+ </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;">
+ 椋庣涓嶅湪浣庝綅
+ </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;">
+ 鍔犵儹浣嶄紶鎰熷櫒鎶ヨ
+ </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;">
+ 宸﹀墠椋庣涓嶅湪楂樹綅
+ </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;">
+ 宸﹀墠椋庣涓嶅湪浣庝綅
+ </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;">
+ 宸﹀悗椋庣涓嶅湪楂樹綅
+ </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;">
+ 宸﹀悗椋庣涓嶅湪浣庝綅
+ </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;">
+ 鍙冲墠椋庣涓嶅湪楂樹綅
+ </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;">
+ 鍙冲墠椋庣涓嶅湪浣庝綅
+ </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;">
+ 鍙冲悗椋庣涓嶅湪楂樹綅
+ </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;">
+ 鍙冲悗椋庣涓嶅湪浣庝綅
+ </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;">
+ 宸﹀墠婊氱瓛涓嶅湪浣庝綅
+ </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;">
+ 宸﹀悗婊氱瓛涓嶅湪浣庝綅
+ </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;">
+ 鍙冲墠婊氱瓛涓嶅湪浣庝綅
+ </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;">
+ 鍙冲悗婊氱瓛涓嶅湪浣庝綅
+ </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;">
宸﹀墠鎬ュ仠
</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;">
璁惧鎬ュ仠锛堟�伙級
</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;">
鍑烘枡鎬ュ仠
</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;">
闈㈡澘鎬ュ仠
</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;">
椋庣鍗囧紓甯�
</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;">
椋庣闄嶅紓甯�
</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;">
椋庢満杩囨祦
</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;">
婊氱瓛鍗囧紓甯�
</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;">
婊氱瓛闄嶅紓甯�
</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;">
婊氱瓛杩囨祦
</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;">
娓╁害鎶ヨ
</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;">
宸﹀墠闂ㄦ姤璀�
</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;">
宸﹀悗闂ㄦ姤璀�
</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;">
鍙冲墠闂ㄦ姤璀�
</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;">
鍙冲悗闂ㄦ姤璀�
</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;">
婊氱瓛涓嶅湪楂樹綅
</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;">
椋庣涓嶅湪楂樹綅
</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;">
椋庣涓嶅湪浣庝綅
</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;">
鍔犵儹浣嶄紶鎰熷櫒鎶ヨ
</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;">
宸﹀墠椋庣涓嶅湪楂樹綅
</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;">
宸﹀墠椋庣涓嶅湪浣庝綅
</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;">
宸﹀悗椋庣涓嶅湪楂樹綅
</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;">
宸﹀悗椋庣涓嶅湪浣庝綅
</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;">
鍙冲墠椋庣涓嶅湪楂樹綅
</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;">
鍙冲墠椋庣涓嶅湪浣庝綅
</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;">
鍙冲悗椋庣涓嶅湪楂樹綅
</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;">
鍙冲悗椋庣涓嶅湪浣庝綅
</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;">
宸﹀墠婊氱瓛涓嶅湪浣庝綅
</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;">
宸﹀悗婊氱瓛涓嶅湪浣庝綅
</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;">
鍙冲墠婊氱瓛涓嶅湪浣庝綅
</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;">
鍙冲悗婊氱瓛涓嶅湪浣庝綅
@@ -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"> 宸﹀墠鎬ュ仠 </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"> 璁惧鎬ュ仠锛堟�伙級 </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"> 鍑烘枡鎬ュ仠 </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"> 闈㈡澘鎬ュ仠 </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"> 椋庣鍗囧紓甯� </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"> 椋庣闄嶅紓甯� </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"> 椋庢満杩囨祦 </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"> 婊氱瓛鍗囧紓甯� </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"> 婊氱瓛闄嶅紓甯� </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"> 婊氱瓛杩囨祦 </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"> 娓╁害鎶ヨ </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"> 宸﹀墠闂ㄦ姤璀� </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"> 宸﹀悗闂ㄦ姤璀� </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"> 鍙冲墠闂ㄦ姤璀� </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"> 鍙冲悗闂ㄦ姤璀� </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"> 婊氱瓛涓嶅湪楂樹綅 </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"> 椋庣涓嶅湪楂樹綅 </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"> 椋庣涓嶅湪浣庝綅 </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"> 鍔犵儹浣嶄紶鎰熷櫒鎶ヨ </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"> 宸﹀墠椋庣涓嶅湪楂樹綅 </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"> 宸﹀墠椋庣涓嶅湪浣庝綅 </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"> 宸﹀悗椋庣涓嶅湪楂樹綅 </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"> 宸﹀悗椋庣涓嶅湪浣庝綅 </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"> 鍙冲墠椋庣涓嶅湪楂樹綅 </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"> 鍙冲墠椋庣涓嶅湪浣庝綅 </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"> 鍙冲悗椋庣涓嶅湪楂樹綅 </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"> 鍙冲悗椋庣涓嶅湪浣庝綅 </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"> 宸﹀墠婊氱瓛涓嶅湪浣庝綅 </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"> 宸﹀悗婊氱瓛涓嶅湪浣庝綅 </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"> 鍙冲墠婊氱瓛涓嶅湪浣庝綅 </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"> 鍙冲悗婊氱瓛涓嶅湪浣庝綅 </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;">
- 宸﹀墠鎬ュ仠
- </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;">
- 璁惧鎬ュ仠锛堟�伙級
- </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;">
- 鍑烘枡鎬ュ仠
- </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;">
- 闈㈡澘鎬ュ仠
- </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;">
- 椋庣鍗囧紓甯�
- </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;">
- 椋庣闄嶅紓甯�
- </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;">
- 椋庢満杩囨祦
- </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;">
- 婊氱瓛鍗囧紓甯�
- </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;">
- 婊氱瓛闄嶅紓甯�
- </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;">
- 婊氱瓛杩囨祦
- </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;">
- 娓╁害鎶ヨ
- </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"> 宸﹀墠鎬ュ仠 </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"> 璁惧鎬ュ仠锛堟�伙級 </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"> 鍑烘枡鎬ュ仠 </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"> 闈㈡澘鎬ュ仠 </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"> 椋庣鍗囧紓甯� </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"> 椋庣闄嶅紓甯� </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"> 椋庢満杩囨祦 </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"> 婊氱瓛鍗囧紓甯� </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"> 婊氱瓛闄嶅紓甯� </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"> 婊氱瓛杩囨祦 </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"> 娓╁害鎶ヨ </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;">
- 宸﹀墠闂ㄦ姤璀�
- </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;">
- 宸﹀悗闂ㄦ姤璀�
- </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;">
- 鍙冲墠闂ㄦ姤璀�
- </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;">
- 鍙冲悗闂ㄦ姤璀�
- </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"> 宸﹀墠闂ㄦ姤璀� </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"> 宸﹀悗闂ㄦ姤璀� </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"> 鍙冲墠闂ㄦ姤璀� </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"> 鍙冲悗闂ㄦ姤璀� </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;">
- 婊氱瓛涓嶅湪楂樹綅
- </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;">
- 椋庣涓嶅湪楂樹綅
- </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;">
- 椋庣涓嶅湪浣庝綅
- </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;">
- 鍔犵儹浣嶄紶鎰熷櫒鎶ヨ
- </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;">
- 宸﹀墠椋庣涓嶅湪楂樹綅
- </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;">
- 宸﹀墠椋庣涓嶅湪浣庝綅
- </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;">
- 宸﹀悗椋庣涓嶅湪楂樹綅
- </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;">
- 宸﹀悗椋庣涓嶅湪浣庝綅
- </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;">
- 鍙冲墠椋庣涓嶅湪楂樹綅
- </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;">
- 鍙冲墠椋庣涓嶅湪浣庝綅
- </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;">
- 鍙冲悗椋庣涓嶅湪楂樹綅
- </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;">
- 鍙冲悗椋庣涓嶅湪浣庝綅
- </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;">
- 宸﹀墠婊氱瓛涓嶅湪浣庝綅
- </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;">
- 宸﹀悗婊氱瓛涓嶅湪浣庝綅
- </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;">
- 鍙冲墠婊氱瓛涓嶅湪浣庝綅
- </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;">
- 鍙冲悗婊氱瓛涓嶅湪浣庝綅
- </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"> 婊氱瓛涓嶅湪楂樹綅 </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"> 椋庣涓嶅湪楂樹綅 </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"> 椋庣涓嶅湪浣庝綅 </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"> 鍔犵儹浣嶄紶鎰熷櫒鎶ヨ </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"> 宸﹀墠椋庣涓嶅湪楂樹綅 </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"> 宸﹀墠椋庣涓嶅湪浣庝綅 </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"> 宸﹀悗椋庣涓嶅湪楂樹綅 </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"> 宸﹀悗椋庣涓嶅湪浣庝綅 </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"> 鍙冲墠椋庣涓嶅湪楂樹綅 </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"> 鍙冲墠椋庣涓嶅湪浣庝綅 </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"> 鍙冲悗椋庣涓嶅湪楂樹綅 </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"> 鍙冲悗椋庣涓嶅湪浣庝綅 </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"> 宸﹀墠婊氱瓛涓嶅湪浣庝綅 </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"> 宸﹀悗婊氱瓛涓嶅湪浣庝綅 </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"> 鍙冲墠婊氱瓛涓嶅湪浣庝綅 </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"> 鍙冲悗婊氱瓛涓嶅湪浣庝綅 </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/sys/login/TokenLoginPage.vue b/src/views/sys/login/TokenLoginPage.vue
index 643f862..0f5fb3f 100644
--- a/src/views/sys/login/TokenLoginPage.vue
+++ b/src/views/sys/login/TokenLoginPage.vue
@@ -5,7 +5,7 @@
<div class="app-loading-dots">
<span class="dot dot-spin"><i></i><i></i><i></i><i></i></span>
</div>
- <div class="app-loading-title">涓嵂杞﹂棿鏅鸿兘鐢熶骇绠$悊绯荤粺</div>
+ <div class="app-loading-title">鍏版郸涓嵂骞茬嚗浜戝钩鍙�</div>
</div>
</div>
</template>
diff --git a/src/views/system/loginmini/MiniLogin.vue b/src/views/system/loginmini/MiniLogin.vue
index d68028d..ca4d646 100644
--- a/src/views/system/loginmini/MiniLogin.vue
+++ b/src/views/system/loginmini/MiniLogin.vue
@@ -15,10 +15,10 @@
<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>
+ <div>鍏版郸涓嵂骞茬嚗浜戝钩鍙�</div>
<!-- <div class="aui-image-text">-->
<!-- <img :src="adTextImg" />-->
<!-- </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