瀏覽代碼

1. 预警历史查询功能优化
2. 人员定位查询组件修改
3. 上湾压风系统添加界面

hongrunxia 11 月之前
父節點
當前提交
1c0bfcddfe
共有 23 個文件被更改,包括 347 次插入414 次删除
  1. 27 20
      src/components/Form/src/jeecg/components/MTreeSelect.vue
  2. 1 1
      src/utils/echartsUtil.ts
  3. 0 1
      src/utils/threejs/main.worker.ts
  4. 1 1
      src/views/super/drag/page/components/PageModal.vue
  5. 4 3
      src/views/vent/home/colliery/index.vue
  6. 1 1
      src/views/vent/monitorManager/alarmMonitor/warn/deviceWarn.vue
  7. 7 7
      src/views/vent/monitorManager/comment/AlarmHistoryTable.vue
  8. 35 100
      src/views/vent/monitorManager/comment/DeviceEcharts.vue
  9. 0 11
      src/views/vent/monitorManager/comment/HistoryTable.vue
  10. 1 1
      src/views/vent/monitorManager/comment/MonitorTable.vue
  11. 3 0
      src/views/vent/monitorManager/deviceMonitor/components/device/device.api.ts
  12. 38 5
      src/views/vent/monitorManager/deviceMonitor/components/device/index.vue
  13. 6 3
      src/views/vent/monitorManager/deviceMonitor/index.vue
  14. 0 1
      src/views/vent/monitorManager/fanLocalMonitor/index.vue
  15. 34 46
      src/views/vent/monitorManager/gasPumpMonitor/components/gasPumpHome.vue
  16. 2 2
      src/views/vent/monitorManager/gasPumpMonitor/components/gasPumpHomeCC.vue
  17. 19 44
      src/views/vent/monitorManager/gasPumpMonitor/index.vue
  18. 2 2
      src/views/vent/monitorManager/gateMonitor/gate.threejs.two.yj.ts
  19. 131 159
      src/views/vent/monitorManager/mainFanMonitor/index.vue
  20. 1 1
      src/views/vent/monitorManager/nitrogen/components/nitrogenHome1.vue
  21. 5 2
      src/views/vent/monitorManager/nitrogen/nitrogen.data.1.ts
  22. 3 3
      src/views/vent/monitorManager/windrectMonitor/index.vue
  23. 26 0
      src/views/vent/monitorManager/windrectMonitor/windrect.data.ts

+ 27 - 20
src/components/Form/src/jeecg/components/MTreeSelect.vue

@@ -1561,27 +1561,34 @@
           "telphone": ""
         }
       }
-      try {
-        let res = await defHttp.get({ url: props.api, params });
-        if (res && res.success) {
-          const result = res.result
-          const datas = []
-          for (const key in result) {
-            datas.push(result[key])
-          }
-          const { buildTree } = toTree('id', 'parentId', 'name')
-          const treeDataList: any = buildTree(datas)
-          treeData.value = treeDataList;
-        }
-      } catch (error) {
-        const datas = []
-        for (const key in result) {
-          datas.push(result[key])
-        }
-        const { buildTree } = toTree('id', 'parentId', 'name')
-        const treeDataList: any = buildTree(datas)
-        treeData.value = treeDataList;  
+      // try {
+      //   let res = await defHttp.get({ url: props.api, params });
+      //   if (res && res.success) {
+      //     const result = res.result
+      //     const datas = []
+      //     for (const key in result) {
+      //       datas.push(result[key])
+      //     }
+      //     const { buildTree } = toTree('id', 'parentId', 'name')
+      //     const treeDataList: any = buildTree(datas)
+      //     treeData.value = treeDataList;
+      //   }
+      // } catch (error) {
+      //   const datas = []
+      //   for (const key in result) {
+      //     datas.push(result[key])
+      //   }
+      //   const { buildTree } = toTree('id', 'parentId', 'name')
+      //   const treeDataList: any = buildTree(datas)
+      //   treeData.value = treeDataList;  
+      // }
+      const datas = []
+      for (const key in result) {
+        datas.push(result[key])
       }
+      const { buildTree } = toTree('id', 'parentId', 'name')
+      const treeDataList: any = buildTree(datas)
+      treeData.value = treeDataList;  
       
     }
     

+ 1 - 1
src/utils/echartsUtil.ts

@@ -82,7 +82,7 @@ export default class echartsUtil {
     if (type == 'history') {
       return [
         {
-          bottom: '10',
+          bottom: '0px',
           height: 20,
           start: 100,
           end: 0,

+ 0 - 1
src/utils/threejs/main.worker.ts

@@ -78,7 +78,6 @@ export function initModalWorker() {
 
   const db: any = new Dexie('DB');
   window['CustomDB'] = db;
-
   const modelStore = useModelStore();
   db.version(1).stores({
     modal: '&modalName, modalVal, versionStr',

+ 1 - 1
src/views/super/drag/page/components/PageModal.vue

@@ -54,7 +54,7 @@
       setModalProps({ confirmLoading: true });
       //加密
       if(values.protectionCode){
-        values.protectionCode = encryptByBase64(values.protectionCode)   
+        values.protectionCode = encryptByBase64(values.protectionCode);
 			}
       //提交表单
       const res = await saveOrUpdate(values, isUpdate.value);

+ 4 - 3
src/views/vent/home/colliery/index.vue

@@ -27,7 +27,7 @@
         <div class="center-content">
           <!-- 三维模型 -->
           <div class="three-box">
-            <div class="three-nav" v-if="hasPermission('monitor:show')">
+            <div class="three-nav" v-if="!hasPermission('monitor:show')">
               <template v-for="(item, index) in navList" :key="index">
                 <div class="nav-item" v-if="(item.valList && item.valList.length > 0) || item.val">
                   <div class="item-label">{{ item.name }}</div>
@@ -46,7 +46,7 @@
               <!-- 展会不显示按钮 -->
               <div v-if="sysOrgCode !== 'mkyzhpt'" class="btn-icon" @click="goModalDetail"></div>
               <VentModal ref="centerModalRef"
-                style="width: calc(100% - 30px); height: calc(100% - 30px); position: absolute" />
+                style="width: calc(100% - 30px); height: calc(100% - 30px); position: absolute; background-color: #fff;" />
             </div>
           </div>
           <!-- 风量监测 -->
@@ -522,7 +522,8 @@
             height: 100%;
             padding: 20px 17px 20px 15px;
             box-sizing: border-box;
-            position: relative;
+            // position: absolute;
+            // background-color: var(--vent-base-color);
 
             .btn-icon {
               width: 40px;

+ 1 - 1
src/views/vent/monitorManager/alarmMonitor/warn/deviceWarn.vue

@@ -31,7 +31,7 @@
 <script lang="ts" setup>
 import { onMounted, ref, defineEmits, reactive, onUnmounted, watch } from 'vue';
 import MonitorTable from '../../comment/MonitorTable.vue';
-import AlarmHistoryTable from '../AlarmHistoryTable.vue';
+import AlarmHistoryTable from '../alarmHistoryTable.vue';
 import CustomHeader from '/@/components/vent/customHeader.vue';
 import { warningList } from '../alarm.api';
 import { levelColumns, levelHisColumns } from '../alarm.data';

+ 7 - 7
src/views/vent/monitorManager/comment/AlarmHistoryTable.vue

@@ -60,6 +60,7 @@
   const tableScroll = props.scroll.y ? ref({ y: props.scroll.y - 100 }) : ref({});
 
   async function getDeviceList() {
+    debugger;
     if (props.deviceType.split('_')[1] && props.deviceType.split('_')[1] === 'history') return;
     let result;
     if (!props.sysId) {
@@ -92,13 +93,12 @@
         result = res['msgTxt'][0]['datalist'];
       }
     }
-
-    deviceOptions.value = [];
     if (result) {
+      deviceOptions.value = [];
       deviceOptions.value = result.map((item) => {
         return {
           label: item['strinstallpos'],
-          value: item['id'],
+          value: item['id'] || item['deviceID'],
           strtype: item['strtype'],
           strinstallpos: item['strinstallpos'],
           devicekind: item['devicekind'],
@@ -106,10 +106,10 @@
         // return { label: item['strname'], value: item['id']}
       });
     }
-    deviceOptions.value.unshift({ label: '--请选择设备--', value: '*', strtype: '', strinstallpos: '', devicekind: '' });
+    deviceOptions.value.unshift({ label: '--请选择设备--', value: '', strtype: '', strinstallpos: '', devicekind: '' });
     globalConfig.History_Type == 'vent' && deviceOptions.value[0]
-      ? getForm().setFieldsValue({ gdeviceid: deviceOptions.value[0] ? deviceOptions.value[0]['value'] : '' })
-      : getForm().setFieldsValue({ deviceId: deviceOptions.value[0] ? deviceOptions.value[0]['value'] : '' });
+      ? getForm().setFieldsValue({ deviceid: deviceOptions.value[0] ? deviceOptions.value[0]['value'] : '' })
+      : getForm().setFieldsValue({ deviceid: deviceOptions.value[0] ? deviceOptions.value[0]['value'] : '' });
   }
 
   watch(
@@ -207,7 +207,7 @@
           },
           {
             label: '查询设备',
-            field: 'gdeviceid',
+            field: 'deviceid',
             component: 'Select',
             defaultValue: deviceOptions.value[0] ? deviceOptions.value[0]['value'] : '',
             componentProps: {

+ 35 - 100
src/views/vent/monitorManager/comment/DeviceEcharts.vue

@@ -1,74 +1,35 @@
 <template>
   <div class="charts-container">
-    <a-select ref="select" v-model:value="chartsType" size="small" style="position: absolute; z-index: 99; top: 2px; left: 2px; width: 98px">
+    <a-select ref="select" v-model:value="chartsType" size="small"
+      style="position: absolute; z-index: 99; top: 2px; left: 2px; width: 98px">
       <a-select-option value="listMonitor">实时监测</a-select-option>
       <a-select-option value="detail">详情监测</a-select-option>
       <a-select-option value="history">历史记录</a-select-option>
     </a-select>
 
     <div class="charts-box" v-if="chartsType === 'listMonitor'" style="position: absolute; top: 20px">
-      <BarAndLine
-        :chartsColumnsType="chartsColumnsType"
-        :xAxisPropType="xAxisPropType"
-        :dataSource="dataSource"
-        height="100%"
-        chartsType="listMonitor"
-        :option="echartsOption"
-        :chartsColumns="chartsColumns"
-      />
+      <BarAndLine :chartsColumnsType="chartsColumnsType" :xAxisPropType="xAxisPropType" :dataSource="dataSource"
+        height="100%" chartsType="listMonitor" :option="echartsOption" :chartsColumns="chartsColumns" />
     </div>
     <div class="charts-box" v-else-if="chartsType === 'detail' && deviceListApi">
-      <Select
-        :options="options"
-        :fieldNames="{ label: 'strname', value: 'deviceID' }"
-        v-model:value="deviceId"
-        placeholder="请选择查看的设备"
-        size="small"
-        style="position: absolute; z-index: 99; left: 102px; width: 150px; top: 2px"
-      />
-      <BarAndLine
-        :chartsColumnsType="chartsColumnsType"
-        :xAxisPropType="resultXAxisPropType"
-        :dataSource="detailDataSource"
-        height="100%"
-        :option="echartsOption2"
-        chartsType="detail"
-        :chartsColumns="chartsColumns"
-      />
+      <Select :options="options" :fieldNames="{ label: 'strname', value: 'deviceID' }" v-model:value="deviceId"
+        placeholder="请选择查看的设备" size="small"
+        style="position: absolute; z-index: 99; left: 102px; width: 150px; top: 2px" />
+      <BarAndLine :chartsColumnsType="chartsColumnsType" :xAxisPropType="resultXAxisPropType"
+        :dataSource="detailDataSource" height="100%" :option="echartsOption2" chartsType="detail"
+        :chartsColumns="chartsColumns" />
     </div>
     <div class="charts-box" v-else-if="chartsType === 'history'">
-      <Select
-        :options="options"
-        :fieldNames="{ label: 'strname', value: 'deviceID' }"
-        v-model:value="deviceId"
-        placeholder="请选择查看的设备"
-        size="small"
-        style="position: absolute; z-index: 99; left: 102px; width: 150px; top: 2px"
-      />
+      <Select :options="options" :fieldNames="{ label: 'strname', value: 'deviceID' }" v-model:value="deviceId"
+        placeholder="请选择查看的设备" size="small"
+        style="position: absolute; z-index: 99; left: 102px; width: 150px; top: 2px" />
       <template v-if="globalConfig.History_Type == 'vent'">
-        <a-date-picker
-          v-model:value="historyParams.ttime_begin"
-          valueFormat="YYYY-MM-DD HH:mm:ss"
-          placeholder="请选择开始日期"
-          size="small"
-          :showTime="true"
-          style="position: absolute; z-index: 99; left: 254px; width: 170px; top: 2px"
-        />
-        <a-date-picker
-          v-model:value="historyParams.ttime_end"
-          valueFormat="YYYY-MM-DD HH:mm:ss"
-          placeholder="请选择结束日期"
-          size="small"
-          :showTime="true"
-          style="position: absolute; z-index: 99; left: 426px; width: 170px; top: 2px"
-        />
-        <a-select
-          ref="select"
-          v-model:value="historyParams.skip"
-          placeholder="请选择间隔时间"
-          size="small"
-          style="position: absolute; z-index: 99; top: 2px; left: 600px; width: 150px"
-        >
+        <a-date-picker v-model:value="historyParams.ttime_begin" valueFormat="YYYY-MM-DD HH:mm:ss" placeholder="请选择开始日期"
+          size="small" :showTime="true" style="position: absolute; z-index: 99; left: 254px; width: 170px; top: 2px" />
+        <a-date-picker v-model:value="historyParams.ttime_end" valueFormat="YYYY-MM-DD HH:mm:ss" placeholder="请选择结束日期"
+          size="small" :showTime="true" style="position: absolute; z-index: 99; left: 426px; width: 170px; top: 2px" />
+        <a-select ref="select" v-model:value="historyParams.skip" placeholder="请选择间隔时间" size="small"
+          style="position: absolute; z-index: 99; top: 2px; left: 598px; width: 150px">
           <a-select-option value="1">1秒</a-select-option>
           <a-select-option value="2">5秒</a-select-option>
           <a-select-option value="3">10秒</a-select-option>
@@ -80,29 +41,12 @@
         </a-select>
       </template>
       <template v-else>
-        <a-date-picker
-          v-model:value="historyParams.startTime"
-          valueFormat="YYYY-MM-DD HH:mm:ss"
-          placeholder="开始时间"
-          size="small"
-          :showTime="true"
-          style="position: absolute; z-index: 99; left: 254px; width: 170px; top: 2px"
-        />
-        <a-date-picker
-          v-model:value="historyParams.endTime"
-          valueFormat="YYYY-MM-DD HH:mm:ss"
-          placeholder="结束时间"
-          size="small"
-          :showTime="true"
-          style="position: absolute; z-index: 99; left: 426px; width: 170px; top: 2px"
-        />
-        <a-select
-          ref="select"
-          v-model:value="historyParams.interval"
-          placeholder="请选择间隔时间"
-          size="small"
-          style="position: absolute; z-index: 99; top: 2px; left: 558px; width: 150px"
-        >
+        <a-date-picker v-model:value="historyParams.startTime" valueFormat="YYYY-MM-DD HH:mm:ss" placeholder="开始时间"
+          size="small" :showTime="true" style="position: absolute; z-index: 99; left: 254px; width: 170px; top: 2px" />
+        <a-date-picker v-model:value="historyParams.endTime" valueFormat="YYYY-MM-DD HH:mm:ss" placeholder="结束时间"
+          size="small" :showTime="true" style="position: absolute; z-index: 99; left: 426px; width: 170px; top: 2px" />
+        <a-select ref="select" v-model:value="historyParams.interval" placeholder="请选择间隔时间" size="small"
+          style="position: absolute; z-index: 99; top: 2px; left: 598px; width: 150px">
           <a-select-option value="1s">1秒</a-select-option>
           <a-select-option value="5s">5秒</a-select-option>
           <a-select-option value="10s">10秒</a-select-option>
@@ -113,24 +57,11 @@
           <a-select-option value="1h">1小时</a-select-option>
         </a-select>
       </template>
-      <Pagination
-        size="small"
-        v-model:current="currentPage"
-        v-model:page-size="pageSize"
-        :total="total"
-        :show-total="(total) => `共 ${total} 条`"
-        style="position: absolute; z-index: 99; top: 2px; right: 30px"
-      />
-      <BarAndLine
-        :chartsColumnsType="chartsColumnsType"
-        :xAxisPropType="resultXAxisPropType"
-        :dataSource="resultDataSource"
-        height="100%"
-        :option="echartsOption1"
-        chartsType="history"
-        style="margin-top: 20px"
-        :chartsColumns="chartsColumns"
-      />
+      <Pagination size="small" v-model:current="currentPage" v-model:page-size="pageSize" :total="total"
+        :show-total="(total) => `共 ${total} 条`" style="position: absolute; z-index: 99; top: 2px; right: 30px" />
+      <BarAndLine :chartsColumnsType="chartsColumnsType" :xAxisPropType="resultXAxisPropType"
+        :dataSource="resultDataSource" height="100%" :option="echartsOption1" chartsType="history"
+        style="margin-top: 20px" :chartsColumns="chartsColumns" />
     </div>
   </div>
 </template>
@@ -149,6 +80,10 @@
         type: Array,
         default: () => [],
       },
+      chartsColumnsHistory: {
+        type: Array,
+        default: () => [],
+      },
       chartsColumnsType: {
         type: String,
         required: true,
@@ -222,7 +157,7 @@
           top: '70px',
           left: '10px',
           right: '5px',
-          bottom: '5%',
+          bottom: '45px',
           containLabel: true,
         },
         toolbox: {

+ 0 - 11
src/views/vent/monitorManager/comment/HistoryTable.vue

@@ -189,17 +189,6 @@
         }
       }
     } else {
-      // if (globalConfig.History_Type == 'vent') {
-      //   result = await defHttp.get({
-      //     url: '/safety/ventanalyManageSystem/linkdevicelist',
-      //     params: { sysId: props.sysId, deviceType: props.deviceType, pageSize: 9999 },
-      //   });
-      // } else {
-      //   result = await defHttp.get({
-      //     url: '/safety/ventanalyManageSystem/linkdevicelist',
-      //     params: { sysId: props.sysId, deviceType: props.deviceType.startsWith('vehicle') ? 'location_normal' : props.deviceType, pageSize: 9999 },
-      //   });
-      // }
       const res = await getDeviceListApi({
         sysId: props.sysId,
         devicetype: props.deviceType.startsWith('vehicle') ? 'location_normal' : props.deviceType,

+ 1 - 1
src/views/vent/monitorManager/comment/MonitorTable.vue

@@ -172,7 +172,7 @@
         if(props.deviceType?.startsWith('safetymonitor')){ 
           return Object.assign(params, { filterParams: {'dataTypeName': params['dataTypeName'], strinstallpos: '*'+params['strinstallpos']+'*'} });
         }else if(props.deviceType?.startsWith('location')) {
-          return Object.assign(params, { filterParams: {strinstallpos: '*'+params['strinstallpos']+'*', userName: '*'+params['strname']+'*' } });
+          return Object.assign(params, { filterParams: { strinstallpos: '*' + params['strinstallpos'] + '*', userName: '*' + params['strname'] + '*', userJson: '' } });
         }else if(props.deviceType?.startsWith('vehicle')) {
           return Object.assign(params, { filterParams: {strinstallpos: '*'+params['strinstallpos']+'*', vehicleName: '*'+params['strname']+'*' } });
         }else{

+ 3 - 0
src/views/vent/monitorManager/deviceMonitor/components/device/device.api.ts

@@ -8,6 +8,7 @@ enum Api {
   deviceTypeList = '/safety/ventanalyDeviceInfo/DeviceKind/queryBySystem',
   itemList = '/sys/dictItem/list',
   devPosition = '/sys/dict/getDictItems/devPosVisible',
+  getDepartmentInfo = '/ventanaly-device/getDepartmentInfo',
 }
 /**
  * 列表接口
@@ -25,3 +26,5 @@ export const getDeviceTypeList = (params) => defHttp.get({ url: Api.deviceTypeLi
 
 export const itemList = (params) => defHttp.get({ url: Api.itemList, params });
 export const devPosition = (params) => defHttp.get({ url: Api.devPosition, params });
+
+export const getDepartmentInfo = (params) => defHttp.get({ url: Api.getDepartmentInfo, params });

+ 38 - 5
src/views/vent/monitorManager/deviceMonitor/components/device/index.vue

@@ -313,7 +313,7 @@
 <script setup lang="ts">
 import { ref, onMounted, onUnmounted, ComponentOptions, shallowRef, reactive, defineProps, watch } from 'vue'
 import { SendOutlined } from '@ant-design/icons-vue';
-import { list, getDeviceList, getDeviceTypeList, devPosition } from './device.api'
+import { list, getDeviceList, getDeviceTypeList, devPosition, getDepartmentInfo } from './device.api'
 import AlarmHistoryTable from '../../../comment/AlarmHistoryTable.vue';
 import HistoryTable from '../../../comment/HistoryTable.vue';
 import HandlerHistoryTable from '../../../comment/HandlerHistoryTable.vue';
@@ -392,6 +392,7 @@ const scroll = reactive({
   y: 210
 })
 const treeData = ref<TreeProps['treeData']>([]);
+let departmentInfo:Null|Object = null
 let startMonitorTimer = 0
 
 //树形菜单选择事件
@@ -439,7 +440,7 @@ function showTree(flag, value) {
   if (flag == 'location') locationSettingShow.value = value
 }
 
-async function getDeviceType() {
+async function getDeviceType(sysType?) {
   if (treeData.value?.length > 0) return
   const result = await getDeviceTypeList({})
   if (result.length > 0) {
@@ -449,6 +450,11 @@ async function getDeviceType() {
       resultList.forEach((item, index) => {
         if (item.deviceType != 'sys'  && item.children && item.children.length > 0) {
           const children = getData(item.children, [], `${keyVal}-${index}`)
+          // 判断关键阻力路线
+          if (item.itemValue == sysType && children[0]) {
+            systemID.value = item.children[0]['itemValue']
+          }
+
           dataSourceList.push({
             children: children,
             title: item.itemText,
@@ -561,7 +567,20 @@ async function getDataSource() {
         if(deviceType.value.startsWith('safetymonitor')){
           resultData = await list({ devicetype: deviceType.value, pagetype: 'normal', filterParams: { ...searchForm } })
         }else if(deviceType.value.startsWith('location')) {
-          resultData = await list({ devicetype: deviceType.value, pagetype: 'normal', filterParams: {strinstallpos: searchForm && searchForm['stationname'] ? searchForm['stationname'] : '', userName: searchForm && searchForm['strname'] ? searchForm['strname'] : ''}})
+          if(!departmentInfo) {
+            departmentInfo = await getDepartmentInfo({})
+          }
+          let department = null
+          if(departmentInfo && searchForm && searchForm['department']){
+            for (const key in departmentInfo) {
+              const item = departmentInfo[key]
+              if (item['id'] === searchForm['department']){
+                department = item
+                break;
+              }
+            }
+          }
+          resultData = await list({ devicetype: deviceType.value, pagetype: 'normal', filterParams: { strinstallpos: searchForm && searchForm['stationname'] ? searchForm['stationname'] : '', userName: searchForm && searchForm['strname'] ? searchForm['strname'] : '', userJson: department && department['name'] ? department['name'] : '' }})
         }else if(deviceType.value.startsWith('vehicle')) {
           resultData = await list({ devicetype: deviceType.value, pagetype: 'normal', filterParams: {strinstallpos: searchForm && searchForm['stationname'] ? searchForm['stationname'] : '', vehicleName: searchForm && searchForm['strname'] ? searchForm['strname'] : ''}})
         }else{
@@ -709,6 +728,7 @@ function toHome() {
 }
 
 async function findTreeDataValue(obj) {
+  debugger;
   const findDeviceType = (data: [], obj) => {
     let type = ''
     if (obj.deviceid) {
@@ -803,6 +823,9 @@ function setLocation() {
 }
 
 watch(() => props.pageData, async(pageObj) => {
+  debugger;
+  console.log('ceshi-------------》', pageObj)
+  debugger;
   isRefresh.value = false
   if(!treeData.value || treeData.value?.length < 1){
     await getDeviceType()
@@ -818,13 +841,20 @@ watch(() => props.pageData, async(pageObj) => {
 })
 
 onMounted(async () => {
-  await getDeviceType()
   const pageObj = props.pageData
   if(!pageObj) return 
   if (pageObj.deviceid) {
+    await getDeviceType()
     findTreeDataValue({ deviceid: pageObj.deviceid })
   } else {
-    findTreeDataValue({ deviceType: pageObj.pageType })
+    if (pageObj.pageType.startsWith('sys_')){
+      await getDeviceType(pageObj.pageType)
+      findTreeDataValue({ deviceid: systemID.value })
+      
+    }else{
+      await getDeviceType()
+      findTreeDataValue({ deviceType: pageObj.pageType })
+    }
   }
   // 定位
   const posShowData = pageObj.locationPlane
@@ -1449,6 +1479,9 @@ onUnmounted(() => {
  :deep(.zxm-input) {
    height: 32px !important;
    line-height: 32px !important;
+   .zxm-select-selection-item{
+     line-height: 32px !important;
+   }
  }
 // :deep(.@{ventSpace}-pagination){
 //   margin-right: 20px !important;

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

@@ -1,10 +1,12 @@
 <template>
   <div class="scene-box">
     <template v-if="routerParam !== 'timesolution' && routerParam !== 'home'">
-      <Emergency ref="NetworkRef" v-if="deviceKind === 'emergency'" :pageResult="pageResult" @changePageType="changePageType" />
-      <DeviceVue ref="DeviceRef" v-else :pageData="pageData" />
+      <!-- <Emergency ref="NetworkRef" v-if="deviceKind === 'emergency'" :pageResult="pageResult" @changePageType="changePageType" />
+      <DeviceVue ref="DeviceRef" v-else :pageData="pageData" /> -->
+      <DeviceVue ref="DeviceRef" :pageData="pageData" />
     </template>
-    <Network ref="NetworkRef" v-if="routerParam === 'timesolution'" :pageResult="pageResult" @changePageType="changePageType" />
+    <Network ref="NetworkRef" v-if="routerParam === 'timesolution'" :pageResult="pageResult"
+      @changePageType="changePageType" />
   </div>
   <VentModal style="width: 100%; height: 100%; position: absolute" />
 </template>
@@ -71,6 +73,7 @@
       actions.setGlobalState({ pageObj: { pageType: 'home' } });
     }
     actions.onGlobalStateChange((newState) => {
+      debugger;
       for (const key in newState) {
         if (key === 'pageObj') {
           const pageObj = newState[key];

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

@@ -315,7 +315,6 @@
               <AlarmHistoryTable
                 columns-type="alarm"
                 :device-type="`${devicekide}`"
-                :device-list-api="baseList"
                 designScope="alarm-history"
                 :scroll="scroll"
               />

+ 34 - 46
src/views/vent/monitorManager/gasPumpMonitor/components/gasPumpHome.vue

@@ -1,7 +1,8 @@
 <template>
   <div class="monitor-container">
     <div id="FlowSensor" class="FlowSensor-box" style="position: absolute; display: none">
-      <div class="elementContent" v-if="selectData['deviceType'] == 'pump_under' || selectData['deviceType'] == 'pump_n12m2pq'">
+      <div class="elementContent"
+        v-if="selectData['deviceType'].startsWith('pump_under') || selectData['deviceType'] == 'pump_n12m2pq'">
         <fourBorderBg>
           <template v-for="(item, index) in modelMonitor" :key="index">
             <div class="gas-monitor-row">
@@ -23,29 +24,27 @@
             </template>
             <template #container>
               <div v-for="key in 2" :key="key">
-                <div class="parameter-title group-parameter-title"
-                  ><SvgIcon class="icon" size="14" name="pulp-title" /><span>{{ key }}#瓦斯泵磁力启动器</span></div
-                >
+                <div class="parameter-title group-parameter-title">
+                  <SvgIcon class="icon" size="14" name="pulp-title" /><span>{{ key }}#瓦斯泵磁力启动器</span>
+                </div>
                 <div class="input-box">
                   <div v-for="(item, index) in pumpMonitorData" class="input-item" :key="index">
                     <div class="title">{{ item.title }}:</div>
                     <template v-if="item.type !== 'sign' && item.type !== 'warning'">
                       <div class="value">{{
                         selectData && selectData[item.code.replace('Starter', `Starter${key + 4}`)]
-                          ? formatNum(selectData[item.code.replace('Starter', `Starter${key + 4}`)], 1)
-                          : '-'
-                      }}</div>
+                        ? formatNum(selectData[item.code.replace('Starter', `Starter${key + 4}`)], 1)
+                        : '-'
+                        }}</div>
                     </template>
                     <template v-else>
                       <div class="value">
-                        <span
-                          :class="{
+                        <span :class="{
                             'signal-round': true,
                             'signal-round-run': item.type === 'sign' && selectData[item.code.replace('Starter', `Starter${key + 4}`)] == '1',
                             'signal-round-gry': selectData[item.code.replace('Starter', `Starter${key + 4}`)] == '0',
                             'signal-round-warning': item.type === 'warning' && selectData[item.code.replace('Starter', `Starter${key + 4}`)] == '1',
-                          }"
-                        ></span>
+                          }"></span>
                       </div>
                     </template>
                   </div>
@@ -59,28 +58,26 @@
             </template>
             <template #container>
               <div v-for="key in 2" :key="key">
-                <div class="parameter-title group-parameter-title"
-                  ><SvgIcon class="icon" size="14" name="pulp-title" /><span>{{ key }}#注水泵</span></div
-                >
+                <div class="parameter-title group-parameter-title">
+                  <SvgIcon class="icon" size="14" name="pulp-title" /><span>{{ key }}#注水泵</span>
+                </div>
                 <div class="input-box">
                   <div v-for="(item, index) in waterPumpData" class="input-item" :key="index">
                     <div class="title">{{ item.title }}:</div>
                     <template v-if="item.type !== 'sign'">
                       <div class="value">{{
                         selectData && selectData[item.code.replace('WaterfloodPump', `WaterfloodPump${key}`)]
-                          ? formatNum(selectData[item.code.replace('WaterfloodPump', `WaterfloodPump${key}`)], 1)
-                          : '-'
-                      }}</div>
+                        ? formatNum(selectData[item.code.replace('WaterfloodPump', `WaterfloodPump${key}`)], 1)
+                        : '-'
+                        }}</div>
                     </template>
                     <template v-else>
                       <div class="value">
-                        <span
-                          :class="{
+                        <span :class="{
                             'signal-round': true,
                             'signal-round-run': selectData[item.code.replace('WaterfloodPump', `WaterfloodPump${key}`)],
                             'signal-round-gry': selectData[item.code.replace('WaterfloodPump', `WaterfloodPump${key}`)] == '0',
-                          }"
-                        ></span>
+                          }"></span>
                       </div>
                     </template>
                   </div>
@@ -94,28 +91,26 @@
             </template>
             <template #container>
               <div v-for="key in 2" :key="key">
-                <div class="parameter-title group-parameter-title"
-                  ><SvgIcon class="icon" size="14" name="pulp-title" /><span>{{ key }}#排水泵</span></div
-                >
+                <div class="parameter-title group-parameter-title">
+                  <SvgIcon class="icon" size="14" name="pulp-title" /><span>{{ key }}#排水泵</span>
+                </div>
                 <div class="input-box">
                   <div v-for="(item, index) in dewateringPumpData" class="input-item" :key="index">
                     <div class="title">{{ item.title }}:</div>
                     <template v-if="item.type !== 'sign'">
                       <div class="value">{{
                         selectData && selectData[item.code.replace('DewateringPump', `DewateringPump${key}`)]
-                          ? formatNum(selectData[item.code.replace('DewateringPump', `DewateringPump${key}`)], 1)
-                          : '-'
-                      }}</div>
+                        ? formatNum(selectData[item.code.replace('DewateringPump', `DewateringPump${key}`)], 1)
+                        : '-'
+                        }}</div>
                     </template>
                     <template v-else>
                       <div class="value">
-                        <span
-                          :class="{
+                        <span :class="{
                             'signal-round': true,
                             'signal-round-run': selectData[item.code.replace('DewateringPump', `DewateringPump${key}`)],
                             'signal-round-gry': selectData[item.code.replace('DewateringPump', `DewateringPump${key}`)] == '0',
-                          }"
-                        ></span>
+                          }"></span>
                       </div>
                     </template>
                   </div>
@@ -139,7 +134,8 @@
                 <a-button class="btn-item" type="default" disabled @click="handlerFn('change')">一键切换</a-button>
               </div>
               <div class="btn-group">
-                <a-button style="width: calc(100% - 16px); padding: 0 8px" type="primary" @click="openModal">瓦斯泵控制</a-button>
+                <a-button style="width: calc(100% - 16px); padding: 0 8px" type="primary"
+                  @click="openModal">瓦斯泵控制</a-button>
               </div>
               <div>
                 <div class="control-item">
@@ -175,15 +171,12 @@
                   <div class="state" v-for="(state, i) in valveWarningState" :key="i">
                     <span v-if="state.code == '_CtrlMode'">{{
                       selectData[`CentrifugalPump${key}_${valveType.code}${state.code}`] == '1' ? '控制' : '-'
-                    }}</span>
-                    <span
-                      v-else
-                      :class="{
+                      }}</span>
+                    <span v-else :class="{
                         'signal-round': true,
                         'signal-round-run': selectData[`CentrifugalPump${key}_${valveType.code}${state.code}`] == '1',
                         'signal-round-gry': selectData[`CentrifugalPump${key}_${valveType.code}${state.code}`] == '0',
-                      }"
-                    ></span>
+                      }"></span>
                   </div>
                 </div>
               </div>
@@ -198,13 +191,8 @@
     <div ref="playerRef" class="player-box"></div>
   </div>
   <DetailModal @register="register" :device-type="deviceType" :device-id="deviceId" />
-  <PasswordModal
-    :modal-is-show="passwordModalIsShow"
-    modal-title="密码检验"
-    :modal-type="handlerType"
-    @handle-ok="handleOK"
-    @handle-cancel="handleCancel"
-  />
+  <PasswordModal :modal-is-show="passwordModalIsShow" modal-title="密码检验" :modal-type="handlerType" @handle-ok="handleOK"
+    @handle-cancel="handleCancel" />
 </template>
 
 <script setup lang="ts">
@@ -384,7 +372,7 @@
       nextTick(async () => {
         if (props.deviceType == 'pump_over') {
           setModelType('gasPump');
-        } else if (props.deviceType == 'pump_under' || props.deviceType == 'pump_n12m2pq') {
+        } else if (props.deviceType?.startsWith('pump_under')|| props.deviceType == 'pump_n12m2pq') {
           setModelType('gasPumpUnder');
         }
       });

+ 2 - 2
src/views/vent/monitorManager/gasPumpMonitor/components/gasPumpHomeCC.vue

@@ -1,7 +1,7 @@
 <template>
   <div class="monitor-container">
     <div
-      v-if="deviceType == 'pump_under' && deviceProperty.modelMonitor.length > 0"
+      v-if="deviceType?.startsWith('pump_under') && deviceProperty.modelMonitor.length > 0"
       id="FlowSensor"
       class="FlowSensor-box"
       style="position: absolute; display: none"
@@ -288,7 +288,7 @@
       nextTick(async () => {
         if (props.deviceType == 'pump_over') {
           setModelType('gasPump');
-        } else if (props.deviceType == 'pump_under') {
+        } else if (props.deviceType?.startsWith('pump_under')) {
           setModelType('gasPumpUnder');
         }
         deviceProperty.value = await getMonitorData(props.deviceType);

+ 19 - 44
src/views/vent/monitorManager/gasPumpMonitor/index.vue

@@ -1,56 +1,31 @@
 <template>
-  <div class="bg" style="width: 100%; height: 100%; display: flex; justify-content: center; align-items: center; overflow: hidden">
+  <div class="bg"
+    style="width: 100%; height: 100%; display: flex; justify-content: center; align-items: center; overflow: hidden">
     <a-spin :spinning="loading" />
-    <div
-      id="gas3DCSS"
-      v-show="activeKey == 'monitor' && !loading && currentDeviceType == 'pump_under'"
-      style="width: 100%; height: 100%; top: 0; left: 0; position: absolute; overflow: hidden"
-    >
+    <div id="gas3DCSS"
+      v-show="activeKey == 'monitor' && !loading && (currentDeviceType.startsWith('pump_under') || currentDeviceType == 'pump_n12m2pq')"
+      style="width: 100%; height: 100%; top: 0; left: 0; position: absolute; overflow: hidden">
     </div>
-    <div id="gasPump3D" v-show="activeKey == 'monitor'" style="width: 100%; height: 100%; position: absolute; overflow: hidden"> </div>
+    <div id="gasPump3D" v-show="activeKey == 'monitor'"
+      style="width: 100%; height: 100%; position: absolute; overflow: hidden"> </div>
   </div>
   <div class="scene-box">
-    <customHeader
-      :fieldNames="{ label: 'strinstallpos', value: 'deviceID', options: 'children' }"
-      :options="options"
-      @change="getSelectRow"
-      :optionValue="optionValue"
-      >瓦斯抽采泵站监测与管控</customHeader
-    >
+    <customHeader :fieldNames="{ label: 'strinstallpos', value: 'deviceID', options: 'children' }" :options="options"
+      @change="getSelectRow" :optionValue="optionValue">瓦斯抽采泵站监测与管控</customHeader>
     <div class="center-container">
       <gasPumpHome v-if="activeKey == 'monitor'" :deviceId="optionValue" :device-type="currentDeviceType" />
       <div v-else class="history-group">
         <div class="device-button-group" v-if="deviceList.length > 0">
-          <div
-            class="device-button"
-            :class="{ 'device-active': deviceActive == device.deviceType }"
-            v-for="(device, index) in deviceList"
-            :key="index"
-            @click="deviceChange(index)"
-            >{{ device.deviceName }}</div
-          >
+          <div class="device-button" :class="{ 'device-active': deviceActive == device.deviceType }"
+            v-for="(device, index) in deviceList" :key="index" @click="deviceChange(index)">{{ device.deviceName }}
+          </div>
         </div>
-        <gasPumpHistory
-          v-if="activeKey == 'monitor_history'"
-          ref="historyTable"
-          class="vent-margin-t-20"
-          :device-type="currentDeviceType"
-          :device-id="optionValue"
-        />
-        <gasPumpHandleHistoryVue
-          v-if="activeKey == 'handler_history'"
-          ref="alarmHistoryTable"
-          class="vent-margin-t-20"
-          :deviceId="optionValue"
-          :device-type="currentDeviceType"
-        />
-        <gasPumpAlarmHistory
-          v-if="activeKey == 'faultRecord'"
-          ref="handlerHistoryTable"
-          class="vent-margin-t-20"
-          :deviceId="optionValue"
-          :device-type="currentDeviceType"
-        />
+        <gasPumpHistory v-if="activeKey == 'monitor_history'" ref="historyTable" class="vent-margin-t-20"
+          :device-type="currentDeviceType" :device-id="optionValue" />
+        <gasPumpHandleHistoryVue v-if="activeKey == 'handler_history'" ref="alarmHistoryTable" class="vent-margin-t-20"
+          :deviceId="optionValue" :device-type="currentDeviceType" />
+        <gasPumpAlarmHistory v-if="activeKey == 'faultRecord'" ref="handlerHistoryTable" class="vent-margin-t-20"
+          :deviceId="optionValue" :device-type="currentDeviceType" />
       </div>
     </div>
     <BottomMenu @change="changeActive" />
@@ -101,7 +76,7 @@
     if (activeKey.value == 'monitor') {
       if (currentDeviceType.value == 'pump_over') {
         setModelType('gasPump');
-      } else if (currentDeviceType.value == 'pump_under') {
+      } else if (currentDeviceType.value.startsWith('pump_under')) {
         setModelType('gasPumpUnder');
       }
     }

+ 2 - 2
src/views/vent/monitorManager/gateMonitor/gate.threejs.two.yj.ts

@@ -349,7 +349,7 @@ class FmTwoYj {
           handler = () => {
             this.clipActionArr.frontDoor.paused = true;
             this.clipActionArr.frontDoor.reset(); //
-            this.clipActionArr.frontDoor.time = 8;
+            this.clipActionArr.frontDoor.time = 5.5;
             this.clipActionArr.frontDoor.timeScale = -timeScale;
             // this.clipActionArr.frontDoor.clampWhenFinished = true;
             this.clipActionArr.frontDoor.play();
@@ -377,7 +377,7 @@ class FmTwoYj {
           handler = () => {
             this.clipActionArr.backDoor.paused = true;
             this.clipActionArr.backDoor.reset();
-            this.clipActionArr.backDoor.time = 8;
+            this.clipActionArr.backDoor.time = 5.5;
             this.clipActionArr.backDoor.timeScale = -timeScale;
             // this.clipActionArr.backDoor.clampWhenFinished = true;
             this.clipActionArr.backDoor.play();

+ 131 - 159
src/views/vent/monitorManager/mainFanMonitor/index.vue

@@ -1,32 +1,26 @@
 <template>
-  <div class="bg" style="width: 100%; height: 100%; display: flex; justify-content: center; align-items: center; overflow: hidden">
+  <div class="bg"
+    style="width: 100%; height: 100%; display: flex; justify-content: center; align-items: center; overflow: hidden">
     <!-- <a-spin :spinning="loading" /> -->
-    <div
-      id="main3DCSS"
-      class="threejs-Object-CSS"
-      style="width: 100%; height: 100%; position: absolute; pointer-events: none; overflow: hidden; z-index: 1; top: 0"
-    >
+    <div id="main3DCSS" class="threejs-Object-CSS"
+      style="width: 100%; height: 100%; position: absolute; pointer-events: none; overflow: hidden; z-index: 1; top: 0">
       <div style="position: relative">
         <div class="elementTag" id="inputBox">
           <div class="elementContent elementContent-r" v-if="selectData.DataPa && backMonitorIsShow">
             <!-- <div class="element-item"><span class="data-title">风机气压(Pa):</span><span>{{ selectData.DataPa ? selectData.DataPa : '-' }}</span></div> -->
-            <div class="element-item"
-              ><span class="data-title">风机负压(Pa):</span><span>{{ selectData.Fan2FanPre ? selectData.Fan2FanPre : '-' }}</span></div
-            >
-            <div class="element-item"
-              ><span class="data-title">风机风量(m³/s):</span><span>{{ selectData.Fan2m3 ? selectData.Fan2m3 : '-' }}</span></div
-            >
+            <div class="element-item"><span class="data-title">风机负压(Pa):</span><span>{{ selectData.Fan2FanPre ?
+                selectData.Fan2FanPre : '-' }}</span></div>
+            <div class="element-item"><span class="data-title">风机风量(m³/s):</span><span>{{ selectData.Fan2m3 ?
+                selectData.Fan2m3 : '-' }}</span></div>
           </div>
         </div>
         <div class="elementTag" id="inputBox1">
           <div class="elementContent elementContent-r" v-if="selectData.DataPa && frontMonitorIsShow">
             <!-- <div class="element-item"><span class="data-title">风机全压(Pa):</span><span>{{ selectData.DataPa ? selectData.DataPa : '-' }}</span></div> -->
-            <div class="element-item"
-              ><span class="data-title">风机负压(Pa):</span><span>{{ selectData.Fan1FanPre ? selectData.Fan1FanPre : '-' }}</span></div
-            >
-            <div class="element-item"
-              ><span class="data-title">风机风量(m³/s):</span><span>{{ selectData.Fan1m3 ? selectData.Fan1m3 : '-' }}</span></div
-            >
+            <div class="element-item"><span class="data-title">风机负压(Pa):</span><span>{{ selectData.Fan1FanPre ?
+                selectData.Fan1FanPre : '-' }}</span></div>
+            <div class="element-item"><span class="data-title">风机风量(m³/s):</span><span>{{ selectData.Fan1m3 ?
+                selectData.Fan1m3 : '-' }}</span></div>
           </div>
         </div>
         <div v-if="globalConfig?.simulatedPassword" class="elementTag" id="fbm">
@@ -42,52 +36,43 @@
                   <span class="data-title"><span class="signal-round signal-round-gry vent-margin-r-8"></span>关闭</span>
                 </template>
                 <template v-else>
-                  <div class="vent-margin-l-10"
-                    ><span class="signal-round signal-round-warning vent-margin-r-8"></span>防爆门正在运行 或 数据异常</div
-                  >
+                  <div class="vent-margin-l-10"><span
+                      class="signal-round signal-round-warning vent-margin-r-8"></span>防爆门正在运行 或 数据异常</div>
                 </template>
               </div>
               <div class="vent-flex-row-between vent-margin-t-10">
                 <span class="data-title">反风锁紧状态:</span>
-                <template
-                  v-if="
+                <template v-if="
                     selectData['Lock1Open'] == 1 && selectData['Lock1Close'] == 0 && selectData['Lock2Open'] == 1 && selectData['Lock2Close'] == '0'
-                  "
-                >
-                  <span class="data-title"><span class="signal-round signal-round-blue vent-margin-r-8"></span>锁1开</span>
-                  <span class="data-title"><span class="signal-round signal-round-blue vent-margin-r-8"></span>锁2开</span>
+                  ">
+                  <span class="data-title"><span
+                      class="signal-round signal-round-blue vent-margin-r-8"></span>锁1开</span>
+                  <span class="data-title"><span
+                      class="signal-round signal-round-blue vent-margin-r-8"></span>锁2开</span>
                 </template>
-                <template
-                  v-else-if="
+                <template v-else-if="
                     selectData['Lock1Open'] == '0' && selectData['Lock1Close'] == 1 && selectData['Lock2Open'] == '0' && selectData['Lock2Close'] == 1
-                  "
-                >
+                  ">
                   <span class="data-title"><span class="signal-round signal-round-gry vent-margin-r-8"></span>锁1关</span>
                   <span class="data-title"><span class="signal-round signal-round-gry vent-margin-r-8"></span>锁2关</span>
                 </template>
                 <template v-else>
-                  <div class="vent-margin-l-10"
-                    ><span class="signal-round signal-round-warning vent-margin-r-8"></span>反风锁紧正在运行 或 数据异常</div
-                  >
+                  <div class="vent-margin-l-10"><span
+                      class="signal-round signal-round-warning vent-margin-r-8"></span>反风锁紧正在运行 或 数据异常</div>
                 </template>
               </div>
             </div>
             <div class="fbm-data">
-              <div class="element-item"
-                ><span class="data-title">井口负压(kPa):</span><span>{{ selectData.DataPa ? selectData.DataPa : '-' }}</span></div
-              >
-              <div class="element-item"
-                ><span class="data-title">井口正压(kPa):</span><span>{{ selectData.DataPa ? selectData.DataPa : '-' }}</span></div
-              >
-              <div class="element-item"
-                ><span class="data-title">井口温度(℃):</span><span>{{ selectData.DataPa ? selectData.DataPa : '-' }}</span></div
-              >
-              <div class="element-item"
-                ><span class="data-title">甲烷浓度(%):</span><span>{{ selectData.Fan1Negative ? selectData.Fan1Negative : '-' }}</span></div
-              >
-              <div class="element-item"
-                ><span class="data-title">CO浓度(%):</span><span>{{ selectData.Fan1m3 ? selectData.Fan1m3 : '-' }}</span></div
-              >
+              <div class="element-item"><span class="data-title">井口负压(kPa):</span><span>{{ selectData.DataPa ?
+                  selectData.DataPa : '-' }}</span></div>
+              <div class="element-item"><span class="data-title">井口正压(kPa):</span><span>{{ selectData.DataPa ?
+                  selectData.DataPa : '-' }}</span></div>
+              <div class="element-item"><span class="data-title">井口温度(℃):</span><span>{{ selectData.DataPa ?
+                  selectData.DataPa : '-' }}</span></div>
+              <div class="element-item"><span class="data-title">甲烷浓度(%):</span><span>{{ selectData.Fan1Negative ?
+                  selectData.Fan1Negative : '-' }}</span></div>
+              <div class="element-item"><span class="data-title">CO浓度(%):</span><span>{{ selectData.Fan1m3 ?
+                  selectData.Fan1m3 : '-' }}</span></div>
               <div class="vent-flex-row-between">
                 <span class="data-title">操作方式:</span>
                 <span class="data-title"><span class="signal-round signal-round-blue vent-margin-r-8"></span>远程</span>
@@ -105,7 +90,7 @@
   <div class="scene-box" style="z-index: 999">
     <div class="title-text" style="position: absolute; z-index: 9999; width: 100%; text-align: center">{{
       selectData.supplyAirAddr || selectData.strinstallpos || selectData.stationname
-    }}</div>
+      }}</div>
 
     <div v-if="hasPermission('btn:show')" class="top-box control-group">
       <template v-for="(item, index) in modalTypeArr.centerBtnArr" :key="index">
@@ -118,12 +103,10 @@
         <div class="item-header">设备监测</div>
         <div class="item-container">
           <div class="tab">
-            <div class="tab-item" :class="{ 'tab-item-active-r': dataMonitorRowIndex == 0 }" @click="selectDevice('dataMonitorRowIndex', 0)"
-              >1#风机</div
-            >
-            <div class="tab-item" :class="{ 'tab-item-active-r': dataMonitorRowIndex == 1 }" @click="selectDevice('dataMonitorRowIndex', 1)"
-              >2#风机</div
-            >
+            <div class="tab-item" :class="{ 'tab-item-active-r': dataMonitorRowIndex == 0 }"
+              @click="selectDevice('dataMonitorRowIndex', 0)">1#风机</div>
+            <div class="tab-item" :class="{ 'tab-item-active-r': dataMonitorRowIndex == 1 }"
+              @click="selectDevice('dataMonitorRowIndex', 1)">2#风机</div>
           </div>
           <div class="container-group container-group-l">
             <template v-if="deviceType">
@@ -135,18 +118,18 @@
                 <div v-if="data.dataIndex.startsWith('Fan')">
                   <div class="item-value" v-if="dataMonitorRowIndex == 0">{{
                     selectData['Fan1StartStatus'] == '0' && globalConfig?.simulatedPassword
-                      ? '-'
-                      : selectData[data.dataIndex.replace('Fan', 'Fan1')]
-                      ? selectData[data.dataIndex.replace('Fan', 'Fan1')]
-                      : '-'
-                  }}</div>
+                    ? '-'
+                    : selectData[data.dataIndex.replace('Fan', 'Fan1')]
+                    ? selectData[data.dataIndex.replace('Fan', 'Fan1')]
+                    : '-'
+                    }}</div>
                   <div class="item-value" v-if="dataMonitorRowIndex == 1">{{
                     selectData['Fan2StartStatus'] == '0' && globalConfig?.simulatedPassword
-                      ? '-'
-                      : selectData[data.dataIndex.replace('Fan', 'Fan2')]
-                      ? selectData[data.dataIndex.replace('Fan', 'Fan2')]
-                      : '-'
-                  }}</div>
+                    ? '-'
+                    : selectData[data.dataIndex.replace('Fan', 'Fan2')]
+                    ? selectData[data.dataIndex.replace('Fan', 'Fan2')]
+                    : '-'
+                    }}</div>
                 </div>
                 <div v-else>
                   <div class="item-value">{{ selectData[data.dataIndex] ? selectData[data.dataIndex] : '-' }}</div>
@@ -160,93 +143,86 @@
         <div class="item-header">设备报警</div>
         <div class="item-container">
           <div class="tab">
-            <div class="tab-item" :class="{ 'tab-item-active-r': warningMonitorRowIndex === 0 }" @click="selectDevice('warningMonitorRowIndex', 0)"
-              >1#风机</div
-            >
-            <div class="tab-item" :class="{ 'tab-item-active-r': warningMonitorRowIndex === 1 }" @click="selectDevice('warningMonitorRowIndex', 1)"
-              >2#风机</div
-            >
+            <div class="tab-item" :class="{ 'tab-item-active-r': warningMonitorRowIndex === 0 }"
+              @click="selectDevice('warningMonitorRowIndex', 0)">1#风机</div>
+            <div class="tab-item" :class="{ 'tab-item-active-r': warningMonitorRowIndex === 1 }"
+              @click="selectDevice('warningMonitorRowIndex', 1)">2#风机</div>
           </div>
           <div class="container-group">
             <div class="warning-header">
-              <div class="header-item">
+              <!-- <div class="header-item">
                 <div class="header-title">报警总数</div>
                 <div class="header-value">0</div>
-              </div>
+              </div> -->
               <div class="header-item">
                 <div class="header-title"> 未处理数</div>
-                <div class="header-value">0</div>
+                <div class="header-value">{{ selectData['warnLogNotOkCount'] }}
+                </div>
               </div>
             </div>
             <div class="warning-group">
               <template v-if="deviceType">
                 <div class="warning-item" v-for="(state, index) in rightColumns" :key="index">
-                  <div class="item-name"><div class="icon"></div> {{ state.title }}</div>
+                  <div class="item-name">
+                    <div class="icon"></div> {{ state.title }}
+                  </div>
                   <div v-if="state.dataIndex.startsWith('Fan')">
                     <div class="signal-item" v-if="warningMonitorRowIndex == 0">
                       <template v-if="selectData['Fan1StartStatus'] == '0' && globalConfig?.simulatedPassword">
                         <div class="signal-round signal-round-gry"></div>
-                        <div class="vent-margin-l-8">无状态</div></template
-                      >
+                        <div class="vent-margin-l-8">无状态</div>
+                      </template>
                       <template v-else>
-                        <div
-                          class="signal-round"
-                          :class="{
+                        <div class="signal-round" :class="{
                             'signal-round-run': selectData[state.dataIndex.replace('Fan', 'Fan1')] == '0',
                             'signal-round-warning':
                               selectData[state.dataIndex.replace('Fan', 'Fan1')] !== undefined &&
                               selectData[state.dataIndex.replace('Fan', 'Fan1')] == '1',
                             'signal-round-gry': selectData[state.dataIndex.replace('Fan', 'Fan1')] === undefined,
-                          }"
-                        ></div>
+                          }"></div>
                         <div class="vent-margin-l-8">{{
                           selectData[state.dataIndex.replace('Fan', 'Fan1')] === undefined
-                            ? '无状态'
-                            : selectData[state.dataIndex.replace('Fan', 'Fan1')] == '0'
-                            ? '正常'
-                            : '异常'
-                        }}</div>
+                          ? '无状态'
+                          : selectData[state.dataIndex.replace('Fan', 'Fan1')] == '0'
+                          ? '正常'
+                          : '异常'
+                          }}</div>
                       </template>
                     </div>
                     <div class="signal-item" v-if="warningMonitorRowIndex == 1">
                       <template v-if="selectData['Fan2StartStatus'] == '0' && globalConfig?.simulatedPassword">
                         <div class="signal-round signal-round-gry"></div>
-                        <div class="vent-margin-l-8">无状态</div></template
-                      >
+                        <div class="vent-margin-l-8">无状态</div>
+                      </template>
                       <template v-else>
-                        <div
-                          class="signal-round"
-                          :class="{
+                        <div class="signal-round" :class="{
                             'signal-round-run': selectData[state.dataIndex.replace('Fan', 'Fan2')] == '0',
                             'signal-round-warning':
                               selectData[state.dataIndex.replace('Fan', 'Fan2')] != undefined &&
                               selectData[state.dataIndex.replace('Fan', 'Fan2')] == '1',
                             'signal-round-gry': selectData[state.dataIndex.replace('Fan', 'Fan2')] == undefined,
-                          }"
-                        ></div>
+                          }"></div>
                         <div class="vent-margin-l-8">{{
                           selectData[state.dataIndex.replace('Fan', 'Fan2')] == undefined
-                            ? '无状态'
-                            : selectData[state.dataIndex.replace('Fan', 'Fan2')] == '0'
-                            ? '正常'
-                            : '异常'
-                        }}</div>
+                          ? '无状态'
+                          : selectData[state.dataIndex.replace('Fan', 'Fan2')] == '0'
+                          ? '正常'
+                          : '异常'
+                          }}</div>
                       </template>
                     </div>
                   </div>
                   <div v-else>
                     <div class="signal-item">
-                      <div
-                        class="signal-round vent-margin-l-8"
-                        :class="{
+                      <div class="signal-round vent-margin-l-8" :class="{
                           'signal-round-run': selectData[state.dataIndex] == '0',
                           'signal-round-warning': selectData[state.dataIndex] !== undefined && selectData[state.dataIndex] == '1',
                           'signal-round-gry': selectData[state.dataIndex] === undefined,
-                        }"
-                      ></div>
+                        }"></div>
                       <div class="vent-margin-l-8">{{
-                        selectData[state.dataIndex] === undefined ? '无状态' : selectData[state.dataIndex] == '0' ? '正常' : '异常'
-                      }}</div>
+                        selectData[state.dataIndex] === undefined ? '无状态' : selectData[state.dataIndex] == '0' ? '正常' :
+                        '异常'
+                        }}</div>
                     </div>
                   </div>
                 </div>
@@ -260,19 +236,14 @@
       <dv-border-box8 :dur="5" :style="`padding: 5px; height: ${scroll.y + 120}px`">
         <a-tabs class="tabs-box" v-model:activeKey="activeKey" @change="tabChange">
           <a-tab-pane key="1" tab="实时监测">
-            <GroupMonitorTable
-              ref="MonitorDataTable"
-              :dataSource="dataSource"
-              columnsType="fanmain_monitor"
-              @selectRow="getSelectRow"
-              :scroll="{ y: scroll.y - (headElHeight - 56) }"
-              :is-action="true"
-            >
+            <GroupMonitorTable ref="MonitorDataTable" :dataSource="dataSource" columnsType="fanmain_monitor"
+              @selectRow="getSelectRow" :scroll="{ y: scroll.y - (headElHeight - 56) }" :is-action="true">
               <template #bodyCell="{ column, record }">
                 <!-- <a-tag :color="record.netStatus == '0' ? '#f00' : 'green'">{{ record.netStatus == '1' ? '报警' : '正常' }}</a-tag> -->
               </template>
               <template #action="{ record }">
-                <a v-if="globalConfig?.showReport" class="table-action-link" @click="deviceEdit($event, 'reportInfo', record)">报表录入</a>
+                <a v-if="globalConfig?.showReport" class="table-action-link"
+                  @click="deviceEdit($event, 'reportInfo', record)">报表录入</a>
                 <a class="table-action-link" @click="deviceEdit($event, 'deviceInfo', record)">设备编辑</a>
               </template>
             </GroupMonitorTable>
@@ -288,10 +259,11 @@
                 <template #filterCell="{ column, record }">
                   <a-tag v-if="column.dataIndex === 'warnFlag'" :color="record.warnFlag == '0' ? 'green' : 'red'">{{
                     record.warnFlag == '0' ? '正常' : '报警'
-                  }}</a-tag>
-                  <a-tag v-if="column.dataIndex === 'netStatus'" :color="record.netStatus == '0' ? 'default' : 'green'">{{
+                    }}</a-tag>
+                  <a-tag v-if="column.dataIndex === 'netStatus'"
+                    :color="record.netStatus == '0' ? 'default' : 'green'">{{
                     record.netStatus == '0' ? '断开' : '连接'
-                  }}</a-tag>
+                    }}</a-tag>
                   <div v-if="record.nwindownum == 1 && column.dataIndex === 'rearArea'">/</div>
                 </template>
               </HistoryTable>
@@ -299,41 +271,29 @@
           </a-tab-pane>
           <a-tab-pane key="4" tab="报警历史">
             <div class="tab-item" v-if="activeKey === '4'">
-              <AlarmHistoryTable columns-type="alarm" device-type="fanmain" designScope="alarm-history" :scroll="scroll" />
+              <AlarmHistoryTable columns-type="alarm" :device-type="deviceType" designScope="alarm-history"
+                :scroll="scroll" />
             </div>
           </a-tab-pane>
           <a-tab-pane key="5" tab="操作历史">
             <div v-if="hasPermission('show:handlerHistory') && activeKey == '5'" class="tab-item">
-              <HandlerHistoryTable
-                columns-type="operator_history"
-                device-type="fanmain"
-                :device-list-api="baseList"
-                designScope="alarm-history"
-                :scroll="scroll"
-              />
+              <HandlerHistoryTable columns-type="operator_history" device-type="fanmain" :device-list-api="baseList"
+                designScope="alarm-history" :scroll="scroll" />
             </div>
           </a-tab-pane>
         </a-tabs>
       </dv-border-box8>
     </div>
   </div>
-  <div style="z-index: -1; position: absolute; top: -100px; right: 10px; width: 300px; height: 280px; margin: auto" class="palyer">
+  <div style="z-index: -1; position: absolute; top: -100px; right: 10px; width: 300px; height: 280px; margin: auto"
+    class="palyer">
     <LivePlayer id="main-player1" ref="player1" :videoUrl="flvURL1()" muted loop loading controls />
   </div>
-  <div
-    ref="playerRef"
-    style="z-index: 999; position: absolute; top: 100px; right: 15px; width: 100%; height: 100%; margin: auto; pointer-events: none"
-  >
+  <div ref="playerRef"
+    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"
-    :maskClosable="false"
-    :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>
@@ -388,20 +348,24 @@
         <div class="vent-margin-t-20">
           <span class="data-title vent-margin-r-8">反风锁紧状态:</span>
           <template
-            v-if="selectData['Lock1Open'] == 1 && selectData['Lock1Close'] == 0 && selectData['Lock2Open'] == 1 && selectData['Lock2Close'] == 0"
-          >
-            <span class="data-title vent-margin-l-10"><span class="signal-round signal-round-blue vent-margin-r-8"></span>锁1开到位</span>
-            <span class="data-title vent-margin-l-20"><span class="signal-round signal-round-blue vent-margin-r-8"></span>锁2开到位</span>
+            v-if="selectData['Lock1Open'] == 1 && selectData['Lock1Close'] == 0 && selectData['Lock2Open'] == 1 && selectData['Lock2Close'] == 0">
+            <span class="data-title vent-margin-l-10"><span
+                class="signal-round signal-round-blue vent-margin-r-8"></span>锁1开到位</span>
+            <span class="data-title vent-margin-l-20"><span
+                class="signal-round signal-round-blue vent-margin-r-8"></span>锁2开到位</span>
           </template>
           <template
-            v-else-if="selectData['Lock1Open'] == 0 && selectData['Lock1Close'] == 1 && selectData['Lock2Open'] == 0 && selectData['  '] == 1"
-          >
-            <span class="data-title vent-margin-l-10"><span class="signal-round signal-round-gry vent-margin-r-8"></span>锁1关到位</span>
-            <span class="data-title vent-margin-l-20"><span class="signal-round signal-round-gry vent-margin-r-8"></span>锁2关到位</span>
+            v-else-if="selectData['Lock1Open'] == 0 && selectData['Lock1Close'] == 1 && selectData['Lock2Open'] == 0 && selectData['  '] == 1">
+            <span class="data-title vent-margin-l-10"><span
+                class="signal-round signal-round-gry vent-margin-r-8"></span>锁1关到位</span>
+            <span class="data-title vent-margin-l-20"><span
+                class="signal-round signal-round-gry vent-margin-r-8"></span>锁2关到位</span>
           </template>
           <template v-else>
-            <span class="data-title vent-margin-l-10"><span class="signal-round signal-round-gry vent-margin-r-8"></span>锁1-</span>
-            <span class="data-title vent-margin-l-20"><span class="signal-round signal-round-gry vent-margin-r-8"></span>锁2-</span>
+            <span class="data-title vent-margin-l-10"><span
+                class="signal-round signal-round-gry vent-margin-r-8"></span>锁1-</span>
+            <span class="data-title vent-margin-l-20"><span
+                class="signal-round signal-round-gry vent-margin-r-8"></span>锁2-</span>
           </template>
         </div>
         <div class="vent-flex-row btn-box vent-margin-t-20">
@@ -411,9 +375,8 @@
             <span class="btn btn2" @click="handleOk('closeLock')">关锁</span>
           </div>
           <!-- <a-switch v-if="fbmControlData.CtrlLockOpen !== undefined" style="margin-left: 5px;" v-model:checked="fbmControlData.CtrlLockOpen" checked-children="开锁" un-checked-children="关锁" /> -->
-          <div v-else class="vent-margin-l-10"
-            ><span class="signal-round signal-round-warning vent-margin-r-8"></span>反风锁紧正在运行 或 数据异常</div
-          >
+          <div v-else class="vent-margin-l-10"><span
+              class="signal-round signal-round-warning vent-margin-r-8"></span>反风锁紧正在运行 或 数据异常</div>
         </div>
         <div class="vent-flex-row btn-box vent-margin-t-20">
           <span class="data-title vent-margin-r-8">防爆门扇控制:</span>
@@ -422,7 +385,8 @@
             <span class="btn btn2" @click="handleOk('closeGate')">关门</span>
           </div>
           <!-- <a-switch v-if="fbmControlData.CtrlExplosionVentOpen !== undefined" style="margin-left: 5px;" v-model:checked="fbmControlData.CtrlExplosionVentOpen" checked-children="开门" un-checked-children="关门" /> -->
-          <div class="vent-margin-l-10" v-else><span class="signal-round signal-round-warning vent-margin-r-8"></span>防爆门正在运行 或 数据异常</div>
+          <div class="vent-margin-l-10" v-else><span
+              class="signal-round signal-round-warning vent-margin-r-8"></span>防爆门正在运行 或 数据异常</div>
         </div>
       </div>
     </div>
@@ -1275,15 +1239,17 @@
             flex: 1;
             display: flex;
             flex-direction: column;
-            margin: 5px 10px;
-            justify-content: center;
+            margin: 2px 10px;
+            justify-content: space-between;
             align-items: center;
             .header-title {
               color: #39e7fe;
             }
             .header-value {
-              width: 133px;
+              // width: 26px;
+              position: relative;
               height: 56px;
+              padding-left: 5px;
               font-weight: 600;
               font-family: 'douyuFont';
               font-size: 16px;
@@ -1291,7 +1257,13 @@
               display: flex;
               justify-content: center;
               align-items: center;
-              background: url('/@/assets/images/vent/count-header-bg.png') no-repeat;
+              // &::before {
+              //   content: '';
+              //   position: absolute;
+              //   width: 26px;
+              //   height: 56px;
+              //   background: url('/@/assets/images/vent/count-header-bg.png') no-repeat;
+              // }
             }
           }
         }

+ 1 - 1
src/views/vent/monitorManager/nitrogen/components/nitrogenHome1.vue

@@ -27,7 +27,7 @@
                 >
               </div>
               <div v-else class="signal-item">
-                <div class="signal" v-for="(signal, childIndex) in deviceProperty.modelMonitor[1].list" :key="childIndex">
+                <div class="signal" v-for="(signal, childIndex) in preMonitor.child" :key="childIndex">
                   <span class="monitor-title">{{ signal.title }}</span>
                   <span
                     :class="{

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

@@ -2,12 +2,13 @@ import { ref, defineAsyncComponent } from 'vue';
 import { useGlobSetting } from '/@/hooks/setting';
 export function getNitrogenHome() {
   const { sysOrgCode } = useGlobSetting();
-  // const sysOrgCode = 'yjmdjhmk';
+  // const sysOrgCode = 'sdmtjtswmk';
   let nitrogenHome;
   switch (sysOrgCode) {
     case 'sdmtjtbltmk': //补连塔
       nitrogenHome = defineAsyncComponent(() => import('./components/nitrogenHomeBLT.vue'));
       return nitrogenHome;
+    case 'sdmtjtswmk':
     case 'sdmtjtwlmlmk':
     case 'yjmdjhmk': // 窑街金河矿
     case 'sdmtjtyjlmk': //榆家梁
@@ -59,7 +60,7 @@ export const bottomBtnList = ref([
 
 export async function getMonitorData() {
   const { sysOrgCode } = useGlobSetting();
-  // const sysOrgCode = 'yjmdjhmk';
+  // const sysOrgCode = 'sdmtjtswmk';
   switch (sysOrgCode) {
     case 'yjmdsankuang': // 窑街三矿
       return await import('./nitrogen.dataYJ');
@@ -79,6 +80,8 @@ export async function getMonitorData() {
       return await import('./nitrogen.dataCc');
     case 'sdmtjtcctrk': // 寸草2
       return await import('./nitrogen.dataCc_2');
+    case 'sdmtjtswmk': // 上湾
+      return await import('./nitrogen.dataSw');
     case 'sdmtjtyjlmk': // 榆家梁
       return await import('./nitrogen.data.yjl');
     case 'sdmtjtwlmlmk': // 乌兰木伦

+ 3 - 3
src/views/vent/monitorManager/windrectMonitor/index.vue

@@ -83,7 +83,7 @@
             </MonitorTable>
           </a-tab-pane>
           <a-tab-pane key="2" tab="监测曲线图" force-render>
-            <div class="tab-item" v-if="activeKey === '2'">
+            <div class="tab-item" style="height: 280px" v-if="activeKey === '2'">
               <DeviceEcharts chartsColumnsType="windrect_chart" xAxisPropType="strname" :dataSource="dataSource"
                 height="100%" :chartsColumns="chartsColumnList"
                 :device-list-api="list.bind(null, { devicetype: 'windrect', pagetype: 'normal' })"
@@ -109,7 +109,7 @@
           <a-tab-pane key="4" tab="报警历史">
             <div class="tab-item" v-if="activeKey === '4'">
               <AlarmHistoryTable columns-type="alarm" device-type="windrect" designScope="alarm-history"
-                :scroll="scroll" />
+                :device-list-api="getTableList" :scroll="scroll" />
             </div>
           </a-tab-pane>
           <!-- <a-tab-pane v-if="hasPermission('windrect:handlerHistory')" key="5" tab="操作历史">
@@ -171,7 +171,7 @@
   import { mountedThree, destroy, addMonitorText, play, setModelType, playCamera } from './windrect.threejs';
   import { list, pathList, deviceList, testWind, exportXls, resetWind } from './windrect.api';
   import { message, Progress } from 'ant-design-vue';
-  import { chartsColumns, option } from './windrect.data';
+  import { chartsColumns, chartsColumnsHistory, option } from './windrect.data';
   import { getTableHeaderColumns } from '/@/hooks/web/useWebColumns';
   import { setDivHeight } from '/@/utils/event';
   import { BorderBox8 as DvBorderBox8 } from '@kjgl77/datav-vue3';

+ 26 - 0
src/views/vent/monitorManager/windrectMonitor/windrect.data.ts

@@ -389,6 +389,32 @@ export const chartsColumns = [
     dataIndex: 'va',
   },
 ];
+export const chartsColumnsHistory = [
+  {
+    legend: '风量',
+    seriesName: 'm³/min',
+    ymax: 10000,
+    yname: 'm³/min',
+    linetype: 'line',
+    yaxispos: 'left',
+    color: '#3DF6FF',
+    sort: 1,
+    xRotate: 0,
+    dataIndex: 'FL',
+  },
+  {
+    legend: '风速',
+    seriesName: '(m/s)',
+    ymax: 10,
+    yname: 'm/s',
+    linetype: 'line',
+    yaxispos: 'right',
+    color: '#cd5fff',
+    sort: 2,
+    xRotate: 0,
+    dataIndex: 'windSpeed',
+  },
+];
 
 export const option = {
   xAxis: {