ソースを参照

1.主风机添加控制功能
2. 风门远程就地控制逻辑进行修改

hongrunxia 10 ヶ月 前
コミット
3e2cc15670

+ 10 - 10
src/views/vent/monitorManager/fanLocalMonitor/index.vue

@@ -499,7 +499,6 @@
   import { useCamera } from '/@/hooks/system/useCamera';
   import { CaretRightOutlined } from '@ant-design/icons-vue';
   // import ConditionAssistance from './components/conditionAssistance.vue';
-  import { DownloadOutlined } from '@ant-design/icons-vue';
   import reportInfo from '../comment/components/reportInfo.vue';
   import { save, reportList } from '../../reportManager/reportManager.api';
   import { usePermission } from '/@/hooks/web/usePermission';
@@ -578,15 +577,16 @@
       },
     ],
     rightBtnArr: [
-      // {
-      //   key: 'gasAlarmSet',
-      //   value: '瓦斯限值设定',
-      //   // permission: 'fanLocal:control',
-      // },
-      // {
-      //   key: 'kkjc',
-      //   value: '工况辅助决策',
-      // },
+      {
+        key: 'gasAlarmSet',
+        value: '瓦斯限值设定',
+        permission: 'fanLocal:gasAlarmSet',
+      },
+      {
+        key: 'kkjc',
+        value: '工况辅助决策',
+        permission: 'fanLocal:kkjc',
+      },
       {
         key: 'diameter',
         value: '风筒直径',

+ 1 - 1
src/views/vent/monitorManager/gateMonitor/index.vue

@@ -32,7 +32,7 @@
         <div v-if="hasPermission('btn:control') && selectData.deviceType != 'gate_ss'" class="button-box" @click="playAnimation(5)">同时打开</div>
         <div v-if="hasPermission('btn:control') && selectData.deviceType != 'gate_ss'" class="button-box" @click="playAnimation(6)">同时关闭</div>
       </div>
-      <div class="top-right row" v-if="hasPermission('btn:remote')">
+      <div class="top-right row" v-if="hasPermission('btn:remoteLocal')">
         <div class="control-type row">
           <div class="control-title">控制模式:</div>
           <a-radio-group v-model:value="selectData.autoRoManual" @change="playAnimation(7)">

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

@@ -642,8 +642,7 @@ export const deviceMonitorList = [
 ];
 
 export function getMonitorComponent() {
-  let { sysOrgCode } = useGlobSetting();
-  sysOrgCode = 'sdmtjtltmk';
+  const { sysOrgCode } = useGlobSetting();
   let groutHome;
   switch (sysOrgCode) {
     case 'sdmtjtbetmk': // 布尔台

+ 168 - 6
src/views/vent/monitorManager/mainFanMonitor/index.vue

@@ -107,8 +107,11 @@
     <div class="title-text" style="position: absolute; z-index: 9999; width: 100%; text-align: center">{{
       selectData.supplyAirAddr || selectData.strinstallpos || selectData.stationname
     }}</div>
-    <div class="top-box control-group" v-if="globalConfig?.simulatedPassword">
-      <div class="button-box" v-for="(item, index) in modalTypeArr.centerBtnArr" :key="index" @click="showModal(item)">{{ item.value }}</div>
+
+    <div v-if="hasPermission('btn:show')" class="top-box control-group">
+      <template v-for="(item, index) in modalTypeArr.centerBtnArr" :key="index">
+        <div v-if="hasPermission(item.permission)" class="button-box" @click="showModal(item)">{{ item.value }}</div>
+      </template>
       <!-- <div class="button-box" v-for="(item, index) in modalTypeArr.centerBtnArr" :key="index" @click="showModal(item)">{{ item.value }}</div> -->
     </div>
     <div class="data-show-box">
@@ -323,7 +326,15 @@
     style="z-index: 999; position: absolute; top: 100px; right: 15px; width: 100%; height: 100%; margin: auto; pointer-events: none"
   >
   </div>
-  <a-modal v-model:visible="modalIsShow" :centered="true" :title="modalTitle" @ok="handleOk" @cancel="handleCancel" :destroyOnClose="true">
+  <a-modal
+    v-model:visible="modalIsShow"
+    :centered="true"
+    :maskClosable="false"
+    :title="modalTitle"
+    @ok="handleOk"
+    @cancel="handleCancel"
+    :destroyOnClose="true"
+  >
     <template #footer v-if="modalType == 'fbm'">
       <a-button key="back" @click="handleCancel">取消</a-button>
     </template>
@@ -358,6 +369,21 @@
           </a-radio-group>
         </div>
       </div>
+      <div class="" v-if="modalType == 'startFan'">
+        <!-- 不互斥控制 -->
+        <div class="startSmoke-select">
+          <div class="label">主机:</div>
+          <div :class="{ 'button-box': true, 'button-disable': false }" @click="handleOk('Fan1Open')">开启</div>
+          <div :class="{ 'button-box': true, 'button-disable': false }" @click="handleOk('Fan1Stop')">停止</div>
+          <!-- <div :class="{ 'button-box': true, 'button-disable': false }" @click="handleOk('Fan1Reset')">复位</div> -->
+        </div>
+        <div class="startSmoke-select">
+          <div class="label">备机:</div>
+          <div :class="{ 'button-box': true, 'button-disable': false }" @click="handleOk('Fan2Open')">开启</div>
+          <div :class="{ 'button-box': true, 'button-disable': false }" @click="handleOk('Fan2Stop')">停止</div>
+          <!-- <div :class="{ 'button-box': true, 'button-disable': false }" @click="handleOk('Fan2Reset')">复位</div> -->
+        </div>
+      </div>
       <!-- 防爆门控制 -->
       <div class="" v-if="modalType == 'fbm'">
         <div class="vent-margin-t-20">
@@ -795,6 +821,7 @@
       }
     } else if (selectData['Fan2StartStatus'] == 0 && selectData['Fan1StartStatus'] == 0) {
     } else if (modalType.value == 'changeSmoke') {
+      //182模拟
       // 不听风倒机
       if (selectData['Fan1StartStatus'] == 1 && selectData['Fan2StartStatus'] == 0) {
         // 由主到备
@@ -849,6 +876,61 @@
             });
         }
       }
+    } else if (modalType.value == 'changeSmoke1') {
+      // 矿上实际
+      if (selectData['Fan1StartStatus'] == 1 && selectData['Fan2StartStatus'] == 0) {
+        // 由主到备
+        // 正启动
+        if (selectData['Fan1FreqForwardRun'] && selectData['Fan1FreqForwardRun'] == 1) {
+          console.log('一键1倒2正启动控制  ');
+          start('CtrlFan1ToFan2')
+            .then(() => {
+              frontMonitorIsShow.value = false;
+              backMonitorIsShow.value = true;
+            })
+            .catch(() => {
+              createMessage.error('操作失败,请联系管理员');
+            });
+        }
+        // 反启动
+        if (selectData['Fan1FreqReverseRun'] && selectData['Fan1FreqReverseRun'] == 1) {
+          console.log('一键1倒2反启动控制');
+          start('CtrlFan1ToFan2')
+            .then(() => {
+              frontMonitorIsShow.value = false;
+              backMonitorIsShow.value = true;
+            })
+            .catch(() => {
+              createMessage.error('操作失败,请联系管理员');
+            });
+        }
+      } else if (selectData['Fan2StartStatus'] == 1 && selectData['Fan1StartStatus'] == 0) {
+        // 由备到主
+        // 正启动
+        if (selectData['Fan2FreqForwardRun'] && selectData['Fan2FreqForwardRun'] == 1) {
+          console.log('一键2倒1正启动控制');
+          start('CtrlFan2ToFan1')
+            .then(() => {
+              frontMonitorIsShow.value = true;
+              backMonitorIsShow.value = false;
+            })
+            .catch(() => {
+              createMessage.error('操作失败,请联系管理员');
+            });
+        }
+        // 反启动
+        if (selectData['Fan2FreqReverseRun'] && selectData['Fan2FreqReverseRun'] == 1) {
+          console.log('一键2倒1反启动控制');
+          start('CtrlFan2ToFan1')
+            .then(() => {
+              frontMonitorIsShow.value = true;
+              backMonitorIsShow.value = false;
+            })
+            .catch(() => {
+              createMessage.error('操作失败,请联系管理员');
+            });
+        }
+      }
     } else if (modalType.value == 'frequency') {
       if (selectData['Fan1StartStatus'] == 1 && selectData['Fan2StartStatus'] == 0) {
         start('CtrlFan1FreqSet', frequencyVal.value).catch(() => {
@@ -891,10 +973,41 @@
           createMessage.success('关门成功');
         });
       }
-    }
+    } else if (modalType.value === 'startFan') {
+      let paramcode = '';
+      if (flag === 'Fan1Open') {
+        paramcode = 'CtrlFan1Start';
+      } else if (flag === 'Fan2Open') {
+        paramcode = 'CtrlFan2Start';
+      } else if (flag === 'Fan1Stop') {
+        paramcode = 'CtrlFan1Stop';
+      } else if (flag === 'Fan2Stop') {
+        paramcode = 'CtrlFan2Stop';
+      } else if (flag === 'Fan1Reset') {
+        paramcode = 'CtrlFan1Reset';
+      } else if (flag === 'Fan2Reset') {
+        paramcode = 'CtrlFan2Reset';
+      }
 
-    modalTitle.value = '';
-    modalIsShow.value = false;
+      start(paramcode)
+        .then(() => {
+          if (globalConfig.History_Type == 'remote') {
+            createMessage.success('指令已下发至生产管控平台成功!');
+          } else {
+            createMessage.success('指令已下发成功!');
+          }
+          frontMonitorIsShow.value = false;
+          backMonitorIsShow.value = true;
+        })
+        .catch(() => {
+          createMessage.error('操作失败,请联系管理员');
+        });
+    } else if (modalType.value == 'resetFan') {
+      // 一键复位
+      start('CtrlFanReset').catch(() => {
+        createMessage.error('操作失败,请联系管理员');
+      });
+    }
   };
 
   // 取消
@@ -1333,6 +1446,55 @@
       }
     }
   }
+  :deep(.button-box) {
+    position: relative;
+    padding: 5px;
+    // border: 1px transparent solid;
+    border-radius: 5px;
+    margin-left: 8px;
+    margin-right: 8px;
+    width: auto;
+    // height: 40px;
+    // border: 1px solid #65dbea;
+    height: 35px !important;
+    display: flex;
+    align-items: center;
+    justify-content: center;
+    color: #fff;
+    padding: 0 15px 5px 15px;
+    cursor: pointer;
+    &:hover {
+      background: linear-gradient(#2cd1ff55, #1eb0ff55);
+    }
+    &::before {
+      width: calc(100% - 6px);
+      height: 27px;
+      content: '';
+      position: absolute;
+      top: 3px;
+      right: 0;
+      left: 3px;
+      bottom: 0;
+      z-index: -1;
+      border-radius: inherit; /*important*/
+      background: linear-gradient(#1fa6cb, #127cb5);
+    }
+    &::after {
+      width: calc(100% + 32px);
+      height: 10px;
+      content: '';
+      position: absolute;
+      top: 28px;
+      right: 0;
+      left: -16px;
+      bottom: 0;
+      z-index: -1;
+      border-radius: inherit; /*important*/
+      background-position: center;
+      background-size: 100%;
+      z-index: 999;
+    }
+  }
   ::v-deep(#LivePlayerBox) {
     display: flex;
     flex-direction: row;

+ 19 - 3
src/views/vent/monitorManager/mainFanMonitor/main.data.ts

@@ -571,26 +571,42 @@ export const modalTypeArr = {
     {
       key: 'startSmoke',
       value: '启动/停止',
+      permission: 'fan:startSmoke',
+    },
+    {
+      key: 'startFan',
+      value: '启动/停止',
+      permission: 'fan:startFan',
+    },
+    {
+      key: 'resetFan',
+      value: '一键复位',
+      permission: 'fan:resetFan',
     },
     {
       key: 'changeSmoke',
       value: '不停风倒机',
+      permission: 'fan:changeSmoke',
     },
     {
       key: 'changeDirection',
       value: '一键反风',
+      permission: 'fan:changeDirection',
     },
     {
       key: 'frequency',
       value: '一键调频',
+      permission: 'fan:frequency',
     },
     {
       key: 'fbm',
       value: '防爆门控制',
+      permission: 'fan:fbm',
     },
     {
       key: 'kkjc',
       value: '工况辅助决策',
+      permission: 'fan:kkjc',
     },
   ],
 };
@@ -1246,13 +1262,13 @@ export const initData = () => {
       max: 230.0,
     },
   };
-  let num = 21;
-  let a = -0.17624,
+  const num = 21;
+  const a = -0.17624,
     m = 2770.6411125432646,
     n = -124.15442010894235;
   let i = 21;
   const data = [];
-  for (let key in assistanceData) {
+  for (const key in assistanceData) {
     i -= 1;
     const p = i;
     const item = assistanceData[key];

+ 9 - 3
src/views/vent/monitorManager/safetyMonitor/index.vue

@@ -15,7 +15,7 @@
             :isShowActionColumn="isHaveAction.includes(deviceType.split('_')[0]) ? false : true"
             :is-show-select="false"
             title="设备监测"
-            :form-config="deviceType == 'safetymonitor' ? formConfig : undefined"
+            :form-config="deviceType == 'safetymonitor' && sysOrgCode != 'zjtzqctmk' ? formConfig : undefined"
             :scroll="{ y: 650 }"
           >
             <template #filterCell="{ column, record }">
@@ -173,6 +173,8 @@
   import { useRouter } from 'vue-router';
   import { formConfig, isHaveAction } from './safety.data';
   import { getDictItemsByCode } from '/@/utils/dict';
+  import { useGlobSetting } from '/@/hooks/setting';
+  const { sysOrgCode } = useGlobSetting();
 
   // import { BorderBox8 as DvBorderBox8 } from '@kjgl77/datav-vue3';
 
@@ -270,7 +272,7 @@
         // 如果是安全监控的数据时需要过滤常见设备数据,根据设定的常用安全监控字典去匹配
         let dictCodes = getDictItemsByCode('safetynormal');
         const searchForm = formData.getFieldsValue();
-        if (!searchForm['dataTypeName'] && dictCodes && dictCodes.length) {
+        if (searchForm && !searchForm['dataTypeName'] && dictCodes && dictCodes.length) {
           const tempData = [];
           const tempData1 = [];
 
@@ -288,7 +290,11 @@
               tempData1.push(item);
             }
           });
-          dataSource.value = [...tempData];
+          if (sysOrgCode == 'zjtzqctmk') {
+            dataSource.value = [...tempData, ...tempData1];
+          } else {
+            dataSource.value = [...tempData];
+          }
         } else {
           dataSource.value = dataArr;
         }