瀏覽代碼

[Mod 0000] 风窗添加了CO预测按钮; 摄像头接口进行重新对接

hongrunxia 1 周之前
父節點
當前提交
b7dcf3ee13

+ 1 - 2
src/hooks/system/useCamera.ts

@@ -45,9 +45,8 @@ export function useCamera() {
         ) {
           // 从海康平台接口获取视频流
           const videoType = item['devicekind'] === 'toHKRtsp' ? 'rtsp' : '';
-
           try {
-            const data = await cameraAddr({ cameraCode: item['addr'], videoType });
+            const data = await cameraAddr({ devicekind: item['devicekind'], cameraCode: item['addr'], videoType });
             if (data && data['url']) {
               cameraAddrs.push({ name: item['name'], addr: data['url'], cameraRate: item['cameraRate'], devicekind: item['devicekind'] });
             }

+ 5 - 0
src/layouts/default/sider/bottomSideder.vue

@@ -103,6 +103,11 @@
           url.location = 'https://swkhmi.shendong.vip:9043/#SW_CA'; //使这个窗口跳转到。
           return;
         }
+        if (path.path.includes('outlink/index')) {
+          var url = window.open('_blank') as Window; //打开一个窗口,然后用
+          url.location = path['frameSrc']; //使这个窗口跳转到。
+          return;
+        }
         // if (currentRoute.value.path.startsWith('/micro')) {
         //   go(path.path);
         //   // window.history.pushState({}, '', path.path);

+ 29 - 6
src/views/vent/deviceManager/tableColumns/tableColumns.data.ts

@@ -1,5 +1,6 @@
 import { BasicColumn } from '/@/components/Table';
 import { FormSchema } from '/@/components/Table';
+import { getDictItemsByCode } from '/@/utils/dict';
 
 export const columns: BasicColumn[] = [
   {
@@ -52,9 +53,22 @@ export const searchFormSchema: FormSchema[] = [
     label: '页面类型',
     field: 'pagetype',
     component: 'JDictSelectTag',
-    componentProps: {
-      dictCode: 'pagetype',
-      placeholder: '请选择状态',
+    // componentProps: {
+    //   dictCode: 'pagetype',
+    //   placeholder: '请选择状态',
+    // },
+    componentProps: ({ formModel }) => {
+      if (formModel['devicetype'] && getDictItemsByCode(`${formModel['devicetype']}_pagetype`)) {
+        return {
+          dictCode: `${formModel['devicetype']}_pagetype`,
+          placeholder: '请选择',
+        };
+      } else {
+        return {
+          dictCode: 'pagetype',
+          placeholder: '请选择',
+        };
+      }
     },
     colProps: { span: 6 },
   },
@@ -93,9 +107,18 @@ export const formSchema: FormSchema[] = [
     label: '页面类型',
     field: 'pagetype',
     component: 'JDictSelectTag',
-    componentProps: {
-      dictCode: 'pagetype',
-      placeholder: '请选择状态',
+    componentProps: ({ formModel }) => {
+      if (formModel['devicetype'] && getDictItemsByCode(`${formModel['devicetype']}_pagetype`)) {
+        return {
+          dictCode: `${formModel['devicetype']}_pagetype`,
+          placeholder: '请选择',
+        };
+      } else {
+        return {
+          dictCode: 'pagetype',
+          placeholder: '请选择',
+        };
+      }
     },
   },
   {

+ 9 - 7
src/views/vent/monitorManager/balancePressMonitor/balancePress.data.ts

@@ -68,18 +68,15 @@ export const windowParam = [
 export const localFanParam = [
   {
     title: '风机频率',
-    code: 'FanfHz',
-    unit: 'Hz',
+    dataIndex: 'FanfHz',
   },
   {
     title: '供风量',
-    code: 'readData.m3_merge',
-    unit: 'm³/min',
+    dataIndex: 'readData.m3_merge',
   },
   {
     title: '运行风机',
-    code: 'FanRun',
-    unit: '',
+    dataIndex: 'FanRun',
   },
 ];
 
@@ -97,9 +94,14 @@ export const monitorParam = [
   //   code: 'strinstallpos',
   //   unit: '',
   // },
+  // {
+  //   title: '监测值',
+  //   code: 'readData.ss_analog_value',
+  //   unit: '',
+  // },
   {
     title: '监测值',
-    code: 'readData.ss_analog_value',
+    code: 'readData.V', //神东大部分矿安全监控设备值都用的字段V,之后如果有矿监测值字段不是V时,沟通运维改点表为V
     unit: '',
   },
 ];

+ 3 - 0
src/views/vent/monitorManager/deviceMonitor/index.vue

@@ -94,6 +94,9 @@
   onBeforeUnmount(() => {
     unmountMicroApps(['/micro-vent-3dModal']);
   });
+  onUnmounted(() => {
+    isShow.value = false;
+  });
 </script>
 
 <style lang="less" scoped>

+ 0 - 1
src/views/vent/monitorManager/fanLocalMonitor/fmfanLocal.three.ts

@@ -9,7 +9,6 @@ class fmFan {
     this.model = model;
   }
   mountedThree() {
-    
     return new Promise((resolve) => {
       this.model.setGLTFModel([this.modelName]).then((gltf) => {
         this.group = gltf[0];

文件差異過大導致無法顯示
+ 664 - 612
src/views/vent/monitorManager/fanLocalMonitor/index.vue


+ 2 - 18
src/views/vent/monitorManager/gateMonitor/index.vue

@@ -29,12 +29,10 @@
         <div v-if="hasPermission('btn:control') && selectData.ndoorcount == '3'" class="button-box" @click="playAnimation(9)">关闭中间门</div>
         <div v-if="hasPermission('btn:control')" class="button-box" @click="playAnimation(3)">打开后门</div>
         <div v-if="hasPermission('btn:control')" class="button-box" @click="playAnimation(4)">关闭后门</div>
-        <div v-if="selectData['isShowGatesContrl']" class="button-box" @click="playAnimation(5)">同时打开</div>
-        <div v-if="selectData['isShowGatesContrl']" class="button-box" @click="playAnimation(6)">同时关闭</div>
+        <div v-if="hasPermission('btn:totalControl') || selectData['isShowGatesContrl']" class="button-box" @click="playAnimation(5)">同时打开</div>
+        <div v-if="hasPermission('btn:totalControl') || selectData['isShowGatesContrl']" class="button-box" @click="playAnimation(6)">同时关闭</div>
         <div v-if="hasPermission('btn:controlWindow')" class="button-box" @click="playAnimation(10)">A窗控制</div>
         <div v-if="hasPermission('btn:controlWindow')" class="button-box" @click="playAnimation(11)">B窗控制</div>
-        <div v-if="hasPermission('gate:gasTest')" class="button-box" @click="playAnimation('gasTest')">瓦斯调控预测</div>
-        <!-- gate:gasTest -->
       </div>
       <!-- 控制模式 -->
       <div class="top-right row" v-if="hasPermission('btn:remote')">
@@ -614,11 +612,6 @@
         modalType.value = '11';
         modalIsShow.value = true;
         break;
-      case 'gasTest': // 风窗控制
-        modalTitle.value = '瓦斯预测值';
-        modalType.value = 'gasTest';
-        modalIsShow.value = true;
-        break;
     }
 
     if (globalConfig?.simulatedPassword) {
@@ -710,15 +703,6 @@
     };
     let handler = () => {};
     debugger;
-    if (handlerState === 'gasTest') {
-      if (value < 0.5) {
-        message.warning('前门已打开。。。');
-      } else if (value < 0.6) {
-        message.warning('前门已打开。。。');
-      }
-      modalIsShow.value = false;
-      return;
-    }
 
     switch (handlerState) {
       case '1': // 打开前门

+ 2 - 1
src/views/vent/monitorManager/mainFanMonitor/main.threejs.ts

@@ -455,7 +455,6 @@ export const mountedThree = (playerVal1) => {
       if (mainLjWindObj.airJin1) mainLjWindObj.airJin1.visible = false;
       if (mainLjWindObj.airJin2) mainLjWindObj.airJin2.visible = false;
       if (mainLjWindObj.airChu1) mainLjWindObj.airChu1.visible = false;
-      if (mainLjWindObj.airChu2) mainLjWindObj.airChu2.visible = false;
     });
     startAnimation();
   });
@@ -469,6 +468,8 @@ export const destroy = () => {
     mainWindObj = undefined;
     mainXjWindObj?.destroy();
     mainXjWindObj = undefined;
+    mainLjWindObj?.destroy();
+    mainLjWindObj = undefined;
     model.clearGroup(bgGroup);
     bgGroup = undefined;
     group = undefined;

+ 6 - 0
src/views/vent/monitorManager/windowMonitor/components/modal.vue

@@ -41,6 +41,12 @@
           <a-input-number size="small" placeholder="0" :min="0" v-model:value="data" />
         </div>
       </template>
+      <template v-if="type.startsWith('COTest')">
+        <div class="vent-flex-row input-box">
+          <div class="label">一氧化碳(ppm):</div>
+          <a-input-number size="small" placeholder="0" :min="0" v-model:value="data" />
+        </div>
+      </template>
       <div v-if="!globalConfig?.simulatedPassword" class="vent-flex-row input-box">
         <div class="label">操作密码:</div>
         <a-input size="small" type="password" v-model:value="passWord" />

+ 17 - 0
src/views/vent/monitorManager/windowMonitor/index.vue

@@ -50,6 +50,7 @@
           <div v-if="hasPermission('window:showAngleArea')" class="button-box" @click="setAngle(1)">设定风窗面积</div>
         </div>
         <div v-if="hasPermission('window:sameSet')" class="button-box" @click="setControl('sameSetValue', '风窗面积设置')">设定风窗面积</div>
+        <div v-if="hasPermission('window:COTest')" class="button-box" @click="setControl('COTest', 'CO调控预测')">CO调控预测</div>
       </div>
       <div class="top-right row">
         <div v-if="hasPermission('window:zhldkz')" class="button-box" @click="setControl('autoRun', '开启自主调控')">开启自主调控</div>
@@ -241,6 +242,7 @@
   import { useModal } from '/@/components/Modal';
   import { useCamera } from '/@/hooks/system/useCamera';
   import { usePermission } from '/@/hooks/web/usePermission';
+  import { useMessage } from '/@/hooks/web/useMessage';
   const { hasPermission } = usePermission();
 
   const globalConfig = inject('globalConfig');
@@ -248,6 +250,7 @@
   const { currentRoute } = useRouter();
 
   const MonitorDataTable = ref();
+  const { createConfirm } = useMessage();
 
   const playerRef = ref();
   const scroll = reactive({
@@ -557,6 +560,20 @@
       } else if (handlerState.startsWith('frontSetValue')) {
         data.paramcode = handlerState;
         data.value = value;
+      } else if (handlerState == 'COTest') {
+        if (value > 50) {
+          // message.warning(`一氧化碳超限,可能存在火灾隐患,是否开启${selectData.value.strinstallpos},使有毒烟气短路?`, 3000);
+          createConfirm({
+            iconType: 'warning',
+            title: '控制',
+            content: `一氧化碳超限,可能存在火灾隐患,是否开启${selectData.value.strinstallpos},使有毒烟气短路?`,
+            onOk: () => {
+              message.success('指令已下发成功!');
+            },
+            onCancel: () => handleCancel(),
+          });
+          return;
+        }
       } else {
         data.paramcode = handlerState;
         if (handlerState == 'autoRun' || handlerState == 'autoStop') {

部分文件因文件數量過多而無法顯示