From 4b97b561558690c2cee302c6b64c90a8a10fb30f Mon Sep 17 00:00:00 2001
From: batman <978517621@qq.com>
Date: 星期一, 13 三月 2023 20:01:50 +0800
Subject: [PATCH] 新修改添加页面

---
 src/views/intellectInspect/intelligentLine/index.vue |  193 +++++++++++++++++++++++++++++++++++------------
 1 files changed, 142 insertions(+), 51 deletions(-)

diff --git a/src/views/intellectInspect/intelligentLine/index.vue b/src/views/intellectInspect/intelligentLine/index.vue
index 6fee9ce..4948afa 100644
--- a/src/views/intellectInspect/intelligentLine/index.vue
+++ b/src/views/intellectInspect/intelligentLine/index.vue
@@ -1,14 +1,18 @@
 <template>
-    <div class="container">
+    <div class="container" id="screenFull">
         <div class="big-title" @click="goBack()">国泰新华智能巡检系统</div>
         <div style="height: 20px;font-size: 14px;line-height: 20px; color: #00ffff; margin-top: 4px">{{ present }}</div>
         <div class="btns">
-            <div class="fullbtn" @click="onScreenfullClick">
-                <div class="toFull">
-                    <i class="iconfont" :title="isScreenfull ? $t('message.user.title6') : $t('message.user.title5')" :class="!isScreenfull ? 'icon-fullscreen' : 'icon-tuichuquanping'"></i>
-                </div>
-                <div>全屏</div>
-            </div>
+<!--            <div class="fullbtn" @click="onScreenfullClick">-->
+<!--                <div class="toFull">-->
+<!--                    <i class="iconfont" :title="全屏" :class="!isScreenfull ? 'icon-fullscreen' : 'icon-tuichuquanping'"></i>-->
+<!--                  <el-icon>-->
+<!--                    <FullScreen v-if="isScreenfull"/>-->
+<!--                    <Close v-else/>-->
+<!--                  </el-icon>-->
+<!--                </div>-->
+<!--                <div>全屏</div>-->
+<!--            </div>-->
             <div class="backBtn" @click="goBack()">
                 <img src="../../../assets/loginPage/back-icon.png"/>
                 <div>退出</div>
@@ -16,7 +20,38 @@
         </div>
         <div class="blocks">
             <div>
+            <div class="warning-part">
+              <div class="warn-tit">异常警报:</div>
+              <div class="warn-msg" v-if="excepOrder && excepOrder.length>0">
+                <div class="warn-item" v-for="(item,index) in excepOrder" :key="index">
+                  <div class="i-tit">
+                    编号{{item.pointCode}} 巡检异常!
+                  </div>
+                  <div v-if="item.dataReportType == 2 || item.dataReportType == 3">
+                    正常值:<span>{{(item.secondReferenceSign==1?'>':'>=') + item.secondReferenceValue + ',' + (item.thirdReferenceSign==3?'<':'<=') + item.thirdReferenceValue}}</span>
+                  </div>
+                  <div>
+                    巡检值:
+                    <span v-if="item.dataReportType == 1">{{ item.firstReferenceResult==1?'正常':item.firstReferenceResult==2?'异常':'备'}}</span>
+                    <span v-if="item.dataReportType == 2">{{ item.secondReferenceResult}}</span>
+                  </div>
+                  <div>
+                    已通知负责人:<span>{{item.hiddenDangerHandlerName}}</span>
+                  </div>
+                  <div>
+                    负责人电话:<span>{{item.hiddenDangerHandlerPhone}}</span>
+                  </div>
+                  <div>
+                    工单回执状态:<span>{{item.handlerStatus==1?'待响应':item.handlerStatus==2?'标记误报':item.handlerStatus==3?'自查处理中':item.handlerStatus==4?'已移交上报':item.handlerStatus==5?'待验收':'已完成'}}</span>
+                  </div>
+                </div>
+              </div>
+              <div v-else>
+                暂无异常警报
+              </div>
+            </div>
             <div class="star-pic">
+                <dv-decoration-12 scanDur="5" haloDur="4" class="scan"/>
                 <div class="star-bg"><img src="../../../assets/loginPage/star-bg.png" /></div>
                 <div class="star"><img src="../../../assets/loginPage/device-pic.png" /></div>
             </div>
@@ -63,7 +98,7 @@
                                     <span>参数:</span><span class="target">{{ t.secondReferenceResult + t.quotaUnit }}</span>
                                 </div>
                                 <div>
-                                    <span>巡检结果:</span><span class="target">{{ t.reportResult == null ? '--' : t.reportResult == 0 ? '正常' : '异常' }}</span>
+                                    <span>巡检结果:</span><span class="target">{{ t.reportResult == null ? '--' : t.reportResult == 0 ? '正常' : t.reportResult == 1 ? '异常' : '备' }}</span>
                                 </div>
                             </div>
                         </div>
@@ -87,7 +122,7 @@
 <script lang="ts">
 import screenfull from 'screenfull';
 import { lineApi } from '/@/api/intelligentLine';
-import {toRefs, reactive, ref, onMounted, onUnmounted, computed, nextTick} from 'vue';
+import {toRefs, reactive, ref, onMounted, onUnmounted, computed, nextTick, onActivated} from 'vue';
 import {useRoute} from 'vue-router';
 import { storeToRefs } from 'pinia';
 import { initBackEndControlRoutes } from '/@/router/backEnd';
@@ -100,11 +135,11 @@
 // 定义接口来定义对象的类型
 interface stateType {
     present: string;
-    isScreenfull: boolean;
     path: string;
     socket: any;
     socketData: string;
     data: Array<any>;
+    excepOrder: Array<any>;
     id: string;
     defaultImg: string
 }
@@ -117,11 +152,11 @@
         const route = useRoute();
         const state = reactive<stateType>({
             present: '',
-            isScreenfull: false,
             path: '',
             socketData: '',
             socket: null,
             data: [],
+            excepOrder: [],
             id: '',
             defaultImg: new URL('../../../assets/default-img.jpg',import.meta.url).href
         });
@@ -135,6 +170,9 @@
             getLine(state.id)
             getUrl(state.id)
         });
+      onActivated(()=>{
+        onScreenfullClick();
+      })
 
         const dataList = computed(() => {
             return userInfos.value.dataList;
@@ -150,12 +188,9 @@
                     alert('您的浏览器不支持socket');
                 } else {
                     // 实例化socket
-                    // debugger
                     let uid =  userInfos.value.uid.toString()
                     var url = state.path + uid + '*' + id;
-                    console.log(url,'url',uid,'uid')
                     url = url.replace('https', 'ws').replace('http', 'ws');
-                    console.log(url, '获取地址');
                     state.socket = new WebSocket(url);
                     // 监听socket连接
                     state.socket.onopen = () => {
@@ -167,9 +202,11 @@
                     };
                     // 监听socket消息
                     state.socket.onmessage = (msg) => {
+                      console.log(msg.data,'msg.data')
+                      console.log(msg.data.rfidInfos,'rfidInfos')
                         if (msg.data === '连接成功') return;
-                        console.log(msg.data,'data')
-                        userInfos.value.dataList = JSON.parse(msg.data);
+                        userInfos.value.dataList = JSON.parse(msg.data).rfidInfos;
+                        state.excepOrder = JSON.parse(msg.data).excepOrder;
                     };
                 }
             } else {
@@ -188,7 +225,12 @@
         const getLine = async (id:string) => {
             let res = await lineApi().getLine({ id: id });
             if (res.data.code === '200') {
-                userInfos.value.dataList = res.data.data;
+                userInfos.value.dataList = res.data.data.rfidInfos
+              if(res.data.data.excepOrder){
+                state.excepOrder = res.data.data.excepOrder
+              }else{
+                state.excepOrder = []
+              }
             } else {
                 ElMessage({
                     type: 'warning',
@@ -199,18 +241,12 @@
 
         // 全屏
         const onScreenfullClick = () => {
+            const element = document.getElementById('screenFull')
             if (!screenfull.isEnabled) {
                 ElMessage.warning('暂不不支持全屏');
                 return false;
             }
-            screenfull.toggle();
-            screenfull.on('change', () => {
-                if (screenfull.isFullscreen) {
-                    state.isScreenfull = true;
-                } else {
-                    state.isScreenfull = false;
-                }
-            });
+            screenfull.toggle(element);
         };
 
         // 返回
@@ -237,7 +273,7 @@
 };
 </script>
 
-<!-- Add "scoped" attribute to limit CSS to this component only -->
+<!-- Add "scoped" attribute to limit CSS to this components only -->
 <style scoped lang="scss">
     @media screen and (min-width: 1366px) {
         .big-title {
@@ -317,7 +353,7 @@
                 height: 24px;
                 border-radius: 50%;
                 position: absolute;
-                border: 1px solid rgba(0, 225, 255, 0.6);
+                border: 1px solid rgba(0, 114, 255, 0.6);
                 top: -12px;
                 left: 10px;
 
@@ -331,7 +367,7 @@
                     -moz-border-radius: 50%;
                     border: 1px solid #0072ff;
                     border-radius: 50%;
-                    background-color: #00e1ff;
+                    background-color: #0072ff;
                     z-index: 2;
                 }
                 .pulse {
@@ -340,7 +376,7 @@
                     height: 48px;
                     left: -13px;
                     top: -13px;
-                    border: 1px solid #00e1ff;
+                    border: 1px solid #0072ff;
                     -webkit-border-radius: 50%;
                     -moz-border-radius: 50%;
                     border-radius: 50%;
@@ -352,7 +388,7 @@
                     -webkit-animation-iteration-count: infinite;
                     -moz-animation-iteration-count: infinite;
                     animation-iteration-count: infinite;
-                    box-shadow: 1px 1px 30px #00e1ff;
+                    box-shadow: 1px 1px 30px #0072ff;
                 }
                 .pulse1 {
                     position: absolute;
@@ -360,7 +396,7 @@
                     height: 48px;
                     left: -13px;
                     top: -13px;
-                    border: 1px solid #00e1ff;
+                    border: 1px solid #0072ff;
                     -webkit-border-radius: 50%;
                     -moz-border-radius: 50%;
                     border-radius: 50%;
@@ -372,7 +408,7 @@
                     -webkit-animation-iteration-count: infinite;
                     -moz-animation-iteration-count: infinite;
                     animation-iteration-count: infinite;
-                    box-shadow: 1px 1px 30px #00e1ff;
+                    box-shadow: 1px 1px 30px #0072ff;
                 }
             }
             & > div {
@@ -525,7 +561,7 @@
                 height: 24px;
                 border-radius: 50%;
                 position: absolute;
-                border: 1px solid rgba(0, 225, 255, 0.6);
+                border: 1px solid rgba(0, 114, 255, 0.6);
                 top: -12px;
                 left: 10px;
 
@@ -537,9 +573,9 @@
                     top: 5px;
                     -webkit-border-radius: 50%;
                     -moz-border-radius: 50%;
-                    border: 1px solid #0072ff;
+                    border: 1px solid #0072FF;
                     border-radius: 50%;
-                    background-color: #00e1ff;
+                    background-color: #0072FF;
                     z-index: 2;
                 }
                 .pulse {
@@ -548,7 +584,7 @@
                     height: 48px;
                     left: -13px;
                     top: -13px;
-                    border: 1px solid #00e1ff;
+                    border: 1px solid #0072FF;
                     -webkit-border-radius: 50%;
                     -moz-border-radius: 50%;
                     border-radius: 50%;
@@ -560,7 +596,7 @@
                     -webkit-animation-iteration-count: infinite;
                     -moz-animation-iteration-count: infinite;
                     animation-iteration-count: infinite;
-                    box-shadow: 1px 1px 30px #00e1ff;
+                    box-shadow: 1px 1px 30px #0072FF;
                 }
                 .pulse1 {
                     position: absolute;
@@ -568,7 +604,7 @@
                     height: 48px;
                     left: -13px;
                     top: -13px;
-                    border: 1px solid #00e1ff;
+                    border: 1px solid #0072FF;
                     -webkit-border-radius: 50%;
                     -moz-border-radius: 50%;
                     border-radius: 50%;
@@ -580,7 +616,7 @@
                     -webkit-animation-iteration-count: infinite;
                     -moz-animation-iteration-count: infinite;
                     animation-iteration-count: infinite;
-                    box-shadow: 1px 1px 30px #00e1ff;
+                    box-shadow: 1px 1px 30px #0072FF;
                 }
             }
             & > div {
@@ -734,7 +770,7 @@
                 height: 24px;
                 border-radius: 50%;
                 position: absolute;
-                border: 1px solid rgba(0, 225, 255, 0.6);
+                border: 1px solid rgba(0, 114, 255, 0.6);
                 top: -12px;
                 left: 2px;
 
@@ -748,7 +784,7 @@
                     -moz-border-radius: 50%;
                     border: 1px solid #0072ff;
                     border-radius: 50%;
-                    background-color: #00e1ff;
+                    background-color: #0072ff;
                     z-index: 2;
                 }
                 .pulse {
@@ -757,7 +793,7 @@
                     height: 48px;
                     left: -13px;
                     top: -13px;
-                    border: 1px solid #00e1ff;
+                    border: 1px solid #0072ff;
                     -webkit-border-radius: 50%;
                     -moz-border-radius: 50%;
                     border-radius: 50%;
@@ -769,7 +805,7 @@
                     -webkit-animation-iteration-count: infinite;
                     -moz-animation-iteration-count: infinite;
                     animation-iteration-count: infinite;
-                    box-shadow: 1px 1px 30px #00e1ff;
+                    box-shadow: 1px 1px 30px #0072ff;
                 }
                 .pulse1 {
                     position: absolute;
@@ -777,7 +813,7 @@
                     height: 48px;
                     left: -13px;
                     top: -13px;
-                    border: 1px solid #00e1ff;
+                    border: 1px solid #0072ff;
                     -webkit-border-radius: 50%;
                     -moz-border-radius: 50%;
                     border-radius: 50%;
@@ -789,7 +825,7 @@
                     -webkit-animation-iteration-count: infinite;
                     -moz-animation-iteration-count: infinite;
                     animation-iteration-count: infinite;
-                    box-shadow: 1px 1px 30px #00e1ff;
+                    box-shadow: 1px 1px 30px #0072ff;
                 }
             }
             & > div {
@@ -1002,11 +1038,11 @@
                 width: 100%;
                 height: 100%;
                 display: flex;
-                justify-content: center;
+                justify-content: left;
                 align-items: flex-start;
-                overflow: hidden;
-                overflow-x: auto;
-                overflow-y: auto;
+                overflow-y: hidden;
+                overflow-x: hidden;
+                overflow: auto;
             }
 
             .line-map {
@@ -1361,19 +1397,74 @@
                     }
                 }
             }
+            .warning-part{
+              position: absolute;
+              width: calc((100vw - 120px) / 7);
+              height: calc((100vw - 120px) / 7);
+              background-image: linear-gradient(to right, rgba(8, 109, 209, 0.4), rgba(11, 255, 255, 0.2));
+              border: 1px solid #36fcfc;
+              z-index: 99999;
+              top: 100px;
+              right: 60px;
+              padding: 10px;
+              color: rgb(0, 255, 255);
+
+              .warn-tit{
+                height: 26px;
+                padding-bottom: 5px;
+                font-weight: bolder;
+                border-bottom: 1px solid rgb(0, 255, 255);
+              }
+              .warn-msg{
+                width: 100%;
+                margin-top: 10px;
+                height: calc(100% - 36px);
+                overflow: hidden;
+                overflow-y: scroll;
+                scrollbar-width: none; /* firefox */
+                -ms-overflow-style: none; /* IE 10+ */
+
+                &::-webkit-scrollbar {
+                  display: none; /* Chrome Safari */
+                }
+                .warn-item{
+                  padding: 0 0 10px;
+                  margin-bottom: 10px;
+                  border-bottom: 1px solid rgb(0, 255, 255);
+
+                  &:last-of-type{
+                    border-bottom: none;
+                    margin-bottom: 0;
+                  }
+                }
+              }
+            }
             .star-pic {
                 position: absolute;
                 width: calc((100vw - 120px) / 7);
                 height: calc((100vw - 120px) / 7);
-                z-index: 999999999;
+                z-index: 9999;
                 bottom: 40px;
                 right: 40px;
                 padding: 20px;
+
+                .scan{
+                    position: inherit;
+                    width: 65%;
+                    height: 65%;
+                    z-index: 99997;
+                    left: 0;
+                    top: 0;
+                    right: 0;
+                    bottom: 0;
+                    margin: auto;
+                }
 
                 .star-bg {
                     position: inherit;
                     width: 100%;
                     height: 100%;
+                    z-index: 99998;
                     left: 0;
                     top: 0;
                     img {
@@ -1382,11 +1473,11 @@
                         animation: circle 30s linear infinite;
                     }
                 }
-
                 .star {
                     position: inherit;
                     width: 100%;
                     height: 100%;
+                    z-index: 99999;
                     left: 0;
                     top: 0;
                     img {

--
Gitblit v1.9.2