Jelajahi Sumber

1. 预警灾害通风、粉尘、火灾等页面样式优化
2. 测风装置样式优化
3. 风窗自主控风调控根据业务调整,调整界面控制及显示逻辑

hongrunxia 1 bulan lalu
induk
melakukan
a7a138c336

+ 2 - 1
public/js/config.js

@@ -16,5 +16,6 @@ const VENT_PARAM = {
   isoOpenSso: 'false',
   isoOpenSso: 'false',
   modalText: '', //国家能源集团沙吉海煤矿 //三维模型电子屏底部文字配置
   modalText: '', //国家能源集团沙吉海煤矿 //三维模型电子屏底部文字配置
   productionCrlPlatformUrl: '', // 神东要求主扇的控制功能改回跳转至生产管控平台,这里填写上生产管控地址后(例如填写:"https://www.baidu.com/"),就可以跳转了
   productionCrlPlatformUrl: '', // 神东要求主扇的控制功能改回跳转至生产管控平台,这里填写上生产管控地址后(例如填写:"https://www.baidu.com/"),就可以跳转了
-  safetyCrlPlatformUrl: '' // 神东要求安全监控跳转至安全监控管控平台,这里填写上生产管控地址后(例如填写:"https://www.baidu.com/"),就可以跳转了
+  safetyCrlPlatformUrl: '', // 神东要求安全监控跳转至安全监控管控平台,这里填写上生产管控地址后(例如填写:"https://www.baidu.com/"),就可以跳转了
+  gasControlMock : true // 项目关于瓦斯自主调控,是否模拟演示, true: 真实调控; false 模拟调控
 }
 }

+ 0 - 1
src/views/dashboard/Analysis/homePage/network.data.ts

@@ -215,4 +215,3 @@ export const warningData = () => {
     },
     },
   ];
   ];
 };
 };
-

+ 6 - 3
src/views/vent/deviceManager/comment/warningTabel/warning.data.ts

@@ -191,8 +191,11 @@ export const workFaceWarningColumns: BasicColumn[] = [
   },
   },
   {
   {
     title: '预警等级',
     title: '预警等级',
-    dataIndex: 'alarmLevel_dictText',
+    dataIndex: 'alarmLevel',
     align: 'center',
     align: 'center',
+    customRender: ({ record }) => {
+      return render.renderDict(record.alarmLevel, 'leveltype');
+    },
   },
   },
   {
   {
     title: '所属系统',
     title: '所属系统',
@@ -239,7 +242,7 @@ export const workFaceWarningFormSchemas: FormSchema[] = [
     label: '预警等级',
     label: '预警等级',
     field: 'alarmLevel',
     field: 'alarmLevel',
     component: 'JDictSelectTag',
     component: 'JDictSelectTag',
-    componentProps: { dictCode: 'leveltype' },
+    componentProps: { dictCode: 'leveltype', stringToNumber: true },
     required: true,
     required: true,
   },
   },
   {
   {
@@ -258,7 +261,7 @@ export const manageWarningPointColumns: BasicColumn[] = [
   },
   },
   {
   {
     title: '报警条目',
     title: '报警条目',
-    dataIndex: 'alarmName',
+    dataIndex: 'alarmName_dictText',
     align: 'center',
     align: 'center',
   },
   },
   {
   {

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

@@ -27,7 +27,7 @@ export const centerAreaListB1 = [
 //内外因火灾菜单列表
 //内外因火灾菜单列表
 export const typeMenuList = [{ name: '内因火灾' }, { name: '外因火灾' }, { name: '火灾指标' }];
 export const typeMenuList = [{ name: '内因火灾' }, { name: '外因火灾' }, { name: '火灾指标' }];
 //通风选项菜单列表
 //通风选项菜单列表
-export const typeMenuListTf = [{ name: '通风监测' },{ name: '巷道阻力分析' }];
+export const typeMenuListTf = [{ name: '通风监测' }, { name: '巷道阻力分析' }];
 //瓦斯监测菜单列表
 //瓦斯监测菜单列表
 export function getMonitorComponent() {
 export function getMonitorComponent() {
   const { sysOrgCode } = useGlobSetting();
   const { sysOrgCode } = useGlobSetting();

+ 6 - 6
src/views/vent/monitorManager/alarmMonitor/common/closeWall.vue

@@ -388,9 +388,9 @@
     mbList[0].nd = data.readData.o2val || '--';
     mbList[0].nd = data.readData.o2val || '--';
     mbList[1].nd = data.readData.coval || '--';
     mbList[1].nd = data.readData.coval || '--';
     mbList[2].nd = data.readData.co2val || '--';
     mbList[2].nd = data.readData.co2val || '--';
-    mbList[3].nd = data.readData.chval || '--';
-    mbList[4].nd = data.readData.ch2val || '--';
-    mbList[5].nd = data.readData.gasval || '--';
+    mbList[3].nd = data.readData.gasval || '--';
+    mbList[4].nd = data.readData.chval || '--';
+    mbList[5].nd = data.readData.ch2val || '--';
     mbList.forEach((el) => {
     mbList.forEach((el) => {
       el.time1 = data ? data.readTime.substring(0, data.readTime.lastIndexOf(':')) : '--';
       el.time1 = data ? data.readTime.substring(0, data.readTime.lastIndexOf(':')) : '--';
       el.address = data ? data.strinstallpos : '--';
       el.address = data ? data.strinstallpos : '--';
@@ -469,9 +469,9 @@
         mbList[0].nd = dataVal.readData.o2val || '--';
         mbList[0].nd = dataVal.readData.o2val || '--';
         mbList[1].nd = dataVal.readData.coval || '--';
         mbList[1].nd = dataVal.readData.coval || '--';
         mbList[2].nd = dataVal.readData.co2val || '--';
         mbList[2].nd = dataVal.readData.co2val || '--';
-        mbList[3].nd = dataVal.readData.chval || '--';
-        mbList[4].nd = dataVal.readData.ch2val || '--';
-        mbList[5].nd = dataVal.readData.gasval || '--';
+        mbList[3].nd = dataVal.readData.gasval || '--';
+        mbList[4].nd = dataVal.readData.chval || '--';
+        mbList[5].nd = dataVal.readData.ch2val || '--';
         mbList.forEach((el) => {
         mbList.forEach((el) => {
           el.time1 = dataVal ? dataVal.readTime.substring(0, dataVal.readTime.lastIndexOf(':')) : '--';
           el.time1 = dataVal ? dataVal.readTime.substring(0, dataVal.readTime.lastIndexOf(':')) : '--';
           el.address = dataVal ? dataVal.strinstallpos : '--';
           el.address = dataVal ? dataVal.strinstallpos : '--';

+ 4 - 4
src/views/vent/monitorManager/alarmMonitor/common/fireWork.vue

@@ -299,9 +299,9 @@
     contentList[0].list[0].value = data.readData.o2val;
     contentList[0].list[0].value = data.readData.o2val;
     contentList[0].list[1].value = data.readData.ch2val;
     contentList[0].list[1].value = data.readData.ch2val;
     contentList[1].list[0].value = data.readData.coval;
     contentList[1].list[0].value = data.readData.coval;
-    contentList[1].list[1].value = data.readData.chval;
+    contentList[1].list[1].value = data.readData.gasval;
     contentList[2].list[0].value = data.readData.co2val;
     contentList[2].list[0].value = data.readData.co2val;
-    contentList[2].list[1].value = data.readData.gasval;
+    contentList[2].list[1].value = data.readData.chval;
     contentList.forEach((el) => {
     contentList.forEach((el) => {
       el.list.forEach((v) => {
       el.list.forEach((v) => {
         v.time = data.readTime.substring(0, data.readTime.lastIndexOf(':'));
         v.time = data.readTime.substring(0, data.readTime.lastIndexOf(':'));
@@ -357,9 +357,9 @@
         contentList[0].list[0].value = dataVal.readData.o2val;
         contentList[0].list[0].value = dataVal.readData.o2val;
         contentList[0].list[1].value = dataVal.readData.ch2val;
         contentList[0].list[1].value = dataVal.readData.ch2val;
         contentList[1].list[0].value = dataVal.readData.coval;
         contentList[1].list[0].value = dataVal.readData.coval;
-        contentList[1].list[1].value = dataVal.readData.chval;
+        contentList[1].list[1].value = dataVal.readData.gasval;
         contentList[2].list[0].value = dataVal.readData.co2val;
         contentList[2].list[0].value = dataVal.readData.co2val;
-        contentList[2].list[1].value = dataVal.readData.gasval;
+        contentList[2].list[1].value = dataVal.readData.chval;
         contentList.forEach((el) => {
         contentList.forEach((el) => {
           el.list.forEach((v) => {
           el.list.forEach((v) => {
             v.time = dataVal.readTime.substring(0, dataVal.readTime.lastIndexOf(':'));
             v.time = dataVal.readTime.substring(0, dataVal.readTime.lastIndexOf(':'));

+ 20 - 19
src/views/vent/monitorManager/alarmMonitor/common/measurePoint.vue

@@ -16,25 +16,27 @@
       />
       />
     </div>
     </div>
     <div v-if="shown === 'default'" class="content-item">
     <div v-if="shown === 'default'" class="content-item">
-      <div class="card-content" v-for="(item, index) in cards" :key="`vmac${index}`">
-        <div class="item-l">
-          <div class="label-l">{{ item.label }}</div>
-          <div class="value-l">{{ item.value }}</div>
-        </div>
-        <div class="item-r">
-          <div class="content-r" v-for="el in item.listR" :key="el.id">
-            <span>{{ `${el.label} : ` }}</span>
-            <span
-              :class="{
-                'status-f': el.label.includes('状态') && el.value == 1,
-                'status-l': el.label.includes('状态') && el.value == 0,
-              }"
-            >
-              {{ el.label.includes('状态') ? (el.value == 1 ? '异常' : el.value == 0 ? '正常' : el.value) : el.value }}
-            </span>
+      <template v-for="(item, index) in cards" :key="`vmac${index}`">
+        <div class="card-content">
+          <div class="item-l">
+            <div class="label-l">{{ item.label }}</div>
+            <div class="value-l">{{ item.value }}</div>
+          </div>
+          <div class="item-r">
+            <div class="content-r" v-for="el in item.listR" :key="el.id">
+              <span>{{ `${el.label} : ` }}</span>
+              <span
+                :class="{
+                  'status-f': el.label.includes('状态') && el.value == 1,
+                  'status-l': el.label.includes('状态') && el.value == 0,
+                }"
+              >
+                {{ el.label.includes('状态') ? (el.value == 1 ? '异常' : el.value == 0 ? '正常' : el.value) : el.value }}
+              </span>
+            </div>
           </div>
           </div>
         </div>
         </div>
-      </div>
+      </template>
     </div>
     </div>
     <div v-if="shown === 'chart'" class="chart-item">
     <div v-if="shown === 'chart'" class="chart-item">
       <div v-for="(item, index) in charts" :key="`acmt${index}`" class="chart-content">
       <div v-for="(item, index) in charts" :key="`acmt${index}`" class="chart-content">
@@ -164,9 +166,8 @@
     .content-item {
     .content-item {
       display: flex;
       display: flex;
       justify-content: flex-start;
       justify-content: flex-start;
-      align-items: flex-start;
       flex-wrap: wrap;
       flex-wrap: wrap;
-      height: calc(100% - 50px);
+      max-height: calc(100% - 50px);
       overflow-y: auto;
       overflow-y: auto;
 
 
       .card-content {
       .card-content {

+ 349 - 346
src/views/vent/monitorManager/alarmMonitor/warn/fireWarn.vue

@@ -1,18 +1,23 @@
 <template>
 <template>
   <customHeader :options="options" @change="getSelectRow" :optionValue="optionValue"> 火灾监测预警 </customHeader>
   <customHeader :options="options" @change="getSelectRow" :optionValue="optionValue"> 火灾监测预警 </customHeader>
   <div class="fireWarn">
   <div class="fireWarn">
-    <a-button v-if="!hasPermission('fireWarn:return')" preIcon="ant-design:rollback-outlined" type="text" size="small"
-      style="position: absolute; left: 15px; top: 15px; color: var(--vent-font-color)" @click="getBack">返回</a-button>
+    <a-button
+      v-if="!hasPermission('fireWarn:return')"
+      preIcon="ant-design:rollback-outlined"
+      type="text"
+      size="small"
+      style="position: absolute; left: 15px; top: 15px; color: var(--vent-font-color)"
+      @click="getBack"
+      >返回</a-button
+    >
     <div class="alarm-menu">
     <div class="alarm-menu">
       <div class="type-btn">
       <div class="type-btn">
-        <div :class="activeIndex == index ? 'btn1' : 'btn'" v-for="(item, index) in typeMenuList" :key="index"
-          @click="btnClick(index)">
+        <div :class="activeIndex == index ? 'btn1' : 'btn'" v-for="(item, index) in typeMenuList" :key="index" @click="btnClick(index)">
           {{ item.name }}
           {{ item.name }}
         </div>
         </div>
       </div>
       </div>
       <div class="card-btn">
       <div class="card-btn">
-        <div :class="activeIndex1 == ind ? 'btn1' : 'btn'" v-for="(item, ind) in menuList" :key="ind"
-          @click="cardClick(ind, item)">
+        <div :class="activeIndex1 == ind ? 'btn1' : 'btn'" v-for="(item, ind) in menuList" :key="ind" @click="cardClick(ind, item)">
           <div class="text">{{ item.name }}</div>
           <div class="text">{{ item.name }}</div>
           <div class="warn">{{ item.warn }}</div>
           <div class="warn">{{ item.warn }}</div>
         </div>
         </div>
@@ -27,397 +32,395 @@
 </template>
 </template>
 
 
 <script setup lang="ts">
 <script setup lang="ts">
-import { ref, reactive, onMounted, onUnmounted, defineAsyncComponent } from 'vue';
-import { typeMenuList, componentName } from '../common.data';
-import { sysTypeWarnList, sysWarn } from '../common.api';
-import { useSystemSelect } from '/@/hooks/vent/useSystemSelect';
-import { useGlobSetting } from '/@/hooks/setting';
-import { useRouter } from 'vue-router';
-import CustomHeader from '/@/components/vent/customHeader.vue';
-import { usePermission } from '/@/hooks/web/usePermission';
+  import { ref, reactive, onMounted, onUnmounted, defineAsyncComponent } from 'vue';
+  import { typeMenuList, componentName } from '../common.data';
+  import { sysTypeWarnList, sysWarn } from '../common.api';
+  import { useSystemSelect } from '/@/hooks/vent/useSystemSelect';
+  import { useGlobSetting } from '/@/hooks/setting';
+  import { useRouter } from 'vue-router';
+  import CustomHeader from '/@/components/vent/customHeader.vue';
+  import { usePermission } from '/@/hooks/web/usePermission';
 
 
-let loading = ref(false)//加载状态
-const { hasPermission } = usePermission();
-const { options, optionValue, getSelectRow, getSysDataSource } = useSystemSelect('sys_surface_caimei'); // 参数为场景类型(设备类型管理中可以查询到)
-//当前加载组件
-let currentLoad = ref('');
-//内外因火灾激活索引
-let activeIndex = ref(0);
-//当前激活菜单的索引
-let activeIndex1 = ref(0);
-let menuList = reactive<any[]>([]); //左侧菜单列表
-let menuList1 = reactive({
-  external: [],
-  internal: [],
-  info: [],
-});
-//详情数据
-let listData = reactive({
-  common: {},
-  bundletube: [],
-  fiber: [],
-  fire: [],
-  co: [],
-  smoke: [],
-  spray: [],
-  temperature: [],
-}); //详情数据
-let strType = ref(''); //火灾外因-区别工作面和煤层
-let router = useRouter();
-let tableLists = ref<any[]>([]);
-
-// https获取监测数据
-let timer: null | NodeJS.Timeout = null;
-function getMonitor(deviceID, flag?) {
-  timer = setTimeout(
-    async () => {
-      await getSysWarnList(deviceID, 'fire');
-      if (timer) {
-        timer = null;
-      }
-      getMonitor(deviceID);
-    },
-    flag ? 0 : 1000
-  );
-}
+  let loading = ref(false); //加载状态
+  const { hasPermission } = usePermission();
+  const { options, optionValue, getSelectRow, getSysDataSource } = useSystemSelect('sys_surface_caimei'); // 参数为场景类型(设备类型管理中可以查询到)
+  //当前加载组件
+  let currentLoad = ref('');
+  //内外因火灾激活索引
+  let activeIndex = ref(0);
+  //当前激活菜单的索引
+  let activeIndex1 = ref(0);
+  let menuList = reactive<any[]>([]); //左侧菜单列表
+  let menuList1 = reactive({
+    external: [],
+    internal: [],
+    info: [],
+  });
+  //详情数据
+  let listData = reactive({
+    common: {},
+    bundletube: [],
+    fiber: [],
+    fire: [],
+    co: [],
+    smoke: [],
+    spray: [],
+    temperature: [],
+  }); //详情数据
+  let strType = ref(''); //火灾外因-区别工作面和煤层
+  let router = useRouter();
+  let tableLists = ref<any[]>([]);
 
 
-//返回首页
-function getBack() {
-  router.push('/monitorChannel/monitor-alarm-home');
-}
+  // https获取监测数据
+  let timer: null | NodeJS.Timeout = null;
+  function getMonitor(deviceID, flag?) {
+    timer = setTimeout(
+      async () => {
+        await getSysWarnList(deviceID, 'fire');
+        if (timer) {
+          timer = null;
+        }
+        getMonitor(deviceID);
+      },
+      flag ? 0 : 1000
+    );
+  }
 
 
-//获取左侧菜单列表
-async function getMenuList() {
-  let res = await sysTypeWarnList({ type: 'fire' });
-  console.log(res, '火灾左侧菜单列表-------');
-  if (res.length != 0) {
-    menuList.length = 0;
-    menuList1.external = res.external;
-    menuList1.internal = res.internal;
-    menuList1.info = res.info;
-    if (menuList1.internal && menuList1.internal.length > 0) {
-      menuList1.internal.forEach((el) => {
-        menuList.push({
-          name: el.systemname,
-          warn: '低风险',
-          type: 'on',
-          deviceID: el.id,
-          strtype: el.strtype,
-        });
-      });
-    }
-    getMonitor(menuList[0].deviceID, true);
+  //返回首页
+  function getBack() {
+    router.push('/monitorChannel/monitor-alarm-home');
   }
   }
-}
 
 
-//获取预警详情弹窗右侧数据
-function getSysWarnList(id, type) {
-  sysWarn({ sysid: id, type: type }).then((res) => {
-    listData.bundletube = res.bundletube;
-    listData.fiber = res.fiber;
-    listData.fire = res.fire;
-    listData.co = res.co;
-    listData.smoke = res.smoke;
-    listData.spray = res.spray;
-    listData.temperature = res.temperature;
-    loadZj();
-  });
-}
-//内外因火灾、预警指标选项切换
-function btnClick(ind) {
-  activeIndex.value = ind;
-  switch (ind) {
-    case 0:
-      loading.value = true;
-    setTimeout(() => {
-   activeIndex1.value = 0;
+  //获取左侧菜单列表
+  async function getMenuList() {
+    let res = await sysTypeWarnList({ type: 'fire' });
+    console.log(res, '火灾左侧菜单列表-------');
+    if (res.length != 0) {
       menuList.length = 0;
       menuList.length = 0;
-      getClearList();
-      clearTimeout(timer);
-      currentLoad.value = '';
-      menuList1.internal.forEach((el) => {
-        menuList.push({
-          name: el.systemname,
-          warn: '低风险',
-          type: 'on',
-          deviceID: el.id,
-          strtype: el.strtype,
-        });
-      });
-      getMonitor(menuList[0].deviceID, true);
-      loading.value = false;
-    }, 1000);
-      break;
-    case 1:
-      loading.value = true;
-    setTimeout(() => {
-      activeIndex1.value = 0;
-      menuList.length = 0;
-      clearTimeout(timer);
-      getClearList();
-      currentLoad.value = '';
-      if (menuList1.external.length != 0) {
-        menuList1.external.forEach((el) => {
+      menuList1.external = res.external;
+      menuList1.internal = res.internal;
+      menuList1.info = res.info;
+      if (menuList1.internal && menuList1.internal.length > 0) {
+        menuList1.internal.forEach((el) => {
           menuList.push({
           menuList.push({
             name: el.systemname,
             name: el.systemname,
             warn: '低风险',
             warn: '低风险',
-            type: 'out',
+            type: 'on',
             deviceID: el.id,
             deviceID: el.id,
             strtype: el.strtype,
             strtype: el.strtype,
           });
           });
         });
         });
-        getMonitor(menuList[0].deviceID, true);
-        strType.value = menuList[0].strtype;
-      } else {
-        menuList.length = 0;
-        clearTimeout(timer);
-        currentLoad.value = '';
       }
       }
-      loading.value = false;
-    }, 1000);
-      break;
-    case 2:
-      clearTimeout(timer);
-      menuList.length = 0;
-      activeIndex1.value = 0;
-      menuList1.info.forEach((el) => {
-        menuList.push({
-          name: el.sysname,
-          warn: '正常',
-          deviceID: el.sysid,
-          strtype: '',
+      getMonitor(menuList[0].deviceID, true);
+    }
+  }
+
+  //获取预警详情弹窗右侧数据
+  function getSysWarnList(id, type) {
+    sysWarn({ sysid: id, type: type }).then((res) => {
+      listData.bundletube = res.bundletube;
+      listData.fiber = res.fiber;
+      listData.fire = res.fire;
+      listData.co = res.co;
+      listData.smoke = res.smoke;
+      listData.spray = res.spray;
+      listData.temperature = res.temperature;
+      loadZj();
+    });
+  }
+  //内外因火灾、预警指标选项切换
+  function btnClick(ind) {
+    activeIndex.value = ind;
+    switch (ind) {
+      case 0:
+        loading.value = true;
+        setTimeout(() => {
+          activeIndex1.value = 0;
+          menuList.length = 0;
+          getClearList();
+          clearTimeout(timer);
+          currentLoad.value = '';
+          menuList1.internal.forEach((el) => {
+            menuList.push({
+              name: el.systemname,
+              warn: '低风险',
+              type: 'on',
+              deviceID: el.id,
+              strtype: el.strtype,
+            });
+          });
+          getMonitor(menuList[0].deviceID, true);
+          loading.value = false;
+        }, 1000);
+        break;
+      case 1:
+        loading.value = true;
+        setTimeout(() => {
+          activeIndex1.value = 0;
+          menuList.length = 0;
+          clearTimeout(timer);
+          getClearList();
+          currentLoad.value = '';
+          if (menuList1.external.length != 0) {
+            menuList1.external.forEach((el) => {
+              menuList.push({
+                name: el.systemname,
+                warn: '低风险',
+                type: 'out',
+                deviceID: el.id,
+                strtype: el.strtype,
+              });
+            });
+            getMonitor(menuList[0].deviceID, true);
+            strType.value = menuList[0].strtype;
+          } else {
+            menuList.length = 0;
+            clearTimeout(timer);
+            currentLoad.value = '';
+          }
+          loading.value = false;
+        }, 1000);
+        break;
+      case 2:
+        clearTimeout(timer);
+        menuList.length = 0;
+        activeIndex1.value = 0;
+        menuList1.info.forEach((el) => {
+          menuList.push({
+            name: el.sysname,
+            warn: '正常',
+            deviceID: el.sysid,
+            strtype: '',
+          });
         });
         });
-      });
-      loadZb();
-      break;
+        loadZb();
+        break;
+    }
   }
   }
-}
-//加载预警指标组件
-function loadZb() {
-  loading.value = true;
+  //加载预警指标组件
+  function loadZb() {
+    loading.value = true;
     setTimeout(() => {
     setTimeout(() => {
       tableLists.value = menuList1.info[0].list;
       tableLists.value = menuList1.info[0].list;
-  const { sysOrgCode } = useGlobSetting();
-  switch (sysOrgCode) {
-    case 'sdmtjtbdmk': // 宝德
-      currentLoad.value = 'warnFireBd';
-      return currentLoad.value;
-    case 'sdmtjtbetmk': // 布尔台
-      currentLoad.value = 'warnFireBrt';
-      return currentLoad.value;
-    default:
-      currentLoad.value = 'warnFireBrt';
+      const { sysOrgCode } = useGlobSetting();
+      switch (sysOrgCode) {
+        case 'sdmtjtbdmk': // 宝德
+          currentLoad.value = 'warnFireBd';
+          return currentLoad.value;
+        case 'sdmtjtbetmk': // 布尔台
+          currentLoad.value = 'warnFireBrt';
+          return currentLoad.value;
+        default:
+          currentLoad.value = 'warnFireBrt';
+          loading.value = false;
+          return currentLoad.value;
+      }
+    }, 1000);
+  }
+  //菜单选项切换
+  function cardClick(ind, item) {
+    if (activeIndex.value != 2) {
+      loading.value = true;
+      setTimeout(() => {
+        activeIndex1.value = ind;
+        clearTimeout(timer);
+        getClearList();
+        strType.value = item.strtype;
+        currentLoad.value = '';
+        getMonitor(item.deviceID, true);
+        loading.value = false;
+      }, 1000);
+    } else {
+      loading.value = true;
+      setTimeout(() => {
+        clearTimeout(timer);
+        activeIndex1.value = ind;
+        tableLists.value = menuList1.info[ind].list;
         loading.value = false;
         loading.value = false;
-      return currentLoad.value;
+      }, 1000);
+    }
   }
   }
-    }, 1000);
- 
-}
-//菜单选项切换
-function cardClick(ind, item) {
-  if (activeIndex.value != 2) {
-    loading.value = true;
-    setTimeout(() => {
-      activeIndex1.value = ind;
-    clearTimeout(timer);
-    getClearList();
-    strType.value = item.strtype;
-    currentLoad.value = '';
-    getMonitor(item.deviceID, true);
-      loading.value = false;
-    }, 1000);
-  } else {
-    loading.value = true;
-    setTimeout(() => {
-      clearTimeout(timer);
-    activeIndex1.value = ind;
-    tableLists.value = menuList1.info[ind].list;
-      loading.value = false;
-    }, 1000);
-   
+  //加载组件
+  function loadZj() {
+    if (!activeIndex.value && listData.fiber.length != 0 && listData.bundletube.length != 0) {
+      currentLoad.value = 'fireWork';
+    } else if (!activeIndex.value && listData.bundletube.length != 0) {
+      currentLoad.value = 'closeWall';
+    } else if (activeIndex.value && activeIndex.value != 2) {
+      currentLoad.value = 'mainWell';
+    } else {
+      currentLoad.value = '';
+    }
   }
   }
-}
-//加载组件
-function loadZj() {
-  if (!activeIndex.value && listData.fiber.length != 0 && listData.bundletube.length != 0) {
-    currentLoad.value = 'fireWork';
-  } else if (!activeIndex.value && listData.bundletube.length != 0) {
-    currentLoad.value = 'closeWall';
-  } else if (activeIndex.value && activeIndex.value != 2) {
-    currentLoad.value = 'mainWell';
-  } else {
-    currentLoad.value = '';
+  //清空数据
+  function getClearList() {
+    listData.common = {};
+    listData.bundletube.length = 0;
+    listData.fiber.length = 0;
+    listData.fire.length = 0;
+    listData.co.length = 0;
+    listData.smoke.length = 0;
+    listData.spray.length = 0;
+    listData.temperature.length = 0;
   }
   }
-}
-//清空数据
-function getClearList() {
-  listData.common = {};
-  listData.bundletube.length = 0;
-  listData.fiber.length = 0;
-  listData.fire.length = 0;
-  listData.co.length = 0;
-  listData.smoke.length = 0;
-  listData.spray.length = 0;
-  listData.temperature.length = 0;
-}
 
 
-onMounted(() => {
-  getMenuList();
-});
-onUnmounted(() => {
-  if (timer) {
-    clearTimeout(timer);
-    timer = undefined;
-  }
-});
+  onMounted(() => {
+    getMenuList();
+  });
+  onUnmounted(() => {
+    if (timer) {
+      clearTimeout(timer);
+      timer = undefined;
+    }
+  });
 </script>
 </script>
 
 
 <style lang="less" scoped>
 <style lang="less" scoped>
-@import '/@/design/theme.less';
+  @import '/@/design/theme.less';
 
 
-@{theme-deepblue} {
-  .fireWarn {
-    --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');
+  @{theme-deepblue} {
+    .fireWarn {
+      --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');
+    }
   }
   }
-}
-
-.fireWarn {
-  --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');
-  width: 100%;
-  height: 100%;
-  padding: 80px 10px 15px 10px;
-  box-sizing: border-box;
-  display: flex;
-  justify-content: space-between;
 
 
-  .alarm-menu {
+  .fireWarn {
+    --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');
+    width: 100%;
     height: 100%;
     height: 100%;
-    width: 15%;
+    padding: 80px 10px 15px 10px;
+    box-sizing: border-box;
+    display: flex;
+    justify-content: space-between;
 
 
-    .type-btn {
-      width: 100%;
-      height: 28px;
-      line-height: 28px;
-      background-color: var(--vent-warn-tab-bg);
-      border: 2px solid var(--vent-warn-tab-border);
-      margin-bottom: 20px;
-      border-radius: 5px;
-      box-sizing: border-box;
-      display: flex;
-      justify-content: space-between;
+    .alarm-menu {
+      height: 100%;
+      width: 15%;
 
 
-      .btn {
-        width: 33%;
-        height: 24px;
-        line-height: 24px;
-        font-size: 14px;
-        text-align: center;
-        color: var(--vent-font-color);
-        cursor: pointer;
-      }
-
-      .btn1 {
-        width: 33%;
-        height: 24px;
-        line-height: 24px;
-        font-size: 14px;
-        color: var(--vent-font-color);
-        text-align: center;
-        border-radius: 2px;
-        background: var(--vent-warn-tab-bg-actived);
-        cursor: pointer;
-      }
-    }
-
-    .card-btn {
-      width: 100%;
-      height: calc(100% - 48px);
-      overflow-y: auto;
-
-      .btn {
-        position: relative;
-        width: 81%;
-        height: 14%;
-        margin-bottom: 10%;
-        font-family: 'douyuFont';
-        background: var(--image-no-choice) no-repeat;
-        background-size: 100% 100%;
-        cursor: pointer;
+      .type-btn {
+        width: 100%;
+        height: 28px;
+        line-height: 28px;
+        background-color: var(--vent-warn-tab-bg);
+        border: 2px solid var(--vent-warn-tab-border);
+        margin-bottom: 20px;
+        border-radius: 5px;
+        box-sizing: border-box;
+        display: flex;
+        justify-content: space-between;
 
 
-        .text {
-          width: 80%;
-          position: absolute;
-          left: 50%;
-          top: 28px;
-          font-size: 16px;
-          color: var(--vent-table-action-link);
+        .btn {
+          width: 33%;
+          height: 24px;
+          line-height: 24px;
+          font-size: 14px;
           text-align: center;
           text-align: center;
-          transform: translate(-50%, 0);
+          color: var(--vent-font-color);
+          cursor: pointer;
         }
         }
 
 
-        .warn {
-          width: 100%;
-          position: absolute;
-          left: 50%;
-          bottom: 14px;
+        .btn1 {
+          width: 33%;
+          height: 24px;
+          line-height: 24px;
           font-size: 14px;
           font-size: 14px;
           color: var(--vent-font-color);
           color: var(--vent-font-color);
           text-align: center;
           text-align: center;
-          transform: translate(-50%, 0);
+          border-radius: 2px;
+          background: var(--vent-warn-tab-bg-actived);
+          cursor: pointer;
         }
         }
       }
       }
 
 
-      .btn1 {
-        position: relative;
+      .card-btn {
         width: 100%;
         width: 100%;
-        height: 14%;
-        margin-bottom: 10%;
-        font-family: 'douyuFont';
-        background: var(--image-choice) no-repeat;
-        background-size: 100% 100%;
-        cursor: pointer;
+        height: calc(100% - 48px);
+        overflow-y: auto;
 
 
-        .text {
-          width: 80%;
-          position: absolute;
-          left: 50%;
-          top: 28px;
-          font-size: 16px;
-          color: var(--vent-table-action-link);
-          text-align: center;
-          transform: translate(-62%, 0);
+        .btn {
+          position: relative;
+          width: 81%;
+          height: 14%;
+          margin-bottom: 10%;
+          font-family: 'douyuFont';
+          background: var(--image-no-choice) no-repeat;
+          background-size: 100% 100%;
+          cursor: pointer;
+
+          .text {
+            width: 80%;
+            position: absolute;
+            left: 50%;
+            top: 28px;
+            font-size: 16px;
+            color: var(--vent-table-action-link);
+            text-align: center;
+            transform: translate(-50%, 0);
+          }
+
+          .warn {
+            width: 100%;
+            position: absolute;
+            left: 50%;
+            bottom: 14px;
+            font-size: 14px;
+            color: var(--vent-font-color);
+            text-align: center;
+            transform: translate(-50%, 0);
+          }
         }
         }
 
 
-        .warn {
+        .btn1 {
+          position: relative;
           width: 100%;
           width: 100%;
-          position: absolute;
-          left: 50%;
-          bottom: 14px;
-          font-size: 14px;
-          color: var(--vent-font-color);
-          text-align: center;
-          transform: translate(-60%, 0);
+          height: 14%;
+          margin-bottom: 10%;
+          font-family: 'douyuFont';
+          background: var(--image-choice) no-repeat;
+          background-size: 100% 100%;
+          cursor: pointer;
+
+          .text {
+            width: 80%;
+            position: absolute;
+            left: 50%;
+            top: 28px;
+            font-size: 16px;
+            color: var(--vent-table-action-link);
+            text-align: center;
+            transform: translate(-62%, 0);
+          }
+
+          .warn {
+            width: 100%;
+            position: absolute;
+            left: 50%;
+            bottom: 14px;
+            font-size: 14px;
+            color: var(--vent-font-color);
+            text-align: center;
+            transform: translate(-60%, 0);
+          }
         }
         }
       }
       }
     }
     }
-  }
 
 
-  .fire-content {
-    width: calc(85% - 10px);
+    .fire-content {
+      width: calc(85% - 10px);
+      height: 100%;
+      margin-left: 10px;
+      background: var(--image-border) no-repeat;
+      background-size: 100% 100%;
+    }
+  }
+  ::v-deep .zxm-spin-nested-loading {
+    height: 100%;
+  }
+  ::v-deep .zxm-spin-container {
     height: 100%;
     height: 100%;
-    margin-left: 10px;
-    background: var(--image-border) no-repeat;
-    background-size: 100% 100%;
   }
   }
-}
-::v-deep .zxm-spin-nested-loading{
-  height:100%;
-}
-::v-deep .zxm-spin-container{
-  height:100%
-}
 </style>
 </style>

+ 2 - 2
src/views/vent/monitorManager/fanLocalMonitor/fanLocal.three.ts

@@ -278,7 +278,7 @@ export const addCssText = () => {
       fanLocalCSS3D.name = 'text2';
       fanLocalCSS3D.name = 'text2';
       fanLocalCSS3D.scale.set(0.1, 0.1, 0.1);
       fanLocalCSS3D.scale.set(0.1, 0.1, 0.1);
       fanLocalCSS3D.rotation.y = -Math.PI / 2;
       fanLocalCSS3D.rotation.y = -Math.PI / 2;
-      fanLocalCSS3D.position.set(57.84, 13.54, 3.84);
+      fanLocalCSS3D.position.set(57.84, 10.54, 0.08);
       group.add(fanLocalCSS3D);
       group.add(fanLocalCSS3D);
     }
     }
   }
   }
@@ -335,7 +335,7 @@ export const addCssText = () => {
       fanLocalCSS3D.name = 'text6';
       fanLocalCSS3D.name = 'text6';
       fanLocalCSS3D.scale.set(0.04, 0.04, 0.04);
       fanLocalCSS3D.scale.set(0.04, 0.04, 0.04);
       fanLocalCSS3D.rotation.y = -Math.PI / 2;
       fanLocalCSS3D.rotation.y = -Math.PI / 2;
-      fanLocalCSS3D.position.set(-84.23, 6.89, -4.2);
+      fanLocalCSS3D.position.set(-84.23, 6.01, -0.03);
       group.add(fanLocalCSS3D);
       group.add(fanLocalCSS3D);
     }
     }
   }
   }

+ 2 - 1
src/views/vent/monitorManager/mainFanMonitor/components/conditionAssistance.vue

@@ -524,7 +524,8 @@
       } else {
       } else {
         showFre.value = true;
         showFre.value = true;
       }
       }
-    }
+    },
+    { immediate: true }
   );
   );
   onMounted(() => {});
   onMounted(() => {});
 </script>
 </script>

+ 15 - 26
src/views/vent/monitorManager/windowMonitor/components/gasSupplyAir.vue

@@ -4,7 +4,7 @@
     width="1200px"
     width="1200px"
     height="500px"
     height="500px"
     class="supplyAir-modal"
     class="supplyAir-modal"
-    title="风窗自主调控风量监测"
+    title="风窗自主调控瓦斯监测"
     @ok="handleOk"
     @ok="handleOk"
     @cancel="handleOk"
     @cancel="handleOk"
   >
   >
@@ -59,7 +59,7 @@
             >风窗实时瓦斯含量(%):<span>{{ gasTemp ? gasTemp.toFixed(2) : gas?.toFixed(2) }}</span></div
             >风窗实时瓦斯含量(%):<span>{{ gasTemp ? gasTemp.toFixed(2) : gas?.toFixed(2) }}</span></div
           >
           >
           <div class="input-box"
           <div class="input-box"
-            >风窗实时风量(m³/min):<span>{{ fWindowM3Temp ? fWindowM3Temp.toFixed(2) : fWindowM3?.toFixed(2) }}</span></div
+            >风窗实时风量(m³/min):<span>{{ fWindowM3Temp ? fWindowM3Temp.toFixed(2) : fWindowM3 ? fWindowM3.toFixed(2) : '-' }}</span></div
           >
           >
         </div>
         </div>
       </div>
       </div>
@@ -70,7 +70,7 @@
 <script lang="ts" setup>
 <script lang="ts" setup>
   import { ref, nextTick, onMounted, watch, computed, reactive } from 'vue';
   import { ref, nextTick, onMounted, watch, computed, reactive } from 'vue';
   import BarAndLine from '/@/components/chart/BarAndLine.vue';
   import BarAndLine from '/@/components/chart/BarAndLine.vue';
-  import { number } from 'vue-types';
+  import { useGlobSetting } from '/@/hooks/setting';
   const props = defineProps({
   const props = defineProps({
     modalIsShow: {
     modalIsShow: {
       type: Boolean,
       type: Boolean,
@@ -92,7 +92,8 @@
   });
   });
   const emit = defineEmits(['handleOk', 'handleCancel']);
   const emit = defineEmits(['handleOk', 'handleCancel']);
   const visible = computed(() => props.modalIsShow);
   const visible = computed(() => props.modalIsShow);
-  const changeEchart = computed(() => props.modalType);
+  const { sysOrgCode } = useGlobSetting();
+  // const sysOrgCode = 'sdmtjtswmk';
   const echartsData = ref<
   const echartsData = ref<
     {
     {
       gasVal: string | number;
       gasVal: string | number;
@@ -157,43 +158,31 @@
       yname: '%',
       yname: '%',
       linetype: 'line',
       linetype: 'line',
       yaxispos: 'left',
       yaxispos: 'left',
-      color: '#00FFA8',
+      color: '#FDB146',
       sort: 1,
       sort: 1,
       xRotate: 0,
       xRotate: 0,
       dataIndex: 'gas',
       dataIndex: 'gas',
     },
     },
     {
     {
-      legend: '风窗开度',
+      legend: sysOrgCode == 'sdmtjtswmk' ? '窗1开度' : '前窗开度',
       seriesName: '(°)',
       seriesName: '(°)',
       ymax: 1100,
       ymax: 1100,
       yname: '°',
       yname: '°',
       linetype: 'line',
       linetype: 'line',
       yaxispos: 'right',
       yaxispos: 'right',
-      color: '#FDB146',
+      color: '#02FBA7',
       sort: 2,
       sort: 2,
       xRotate: 0,
       xRotate: 0,
       dataIndex: 'forntArea',
       dataIndex: 'forntArea',
     },
     },
     {
     {
-      legend: '前窗开度',
+      legend: sysOrgCode == 'sdmtjtswmk' ? '窗2开度' : '后窗开度',
       seriesName: '(°)',
       seriesName: '(°)',
       ymax: 1100,
       ymax: 1100,
       yname: '°',
       yname: '°',
       linetype: 'line',
       linetype: 'line',
       yaxispos: 'right',
       yaxispos: 'right',
-      color: '#FDB146',
-      sort: 2,
-      xRotate: 0,
-      dataIndex: 'forntArea',
-    },
-    {
-      legend: '后窗开度',
-      seriesName: '(°)',
-      ymax: 1100,
-      yname: '°',
-      linetype: 'line',
-      yaxispos: 'right',
-      color: '#FDB146',
+      color: '#AD19FE',
       sort: 2,
       sort: 2,
       xRotate: 0,
       xRotate: 0,
       dataIndex: 'rearArea',
       dataIndex: 'rearArea',
@@ -231,7 +220,7 @@
           if (frontWindowAngle.value === undefined) frontWindowAngle.value = (newVal['forntArea'] / newVal['maxarea']) * 90;
           if (frontWindowAngle.value === undefined) frontWindowAngle.value = (newVal['forntArea'] / newVal['maxarea']) * 90;
           if (rearWindowAngle.value === undefined) rearWindowAngle.value = (newVal['rearArea'] / newVal['maxarea']) * 90;
           if (rearWindowAngle.value === undefined) rearWindowAngle.value = (newVal['rearArea'] / newVal['maxarea']) * 90;
         }
         }
-        if (fWindowM3.value === undefined) fWindowM3.value = newVal['fWindowM3'];
+        if (fWindowM3.value === undefined) fWindowM3.value = Number(newVal['fWindowM3']);
         // if (gas == undefined) gas = Number(newVal['gas']) > Number(props.gasVal) ? newVal['gas'] : props.gasVal + 0.2;
         // if (gas == undefined) gas = Number(newVal['gas']) > Number(props.gasVal) ? newVal['gas'] : props.gasVal + 0.2;
         if (gas.value == undefined) gas.value = props.gasVal + 0.2;
         if (gas.value == undefined) gas.value = props.gasVal + 0.2;
         // 开启模拟
         // 开启模拟
@@ -286,16 +275,16 @@
       // 每调用一次数据就增减一些
       // 每调用一次数据就增减一些
       // frontWindowAngle 增加一些
       // frontWindowAngle 增加一些
       if (frontWindowAngle.value !== undefined && frontWindowAngle.value <= 90) {
       if (frontWindowAngle.value !== undefined && frontWindowAngle.value <= 90) {
-        frontWindowAngle.value = Math.min(frontWindowAngle.value + 3, 90);
+        frontWindowAngle.value = Number(Math.min(frontWindowAngle.value + 3, 90).toFixed(0));
       }
       }
       if (rearWindowAngle.value !== undefined && rearWindowAngle.value <= 90) {
       if (rearWindowAngle.value !== undefined && rearWindowAngle.value <= 90) {
-        rearWindowAngle.value = Math.min(rearWindowAngle.value + 3, 90);
+        rearWindowAngle.value = Number(Math.min(rearWindowAngle.value + 3, 90).toFixed(0));
       }
       }
       if (fWindowM3.value !== undefined) {
       if (fWindowM3.value !== undefined) {
         fWindowM3.value += 40 * index;
         fWindowM3.value += 40 * index;
       }
       }
       if (gas.value !== undefined) {
       if (gas.value !== undefined) {
-        gas.value -= 0.001 * index;
+        gas.value -= Number((0.001 * index).toFixed(3));
       }
       }
       ++index;
       ++index;
     }
     }
@@ -325,7 +314,7 @@
     // min-height: 600px;
     // min-height: 600px;
     .left-box {
     .left-box {
       flex: 1; /* 占据 3/4 的空间 */
       flex: 1; /* 占据 3/4 的空间 */
-      background-image: url(../../../../../assets/images/supplyAir.svg);
+      background-image: url(../../../../../assets/images/window-gas.png);
       background-repeat: no-repeat;
       background-repeat: no-repeat;
       background-size: contain; /* 确保背景图片完整显示 */
       background-size: contain; /* 确保背景图片完整显示 */
       background-position: center; /* 确保背景图片居中 */
       background-position: center; /* 确保背景图片居中 */

+ 24 - 11
src/views/vent/monitorManager/windowMonitor/components/supplyAir.vue

@@ -39,6 +39,7 @@
 <script lang="ts" setup>
 <script lang="ts" setup>
   import { ref, nextTick, onMounted, watch, computed, reactive } from 'vue';
   import { ref, nextTick, onMounted, watch, computed, reactive } from 'vue';
   import BarAndLine from '/@/components/chart/BarAndLine.vue';
   import BarAndLine from '/@/components/chart/BarAndLine.vue';
+  import { useGlobSetting } from '/@/hooks/setting';
   const props = defineProps({
   const props = defineProps({
     modalIsShow: {
     modalIsShow: {
       type: Boolean,
       type: Boolean,
@@ -57,7 +58,8 @@
   });
   });
   const emit = defineEmits(['handleOk', 'handleCancel']);
   const emit = defineEmits(['handleOk', 'handleCancel']);
   const visible = computed(() => props.modalIsShow);
   const visible = computed(() => props.modalIsShow);
-  const changeEchart = computed(() => props.modalType);
+  const { sysOrgCode } = useGlobSetting();
+  // const sysOrgCode = 'sdmtjtswmk';
   const echartsData = ref<{ targetVolume: string | Number; readTime: string; fWindowM3: string | Number; rearm3?: string | Number }[]>([]);
   const echartsData = ref<{ targetVolume: string | Number; readTime: string; fWindowM3: string | Number; rearm3?: string | Number }[]>([]);
   const monitorData = ref({});
   const monitorData = ref({});
   const echatsOption = {
   const echatsOption = {
@@ -93,7 +95,7 @@
     },
     },
   };
   };
 
 
-  const chartsColumnList = reactive([
+  const chartsColumnListTemp = [
     {
     {
       legend: '目标风量',
       legend: '目标风量',
       seriesName: '(m³/min)',
       seriesName: '(m³/min)',
@@ -107,28 +109,39 @@
       dataIndex: 'targetVolume',
       dataIndex: 'targetVolume',
     },
     },
     {
     {
-      legend: '供风量',
+      legend: sysOrgCode == 'sdmtjtswmk' ? '窗1实时供风量' : '前窗实时供风量',
       seriesName: '(m³/min)',
       seriesName: '(m³/min)',
       ymax: 1100,
       ymax: 1100,
       yname: 'm³/min',
       yname: 'm³/min',
       linetype: 'line',
       linetype: 'line',
-      yaxispos: 'right',
+      yaxispos: 'left',
       color: '#FDB146',
       color: '#FDB146',
       sort: 1,
       sort: 1,
       xRotate: 0,
       xRotate: 0,
       dataIndex: 'fWindowM3',
       dataIndex: 'fWindowM3',
     },
     },
-  ]);
+    {
+      legend: sysOrgCode == 'sdmtjtswmk' ? '窗2实时供风量' : '后窗实时供风量',
+      seriesName: '(m³/min)',
+      ymax: 1100,
+      yname: 'm³/min',
+      linetype: 'line',
+      yaxispos: 'left',
+      color: '#AD19FE',
+      sort: 1,
+      xRotate: 0,
+      dataIndex: 'rearm3',
+    },
+  ];
+  const chartsColumnList = ref(chartsColumnListTemp);
   watch(
   watch(
     () => props.data,
     () => props.data,
     (newVal) => {
     (newVal) => {
       if (!visible.value) return;
       if (!visible.value) return;
-      if (props.modalType == '8') {
-        chartsColumnList[1].dataIndex = 'rearm31';
-        chartsColumnList[1].legend = '后窗实时供风量';
+      if (newVal['nwindownum'] == 1) {
+        if (chartsColumnList.value.length != 2) chartsColumnList.value = [chartsColumnListTemp[0], chartsColumnListTemp[1]];
       } else {
       } else {
-        chartsColumnList[1].dataIndex = 'fWindowM3';
-        chartsColumnList[1].legend = '前窗实时供风量';
+        if (chartsColumnList.value.length != 3) chartsColumnList.value = [chartsColumnListTemp[0], chartsColumnListTemp[1], chartsColumnListTemp[2]];
       }
       }
       monitorData.value = newVal;
       monitorData.value = newVal;
       if (echartsData.value.length > 20) {
       if (echartsData.value.length > 20) {
@@ -159,7 +172,7 @@
     // min-height: 600px;
     // min-height: 600px;
     .left-box {
     .left-box {
       flex: 1; /* 占据 3/4 的空间 */
       flex: 1; /* 占据 3/4 的空间 */
-      background-image: url(../../../../../assets/images/supplyAir.svg);
+      background-image: url(../../../../../assets/images/window-targetm3.png);
       background-repeat: no-repeat;
       background-repeat: no-repeat;
       background-size: contain; /* 确保背景图片完整显示 */
       background-size: contain; /* 确保背景图片完整显示 */
       background-position: center; /* 确保背景图片居中 */
       background-position: center; /* 确保背景图片居中 */

+ 9 - 25
src/views/vent/monitorManager/windowMonitor/index.vue

@@ -32,10 +32,10 @@
         </div>
         </div>
 
 
         <div class="row" v-if="hasPermission('window:fourAreaControl')">
         <div class="row" v-if="hasPermission('window:fourAreaControl')">
-          <div class="button-box" @click="setFourAngle('frontSetValue1', '窗1开度设置')">窗1开度</div>
-          <div class="button-box" @click="setFourAngle('frontSetValue2', '窗2开度设置')">窗2开度</div>
-          <div class="button-box" @click="setFourAngle('frontSetValue3', '窗3开度设置')">窗3开度</div>
-          <div class="button-box" @click="setFourAngle('frontSetValue4', '窗4开度设置')">窗4开度</div>
+          <div class="button-box" @click="setFourAngle('frontSetValue1', '窗1开度设置')">窗1开度</div>
+          <div class="button-box" @click="setFourAngle('frontSetValue2', '窗2开度设置')">窗2开度</div>
+          <div class="button-box" @click="setFourAngle('frontSetValue3', '后窗1开度设置')">后窗1开度</div>
+          <div class="button-box" @click="setFourAngle('frontSetValue4', '后窗2开度设置')">后窗2开度</div>
         </div>
         </div>
         <div class="row" v-if="Number(selectData.nwindownum) == 1">
         <div class="row" v-if="Number(selectData.nwindownum) == 1">
           <div v-if="hasPermission('window:AreaControl')" class="button-box" @click="setArea(1)">设定风窗面积</div>
           <div v-if="hasPermission('window:AreaControl')" class="button-box" @click="setArea(1)">设定风窗面积</div>
@@ -43,16 +43,8 @@
         </div>
         </div>
       </div>
       </div>
       <div class="top-right row">
       <div class="top-right row">
-        <template v-if="Number(selectData.nwindownum) > 1">
-          <div v-if="hasPermission('window:ldkz')" class="button-box" @click="setArea(7)">前窗自主调控</div>
-          <div v-if="hasPermission('window:ldkz')" class="button-box" @click="setArea(8)">后窗自主调控</div>
-          <div v-if="hasPermission('window:gasldkz')" class="button-box" @click="setArea('ldkzStart')">瓦斯超限调控开启</div>
-          <!-- <div v-if="hasPermission('window:gasldkz')" class="button-box" @click="setArea('ldkzStop')">瓦斯超限调控停止</div> -->
-        </template>
-        <template v-else>
-          <div v-if="hasPermission('window:ldkz')" class="button-box" @click="setArea(7)">风窗自主调控</div>
-          <div v-if="hasPermission('window:gasldkz')" class="button-box" @click="setArea('ldkzStart')">瓦斯超限调控开启</div>
-        </template>
+        <div v-if="hasPermission('window:ldkz')" class="button-box" @click="setArea(7)">风窗自主调控</div>
+        <div v-if="hasPermission('window:gasldkz')" class="button-box" @click="setArea('ldkzStart')">瓦斯超限调控开启</div>
         <div v-if="hasPermission('window:controlFull')" class="button-box" @click="setArea(5)">一键全开</div>
         <div v-if="hasPermission('window:controlFull')" class="button-box" @click="setArea(5)">一键全开</div>
         <div v-if="hasPermission('window:controlFull')" class="button-box" @click="setArea(6)">一键全关</div>
         <div v-if="hasPermission('window:controlFull')" class="button-box" @click="setArea(6)">一键全关</div>
         <!-- 展会功能 -->
         <!-- 展会功能 -->
@@ -244,7 +236,7 @@
   const scroll = reactive({
   const scroll = reactive({
     y: 230,
     y: 230,
   });
   });
-  const isMock = ref(true);
+  const isMock = ref(VENT_PARAM['gasControlMock']);
   const modalIsShow = ref<boolean>(false); // 是否显示模态框
   const modalIsShow = ref<boolean>(false); // 是否显示模态框
   const linkAlarmShow = ref<boolean>(false); // 是否显示模态框
   const linkAlarmShow = ref<boolean>(false); // 是否显示模态框
   const modalTitle = ref(''); // 模态框标题显示内容,根据设备操作类型决定
   const modalTitle = ref(''); // 模态框标题显示内容,根据设备操作类型决定
@@ -398,7 +390,7 @@
           modalTitle.value = '一键全开';
           modalTitle.value = '一键全开';
         } else if (flag == 6) {
         } else if (flag == 6) {
           modalTitle.value = '一键全关';
           modalTitle.value = '一键全关';
-        } else if (flag == 7 || flag == 8) {
+        } else if (flag == 7) {
           modalTitle.value = '风量自主调控';
           modalTitle.value = '风量自主调控';
         }
         }
         modalIsShow.value = true;
         modalIsShow.value = true;
@@ -418,7 +410,7 @@
         modalTitle.value = '设定风窗角度';
         modalTitle.value = '设定风窗角度';
       }
       }
       modalIsShow.value = true;
       modalIsShow.value = true;
-    } else if (flag == 7 || flag == 8) {
+    } else if (flag == 7) {
       modalTitle.value = '风量自主调控';
       modalTitle.value = '风量自主调控';
       modalIsShow.value = true;
       modalIsShow.value = true;
     } else {
     } else {
@@ -461,7 +453,6 @@
     let params;
     let params;
     // 风窗风量自主调控
     // 风窗风量自主调控
     if (handlerState == 7 || handlerState == 8) {
     if (handlerState == 7 || handlerState == 8) {
-      let params;
       if (handlerState == 7) {
       if (handlerState == 7) {
         // 单道风窗
         // 单道风窗
         params = {
         params = {
@@ -469,13 +460,6 @@
           auto: 1,
           auto: 1,
           fengliangF: value,
           fengliangF: value,
         };
         };
-      } else {
-        // 双道风窗
-        params = {
-          windowId: selectData.deviceID,
-          auto: 1,
-          fengliangR: value, // 后风窗
-        };
       }
       }
       updateWindowAutoAdjustStatus(params).then((res) => {
       updateWindowAutoAdjustStatus(params).then((res) => {
         if (res.success) {
         if (res.success) {

+ 11 - 3
src/views/vent/monitorManager/windrectMonitor/components/resultTable.vue

@@ -7,7 +7,8 @@
   <a-table :columns="resultColumns" :data-source="dataSource" rowKey="id" class="components-table-demo-nested" :loading="loading" size="small">
   <a-table :columns="resultColumns" :data-source="dataSource" rowKey="id" class="components-table-demo-nested" :loading="loading" size="small">
     <template #bodyCell="{ record, column }">
     <template #bodyCell="{ record, column }">
       <template v-if="column.dataIndex === 'action'">
       <template v-if="column.dataIndex === 'action'">
-        <TableAction :actions="createActions(record, column)" />
+        <a class="table-action-link" @click="upload(record)">导出</a>
+        <!-- <TableAction :actions="createActions(record, column)" /> -->
         <!-- <a href="javascript:void(0)" ><Icon icon="ant-design:delete-outlined"></Icon></a> -->
         <!-- <a href="javascript:void(0)" ><Icon icon="ant-design:delete-outlined"></Icon></a> -->
       </template>
       </template>
     </template>
     </template>
@@ -57,10 +58,16 @@
         return [
         return [
           {
           {
             label: '导出',
             label: '导出',
-            onClick: handleExportXls.bind(null, '测风报表导出', getExportUrl, { testid: record.id }),
+            onClick: handleExportXls.bind(null, '测风报表-' + new Date().toLocaleString(), getExportUrl, { testid: record.id }),
           },
           },
         ];
         ];
-      }
+      };
+
+      function upload(record: EditRecordRow) {
+        let d = new Date();
+        let customFormattedDate = `${d.getFullYear()}-${String(d.getMonth() + 1).padStart(2, '0')}-${String(d.getDate()).padStart(2, '0')}`;
+        handleExportXls('测风报表-' + customFormattedDate, getExportUrl, { testid: record.id });
+      };
 
 
       onMounted(() => {
       onMounted(() => {
         loading.value = true;
         loading.value = true;
@@ -73,6 +80,7 @@
         innerResultColumns,
         innerResultColumns,
         loading,
         loading,
         createActions,
         createActions,
+        upload
       };
       };
     },
     },
   };
   };

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

@@ -47,7 +47,7 @@
       <dv-border-box8 :dur="5" :style="`padding: 5px; height: ${scroll.y + 120}px`">
       <dv-border-box8 :dur="5" :style="`padding: 5px; height: ${scroll.y + 120}px`">
         <div class="tabs-button-group">
         <div class="tabs-button-group">
           <a-button v-if="hasPermission('windrect:handler')" class="tabs-button" type="primary" @click="openModel">一键测风</a-button>
           <a-button v-if="hasPermission('windrect:handler')" class="tabs-button" type="primary" @click="openModel">一键测风</a-button>
-          <a-button class="tabs-button" type="primary" @click="resetHandle">一键复位</a-button>
+          <a-button v-if="hasPermission('windrect:reset')" class="tabs-button" type="primary" @click="resetHandle">一键复位</a-button>
         </div>
         </div>
         <a-tabs class="tabs-box" v-model:activeKey="activeKey" @change="tabChange">
         <a-tabs class="tabs-box" v-model:activeKey="activeKey" @change="tabChange">
           <a-tab-pane key="1" tab="实时监测">
           <a-tab-pane key="1" tab="实时监测">