Explorar el Código

Merge branch 'master' of http://182.92.126.35:3000/hrx/mky-vent-base

lxh hace 1 día
padre
commit
090b8a8ccb
Se han modificado 23 ficheros con 572 adiciones y 394 borrados
  1. 7 7
      src/views/vent/bundleSpy/bundleSpyTable/bundleSpy-table.data.ts
  2. 4 4
      src/views/vent/bundleSpy/bundleSpyTable/index.vue
  3. 1 1
      src/views/vent/deviceManager/configurationTable/types.ts
  4. 1 0
      src/views/vent/gas/gasAssessment/gasAssessment.api.ts
  5. 33 10
      src/views/vent/gas/gasAssessment/index.vue
  6. 20 177
      src/views/vent/gas/gasAssessment/threejs/gasAssessmen.threejs.base.ts
  7. 2 0
      src/views/vent/home/billboard/billboard.data.ts
  8. 12 3
      src/views/vent/home/billboard/components/CollapseTable.vue
  9. 11 6
      src/views/vent/home/billboard/components/GasStatus.vue
  10. 3 1
      src/views/vent/home/configurable/components/ModuleDustNew.vue
  11. 9 6
      src/views/vent/home/configurable/components/content.vue
  12. 45 1
      src/views/vent/home/configurable/components/detail/CustomList.vue
  13. 8 2
      src/views/vent/home/configurable/components/detail/TimelineListNew.vue
  14. 1 25
      src/views/vent/home/configurable/components/originalNew/NewNav.vue
  15. 2 1
      src/views/vent/home/configurable/configurable.data.New.ts
  16. 37 32
      src/views/vent/home/configurable/configurable.data.ts
  17. 2 2
      src/views/vent/home/configurable/dustNew.vue
  18. 10 6
      src/views/vent/monitorManager/alarmMonitor/common.api.ts
  19. 85 4
      src/views/vent/monitorManager/alarmMonitor/common.data.ts
  20. 142 105
      src/views/vent/monitorManager/alarmMonitor/index.vue
  21. 109 0
      src/views/vent/monitorManager/alarmMonitor/warn/waterLevel.vue
  22. 1 1
      src/views/vent/monitorManager/comment/comment.data.ts
  23. 27 0
      src/views/vent/monitorManager/zaihai/index.vue

+ 7 - 7
src/views/vent/bundleSpy/bundleSpyTable/bundleSpy-table.data.ts

@@ -57,7 +57,7 @@ export const columns: BasicColumn[] = [
     align: 'center',
   },
   {
-    title: 'C2H6(%)',
+    title: 'C₂H₆(%)',
     dataIndex: 'c2h6_ave',
     key: 'c2h6_ave',
     width: 100,
@@ -301,7 +301,7 @@ export const Bdcolumns: BasicColumn[] = [
         align: 'center',
       },
       {
-        title: '乙烷(C2H6%)',
+        title: '乙烷(C₂H₆%)',
         dataIndex: 'c2h6_ave',
         key: 'c2h6_ave',
         width: 100,
@@ -466,7 +466,7 @@ export const Bltcolumns: BasicColumn[] = [
         align: 'center',
       },
       {
-        title: 'C2H6(%)',
+        title: 'C₂H₆(%)',
         dataIndex: 'c2h6_ave',
         key: 'c2h6_ave',
         width: 100,
@@ -593,7 +593,7 @@ export const Sgtcolumns: BasicColumn[] = [
     align: 'center',
   },
   {
-    title: 'C2H6(%)',
+    title: 'C₂H₆(%)',
     dataIndex: 'c2h6_ave',
     key: 'c2h6_ave',
     width: 100,
@@ -708,7 +708,7 @@ export const Yjlcolumns: BasicColumn[] = [
         align: 'center',
       },
       {
-        title: 'C2H6(ppm)',
+        title: 'C₂H₆(ppm)',
         dataIndex: 'c2h6_ave',
         key: 'c2h6_ave',
         width: 100,
@@ -1066,7 +1066,7 @@ export const Jinjiecolumns: BasicColumn[] = [
         align: 'center',
       },
       {
-        title: 'C2H6(%)',
+        title: 'C₂H₆(%)',
         dataIndex: 'c2h6_ave',
         key: 'c2h6_ave',
         width: 100,
@@ -1258,7 +1258,7 @@ export const Ltcolumns: BasicColumn[] = [
     align: 'center',
   },
   {
-    title: 'C2H6(ppm)',
+    title: 'C₂H₆(ppm)',
     dataIndex: 'c2h6_ave',
     key: 'c2h6_ave',
     width: 100,

+ 4 - 4
src/views/vent/bundleSpy/bundleSpyTable/index.vue

@@ -268,7 +268,7 @@ function updateChart(data: any) {
             type: 'bar',
           },
           {
-            name: 'C2H6',
+            name: 'C₂H₆',
             data: c2h6AveValues,
             yAxisIndex: 1,
             type: 'bar',
@@ -326,7 +326,7 @@ function updateChart(data: any) {
             type: 'bar',
           },
           {
-            name: 'C2H6',
+            name: 'C₂H₆',
             data: c2h6AveValues,
             yAxisIndex: 1,
             type: 'bar',
@@ -419,7 +419,7 @@ function updateChart(data: any) {
             type: 'bar',
           },
           {
-            name: 'C2H6',
+            name: 'C₂H₆',
             data: c2h6AveValues,
             yAxisIndex: 1,
             type: 'bar',
@@ -482,7 +482,7 @@ function updateChart(data: any) {
             type: 'bar',
           },
           {
-            name: 'C2H6',
+            name: 'C₂H₆',
             data: c2h6AveValues,
             yAxisIndex: 1,
             type: 'bar',

+ 1 - 1
src/views/vent/deviceManager/configurationTable/types.ts

@@ -155,7 +155,7 @@ export interface ModuleDataBoard extends ReadFrom {
 
 export interface ModuleDataList extends ReadFrom {
   /** 列表预设的背景类型 */
-  type: 'timeline' | 'A' | 'B' | 'C' | 'D' | 'E' | 'F' | 'G' | 'H' | 'I' | 'J' | 'K' | 'timelineNew';
+  type: 'timeline' | 'A' | 'B' | 'C' | 'D' | 'E' | 'F' | 'G' | 'H' | 'I' | 'J' | 'K' | 'timelineNew' | 'fireList';
   /** 是否需要根据数据来决定所展示的项目数量,需要确保 items 至少有一项,且 readFrom 指向数组 */
   mapFromData?: boolean;
   /** 核心配置,每个列表项对应一项 */

+ 1 - 0
src/views/vent/gas/gasAssessment/gasAssessment.api.ts

@@ -8,3 +8,4 @@ enum Api {
  * @param params
  */
 export const list = (params) => defHttp.post({ url: Api.list, params });
+export const getTableList = (params) => defHttp.get({ url: '/safety/ventanalyManageSystem/list', params });

+ 33 - 10
src/views/vent/gas/gasAssessment/index.vue

@@ -71,6 +71,8 @@
   import WorkFace from './components/workFace.vue';
   import GasVideo from './components/gasVideo.vue';
   import BottomMenu from '/@/views/vent/comment/components/bottomMenu.vue';
+  import { getTableList } from './gasAssessment.api';
+
   type DeviceType = { deviceType: string; deviceName: string; datalist: any[] };
 
   const activeKey = ref('gasAssessment');
@@ -89,26 +91,47 @@
     // 根据抽采单元
     isRefreshUnit.value = false;
     clearCss3D();
-    timer = undefined;
     clearTimeout(timer);
-    nextTick(async () => {
+    timer = undefined;
+    loading.value = true;
+    setTimeout(async () => {
       setModelType(modalType);
       isRefreshUnit.value = true;
       timer = null;
       await getMonitor(true);
       setPlanes(gasUnitDataSource.value);
       setCss3D(gasUnitDataSource.value);
-    });
+      loading.value = false;
+    }, 1000);
   };
-
-  const { options, optionValue, deviceActive, deviceValue, getSelectRow, getSysDataSource, getDeviceList } = useSystemSelect(
-    'sys_surface_caimei',
-    changeModalType
-  );
-
   const gasUnitNum = ref(5);
   let modalType = 'workFace1';
 
+  const { options, optionValue, deviceActive, deviceValue, getSelectRow, getDeviceList } = useSystemSelect('sys_surface*', changeModalType);
+
+  async function getSysDataSource() {
+    let res = await getTableList({ strtype: 'sys_surface*', pagetype: 'normal' });
+    if (res && res.records && res.records.length > 0) {
+      if (options.value.length == 0) {
+        // 初始时选择第一条数据
+        for (let i = 0; i < res.records.length; i++) {
+          const item = res.records[i];
+          if (item['linkdevices'] && item['linkdevices'].length > 0) {
+            const index = item['linkdevices'].findIndex((linkDevice) => linkDevice['deviceKind'] == 'unit');
+            if (index > -1) {
+              options.value.push(item);
+            }
+          }
+        }
+      }
+      if (!optionValue.value && options.value.length > 0) {
+        optionValue.value = options.value[0]['id'];
+        getDeviceList(true);
+        getSelectRow(optionValue.value);
+      }
+    }
+  }
+
   // // 监测数据
   const selectData = ref([]);
   const monitorDataGroupNum = ref(0);
@@ -169,8 +192,8 @@
   onUnmounted(() => {
     if (timer) {
       clearTimeout(timer);
-      timer = undefined;
     }
+    timer = undefined;
     destroy();
   });
 </script>

+ 20 - 177
src/views/vent/gas/gasAssessment/threejs/gasAssessmen.threejs.base.ts

@@ -55,176 +55,17 @@ class GasAssessmen {
     this.model.renderer?.render(this.model.scene as THREE.Scene, this.model.camera as THREE.PerspectiveCamera);
   }
 
-  setPlanes1 = (n) => {
-    // const sizeList = [0.2, 0.3, 0.1, 0.2, 0.2];
-    const colors = {
-      c1: new THREE.Color(0x00fe00), // >90
-      c2: new THREE.Color(0xf9b866), // >75 <90  249,184,102
-      c3: new THREE.Color(0xfefe00), // 50-75  254,254,0
-      c4: new THREE.Color(0xfe6600), // 25-50 254,102,0
-      c5: new THREE.Color(0xb00101), // <25 176,1,1
-    };
-
-    const sizeList = [
-      {
-        id: '111',
-        ratio: 0.5,
-        color: colors.c1,
-      },
-      {
-        id: '222',
-        ratio: 0.3,
-        color: colors.c2,
-      },
-      {
-        id: '333',
-        ratio: 0.2,
-        color: colors.c4,
-      },
-      // {
-      //   id: '444',
-      //   ratio: 0.2,
-      //   color: colors.c5,
-      // },
-      // {
-      //   id: '555',
-      //   ratio: 0.2,
-      //   color: colors.c3,
-      // },
-    ];
-    this.unitList = sizeList;
-
-    // width = 7.713 height =3.717
-
-    // const sizeList = [
-    //   {
-    //     ratio: 0.4,
-    //     color: colors.c1,
-    //   },
-    //   {
-    //     ratio: 0.5,
-    //     color: colors.c2,
-    //   },
-    //   {
-    //     ratio: 0.1,
-    //     color: colors.c4,
-    //   },
-    // ];
-
-    const geometry = new THREE.PlaneGeometry(7.723, 3.72, 1, 1);
-
-    // 初始化累积比例数组和颜色数组
-    const accumulatedRatios = [];
-    const colorsArray = new Float32Array(3 * sizeList.length);
-
-    // 计算累积比例和颜色数组
-    function updateShaderData(sizeList) {
-      let accRatio = 0;
-      for (let i = 0; i < sizeList.length; i++) {
-        const item = sizeList[i];
-        accRatio += item.ratio;
-        accumulatedRatios.push(accRatio);
-        colorsArray[i * 3] = item.color.r;
-        colorsArray[i * 3 + 1] = item.color.g;
-        colorsArray[i * 3 + 2] = item.color.b;
-      }
-    }
-
-    updateShaderData(sizeList); // 初始调用
-
-    // 定义着色器代码
-    const vertexShader = `
-    varying vec2 vUv;
-    void main() {
-        vUv = uv;
-        gl_Position = projectionMatrix * modelViewMatrix * vec4(position, 1.0);
-    }
-`;
-
-    const fragmentShader = `
-    varying vec2 vUv;
-    uniform float ratios[${sizeList.length}];
-    uniform vec3 colors[${sizeList.length}];
-    
-    void main() {
-        for(int i = 0; i < ${sizeList.length}; i++) {
-            if(vUv.x < ratios[i]) {
-                gl_FragColor = vec4(colors[i], 1.0);
-                return;
-            }
-        }
-        gl_FragColor = vec4(0.0, 0.0, 0.0, 0.5);
-    }
-  `;
-
-    //   const fragmentShader = `
-    //     varying vec2 vUv;
-    //     uniform float ratios[${sizeList.length + 1}]; // 加入了起始点 0
-    //     uniform vec3 colors[${sizeList.length}];
-
-    //     vec3 lerp(vec3 a, vec3 b, float t) {
-    //         return a + t * (b - a);
-    //     }
-
-    //     void main() {
-    //         int index = 0;
-    //         for(int i = 1; i <= ${sizeList.length}; i++) {
-    //             if(vUv.x >= ratios[i-1] && vUv.x < ratios[i]) {
-    //                 index = i - 1;
-    //                 break;
-    //             }
-    //         }
-
-    //         // 如果是最后一个颜色块,直接使用其颜色
-    //         if (index == ${sizeList.length - 1}) {
-    //             gl_FragColor = vec4(colors[index], 1.0);
-    //         } else {
-    //             // 计算该像素在当前颜色块内的相对位置
-    //             float t = (vUv.x - ratios[index]) / (ratios[index + 1] - ratios[index]);
-    //             // 在相邻颜色间进行线性插值
-    //             vec3 color = lerp(colors[index], colors[index + 1], t);
-    //             gl_FragColor = vec4(color, 1.0);
-    //         }
-    //     }
-    // `;
-
-    // 创建着色器材质
-    const material = new THREE.ShaderMaterial({
-      uniforms: {
-        ratios: { value: accumulatedRatios },
-        colors: { value: colorsArray },
-      },
-      vertexShader: vertexShader,
-      fragmentShader: fragmentShader,
-      depthTest: false,
-      depthWrite: false,
-    });
-
-    // // 当 sizeList 数据变化时调用此函数
-    // function updateSizeList(newSizeList) {
-    //   accumulatedRatios.length = 0; // 清空累积比例数组
-    //   updateShaderData(newSizeList);
-    //   material.uniforms.ratios.value = accumulatedRatios;
-    //   material.uniforms.colors.value = colorsArray;
-    //   material.needsUpdate = true;
-    // }
-
-    // 创建网格并添加到场景中
-    const plane = new THREE.Mesh(geometry, material);
-    plane.rotation.x = -Math.PI / 2;
-    plane.position.set(-0.2, 0.15, -0.03);
-    plane.name = 'unit';
-    this.planeGroup.add(plane);
-    this.group.add(this.planeGroup);
-  };
-
   setPlanes = (unitList: any[]) => {
     if (!unitList || unitList.length === 0) return;
     // 要根据unitList来计算比例
     type Point = { u: number; v: number };
     let max = 0;
-    const unitLen = unitList[unitList.length - 1]['unitLen'].split(',');
-    max = Math.max(max, ...unitLen);
+    for (let i = 0; i < unitList.length; i++) {
+      const unit = unitList[i];
+      const unitLen = unit['unitLen'].split(',');
+      max = Math.max(max, ...unitLen);
+    }
+
     const regions = <{ points: Point[]; color: any[] }[]>[];
     for (let i = 0; i < unitList.length; i++) {
       const item = unitList[i];
@@ -340,21 +181,25 @@ class GasAssessmen {
   setCss3D = (unitList: any[]) => {
     const sizeList: number[] = [];
     if (!unitList || unitList.length === 0) return;
-    let max = 0;
-    const unitLen = unitList[unitList.length - 1]['unitLen'].split(',');
-    max = Math.max(max, ...unitLen);
+    let max = 0,
+      leftW = 0;
+    for (let i = 0; i < unitList.length; i++) {
+      const unit = unitList[i];
+      const unitLen = unit['unitLen'].split(',');
+      max = Math.max(max, ...unitLen);
+    }
     for (let i = 0; i < unitList.length; i++) {
       const item = unitList[i];
       const unitLen = item['unitLen'].split(',');
       const unitMax = Math.max(...unitLen);
       const unitMin = Math.min(...unitLen);
-      sizeList.push((unitMax - unitMin) / max);
-    }
-    let leftW = 0;
-    for (let i = 0; i < sizeList.length; i++) {
-      const label = setTag3D(`抽采单元${i + 1}`, 'gas_unit_text');
+      const unitPos = (unitMin + (unitMax - unitMin) / 2) / max;
+
+      // sizeList.push((unitMax - unitMin) / max);
+
+      const label = setTag3D(`${item['strname']}`, 'gas_unit_text');
       label.scale.set(0.02, 0.02, 0.02); //根据相机渲染范围控制HTML 3D标签尺寸
-      label.position.set((leftW + sizeList[i] / 2) * 7.913 - 4.22, 0.015, 0.142);
+      label.position.set(unitPos * 7.913 - 4.22, 0.015, 0.142);
       label.name = 'planeText' + i;
       this.planeGroup.add(label);
 
@@ -365,13 +210,11 @@ class GasAssessmen {
           const gasUnitCSS3D = new CSS3DObject(element);
           gasUnitCSS3D.name = `unitText${i}`;
           gasUnitCSS3D.scale.set(0.01, 0.01, 0.01);
-          gasUnitCSS3D.position.set((leftW + sizeList[i] / 2) * 10.93 - 11.17, 0.015, -3.442);
+          gasUnitCSS3D.position.set(unitPos * 11 - 10.87, 0.015, -3.442);
           gasUnitCSS3D.lookAt(gasUnitCSS3D.position.x, gasUnitCSS3D.position.y + 1.2, gasUnitCSS3D.position.y);
           this.planeGroup.add(gasUnitCSS3D);
         }
       }
-
-      leftW += sizeList[i];
     }
   };
   // 显示或隐藏抽采单元显示内容

+ 2 - 0
src/views/vent/home/billboard/billboard.data.ts

@@ -563,6 +563,8 @@ export const DEFAULT_TEST_DATA = {
         warnLevel: '/',
         num: '/',
         typeName: '/',
+        maxValueInstallPos: null,
+        maxValue: null,
       },
     ],
   },

+ 12 - 3
src/views/vent/home/billboard/components/CollapseTable.vue

@@ -4,7 +4,13 @@
       <div class="label-t" v-for="(item, index) in columns" :key="`svvhbcth-${index}`" :style="{ flexBasis }">{{ item.name }}</div>
     </div>
     <Collapse v-model:activeKey="avtiveCollapse" ghost class="table__content_list" :style="{ height: contentHeight }">
-      <CollapsePanel v-for="(item, index) in data" :key="`svvhbct-${index}`" class="table__content_list_row" :showArrow="showArrow">
+      <CollapsePanel
+        v-for="(item, index) in data"
+        :key="`svvhbct-${index}`"
+        class="table__content_list_row"
+        :showArrow="item.hideCollapses ? false : showArrow"
+        :disabled="item.hideCollapses"
+      >
         <template #header>
           <div v-for="(t, i) in columns" :key="`svvhbctr-${i}`" :style="{ flexBasis }">
             <slot :name="t.prop" :scope="item">
@@ -12,7 +18,7 @@
             </slot>
           </div>
         </template>
-        <template #default>
+        <template v-if="!item.hideCollapses" #default>
           <p v-for="(t, i) in collapses" :key="`svvhbctc-${i}`" class="table__content_list_collapse"> {{ t.name }}:{{ get(item, t.prop) }} </p>
         </template>
       </CollapsePanel>
@@ -21,7 +27,7 @@
 </template>
 <script lang="ts" setup>
   import { computed, defineProps, ref } from 'vue';
-  import _ from 'lodash-es';
+  import _ from 'lodash';
   import { Collapse, CollapsePanel } from 'ant-design-vue';
 
   let props = withDefaults(
@@ -33,6 +39,8 @@
       defaultValue: string;
       contentHeight: string;
       showArrow: boolean;
+      /** 是否自动过滤折叠展开后无有效内容的项 */
+      filterNil: boolean;
     }>(),
     {
       columns: () => [],
@@ -41,6 +49,7 @@
       defaultValue: '/',
       contentHeight: '220px',
       showArrow: true,
+      filterNil: false,
     }
   );
 

+ 11 - 6
src/views/vent/home/billboard/components/GasStatus.vue

@@ -35,12 +35,17 @@
   });
   const tableData = computed(() => {
     const info = props.data.gasInfo;
-    return get(info, 'gasTypeList', []).map((e) => {
-      return {
-        ...e,
-        warnLevelStr: trans[e.warnLevel],
-      };
-    });
+    return get(info, 'gasTypeList', [])
+      .map((e) => {
+        return {
+          ...e,
+          hideCollapses: !e[GAS_COLLAPSES[0].prop],
+          warnLevelStr: trans[e.warnLevel],
+        };
+      })
+      .sort((a) => {
+        return a.hideCollapses ? 1 : -1;
+      });
   });
 
   const riskTrans = {

+ 3 - 1
src/views/vent/home/configurable/components/ModuleDustNew.vue

@@ -109,7 +109,7 @@ const daneClass = computed(() => {
     return 'right-1';
   }
   if (headerPosition === 'rightCenter') {
-    return 'right-1';
+    return 'right-2';
   }
   if (headerPosition === 'rightBottom') {
     return 'right-3';
@@ -213,6 +213,7 @@ watch(
 .left-1 {
   background: var(--image-Left1) no-repeat;
   background-size: 100% 100%;
+  margin-left: 35px;
 }
 .left-2 {
   background: var(--image-Left2) no-repeat;
@@ -225,6 +226,7 @@ watch(
 .right-1 {
   background: var(--image-Right1) no-repeat;
   background-size: 100% 100%;
+  margin-left: -32px;
 }
 .right-2 {
   background: var(--image-Right2) no-repeat;

+ 9 - 6
src/views/vent/home/configurable/components/content.vue

@@ -21,7 +21,11 @@
       <div v-for="config in layoutConfig" :key="config.name" :style="{ flexBasis: config.basis, overflow: config.overflow ? 'auto' : 'none' }">
         <!-- 告示板部分 -->
         <template v-if="config.name === 'board'">
-          <div v-if="config.basis !== '100%'" class="content__module flex flex-justify-around flex-items-center flex-wrap">
+          <div
+            v-if="config.pageType == 'vent_New'"
+            style="padding-top: 11%"
+            class="content__module content__module1 flex flex-justify-around flex-items-center flex-wrap"
+          >
             <MiniBoard
               v-for="item in config.items"
               :key="item.prop"
@@ -31,11 +35,7 @@
               :layout="config.layout"
             />
           </div>
-          <div
-            v-else-if="config.basis == '100%'"
-            style="padding-top: 11%"
-            class="content__module content__module1 flex flex-justify-around flex-items-center flex-wrap"
-          >
+          <div v-else class="content__module flex flex-justify-around flex-items-center flex-wrap">
             <MiniBoard
               v-for="item in config.items"
               :key="item.prop"
@@ -63,6 +63,9 @@
             <CustomList class="content__module" :type="config.type" :list-config="config.items" />
           </template>
         </template>
+        <template v-if="config.name === 'fireList'">
+          <CustomList class="content__module" :type="config.type" :list-config="config.items" />
+        </template>
         <!-- 画廊部分 -->
         <template v-if="config.name === 'gallery'">
           <CustomGallery class="content__module" :type="config.type" :gallery-config="config.items" />

+ 45 - 1
src/views/vent/home/configurable/components/detail/CustomList.vue

@@ -278,7 +278,51 @@ withDefaults(
 .list-item__content_H > div {
   flex-basis: 33.3%;
 }
-
+.list_fireList {
+  background: none;
+}
+.list__wrapper_fireList {
+  display: flex;
+  flex-wrap: wrap;
+  justify-content: flex-start;
+  margin-left: 70px;
+}
+.list-item_fireList {
+  width: 167px;
+  height: 58px;
+  align-items: center;
+  text-align: center;
+  background-image: var(--image-list_bg_i);
+  background-repeat: no-repeat;
+  background-size: auto 100%;
+  margin: 5px 10px;
+}
+.list-item__content_fireList {
+  position: relative;
+  width: 100%;
+  height: 100%;
+}
+.list-item__content_fireList > .list-item__label {
+  width: 60px;
+  height: 100%;
+  left: 0;
+  position: absolute;
+  font-size: 20px;
+  line-height: 63px;
+  color: #009bff;
+}
+.list-item__content_fireList > .list-item__info {
+  height: 50%;
+  left: 70px;
+  position: absolute;
+}
+.list-item__content_fireList > .list-item__value {
+  top: 50%;
+  height: 50%;
+  left: 70px;
+  position: absolute;
+  font-size: 18px;
+}
 .list_I {
   background: none;
 }

+ 8 - 2
src/views/vent/home/configurable/components/detail/TimelineListNew.vue

@@ -4,7 +4,7 @@
     <div class="left-section">
       <div class="warnBg"></div>
       <div class="warnInfo">
-        <div>{{ 0 }}</div>
+        <div>{{ sum }}</div>
         <div>报警数</div>
       </div>
     </div>
@@ -23,7 +23,8 @@
   </div>
 </template>
 <script lang="ts" setup>
-withDefaults(
+import { computed } from 'vue';
+const props = withDefaults(
   defineProps<{
     listConfig: {
       value: string;
@@ -36,6 +37,11 @@ withDefaults(
     listConfig: () => [],
   }
 );
+const sum = computed(() => {
+  return props.listConfig.reduce((total, item) => {
+    return total + Number(item.value);
+  }, 0);
+});
 </script>
 <style lang="less" scoped>
 @import '/@/design/theme.less';

+ 1 - 25
src/views/vent/home/configurable/components/originalNew/NewNav.vue

@@ -64,16 +64,14 @@ let props = defineProps({
 let menuList = ref<any[]>([
   {
     name: '智能通风',
-    MenuItemList: [{ name: '多灾融合预警' }, { name: '通风监测预警' }, { name: '火灾监测预警' }, { name: '粉尘监测预警' }, { name: '瓦斯监测预警' }],
+    targatUrl: '/configurable/ventNew/home',
   },
   {
     name: '火灾监控',
-    // MenuItemList: [{ name: '多灾融合预警' }, { name: '通风监测预警' }, { name: '火灾监测预警' }, { name: '粉尘监测预警' }, { name: '瓦斯监测预警' }],
     targatUrl: '/configurable/fireNew/home',
   },
   {
     name: '粉尘监控',
-    // MenuItemList: [{ name: '多灾融合预警' }, { name: '通风监测预警' }, { name: '火灾监测预警' }, { name: '粉尘监测预警' }, { name: '瓦斯监测预警' }],
     targatUrl: '/configurable/dustNew/home',
   },
   {
@@ -86,33 +84,11 @@ let menuList = ref<any[]>([
   },
 ]); //一级菜单列表
 let activeIndex = ref(0); //当前激活menu索引
-let activeIndexL = ref(0); //当前激活menu索引
-let activeIndexR = ref(null); //当前激活menu索引
 const router = useRouter();
 let isShowMenuItem = ref(false); //是否显示menuItem下拉选项菜单
-let isShowMenuItemL = ref(false); //是否显示menuItem下拉选项菜单
-let isShowMenuItemR = ref(false); //是否显示menuItem下拉选项菜单
 let menuItemActive = ref(0); //menuItem当前激活选项
 const leftMenus = computed(() => menuList.value.slice(0, 4));
 const rightMenus = computed(() => menuList.value.slice(4));
-//menu选项切换
-function menuLeftClick(index) {
-  activeIndexL.value = index;
-  isShowMenuItemL.value = !isShowMenuItemL.value;
-}
-//menuItem选项切换
-function menuItemLeftClick(index) {
-  menuItemActive.value = index;
-  isShowMenuItemL.value = false;
-}
-function menuRightClick(index) {
-  activeIndexR.value = index;
-  isShowMenuItemR.value = !isShowMenuItemR.value;
-}
-function menuItemRightClick(index) {
-  menuItemActive.value = index;
-  isShowMenuItemL.value = false;
-}
 function menuClick(data) {
   activeIndex.value = data.index;
   isShowMenuItem.value = !isShowMenuItem.value;

+ 2 - 1
src/views/vent/home/configurable/configurable.data.New.ts

@@ -740,6 +740,7 @@ export const testConfigNewFire: Config[] = [
           {
             name: 'list',
             basis: '60%',
+            pageType: 'New_fire',
           },
           {
             name: 'blast_delta',
@@ -755,7 +756,7 @@ export const testConfigNewFire: Config[] = [
       table: [],
       list: [
         {
-          type: 'I',
+          type: 'fireList',
           readFrom: '',
           items: [
             {

+ 37 - 32
src/views/vent/home/configurable/configurable.data.ts

@@ -1001,7 +1001,7 @@ export const testConfigDustGreen: Config[] = [
           value: '',
         },
       },
-     background: {
+      background: {
         show: false,
         type: 'video',
         link: '',
@@ -1021,7 +1021,7 @@ export const testConfigDustGreen: Config[] = [
       },
       board: [],
       chart: [],
-       gallery: [
+      gallery: [
         {
           type: 'D',
           readFrom: 'dustManageInfo',
@@ -1094,9 +1094,9 @@ export const testConfigDustGreen: Config[] = [
   {
     deviceType: 'dustDustGraph',
     moduleName: '综放工作面粉尘浓度',
-     pageType: 'dust-green',
+    pageType: 'dust-green',
     moduleData: {
-     header: {
+      header: {
         show: true,
         readFrom: '',
         selector: {
@@ -1187,7 +1187,7 @@ export const testConfigDustGreen: Config[] = [
       },
       board: [],
       chart: [],
-       gallery: [
+      gallery: [
         {
           type: 'A',
           readFrom: 'atomObj',
@@ -1232,7 +1232,7 @@ export const testConfigDustGreen: Config[] = [
   {
     deviceType: '',
     moduleName: '隔爆设施管理台账',
-   pageType: 'dust-green',
+    pageType: 'dust-green',
     moduleData: {
       header: {
         show: false,
@@ -1264,7 +1264,7 @@ export const testConfigDustGreen: Config[] = [
       chart: [],
       gallery: [],
       gallery_list: [],
-     table: [
+      table: [
         {
           type: 'C',
           readFrom: 'devGbsb',
@@ -1298,7 +1298,7 @@ export const testConfigDustGreen: Config[] = [
   {
     deviceType: 'statics',
     moduleName: '粉尘静态指标',
-      pageType: 'dust-green',
+    pageType: 'dust-green',
     moduleData: {
       header: {
         show: false,
@@ -1362,7 +1362,7 @@ export const testConfigDustGreen: Config[] = [
       position: 'bottom:15px;right:15px;',
     },
   },
-]; 
+];
 
 export const testConfigFire: Config[] = [
   {
@@ -1907,7 +1907,7 @@ export const testConfigFireGreen: Config[] = [
           },
         ],
       },
-       board: [
+      board: [
         {
           type: 'A',
           readFrom: 'fireManageInfo',
@@ -1929,7 +1929,7 @@ export const testConfigFireGreen: Config[] = [
       gallery_list: [],
       table: [],
       list: [],
-    complex_list: [
+      complex_list: [
         {
           type: 'D',
           readFrom: 'fireManageInfo.sysList',
@@ -1969,7 +1969,7 @@ export const testConfigFireGreen: Config[] = [
     moduleName: '带式输送机防灭火监控系统',
     pageType: 'fire-green',
     moduleData: {
-        header: {
+      header: {
         show: true,
         readFrom: '',
         selector: {
@@ -2056,7 +2056,7 @@ export const testConfigFireGreen: Config[] = [
     moduleName: '工作面光纤监测',
     pageType: 'fire-green',
     moduleData: {
-          header: {
+      header: {
         show: true,
         readFrom: 'devGxcw',
         selector: {
@@ -2152,7 +2152,7 @@ export const testConfigFireGreen: Config[] = [
       },
       board: [],
       chart: [],
-     
+
       gallery: [],
       gallery_list: [
         {
@@ -2206,7 +2206,7 @@ export const testConfigFireGreen: Config[] = [
         },
       ],
       table: [],
-     list: [
+      list: [
         {
           type: 'E',
           readFrom: 'arrayCount',
@@ -2235,7 +2235,6 @@ export const testConfigFireGreen: Config[] = [
               color: 'blue',
               info: '',
             },
-           
           ],
         },
       ],
@@ -2288,7 +2287,7 @@ export const testConfigFireGreen: Config[] = [
       chart: [],
       gallery: [],
       gallery_list: [],
-       table: [
+      table: [
         {
           type: 'C',
           readFrom: 'aqjkArray',
@@ -2305,7 +2304,6 @@ export const testConfigFireGreen: Config[] = [
               name: '预警级别',
               prop: 'warnLevel',
             },
-           
           ],
         },
       ],
@@ -3001,13 +2999,13 @@ export const testConfigVentNew: Config[] = [
           show: true,
           value: '运行风机:${readData.Fan1StartStatus}',
           trans: {
-            '1': '一号',
-            '0': '二号',
+            '1': '1#风机',
+            '0': '2#风机',
           },
         },
       },
       background: {
-        show: true,
+        show: false,
         type: 'video',
         link: '/video/mainFan.mp4',
       },
@@ -3015,6 +3013,10 @@ export const testConfigVentNew: Config[] = [
         direction: 'column',
         items: [
           {
+            name: 'qh_curve',
+            basis: '67%',
+          },
+          {
             name: 'board',
             basis: '30%',
           },
@@ -3028,19 +3030,15 @@ export const testConfigVentNew: Config[] = [
           items: [
             {
               label: '风量(m³/min)',
-              value: '${m3}',
+              value: '${flow_merge}',
             },
             {
-              label: '风压(Pa)',
-              value: '${Fan1StartStatus}',
-              trans: {
-                '1': '${Fan1FreqHz}',
-                '0': '${Fan1FreqHz}',
-              },
+              label: '负压(Pa)',
+              value: '${fy_merge}',
             },
             {
               label: '漏风率(%)',
-              value: '${DataPa}',
+              value: '${leakage}',
             },
           ],
         },
@@ -3051,7 +3049,13 @@ export const testConfigVentNew: Config[] = [
       gallery: [],
       complex_list: [],
       gallery_list: [],
-      preset: [],
+      preset: [
+        {
+          readFrom: '',
+          fan1Prop: ['flow_merge', 'fy_merge'],
+          fan2Prop: ['flow_merge', 'fy_merge'],
+        },
+      ],
     },
     showStyle: {
       size: 'width:380px;height:280px;',
@@ -3388,7 +3392,8 @@ export const testConfigVentNew: Config[] = [
         items: [
           {
             name: 'board',
-            basis: '100%',
+            basis: '30%',
+            pageType: 'vent_New',
           },
         ],
       },
@@ -3408,7 +3413,7 @@ export const testConfigVentNew: Config[] = [
             },
             {
               label: '等积孔',
-              value: '${dengjikong_merge}',
+              value: '${dengjikong.value}',
             },
           ],
         },

+ 2 - 2
src/views/vent/home/configurable/dustNew.vue

@@ -63,12 +63,12 @@ onMounted(() => {
   fetchConfigs('New_dust').then(() => {
     configs.value = testConfigNewDust;
     getDisHome({
-      dataList: devicesTypes.value.concat('fireAllMineWarn').join(','),
+      dataList: devicesTypes.value.concat('dustAllMineWarn').join(','),
     }).then(updateData);
   });
   setInterval(() => {
     getDisHome({
-      dataList: devicesTypes.value.concat('fireAllMineWarn').join(','),
+      dataList: devicesTypes.value.concat('dustAllMineWarn').join(','),
     }).then(updateData);
   }, 2000);
 });

+ 10 - 6
src/views/vent/monitorManager/alarmMonitor/common.api.ts

@@ -3,10 +3,10 @@ import { defHttp } from '/@/utils/http/axios';
 enum Api {
   sysTypeWarnList = '/safety/ventanalyAlarmLog/sysTypeWarn',
   sysWarn = '/safety/ventanalyAlarmLog/sysWarn',
-  getDevice = '/monitor/device',//实时数据
-  listdays='/safety/ventanalyMonitorData/listdays',//历史数据
-  getHistoryData='/monitor/history/getHistoryData',//历史数据1
-  bjlist='/safety/ventanalyAlarmLog/list'//报警历史数据
+  getDevice = '/monitor/device', //实时数据
+  listdays = '/safety/ventanalyMonitorData/listdays', //历史数据
+  getHistoryData = '/monitor/history/getHistoryData', //历史数据1
+  getHydrology = '/safety/ventanalyDeviceInfo/Hydrology', //水文数据
 }
 
 /**
@@ -37,7 +37,7 @@ export const listdays = (params) => defHttp.get({ url: Api.listdays, params }, {
  *历史数据1
  * @param params
  */
- export const getHistoryData = (params) => defHttp.post({ url: Api.getHistoryData, params });
+export const getHistoryData = (params) => defHttp.post({ url: Api.getHistoryData, params });
 
 /**
  * 报警历史数据
@@ -45,4 +45,8 @@ export const listdays = (params) => defHttp.get({ url: Api.listdays, params }, {
  */
 export const bjlist = (params) => defHttp.get({ url: Api.bjlist, params }, { joinParamsToUrl: true });
 
-
+/**
+ *水文数据
+ * @param params
+ */
+export const getHydrology = (params) => defHttp.get({ url: Api.getHydrology, params });

+ 85 - 4
src/views/vent/monitorManager/alarmMonitor/common.data.ts

@@ -1,6 +1,7 @@
 import { reactive, markRaw, defineAsyncComponent } from 'vue';
 import { getAssetURL } from '/@/utils/ui';
 import { useGlobSetting } from '/@/hooks/setting';
+import { BasicColumn } from '/@/components/Table';
 
 export const getMaxY = function (param) {
   let maxval = 0;
@@ -180,7 +181,7 @@ export function getMonitorFlag() {
     case 'sdmtjtbetmk': //布尔台
       typeFlag = '2';
       return typeFlag;
-      case 'sdmtjthlgmk': //哈拉钩
+    case 'sdmtjthlgmk': //哈拉钩
       typeFlag = '2';
       return typeFlag;
     default:
@@ -263,7 +264,6 @@ export const ventilateTopList = [
     list: [],
   },
   { id: 3, imgSrc: false, label: '', value: null, text: '--', list: [] },
- 
 ];
 //束管监测选项列表
 export const contentList = [
@@ -388,7 +388,7 @@ export const tabLists = {
 //     title: '序号',
 //     dataIndex: '',
 //     key: 'rowIndex',
-//     width: 60,
+//     width: 100,
 //     align: 'center',
 //     customRender: ({ index }) => {
 //       return `${index + 1}`;
@@ -404,7 +404,7 @@ export const tabLists = {
 //     title: '序号',
 //     dataIndex: '',
 //     key: 'rowIndex',
-//     width: 60,
+//     width: 100,
 //     align: 'center',
 //     customRender: ({ index }) => {
 //       return `${index + 1}`;
@@ -415,3 +415,84 @@ export const tabLists = {
 //   { rowIndex: 3, dataIndex: 'warnLevel_str', width: 80, title: '状态', type: '1', align: 'center' },
 //   { rowIndex: 4, dataIndex: 'readTime', title: '时间', type: '1', align: 'center' },
 // ];
+
+export const columns: BasicColumn[] = [
+  {
+    title: '序号',
+    width: 100,
+    align: 'center',
+    customRender: ({ index }) => {
+      return `${index + 1}`;
+    },
+  },
+  {
+    title: '采空区名称',
+    dataIndex: 'reserviorName',
+    key: 'reserviorName',
+    width: 100,
+    align: 'center',
+  },
+  {
+    title: '坝体Id',
+    dataIndex: 'damBodyId',
+    key: 'damBodyId',
+    width: 100,
+    align: 'center',
+  },
+  {
+    title: '坝体名称',
+    dataIndex: 'dambodyName',
+    key: 'dambodyName',
+    width: 100,
+    align: 'center',
+  },
+  {
+    title: '测点类别',
+    dataIndex: 'pointType',
+    key: 'pointType',
+    width: 100,
+    align: 'center',
+  },
+  {
+    title: '测点名称',
+    dataIndex: 'pointTypeName',
+    key: 'pointTypeName',
+    width: 100,
+    align: 'center',
+  },
+  {
+    title: '测点Id',
+    dataIndex: 'propertyId',
+    key: 'propertyId',
+    width: 100,
+    align: 'center',
+  },
+  {
+    title: '状态',
+    dataIndex: 's',
+    key: 's',
+    width: 100,
+    align: 'center',
+  },
+  {
+    title: '当前值',
+    dataIndex: 'v',
+    key: 'v',
+    width: 100,
+    align: 'center',
+  },
+  {
+    title: '单位',
+    dataIndex: 'pointUnit',
+    key: 'pointUnit',
+    width: 100,
+    align: 'center',
+  },
+  {
+    title: '采集时间',
+    dataIndex: 't',
+    key: 't',
+    width: 100,
+    align: 'center',
+  },
+];

+ 142 - 105
src/views/vent/monitorManager/alarmMonitor/index.vue

@@ -54,8 +54,15 @@
             </div>
           </div>
           <!-- <div ref="alarmCounts" style="height: 225px" id="alarmCounts"></div> -->
-          <BarSingle :xAxisData="xAxisData" :dataSource="windData.levels" height="225px" :chartsColumns="chartsColumns"
-            :option="option" :color="colors" :fontColor="fontColor" />
+          <BarSingle
+            :xAxisData="xAxisData"
+            :dataSource="windData.levels"
+            height="225px"
+            :chartsColumns="chartsColumns"
+            :option="option"
+            :color="colors"
+            :fontColor="fontColor"
+          />
         </template>
       </ventBox1>
       <ventBox1 class="vent-margin-t-10">
@@ -100,21 +107,28 @@
       </div>
       <div class="animation-box">
         <canvas class="rain"></canvas>
-        <div class="bottom" :class="{
-          bottom1: centerData.levels == 101 || centerData.levels == 0 || centerData.levels == 10000,
-          bottom2: centerData.levels == 102,
-          bottom3: centerData.levels == 103,
-          bottom4: centerData.levels == 104,
-          bottom5: centerData.levels == 201,
-        }">
+        <div
+          class="bottom"
+          :class="{
+            bottom1: centerData.levels == 101 || centerData.levels == 0 || centerData.levels == 10000,
+            bottom2: centerData.levels == 102,
+            bottom3: centerData.levels == 103,
+            bottom4: centerData.levels == 104,
+            bottom5: centerData.levels == 201,
+          }"
+        >
           <div class="animation1">
             <div class="ball"></div>
-            <svg xmlns="http://www.w3.org/2000/svg" width="375.334" height="77.559" viewBox="0 0 375.334 77.559"
-              style="opacity: 0.5">
+            <svg xmlns="http://www.w3.org/2000/svg" width="375.334" height="77.559" viewBox="0 0 375.334 77.559" style="opacity: 0.5">
               <g id="组_14135" data-name="组 14135" transform="translate(-755.058 -139.886)">
-                <path id="椭圆_2595" data-name="椭圆 2595"
+                <path
+                  id="椭圆_2595"
+                  data-name="椭圆 2595"
                   d="M186.917-.75c12.711,0,25.415.263,37.757.783,12.03.506,23.863,1.262,35.171,2.245,11.1.966,21.816,2.161,31.835,3.553,9.928,1.379,19.265,2.963,27.751,4.709s16.2,3.668,22.92,5.713A120.653,120.653,0,0,1,359.7,22.825a40.842,40.842,0,0,1,11.018,7.3c2.568,2.581,3.87,5.239,3.87,7.9s-1.3,5.322-3.87,7.9a40.842,40.842,0,0,1-11.018,7.3,120.653,120.653,0,0,1-17.345,6.572c-6.716,2.044-14.428,3.966-22.92,5.713s-17.823,3.329-27.751,4.709c-10.02,1.392-20.731,2.588-31.835,3.553-11.308.984-23.142,1.739-35.171,2.245-12.343.519-25.046.783-37.757.783s-25.415-.263-37.757-.783c-12.03-.506-23.863-1.262-35.171-2.245-11.1-.966-21.816-2.161-31.835-3.553-9.928-1.379-19.265-2.963-27.751-4.709s-16.2-3.668-22.92-5.713a120.652,120.652,0,0,1-17.345-6.572,40.841,40.841,0,0,1-11.018-7.3c-2.568-2.581-3.87-5.239-3.87-7.9s1.3-5.322,3.87-7.9a40.842,40.842,0,0,1,11.018-7.3,120.651,120.651,0,0,1,17.345-6.572C38.2,14.208,45.91,12.286,54.4,10.54S72.225,7.211,82.153,5.831c10.02-1.392,20.731-2.588,31.835-3.553C125.3,1.294,137.13.539,149.16.033,161.5-.487,174.206-.75,186.917-.75Zm0,76.98c49.941,0,96.885-4,132.186-11.257,17.134-3.523,30.578-7.623,39.96-12.184,9.642-4.688,14.53-9.653,14.53-14.759s-4.889-10.072-14.53-14.759c-9.382-4.561-22.826-8.66-39.96-12.184C283.8,3.827,236.858-.171,186.917-.171s-96.885,4-132.186,11.257C37.6,14.61,24.153,18.709,14.771,23.27,5.129,27.958.241,32.923.241,38.029S5.129,48.1,14.771,52.789c9.382,4.561,22.826,8.661,39.96,12.184C90.032,72.232,136.976,76.23,186.917,76.23Z"
-                  transform="translate(755.808 140.636)" fill="#28a6ff" opacity="0.7" />
+                  transform="translate(755.808 140.636)"
+                  fill="#28a6ff"
+                  opacity="0.7"
+                />
               </g>
             </svg>
           </div>
@@ -122,9 +136,14 @@
             <div class="ball1"></div>
             <svg xmlns="http://www.w3.org/2000/svg" width="414.878" height="91.7" viewBox="0 0 414.878 91.7">
               <g id="组_14136" data-name="组 14136" transform="translate(-721.822 -158.273)">
-                <path id="椭圆_2595" data-name="椭圆 2595"
+                <path
+                  id="椭圆_2595"
+                  data-name="椭圆 2595"
                   d="M206.689-.75c14.05,0,28.092.311,41.735.925,13.3.6,26.377,1.492,38.877,2.655,12.275,1.142,24.114,2.555,35.189,4.2,10.974,1.631,21.294,3.5,30.674,5.567s17.91,4.337,25.335,6.754a128.134,128.134,0,0,1,19.172,7.771,45.082,45.082,0,0,1,12.178,8.633c2.838,3.051,4.278,6.195,4.278,9.344s-1.439,6.293-4.278,9.344a45.082,45.082,0,0,1-12.178,8.633A128.134,128.134,0,0,1,378.5,70.847c-7.424,2.417-15.948,4.69-25.335,6.754s-19.7,3.936-30.674,5.567c-11.075,1.646-22.915,3.059-35.189,4.2-12.5,1.163-25.58,2.056-38.877,2.655-13.643.614-27.685.925-41.735.925s-28.092-.311-41.735-.925c-13.3-.6-26.377-1.492-38.877-2.655-12.275-1.142-24.114-2.555-35.189-4.2-10.974-1.631-21.294-3.5-30.674-5.567S42.3,73.265,34.879,70.847a128.133,128.133,0,0,1-19.173-7.771A45.082,45.082,0,0,1,3.528,54.444C.689,51.393-.75,48.249-.75,45.1s1.439-6.293,4.278-9.344a45.083,45.083,0,0,1,12.178-8.633,128.133,128.133,0,0,1,19.173-7.771c7.424-2.417,15.948-4.69,25.335-6.754s19.7-3.936,30.674-5.567c11.075-1.646,22.915-3.059,35.189-4.2,12.5-1.163,25.58-2.056,38.877-2.655C178.6-.439,192.639-.75,206.689-.75Zm0,91.015c55.2,0,107.093-4.727,146.113-13.31,18.939-4.166,33.8-9.012,44.17-14.405,10.657-5.542,16.061-11.413,16.061-17.45s-5.4-11.908-16.061-17.45c-10.37-5.393-25.231-10.24-44.17-14.405C313.782,4.662,261.892-.065,206.689-.065S99.6,4.662,60.576,13.244c-18.939,4.166-33.8,9.012-44.17,14.405C5.749,33.192.345,39.063.345,45.1s5.4,11.908,16.061,17.45c10.37,5.393,25.231,10.24,44.17,14.405C99.6,85.538,151.487,90.265,206.689,90.265Z"
-                  transform="translate(722.572 159.023)" fill="#3dd8ff" opacity="0.5" />
+                  transform="translate(722.572 159.023)"
+                  fill="#3dd8ff"
+                  opacity="0.5"
+                />
               </g>
             </svg>
           </div>
@@ -133,21 +152,19 @@
               centerData.levels == 0
                 ? '低风险'
                 : centerData.levels == 101
-                  ? '低风险'
-                  : centerData.levels == 102
-                    ? '一般风险'
-                    : centerData.levels == 103
-                      ? '较大风险'
-                      : centerData.levels == 104
-                        ? '重大风险'
-                        : centerData.levels == 201
-                          ? '报警'
-                          : '未连接'
+                ? '低风险'
+                : centerData.levels == 102
+                ? '一般风险'
+                : centerData.levels == 103
+                ? '较大风险'
+                : centerData.levels == 104
+                ? '重大风险'
+                : centerData.levels == 201
+                ? '报警'
+                : '未连接'
             }}</div>
 
-            <div class="text2">{{ centerData.riskLevel !== undefined && centerData.riskLevel !== null ?
-              centerData.riskLevel
-              : '-' }}</div>
+            <div class="text2">{{ centerData.riskLevel !== undefined && centerData.riskLevel !== null ? centerData.riskLevel : '-' }}</div>
             <div class="text3">风险得分</div>
           </div>
           <div class="icon-animation" @click="warnGradeClick"></div>
@@ -164,16 +181,16 @@
                 centerData.fire == 0
                   ? '低风险'
                   : centerData.fire == 101
-                    ? '低风险'
-                    : centerData.fire == 102
-                      ? '一般风险'
-                      : centerData.fire == 103
-                        ? '较大风险'
-                        : centerData.fire == 104
-                          ? '重大风险'
-                          : centerData.fire == 201
-                            ? '报警'
-                            : centerData.fire
+                  ? '低风险'
+                  : centerData.fire == 102
+                  ? '一般风险'
+                  : centerData.fire == 103
+                  ? '较大风险'
+                  : centerData.fire == 104
+                  ? '重大风险'
+                  : centerData.fire == 201
+                  ? '报警'
+                  : centerData.fire
               }}</span>
             </div>
           </div>
@@ -187,16 +204,16 @@
                 centerData.sb == 0
                   ? '低风险'
                   : centerData.sb == 101
-                    ? '低风险'
-                    : centerData.sb == 102
-                      ? '一般风险'
-                      : centerData.sb == 103
-                        ? '较大风险'
-                        : centerData.sb == 104
-                          ? '重大风险'
-                          : centerData.sb == 201
-                            ? '报警'
-                            : centerData.sb
+                  ? '低风险'
+                  : centerData.sb == 102
+                  ? '一般风险'
+                  : centerData.sb == 103
+                  ? '较大风险'
+                  : centerData.sb == 104
+                  ? '重大风险'
+                  : centerData.sb == 201
+                  ? '报警'
+                  : centerData.sb
               }}</span>
             </div>
           </div>
@@ -210,16 +227,16 @@
                 centerData.fc == 0
                   ? '低风险'
                   : centerData.fc == 101
-                    ? '低风险'
-                    : centerData.fc == 102
-                      ? '一般风险'
-                      : centerData.fc == 103
-                        ? '较大风险'
-                        : centerData.fc == 104
-                          ? '重大风险'
-                          : centerData.fc == 201
-                            ? '报警'
-                            : centerData.fc
+                  ? '低风险'
+                  : centerData.fc == 102
+                  ? '一般风险'
+                  : centerData.fc == 103
+                  ? '较大风险'
+                  : centerData.fc == 104
+                  ? '重大风险'
+                  : centerData.fc == 201
+                  ? '报警'
+                  : centerData.fc
               }}</span>
             </div>
           </div>
@@ -233,16 +250,16 @@
                 centerData.ws == 0
                   ? '低风险'
                   : centerData.ws == 101
-                    ? '低风险'
-                    : centerData.ws == 102
-                      ? '一般风险'
-                      : centerData.ws == 103
-                        ? '较大风险'
-                        : centerData.ws == 104
-                          ? '重大风险'
-                          : centerData.ws == 201
-                            ? '报警'
-                            : centerData.ws
+                  ? '低风险'
+                  : centerData.ws == 102
+                  ? '一般风险'
+                  : centerData.ws == 103
+                  ? '较大风险'
+                  : centerData.ws == 104
+                  ? '重大风险'
+                  : centerData.ws == 201
+                  ? '报警'
+                  : centerData.ws
               }}</span>
               <div class="">
                 <span class="title">矿井瓦斯等级鉴定</span>
@@ -261,16 +278,16 @@
                 centerData.tf == 0
                   ? '低风险'
                   : centerData.tf == 101
-                    ? '低风险'
-                    : centerData.tf == 102
-                      ? '一般风险'
-                      : centerData.tf == 103
-                        ? '较大风险'
-                        : centerData.tf == 104
-                          ? '重大风险'
-                          : centerData.tf == 201
-                            ? '报警'
-                            : centerData.tf
+                  ? '低风险'
+                  : centerData.tf == 102
+                  ? '一般风险'
+                  : centerData.tf == 103
+                  ? '较大风险'
+                  : centerData.tf == 104
+                  ? '重大风险'
+                  : centerData.tf == 201
+                  ? '报警'
+                  : centerData.tf
               }}</span>
             </div>
           </div>
@@ -303,29 +320,36 @@
               :single-waitTime="3000" :limit-scroll-num="fireMonitor1.length" class="seamless-warp1">
               <div class="data-box" v-for="(item, index) in fireMonitor1" :key="index">
                 <div class="box-item">
-                  <div :class="{
-                    value1: item.warnLevel == '绿色预警',
-                    value2: item.warnLevel == '黄色预警',
-                    value3: item.warnLevel == '红色预警',
-                  }">{{ item.value1 ? item.value1 : '--' }}</div>
+                  <div
+                    :class="{
+                      value1: item.warnLevel == '绿色预警',
+                      value2: item.warnLevel == '黄色预警',
+                      value3: item.warnLevel == '红色预警',
+                    }"
+                    >{{ item.value1 ? item.value1 : '--' }}</div
+                  >
                   <div class="title">监测位置</div>
                 </div>
 
                 <div class="box-item">
-                  <div :class="{
-                    value1: item.warnLevel == '绿色预警',
-                    value2: item.warnLevel == '黄色预警',
-                    value3: item.warnLevel == '红色预警',
-                  }">{{ item.warnLevel || '-' }}
+                  <div
+                    :class="{
+                      value1: item.warnLevel == '绿色预警',
+                      value2: item.warnLevel == '黄色预警',
+                      value3: item.warnLevel == '红色预警',
+                    }"
+                    >{{ item.warnLevel || '-' }}
                   </div>
                   <div class="title">预警等级</div>
                 </div>
                 <div class="box-item1">
-                  <div :class="{
-                    value1: item.warnLevel == '绿色预警',
-                    value2: item.warnLevel == '黄色预警',
-                    value3: item.warnLevel == '红色预警',
-                  }">{{ item.smokeJd || '-' }}
+                  <div
+                    :class="{
+                      value1: item.warnLevel == '绿色预警',
+                      value2: item.warnLevel == '黄色预警',
+                      value3: item.warnLevel == '红色预警',
+                    }"
+                    >{{ item.smokeJd || '-' }}
                   </div>
                   <div class="title">煤自燃阶段</div>
                 </div>
@@ -392,8 +416,15 @@
             </div>
           </div> -->
 
-          <BarSingle :xAxisData="xAxisData" :dataSource="dustData.levels" height="332px" :chartsColumns="chartsColumns"
-            :option="option" :color="colors" :fontColor="fontColor" />
+          <BarSingle
+            :xAxisData="xAxisData"
+            :dataSource="dustData.levels"
+            height="332px"
+            :chartsColumns="chartsColumns"
+            :option="option"
+            :color="colors"
+            :fontColor="fontColor"
+          />
         </template>
       </ventBox1>
     </div>
@@ -489,6 +520,10 @@ function showModal(data) {
     case 'dust':
       router.push('/dust/warn/home');
       break;
+    case 'waterLevel':
+      console.log('waterLevel');
+      router.push('/warn/waterLevel/home');
+      break;
     case 'gas':
       router.push('/gas/warn/home');
       break;
@@ -552,12 +587,12 @@ async function getList() {
     Levels.level > 0 && Levels.level <= 1
       ? 101
       : Levels.level > 1 && Levels.level <= 2
-        ? 102
-        : Levels.level > 2 && Levels.level <= 3
-          ? 103
-          : Levels.level > 3 && Levels.level <= 4
-            ? 104
-            : 0;
+      ? 102
+      : Levels.level > 2 && Levels.level <= 3
+      ? 103
+      : Levels.level > 3 && Levels.level <= 4
+      ? 104
+      : 0;
 
   Object.keys(iconsMonitor).forEach((el) => {
     if (res.info.devicekindInfo[el]) {
@@ -1361,8 +1396,9 @@ onUnmounted(() => {
             background: radial-gradient(closest-side, #e1f7f8, #e1f7f800);
             border-radius: 6px;
             background-size: cover;
-            offset-path: path('M186.917-.75c12.711,0,25.415.263,37.757.783,12.03.506,23.863,1.262,35.171,2.245,11.1.966,21.816,2.161,31.835,3.553,9.928,1.379,19.265,2.963,27.751,4.709s16.2,3.668,22.92,5.713A120.653,120.653,0,0,1,359.7,22.825a40.842,40.842,0,0,1,11.018,7.3c2.568,2.581,3.87,5.239,3.87,7.9s-1.3,5.322-3.87,7.9a40.842,40.842,0,0,1-11.018,7.3,120.653,120.653,0,0,1-17.345,6.572c-6.716,2.044-14.428,3.966-22.92,5.713s-17.823,3.329-27.751,4.709c-10.02,1.392-20.731,2.588-31.835,3.553-11.308.984-23.142,1.739-35.171,2.245-12.343.519-25.046.783-37.757.783s-25.415-.263-37.757-.783c-12.03-.506-23.863-1.262-35.171-2.245-11.1-.966-21.816-2.161-31.835-3.553-9.928-1.379-19.265-2.963-27.751-4.709s-16.2-3.668-22.92-5.713a120.652,120.652,0,0,1-17.345-6.572,40.841,40.841,0,0,1-11.018-7.3c-2.568-2.581-3.87-5.239-3.87-7.9s1.3-5.322,3.87-7.9a40.842,40.842,0,0,1,11.018-7.3,120.651,120.651,0,0,1,17.345-6.572C38.2,14.208,45.91,12.286,54.4,10.54S72.225,7.211,82.153,5.831c10.02-1.392,20.731-2.588,31.835-3.553C125.3,1.294,137.13.539,149.16.033,161.5-.487,174.206-.75,186.917-.75Zm0,76.98c49.941,0,96.885-4,132.186-11.257,17.134-3.523,30.578-7.623,39.96-12.184,9.642-4.688,14.53-9.653,14.53-14.759s-4.889-10.072-14.53-14.759c-9.382-4.561-22.826-8.66-39.96-12.184C283.8,3.827,236.858-.171,186.917-.171s-96.885,4-132.186,11.257C37.6,14.61,24.153,18.709,14.771,23.27,5.129,27.958.241,32.923.241,38.029S5.129,48.1,14.771,52.789c9.382,4.561,22.826,8.661,39.96,12.184C90.032,72.232,136.976,76.23,186.917,76.23Z'
-              );
+            offset-path: path(
+              'M186.917-.75c12.711,0,25.415.263,37.757.783,12.03.506,23.863,1.262,35.171,2.245,11.1.966,21.816,2.161,31.835,3.553,9.928,1.379,19.265,2.963,27.751,4.709s16.2,3.668,22.92,5.713A120.653,120.653,0,0,1,359.7,22.825a40.842,40.842,0,0,1,11.018,7.3c2.568,2.581,3.87,5.239,3.87,7.9s-1.3,5.322-3.87,7.9a40.842,40.842,0,0,1-11.018,7.3,120.653,120.653,0,0,1-17.345,6.572c-6.716,2.044-14.428,3.966-22.92,5.713s-17.823,3.329-27.751,4.709c-10.02,1.392-20.731,2.588-31.835,3.553-11.308.984-23.142,1.739-35.171,2.245-12.343.519-25.046.783-37.757.783s-25.415-.263-37.757-.783c-12.03-.506-23.863-1.262-35.171-2.245-11.1-.966-21.816-2.161-31.835-3.553-9.928-1.379-19.265-2.963-27.751-4.709s-16.2-3.668-22.92-5.713a120.652,120.652,0,0,1-17.345-6.572,40.841,40.841,0,0,1-11.018-7.3c-2.568-2.581-3.87-5.239-3.87-7.9s1.3-5.322,3.87-7.9a40.842,40.842,0,0,1,11.018-7.3,120.651,120.651,0,0,1,17.345-6.572C38.2,14.208,45.91,12.286,54.4,10.54S72.225,7.211,82.153,5.831c10.02-1.392,20.731-2.588,31.835-3.553C125.3,1.294,137.13.539,149.16.033,161.5-.487,174.206-.75,186.917-.75Zm0,76.98c49.941,0,96.885-4,132.186-11.257,17.134-3.523,30.578-7.623,39.96-12.184,9.642-4.688,14.53-9.653,14.53-14.759s-4.889-10.072-14.53-14.759c-9.382-4.561-22.826-8.66-39.96-12.184C283.8,3.827,236.858-.171,186.917-.171s-96.885,4-132.186,11.257C37.6,14.61,24.153,18.709,14.771,23.27,5.129,27.958.241,32.923.241,38.029S5.129,48.1,14.771,52.789c9.382,4.561,22.826,8.661,39.96,12.184C90.032,72.232,136.976,76.23,186.917,76.23Z'
+            );
             animation: 10s linear 0s infinite alternate ball;
           }
         }
@@ -1383,8 +1419,9 @@ onUnmounted(() => {
             background: radial-gradient(closest-side, #e1f7f8, #e1f7f800);
             border-radius: 6px;
             background-size: cover;
-            offset-path: path('M206.689-.75c14.05,0,28.092.311,41.735.925,13.3.6,26.377,1.492,38.877,2.655,12.275,1.142,24.114,2.555,35.189,4.2,10.974,1.631,21.294,3.5,30.674,5.567s17.91,4.337,25.335,6.754a128.134,128.134,0,0,1,19.172,7.771,45.082,45.082,0,0,1,12.178,8.633c2.838,3.051,4.278,6.195,4.278,9.344s-1.439,6.293-4.278,9.344a45.082,45.082,0,0,1-12.178,8.633A128.134,128.134,0,0,1,378.5,70.847c-7.424,2.417-15.948,4.69-25.335,6.754s-19.7,3.936-30.674,5.567c-11.075,1.646-22.915,3.059-35.189,4.2-12.5,1.163-25.58,2.056-38.877,2.655-13.643.614-27.685.925-41.735.925s-28.092-.311-41.735-.925c-13.3-.6-26.377-1.492-38.877-2.655-12.275-1.142-24.114-2.555-35.189-4.2-10.974-1.631-21.294-3.5-30.674-5.567S42.3,73.265,34.879,70.847a128.133,128.133,0,0,1-19.173-7.771A45.082,45.082,0,0,1,3.528,54.444C.689,51.393-.75,48.249-.75,45.1s1.439-6.293,4.278-9.344a45.083,45.083,0,0,1,12.178-8.633,128.133,128.133,0,0,1,19.173-7.771c7.424-2.417,15.948-4.69,25.335-6.754s19.7-3.936,30.674-5.567c11.075-1.646,22.915-3.059,35.189-4.2,12.5-1.163,25.58-2.056,38.877-2.655C178.6-.439,192.639-.75,206.689-.75Zm0,91.015c55.2,0,107.093-4.727,146.113-13.31,18.939-4.166,33.8-9.012,44.17-14.405,10.657-5.542,16.061-11.413,16.061-17.45s-5.4-11.908-16.061-17.45c-10.37-5.393-25.231-10.24-44.17-14.405C313.782,4.662,261.892-.065,206.689-.065S99.6,4.662,60.576,13.244c-18.939,4.166-33.8,9.012-44.17,14.405C5.749,33.192.345,39.063.345,45.1s5.4,11.908,16.061,17.45c10.37,5.393,25.231,10.24,44.17,14.405C99.6,85.538,151.487,90.265,206.689,90.265Z'
-              );
+            offset-path: path(
+              'M206.689-.75c14.05,0,28.092.311,41.735.925,13.3.6,26.377,1.492,38.877,2.655,12.275,1.142,24.114,2.555,35.189,4.2,10.974,1.631,21.294,3.5,30.674,5.567s17.91,4.337,25.335,6.754a128.134,128.134,0,0,1,19.172,7.771,45.082,45.082,0,0,1,12.178,8.633c2.838,3.051,4.278,6.195,4.278,9.344s-1.439,6.293-4.278,9.344a45.082,45.082,0,0,1-12.178,8.633A128.134,128.134,0,0,1,378.5,70.847c-7.424,2.417-15.948,4.69-25.335,6.754s-19.7,3.936-30.674,5.567c-11.075,1.646-22.915,3.059-35.189,4.2-12.5,1.163-25.58,2.056-38.877,2.655-13.643.614-27.685.925-41.735.925s-28.092-.311-41.735-.925c-13.3-.6-26.377-1.492-38.877-2.655-12.275-1.142-24.114-2.555-35.189-4.2-10.974-1.631-21.294-3.5-30.674-5.567S42.3,73.265,34.879,70.847a128.133,128.133,0,0,1-19.173-7.771A45.082,45.082,0,0,1,3.528,54.444C.689,51.393-.75,48.249-.75,45.1s1.439-6.293,4.278-9.344a45.083,45.083,0,0,1,12.178-8.633,128.133,128.133,0,0,1,19.173-7.771c7.424-2.417,15.948-4.69,25.335-6.754s19.7-3.936,30.674-5.567c11.075-1.646,22.915-3.059,35.189-4.2,12.5-1.163,25.58-2.056,38.877-2.655C178.6-.439,192.639-.75,206.689-.75Zm0,91.015c55.2,0,107.093-4.727,146.113-13.31,18.939-4.166,33.8-9.012,44.17-14.405,10.657-5.542,16.061-11.413,16.061-17.45s-5.4-11.908-16.061-17.45c-10.37-5.393-25.231-10.24-44.17-14.405C313.782,4.662,261.892-.065,206.689-.065S99.6,4.662,60.576,13.244c-18.939,4.166-33.8,9.012-44.17,14.405C5.749,33.192.345,39.063.345,45.1s5.4,11.908,16.061,17.45c10.37,5.393,25.231,10.24,44.17,14.405C99.6,85.538,151.487,90.265,206.689,90.265Z'
+            );
             animation: 10s linear 0s infinite alternate ball1;
           }
         }

+ 109 - 0
src/views/vent/monitorManager/alarmMonitor/warn/waterLevel.vue

@@ -0,0 +1,109 @@
+<template>
+  <customHeader> 水文监测 </customHeader>
+  <div class="gasWarn">
+    <a-button
+      v-if="!hasPermission('waterLevel:return')"
+      preIcon="ant-design:rollback-outlined"
+      type="text"
+      size="small"
+      style="position: absolute; left: 15px; top: 15px; color: #fff"
+      @click="getBack"
+    >
+      返回
+    </a-button>
+    <div class="gas-content">
+      <a-table
+        :height="300"
+        :columns="columns"
+        :data-source="tableData"
+        size="large"
+        :pagination="pagination"
+        class="tableW"
+        @change="pageChange"
+        :scroll="{ y: 700 }"
+      ></a-table>
+    </div>
+  </div>
+</template>
+
+<script setup lang="ts">
+import { ref, reactive, onMounted, onUnmounted, computed } from 'vue';
+import CustomHeader from '/@/components/vent/customHeader.vue';
+import { getHydrology } from '../common.api';
+import { usePermission } from '/@/hooks/web/usePermission';
+import { useRouter } from 'vue-router';
+import { columns } from '../common.data';
+const { hasPermission } = usePermission();
+const router = useRouter();
+const tableData = ref([]);
+
+//分页切换
+const pageChange = (val) => {
+  console.log(val, 'val');
+  pagination.current = val.current;
+  pagination.pageSize = val.pageSize;
+  getListData();
+};
+const pagination = reactive({
+  current: 1, // 当前页码
+  pageSize: 20, // 每页显示条数
+  total: 0, // 总条目数,后端返回
+  showTotal: (total) => `共 ${total} 条`, // 分页右下角显示信息
+});
+//返回首页
+function getBack() {
+  router.push('/monitorChannel/monitor-alarm-home');
+}
+async function getListData() {
+  var params = {
+    pageIndex: pagination.current,
+    pageSize: pagination.pageSize,
+  };
+  const res = await getHydrology({ ...params });
+  tableData.value = res.data;
+  pagination.total = res.count;
+}
+onMounted(() => {
+  getListData();
+});
+onUnmounted(() => {});
+</script>
+
+<style lang="less" scoped>
+@import '/@/design/theme.less';
+
+@{theme-deepblue} {
+  .gasWarn {
+    --image-no-choice: url('/@/assets/images/themify/deepblue/fire/no-choice.png');
+    --image-choice: url('/@/assets/images/themify/deepblue/fire/choice.png');
+    --image-border: url('/@/assets/images/themify/deepblue/fire/border.png');
+    --image-bj1: url('/@/assets/images/themify/deepblue/fire/bj1.png');
+    --image-top-area: url('/@/assets/images/themify/deepblue/fire/top-area.png');
+  }
+}
+
+.gasWarn {
+  --image-no-choice: url('/@/assets/images/fire/no-choice.png');
+  --image-choice: url('/@/assets/images/fire/choice.png');
+  --image-border: url('/@/assets/images/fire/border.png');
+  --image-bj1: url('/@/assets/images/fire/bj1.png');
+  --image-top-area: url('/@/assets/images/fire/top-area.png');
+  width: 100%;
+  height: 100%;
+  padding: 80px 10px 15px 10px;
+  box-sizing: border-box;
+  display: flex;
+  justify-content: space-between;
+
+  .gas-content {
+    position: relative;
+    width: 100%;
+    height: 100%;
+    margin-left: 10px;
+    padding: 15px;
+    background: var(--image-border) no-repeat;
+    background-size: 100% 100%;
+    box-sizing: border-box;
+  }
+}
+</style>

+ 1 - 1
src/views/vent/monitorManager/comment/comment.data.ts

@@ -723,7 +723,7 @@ export const bundleSpycolumns: BasicColumn[] = [
     align: 'center',
   },
   {
-    title: 'C2H6(%)',
+    title: 'C₂H₆(%)',
     dataIndex: 'c2h6_ave',
     key: 'c2h6_ave',
     width: 100,

+ 27 - 0
src/views/vent/monitorManager/zaihai/index.vue

@@ -0,0 +1,27 @@
+<template>
+  <div class="zh-page-box">
+    <img class="img-box" :src="imgSrc" alt="" />
+  </div>
+</template>
+<script lang="ts" name="zaihai" setup>
+  import { onMounted, ref, unref } from 'vue';
+  import { useRouter } from 'vue-router';
+  const { currentRoute } = useRouter();
+  const imgSrc = ref('');
+  onMounted(() => {
+    const route = unref(currentRoute);
+    const nameArr = (<string>route.path).split('/')
+    const pageType = nameArr[nameArr.length -1];
+    imgSrc.value = `/zaihai/${pageType}.jpg`;
+  });
+</script>
+<style lang="less" scoped>
+  .zh-page-box {
+    width: 100%;
+    height: 780px;
+    .img-box {
+      width: 100%;
+      height: 960px;
+    }
+  }
+</style>