浏览代码

1. 历史数据查询,将我们自己的历史查询与其他平台对接回的历史数据查询页面进行合并,动态判断
2. 替换密闭、皮带模型
3. 解决注氮、瓦斯抽采泵切换场景,视频不删除的bug

hongrunxia 11 月之前
父节点
当前提交
5053ad90f3
共有 25 个文件被更改,包括 392 次插入1614 次删除
  1. 二进制
      public/model/glft/fire/laneway-device_2024-03-19.glb
  2. 二进制
      public/model/glft/mb/obfurage_2023-09-09.glb
  3. 二进制
      public/model/glft/mb/obfurage_2024-03-19.glb
  4. 140 145
      src/components/Form/src/jeecg/components/positionSelect/PositionSelectModal.vue
  5. 100 88
      src/components/Modal/src/BasicModal.vue
  6. 29 29
      src/components/Table/src/hooks/usePagination.tsx
  7. 1 1
      src/components/vent/micro/ventModal.vue
  8. 2 1
      src/utils/threejs/main.worker.ts
  9. 5 6
      src/views/vent/home/colliery/components/fan-monitor.vue
  10. 2 2
      src/views/vent/home/colliery/components/main-monitor.vue
  11. 26 4
      src/views/vent/home/colliery/index.vue
  12. 4 2
      src/views/vent/monitorManager/alarmMonitor/fire/gasPage.vue
  13. 1 2
      src/views/vent/monitorManager/beltTunMonitor/beltTun.threejs.base.ts
  14. 24 323
      src/views/vent/monitorManager/comment/HistoryTable.vue
  15. 3 3
      src/views/vent/monitorManager/compressor/components/nitrogenHome_bet.vue
  16. 4 827
      src/views/vent/monitorManager/compressor/components/nitrogenHome_ln.vue
  17. 0 161
      src/views/vent/monitorManager/compressor/nitrogen.data.ln.ts
  18. 2 2
      src/views/vent/monitorManager/compressor/nitrogen.data.ts
  19. 0 1
      src/views/vent/monitorManager/deviceMonitor/components/device/index.vue
  20. 21 5
      src/views/vent/monitorManager/deviceMonitor/components/device/modal/bundle.modal.vue
  21. 1 2
      src/views/vent/monitorManager/fiberMonitor/fiber.belt.threejs.ts
  22. 2 1
      src/views/vent/monitorManager/gasPumpMonitor/components/gasPumpHome.vue
  23. 1 1
      src/views/vent/monitorManager/nitrogen/nitrogen.dataHsw.ts
  24. 12 4
      src/views/vent/monitorManager/windowMonitor/dandaoFc.threejs.ts
  25. 12 4
      src/views/vent/monitorManager/windowMonitor/shuangdaoFc.threejs.ts

二进制
public/model/glft/fire/laneway-device_2024-03-19.glb


二进制
public/model/glft/mb/obfurage_2023-09-09.glb


二进制
public/model/glft/mb/obfurage_2024-03-19.glb


+ 140 - 145
src/components/Form/src/jeecg/components/positionSelect/PositionSelectModal.vue

@@ -1,44 +1,42 @@
 <template>
-    <BasicModal
-        @register="register"
-        :getContainer="getContainer"
-        :canFullscreen="false"
-        :title="title"
-        :width="500"
-        destroyOnClose
-        @ok="handleOk"
-        wrapClassName="j-user-select-modal2" >
+  <BasicModal
+    @register="register"
+    :getContainer="getContainer"
+    :canFullscreen="false"
+    :title="title"
+    :width="500"
+    destroyOnClose
+    @ok="handleOk"
+    wrapClassName="j-user-select-modal2"
+  >
+    <div style="position: relative; min-height: 350px">
+      <div style="width: 100%">
+        <a-input v-model:value="searchText" allowClear style="width: 100%" placeholder="搜索">
+          <template #prefix>
+            <SearchOutlined style="color: #c0c0c0" />
+          </template>
+        </a-input>
+      </div>
 
-        <div style="position: relative; min-height: 350px">
-            <div style="width: 100%">
-                <a-input v-model:value="searchText" allowClear style="width: 100%" placeholder="搜索">
-                    <template #prefix>
-                        <SearchOutlined style="color: #c0c0c0" />
-                    </template>
-                </a-input>
-            </div>
-
-            <!-- tabs -->
-            <div class="modal-select-list-container">
-                <div class="scroll">
-                    <div class="content" style="right: -10px">
-                        
-                        <label class="item" v-for="item in showDataList" @click="(e)=>onSelect(e, item)">
-                            <a-checkbox v-model:checked="item.checked">
-                                <span>{{ item.name }}</span>
-                            </a-checkbox>
-                        </label>
-                    </div>
-                    
-                </div>
-            </div>
-
-            <!-- 选中用户 -->
-            <div class="selected-users" style="width: 100%; overflow-x: hidden">
-                <SelectedUserItem v-for="item in selectedList" :info="item" @unSelect="unSelect" />
-            </div>
+      <!-- tabs -->
+      <div class="modal-select-list-container">
+        <div class="scroll">
+          <div class="content" style="right: -10px">
+            <label class="item" v-for="item in showDataList" @click="(e) => onSelect(e, item)">
+              <a-checkbox v-model:checked="item.checked">
+                <span>{{ item.name }}</span>
+              </a-checkbox>
+            </label>
+          </div>
         </div>
-    </BasicModal>
+      </div>
+
+      <!-- 选中用户 -->
+      <div class="selected-users" style="width: 100%; overflow-x: hidden">
+        <SelectedUserItem v-for="item in selectedList" :info="item" @unSelect="unSelect" />
+      </div>
+    </div>
+  </BasicModal>
 </template>
 
 <script lang="ts">
@@ -47,7 +45,7 @@
   import SelectedUserItem from '../userSelect/SelectedUserItem.vue';
   import { defHttp } from '/@/utils/http/axios';
   import { computed, ref, toRaw, watch } from 'vue';
-  
+
   export default {
     name: 'PositionSelectModal',
     components: {
@@ -65,7 +63,7 @@
         type: Function,
         default: null,
       },
-      title:{
+      title: {
         type: String,
         default: '',
       },
@@ -76,11 +74,10 @@
       appId: {
         type: String,
         default: '',
-      }
+      },
     },
     emits: ['selected', 'register'],
     setup(props, { emit }) {
-
       const searchText = ref('');
       const selectedIdList = computed(() => {
         let arr = selectedList.value;
@@ -91,20 +88,23 @@
         }
       });
 
-      watch(()=>props.appId, async (val)=>{
-        if(val){
-          await loadDataList();
-        }
-      }, {immediate: true});
-      
-      
+      watch(
+        () => props.appId,
+        async (val) => {
+          if (val) {
+            await loadDataList();
+          }
+        },
+        { immediate: true }
+      );
+
       // 弹窗事件
       const [register] = useModalInner(() => {
         let list = dataList.value;
-        if(!list || list.length ==0 ){
+        if (!list || list.length == 0) {
         }
-        for(let item of list){
-          item.checked = false
+        for (let item of list) {
+          item.checked = false;
         }
       });
 
@@ -113,57 +113,57 @@
         let arr = toRaw(selectedIdList.value);
         emit('selected', arr);
       }
-      
+
       const dataList = ref<any[]>([]);
-      const showDataList = computed(()=>{
+      const showDataList = computed(() => {
         let list = dataList.value;
-        if(!list || list.length ==0 ){
-          return []
+        if (!list || list.length == 0) {
+          return [];
         }
         let text = searchText.value;
-        if(!text){
-          return list
+        if (!text) {
+          return list;
         }
-        return list.filter(item=>item.name.indexOf(text)>=0)
+        return list.filter((item) => item.name.indexOf(text) >= 0);
       });
-  
-      const selectedList = computed(()=>{
+
+      const selectedList = computed(() => {
         let list = dataList.value;
-        if(!list || list.length ==0 ){
-          return []
+        if (!list || list.length == 0) {
+          return [];
         }
-        return list.filter(item=>item.checked)
+        return list.filter((item) => item.checked);
       });
 
       function unSelect(id) {
         let list = dataList.value;
-        if(!list || list.length ==0 ){
+        if (!list || list.length == 0) {
           return;
         }
-        let arr = list.filter(item=>item.id == id);
+        let arr = list.filter((item) => item.id == id);
         arr[0].checked = false;
       }
-      
+
       async function loadDataList() {
         let params = {
           pageNo: 1,
           pageSize: 200,
           column: 'createTime',
-          order: 'desc'
+          order: 'desc',
         };
-        const url = '/sys/position/list'
+        const url = '/sys/position/list';
         const data = await defHttp.get({ url, params }, { isTransformResponse: false });
         if (data.success) {
           const { records } = data.result;
-          let arr:any[] = [];
-          if(records && records.length>0){
-            for(let item of records){
+          let arr: any[] = [];
+          if (records && records.length > 0) {
+            for (let item of records) {
               arr.push({
                 id: item.id,
                 name: item.name || item.roleName,
                 selectType: props.type,
-                checked: false
-              })
+                checked: false,
+              });
             }
           }
           dataList.value = arr;
@@ -173,7 +173,6 @@
         console.log('loadDataList', data);
       }
 
-
       function onSelect(e, item) {
         prevent(e);
         console.log('onselect');
@@ -193,90 +192,86 @@
         selectedList,
         selectedIdList,
         unSelect,
-        onSelect
-      
+        onSelect,
       };
     },
   };
 </script>
 <style scoped lang="less">
-    .modal-select-list-container{
-        height: 352px;
-        margin-top: 12px;
-        overflow: auto;
-        .scroll{
-            height: 100%;
-            position: relative;
-            width: 100%;
-            overflow: hidden;
-            .content{
-                bottom: 0;
-                left: 0;
-                overflow: scroll;
-                overflow-x: hidden;
-                position: absolute;
-                right: 0;
-                top: 0;
-                .item{
-                    padding: 7px 5px;
-                    cursor: pointer;
-                    display: block;
-                    &:hover{
-                        background-color: #f5f5f5;
-                    }
-                }
-               
-            }
+  .modal-select-list-container {
+    height: 352px;
+    margin-top: 12px;
+    overflow: auto;
+    .scroll {
+      height: 100%;
+      position: relative;
+      width: 100%;
+      overflow: hidden;
+      .content {
+        bottom: 0;
+        left: 0;
+        overflow: scroll;
+        overflow-x: hidden;
+        position: absolute;
+        right: 0;
+        top: 0;
+        .item {
+          padding: 7px 5px;
+          cursor: pointer;
+          display: block;
+          &:hover {
+            background-color: #f5f5f5;
+          }
         }
-
-       
+      }
     }
+  }
 </style>
 
 <style lang="less">
-    .j-user-select-modal2 {
-        .depart-select {
-            .ant-select-selector {
-                color: #fff !important;
-                background-color: #409eff !important;
-                border-radius: 5px !important;
-            }
-            .ant-select-selection-item,
-            .ant-select-arrow {
-                color: #fff !important;
-            }
-        }
-        .my-search {
-            position: absolute;
-            top: 14px;
-            z-index: 1;
-            &.all-width {
-                width: 100%;
-            }
+  .j-user-select-modal2 {
+    .depart-select {
+      .ant-select-selector {
+        color: #fff !important;
+        background-color: #409eff !important;
+        border-radius: 5px !important;
+      }
+      .ant-select-selection-item,
+      .ant-select-arrow {
+        color: #fff !important;
+      }
+    }
+    .my-search {
+      position: absolute;
+      top: 14px;
+      z-index: 1;
+      &.all-width {
+        width: 100%;
+      }
 
-            .anticon {
-                cursor: pointer;
-                &:hover {
-                    color: #0a8fe9 !important;
-                }
-            }
-            .hidden {
-                display: none;
-            }
+      .anticon {
+        cursor: pointer;
+        &:hover {
+          color: #0a8fe9 !important;
         }
+      }
+      .hidden {
+        display: none;
+      }
+    }
 
-        .my-tabs {
-        }
+    .my-tabs {
+    }
 
-        .selected-users {
-            display: flex;
-            flex-wrap: wrap;
-            flex-direction: row;
-            padding-top: 15px;
-        }
+    .selected-users {
+      display: flex;
+      flex-wrap: wrap;
+      flex-direction: row;
+      padding-top: 15px;
+    }
 
-        .scroll-container {
-            padding-bottom: 0 !important;
-        }
+    .scroll-container {
+      padding-bottom: 0 !important;
     }
+  }
 </style>

+ 100 - 88
src/components/Modal/src/BasicModal.vue

@@ -1,79 +1,87 @@
 <template>
   <div class="vent-modal">
-   <Modal v-bind="getBindValue" @cancel="handleCancel">
-    <template #closeIcon v-if="!$slots.closeIcon">
-      <ModalClose :canFullscreen="getProps.canFullscreen" :fullScreen="fullScreenRef" :commentSpan="commentSpan" :enableComment="getProps.enableComment" @comment="handleComment" @cancel="handleCancel" @fullscreen="handleFullScreen" />
-    </template>
-
-    <template #title v-if="!$slots.title">
-      <ModalHeader :helpMessage="getProps.helpMessage" :title="getMergeProps.title" @dblclick="handleTitleDbClick" />
-    </template>
-    <template #title v-if="!isNoTitle">
-      <ModalHeader :helpMessage="getProps.helpMessage" :title="getMergeProps.title" @dblclick="handleTitleDbClick" />
-    </template>
+    <Modal v-bind="getBindValue" @cancel="handleCancel">
+      <template #closeIcon v-if="!$slots.closeIcon">
+        <ModalClose
+          :canFullscreen="getProps.canFullscreen"
+          :fullScreen="fullScreenRef"
+          :commentSpan="commentSpan"
+          :enableComment="getProps.enableComment"
+          @comment="handleComment"
+          @cancel="handleCancel"
+          @fullscreen="handleFullScreen"
+        />
+      </template>
 
-    <template #footer v-if="!$slots.footer">
-      <ModalFooter v-bind="getBindValue" @ok="handleOk" @cancel="handleCancel">
-        <template #[item]="data" v-for="item in Object.keys($slots)">
-          <slot :name="item" v-bind="data || {}"></slot>
-        </template>
-      </ModalFooter>
-    </template>
+      <template #title v-if="!$slots.title">
+        <ModalHeader :helpMessage="getProps.helpMessage" :title="getMergeProps.title" @dblclick="handleTitleDbClick" />
+      </template>
+      <template #title v-if="!isNoTitle">
+        <ModalHeader :helpMessage="getProps.helpMessage" :title="getMergeProps.title" @dblclick="handleTitleDbClick" />
+      </template>
 
-    <!-- update-begin-author:taoyan date:2022-7-18 for:  modal弹窗 支持评论 slot -->
-    <a-row v-if="getProps.enableComment" class="jeecg-modal-wrapper">
-      <a-col :span="24-commentSpan" class="jeecg-modal-content">
-        <ModalWrapper
-          :useWrapper="getProps.useWrapper"
-          :footerOffset="wrapperFooterOffset"
-          :fullScreen="fullScreenRef"
-          ref="modalWrapperRef"
-          :loading="getProps.loading"
-          :loading-tip="getProps.loadingTip"
-          :minHeight="getProps.minHeight"
-          :height="getWrapperHeight"
-          :visible="visibleRef"
-          :modalFooterHeight="footer !== undefined && !footer ? 0 : undefined"
-          v-bind="omit(getProps.wrapperProps, 'visible', 'height', 'modalFooterHeight')"
-          @ext-height="handleExtHeight"
-          @height-change="handleHeightChange">
-          <slot></slot>
-        </ModalWrapper>
-      </a-col>
-    </a-row>
-    <!-- update-begin-author:taoyan date:2022-7-18 for:  modal弹窗 支持评论 slot -->
-    <a-row class="jeecg-modal-wrapper">
-      <a-col :span="24-commentSpan" class="jeecg-modal-content">
-        <ModalWrapper
-          :useWrapper="getProps.useWrapper"
-          :footerOffset="wrapperFooterOffset"
-          :fullScreen="fullScreenRef"
-          ref="modalWrapperRef"
-          :loading="getProps.loading"
-          :loading-tip="getProps.loadingTip"
-          :minHeight="getProps.minHeight"
-          :height="getWrapperHeight"
-          :visible="visibleRef"
-          :modalFooterHeight="footer !== undefined && !footer ? 0 : undefined"
-          v-bind="omit(getProps.wrapperProps, 'visible', 'height', 'modalFooterHeight')"
-          @ext-height="handleExtHeight"
-          @height-change="handleHeightChange">
-          <slot></slot>
-        </ModalWrapper>
-      </a-col>
+      <template #footer v-if="!$slots.footer">
+        <ModalFooter v-bind="getBindValue" @ok="handleOk" @cancel="handleCancel">
+          <template #[item]="data" v-for="item in Object.keys($slots)">
+            <slot :name="item" v-bind="data || {}"></slot>
+          </template>
+        </ModalFooter>
+      </template>
 
+      <!-- update-begin-author:taoyan date:2022-7-18 for:  modal弹窗 支持评论 slot -->
+      <a-row v-if="getProps.enableComment" class="jeecg-modal-wrapper">
+        <a-col :span="24 - commentSpan" class="jeecg-modal-content">
+          <ModalWrapper
+            :useWrapper="getProps.useWrapper"
+            :footerOffset="wrapperFooterOffset"
+            :fullScreen="fullScreenRef"
+            ref="modalWrapperRef"
+            :loading="getProps.loading"
+            :loading-tip="getProps.loadingTip"
+            :minHeight="getProps.minHeight"
+            :height="getWrapperHeight"
+            :visible="visibleRef"
+            :modalFooterHeight="footer !== undefined && !footer ? 0 : undefined"
+            v-bind="omit(getProps.wrapperProps, 'visible', 'height', 'modalFooterHeight')"
+            @ext-height="handleExtHeight"
+            @height-change="handleHeightChange"
+          >
+            <slot></slot>
+          </ModalWrapper>
+        </a-col>
+      </a-row>
+      <!-- update-begin-author:taoyan date:2022-7-18 for:  modal弹窗 支持评论 slot -->
+      <a-row class="jeecg-modal-wrapper">
+        <a-col :span="24 - commentSpan" class="jeecg-modal-content">
+          <ModalWrapper
+            :useWrapper="getProps.useWrapper"
+            :footerOffset="wrapperFooterOffset"
+            :fullScreen="fullScreenRef"
+            ref="modalWrapperRef"
+            :loading="getProps.loading"
+            :loading-tip="getProps.loadingTip"
+            :minHeight="getProps.minHeight"
+            :height="getWrapperHeight"
+            :visible="visibleRef"
+            :modalFooterHeight="footer !== undefined && !footer ? 0 : undefined"
+            v-bind="omit(getProps.wrapperProps, 'visible', 'height', 'modalFooterHeight')"
+            @ext-height="handleExtHeight"
+            @height-change="handleHeightChange"
+          >
+            <slot></slot>
+          </ModalWrapper>
+        </a-col>
 
-      
-      <a-col :span="commentSpan" class="jeecg-comment-outer">
-        <slot name="comment"></slot>
-      </a-col>
-    </a-row>
-    <!-- update-end-author:taoyan date:2022-7-18 for:  modal弹窗 支持评论 slot -->
+        <a-col :span="commentSpan" class="jeecg-comment-outer">
+          <slot name="comment"></slot>
+        </a-col>
+      </a-row>
+      <!-- update-end-author:taoyan date:2022-7-18 for:  modal弹窗 支持评论 slot -->
 
-    <template #[item]="data" v-for="item in Object.keys(omit($slots, 'default'))">
-      <slot :name="item" v-bind="data || {}"></slot>
-    </template>
-  </Modal>
+      <template #[item]="data" v-for="item in Object.keys(omit($slots, 'default'))">
+        <slot :name="item" v-bind="data || {}"></slot>
+      </template>
+    </Modal>
   </div>
 </template>
 <script lang="ts">
@@ -97,7 +105,7 @@
     inheritAttrs: false,
     props: basicProps,
     emits: ['visible-change', 'height-change', 'cancel', 'ok', 'register', 'update:visible', 'fullScreen'],
-    setup(props, { emit, attrs , slots}) {
+    setup(props, { emit, attrs, slots }) {
       const visibleRef = ref(false);
       const propsRef = ref<Partial<ModalProps> | null>(null);
       const modalWrapperRef = ref<any>(null);
@@ -128,13 +136,13 @@
           ...(unref(propsRef) as any),
         };
       });
-        //update-begin-author:liusq date:2023-05-25 for:【issues/4856】Modal控件设置 :title = null 无效
-        //是否未设置标题
-        const isNoTitle = computed(() => {
-            //标题为空并且不含有标题插槽
-            return !unref(getMergeProps).title && !slots.title;
-        });
-        //update-end-author:liusq date:2023-05-25 for:【issues/4856】Modal控件设置 :title = null 无效
+      //update-begin-author:liusq date:2023-05-25 for:【issues/4856】Modal控件设置 :title = null 无效
+      //是否未设置标题
+      const isNoTitle = computed(() => {
+        //标题为空并且不含有标题插槽
+        return !unref(getMergeProps).title && !slots.title;
+      });
+      //update-end-author:liusq date:2023-05-25 for:【issues/4856】Modal控件设置 :title = null 无效
 
       const { handleFullScreen, getWrapClassName, fullScreenRef } = useFullScreen({
         modalWrapperRef,
@@ -249,21 +257,25 @@
 
       //update-begin-author:taoyan date:2022-7-18 for: modal支持评论 slot
       const commentSpan = ref(0);
-      watch(()=>props.enableComment, (flag)=>{
-        handleComment(flag)
-      }, {immediate:true});
-      function handleComment(flag){
-        if(flag=== true){
-          commentSpan.value = 6
-        }else{
-          commentSpan.value = 0
+      watch(
+        () => props.enableComment,
+        (flag) => {
+          handleComment(flag);
+        },
+        { immediate: true }
+      );
+      function handleComment(flag) {
+        if (flag === true) {
+          commentSpan.value = 6;
+        } else {
+          commentSpan.value = 0;
         }
       }
       //update-end-author:taoyan date:2022-7-18 for: modal支持评论 slot
 
       // update-begin--author:liaozhiyang---date:20230804---for:【QQYUN-5866】放大行数自适应
-      watch(fullScreenRef,(val)=>{
-        emit('fullScreen',val);
+      watch(fullScreenRef, (val) => {
+        emit('fullScreen', val);
       });
       // update-begin--author:liaozhiyang---date:20230804---for:【QQYUN-5866】放大行数自适应
 
@@ -284,7 +296,7 @@
         getWrapperHeight,
         commentSpan,
         handleComment,
-        isNoTitle
+        isNoTitle,
       };
     },
   });

+ 29 - 29
src/components/Table/src/hooks/usePagination.tsx

@@ -24,7 +24,7 @@ function itemRender({ page, type, originalElement }: ItemRender) {
 
 export function usePagination(refProps: ComputedRef<BasicTableProps>) {
   const { t } = useI18n();
-  
+
   const configRef = ref<PaginationProps>({});
   const show = ref(true);
 
@@ -35,19 +35,19 @@ export function usePagination(refProps: ComputedRef<BasicTableProps>) {
         configRef.value = {
           ...unref(configRef),
           ...(pagination ?? {}),
-          selectComponentClass: () => <Select
-            defaultValue = {configRef.value.pageSize}
-            options={
-              [
-                {label: '10条每页', value: 10},
-                {label: '30条每页', value: 30},
-                {label: '50条每页', value: 50},
-                {label: '100条每页', value: 100},
-              ]
-            }
-            style='width: 100px; margin-right: 10px;'
-            onChange={ updataPageSize }
-          ></Select>,
+          selectComponentClass: () => (
+            <Select
+              defaultValue={configRef.value.pageSize}
+              options={[
+                { label: '10条每页', value: 10 },
+                { label: '30条每页', value: 30 },
+                { label: '50条每页', value: 50 },
+                { label: '100条每页', value: 100 },
+              ]}
+              style="width: 100px; margin-right: 10px;"
+              onChange={updataPageSize}
+            ></Select>
+          ),
         };
       }
     }
@@ -79,24 +79,24 @@ export function usePagination(refProps: ComputedRef<BasicTableProps>) {
     configRef.value = {
       ...(!isBoolean(paginationInfo) ? paginationInfo : {}),
       ...info,
-      selectComponentClass: () => <Select
-        defaultValue = { configRef.value.pageSize }
-        options={
-          [
-            {label: '10条每页', value: 10},
-            {label: '30条每页', value: 30},
-            {label: '50条每页', value: 50},
-            {label: '100条每页', value: 100},
-          ]
-        }
-        style='width: 100px; margin-right: 10px;'
-        onChange={ updataPageSize }
-      ></Select>,
+      selectComponentClass: () => (
+        <Select
+          defaultValue={configRef.value.pageSize}
+          options={[
+            { label: '10条每页', value: 10 },
+            { label: '30条每页', value: 30 },
+            { label: '50条每页', value: 50 },
+            { label: '100条每页', value: 100 },
+          ]}
+          style="width: 100px; margin-right: 10px;"
+          onChange={updataPageSize}
+        ></Select>
+      ),
     };
   }
 
-  function updataPageSize(size){
-    configRef.value.pageSize = size
+  function updataPageSize(size) {
+    configRef.value.pageSize = size;
   }
 
   function getPagination() {

+ 1 - 1
src/components/vent/micro/ventModal.vue

@@ -5,7 +5,7 @@
   <div id="micro-vent-3dModal"></div>
 </template>
 <script lang="ts">
-  import { ref, onMounted, onBeforeUnmount, defineComponent, onUnmounted } from 'vue';
+  import { ref, onMounted, onBeforeUnmount, defineComponent } from 'vue';
   import { unmountMicroApps, mountMicroApp } from '/@/qiankun';
   import { resetMicroContentWH } from '/@/utils/domUtils';
 

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

@@ -55,6 +55,7 @@ export function initModalWorker() {
     'ztfj/ztfj-fc_2023-06-02.glb',
     'ztfj/ztfj_2023-12-12.glb',
     'fire/laneway_2024-03-04.glb',
+    'fire/laneway-device_2024-03-19.glb',
     'fire/chamber_2023-06-02.glb',
     // 'fire/workFace_2023-06-29.glb',
     'fire/tunFace_2023-07-14.glb',
@@ -66,7 +67,7 @@ export function initModalWorker() {
     'yafeng/compressor_2023-07-10.glb',
     'gas/gasPump_2024-03-04.glb',
     'gas/gasPumpUnder_2023-10-05.glb',
-    'mb/obfurage_2023-09-09.glb',
+    'mb/obfurage_2024-03-19.glb',
     'workFace/workFace-base_2024-03-04.glb',
     'workFace/workFace-jin_2024-03-04.glb',
     'workFace/workFace-hui_2024-03-04.glb',

+ 5 - 6
src/views/vent/home/colliery/components/fan-monitor.vue

@@ -73,12 +73,11 @@
           : '断开';
       echartData.xdata = selectData.readData.windQuantity1 || selectData.readData.windQuantity1_merge;
       echartData.ydata = selectData.readData.windQuantity2 || selectData.readData.windQuantity2_merge;
-      getOption();
-      // if (echartData.xdata && echartData.ydata) {
-      //   getOption();
-      // } else {
-      //   isShowGif.value = true;
-      // }
+      if (echartData.xdata && echartData.ydata) {
+        getOption();
+      } else {
+        isShowGif.value = true;
+      }
     } else {
       isShowGif.value = true;
     }

+ 2 - 2
src/views/vent/home/colliery/components/main-monitor.vue

@@ -27,7 +27,7 @@
       <div class="point-des-box">
         <div>工况点</div>
         <div>负压: {{ selectDataObj.dataH }}</div>
-        <div>风量: {{ selectDataObj.dataQ * 60 }}</div>
+        <div>风量: {{ (selectDataObj.dataQ * 60).toFixed(2) }}</div>
       </div>
       <div class="main" ref="main"></div>
     </div>
@@ -50,7 +50,7 @@
     dataQ: 0,
     dataH: 0,
   });
-  let maxM3 = 400;
+  let maxM3 = 150; // 高家梁是150,其他400
   //风机启动状态
   let runStatus = ref('');
   //获取dom节点

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

@@ -67,9 +67,13 @@
         </div>
       </div>
     </div>
-    <!-- <DeviceMonitor :pageType="pageType" @goHome="goHome" /> -->
   </div>
-  <VentModal v-if="pageType == 'model3D'" ref="fullModalRef" style="width: calc(100% - 30px); height: calc(100% - 30px); position: absolute" />
+  <Network ref="NetworkRef" v-if="pageType == 'timesolution'" :pageResult="pageResult" @changePageType="changePageType" style="position: absolute" />
+  <VentModal
+    v-if="pageType == 'model3D' || pageType == 'timesolution'"
+    ref="fullModalRef"
+    style="width: calc(100% - 30px); height: calc(100% - 30px); position: absolute"
+  />
 </template>
 <script lang="ts" setup>
   import { reactive, onMounted, ref, nextTick, computed, unref, inject, onBeforeUnmount, onUnmounted } from 'vue';
@@ -82,7 +86,7 @@
   import deviceWarn from './components/device-warn.vue';
   import { useGlobSetting } from '/@/hooks/setting';
   import { list } from './clique.api';
-  import DeviceMonitor from '../../monitorManager/deviceMonitor/index.vue';
+  import Network from '../../monitorManager/deviceMonitor/components/network/index.vue';
   import { useRouter } from 'vue-router';
   import { router } from '/@/router';
   // import { Modal } from 'ant-design-vue';
@@ -90,9 +94,9 @@
   import dayjs from 'dayjs';
   import { getActions } from '/@/qiankun/state';
   import { unmountMicroApps, mountMicroApp } from '/@/qiankun';
-
   import { getDate } from './clique.data';
   import VentModal from '/@/components/vent/micro/ventModal.vue';
+
   const { currentRoute } = useRouter();
   const { title, logoUrl } = useGlobSetting();
   const actions = getActions();
@@ -123,6 +127,7 @@
   const globSetting = useGlobSetting();
   const pageType = ref('');
   let router = useRouter();
+  const pageResult = ref({});
 
   function goDetail(deviceType) {
     //lxh
@@ -297,6 +302,10 @@
     // location.reload()
   }
 
+  const changePageType = (pageType) => {
+    actions.setGlobalState({ pageObj: { pageType: pageType } });
+  };
+
   onMounted(() => {
     const currentRouteObj = unref(currentRoute);
     if (currentRouteObj && currentRouteObj['query'] && currentRouteObj['query']['deviceType']) {
@@ -304,6 +313,19 @@
     } else {
       pageType.value = 'home';
     }
+    actions.onGlobalStateChange((newState) => {
+      for (const key in newState) {
+        if (key === 'pageObj') {
+          const pageObj = newState[key];
+          if (pageObj && pageObj.pageType) {
+            pageType.value = pageObj.pageType;
+            if (pageObj.timesolution) {
+              pageResult.value = pageObj.timesolution;
+            }
+          }
+        }
+      }
+    });
     getNowTime();
     getList();
     timer = Number(

+ 4 - 2
src/views/vent/monitorManager/alarmMonitor/fire/gasPage.vue

@@ -274,6 +274,7 @@
     }
 
     .bot-area {
+      // width: 400px;
       height: calc(100% - 356px);
       padding: 10px 15px 0px 15px;
       background: url('../../../../../assets/images/fire/bj1.png') no-repeat center;
@@ -303,7 +304,7 @@
 
         .card-b {
           position: relative;
-          width: 23%;
+          width: 30%;
           height: 128px;
           margin: 0px 15px 15px 15px;
           background: url('../../../../../assets/images/fire/bot-area.png') no-repeat center;
@@ -449,6 +450,7 @@
       }
 
       .content-b {
+        width: 100%;
         height: calc(100% - 40px);
         display: flex;
         justify-content: flex-start;
@@ -458,7 +460,7 @@
 
         .card-b {
           position: relative;
-          width: 23%;
+          width: 30%;
           height: 128px;
           margin: 0px 15px 15px 15px;
           background: url('../../../../../assets/images/fire/bot-area.png') no-repeat center;

+ 1 - 2
src/views/vent/monitorManager/beltTunMonitor/beltTun.threejs.base.ts

@@ -300,8 +300,7 @@ class BeltFace {
       this.setRenderPass();
       this.model.orbitControls.update();
       // this.model.orbitControls.addEventListener('change', _this.render.bind(_this));
-      this.model.setGLTFModel(['laneway']).then(async (gltf) => {
-        this.group = gltf[0];
+      this.model.setGLTFModel(['laneway', 'laneway-device'], this.group).then(async () => {
         this.group.name = this.modelName;
         this.group.position.set(-3.5, 0.7, 0);
         (this.group as THREE.Group).remove(this.group.getObjectByName('mesh001'));

+ 24 - 323
src/views/vent/monitorManager/comment/HistoryTable.vue

@@ -14,7 +14,7 @@
 
 <script lang="ts" name="system-user" setup>
   //ts语法
-  import { watchEffect, ref, watch, defineExpose, inject } from 'vue';
+  import { watchEffect, ref, watch, defineExpose, inject, nextTick } from 'vue';
   import { FormSchema } from '/@/components/Form/index';
   import { BasicTable } from '/@/components/Table';
   import { useListPage } from '/@/hooks/system/useListPage';
@@ -66,6 +66,16 @@
   const loading = ref(false);
   const stationType = ref('plc');
   const dataSource = ref([]);
+  const intervalMap = new Map([
+    ['1', '1s'],
+    ['2', '5s'],
+    ['3', '10s'],
+    ['4', '30s'],
+    ['5', '1m'],
+    ['6', '10m'],
+    ['7', '30m'],
+    ['8', '1h'],
+  ]);
 
   const getExportXlsUrl = () => {
     if (stationType.value !== 'redis') {
@@ -132,319 +142,11 @@
 
   watch(stationType, (type) => {
     if (type) {
-      getDataSource();
-    }
-  });
-
-  function getTableProps(stationTypeStr) {
-    if (stationTypeStr !== 'redis') {
-      debugger;
-      setProps({
-        api: (params) => defHttp.get({ url: '/safety/ventanalyMonitorData/listdays', params }),
-        formConfig: {
-          labelAlign: 'left',
-          showAdvancedButton: false,
-          baseColProps: {
-            xs: 24,
-            sm: 24,
-            md: 24,
-            lg: 9,
-            xl: 7,
-            xxl: 4,
-          },
-          schemas:
-            props.formSchemas.length > 0
-              ? props.formSchemas
-              : [
-                  {
-                    field: 'ttime_begin',
-                    label: '开始时间',
-                    component: 'DatePicker',
-                    defaultValue: dayjs().startOf('date'),
-                    required: true,
-                    componentProps: {
-                      showTime: true,
-                      valueFormat: 'YYYY-MM-DD HH:mm:ss',
-                      getPopupContainer: getAutoScrollContainer,
-                    },
-                    colProps: {
-                      span: 4,
-                    },
-                  },
-                  {
-                    field: 'ttime_end',
-                    label: '结束时间',
-                    component: 'DatePicker',
-                    defaultValue: dayjs(),
-                    required: true,
-                    componentProps: {
-                      showTime: true,
-                      valueFormat: 'YYYY-MM-DD HH:mm:ss',
-                      getPopupContainer: getAutoScrollContainer,
-                    },
-                    colProps: {
-                      span: 4,
-                    },
-                  },
-                  {
-                    label: '查询设备',
-                    field: 'gdeviceid',
-                    component: 'Select',
-                    defaultValue: deviceOptions.value[0] ? deviceOptions.value[0]['value'] : '',
-                    required: true,
-                    componentProps: {
-                      options: deviceOptions,
-                      onChange: (e, option) => {
-                        if (option && (option['strinstallpos'] || option['strtype'] || option['devicekind']))
-                          historyType.value = option['strtype'] || option['devicekind'];
-                        if (option['strtype']) deviceTypeStr.value = option['strtype'];
-                        stationType.value = option['stationtype'];
-                      },
-                    },
-                    colProps: {
-                      span: 4,
-                    },
-                  },
-                  {
-                    label: '间隔时间',
-                    field: 'skip',
-                    component: 'Select',
-                    defaultValue: 5,
-                    componentProps: {
-                      options: [
-                        {
-                          label: '5秒',
-                          value: '1',
-                        },
-                        {
-                          label: '10秒',
-                          value: '2',
-                        },
-                        {
-                          label: '30秒',
-                          value: '3',
-                        },
-                        {
-                          label: '1分钟',
-                          value: '4',
-                        },
-                        {
-                          label: '5分钟',
-                          value: '5',
-                        },
-                        {
-                          label: '10分钟',
-                          value: '6',
-                        },
-                        {
-                          label: '30分钟',
-                          value: '7',
-                        },
-                        {
-                          label: '1小时',
-                          value: '8',
-                        },
-                      ],
-                    },
-                    colProps: {
-                      span: 4,
-                    },
-                  },
-                ],
-        },
-        // fetchSetting: {
-        //   listField: 'datalist',
-        //   totalField: 'datalist.total',
-        // },
-        pagination: {
-          current: 1,
-          pageSize: 10,
-          pageSizeOptions: ['10', '30', '50', '100'],
-          showQuickJumper: false,
-        },
-        // beforeFetch(params) {
-        //   params.strtype = deviceTypeStr.value
-        //     ? deviceTypeStr.value
-        //     : deviceOptions.value[0]['strtype']
-        //     ? deviceOptions.value[0]['strtype']
-        //     : props.deviceType + '*';
-        //   if (props.sysId) {
-        //     params.sysId = props.sysId;
-        //   }
-        //   return params;
-        // },
-        // afterFetch(result) {
-        //   const resultItems = result['records'];
-        //   resultItems.map((item) => {
-        //     Object.assign(item, item['readData']);
-        //   });
-        //   console.log('result---------------->', result);
-        //   return resultItems;
-        // },
-      });
-    } else {
-      setProps({
-        api: (params) => defHttp.post({ url: '/ventanaly-device/history/getHistoryData', params }),
-        formConfig: {
-          labelAlign: 'left',
-          showAdvancedButton: false,
-          // autoAdvancedCol: 2,
-
-          baseColProps: {
-            // offset: 0.5,
-            xs: 24,
-            sm: 24,
-            md: 24,
-            lg: 9,
-            xl: 7,
-            xxl: 4,
-          },
-          schemas:
-            props.formSchemas.length > 0
-              ? props.formSchemas
-              : [
-                  {
-                    field: 'startTime',
-                    label: '开始时间',
-                    component: 'DatePicker',
-                    defaultValue: dayjs().startOf('date'),
-                    required: true,
-                    componentProps: {
-                      showTime: true,
-                      valueFormat: 'YYYY-MM-DD HH:mm:ss',
-                      getPopupContainer: getAutoScrollContainer,
-                    },
-                    colProps: {
-                      span: 4,
-                    },
-                  },
-                  {
-                    field: 'endTime',
-                    label: '结束时间',
-                    component: 'DatePicker',
-                    defaultValue: dayjs(),
-                    required: true,
-                    componentProps: {
-                      showTime: true,
-                      valueFormat: 'YYYY-MM-DD HH:mm:ss',
-                      getPopupContainer: getAutoScrollContainer,
-                    },
-                    colProps: {
-                      span: 4,
-                    },
-                  },
-                  {
-                    label: '查询设备',
-                    field: 'deviceId',
-                    component: 'Select',
-                    defaultValue: deviceOptions.value[0] ? deviceOptions.value[0]['value'] : '',
-                    required: true,
-                    componentProps: {
-                      options: deviceOptions,
-                      onChange: (e, option) => {
-                        if (option && (option['strinstallpos'] || option['strtype'] || option['devicekind']))
-                          historyType.value = option['strtype'] || option['devicekind'];
-                        stationType.value = option['stationtype'];
-                      },
-                    },
-                    colProps: {
-                      span: 4,
-                    },
-                    // componentProps: ({ formModel }) => {
-                    //   return {
-                    //     options: deviceOptions.value,
-                    //     // api: () => defHttp.get({ url: '/safety/ventanalyManageSystem/linkdevicelist', params: { sysId: props.sysId, deviceType: props.deviceType.startsWith('vehicle') ? 'location_normal' : props.deviceType } }),
-                    //     // resultField: 'result',
-                    //     // labelField: 'strinstallpos',
-                    //     // valueField: 'id',
-                    //     // onChange: (e, option) => {
-                    //     //   if(option && (option['strtype'] || option['devicekind'])) historyType.value = option['strtype'] || option['devicekind']
-                    //     // },
-                    //   }
-                    // },
-                  },
-                  {
-                    label: '间隔时间',
-                    field: 'interval',
-                    component: 'Select',
-                    defaultValue: '30s',
-                    componentProps: {
-                      options: [
-                        {
-                          label: '1秒',
-                          value: '1s',
-                        },
-                        {
-                          label: '5秒',
-                          value: '5s',
-                        },
-                        {
-                          label: '10秒',
-                          value: '10s',
-                        },
-                        {
-                          label: '30秒',
-                          value: '30s',
-                        },
-                        {
-                          label: '1分钟',
-                          value: '1m',
-                        },
-                        {
-                          label: '10分钟',
-                          value: '10m',
-                        },
-                        {
-                          label: '30分钟',
-                          value: '30m',
-                        },
-                        {
-                          label: '1小时',
-                          value: '1h',
-                        },
-                      ],
-                    },
-                    colProps: {
-                      span: 4,
-                    },
-                  },
-                ],
-        },
-        pagination: {
-          current: 1,
-          pageSize: 10,
-          pageSizeOptions: ['10', '30', '50', '100'],
-          showQuickJumper: false,
-        },
-        fetchSetting: {
-          totalField: 'total',
-          // 每页显示多少条
-          sizeField: 'pageSize',
-          // 请求结果列表字段  支持 a.b.c
-          pageField: 'pageNo',
-        },
-        beforeFetch(params) {
-          params.strtype = props.deviceType + '*';
-          if (props.sysId) {
-            params.sysId = props.sysId;
-          }
-          if (params.interval) {
-            params.interval = params.interval;
-          } else {
-            params.interval = '1m';
-          }
-          if (props.deviceType.startsWith('vehicle')) {
-            params['isEmployee'] = false;
-          } else if (props.deviceType.startsWith('location')) {
-            params['isEmployee'] = true;
-          }
-        },
-        afterFetch(result) {
-          return result;
-        },
+      nextTick(() => {
+        getDataSource();
       });
     }
-  }
+  });
 
   async function getDeviceList() {
     if (props.deviceType.split('_')[1] && props.deviceType.split('_')[1] === 'history') return;
@@ -474,15 +176,11 @@
           strtype: item['strtype'],
           strinstallpos: item['strinstallpos'],
           devicekind: item['devicekind'],
-          stationtype: index > 2 ? 'redis' : 'plc',
+          stationtype: item['stationtype'],
         };
-        // return { label: item['strname'], value: item['id']}
       });
     }
-    console.log('deviceOptions---------------->', deviceOptions.value);
-    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({ gdeviceid: deviceOptions.value[0] ? deviceOptions.value[0]['value'] : '' });
   }
 
   async function getDataSource() {
@@ -503,6 +201,7 @@
         formData['sysId'] = props.sysId;
       }
       const result = await defHttp.get({ url: '/safety/ventanalyMonitorData/listdays', params: formData });
+      setPagination({ total: Math.abs(result['datalist']['total']) || 0 });
       if (result['datalist']['records'].length > 0) {
         dataSource.value = result['datalist']['records'].map((item: any) => {
           return Object.assign(item, item['readData']);
@@ -517,10 +216,11 @@
         deviceId: formData['gdeviceid'],
         strtype: props.deviceType + '*',
         sysId: props.sysId,
-        interval: formData['skip'] ? formData['skip'] : '1m',
+        interval: intervalMap.get(formData['skip']) ? intervalMap.get(formData['skip']) : '1h',
         isEmployee: props.deviceType.startsWith('vehicle') ? false : true,
       };
       const result = await defHttp.post({ url: '/ventanaly-device/history/getHistoryData', params: params });
+      setPagination({ total: Math.abs(result['total']) || 0 });
       dataSource.value = result['records'] || [];
     }
     setLoading(false);
@@ -608,7 +308,7 @@
                   label: '间隔时间',
                   field: 'skip',
                   component: 'Select',
-                  defaultValue: 5,
+                  defaultValue: '8',
                   componentProps: {
                     options: [
                       {
@@ -689,13 +389,12 @@
   });
 
   //注册table数据
-  const [registerTable, { reload, setLoading, getForm, setColumns, getPaginationRef }] = tableContext;
+  const [registerTable, { reload, setLoading, getForm, setColumns, getPaginationRef, setPagination }] = tableContext;
 
   watchEffect(() => {
     if (historyTable.value && dataSource) {
       const data = dataSource.value || [];
       emit('change', data);
-      console.log('[ data ] >', data);
     }
   });
 
@@ -704,7 +403,9 @@
     if (deviceOptions.value[0]) {
       stationType.value = deviceOptions.value[0]['stationtype'];
       historyType.value = deviceOptions.value[0]['strtype'] || deviceOptions.value[0]['devicekind'];
-      getDataSource();
+      nextTick(() => {
+        getDataSource();
+      });
     }
   });
   defineExpose({ setLoading });

+ 3 - 3
src/views/vent/monitorManager/compressor/components/nitrogenHome_bet.vue

@@ -1,5 +1,4 @@
 <template>
-  <div>{{ Math.random() }}</div>
   <div id="nitrogen3D" style="width: 100%; height: 100%; position: absolute; overflow: hidden"></div>
   <div id="nitrogenCss3D" class="threejs-Object-CSS"
     style="width: 100%; height: 100%; position: absolute; pointer-events: none; overflow: hidden; z-index: 2; top: 0px; left: 0px">
@@ -187,7 +186,7 @@
 import { onMounted, onUnmounted, ref, watch, reactive, defineProps, nextTick, inject, onBeforeUnmount } from 'vue';
 import ventBox1 from '/@/components/vent/ventBox1.vue';
 import fourBorderBg from '../../../comment/components/fourBorderBg.vue';
-import { mountedThree, destroy, setModelType, addText } from '../nitrogen.threejs';
+import { mountedThree, destroy, setModelType } from '../nitrogen.threejs';
 import { getDevice } from '../nitrogen.api';
 import { SvgIcon } from '/@/components/Icon';
 import BarAndLine from '/@/components/chart/BarAndLine.vue';
@@ -197,6 +196,7 @@ import { groupParameterData, deviceParameterData, downWindData } from '../nitrog
 import { message } from 'ant-design-vue';
 import lodash from 'lodash';
 import { useCamera } from '/@/hooks/system/useCamera';
+import dayjs from 'dayjs';
 
 const globalConfig = inject('globalConfig');
 
@@ -331,7 +331,7 @@ async function getDataSource(systemID) {
         });
         monitorNetStatus.value = netStatus
         console.log(monitorData,'monitorData.value---===')
-        const airCompressor = { readTime: monitorData.value[0]['readTime'].substring(11) }
+        const airCompressor = { readTime: monitorData.value[0]['readTime'] ? monitorData.value[0]['readTime'].substring(11) : dayjs().format('HH:mm:ss') }
         const dataArr = lodash.cloneDeep(echartData.value)
         //图表数据
         if (dataArr.length <= 5) {

+ 4 - 827
src/views/vent/monitorManager/compressor/components/nitrogenHome_ln.vue

@@ -1,5 +1,4 @@
 <template>
-<<<<<<< HEAD
   <div id="nitrogen3D" style="width: 100%; height: 100%; position: absolute; overflow: hidden"></div>
   <div
     id="nitrogenCss3D"
@@ -241,7 +240,6 @@
         if (item.type && item.type.startsWith('nitrogen')) {
           airCompressorState.length = 0;
           // let netStatus = 0;
-          // monitorData.value = Object.assign(item['datalist'][0], item['datalist'][0]['readData']);
           monitorData.length = 0;
           item.datalist.forEach((el) => {
             if (el.deviceType == 'nitrogen_auto') {
@@ -250,16 +248,15 @@
               monitorData.push({ ...el, ...el.readData });
             }
           });
-          statusKyj.value = monitorData[1]['operation_shutdown'];
-          statusZdj.value = monitorData[0]['remote_local'];
+          statusKyj.value = monitorData[1] ? monitorData[1]['operation_shutdown'] : '';
+          statusZdj.value = monitorData[0] ? monitorData[0]['remote_local'] : '';
           monitorDataGroupNum.value = monitorData.length - 1;
-          console.log(monitorData, ' monitorData--------');
           // if (monitorData['netStatus'] == 1) {
           //     netStatus = 1;
           // }
           airCompressorState.push({
-            id: monitorData[1]['deviceID'],
-            deviceType: monitorData[1]['deviceType'],
+            id: monitorData[1] ? monitorData[1]['deviceID'] : '',
+            deviceType: monitorData[1] ? monitorData[1]['deviceType'] : '',
           });
           const airCompressor = { readTime: monitorData[0]['readTime'].substring(11) };
           const dataArr = lodash.cloneDeep(echartData.value);
@@ -299,295 +296,6 @@
     }
   }
   function handleOK(passWord, handlerState) {
-=======
-    <div id="nitrogen3D" style="width: 100%; height: 100%; position: absolute; overflow: hidden"></div>
-    <div id="nitrogenCss3D" class="threejs-Object-CSS"
-        style="width: 100%; height: 100%; position: absolute; pointer-events: none; overflow: hidden; z-index: 2; top: 0px; left: 0px">
-        <a-spin :spinning="loading" />
-        <div v-for="groupNum in monitorDataGroupNum" :key="groupNum" class="modal-monitor">
-            <fourBorderBg :class="`kyj${groupNum}`" :id="`nitrogenMonitor${groupNum}`">
-                <div class="title">空压机{{ groupNum }} </div>
-                <template v-for="(preMonitor, preMonitorIndex) in preMonitorList" :key="preMonitorIndex">
-                    <div v-if="preMonitor.code !== 'signal'" class="monitor-item">
-                        <span class="monitor-title">{{ preMonitor.title }}:</span>
-                        <span class="monitor-val"><span class="val">{{ monitorData[groupNum] ?
-            monitorData[groupNum][preMonitor.code] : '-' }}</span><span class="unit">{{
-            preMonitor.unit }}</span></span>
-                    </div>
-                </template>
-            </fourBorderBg>
-        </div>
-    </div>
-    <div class="nitrogen-home">
-        <div class="nitrogen-container">
-            <div class="top-box">
-                <!-- 中间区域控制按钮 -->
-                <div class="center-item-box">
-                    <div class="top-left">
-                        <div class="button-box" @click="handlerDevice(airCompressorState, '制氮机启动')">制氮机启动</div>
-                        <div class="button-box" @click="handlerDevice(airCompressorState, '制氮机停止')">制氮机停止</div>
-                        <div class="button-box" @click="handlerDevice(airCompressorState, '空压机启动')">空压机启动</div>
-                        <div class="button-box" @click="handlerDevice(airCompressorState, '空压机停止')">空压机停止</div>
-                    </div>
-                    <div class="top-center">
-                        <div class="top-c-label">通信状态:</div>
-                        <!-- <div class="top-c-val">{{ monitorData['netStatus'] == 1 ? '连接' : monitorData['netStatus'] == 0 ?
-            '断开' : '未知' }}</div> -->
-                        <div class="top-c-val">{{ '未知' }}</div>
-                    </div>
-                    <div class="top-right">
-                        <div class="control-type">
-                            <div class="control-title">空压机状态切换:</div>
-                            <a-radio-group v-model:value="statusKyj">
-                                <a-radio :value="`1`">工作</a-radio>
-                                <a-radio :value="`0`">停机</a-radio>
-                            </a-radio-group>
-                        </div>
-                        <div class="control-type">
-                            <div class="control-title">制氮机远近控切换:</div>
-                            <a-radio-group v-model:value="statusZdj">
-                                <a-radio :value="`1`">远程</a-radio>
-                                <a-radio :value="`0`">就地</a-radio>
-                            </a-radio-group>
-                        </div>
-                    </div>
-                </div>
-                <!-- 左边监测数据 -->
-                <div class="lr-box left-box">
-                    <ventBox1 v-if="monitorData.length!=0 && monitorData[0]['deviceType'] == 'nitrogen_auto'">
-                        <template #title>
-                            <div>注氮机监测</div>
-                        </template>
-                        <template #container>
-                            <div class="input-item" v-for="(preFan, index) in nitrogenMonitorData" :key="index">
-                                <div class="title">{{ preFan.title }}</div>
-                                <div v-if="preFan.unit !== 'signal'" class="value">{{
-            monitorData[0] ? formatNum(Number(monitorData[0][preFan.code])) :
-                '-'
-        }}</div>
-                                <div v-else :class="{
-                'signal-round': true,
-                'signal-round-warning':monitorData[0][preFan.code] == '1',
-                'signal-round-gry': monitorData[0][preFan.code] != '1',
-            }"></div>
-                                <div class="unit">{{ preFan.unit !== 'signal' ? `(${preFan.unit})` : '' }}</div>
-                            </div>
-                        </template>
-                    </ventBox1>
-                    <div class="item item-l" v-for="groupNum in monitorDataGroupNum" :key="groupNum">
-                        <ventBox1>
-                            <template #title>
-                                <div>空压机{{ groupNum }}</div>
-                            </template>
-                            <template #container>
-                                <div class="monitor-box">
-                                    <div class="monitor-item">
-                                        <div class="state-item" v-for="(preFan, index) in preFanMonitorData"
-                                            :key="index">
-                                            <div class="state-title">{{ preFan.title + (preFan.unit !== 'signal' &&
-            preFan.unit !== '' ? `(${preFan.unit})` : '') }}</div>
-                                            <div v-if="preFan.unit !== 'signal'" class="state-val">{{
-            monitorData[groupNum] ?
-                monitorData[groupNum][preFan.code] : '-'
-        }}</div>
-                                            <div v-else :class="{
-                'signal-round': true,
-                'signal-round-warning': monitorData[groupNum][preFan.code] != '',
-                            'signal-round-gry': monitorData[groupNum][preFan.code] == '',
-                          }"></div>
-                                        </div>
-                                    </div>
-                                </div>
-                            </template>
-                        </ventBox1>
-                    </div>
-                </div>
-                <!-- 右边控制状态 -->
-                <div class="lr-box right-box">
-                    <ventBox1 class="vent-margin-t-10">
-                        <template #title>
-                            <div>设备实时监测曲线</div>
-                        </template>
-                        <template #container>
-                            <BarAndLine v-if="chartsColumns.length > 0" xAxisPropType="readTime"
-                                :dataSource="echartData" height="340px" :chartsColumns="chartsColumns"
-                                chartsType="listMonitor" :option="echatsOption" />
-                        </template>
-                    </ventBox1>
-                    <div ref="playerRef" style="height: auto; width: 100%; margin-top: 10px"></div>
-                </div>
-            </div>
-        </div>
-    </div>
-</template>
-<script lang="ts" setup name="nitrogenHome">
-import { onMounted, onUnmounted, ref, watch, reactive, defineProps, nextTick, inject } from 'vue';
-import ventBox1 from '/@/components/vent/ventBox1.vue';
-import fourBorderBg from '../../../comment/components/fourBorderBg.vue';
-import { mountedThree, destroy, setModelType } from '../nitrogen.threejs';
-import { getDevice } from '../nitrogen.api';
-import BarAndLine from '/@/components/chart/BarAndLine.vue';
-import { deviceControlApi } from '/@/api/vent/index';
-import { preMonitorList, preFanMonitorData, nitrogenMonitorData } from '../nitrogen.data.ln';
-import { formatNum } from '/@/utils/ventutil';
-import { useCamera } from '/@/hooks/system/useCamera';
-import { message } from 'ant-design-vue';
-import lodash from 'lodash';
-const globalConfig = inject('globalConfig');
-
-
-const props = defineProps({
-    deviceId: {
-        type: String,
-        require: true,
-    },
-    modalType: {
-        type: String,
-        require: true,
-    },
-});
-const playerRef = ref();
-const refresh = ref(false);
-const modalTitle = ref(''); // 模态框标题显示内容,根据设备操作类型决定
-const modalType = ref(''); // 模态框内容显示类型,设备操作类型
-const modalIsShow = ref<boolean>(false); // 是否显示模态框
-const loading = ref(true);
-let kzParam = reactive<any>({
-    data: {},
-    isFw: null,
-});
-
-// const kyjs = ['1号空压机', '1号空压机', '1号空压机', '1号空压机'];
-const flvURL1 = () => {
-    // return `https://sf1-hscdn-tos.pstatp.com/obj/media-fe/xgplayer_doc_video/flv/xgplayer-demo-360p.flv`;
-    return '';
-};
-const colors = ['#FDB146', '#EE6666', '#9BCB75', '#03C2EC', '#DA3914', '#9C83D9'];
-const echatsOption = {
-    grid: {
-        top: '35%',
-        left: '15%',
-        right: '20px',
-        bottom: '8%',
-        // containLabel: true
-    },
-    toolbox: {
-        feature: {},
-    },
-};
-
-const monitorDataGroupNum = ref(0);
-const statusKyj = ref('')//空压机工作状态
-const statusZdj = ref('')//制氮机远近程状态
-
-let airCompressorState = reactive<any[]>([]);
-
-const chartsColumns = ref([
-    {
-        legend: '氮气流量',
-        seriesName: '(m³/h)',
-        ymax: 1000,
-        yname: 'm³/h',
-        linetype: 'line',
-        yaxispos: 'left',
-        color: '#FDB146',
-        sort: 1,
-        xRotate: 0,
-        dataIndex: 'nitrogen_flow_rate',
-    },
-]);
-const { getCamera, webRtcServer } = useCamera();
-
-const monitorData = reactive<any[]>([]);
-
-//图表数据
-let echartData = ref<any>([]);
-
-// https获取监测数据
-let timer: null | NodeJS.Timeout = null;
-async function getMonitor(flag?) {
-    if (Object.prototype.toString.call(timer) === '[object Null]') {
-        timer = await setTimeout(
-            async () => {
-                if (props.deviceId) {
-                    await getDataSource(props.deviceId);
-                }
-                if (timer) {
-                    timer = null;
-                }
-                await getMonitor();
-            },
-            flag ? 0 : 3000
-        );
-    }
-}
-
-async function getDataSource(systemID) {
-    const res = await getDevice({ devicetype: 'sys', systemID, type: 'all' });
-    if (res) {
-        const result = res;
-        if (!result || result.msgTxt.length < 1) return;
-        result.msgTxt.forEach((item) => {
-            if (item.type && item.type.startsWith('nitrogen')) {
-                airCompressorState.length = 0;
-                // let netStatus = 0;
-                monitorData.length = 0
-                item.datalist.forEach(el => {
-                    if (el.deviceType == 'nitrogen_auto') {
-                        monitorData.splice(0, 0, Object.assign(el, el.readData))
-                    } else {
-                        monitorData.push({ ...el, ...el.readData })
-                    }
-                })
-                statusKyj.value = monitorData[1] ? monitorData[1]['operation_shutdown'] : ''
-                statusZdj.value = monitorData[0] ? monitorData[0]['remote_local'] : ''
-                monitorDataGroupNum.value = monitorData.length - 1
-                // if (monitorData['netStatus'] == 1) {
-                //     netStatus = 1;
-                // }
-                airCompressorState.push({
-                    id: monitorData[1] ? monitorData[1]['deviceID'] : '',
-                    deviceType: monitorData[1] ? monitorData[1]['deviceType'] : '',
-                });
-                const airCompressor = { readTime: monitorData[0]['readTime'].substring(11) };
-                const dataArr = lodash.cloneDeep(echartData.value);
-                //图表数据
-                if (dataArr.length <= 5) {
-                    airCompressor[`nitrogen_flow_rate`] = monitorData[0]['nitrogen_flow_rate'] || 0;
-                    dataArr.push(airCompressor);
-                } else {
-                    dataArr.shift();
-                    dataArr.push(airCompressor);
-                }
-                echartData.value = dataArr;
-            }
-        });
-        refresh.value = true;
-        nextTick(() => {
-            refresh.value = false;
-        });
-    }
-}
-
-function handlerDevice(data, bol) {
-    kzParam.data = data;
-    kzParam.isFw = bol;
-    if (bol == '制氮机启动' || bol == '空压机启动') {
-        modalTitle.value = bol;
-        modalType.value = '1';
-        modalIsShow.value = true;
-        kzParam.data.start = true;
-        kzParam.data.stop = false;
-    } else {
-        modalTitle.value = bol;
-        modalType.value = '2';
-        modalIsShow.value = true;
-        kzParam.data.start = false;
-        kzParam.data.stop = true;
-    }
-}
-function handleOK(passWord, handlerState) {
->>>>>>> c7c0a5d5177a6321d0aa67c133dc2d90f7cd0dfa
     console.log(kzParam, 'kz----------');
     // if (passWord !== '123456') {
     //   message.warning('密码不正确,请重新输入');
@@ -596,7 +304,6 @@ function handleOK(passWord, handlerState) {
 
     let data = {};
     if (kzParam.isFw == '制氮机启动' || kzParam.isFw == '空压机启动') {
-<<<<<<< HEAD
       data = {
         deviceid: kzParam.data.id,
         devicetype: kzParam.data.deviceType,
@@ -665,81 +372,10 @@ function handleOK(passWord, handlerState) {
   @ventSpace: zxm;
 
   .nitrogen-box {
-=======
-        data = {
-            deviceid: kzParam.data.id,
-            devicetype: kzParam.data.deviceType,
-            password: passWord,
-            start: kzParam.data.start,
-        };
-    } else {
-        data = {
-            deviceid: kzParam.data.id,
-            password: passWord,
-            devicetype: kzParam.data.deviceType,
-            stop: kzParam.data.stop,
-        };
-    }
-
-    deviceControlApi(data).then((res) => {
-        // 模拟时开启
-        if (res.success) {
-            modalIsShow.value = false;
-            getDataSource(props.deviceId);
-            if (globalConfig.History_Type == 'remote') {
-                message.success('指令已下发至生产管控平台成功!');
-            } else {
-                message.success('指令已下发成功!');
-            }
-        }
-    });
-}
-function handleCancel() {
-    modalIsShow.value = false;
-    modalTitle.value = '';
-    modalType.value = '';
-}
-
-watch([monitorDataGroupNum, loading], ([newMonitorDataGroupNum, newLoading]) => {
-    nextTick(() => {
-        if (newMonitorDataGroupNum && !newLoading) {
-            setModelType(props.modalType, newMonitorDataGroupNum);
-        }
-    });
-});
-
-onMounted(async () => {
-    await getMonitor(true);
-    await mountedThree().then(() => {
-        loading.value = false;
-    });
-    await getCamera(props.deviceId, playerRef.value);
-});
-
-onUnmounted(() => {
-    destroy();
-    if (webRtcServer.length > 0) {
-        webRtcServer.forEach((item) => {
-            item.disconnect();
-        });
-    }
-    if (timer) {
-        clearTimeout(timer);
-        timer = undefined;
-    }
-});
-</script>
-
-<style lang="less" scoped>
-@ventSpace: zxm;
-
-.nitrogen-box {
->>>>>>> c7c0a5d5177a6321d0aa67c133dc2d90f7cd0dfa
     width: 100%;
     height: 100%;
     display: flex;
     justify-content: center;
-<<<<<<< HEAD
   }
 
   #nitrogenCss3D {
@@ -757,25 +393,6 @@ onUnmounted(() => {
   }
 
   .nitrogen-home {
-=======
-}
-
-#nitrogenCss3D {
-    .modal-monitor {
-        width: 200px;
-        position: absolute;
-        left: 0px;
-        top: 0px;
-    }
-
-    &:deep(.win) {
-        margin: 0 !important;
-        background: #00000044;
-    }
-}
-
-.nitrogen-home {
->>>>>>> c7c0a5d5177a6321d0aa67c133dc2d90f7cd0dfa
     width: 100%;
     height: 100%;
     position: fixed;
@@ -788,7 +405,6 @@ onUnmounted(() => {
     top: 20px;
 
     .nitrogen-container {
-<<<<<<< HEAD
       width: 100%;
       height: calc(100% - 100px);
       display: flex;
@@ -1226,442 +842,3 @@ onUnmounted(() => {
     color: #fff !important;
   }
 </style>
-=======
-        width: 100%;
-        height: calc(100% - 100px);
-        display: flex;
-        justify-content: space-between;
-        margin-bottom: 100px;
-
-        .device-state {
-            width: 100%;
-            position: absolute;
-            top: 20px;
-            color: #e90000;
-            display: flex;
-            justify-content: center;
-            font-size: 20px;
-        }
-
-        .top-box {
-            width: 100%;
-            padding: 10px;
-            overflow: hidden;
-            display: flex;
-            justify-content: space-between;
-            // margin-top: 40px;
-
-            .center-item-box {
-                position: absolute;
-                left: 50%;
-                top: 50px;
-                transform: translate(-48%, 0);
-                width: calc(100% - 720px);
-                height: 50px;
-                display: flex;
-                align-items: center;
-                pointer-events: auto;
-
-                .top-left {
-                    display: flex;
-                    width: 40%;
-                    color: #fff;
-
-                    .button-box {
-                        position: relative;
-                        width: auto;
-                        height: 32px;
-                        display: flex;
-                        align-items: center;
-                        justify-content: center;
-                        border-radius: 5px;
-                        color: #fff;
-                        padding: 10px 15px;
-                        margin: 0px 10px;
-                        box-sizing: border-box;
-                        cursor: pointer;
-                        background: linear-gradient(#1fa6cb, #127cb5);
-
-                        &:hover {
-                            background: linear-gradient(#1fa6cbcc, #127cb5cc);
-                        }
-                    }
-                }
-
-                .top-center {
-                    display: flex;
-                    //   flex: 1;
-                    width: 15%;
-                    justify-content: center;
-                    align-items: center;
-                    font-size: 20px;
-                    color: #fff;
-
-                    .top-c-label {
-                        color: yellow;
-                    }
-                }
-
-                .top-right {
-                    display: flex;
-                    //   flex: 2;
-                    width: 45%;
-                    justify-content: right;
-                    align-items: center;
-                    color: #fff;
-
-                    .control-type {
-                        display: flex;
-                        color: #fff;
-
-                        .control-title {
-                            color: #73e8fe;
-                        }
-                    }
-                }
-            }
-
-            .lr-box {
-                height: 100%;
-                display: flex;
-                flex-direction: column;
-                position: relative;
-                // overflow: hidden;
-                z-index: 9999;
-                pointer-events: auto;
-                overflow-y: auto;
-                overflow-x: hidden;
-                height: calc(100% - 70px);
-            }
-
-            .item {
-                width: 305px;
-                height: auto;
-                position: relative;
-                border-radius: 5px;
-                margin-top: 10px;
-                margin-bottom: 0px;
-                pointer-events: auto;
-                color: #fff;
-                // overflow: hidden;
-
-                &:first-child {
-                    margin-top: 0px;
-                }
-
-                .base-title {
-                    color: #fff;
-                    margin-bottom: 8px;
-                    padding-left: 10px;
-                    position: relative;
-                    font-size: 16px;
-
-                    &::after {
-                        content: '';
-                        position: absolute;
-                        display: block;
-                        width: 4px;
-                        height: 12px;
-                        top: 7px;
-                        left: 0px;
-                        background: #45d3fd;
-                        border-radius: 4px;
-                    }
-                }
-
-                .monitor-item {
-                    width: 100%;
-                    display: flex;
-                    flex-direction: row;
-                    flex-wrap: wrap;
-
-                    .state-item {
-                        width: 50%;
-                        padding: 5px;
-                        display: flex;
-                        align-items: center;
-                        justify-content: space-between;
-
-                        .state-title {
-                            width: 100px;
-                            color: #ffffffdd;
-                            flex: 9;
-                            font-size: 14px;
-
-                            .unit {
-                                // color: #ffffffbb;
-                            }
-                        }
-
-                        .state-val {
-                            flex: 1;
-                            color: #e4a300;
-                            margin-right: 5px;
-                            text-align: right;
-                            font-size: 14px;
-                        }
-                    }
-                }
-
-                .signal-box {
-                    margin: 5px 0;
-                    display: flex;
-                    align-items: center;
-
-                    .signal-title {
-                        color: #7af5ff;
-                        margin: 0 5px;
-                    }
-
-                    &:last-child {
-                        margin-right: 0px;
-                    }
-                }
-
-                .list-item {
-                    padding: 0 10px;
-                    display: flex;
-                    justify-content: space-between;
-                    align-items: center;
-
-                    .item-data-key {
-                        color: #ffffff99;
-                    }
-                }
-
-                .item-data-box {
-                    color: #fff;
-
-                    .state-icon {
-                        display: inline-block;
-                        width: 12px;
-                        height: 12px;
-                        border-radius: 12px;
-                    }
-
-                    .open {
-                        border: 5px solid #133a56;
-                        background: #4ecb73;
-                    }
-
-                    .close {
-                        border: 5px solid #192961;
-                        background: #6d7898;
-                    }
-                }
-            }
-
-            .item-l {
-                width: 100%;
-
-                .monitor-box {
-                    width: 100%;
-
-                    .parameter-title {
-                        position: relative;
-                        width: 100%;
-                        height: 14px;
-                        margin-top: 10px;
-
-                        .icon,
-                        span {
-                            position: absolute;
-                            top: -10px;
-                        }
-                    }
-
-                    .group-parameter-title {
-                        background-image: linear-gradient(to right, #39a3ff50, #39a3ff00);
-
-                        .icon {
-                            left: -12px;
-                            top: -17px;
-                        }
-
-                        span {
-                            left: 18px;
-                        }
-
-                        .item-col {
-                            background-image: linear-gradient(to right, #39a3ff00, #39a3ff10);
-                        }
-                    }
-
-                    .device-parameter-title {
-                        background-image: linear-gradient(to right, #3df6ff40, #3df6ff00);
-
-                        .icon {
-                            left: -10px;
-                            top: -14px;
-                        }
-
-                        span {
-                            left: 18px;
-                        }
-
-                        .item-col {
-                            background-image: linear-gradient(to right, #3df6ff10, #3df6ff00);
-                        }
-                    }
-                }
-            }
-
-            .right-box {
-                width: 300px;
-                margin-top: 50px;
-            }
-
-            .left-box {
-                width: 335px;
-                margin-top: 80px;
-
-                .input-item {
-                    display: flex;
-                    justify-content: space-between;
-                    align-items: center;
-                    padding: 4px 8px;
-                    margin: 6px 0;
-                    background-image: linear-gradient(to right, #39deff15, #3977e500);
-
-                    .title {
-                        width: 200px;
-                    }
-
-                    .title-auto {
-                        width: auto;
-                    }
-
-                    .input-value {
-                        width: 80px;
-                        height: 28px;
-                        line-height: 28px !important;
-                        background: transparent !important;
-                        border-color: #228da2 !important;
-                        color: #fff !important;
-                    }
-
-                    .value {
-                        width: 100px;
-                        color: #00d8ff;
-                        padding-right: 20px;
-                    }
-
-                    .unit {
-                        width: 80px;
-                    }
-                }
-            }
-        }
-
-        &:deep(.win) {
-            width: 100%;
-            margin: 0 !important;
-        }
-    }
-}
-
-&:deep(.main) {
-    .title {
-        height: 34px;
-        text-align: center;
-        font-weight: 600;
-        color: #7af5ff;
-        // background-image: url('../../../assets/img/yfj/light.png');
-        background-repeat: no-repeat;
-        background-position-x: center;
-        background-position-y: 100%;
-        background-size: 80%;
-        font-size: 16px;
-    }
-
-    .monitor-item {
-        width: 200px;
-        display: flex;
-        flex-direction: row;
-        width: auto;
-        margin-bottom: 3px;
-
-        .monitor-val {
-            color: #ffb700;
-            display: flex;
-            width: auto;
-
-            .val {
-                width: 80px;
-                font-size: 14px;
-            }
-
-            .unit {
-                color: #ffffffbb;
-                font-size: 14px;
-            }
-        }
-    }
-
-    .monitor-title {
-        // width: 100px;
-        width: 125px;
-        color: #7af5ff;
-        font-weight: 400;
-        font-size: 14px;
-    }
-
-    .signal-item {
-        display: flex;
-        justify-content: space-between;
-
-        // margin-bottom: 5px;
-        .signal-round {
-            display: inline-block;
-            width: 8px;
-            height: 8px;
-            border-radius: 50%;
-            margin: 0 10px;
-            position: relative;
-
-            &::after {
-                display: block;
-                content: '';
-                position: absolute;
-                width: 12px;
-                height: 12px;
-                top: -2px;
-                left: -2px;
-                border-radius: 50%;
-            }
-        }
-
-        .signal-round-gry {
-            background-color: #858585;
-
-            &::after {
-                background-color: #85858544;
-                box-shadow: 0 0 1px 1px #85858599;
-            }
-        }
-
-        .signal-round-run {
-            background-color: #67fc00;
-
-            &::after {
-                background-color: #67fc0044;
-                box-shadow: 0 0 1px 1px #c6ff77;
-            }
-        }
-
-        .signal-round-warning {
-            background-color: #e9170b;
-
-            &::after {
-                background-color: #e9170b44;
-                box-shadow: 0 0 1px 1px #e9170b;
-            }
-        }
-    }
-}
-
-:deep(.zxm-radio-wrapper) {
-    color: #fff !important;
-}
-</style>
->>>>>>> c7c0a5d5177a6321d0aa67c133dc2d90f7cd0dfa

+ 0 - 161
src/views/vent/monitorManager/compressor/nitrogen.data.ln.ts

@@ -1,4 +1,3 @@
-<<<<<<< HEAD
 export const nitrogenMonitorData = [
   {
     title: '管道温度',
@@ -123,163 +122,3 @@ export const preFanMonitorData = [
     unit: 'signal',
   },
 ];
-=======
-
-  export const nitrogenMonitorData = [
-    {
-      title: '管道温度',
-      code: 'pipe_temperature',
-      unit: '℃',
-    },
-    {
-      title: '管道压力',
-      code: 'pipe_pressure',
-      unit: 'MPa',
-    },
-    {
-      title: '氮气流量',
-      code: 'nitrogen_flow_rate',
-      unit: 'm³',
-    },
-    {
-      title: '氮气浓度',
-      code: 'nitrogen_concentration',
-      unit: '%',
-    },
-    {
-        title: '电动排氮阀开度',
-        code: 'nitrogen_discharge_opening',
-        unit: '--',
-      },
-  ];
-
-  export const preMonitorList = [
-    {
-      title: `主机温度`,
-      code: `host_temperature`,
-      unit: '℃',
-      child: [],
-    },
-    {
-      title: `排气压力`,
-      code: `exhaust_pressure`,
-      unit: 'MPa',
-      child: [],
-    },
-    {
-        title: `管道温度`,
-        code: `pipe_temperature`,
-        unit: '℃',
-        child: [],
-      },
-      {
-        title: `管道压力`,
-        code: `pipe_pressure`,
-        unit: 'MPa',
-        child: [],
-      },
-    {
-      title: `电机定子温度`,
-      code: `stator_temperature`,
-      unit: '℃',
-      child: [],
-    },
-    {
-      title: `电机前端轴承温度`,
-      code: `front_axle_temperature`,
-      unit: '℃',
-      child: [],
-    },
-    {
-        title: `电机后端轴承温度`,
-        code: `rear_axle_temperature`,
-        unit: '℃',
-        child: [],
-      },
-     
-    // {
-    //   code: 'signal',
-    //   child: [
-    //     {
-    //       title: `加载/卸载:`,
-    //       code: `LoadorUnload`,
-    //       isFault: -1,
-    //     },
-    //     {
-    //       title: `控制方式:`,
-    //       code: `CtrlMode`,
-    //       isFault: -2,
-    //     },
-    //   ],
-    // },
-    // {
-    //   code: 'signal',
-    //   child: [
-    //     {
-    //       title: `运行信号:`,
-    //       code: `Status`,
-    //       isFault: false,
-    //     },
-    //     {
-    //       title: `排气压力过高:`,
-    //       code: `ExhaustPreHighFault`,
-    //       isFault: true,
-    //     },
-    //   ],
-    // },
-  ];
-  export const preFanMonitorData = [
-    {
-      title: '运行状态',
-      code: 'operation_shutdown',
-      unit: '',
-    },
-    {
-        title: '运行时间',
-        code: 'operation_hours',
-        unit: 'h',
-      },
-    {
-      title: '油压未建立故障',
-      code: 'oil_pressure_not_established',
-      unit: 'signal',
-    },
-    {
-      title: '排气压力超限故障',
-      code: 'exhaust_pressure_exceeding_limit',
-      unit: 'signal',
-    },
-    {
-      title: '相序故障',
-      code: 'phase-sequence_protection',
-      unit: 'signal',
-    },
-    {
-        title: '风机1过载故障',
-        code: 'fan1_overload',
-        unit: 'signal',
-      },
-      {
-        title: '风机2过载故障',
-        code: 'fan2_overload',
-        unit: 'signal',
-      },
-      {
-        title: '风机3过载故障',
-        code: 'fan3_overload',
-        unit: 'signal',
-      },
-      {
-        title: '风机4过载故障',
-        code: 'fan4_overload',
-        unit: 'signal',
-      },
-      {
-        title: '高压柜故障',
-        code: 'hvc_malfunction',
-        unit: 'signal',
-      },
-  
-  ];
-  
->>>>>>> c7c0a5d5177a6321d0aa67c133dc2d90f7cd0dfa

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

@@ -222,8 +222,8 @@ export function getMonitorComponent() {
       return nitrogenHome;
     default:
       // nitrogenHome = defineAsyncComponent(() => import('./components/nitrogenHome_dltj.vue'));
-      nitrogenHome = defineAsyncComponent(() => import('./components/nitrogenHome_ln.vue'));
-      // nitrogenHome = defineAsyncComponent(() => import('./components/nitrogenHome_bet.vue'));
+      // nitrogenHome = defineAsyncComponent(() => import('./components/nitrogenHome_ln.vue'));
+      nitrogenHome = defineAsyncComponent(() => import('./components/nitrogenHome_bet.vue'));
       return nitrogenHome;
   }
 }

+ 0 - 1
src/views/vent/monitorManager/deviceMonitor/components/device/index.vue

@@ -1427,5 +1427,4 @@ onUnmounted(() => {
 //   display: flex;
 //   align-items: center;
 // }
-
 </style>

+ 21 - 5
src/views/vent/monitorManager/deviceMonitor/components/device/modal/bundle.modal.vue

@@ -1,5 +1,13 @@
 <template>
-  <BasicModal v-bind="$attrs" @register="register" :title="`束管监测详情    ${currentTime}`" width="1200px" @ok="handleOk" @cancel="handleCancel">
+  <BasicModal
+    v-bind="$attrs"
+    @register="register"
+    :title="`束管监测详情  ${currentTime}`"
+    width="1200px"
+    @ok="handleOk"
+    @cancel="handleCancel"
+    wrapClassName="bundle-modal"
+  >
     <div class="fiber-modal">
       <div class="modal-left">
         <div
@@ -183,7 +191,7 @@
           legend: '二氧化碳',
           seriesName: '(%)',
           ymax: 20,
-          yname: '1%',
+          yname: '%',
           linetype: 'line',
           yaxispos: 'right',
           color: '#9C83D9',
@@ -195,7 +203,7 @@
           legend: '甲烷',
           seriesName: '',
           ymax: 20,
-          yname: '1%',
+          yname: '%',
           linetype: 'line',
           yaxispos: 'right',
           color: '#DA3914',
@@ -207,7 +215,7 @@
           legend: '氧气',
           seriesName: '(氧气%)',
           ymax: 30,
-          yname: '2%',
+          yname: '%',
           linetype: 'line',
           yaxispos: 'right',
           color: '#03C2EC',
@@ -255,7 +263,7 @@
         // if (newActiveID != oldActiveID) {
         //   activeDeviceID.value = newActiveID as string;
         // }
-        activeDeviceID.value =  activeDeviceID.value ? activeDeviceID.value :  newActiveID ;
+        activeDeviceID.value = activeDeviceID.value ? activeDeviceID.value : newActiveID;
         deviceList.value = newDataSource?.filter((item: any, index) => {
           if ((!activeDeviceID.value && index == 0) || item.deviceID === activeDeviceID.value) {
             // activeDeviceID.value = item.deviceID;
@@ -286,6 +294,14 @@
     },
   });
 </script>
+<style lang="less">
+  .bundle-modal {
+    .zxm-modal {
+      top: 30px !important;
+    }
+  }
+</style>
+
 <style lang="less" scoped>
   .fiber-modal {
     width: 100%;

+ 1 - 2
src/views/vent/monitorManager/fiberMonitor/fiber.belt.threejs.ts

@@ -338,8 +338,7 @@ class beltFiber {
       this.setRenderPass();
       this.model.orbitControls.update();
       // this.model.orbitControls.addEventListener('change', _this.render.bind(_this));
-      this.model.setGLTFModel(['laneway']).then(async (gltf) => {
-        this.group = gltf[0];
+      this.model.setGLTFModel(['laneway', 'laneway-device'], this.group).then(async () => {
         this.group.position.set(0, 0.7, 0);
         (this.group as THREE.Group).remove(this.group.getObjectByName('mesh001'));
         const optical = this.group.getObjectByName('optical_fiber_');

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

@@ -379,8 +379,9 @@
     }
   );
   watch(
-    () => selectData['deviceID'],
+    () => props.deviceId,
     async (deviceID) => {
+      debugger;
       if (deviceID) await getCamera(deviceID, playerRef.value);
     }
   );

+ 1 - 1
src/views/vent/monitorManager/nitrogen/nitrogen.dataHsw.ts

@@ -66,7 +66,7 @@ export const preFanMonitorData = [];
 export const totalData = [
   {
     title: '总压力',
-    code: 'MainPipePressure',
+    code: 'Totalpressure',
     unit: 'bar',
   },
 ];

+ 12 - 4
src/views/vent/monitorManager/windowMonitor/dandaoFc.threejs.ts

@@ -67,7 +67,7 @@ class singleWindow {
         y: 145,
       },
       {
-        text: `${selectData.frontRearDP ? '风窗压差(Pa):' : '通信状态:'}:`,
+        text: `${selectData.frontRearDP ? '风窗压差(Pa):' : selectData.windSpeed ? '风速:' : '通信状态:'}:`,
         font: 'normal 30px Arial',
         color: '#009900',
         strokeStyle: '#002200',
@@ -75,7 +75,15 @@ class singleWindow {
         y: 200,
       },
       {
-        text: `${selectData.frontRearDP ? selectData.frontRearDP : selectData.netStatus == '0' ? '断开' : '连接'}`,
+        text: `${
+          selectData.frontRearDP
+            ? selectData.frontRearDP
+            : selectData.windSpeed
+            ? selectData.windSpeed
+            : selectData.netStatus == '0'
+            ? '断开'
+            : '连接'
+        }`,
         font: 'normal 30px Arial',
         color: '#009900',
         strokeStyle: '#002200',
@@ -83,7 +91,7 @@ class singleWindow {
         y: 200,
       },
       {
-        text: `风窗道数: `,
+        text: `${selectData.fWindowM3 ? '过风量(m³/min):' : '风窗道数:'} `,
         font: 'normal 30px Arial',
         color: '#009900',
         strokeStyle: '#002200',
@@ -91,7 +99,7 @@ class singleWindow {
         y: 256,
       },
       {
-        text: `${selectData.nwindownum}`,
+        text: `${selectData.fWindowM3 ? selectData.fWindowM3 : selectData.nwindownum}`,
         font: 'normal 30px Arial',
         color: '#009900',
         strokeStyle: '#002200',

+ 12 - 4
src/views/vent/monitorManager/windowMonitor/shuangdaoFc.threejs.ts

@@ -62,7 +62,7 @@ class doubleWindow {
         y: 150,
       },
       {
-        text: `${selectData.frontRearDP ? '风窗压差(Pa):' : '通信状态:'}:`,
+        text: `${selectData.frontRearDP ? '风窗压差(Pa):' : selectData.windSpeed ? '风速:' : '通信状态:'}:`,
         font: 'normal 28px Arial',
         color: '#009900',
         strokeStyle: '#002200',
@@ -70,7 +70,15 @@ class doubleWindow {
         y: 210,
       },
       {
-        text: `${selectData.frontRearDP ? selectData.frontRearDP : selectData.netStatus == '0' ? '断开' : '连接'}`,
+        text: `${
+          selectData.frontRearDP
+            ? selectData.frontRearDP
+            : selectData.windSpeed
+            ? selectData.windSpeed
+            : selectData.netStatus == '0'
+            ? '断开'
+            : '连接'
+        }`,
         font: 'normal 28px Arial',
         color: '#009900',
         strokeStyle: '#002200',
@@ -78,7 +86,7 @@ class doubleWindow {
         y: 210,
       },
       {
-        text: `风窗道数: `,
+        text: `${selectData.fWindowM3 ? '过风量(m³/min):' : '风窗道数:'} `,
         font: 'normal 28px Arial',
         color: '#009900',
         strokeStyle: '#002200',
@@ -86,7 +94,7 @@ class doubleWindow {
         y: 266,
       },
       {
-        text: `${selectData.nwindownum}`,
+        text: `${selectData.fWindowM3 ? selectData.fWindowM3 : selectData.nwindownum}`,
         font: 'normal 28px Arial',
         color: '#009900',
         strokeStyle: '#002200',