Просмотр исходного кода

1. 解决压风机界面不显示
2. 解决保德注氮备机控制下发不了的问题

hongrunxia 6 месяцев назад
Родитель
Сommit
6a46fafbb5

+ 2 - 1
public/js/config.js

@@ -1,6 +1,7 @@
 const VUE_APP_URL = {
   baseUrl: "/modelreq", // 后台地址
-  webRtcUrl: '/webRtc' // rtsp服务器IP地址
+  webRtcUrl: '/webRtc', // rtsp服务器IP地址
+  wsUrl: 'http://182.92.126.35' // WebSocket 地址
 }
 const History_Type = {
   // type: 'remote', // remote、vent  (remote 代表的是历史查询走的装备院的接口,vent是走的咱们的,目前神东的项目都用remote, 其他矿用vent)

+ 1 - 0
src/hooks/setting/index.ts

@@ -85,6 +85,7 @@ export const useGlobSetting = (): Readonly<GlobConfig> => {
     logoUrl: logoUrl,
     title: title,
     domainUrl: domainUrl,
+    wsUrl: VUE_APP_URL.wsUrl,
     apiUrl: VITE_GLOB_API_URL,
     shortName: VITE_GLOB_APP_SHORT_NAME,
     // openSso: VITE_GLOB_APP_OPEN_SSO,

+ 34 - 1
src/layouts/default/header/components/VoiceBroadcast.vue

@@ -38,15 +38,22 @@
   import { Tooltip, Badge } from 'ant-design-vue';
   import { SoundOutlined, BellOutlined } from '@ant-design/icons-vue';
   import Icon from '/@/components/Icon';
-  import { defineComponent, ref } from 'vue';
+  import { defineComponent, ref, unref, onMounted } from 'vue';
   import { defHttp } from '/@/utils/http/axios';
   import { useRouter } from 'vue-router';
+  import { connectWebSocket, onWebSocket } from '/@/hooks/web/useWebSocket';
+  import { getToken } from '/@/utils/auth';
+  import md5 from 'crypto-js/md5';
+  import { useUserStore } from '/@/store/modules/user';
+  import { useGlobSetting } from '/@/hooks/setting';
 
   export default defineComponent({
     name: 'VoiceBroadcast',
     components: { Icon, Tooltip, Badge, SoundOutlined, BellOutlined },
 
     setup() {
+      const userStore = useUserStore();
+      const glob = useGlobSetting();
       const router = useRouter();
       const list = (params) => defHttp.get({ url: '/safety/ventanalyAlarmLog/list', params });
       const activeKey = ref(0);
@@ -70,6 +77,32 @@
         showWarningBroad();
       }
 
+      // 初始化 WebSocket
+      function initWebSocket() {
+        let token = getToken();
+        //将登录token生成一个短的标识
+        let wsClientId = md5(token);
+        let userId = unref(userStore.getUserInfo).id + '_' + wsClientId;
+        // WebSocket与普通的请求所用协议有所不同,ws等同于http,wss等同于https
+        let url = glob.domainUrl?.replace('https://', 'wss://').replace('http://', 'ws://') + '/websocket/' + userId;
+        connectWebSocket(url);
+        onWebSocket(onWebSocketMessage);
+      }
+
+      function onWebSocketMessage(data) {
+        if (data.cmd === 'topic' || data.cmd === 'user') {
+          //
+          setTimeout(() => {
+            if (isShowWarningBroad.value) {
+              toSelectList(0);
+            }
+          }, 0);
+        }
+      }
+      onMounted(() => {
+        // initWebSocket();
+      });
+
       return { showWarningBroad, isShowWarningBroad, activeKey, toSelectList, broadcastList, toMore };
     },
   });

+ 9 - 9
src/layouts/default/header/components/notify/index.vue

@@ -7,7 +7,7 @@
     <DynamicNotice ref="dynamicNoticeRef" v-bind="dynamicNoticeProps" />
     <DetailModal @register="registerDetail" />
 
-    <sys-message-modal @register="registerMessageModal" @refresh="reloadCount"></sys-message-modal>
+    <sys-message-modal @register="registerMessageModal" @refresh="reloadCount" />
   </div>
 </template>
 <script lang="ts">
@@ -28,7 +28,7 @@
   import { getToken } from '/@/utils/auth';
   import md5 from 'crypto-js/md5';
 
-  import SysMessageModal from '/@/views/system/message/components/SysMessageModal.vue'
+  import SysMessageModal from '/@/views/system/message/components/SysMessageModal.vue';
 
   export default defineComponent({
     components: {
@@ -59,17 +59,17 @@
       });
 
       const [registerMessageModal, { openModal: openMessageModal }] = useModal();
-      function clickBadge(){
+      function clickBadge() {
         //消息列表弹窗前去除角标
         for (let i = 0; i < listData.value.length; i++) {
           listData.value[i].count = 0;
         }
-        openMessageModal(true, {})
+        openMessageModal(true, {});
       }
 
       const popoverVisible = ref<boolean>(false);
       onMounted(() => {
-       initWebSocket();
+        initWebSocket();
       });
 
       function mapAnnouncement(item) {
@@ -123,7 +123,7 @@
         let token = getToken();
         //将登录token生成一个短的标识
         let wsClientId = md5(token);
-        let userId = unref(userStore.getUserInfo).id + "_" + wsClientId;
+        let userId = unref(userStore.getUserInfo).id + '_' + wsClientId;
         // WebSocket与普通的请求所用协议有所不同,ws等同于http,wss等同于https
         let url = glob.domainUrl?.replace('https://', 'wss://').replace('http://', 'ws://') + '/websocket/' + userId;
         connectWebSocket(url);
@@ -134,9 +134,9 @@
         if (data.cmd === 'topic' || data.cmd === 'user') {
           //update-begin-author:taoyan date:2022-7-13 for: VUEN-1674【严重bug】系统通知,为什么必须刷新右上角才提示
           //后台保存数据太慢 前端延迟刷新消息
-          setTimeout(()=>{
+          setTimeout(() => {
             loadData();
-          }, 1000)
+          }, 1000);
           //update-end-author:taoyan date:2022-7-13 for: VUEN-1674【严重bug】系统通知,为什么必须刷新右上角才提示
         }
       }
@@ -146,7 +146,7 @@
         popoverVisible.value = false;
         readAllMsg({}, loadData);
       }
-      async function reloadCount(id){
+      async function reloadCount(id) {
         try {
           await editCementSend(id);
           await loadData();

+ 26 - 0
src/views/vent/deviceManager/deviceTable/index.vue

@@ -90,6 +90,32 @@
             },
           };
         }
+        // date日期
+        if (item.type == 8) {
+          columnsItem = {
+            label: item.des, //_dictText
+            field: item.monitorcode,
+            component: 'JDictSelectTag',
+            componentProps: {
+              dictCode: item.dict,
+              placeholder: '请选择',
+              // stringToNumber: true,
+            },
+          };
+        }
+        // 日期+时间
+        if (item.type == 9) {
+          columnsItem = {
+            label: item.des, //_dictText
+            field: item.monitorcode,
+            component: 'JDictSelectTag',
+            componentProps: {
+              dictCode: item.dict,
+              placeholder: '请选择',
+              // stringToNumber: true,
+            },
+          };
+        }
       }
       columnList.push(columnsItem);
     });

+ 2 - 2
src/views/vent/monitorManager/compressor/components/nitrogenHome_bd.vue

@@ -51,8 +51,8 @@
                     <div class="top-left">
                         <div class="button-box" @click="handlerDevice(airCompressorState[0], '主机启动')">主机启动</div>
                         <div class="button-box" @click="handlerDevice(airCompressorState[0], '主机停止')">主机停止</div>
-                        <div class="button-box" @click="handlerDevice(airCompressorState[1], '备机启动')">备机启动</div>
-                        <div class="button-box" @click="handlerDevice(airCompressorState[1], '备机停止')">备机停止</div>
+                        <div class="button-box" @click="handlerDevice(airCompressorState[0], '备机启动')">备机启动</div>
+                        <div class="button-box" @click="handlerDevice(airCompressorState[0], '备机停止')">备机停止</div>
                     </div>
                     <div class="top-center">
                         <div class="top-c-label">通信状态:</div>

+ 2 - 2
src/views/vent/monitorManager/compressor/nitrogen.dixia.threejs.ts

@@ -61,7 +61,7 @@ class NitrogenUnderground {
           if (element) {
             const nitrogenMonitorCSS3D = new CSS3DSprite(element);
             nitrogenMonitorCSS3D.name = 'monitorNitrogenText' + i;
-            nitrogenMonitorCSS3D.scale.set(0.0045, 0.0045, 0.0045);
+            nitrogenMonitorCSS3D.scale.set(0.005, 0.005, 0.005);
             if (i == 0) nitrogenMonitorCSS3D.position.set(-0.89, 0.31, 0);
             if (i == 1) nitrogenMonitorCSS3D.position.set(1.44, 0.31, 0.04);
             // if (i == 2) nitrogenMonitorCSS3D.position.set(-0.89, 0.31, 0.08);
@@ -77,7 +77,7 @@ class NitrogenUnderground {
       if (element) {
         const downWindMonitorCSS3D = new CSS3DSprite(element);
         downWindMonitorCSS3D.name = 'downWindMonitor';
-        downWindMonitorCSS3D.scale.set(0.0045, 0.0045, 0.0045);
+        downWindMonitorCSS3D.scale.set(0.005, 0.005, 0.005);
         downWindMonitorCSS3D.position.set(-2.95, 0.57, 0);
         this.group.add(downWindMonitorCSS3D);
       }

+ 0 - 2
src/views/vent/monitorManager/fanLocalMonitor/index.vue

@@ -1433,8 +1433,6 @@
           });
         }
       }
-
-      //targetVolume
     };
   }
 

+ 2 - 2
src/views/vent/monitorManager/nitrogen/components/nitrogenHome.vue

@@ -41,7 +41,7 @@
             </div>
           </template>
         </fourBorderBg>
-        <fourBorderBg :class="`cqg${groupNum}`" :id="`cqgMonitor${groupNum}`" v-if="cqgMonitorList.length > 0">
+        <fourBorderBg :class="`cqg${groupNum}`" :id="`cqgMonitor${groupNum}`" v-if="cqgMonitorList && cqgMonitorList.length > 0">
           <div class="title">{{ `风包${groupNum}` }}</div>
           <template v-for="(cqgMonitor, cqgMonitorIndex) in cqgMonitorList" :key="cqgMonitorIndex">
             <div class="monitor-item">
@@ -110,7 +110,7 @@
       <div class="top-box">
         <!-- 左边监测数据 -->
         <div class="lr-box left-box">
-          <div class="left-container" v-if="preFanMonitorData.length > 0">
+          <div class="left-container" v-if="preFanMonitorData && preFanMonitorData.length > 0">
             <div class="item item-l" v-for="(groupNum, index) in monitorDataGroup" :key="index">
               <div class="monitor-box">
                 <ventBox1>

+ 2 - 1
src/views/vent/monitorManager/nitrogen/nitrogen.data.1.ts

@@ -2,7 +2,7 @@ import { ref, defineAsyncComponent } from 'vue';
 import { useGlobSetting } from '/@/hooks/setting';
 export function getNitrogenHome() {
   const { sysOrgCode } = useGlobSetting();
-  // const sysOrgCode = 'sdmtjtswmk';
+  // const sysOrgCode = 'sdmtjtbltmk';
   let nitrogenHome;
   switch (sysOrgCode) {
     case 'sdmtjtbltmk': //补连塔
@@ -65,6 +65,7 @@ export const bottomBtnList = ref([
 
 export async function getMonitorData() {
   const { sysOrgCode } = useGlobSetting();
+  // const sysOrgCode = 'sdmtjtbltmk';
   switch (sysOrgCode) {
     case 'yjmdsankuang': // 窑街三矿
       return await import('./nitrogen.dataYJ');

+ 1 - 0
types/config.d.ts

@@ -143,6 +143,7 @@ export interface GlobConfig {
   // Service interface url
   apiUrl: string;
   domainUrl: string;
+  wsUrl: string;
   // Upload url (作废)
   uploadUrl?: string;
   openSso?: string;