Przeglądaj źródła

[Wip 0000] 去除监测系列页面、去除公司端首页、数据中心页面

houzekong 1 miesiąc temu
rodzic
commit
5839b7f6c7
100 zmienionych plików z 116 dodań i 22705 usunięć
  1. 1 1
      .env
  2. 3 3
      src/layouts/default/header/index.vue
  3. 110 110
      src/router/routes/basic.ts
  4. 2 12
      src/utils/http/axios/index.ts
  5. 0 472
      src/views/super/drag/page/components/CardList.vue
  6. 0 185
      src/views/super/drag/page/components/DragPageModal.vue
  7. 0 71
      src/views/super/drag/page/components/PageModal.vue
  8. 0 105
      src/views/super/drag/page/components/PasswordModal.vue
  9. 0 74
      src/views/super/drag/page/page.api.ts
  10. 0 66
      src/views/super/drag/page/page.data.ts
  11. 0 176
      src/views/super/drag/page/pageList.vue
  12. 0 63
      src/views/super/drag/page/useExportImage.ts
  13. 0 158
      src/views/super/drag/page/view.vue
  14. 0 14
      src/views/vent/bundle/bundleMonitorTable/bundle-table.api.ts
  15. 0 1955
      src/views/vent/bundle/bundleMonitorTable/bundle-table.data.ts
  16. 0 1312
      src/views/vent/bundle/bundleMonitorTable/index.vue
  17. 0 547
      src/views/vent/bundle/bundleMonitorTable/modal/blastDelta.vue
  18. 0 547
      src/views/vent/bundle/bundleMonitorTable/modal/blastDelta1.vue
  19. 0 14
      src/views/vent/bundleSpy/bundleSpyTable/bundleSpy-table.api.ts
  20. 0 1301
      src/views/vent/bundleSpy/bundleSpyTable/bundleSpy-table.data.ts
  21. 0 746
      src/views/vent/bundleSpy/bundleSpyTable/index.vue
  22. 0 545
      src/views/vent/bundleSpy/bundleSpyTable/modal/blastDelta.vue
  23. 0 0
      src/views/vent/comment/components/board/baseBoard.vue
  24. 0 0
      src/views/vent/comment/components/board/categoryBoard.vue
  25. 0 0
      src/views/vent/comment/components/board/squareBoard.vue
  26. 0 0
      src/views/vent/comment/components/board/unitBoard.vue
  27. 0 0
      src/views/vent/comment/components/form/button.vue
  28. 0 0
      src/views/vent/comment/components/form/formTitle.vue
  29. 0 0
      src/views/vent/comment/components/list/@/design/vent/color.less
  30. 0 0
      src/views/vent/comment/components/list/index.vue
  31. 0 0
      src/views/vent/comment/components/list/listItem.vue
  32. 0 0
      src/views/vent/comment/components/list/listTitle.vue
  33. 0 0
      src/views/vent/comment/components/modal/confirmModal.vue
  34. 0 0
      src/views/vent/comment/components/modal/confirmModal1.vue
  35. 0 0
      src/views/vent/comment/components/tab/baseTab.vue
  36. 0 50
      src/views/vent/dataCenter/APICenter/ApiAddModal.vue
  37. 0 31
      src/views/vent/dataCenter/APICenter/apiManger.api.ts
  38. 0 61
      src/views/vent/dataCenter/APICenter/apiManger.data.ts
  39. 0 90
      src/views/vent/dataCenter/APICenter/index.vue
  40. 0 21
      src/views/vent/dataCenter/deviceCenter/device.api.ts
  41. 0 496
      src/views/vent/dataCenter/deviceCenter/history/HistoryTable.vue
  42. 0 289
      src/views/vent/dataCenter/deviceCenter/history/HistoryTableFan.vue
  43. 0 78
      src/views/vent/dataCenter/deviceCenter/history/history.api.ts
  44. 0 86
      src/views/vent/dataCenter/deviceCenter/history/history.data.ts
  45. 0 626
      src/views/vent/dataCenter/deviceCenter/index.vue
  46. 0 71
      src/views/vent/dataCenter/infoCenter/components/infoBox.vue
  47. 0 380
      src/views/vent/dataCenter/infoCenter/index.vue
  48. 0 18
      src/views/vent/dataCenter/infoCenter/infoCenter.api.ts
  49. 0 170
      src/views/vent/dataCenter/infoCenter/infoCenter.data.ts
  50. 0 21
      src/views/vent/dataCenter/stationCenter/device.api.ts
  51. 0 620
      src/views/vent/dataCenter/stationCenter/index.vue
  52. 0 257
      src/views/vent/dataCenter/statsCenter/index.vue
  53. 0 18
      src/views/vent/dataCenter/statsCenter/stats.api.ts
  54. 0 42
      src/views/vent/dataCenter/user/PasswordModal.vue
  55. 0 45
      src/views/vent/dataCenter/user/UserAgentModal.vue
  56. 0 136
      src/views/vent/dataCenter/user/UserDrawer.vue
  57. 0 96
      src/views/vent/dataCenter/user/UserPermModal.vue
  58. 0 138
      src/views/vent/dataCenter/user/UserRecycleBinModal.vue
  59. 0 242
      src/views/vent/dataCenter/user/index.vue
  60. 0 196
      src/views/vent/dataCenter/user/user.api.ts
  61. 0 284
      src/views/vent/dataCenter/user/user.data.ts
  62. 0 54
      src/views/vent/dataCenter/user/userDetails.vue
  63. 0 73
      src/views/vent/deviceManager/comment/editWarnTable/index.vue
  64. 0 310
      src/views/vent/deviceManager/workingFace/CustomNormalTable.vue
  65. 0 98
      src/views/vent/deviceManager/workingFace/index.vue
  66. 0 99
      src/views/vent/deviceManager/workingFace/workingFace.api.ts
  67. 0 251
      src/views/vent/deviceManager/workingFace/workingFace.data.ts
  68. 0 14
      src/views/vent/dust/dustMonitorTable/dsut-table.api.ts
  69. 0 1967
      src/views/vent/dust/dustMonitorTable/dust-table.data.ts
  70. 0 818
      src/views/vent/dust/dustMonitorTable/index.vue
  71. 0 219
      src/views/vent/gas/gasAnalysis/components/echartBox.vue
  72. 0 21
      src/views/vent/gas/gasAnalysis/gasAnalysis.api.ts
  73. 0 86
      src/views/vent/gas/gasAnalysis/gasAnalysis.data.ts
  74. 0 311
      src/views/vent/gas/gasAnalysis/index.vue
  75. 0 88
      src/views/vent/gas/gasAssessment/components/customHeader.vue
  76. 0 268
      src/views/vent/gas/gasAssessment/components/gasControl.vue
  77. 0 225
      src/views/vent/gas/gasAssessment/components/gasEcharts.vue
  78. 0 289
      src/views/vent/gas/gasAssessment/components/gasPipingEcharts.vue
  79. 0 283
      src/views/vent/gas/gasAssessment/components/gasUnit.vue
  80. 0 83
      src/views/vent/gas/gasAssessment/components/gasVideo.vue
  81. 0 249
      src/views/vent/gas/gasAssessment/components/workFace.vue
  82. 0 11
      src/views/vent/gas/gasAssessment/gasAssessment.api.ts
  83. 0 1385
      src/views/vent/gas/gasAssessment/gasAssessment.data.ts
  84. 0 258
      src/views/vent/gas/gasAssessment/index.vue
  85. 0 314
      src/views/vent/gas/gasAssessment/threejs/gasAssessmen.threejs.base.ts
  86. 0 191
      src/views/vent/gas/gasAssessment/threejs/gasAssessmen.threejs.ts
  87. 0 105
      src/views/vent/gas/gasAssessment/threejs/gasUnit.threejs.base.ts
  88. 0 89
      src/views/vent/gas/gasHome/components/customHeader.vue
  89. 0 86
      src/views/vent/gas/gasHome/components/gasMonitor.vue
  90. 0 14
      src/views/vent/gas/gasHome/gasHome.api.ts
  91. 0 101
      src/views/vent/gas/gasHome/gasHome.data.ts
  92. 0 113
      src/views/vent/gas/gasHome/index.vue
  93. 0 74
      src/views/vent/gas/gasInspect/components/addressAdd.vue
  94. 0 50
      src/views/vent/gas/gasInspect/components/inspectDel.vue
  95. 0 138
      src/views/vent/gas/gasInspect/components/inspectEdit.vue
  96. 0 131
      src/views/vent/gas/gasInspect/components/inspectTask.vue
  97. 0 145
      src/views/vent/gas/gasInspect/components/inspectTeam.vue
  98. 0 103
      src/views/vent/gas/gasInspect/components/uploadOrdown.vue
  99. 0 127
      src/views/vent/gas/gasInspect/gasInspect.api.ts
  100. 0 425
      src/views/vent/gas/gasInspect/gasInspect.data.ts

+ 1 - 1
.env

@@ -1,5 +1,5 @@
 # port
-VITE_PORT = 8062
+VITE_PORT = 8092
 
 #  网站标题
 VITE_GLOB_APP_TITLE = 智能通风管控系统

+ 3 - 3
src/layouts/default/header/index.vue

@@ -62,8 +62,8 @@
         <a-radio :value="true">2.5D</a-radio>
         <a-radio :value="false">3D</a-radio>
       </a-radio-group>
-      <WeatherBroadcast v-if="sysOrgCode != 'sdmtjtgsd' && isShowQy && portValue != '8062'" />
-      <VoiceBroadcast v-if="sysOrgCode != 'sdmtjtgsd' && portValue != '8062'" />
+      <WeatherBroadcast v-if="sysOrgCode != 'sdmtjtgsd' && isShowQy" />
+      <VoiceBroadcast v-if="sysOrgCode != 'sdmtjtgsd'" />
       <AIChat v-if="hasPermission('show:AIChat')" />
       <VoiceBroadcastGsd v-if="sysOrgCode == 'sdmtjtgsd'" />
       <UserDropDown v-if="showUserDropdown" :theme="getHeaderTheme" />
@@ -363,7 +363,7 @@
     color: transparent;
     font-weight: 600;
   }
-  .right-position{
+  .right-position {
     display: flex;
     align-items: center;
     height: 48px;

+ 110 - 110
src/router/routes/basic.ts

@@ -39,17 +39,17 @@ export const DeviceTableRoute: AppRouteRecordRaw = {
     hideMenu: true,
   },
   children: [
-    {
-      path: '/:id',
-      name: '',
-      component: () => import('/@/views/vent/monitorManager/safetyMonitor/index.vue'),
-      meta: {
-        title: '',
-        hideBreadcrumb: true,
-        hideMenu: true,
-      },
-      ver: '1',
-    },
+    // {
+    //   path: '/:id',
+    //   name: '',
+    //   component: () => import('/@/views/vent/monitorManager/safetyMonitor/index.vue'),
+    //   meta: {
+    //     title: '',
+    //     hideBreadcrumb: true,
+    //     hideMenu: true,
+    //   },
+    //   ver: '1',
+    // },
   ],
   ver: '1',
 };
@@ -64,105 +64,105 @@ export const QIANKUN_ROUTE: AppRouteRecordRaw = {
     hideMenu: true,
   },
   children: [
-    {
-      path: '/micro-vent-3dModal/gas/home',
-      name: 'gas-home',
-      component: () => import('/@/views/vent/gas/gasHome/index.vue'),
-      meta: {
-        title: '抽采综合管控',
-        hideBreadcrumb: true,
-        hideMenu: true,
-      },
-      ver: '1',
-    },
-    {
-      path: '/micro-vent-2dModal/gas/home',
-      name: '2dModal-gas-home',
-      component: () => import('/@/views/vent/gas/gasHome/index.vue'),
-      meta: {
-        title: '抽采综合管控',
-        hideBreadcrumb: true,
-        hideMenu: true,
-      },
-      ver: '1',
-    },
-    {
-      path: '/micro-vent-3dModal/modelchannel/model3D/home',
-      name: 'micro-vent-3dModal-modelchannel-model3D-home',
-      component: () => import('/@/views/vent/home/colliery/index.vue'),
-      meta: {
-        title: '通防综合管控',
-        hideBreadcrumb: true,
-        hideMenu: true,
-      },
-      ver: '1',
-    },
-    {
-      path: '/micro-vent-3dModal/gas-pipe-net/home',
-      name: 'gas-pipe-net-home',
-      component: () => import('/@/views/vent/gas/gasPipeNet/index.vue'),
-      meta: {
-        title: '瓦斯管网监测',
-        hideBreadcrumb: true,
-        hideMenu: true,
-      },
-      ver: '1',
-    },
-    {
-      path: '/micro-vent-2dModal/gas-pipe-net/home',
-      name: '2dModal-gas-pipe-net-home',
-      component: () => import('/@/views/vent/gas/gasPipeNet/index.vue'),
-      meta: {
-        title: '瓦斯管网监测',
-        hideBreadcrumb: true,
-        hideMenu: true,
-      },
-      ver: '1',
-    },
-    {
-      path: '/micro-vent-3dModal/dashboard/analysis',
-      name: 'micro-vent-3dModal-dashboard-analysis',
-      component: () => import('/@/views/vent/monitorManager/deviceMonitor/index.vue'),
-      meta: {
-        title: '通防综合管控',
-        hideBreadcrumb: true,
-        hideMenu: true,
-      },
-      ver: '1',
-    },
-    {
-      path: '/micro-vent-2dModal/dashboard/analysis',
-      name: 'micro-vent-2dModal-dashboard-analysis',
-      component: () => import('/@/views/vent/monitorManager/deviceMonitor/index.vue'),
-      meta: {
-        title: '通防综合管控',
-        hideBreadcrumb: true,
-        hideMenu: true,
-      },
-      ver: '1',
-    },
-    {
-      path: '/micro-need-air/:path(.*)*',
-      name: 'micro-need-air',
-      component: () => import('/@/components/vent/micro/needAir.vue'),
-      meta: {
-        title: '需风量分析系统',
-        hideBreadcrumb: true,
-        hideMenu: true,
-      },
-      ver: '1',
-    },
-    {
-      path: '/micro-vent-doc/:path(.*)*',
-      name: 'micro-vent-doc',
-      component: () => import('/@/components/vent/micro/ventDoc.vue'),
-      meta: {
-        title: '内业管理系统',
-        hideBreadcrumb: true,
-        hideMenu: true,
-      },
-      ver: '1',
-    },
+    // {
+    //   path: '/micro-vent-3dModal/gas/home',
+    //   name: 'gas-home',
+    //   component: () => import('/@/views/vent/gas/gasHome/index.vue'),
+    //   meta: {
+    //     title: '抽采综合管控',
+    //     hideBreadcrumb: true,
+    //     hideMenu: true,
+    //   },
+    //   ver: '1',
+    // },
+    // {
+    //   path: '/micro-vent-2dModal/gas/home',
+    //   name: '2dModal-gas-home',
+    //   component: () => import('/@/views/vent/gas/gasHome/index.vue'),
+    //   meta: {
+    //     title: '抽采综合管控',
+    //     hideBreadcrumb: true,
+    //     hideMenu: true,
+    //   },
+    //   ver: '1',
+    // },
+    // {
+    //   path: '/micro-vent-3dModal/modelchannel/model3D/home',
+    //   name: 'micro-vent-3dModal-modelchannel-model3D-home',
+    //   component: () => import('/@/views/vent/home/colliery/index.vue'),
+    //   meta: {
+    //     title: '通防综合管控',
+    //     hideBreadcrumb: true,
+    //     hideMenu: true,
+    //   },
+    //   ver: '1',
+    // },
+    // {
+    //   path: '/micro-vent-3dModal/gas-pipe-net/home',
+    //   name: 'gas-pipe-net-home',
+    //   component: () => import('/@/views/vent/gas/gasPipeNet/index.vue'),
+    //   meta: {
+    //     title: '瓦斯管网监测',
+    //     hideBreadcrumb: true,
+    //     hideMenu: true,
+    //   },
+    //   ver: '1',
+    // },
+    // {
+    //   path: '/micro-vent-2dModal/gas-pipe-net/home',
+    //   name: '2dModal-gas-pipe-net-home',
+    //   component: () => import('/@/views/vent/gas/gasPipeNet/index.vue'),
+    //   meta: {
+    //     title: '瓦斯管网监测',
+    //     hideBreadcrumb: true,
+    //     hideMenu: true,
+    //   },
+    //   ver: '1',
+    // },
+    // {
+    //   path: '/micro-vent-3dModal/dashboard/analysis',
+    //   name: 'micro-vent-3dModal-dashboard-analysis',
+    //   component: () => import('/@/views/vent/monitorManager/deviceMonitor/index.vue'),
+    //   meta: {
+    //     title: '通防综合管控',
+    //     hideBreadcrumb: true,
+    //     hideMenu: true,
+    //   },
+    //   ver: '1',
+    // },
+    // {
+    //   path: '/micro-vent-2dModal/dashboard/analysis',
+    //   name: 'micro-vent-2dModal-dashboard-analysis',
+    //   component: () => import('/@/views/vent/monitorManager/deviceMonitor/index.vue'),
+    //   meta: {
+    //     title: '通防综合管控',
+    //     hideBreadcrumb: true,
+    //     hideMenu: true,
+    //   },
+    //   ver: '1',
+    // },
+    // {
+    //   path: '/micro-need-air/:path(.*)*',
+    //   name: 'micro-need-air',
+    //   component: () => import('/@/components/vent/micro/needAir.vue'),
+    //   meta: {
+    //     title: '需风量分析系统',
+    //     hideBreadcrumb: true,
+    //     hideMenu: true,
+    //   },
+    //   ver: '1',
+    // },
+    // {
+    //   path: '/micro-vent-doc/:path(.*)*',
+    //   name: 'micro-vent-doc',
+    //   component: () => import('/@/components/vent/micro/ventDoc.vue'),
+    //   meta: {
+    //     title: '内业管理系统',
+    //     hideBreadcrumb: true,
+    //     hideMenu: true,
+    //   },
+    //   ver: '1',
+    // },
   ],
   ver: '1',
 };

+ 2 - 12
src/utils/http/axios/index.ts

@@ -116,18 +116,8 @@ const transform: AxiosTransform = {
       }
       if (apiUrl && isString(apiUrl)) {
         const firstCode = config.url?.split('/')[1];
-        const currentPort = window.location.port;
-        if (currentPort === '8062' && !proxyFixList.includes(firstCode)) {
-          const originalUrl = config.url;
-          // 判断是否以 /safety 开头
-          if (originalUrl.startsWith('/safety')) {
-            // 替换 /safety 为 /ventanaly-collect/collect
-            config.url = `/dataCenter${originalUrl.replace('/safety', '/ventanaly-collect/collect')}`;
-          } else {
-            // 不是 /safety 开头则正常拼接
-            config.url = `/dataCenter${originalUrl}`;
-          }
-        } else if (!proxyFixList || !proxyFixList.includes(firstCode)) {
+        // const currentPort = window.location.port;
+        if (!proxyFixList || !proxyFixList.includes(firstCode)) {
           config.url = `${apiUrl}${config.url}`;
         }
         // if (config.url?.startsWith('/gasServerImg')) {

+ 0 - 472
src/views/super/drag/page/components/CardList.vue

@@ -1,472 +0,0 @@
-<template>
-  <div class="p-2">
-    <div class="bg-white mb-2 p-4">
-      <BasicForm @register="registerForm" />
-    </div>
-    <a-spin :spinning="spinning">
-      <div class="bg-white p-2">
-        <slot name="cardTitle"></slot>
-        <List :grid="{ gutter: 5, xs: 1, sm: 2, md: 3, lg: 3, xl: 4, xxl: grid }" size="small" :data-source="data" :pagination="paginationProp">
-          <template #header>
-            <div class="flex justify-start space-x-2">
-              <slot name="header"></slot>
-              <Tooltip>
-                <template #title>
-                  <div class="w-50">每行显示数量</div>
-                  <Slider id="slider" v-bind="sliderProp" v-model:value="grid" @change="sliderChange" />
-                </template>
-                <a-button type="primary" style="min-width: 80px">
-                  <TableOutlined />
-                </a-button>
-              </Tooltip>
-              <Tooltip>
-                <template #title>刷新</template>
-                <a-button @click="fetch">
-                  <RedoOutlined />
-                </a-button>
-              </Tooltip>
-            </div>
-          </template>
-          <template #renderItem="{ item, index }">
-            <ListItem style="margin-top: 10px">
-              <Card
-                class="cardItem"
-                size="small"
-                :headStyle="{ textAlign: 'left', fontWeight: '500', background: '#efefef', minHeight: '20px' }"
-                :bodyStyle="{ display: 'none' }"
-              >
-                <template #title>
-                  <em class="aui-tag"><div class="aui-tag-re"></div><div class="aui-tag-ye"></div><div class="aui-tag-bl"></div></em>
-                  <span class="lock-to-right" v-if="item.protectionCode">
-                    <Icon icon="ant-design:lock-filled" :size="15" style="margin: 5px;"/>
-                  </span>
-                </template>
-                <!--<template #extra>-->
-                <!--<Dropdown :trigger="['hover']" :dropMenuList="getDropDownAction(item)" popconfirm>-->
-                <!--<SettingOutlined />-->
-                <!--</Dropdown>-->
-                <!--</template>-->
-                <template #cover>
-                  <div class="title-div ellipsis">{{ item.name }}</div>
-                  <div class="image-div" @click="handleDesign(item)">
-                    <img :src="getCover(item.coverUrl)" />
-                    <div class="image-mask">
-                      <Icon icon="ant-design:eye-outlined" v-if="params.izTemplate === '1' && !hasAuth()" :size="60" />
-                      <Icon icon="ri:drag-drop-fill" v-else :size="60" />
-                    </div>
-                  </div>
-                </template>
-                <template class="ant-card-actions" #actions>
-                  <Tooltip>
-                    <template #title>预览</template>
-                    <EyeOutlined key="view" style="font-size: 20px" @click="handleView(item.id)" />
-                  </Tooltip>
-                  <Dropdown :trigger="['hover']" :dropMenuList="getDropDownAction(item)" popconfirm>
-                    <SettingOutlined key="set" style="font-size: 20px" />
-                  </Dropdown>
-                </template>
-              </Card>
-            </ListItem>
-          </template>
-        </List>
-      </div>
-    </a-spin>
-  </div>
-</template>
-<script lang="ts" setup>
-  import { computed, onMounted, ref, unref } from 'vue';
-  import { EyeOutlined, DeleteOutlined, EditOutlined, RedoOutlined, TableOutlined, EllipsisOutlined, SettingOutlined } from '@ant-design/icons-vue';
-  import { Dropdown } from '/@/components/Dropdown';
-  import { List, Card, Image, Tooltip, Slider, Popconfirm } from 'ant-design-vue';
-  import { BasicForm, useForm } from '/@/components/Form';
-  import { propTypes } from '/@/utils/propTypes';
-  import { isFunction } from '/@/utils/is';
-  import { useSlider } from '/@/components/CardList/src/data';
-  import { useCopyToClipboard } from '/@/hooks/web/useCopyToClipboard';
-  import { useMessage } from '/@/hooks/web/useMessage';
-  import { getFileAccessHttpUrl } from '/@/utils/common/compUtils';
-  import { usePermission } from '/@/hooks/web/usePermission';
-  const { hasPermission } = usePermission();
-  const ListItem = List.Item;
-  const defCover = 'https://jeecgdev.oss-cn-beijing.aliyuncs.com/temp/designCover_1655434422024.png';
-  const { createMessage } = useMessage();
-  const { clipboardRef, copiedRef } = useCopyToClipboard();
-  const spinning = ref<boolean>(false);
-  const grid = ref(5);
-  // 获取slider属性
-  const sliderProp = computed(() => useSlider(4, 7));
-  // 组件接收参数
-  const props = defineProps({
-    // 请求API的参数
-    params: propTypes.object.def({}),
-    //api
-    api: propTypes.func,
-    searchFormSchema: propTypes.object.def([]),
-  });
-  //暴露内部方法
-  const emit = defineEmits(['getMethod', 'delete', 'edit', 'view', 'design', 'add', 'copy']);
-  //数据
-  const data = ref([]);
-  // 切换每行个数
-  // cover图片自适应高度
-  //修改pageSize并重新请求数据
-  const height = computed(() => {
-    return `${200 - grid.value * 8}px`;
-  });
-  const width = computed(() => {
-    let rowNum = grid.value;
-    let width = rowNum==4?"360px":rowNum==6?"230px":rowNum==7?"190px":"280px";
-    return width;
-  });
-  //表单
-  const [registerForm, { validate }] = useForm({
-    schemas: props.searchFormSchema,
-    labelWidth: 80,
-    // 操作按钮配置
-    baseColProps: { span: 6 },
-    actionColOptions: {
-      xs: 24,
-      sm: 12,
-      md: 12,
-      lg: 8,
-      xl: 8,
-      xxl: 6,
-      style: { textAlign: 'left' },
-    },
-    autoSubmitOnEnter: true,
-    submitFunc: handleSubmit,
-    resetFunc: handleReset,
-  });
-
-  //表单提交
-  async function handleSubmit() {
-    const data = await validate();
-    //查询时设置首页
-    pageNo.value = 1;
-    await fetch(data);
-  }
-
-  //表单重置
-  async function handleReset() {
-    await fetch();
-  }
-
-  async function sliderChange(n) {
-    pageSize.value = n * 3;
-    const data = await validate();
-    fetch(data);
-  }
-
-  // 自动请求并暴露内部方法
-  onMounted(() => {
-    fetch();
-    emit('getMethod', fetch);
-  });
-
-  async function fetch(p = {}) {
-    spinning.value = true;
-    const { api, params } = props;
-    if (api && isFunction(api)) {
-      const res = await api({ ...params, pageNo: pageNo.value, pageSize: pageSize.value, ...p });
-      data.value = res.records;
-      total.value = res.total;
-    }
-    spinning.value = false;
-  }
-
-  //分页相关
-  const pageNo = ref(1);
-  const pageSize = ref(15);
-  const total = ref(0);
-  const paginationProp = ref({
-    showSizeChanger: false,
-    showQuickJumper: true,
-    pageSize,
-    pageNo,
-    total,
-    showTotal: (total) => `总 ${total} 条`,
-    onChange: pageChange,
-    onShowSizeChange: pageSizeChange,
-  });
-
-  async function pageChange(p, pz) {
-    pageNo.value = p;
-    pageSize.value = pz;
-    const data = await validate();
-    fetch(data);
-  }
-
-  async function pageSizeChange(current, size) {
-    pageSize.value = size;
-    const data = await validate();
-    fetch(data);
-  }
-
-  /**
-   * 获取封面图
-   */
-  function getCover(url) {
-    return url ? getFileAccessHttpUrl(url) : defCover;
-  }
-
-  /**
-   * 下拉操作栏
-   */
-  function getDropDownAction(record) {
-    //1.如果是模板案例
-    if(props.params.izTemplate === '1'){
-      let commonAction = [];
-      //1.1有权限的用户操作
-      if(hasAuth()){
-         commonAction = [
-          {
-            text: '编辑',
-            event: '1',
-            onClick: handleEdit.bind(null, record),
-          },
-          {
-            text: '复制面板',
-            event: '2',
-            onClick: handleCopy.bind(null, record.id),
-          },{
-             text: '取消模板',
-             event: '6',
-             onClick: handleTemplate.bind(null, record,'0'),
-           }
-        ];
-      }else{
-        ///1.2没有权限的用户只能复制和预览
-         commonAction = [
-          {
-            text: '复制面板',
-            event: '2',
-            onClick: handleCopy.bind(null, record.id),
-          }
-        ];
-      }
-      return commonAction;
-    }else{
-      //非模板案例的tab下的按钮显示
-      let commonAction = [
-        {
-          text: '编辑',
-          event: '1',
-          onClick: handleEdit.bind(null, record),
-        },
-        {
-          text: '复制面板',
-          event: '2',
-          onClick: handleCopy.bind(null, record.id),
-        },
-        {
-          text: '复制路由',
-          event: '3',
-          onClick: handleCopyUrl.bind(null, record.path),
-        },
-      ];
-      //模板按钮的显隐逻辑判断
-      if(hasAuth()){
-        if(record.izTemplate == '1'){
-          commonAction.push({
-            text: '取消模板',
-            event: '6',
-            onClick: handleTemplate.bind(null, record,'0'),
-          })
-        }else{
-          commonAction.push({
-            text: '收藏模板',
-            event: '5',
-            onClick: handleTemplate.bind(null, record,'1'),
-          })
-        }
-      }
-
-      //删除按钮的逻辑判断
-      if(!hasPassword(record)){
-        commonAction.push({
-          text: '删除',
-          event: '4',
-          popConfirm: {
-            title: '是否确认删除',
-            confirm: handleDelete.bind(null, record),
-          }
-        })
-      }else {
-        commonAction.push({
-          text: '删除',
-          event: '4',
-          onClick: handleDelete.bind(null, record),
-        })
-      }
-      return commonAction;
-    }
-  }
-  /**
-   * 判断是否有模板操作权限
-   */
-  function hasAuth(){
-    return hasPermission('drag:template:edit')
-  }
-  /**
-   * 是否包含保护码
-   **/
-  function hasPassword(record){
-    return record.protectionCode && record.protectionCode.length > 0;
-  }
-  /**
-   * 复制面板
-   * @param id
-   */
-  function handleCopy(id) {
-    emit('copy', id);
-  }
-
-  /**
-   * 复制路由地址
-   * @param value
-   */
-  async function handleCopyUrl(value) {
-    if (value) {
-      clipboardRef.value = value;
-      if (unref(copiedRef)) {
-        createMessage.success('复制成功!');
-      }
-    } else {
-      createMessage.warning('复制失败,请检查路径!');
-    }
-  }
-
-  async function handleCreate() {
-    emit('add');
-  }
-
-  async function handleEdit(record) {
-    emit('edit', record);
-  }
-
-  async function handleDelete(record) {
-    emit('delete', record);
-  }
-
-  async function handleView(id) {
-    emit('view', id);
-  }
-
-  async function handleDesign(record) {
-    if(props.params.izTemplate === '1' && !hasAuth()){
-      //模板案例tab下并且没有操作权限时,只能预览
-      emit('view', record.id);
-    }else{
-      emit('design', record);
-    }
-  }
-  
-  async function handleTemplate(record,izTemplate) {
-    emit('template', record.id,izTemplate);
-  }
-</script>
-<style scoped lang="less">
-  .addItem {
-    height: 250px;
-    display: flex;
-    justify-content: center;
-    align-items: center;
-  }
-
-  .cardItem {
-    width: v-bind('width');
-    text-align: center;
-    border-radius: 3px;
-    box-shadow: 0 4px 5px rgb(0 0 0 / 20%);
-
-    &:hover {
-      box-shadow: 0 0 20px 0 #616161;
-    }
-
-    .title-div {
-      height: 30px;
-      line-height: 30px;
-      background: #fff;
-      font-weight: 500;
-      font-size: 14px;
-      border-bottom: 1px solid #efefef;
-    }
-    
-    .ellipsis {
-      display:block;
-      overflow: hidden;
-      white-space: nowrap;
-      text-overflow: ellipsis;
-    }
-    .image-div {
-      img {
-        width: 100%;
-        //object-fit: cover;
-        height: v-bind('height');
-      }
-
-      &:hover {
-        .image-mask {
-          opacity: 1;
-          cursor: default;
-        }
-      }
-
-      .image-mask {
-        display: flex;
-        justify-content: center;
-        align-items: center;
-        position: absolute;
-        width: 100%;
-        height: v-bind('height');
-        bottom: 50px;
-        background: rgba(101, 101, 101, 0.6);
-        color: #fff;
-        opacity: 0;
-      }
-    }
-
-    .aui-tag {
-      display: flex;
-
-      div {
-        width: 6px;
-        height: 6px;
-        background: #333;
-        border-radius: 100px;
-        margin: 0 2px;
-      }
-
-      .aui-tag-re {
-        background: #ff5a52;
-      }
-
-      .aui-tag-ye {
-        background: #e6c02a;
-      }
-
-      .aui-tag-bl {
-        background: #53c22c;
-      }
-    }
-  }
-  /*右上角锁标记*/
-  .lock-to-right{
-      z-index: 0;
-      color: #fff;
-      position: absolute;
-      right: 0;
-      top: 0;
-  }
-  
-  .lock-to-right::after {
-    content: '';
-    position: absolute;
-    top: 0;
-    right: 0;
-    border-style: solid;
-    border-width: 0 50px 40px 0;
-    border-color: transparent #db2828 transparent transparent;
-    z-index: -1
-  }
-</style>

+ 0 - 185
src/views/super/drag/page/components/DragPageModal.vue

@@ -1,185 +0,0 @@
-<template>
-  <BasicModal
-    v-bind="$attrs"
-    :footer="null"
-    wrapClassName="drag-design-process-modal"
-    :style="{ top: '0', padding: '0' }"
-    @register="registerModal"
-    :bodyStyle="bodyStyle"
-    :canFullscreen="false"
-    :closable="false"
-    defaultFullscreen
-    destroyOnClose
-  >
-    <div id="dragEngineBox" style="height: 100vh; overflow-y: auto">
-      <DragEngine
-        v-if="refresh"
-        :dragData="dragData"
-        :pageId="pageId"
-        :token="getToken()"
-        :tenantId="getTenantId()"
-        :lowAppId="lowAppId"
-        :isLowApp="false"
-        @save="handleSave"
-        @close="handleClose"
-        @scroll="handleScroll"
-        @openWindow="openWindow"
-      />
-    </div>
-  </BasicModal>
-  <PasswordModal ref="passwordRef" @closed="closeModal" />
-</template>
-
-<script lang="ts" setup>
-  import { ref, unref, reactive, nextTick, computed } from 'vue';
-  import { getToken, getTenantId } from '/@/utils/auth';
-  import { queryById } from '../page.api';
-  import { BasicModal, useModalInner } from '/src/components/Modal';
-  import { getCacheByDynKey } from '/@/utils/auth';
-  import { JDragConfigEnum } from '/@/enums/jeecgEnum';
-  import PasswordModal from './PasswordModal.vue';
-  // 声明Emits
-  const emit = defineEmits(['success', 'register', 'close']);
-  const bodyStyle = {
-    padding: '0',
-    height: window.innerHeight + 'px',
-  };
-
-  //组件接受传参
-  const props = defineProps({
-    lowAppId: { type: String },
-    // 是否低代码模式(简化使用难度)
-    isLowApp: { type: Boolean, default: true },
-  });
-
-  //页面Id
-  const pageId = ref('');
-  const title = ref('');
-  const refresh = ref(true);
-  const passwordRef = ref();
-  //拖拽信息
-  const dragData = ref({
-    componentData: [],
-    name: '',
-    coverUrl: '',
-    backgroundColor: '',
-    backgroundImage: '',
-    designType: 100,
-    theme: 'default',
-    style: 'default',
-    updateCount: null,
-  });
-  //表单赋值
-  const [registerModal, { setModalProps, closeModal }] = useModalInner(async (data) => {
-    setModalProps({ showCancelBtn: false, showOkBtn: false });
-    refresh.value = false;
-    pageId.value = data.record.id;
-    //校验保护码
-    checkCode(data.record);
-    title.value = `页面设计 [${data.record.name}]`;
-    const res = await queryById({ id: unref(pageId) });
-    if (res.success) {
-      dragData.value.name = res.result.name;
-      dragData.value.coverUrl = res.result.coverUrl;
-      let template = res.result.template ? JSON.parse(res.result.template) : [];
-      dragData.value.componentData = template;
-      dragData.value.backgroundColor = res.result.backgroundColor;
-      dragData.value.backgroundImage = res.result.backgroundImage;
-      dragData.value.designType = res.result.designType;
-      dragData.value.style = res.result.style || 'default';
-      dragData.value.theme = res.result.theme || 'default';
-      //设置乐观锁字段
-      dragData.value.updateCount = res.result.updateCount;
-    }
-    setTimeout(() => {
-      nextTick(() => {
-        refresh.value = true;
-      });
-    }, 300);
-  });
-  /**
-   * 检验保护码
-   */
-  function checkCode(result) {
-    const password = result.protectionCode;
-    let passIsExit = getCacheByDynKey(JDragConfigEnum.DRAG_CACHE_PREFIX + unref(pageId));
-    let hasPassword = password && password.length > 0;
-    if (hasPassword && !passIsExit) {
-      passwordRef.value.showModal('design', result);
-      passwordRef.value.extraMsg = '';
-    }
-  }
-  /**
-   * 关闭事件
-   */
-  function handleClose() {
-    closeModal();
-    emit('success');
-    emit('close');
-  }
-  /**
-   * 保存布局后的回调事件
-   * @param data
-   */
-  function handleSave(data) {
-    //保存后不关闭modal
-    //closeModal()
-    emit('success');
-  }
-  /**
-   * 新增组件后的滚动事件
-   * @param data
-   */
-  function handleScroll(scrollHeight) {
-    let dom = document.getElementById('dragEngineBox');
-    scrollIntoView(dom, scrollHeight);
-  }
-
-  /**
-   * 模拟滚动效果
-   * @param element 滚动元素
-   * @param scrollHeight 滚动高度
-   */
-  function scrollIntoView(element, scrollHeight) {
-    // 当前滚动高度
-    let scrollTop = element.scrollTop;
-    // 滚动step方法
-    const step = () => {
-      // 距离目标滚动距离
-      let distance = scrollHeight - scrollTop;
-      // 目标需要滚动的距离,也就是只走全部距离的十分之一
-      scrollTop = scrollTop + distance / 10;
-      if (Math.abs(distance) < 1) {
-        element.scrollTo(0, scrollHeight);
-      } else {
-        element.scrollTo(0, scrollTop);
-        setTimeout(step, 20);
-      }
-    };
-    step();
-  }
-
-  /**
-   * 打开分享
-   * @param url
-   */
-  function openWindow(url) {
-    window.open(url, '_blank');
-  }
-</script>
-<style lang="less">
-  @import '@qiaoqiaoyun/drag-free/lib/index.css';
-
-  .drag-design-process-modal {
-    .ant-modal-header {
-      padding: 0 !important;
-    }
-    .ant-modal-body > .scrollbar {
-      padding-top: 0;
-    }
-
-    .jeecg-modal-content > .scroll-container {
-      padding: 0 !important;
-    }
-  }
-</style>

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

@@ -1,71 +0,0 @@
-<template>
-  <BasicModal v-bind="$attrs" @register="registerModal" okText="保存" :title="getTitle" @ok="handleSubmit" :width="700" destroyOnClose>
-    <BasicForm @register="registerForm" />
-    <template #appendFooter>
-      <a-button type="primary" @click="handleSubmit(1)">保存并设计</a-button>
-    </template>
-  </BasicModal>
-</template>
-<script lang="ts" setup>
-  import { ref, computed, unref } from 'vue';
-  import { BasicModal, useModalInner } from '/@/components/Modal';
-  import { BasicForm, useForm } from '/@/components/Form/index';
-  import { formSchema } from '../page.data';
-  import { saveOrUpdate } from '../page.api';
-  import { removeCacheByDynKey } from '/@/utils/auth';
-  import { JDragConfigEnum } from '/@/enums/jeecgEnum';
-  import { encryptByBase64, decodeByBase64 } from '/@/utils/cipher.ts';
-  // 声明Emits
-  const emit = defineEmits(['success', 'register']);
-  const isUpdate = ref(true);
-  //表单配置
-  const [registerForm, { resetFields, setFieldsValue, validate }] = useForm({
-    schemas: formSchema,
-    showActionButtonGroup: false,
-  });
-  //表单赋值
-  const [registerModal, { setModalProps, closeModal }] = useModalInner(async (data) => {
-    //重置表单
-    await resetFields();
-    setModalProps({ confirmLoading: false });
-    isUpdate.value = !!data?.isUpdate;
-    if (unref(isUpdate)) {
-      let obj = { ...data.record };
-      //解密
-      if (obj.protectionCode && obj.protectionCode.length > 0) {
-        obj.protectionCode = decodeByBase64(obj.protectionCode);
-      }
-      //表单赋值
-      await setFieldsValue({
-        ...obj,
-      });
-    }
-  });
-  //设置标题
-  const getTitle = computed(() => (!unref(isUpdate) ? '新增' : '编辑'));
-
-  /**
-   * 表单提交事件
-   * @param flag 标识0:保存/1:保存并设计
-   */
-  async function handleSubmit(flag = 0) {
-    try {
-      const values = await validate();
-      setModalProps({ confirmLoading: true });
-      //加密
-      if (values.protectionCode) {
-        values.protectionCode = encryptByBase64(values.protectionCode);
-      }
-      //提交表单
-      const res = await saveOrUpdate(values, isUpdate.value);
-      //编辑后,将缓存中的密码清除掉
-      values.id && removeCacheByDynKey(JDragConfigEnum.DRAG_CACHE_PREFIX + values.id);
-      //关闭弹窗
-      closeModal();
-      //刷新列表
-      emit('success', flag === 1 ? res : null);
-    } finally {
-      setModalProps({ confirmLoading: false });
-    }
-  }
-</script>

+ 0 - 105
src/views/super/drag/page/components/PasswordModal.vue

@@ -1,105 +0,0 @@
-<!--面板保护密码弹窗-->
-<template>
-  <a-modal
-    v-model:visible="visible"
-    okText="确认"
-    :bodyStyle="{ padding: '24px 0 0 0' }"
-    :closable="false"
-    :maskClosable="false"
-    v-bind="$attrs"
-    centered
-    destroyOnClose
-  >
-    <a-form ref="formRef" :model="formState" :rules="rules" :label-col="labelCol" :wrapper-col="wrapperCol">
-      <a-form-item :extra="extraMsg" label="保护码" name="password">
-        <a-input v-model:value="formState.password" type="password" />
-      </a-form-item>
-    </a-form>
-    <template #footer>
-      <a-button @click="handleClosed">关闭</a-button>
-      <a-button key="submit" type="primary" @click="handleOk">确认</a-button>
-    </template>
-  </a-modal>
-</template>
-<script lang="ts">
-  import { defineComponent, reactive, ref, toRaw, unref } from 'vue';
-  import { RuleObject, ValidateErrorEntity } from 'ant-design-vue/es/form/interface';
-  import { encryptByBase64 } from '/@/utils/cipher.ts';
-  import { setCacheByDynKey } from '/@/utils/auth';
-  import { JDragConfigEnum } from '/@/enums/jeecgEnum';
-  
-  export default defineComponent({
-    name: 'PasswordModal',
-    emits: ['success', 'closed'],
-    setup(props, { emit }) {
-      //表单modal实例
-      const formRef = ref();
-      //表单信息
-      const formModal = ref();
-      //保护码提示语
-      const extraMsg = ref('面板被保护中,编辑前请先输入保护码');
-      //操作类型
-      const operatorType = ref('');
-      //弹窗显隐标记
-      const visible = ref(false);
-      //表单信息
-      const formState = reactive({ password: '' });
-      //显示modal
-      function showModal(type,record) {
-        formModal.value = { ...record };
-        formState.password = '';
-        operatorType.value = type;
-        visible.value = true;
-      }
-      //关闭后的回调
-      function handleClosed() {
-        visible.value = false;
-        emit('closed');
-      }
-      //校验密码
-      let validatePass = async (rule: RuleObject, value: string) => {
-        if (value === '') {
-          return Promise.reject('密码不能为空');
-        } else {
-          let password = formModal.value.protectionCode;
-          if (password !== encryptByBase64(value)) {
-            return Promise.reject('密码不正确');
-          }
-          return Promise.resolve();
-        }
-      };
-      //校验规则
-      const rules = { password: [{ validator: validatePass, trigger: 'change' }] };
-      //确实
-      const handleOk = () => {
-        formRef.value
-          .validate()
-          .then(async () => {
-            let values = toRaw(unref(formModal));
-            //返回表单信息,编辑时候需要
-            emit('success', unref(operatorType),values);
-            //判断是设计页面的时候弹窗
-            let isEdit = unref(extraMsg) && unref(extraMsg).length > 0;
-            //设计页面密码正确后,保存到缓存中
-            !isEdit && setCacheByDynKey(JDragConfigEnum.DRAG_CACHE_PREFIX+values.id, values.protectionCode);
-            visible.value = false;
-          })
-          .catch((error) => {
-            console.log('error', error);
-          });
-      };
-      return {
-        visible,
-        showModal,
-        handleClosed,
-        extraMsg,
-        handleOk,
-        formRef,
-        formState,
-        rules,
-        labelCol: { span: 4 },
-        wrapperCol: { span: 14 },
-      };
-    },
-  });
-</script>

+ 0 - 74
src/views/super/drag/page/page.api.ts

@@ -1,74 +0,0 @@
-import { defHttp } from '/@/utils/http/axios';
-import { Modal } from 'ant-design-vue';
-
-enum Api {
-  list = '/drag/page/list',
-  queryById = '/drag/page/queryById',
-  queryPageById = '/drag/page/queryPageById',
-  save = '/drag/page/add',
-  edit = '/drag/page/edit',
-  copyPage = '/drag/page/copyPage',
-  deleteOne = '/drag/page/delete',
-  deleteBatch = '/drag/page/deleteBatch',
-}
-
-/**
- * 列表
- * @param params
- */
-export const list = (params) => defHttp.get({ url: Api.list, params });
-/**
- * 根据id查询
- * @param params
- */
-export const queryById = (params) => defHttp.get({ url: Api.queryById, params }, { isTransformResponse: false });
-/**
- * 根据id查询(不租户隔离)
- * @param params
- */
-export const queryPageById = (params) => defHttp.get({ url: Api.queryPageById, params }, { isTransformResponse: false });
-
-/**
- * 保存或者更新
- * @param params
- */
-export const saveOrUpdate = (params, isUpdate) => {
-  let url = isUpdate ? Api.edit : Api.save;
-  return defHttp.post({ url: url, params });
-};
-/**
- * 删除
- */
-export const deleteOne = (params, handleSuccess) => {
-  return defHttp.delete({ url: Api.deleteOne, params }, { joinParamsToUrl: true }).then(() => {
-    handleSuccess();
-  });
-};
-
-/**
- * 批量删除
- * @param params
- */
-export const batchDelete = (params, handleSuccess) => {
-  Modal.confirm({
-    title: '确认删除',
-    content: '是否删除选中数据',
-    okText: '确认',
-    cancelText: '取消',
-    onOk: () => {
-      return defHttp.delete({ url: Api.deleteBatch, data: params }, { joinParamsToUrl: true }).then(() => {
-        handleSuccess();
-      });
-    },
-  });
-};
-
-/**
- * 复制
- */
-export const copyPage = (params, handleSuccess) => {
-  return defHttp.get({ url: Api.copyPage, params }, { isTransformResponse: false }).then(() => {
-    handleSuccess();
-  });
-};
-

+ 0 - 66
src/views/super/drag/page/page.data.ts

@@ -1,66 +0,0 @@
-import { BasicColumn, FormSchema } from '/@/components/Table';
-
-export const columns: BasicColumn[] = [
-  {
-    title: '名称',
-    align: 'center',
-    dataIndex: 'name',
-  },
-];
-export const searchFormSchema: FormSchema[] = [
-  {
-    label: '名称',
-    field: 'name',
-    component: 'Input',
-    colProps: { span: 6 },
-  },
-];
-
-export const formSchema: FormSchema[] = [
-  {
-    label: '',
-    field: 'id',
-    component: 'Input',
-    show: false,
-  },
-  {
-    label: '名称',
-    field: 'name',
-    component: 'Input',
-    required: true,
-  },
-  {
-    label: '封面图',
-    field: 'coverUrl',
-    component: 'JImageUpload',
-    componentProps: {
-      fileMax: 1,
-    },
-  },
-  {
-    label: '分类',
-    field: 'type',
-    component: 'Select',
-    defaultValue: '1',
-    required: true,
-    componentProps: {
-      options: [
-        {
-          label: '仪表盘设计',
-          value: '1',
-          key: '1',
-        },
-        {
-          label: '门户设计器',
-          value: '2',
-          key: '2',
-        }
-      ]
-    }
-  },
-  {
-    label: '保护码',
-    field: 'protectionCode',
-    component: 'StrengthMeter'
-  }
-];

+ 0 - 176
src/views/super/drag/page/pageList.vue

@@ -1,176 +0,0 @@
-<template>
-  <CardList
-    :searchFormSchema="searchFormSchema"
-    :params="params"
-    :api="list"
-    @getMethod="getMethod"
-    @delete="handleDelete"
-    @view="handleView"
-    @design="handleDesign"
-    @edit="handleEdit"
-    @copy="handleCopy"
-    @template="handleTemplate"
-  >
-    <template #header>
-      <a-button preIcon="ant-design:plus-outlined" type="primary" @click="handleCreate">新增</a-button>
-    </template>
-    <template #cardTitle>
-      <a-tabs defaultActiveKey="1" @change="tabChange" size="small">
-        <a-tab-pane key="1">
-          <template #tab>
-            <span>
-              <Icon icon="ant-design:bar-chart-outlined" :size="20"></Icon>
-              仪表盘设计
-            </span>
-          </template>
-        </a-tab-pane>
-        <a-tab-pane key="3">
-          <template #tab>
-            <span>
-              <Icon icon="ant-design:star-outlined" :size="20"></Icon>
-              模板
-            </span>
-          </template>
-        </a-tab-pane>
-      </a-tabs>
-    </template>
-  </CardList>
-  <!--编辑弹窗-->
-  <PageModal @register="registerModal" @success="handleOk" />
-  <!--保护密码弹窗-->
-  <PasswordModal ref="passwordRef" @success="checkPassOk"/>
-  <!--页面配置弹窗-->
-  <DragPageModal @register="registerDragModal" @success="success" :isLowApp="false"/>
-</template>
-<script lang="ts" setup name="drag-page">
-  import CardList from './components/CardList.vue';
-  import PageModal from './components/PageModal.vue';
-  import PasswordModal from './components/PasswordModal.vue';
-  import DragPageModal from './components/DragPageModal.vue';
-  import { ref,reactive } from 'vue';
-  import { useModal } from '/@/components/Modal';
-  import { router } from '/@/router';
-  import { list, deleteOne, copyPage ,saveOrUpdate} from './page.api';
-  import { searchFormSchema } from './page.data';
-
-  const [registerModal, { openModal }] = useModal();
-  const [registerDragModal, { openModal: openDragModal }] = useModal();
-  const passwordRef = ref()
-  let reload = (params?) => {};
-   //额外的查询参数
-  const params = reactive({type:"1",izTemplate:'0'});
-  // 获取内部fetch方法;
-  function getMethod(m: any) {
-    reload = m;
-  }
-  /**
-   * 提交后的回调
-   */
-  function handleOk(record) {
-    reload();
-    record && handleDesign(record);
-  }
-
-  /**
-   * 新增事件
-   */
-  function handleCreate() {
-    openModal(true, {
-      isUpdate: false,
-    });
-  }
-
-  /**
-   * 编辑
-   */
-  function handleEdit(record: Recordable) {
-    //判断是否有保护密码
-    let hasPassword = record.protectionCode && record.protectionCode.length > 0;
-    if (hasPassword) {
-      passwordRef.value.showModal('edit', record);
-      //passwordRef.value.extraMsg = '面板被保护中,编辑前请先输入保护码';
-    } else {
-      openModal(true, {
-        record,
-        isUpdate: true,
-      });
-    }
-  }
-  /**
-   * 密码校验成功
-   */
-  async function checkPassOk(type, record) {
-    if (type == 'edit') {
-      openModal(true, {
-        record,
-        isUpdate: true,
-      });
-    } else if (type == 'delete') {
-      await deleteOne({ id: record.id }, reload);
-    }
-  }
-
-  /**
-   * 删除事件
-   */
-  async function handleDelete(record) {
-    //判断是否有保护密码
-    let hasPassword = record.protectionCode && record.protectionCode.length > 0;
-    if (hasPassword) {
-      passwordRef.value.showModal('delete', record);
-      passwordRef.value.extraMsg = '面板被保护中,删除前请先输入保护码';
-    } else {
-      await deleteOne({ id: record.id }, reload);
-    }
-  }
-
-  /**
-   * 页面配置
-   */
-  function handleDesign(record) {
-    openDragModal(true, {
-      record,
-      isUpdate: true,
-    });
-  }
-
-  /**
-   * 页面预览
-   */
-  function handleView(id) {
-    router.push({ name: 'drag-page-view-@id'!, params: { id } });
-  }
-  /**
-   * 面板复制
-   */
-  async function handleCopy(id) {
-    await copyPage({ id }, reload);
-  }
-  /**
-   * 收藏模板
-   */
-  async function handleTemplate(id,template) {
-    let params = {id, izTemplate:template};
-    const res = await saveOrUpdate(params,true);
-    console.log('handleTemplate-------------->res:',res)
-    reload();
-  }
-  // 面板类型
-  function tabChange(key) {
-    if(key!=='3'){
-      params.type = key;
-      params.izTemplate = '0';
-    }else{
-      params.type = '';
-      params.izTemplate = '1';
-    }
-    reload({pageNo:1});
-  }
-
-  /**
-   * 成功回调,刷新列表
-   */
-  function success() {
-    reload();
-  }
-</script>

+ 0 - 63
src/views/super/drag/page/useExportImage.ts

@@ -1,63 +0,0 @@
-import { ref } from 'vue';
-import html2canvas from 'html2canvas';
-
-/**
- * 用于导出生成image
- */
-export function useExportImage() {
-  const exportRef = ref();
-
-  /**
-   * 导出图片触发事件
-   * @param fileName
-   */
-  function onExportImage(fileName) {
-    const ele = exportRef.value;
-    if (!ele) {
-      console.error('没有导出对象');
-      return;
-    }
-    const size = {
-      width: ele.offsetWidth,
-      height: ele.offsetHeight,
-    };
-    html2canvas(ele, { useCORS: true, logging: true }).then(async (canvas) => {
-      const dataURL = canvas.toDataURL('image/png');
-      await download(dataURL, size, fileName);
-    });
-  }
-
-  async function download(imgUrl, size, fileName) {
-    const dataUrl = await getBase64(imgUrl, size);
-    const link: any = document.createElement('a');
-    link.href = dataUrl;
-    link.download = `${fileName}.png`;
-    link.click();
-  }
-
-  function getBase64(url, size) {
-    return new Promise((resolve) => {
-      let canvas: any = document.createElement('canvas');
-      const ctx = canvas.getContext('2d');
-      const img = new Image();
-      // 允许跨域
-      img.crossOrigin = 'Anonymous';
-      img.src = url;
-      img.onload = () => {
-        // eslint-disable-next-line prefer-destructuring
-        canvas.height = size.height;
-        // eslint-disable-next-line prefer-destructuring
-        canvas.width = size.width;
-        ctx!.drawImage(img, 0, 0, size.width, size.height);
-        const dataURL = canvas.toDataURL('image/png');
-        canvas = null;
-        resolve(dataURL);
-      };
-    });
-  }
-
-  return {
-    exportRef,
-    onExportImage,
-  };
-}

+ 0 - 158
src/views/super/drag/page/view.vue

@@ -1,158 +0,0 @@
-<template>
-  <div ref="exportRef">
-    <ViewEngine :dragData="dragData" :token="getToken()" @go="compRouter" @btnClick="btnClick" />
-  </div>
-</template>
-
-<script lang="ts" name="drag-page-view" setup>
-  import { ref, unref, reactive, computed, watch } from 'vue';
-  import { useRouter, useRoute } from 'vue-router';
-  import { queryById } from './page.api';
-  import { useTabs } from '/@/hooks/web/useTabs';
-  import { useModal } from '/@/components/Modal';
-  import { openWindow } from '/@/utils';
-  import { getToken } from '/@/utils/auth';
-  import { useUserStore } from '/@/store/modules/user';
-  import { router } from '/@/router';
-  import { useExportImage } from './useExportImage';
-
-  const { setTitle } = useTabs();
-  const userStore = useUserStore();
-  //当前页面id
-  const currentId: any = ref('');
-  //当前路由信息
-  const { currentRoute, push, resolve: pathResolve } = useRouter();
-  //拖拽信息
-  const dragData = ref({
-    name: '',
-    coverUrl: '',
-    backgroundColor: '',
-    theme: 'default',
-    style: 'default',
-    designType: 100,
-    backgroundImage: '',
-    componentData: [],
-  });
-
-  //初始化数据
-  async function initData() {
-    const { params, path } = unref(currentRoute);
-    let id = params.id ? params.id : path.substr(path.lastIndexOf('/') + 1);
-    currentId.value = id;
-    const res = await queryById({ id });
-    if (res.success) {
-      console.info(123, res);
-      await setTitle(res.result.name);
-      let template = res.result.template ? JSON.parse(res.result.template) : [];
-      dragData.value.componentData = template;
-      dragData.value.name = res.result.name;
-      dragData.value.coverUrl = res.result.coverUrl;
-      dragData.value.backgroundColor = res.result.backgroundColor;
-      dragData.value.backgroundImage = res.result.backgroundImage;
-      dragData.value.designType = res.result.designType;
-      dragData.value.theme = res.result.theme || 'default';
-      dragData.value.style = res.result.style || 'default';
-    }
-  }
-  //界面跳转
-  function compRouter(url: any, params: any) {
-    if (url && url.indexOf('http') > -1) {
-      openWindow(url);
-    } else {
-      push({ path: url, query: params });
-    }
-  }
-  //********************按钮问点击回调后的逻辑begin*****************************************
-  const [registerModal, { openModal }] = useModal();
-  // 注册创建记录弹窗
-  const [registerRecordModal, { openModal: openRecordModal }] = useModal();
-  const route = useRoute();
-
-  /**
-   * 跳转路由页面
-   * @param path
-   * @param openMode
-   */
-  function goPage(nextRoute, params) {
-    if (params.openMode === '2') {
-      // 新页面打开视图
-      let winUrl = pathResolve(nextRoute);
-      window.open(winUrl.href, '_blank');
-    } else {
-      // 当前页面打开视图
-      push(nextRoute);
-    }
-  }
-
-  function btnClick(params) {
-    console.log('btnClick---->params', params);
-    let operationType = params.operationType;
-    if (operationType == '1') {
-      let modalData = {
-        mode: 'add',
-        desformCode: params.worksheet.value,
-        dataId: null,
-        isOnline: false,
-        viewId: '',
-        lowAppId: route.params.appId,
-      };
-      console.log('创建记录 打开modal的参数', modalData);
-      openRecordModal(true, modalData);
-    } else if (operationType == '2') {
-      let appId = route.params.appId;
-      let designFormCode = params.worksheet.value;
-      let nextRoute = {
-        path: `/myapp/${appId}/desform/${designFormCode}`,
-      };
-      if (params.view) {
-        nextRoute['query'] = {
-          view: params.view,
-        };
-      }
-      console.log('打开视图 路由', nextRoute);
-      goPage(nextRoute, params);
-      //update-end-author:taoyan date:2023-2-23 for: QQYUN-3674【仪表盘】按钮配置,打开创建model和打开视图
-    } else if (operationType == '3') {
-      //update-begin-author:taoyan date:2023-3-1 for: QQYUN-4420【仪表盘】打开仪表盘 打不开或者跳转到后台了 应该在应用里边打开
-      let appId = route.params.appId;
-      let dragId = params.customPage.value;
-      let nextRoute = {
-        path: `/myapp/${appId}/drag/${dragId}`,
-      };
-      goPage(nextRoute, params);
-      //update-end-author:taoyan date:2023-3-1 for: QQYUN-4420【仪表盘】打开仪表盘 打不开或者跳转到后台了 应该在应用里边打开
-    } else if (operationType == '4') {
-      //打开链接
-    }
-  }
-  //********************按钮问点击回调后的逻辑end*****************************************
-
-  //update-begin-author:taoyan date:2023-2-24 for: QQYUN-3663【应用】仪表盘页面上,添加分享和导出图片功能
-  const emit = defineEmits(['loadOk']);
-  const props = defineProps({
-    routeInfo: {
-      type: Object,
-      default: () => {},
-    },
-  });
-  const { exportRef, onExportImage } = useExportImage();
-  watch(
-    () => props.routeInfo,
-    (info) => {
-      if (info) {
-        if (info.exportImage) {
-          console.log('导出图片》》》');
-          let name = dragData.value.name;
-          onExportImage(name);
-        }
-      }
-    },
-    { deep: true, immediate: true }
-  );
-  //update-end-author:taoyan date:2023-2-24 for: QQYUN-3663【应用】仪表盘页面上,添加分享和导出图片功能
-
-  initData();
-</script>
-<style lang="less" scoped>
-  @import '@qiaoqiaoyun/drag-free/lib/index.css';
-</style>

+ 0 - 14
src/views/vent/bundle/bundleMonitorTable/bundle-table.api.ts

@@ -1,14 +0,0 @@
-import { defHttp } from '/@/utils/http/axios';
-
-enum Api {
-  getBundleInfo = '/safety/reportLocalData/queryReportData',
-  getFileList = '/safety/reportLocalData/list',
-  getFileListById = '/safety/reportLocalData/queryById',
-}
-/**
- *
- * @param params
- */
-export const getBundleInfoList = (params) => defHttp.post({ url: Api.getBundleInfo, params });
-export const getAllFileList = (params) => defHttp.get({ url: Api.getFileList, params });
-export const getAllFileListById = (params) => defHttp.get({ url: Api.getFileListById, params });

+ 0 - 1955
src/views/vent/bundle/bundleMonitorTable/bundle-table.data.ts

@@ -1,1955 +0,0 @@
-import { BasicColumn } from '/@/components/Table';
-export const columns: BasicColumn[] = [
-  {
-    title: '序号',
-    width: 60,
-    align: 'center',
-    dataIndex: 'xh',
-    key: 'xh',
-  },
-  {
-    title: '测点名称',
-    dataIndex: 'jcdd',
-    key: 'jcdd',
-    width: 130,
-    align: 'center',
-  },
-  {
-    title: '设备名称',
-    dataIndex: 'sbmc',
-    key: 'sbmc',
-    width: 130,
-    align: 'center',
-  },
-  {
-    title: '设备编号',
-    dataIndex: 'sbbh',
-    key: 'sbbh',
-    width: 130,
-    align: 'center',
-  },
-  {
-    title: '管路编号',
-    dataIndex: 'glbh',
-    key: 'glbh',
-    width: 130,
-    align: 'center',
-  },
-  {
-    title: '分析次数',
-    dataIndex: 'fxcs',
-    key: 'fxcs',
-    width: 60,
-    align: 'center',
-  },
-  {
-    title: 'CO(PPM)',
-    children: [
-      {
-        title: '最大值',
-        dataIndex: 'co_max',
-        key: 'co_max',
-        width: 80,
-        align: 'center',
-      },
-      {
-        title: '平均值',
-        dataIndex: 'co_ave',
-        key: 'co_ave',
-        width: 80,
-        align: 'center',
-      },
-    ],
-  },
-  {
-    title: 'CO₂(%)',
-    children: [
-      {
-        title: '最大值',
-        dataIndex: 'co2_max',
-        key: 'co2_max',
-        width: 80,
-        align: 'center',
-      },
-      {
-        title: '平均值',
-        dataIndex: 'co2_ave',
-        key: 'co2_ave',
-        width: 80,
-        align: 'center',
-      },
-    ],
-  },
-  {
-    title: 'O₂(%)',
-    children: [
-      {
-        title: '最小值',
-        dataIndex: 'o2_min',
-        key: 'o2_min',
-        width: 80,
-        align: 'center',
-      },
-      {
-        title: '平均值',
-        dataIndex: 'o2_ave',
-        key: 'o2_ave',
-        width: 80,
-        align: 'center',
-      },
-    ],
-  },
-  {
-    title: 'CH₄(%)',
-    children: [
-      {
-        title: '最大值',
-        dataIndex: 'ch4_max',
-        key: 'ch4_max',
-        width: 80,
-        align: 'center',
-      },
-      {
-        title: '平均值',
-        dataIndex: 'ch4_ave',
-        key: 'ch4_ave',
-        width: 80,
-        align: 'center',
-      },
-    ],
-  },
-  {
-    title: 'C₂H₂(PPM)',
-    children: [
-      {
-        title: '最大值',
-        dataIndex: 'c2h2_max',
-        key: 'c2h2_max',
-        width: 80,
-        align: 'center',
-      },
-      {
-        title: '平均值',
-        dataIndex: 'c2h2_ave',
-        key: 'c2h2_ave',
-        width: 80,
-        align: 'center',
-      },
-    ],
-  },
-  {
-    title: 'C₂H₄(PPM)',
-    children: [
-      {
-        title: '最大值',
-        dataIndex: 'c2h4_max',
-        key: 'c2h4_max',
-        width: 80,
-        align: 'center',
-      },
-      {
-        title: '平均值',
-        dataIndex: 'c2h4_ave',
-        key: 'c2h4_ave',
-        width: 80,
-        align: 'center',
-      },
-    ],
-  },
-  {
-    title: 'N₂(PPM)',
-    children: [
-      {
-        title: '最大值',
-        dataIndex: 'n2_max',
-        key: 'n2_max',
-        width: 80,
-        align: 'center',
-      },
-      {
-        title: '平均值',
-        dataIndex: 'n2_ave',
-        key: 'n2_ave',
-        width: 80,
-        align: 'center',
-      },
-    ],
-  },
-  {
-    title: '煤自燃阶段',
-    dataIndex: 'internalFireWarnLevel',
-    width: 100,
-    align: 'center',
-  },
-  {
-    title: '操作',
-    dataIndex: 'action',
-    width: 100,
-    align: 'center',
-  },
-];
-export const Hjtcolumns: BasicColumn[] = [
-  {
-    title: '序号',
-    width: 60,
-    align: 'center',
-    dataIndex: 'xh',
-    key: 'xh',
-  },
-  {
-    title: '管路编号',
-    dataIndex: 'glbh',
-    key: 'glbh',
-    width: 130,
-    align: 'center',
-  },
-  {
-    title: '管路名称',
-    dataIndex: 'jcdd',
-    key: 'jcdd',
-    width: 130,
-    align: 'center',
-  },
-  {
-    title: 'CO(PPM)',
-    children: [
-      {
-        title: '最大值',
-        dataIndex: 'co_max',
-        key: 'co_max',
-        width: 80,
-        align: 'center',
-      },
-      {
-        title: '平均值',
-        dataIndex: 'co_ave',
-        key: 'co_ave',
-        width: 80,
-        align: 'center',
-      },
-    ],
-  },
-  {
-    title: 'CO₂(%)',
-    children: [
-      {
-        title: '最大值',
-        dataIndex: 'co2_max',
-        key: 'co2_max',
-        width: 80,
-        align: 'center',
-      },
-      {
-        title: '平均值',
-        dataIndex: 'co2_ave',
-        key: 'co2_ave',
-        width: 80,
-        align: 'center',
-      },
-    ],
-  },
-  {
-    title: 'O₂(%)',
-    children: [
-      {
-        title: '最小值',
-        dataIndex: 'o2_min',
-        key: 'o2_min',
-        width: 80,
-        align: 'center',
-      },
-      {
-        title: '平均值',
-        dataIndex: 'o2_ave',
-        key: 'o2_ave',
-        width: 80,
-        align: 'center',
-      },
-    ],
-  },
-  {
-    title: 'CH₄(%)',
-    children: [
-      {
-        title: '最大值',
-        dataIndex: 'ch4_max',
-        key: 'ch4_max',
-        width: 80,
-        align: 'center',
-      },
-      {
-        title: '平均值',
-        dataIndex: 'ch4_ave',
-        key: 'ch4_ave',
-        width: 80,
-        align: 'center',
-      },
-    ],
-  },
-  {
-    title: 'N₂(PPM)',
-    children: [
-      {
-        title: '最大值',
-        dataIndex: 'n2_max',
-        key: 'n2_max',
-        width: 80,
-        align: 'center',
-      },
-      {
-        title: '平均值',
-        dataIndex: 'n2_ave',
-        key: 'n2_ave',
-        width: 80,
-        align: 'center',
-      },
-    ],
-  },
-  {
-    title: 'C₂H₂(PPM)',
-    children: [
-      {
-        title: '最大值',
-        dataIndex: 'c2h2_max',
-        key: 'c2h2_max',
-        width: 80,
-        align: 'center',
-      },
-      {
-        title: '平均值',
-        dataIndex: 'c2h2_ave',
-        key: 'c2h2_ave',
-        width: 80,
-        align: 'center',
-      },
-    ],
-  },
-  {
-    title: 'C₂H₄(PPM)',
-    children: [
-      {
-        title: '最大值',
-        dataIndex: 'c2h4_max',
-        key: 'c2h4_max',
-        width: 80,
-        align: 'center',
-      },
-      {
-        title: '平均值',
-        dataIndex: 'c2h4_ave',
-        key: 'c2h4_ave',
-        width: 80,
-        align: 'center',
-      },
-    ],
-  },
-  {
-    title: '备注',
-    children: [
-      {
-        title: '采空区米数',
-        dataIndex: 'remark',
-        key: 'remark',
-        width: 80,
-        align: 'center',
-      },
-    ],
-  },
-  {
-    title: '煤自燃阶段',
-    dataIndex: 'internalFireWarnLevel',
-    width: 100,
-    align: 'center',
-  },
-  {
-    title: '操作',
-    dataIndex: 'action',
-    width: 100,
-    align: 'center',
-  },
-];
-export const Bdcolumns: BasicColumn[] = [
-  {
-    title: '束管编号',
-    width: 80,
-    align: 'center',
-    dataIndex: 'xh',
-    key: 'xh',
-  },
-  {
-    title: '监测地点',
-    dataIndex: 'jcdd',
-    key: 'jcdd',
-    width: 130,
-    align: 'center',
-  },
-  {
-    title: '氧气(O₂%)',
-    children: [
-      {
-        title: '最大值',
-        dataIndex: 'o2_max',
-        key: 'o2_max',
-        width: 80,
-        align: 'center',
-      },
-      {
-        title: '最小值',
-        dataIndex: 'o2_min',
-        key: 'o2_min',
-        width: 80,
-        align: 'center',
-      },
-      {
-        title: '平均值',
-        dataIndex: 'o2_ave',
-        key: 'o2_ave',
-        width: 80,
-        align: 'center',
-      },
-    ],
-  },
-  {
-    title: '氮气(N₂%)',
-    children: [
-      {
-        title: '最大值',
-        dataIndex: 'n2_max',
-        key: 'n2_max',
-        width: 80,
-        align: 'center',
-      },
-      {
-        title: '平均值',
-        dataIndex: 'n2_ave',
-        key: 'n2_ave',
-        width: 80,
-        align: 'center',
-      },
-      {
-        title: '平均值',
-        dataIndex: 'n2_ave',
-        key: 'n2_ave',
-        width: 80,
-        align: 'center',
-      },
-    ],
-  },
-  {
-    title: '一氧化碳(CO%)',
-    children: [
-      {
-        title: '最大值',
-        dataIndex: 'co_max',
-        key: 'co_max',
-        width: 80,
-        align: 'center',
-      },
-      {
-        title: '最小值',
-        dataIndex: 'co_min',
-        key: 'co_min',
-        width: 80,
-        align: 'center',
-      },
-      {
-        title: '平均值',
-        dataIndex: 'co_ave',
-        key: 'co_ave',
-        width: 80,
-        align: 'center',
-      },
-    ],
-  },
-  {
-    title: '二氧化碳(CO₂%)',
-    children: [
-      {
-        title: '最大值',
-        dataIndex: 'co2_max',
-        key: 'co2_max',
-        width: 80,
-        align: 'center',
-      },
-      {
-        title: '最小值',
-        dataIndex: 'co2_min',
-        key: 'co2_min',
-        width: 80,
-        align: 'center',
-      },
-      {
-        title: '平均值',
-        dataIndex: 'co2_ave',
-        key: 'co2_ave',
-        width: 80,
-        align: 'center',
-      },
-    ],
-  },
-  {
-    title: '甲烷(CH₄%)',
-    children: [
-      {
-        title: '最大值',
-        dataIndex: 'ch4_max',
-        key: 'ch4_max',
-        width: 80,
-        align: 'center',
-      },
-      {
-        title: '最小值',
-        dataIndex: 'ch4_min',
-        key: 'ch4_min',
-        width: 80,
-        align: 'center',
-      },
-      {
-        title: '平均值',
-        dataIndex: 'ch4_ave',
-        key: 'ch4_ave',
-        width: 80,
-        align: 'center',
-      },
-    ],
-  },
-  {
-    title: '乙烯(C₂H₄%)',
-    children: [
-      {
-        title: '最大值',
-        dataIndex: 'c2h4_max',
-        key: 'c2h4_max',
-        width: 80,
-        align: 'center',
-      },
-      {
-        title: '最小值',
-        dataIndex: 'c2h4_min',
-        key: 'c2h4_min',
-        width: 80,
-        align: 'center',
-      },
-      {
-        title: '平均值',
-        dataIndex: 'c2h4_ave',
-        key: 'c2h4_ave',
-        width: 80,
-        align: 'center',
-      },
-    ],
-  },
-  {
-    title: '乙炔(C₂H₂%)',
-    children: [
-      {
-        title: '最大值',
-        dataIndex: 'c2h2_max',
-        key: 'c2h2_max',
-        width: 80,
-        align: 'center',
-      },
-      {
-        title: '最小值',
-        dataIndex: 'c2h2_min',
-        key: 'c2h2_min',
-        width: 80,
-        align: 'center',
-      },
-      {
-        title: '平均值',
-        dataIndex: 'c2h2_ave',
-        key: 'c2h2_ave',
-        width: 80,
-        align: 'center',
-      },
-    ],
-  },
-  {
-    title: '氢气(H₂%)',
-    children: [
-      {
-        title: '最大值',
-        dataIndex: 'h2_max',
-        key: 'h2_max',
-        width: 80,
-        align: 'center',
-      },
-      {
-        title: '最小值',
-        dataIndex: 'h2_min',
-        key: 'h2_min',
-        width: 80,
-        align: 'center',
-      },
-      {
-        title: '平均值',
-        dataIndex: 'h2_ave',
-        key: 'h2_ave',
-        width: 80,
-        align: 'center',
-      },
-    ],
-  },
-  {
-    title: '二氧化氮(NO₂%)',
-    children: [
-      {
-        title: '最大值',
-        dataIndex: 'no2_max',
-        key: 'no22_max',
-        width: 80,
-        align: 'center',
-      },
-      {
-        title: '最小值',
-        dataIndex: 'no22_max',
-        key: 'no2_max',
-        width: 80,
-        align: 'center',
-      },
-      {
-        title: '平均值',
-        dataIndex: 'no2_ave',
-        key: 'no2_ave',
-        width: 80,
-        align: 'center',
-      },
-    ],
-  },
-  {
-    title: '煤自燃阶段',
-    dataIndex: 'internalFireWarnLevel',
-    width: 100,
-    align: 'center',
-  },
-  {
-    title: '操作',
-    dataIndex: 'action',
-    width: 100,
-    align: 'center',
-  },
-];
-export const Bltcolumns: BasicColumn[] = [
-  {
-    title: '序号',
-    width: 80,
-    align: 'center',
-    dataIndex: 'xh',
-    key: 'xh',
-  },
-  {
-    title: '管号',
-    width: 80,
-    align: 'center',
-    dataIndex: 'gh',
-    key: 'gh',
-  },
-  {
-    title: '管路名称',
-    dataIndex: 'jcdd',
-    key: 'jcdd',
-    width: 130,
-    align: 'center',
-  },
-  {
-    title: 'COppm',
-    children: [
-      {
-        title: '最大值',
-        dataIndex: 'co_max',
-        key: 'co_max',
-        width: 80,
-        align: 'center',
-      },
-      {
-        title: '最小值',
-        dataIndex: 'co_min',
-        key: 'co_min',
-        width: 80,
-        align: 'center',
-      },
-      {
-        title: '平均值',
-        dataIndex: 'co_ave',
-        key: 'co_ave',
-        width: 80,
-        align: 'center',
-      },
-    ],
-  },
-  {
-    title: 'CO₂%',
-    children: [
-      {
-        title: '最大值',
-        dataIndex: 'co2_max',
-        key: 'co2_max',
-        width: 80,
-        align: 'center',
-      },
-      {
-        title: '最小值',
-        dataIndex: 'co2_min',
-        key: 'co2_min',
-        width: 80,
-        align: 'center',
-      },
-      {
-        title: '平均值',
-        dataIndex: 'co2_ave',
-        key: 'co2_ave',
-        width: 80,
-        align: 'center',
-      },
-    ],
-  },
-  {
-    title: 'O₂%',
-    children: [
-      {
-        title: '最大值',
-        dataIndex: 'o2_max',
-        key: 'o2_max',
-        width: 80,
-        align: 'center',
-      },
-      {
-        title: '最小值',
-        dataIndex: 'o2_min',
-        key: 'o2_min',
-        width: 80,
-        align: 'center',
-      },
-      {
-        title: '平均值',
-        dataIndex: 'o2_ave',
-        key: 'o2_ave',
-        width: 80,
-        align: 'center',
-      },
-    ],
-  },
-  {
-    title: 'CH₄%',
-    children: [
-      {
-        title: '最大值',
-        dataIndex: 'ch4_max',
-        key: 'ch4_max',
-        width: 80,
-        align: 'center',
-      },
-      {
-        title: '最小值',
-        dataIndex: 'ch4_min',
-        key: 'ch4_min',
-        width: 80,
-        align: 'center',
-      },
-      {
-        title: '平均值',
-        dataIndex: 'ch4_ave',
-        key: 'ch4_ave',
-        width: 80,
-        align: 'center',
-      },
-    ],
-  },
-  {
-    title: 'N₂%',
-    children: [
-      {
-        title: '最大值',
-        dataIndex: 'n2_max',
-        key: 'n2_max',
-        width: 80,
-        align: 'center',
-      },
-      {
-        title: '平均值',
-        dataIndex: 'n2_ave',
-        key: 'n2_ave',
-        width: 80,
-        align: 'center',
-      },
-      {
-        title: '平均值',
-        dataIndex: 'n2_ave',
-        key: 'n2_ave',
-        width: 80,
-        align: 'center',
-      },
-    ],
-  },
-  {
-    title: 'C₂H₂%',
-    children: [
-      {
-        title: '最大值',
-        dataIndex: 'c2h2_max',
-        key: 'c2h2_max',
-        width: 80,
-        align: 'center',
-      },
-      {
-        title: '最小值',
-        dataIndex: 'c2h2_min',
-        key: 'c2h2_min',
-        width: 80,
-        align: 'center',
-      },
-      {
-        title: '平均值',
-        dataIndex: 'c2h2_ave',
-        key: 'c2h2_ave',
-        width: 80,
-        align: 'center',
-      },
-    ],
-  },
-  {
-    title: 'C₂H₄%',
-    children: [
-      {
-        title: '最大值',
-        dataIndex: 'c2h4_max',
-        key: 'c2h4_max',
-        width: 80,
-        align: 'center',
-      },
-      {
-        title: '最小值',
-        dataIndex: 'c2h4_min',
-        key: 'c2h4_min',
-        width: 80,
-        align: 'center',
-      },
-      {
-        title: '平均值',
-        dataIndex: 'c2h4_ave',
-        key: 'c2h4_ave',
-        width: 80,
-        align: 'center',
-      },
-    ],
-  },
-  {
-    title: '煤自燃阶段',
-    dataIndex: 'internalFireWarnLevel',
-    width: 100,
-    align: 'center',
-  },
-  {
-    title: '操作',
-    dataIndex: 'action',
-    width: 100,
-    align: 'center',
-  },
-];
-export const Sgtcolumns: BasicColumn[] = [
-  {
-    title: '设备号',
-    width: 60,
-    align: 'center',
-    dataIndex: 'sbh',
-    key: 'sbh',
-  },
-  {
-    title: '设备安装地点',
-    width: 100,
-    align: 'center',
-    dataIndex: 'jcdd',
-    key: 'jcdd',
-  },
-  {
-    title: '管路编号',
-    dataIndex: 'glbh',
-    key: 'glbh',
-    width: 80,
-    align: 'center',
-  },
-  {
-    title: '取样地点',
-    dataIndex: 'jcdd',
-    key: 'jcdd',
-    width: 100,
-    align: 'center',
-  },
-  {
-    title: '报警合计',
-    dataIndex: 'bjhj',
-    key: 'bjhj',
-    width: 100,
-    align: 'center',
-  },
-  {
-    title: 'O₂(%)',
-    children: [
-      {
-        title: '最小值',
-        dataIndex: 'o2_min',
-        key: 'o2_min',
-        width: 80,
-        align: 'center',
-      },
-      {
-        title: '平均值',
-        dataIndex: 'o2_ave',
-        key: 'o2_ave',
-        width: 80,
-        align: 'center',
-      },
-    ],
-  },
-  {
-    title: 'CO₂(%)',
-    children: [
-      {
-        title: '最大值',
-        dataIndex: 'co2_max',
-        key: 'co2_max',
-        width: 80,
-        align: 'center',
-      },
-      {
-        title: '平均值',
-        dataIndex: 'co2_ave',
-        key: 'co2_ave',
-        width: 80,
-        align: 'center',
-      },
-    ],
-  },
-  {
-    title: 'CO(PPM)',
-    children: [
-      {
-        title: '最大值',
-        dataIndex: 'co_max',
-        key: 'co_max',
-        width: 80,
-        align: 'center',
-      },
-      {
-        title: '平均值',
-        dataIndex: 'co_ave',
-        key: 'co_ave',
-        width: 80,
-        align: 'center',
-      },
-    ],
-  },
-  {
-    title: 'CH₄(%)',
-    children: [
-      {
-        title: '最大值',
-        dataIndex: 'ch4_max',
-        key: 'ch4_max',
-        width: 80,
-        align: 'center',
-      },
-    ],
-  },
-  {
-    title: 'C₂H₂(PPM)',
-    children: [
-      {
-        title: '最大值',
-        dataIndex: 'c2h2_max',
-        key: 'c2h2_max',
-        width: 80,
-        align: 'center',
-      },
-      {
-        title: '平均值',
-        dataIndex: 'c2h2_ave',
-        key: 'c2h2_ave',
-        width: 80,
-        align: 'center',
-      },
-    ],
-  },
-  {
-    title: 'C₂H₄(PPM)',
-    children: [
-      {
-        title: '最大值',
-        dataIndex: 'c2h4_max',
-        key: 'c2h4_max',
-        width: 80,
-        align: 'center',
-      },
-      {
-        title: '平均值',
-        dataIndex: 'c2h4_ave',
-        key: 'c2h4_ave',
-        width: 80,
-        align: 'center',
-      },
-    ],
-  },
-  {
-    title: '备注',
-    dataIndex: 'smark',
-    key: 'smark',
-    width: 100,
-    align: 'center',
-  },
-  {
-    title: '煤自燃阶段',
-    dataIndex: 'internalFireWarnLevel',
-    width: 100,
-    align: 'center',
-  },
-  {
-    title: '操作',
-    dataIndex: 'action',
-    width: 100,
-    align: 'center',
-  },
-];
-export const Yjlcolumns: BasicColumn[] = [
-  {
-    title: '设备名称',
-    width: 100,
-    align: 'center',
-    dataIndex: 'sbmc',
-    key: 'sbmc',
-  },
-  {
-    title: '设备编号',
-    width: 60,
-    align: 'center',
-    dataIndex: 'sbh',
-    key: 'sbh',
-  },
-  {
-    title: '管路名称',
-    dataIndex: 'glmc',
-    key: 'glmc',
-    width: 100,
-    align: 'center',
-  },
-  {
-    title: '管路编号',
-    dataIndex: 'glbh',
-    key: 'glbh',
-    width: 80,
-    align: 'center',
-  },
-  {
-    title: '分析次数',
-    dataIndex: 'fxcs',
-    key: 'fxcs',
-    width: 100,
-    align: 'center',
-  },
-  {
-    title: 'O₂(%)',
-    children: [
-      {
-        title: '最小值',
-        dataIndex: 'o2_min',
-        key: 'o2_min',
-        width: 80,
-        align: 'center',
-      },
-      {
-        title: '平均值',
-        dataIndex: 'o2_ave',
-        key: 'o2_ave',
-        width: 80,
-        align: 'center',
-      },
-    ],
-  },
-  {
-    title: 'CO₂(%)',
-    children: [
-      {
-        title: '最大值',
-        dataIndex: 'co2_max',
-        key: 'co2_max',
-        width: 80,
-        align: 'center',
-      },
-      {
-        title: '平均值',
-        dataIndex: 'co2_ave',
-        key: 'co2_ave',
-        width: 80,
-        align: 'center',
-      },
-    ],
-  },
-  {
-    title: 'CO(PPM)',
-    children: [
-      {
-        title: '最大值',
-        dataIndex: 'co_max',
-        key: 'co_max',
-        width: 80,
-        align: 'center',
-      },
-      {
-        title: '平均值',
-        dataIndex: 'co_ave',
-        key: 'co_ave',
-        width: 80,
-        align: 'center',
-      },
-    ],
-  },
-  {
-    title: 'CH₄(%)',
-    children: [
-      {
-        title: '最大值',
-        dataIndex: 'ch4_max',
-        key: 'ch4_max',
-        width: 80,
-        align: 'center',
-      },
-      {
-        title: '平均值',
-        dataIndex: 'ch4_ave',
-        key: 'ch4_ave',
-        width: 80,
-        align: 'center',
-      },
-    ],
-  },
-  {
-    title: 'N₂(%)',
-    children: [
-      {
-        title: '最大值',
-        dataIndex: 'n2_max',
-        key: 'n2_max',
-        width: 80,
-        align: 'center',
-      },
-      {
-        title: '平均值',
-        dataIndex: 'n2_ave',
-        key: 'n2_ave',
-        width: 80,
-        align: 'center',
-      },
-    ],
-  },
-  {
-    title: 'C₂H₂(PPM)',
-    children: [
-      {
-        title: '最大值',
-        dataIndex: 'c2h2_max',
-        key: 'c2h2_max',
-        width: 80,
-        align: 'center',
-      },
-      {
-        title: '平均值',
-        dataIndex: 'c2h2_ave',
-        key: 'c2h2_ave',
-        width: 80,
-        align: 'center',
-      },
-    ],
-  },
-  {
-    title: 'C₂H₄(PPM)',
-    children: [
-      {
-        title: '最大值',
-        dataIndex: 'c2h4_max',
-        key: 'c2h4_max',
-        width: 80,
-        align: 'center',
-      },
-      {
-        title: '平均值',
-        dataIndex: 'c2h4_ave',
-        key: 'c2h4_ave',
-        width: 80,
-        align: 'center',
-      },
-    ],
-  },
-  {
-    title: '备注',
-    dataIndex: 'smark',
-    key: 'smark',
-    width: 100,
-    align: 'center',
-  },
-  {
-    title: '煤自燃阶段',
-    dataIndex: 'internalFireWarnLevel',
-    width: 100,
-    align: 'center',
-  },
-  {
-    title: '操作',
-    dataIndex: 'action',
-    width: 100,
-    align: 'center',
-  },
-];
-export const Cctrkcolumns: BasicColumn[] = [
-  {
-    title: '设备号',
-    width: 60,
-    align: 'center',
-    dataIndex: 'xh',
-  },
-  {
-    title: '采空区',
-    width: 100,
-    align: 'center',
-    dataIndex: 'ckq',
-    key: 'ckq',
-  },
-  {
-    title: '采样点',
-    width: 60,
-    align: 'center',
-    dataIndex: 'jcdd',
-    key: 'jcdd',
-  },
-  {
-    title: '检测时间',
-    dataIndex: 'qyfxsj',
-    key: 'qyfxsj',
-    width: 100,
-    align: 'center',
-  },
-  {
-    title: 'O₂(%)',
-    dataIndex: 'o2_ave',
-    key: 'o2_ave',
-    width: 80,
-    align: 'center',
-  },
-  {
-    title: 'CO₂(%)',
-    dataIndex: 'co2_ave',
-    key: 'co2_ave',
-    width: 80,
-    align: 'center',
-  },
-  {
-    title: 'CO(PPM)',
-    dataIndex: 'co_ave',
-    key: 'co_ave',
-    width: 80,
-    align: 'center',
-  },
-  {
-    title: 'CH₄(%)',
-    dataIndex: 'ch4_ave',
-    key: 'ch4_ave',
-    width: 80,
-    align: 'center',
-  },
-  {
-    title: 'N₂(%)',
-    dataIndex: 'n2_ave',
-    key: 'n2_ave',
-    width: 80,
-    align: 'center',
-  },
-  {
-    title: 'C₂H₂(PPM)',
-    dataIndex: 'c2h2_ave',
-    key: 'c2h2_ave',
-    width: 80,
-    align: 'center',
-  },
-  {
-    title: 'C₂H₄(PPM)',
-    dataIndex: 'c2h4_ave',
-    key: 'c2h4_ave',
-    width: 80,
-    align: 'center',
-  },
-  {
-    title: 'C₂H₆(PPM)',
-    dataIndex: 'c2h6_ave',
-    key: 'c2h6_ave',
-    width: 80,
-    align: 'center',
-  },
-  {
-    title: '煤自燃阶段',
-    dataIndex: 'internalFireWarnLevel',
-    width: 100,
-    align: 'center',
-  },
-  {
-    title: '操作',
-    dataIndex: 'action',
-    width: 100,
-    align: 'center',
-  },
-];
-export const wlmlcolumns: BasicColumn[] = [
-  {
-    title: '设备号',
-    width: 60,
-    align: 'center',
-    dataIndex: 'xh',
-  },
-  {
-    title: '设备名称',
-    width: 100,
-    align: 'center',
-    dataIndex: 'sbmc',
-    key: 'sbmc',
-  },
-  {
-    title: '管路编号',
-    width: 60,
-    align: 'center',
-    dataIndex: 'glbh',
-    key: 'glbh',
-  },
-  {
-    title: '管路名称',
-    width: 60,
-    align: 'center',
-    dataIndex: 'jcdd',
-    key: 'jcdd',
-  },
-  {
-    title: '分析次数',
-    dataIndex: 'fxcs',
-    key: 'fxcs',
-    width: 100,
-    align: 'center',
-  },
-  {
-    title: 'O₂(%)',
-    dataIndex: 'o2_ave',
-    key: 'o2_ave',
-    width: 80,
-    align: 'center',
-  },
-  {
-    title: 'CO₂(%)',
-    dataIndex: 'co2_ave',
-    key: 'co2_ave',
-    width: 80,
-    align: 'center',
-  },
-  {
-    title: 'CO(PPM)',
-    dataIndex: 'co_ave',
-    key: 'co_ave',
-    width: 80,
-    align: 'center',
-  },
-  {
-    title: 'CH₄(%)',
-    dataIndex: 'ch4_ave',
-    key: 'ch4_ave',
-    width: 80,
-    align: 'center',
-  },
-  {
-    title: 'N₂(%)',
-    dataIndex: 'n2_ave',
-    key: 'n2_ave',
-    width: 80,
-    align: 'center',
-  },
-  {
-    title: 'C₂H₂(PPM)',
-    dataIndex: 'c2h2_ave',
-    key: 'c2h2_ave',
-    width: 80,
-    align: 'center',
-  },
-  {
-    title: 'C₂H₄(PPM)',
-    dataIndex: 'c2h4_ave',
-    key: 'c2h4_ave',
-    width: 80,
-    align: 'center',
-  },
-  {
-    title: '煤自燃阶段',
-    dataIndex: 'internalFireWarnLevel',
-    width: 100,
-    align: 'center',
-  },
-  {
-    title: '操作',
-    dataIndex: 'action',
-    width: 100,
-    align: 'center',
-  },
-];
-export const Cctkcolumns: BasicColumn[] = [
-  {
-    title: '设备名称',
-    width: 100,
-    align: 'center',
-    dataIndex: 'sbmc',
-    key: 'sbmc',
-  },
-  {
-    title: '管路名称',
-    dataIndex: 'jcdd',
-    key: 'jcdd',
-    width: 100,
-    align: 'center',
-  },
-  {
-    title: '管路编号',
-    dataIndex: 'glbh',
-    key: 'glbh',
-    width: 80,
-    align: 'center',
-  },
-  {
-    title: '分析次数',
-    dataIndex: 'fxcs',
-    key: 'fxcs',
-    width: 100,
-    align: 'center',
-  },
-
-  {
-    title: 'CO(PPM)',
-    children: [
-      {
-        title: '最大值',
-        dataIndex: 'co_max',
-        key: 'co_max',
-        width: 80,
-        align: 'center',
-      },
-      {
-        title: '平均值',
-        dataIndex: 'co_ave',
-        key: 'co_ave',
-        width: 80,
-        align: 'center',
-      },
-    ],
-  },
-  {
-    title: 'CO₂(%)',
-    children: [
-      {
-        title: '最大值',
-        dataIndex: 'co2_max',
-        key: 'co2_max',
-        width: 80,
-        align: 'center',
-      },
-      {
-        title: '平均值',
-        dataIndex: 'co2_ave',
-        key: 'co2_ave',
-        width: 80,
-        align: 'center',
-      },
-    ],
-  },
-  {
-    title: 'O₂(%)',
-    children: [
-      {
-        title: '最大值',
-        dataIndex: 'o2_min',
-        key: 'o2_min',
-        width: 80,
-        align: 'center',
-      },
-      {
-        title: '平均值',
-        dataIndex: 'o2_ave',
-        key: 'o2_ave',
-        width: 80,
-        align: 'center',
-      },
-    ],
-  },
-
-  {
-    title: 'CH₄(%)',
-    children: [
-      {
-        title: '最大值',
-        dataIndex: 'ch4_max',
-        key: 'ch4_max',
-        width: 80,
-        align: 'center',
-      },
-      {
-        title: '平均值',
-        dataIndex: 'ch4_ave',
-        key: 'ch4_ave',
-        width: 80,
-        align: 'center',
-      },
-    ],
-  },
-  {
-    title: 'N₂(%)',
-    children: [
-      {
-        title: '最大值',
-        dataIndex: 'n2_max',
-        key: 'n2_max',
-        width: 80,
-        align: 'center',
-      },
-      {
-        title: '平均值',
-        dataIndex: 'n2_ave',
-        key: 'n2_ave',
-        width: 80,
-        align: 'center',
-      },
-    ],
-  },
-  {
-    title: 'C₂H₂(PPM)',
-    children: [
-      {
-        title: '最大值',
-        dataIndex: 'c2h2_max',
-        key: 'c2h2_max',
-        width: 80,
-        align: 'center',
-      },
-      {
-        title: '平均值',
-        dataIndex: 'c2h2_ave',
-        key: 'c2h2_ave',
-        width: 80,
-        align: 'center',
-      },
-    ],
-  },
-  {
-    title: 'C₂H₄(PPM)',
-    children: [
-      {
-        title: '最大值',
-        dataIndex: 'c2h4_max',
-        key: 'c2h4_max',
-        width: 80,
-        align: 'center',
-      },
-      {
-        title: '平均值',
-        dataIndex: 'c2h4_ave',
-        key: 'c2h4_ave',
-        width: 80,
-        align: 'center',
-      },
-    ],
-  },
-  {
-    title: '煤自燃阶段',
-    dataIndex: 'internalFireWarnLevel',
-    width: 100,
-    align: 'center',
-  },
-  {
-    title: '操作',
-    dataIndex: 'action',
-    width: 100,
-    align: 'center',
-  },
-];
-export const Jinjiecolumns: BasicColumn[] = [
-  {
-    title: '分站安装位置',
-    width: 100,
-    align: 'center',
-    dataIndex: 'sbmc',
-    key: 'sbmc',
-  },
-  {
-    title: '束管编号',
-    dataIndex: 'glbh',
-    key: 'glbh',
-    width: 80,
-    align: 'center',
-  },
-  {
-    title: '管路名称',
-    dataIndex: 'jcdd',
-    key: 'jcdd',
-    width: 100,
-    align: 'center',
-  },
-  {
-    title: 'O₂(%)',
-    children: [
-      {
-        title: '最小值',
-        dataIndex: 'o2_min',
-        key: 'o2_min',
-        width: 80,
-        align: 'center',
-      },
-      {
-        title: '最大值',
-        dataIndex: 'o2_max',
-        key: 'o2_max',
-        width: 80,
-        align: 'center',
-      },
-      {
-        title: '平均值',
-        dataIndex: 'o2_ave',
-        key: 'o2_ave',
-        width: 80,
-        align: 'center',
-      },
-    ],
-  },
-
-  {
-    title: 'CO₂(%)',
-    children: [
-      {
-        title: '最小值',
-        dataIndex: 'co2_min',
-        key: 'co2_min',
-        width: 80,
-        align: 'center',
-      },
-      {
-        title: '最大值',
-        dataIndex: 'co2_max',
-        key: 'co2_max',
-        width: 80,
-        align: 'center',
-      },
-      {
-        title: '平均值',
-        dataIndex: 'co2_ave',
-        key: 'co2_ave',
-        width: 80,
-        align: 'center',
-      },
-    ],
-  },
-  {
-    title: 'CO(PPM)',
-    children: [
-      {
-        title: '最小值',
-        dataIndex: 'co_min',
-        key: 'co_min',
-        width: 80,
-        align: 'center',
-      },
-      {
-        title: '最大值',
-        dataIndex: 'co_max',
-        key: 'co_max',
-        width: 80,
-        align: 'center',
-      },
-      {
-        title: '平均值',
-        dataIndex: 'co_ave',
-        key: 'co_ave',
-        width: 80,
-        align: 'center',
-      },
-    ],
-  },
-  {
-    title: 'CH₄(%)',
-    children: [
-      {
-        title: '最小值',
-        dataIndex: 'ch4_min',
-        key: 'ch4_min',
-        width: 80,
-        align: 'center',
-      },
-      {
-        title: '最大值',
-        dataIndex: 'ch4_max',
-        key: 'ch4_max',
-        width: 80,
-        align: 'center',
-      },
-      {
-        title: '平均值',
-        dataIndex: 'ch4_ave',
-        key: 'ch4_ave',
-        width: 80,
-        align: 'center',
-      },
-    ],
-  },
-  {
-    title: 'C₂H₂(%)',
-    children: [
-      {
-        title: '最小值',
-        dataIndex: 'c2h2_min',
-        key: 'c2h2_min',
-        width: 80,
-        align: 'center',
-      },
-      {
-        title: '最大值',
-        dataIndex: 'c2h2_max',
-        key: 'c2h2_max',
-        width: 80,
-        align: 'center',
-      },
-      {
-        title: '平均值',
-        dataIndex: 'c2h2_ave',
-        key: 'c2h2_ave',
-        width: 80,
-        align: 'center',
-      },
-    ],
-  },
-  {
-    title: 'C₂H₄(%)',
-    children: [
-      {
-        title: '最小值',
-        dataIndex: 'c2h4_min',
-        key: 'c2h4_min',
-        width: 80,
-        align: 'center',
-      },
-      {
-        title: '最大值',
-        dataIndex: 'c2h4_max',
-        key: 'c2h4_max',
-        width: 80,
-        align: 'center',
-      },
-      {
-        title: '平均值',
-        dataIndex: 'c2h4_ave',
-        key: 'c2h4_ave',
-        width: 80,
-        align: 'center',
-      },
-    ],
-  },
-  {
-    title: '备注',
-    dataIndex: 'smark',
-    key: 'smark',
-    width: 100,
-    align: 'center',
-  },
-  {
-    title: '煤自燃阶段',
-    dataIndex: 'internalFireWarnLevel',
-    width: 100,
-    align: 'center',
-  },
-  {
-    title: '操作',
-    dataIndex: 'action',
-    width: 100,
-    align: 'center',
-  },
-];
-export const Hlgcolumns: BasicColumn[] = [
-  {
-    title: '设备名称',
-    width: 100,
-    align: 'center',
-    dataIndex: 'sbmc',
-    key: 'sbmc',
-  },
-  {
-    title: '设备号',
-    width: 80,
-    align: 'center',
-    dataIndex: 'sbbh',
-    key: 'sbbh',
-  },
-  {
-    title: '管路名称',
-    dataIndex: 'jcdd',
-    key: 'jcdd',
-    width: 100,
-    align: 'center',
-  },
-  {
-    title: '管路编号',
-    dataIndex: 'glbh',
-    key: 'glbh',
-    width: 80,
-    align: 'center',
-  },
-  {
-    title: '分析次数',
-    dataIndex: 'fxcs',
-    key: 'fxcs',
-    width: 80,
-    align: 'center',
-  },
-
-  {
-    title: 'CO(PPM)',
-    children: [
-      {
-        title: '最大值',
-        dataIndex: 'co_max',
-        key: 'co_max',
-        width: 80,
-        align: 'center',
-      },
-      {
-        title: '平均值',
-        dataIndex: 'co_ave',
-        key: 'co_ave',
-        width: 80,
-        align: 'center',
-      },
-    ],
-  },
-  {
-    title: 'CO₂(%)',
-    children: [
-      {
-        title: '最大值',
-        dataIndex: 'co2_max',
-        key: 'co2_max',
-        width: 80,
-        align: 'center',
-      },
-      {
-        title: '平均值',
-        dataIndex: 'co2_ave',
-        key: 'co2_ave',
-        width: 80,
-        align: 'center',
-      },
-    ],
-  },
-  {
-    title: 'O₂(%)',
-    children: [
-      {
-        title: '最大值',
-        dataIndex: 'o2_min',
-        key: 'o2_min',
-        width: 80,
-        align: 'center',
-      },
-      {
-        title: '平均值',
-        dataIndex: 'o2_ave',
-        key: 'o2_ave',
-        width: 80,
-        align: 'center',
-      },
-    ],
-  },
-
-  {
-    title: 'CH₄(%)',
-    children: [
-      {
-        title: '最大值',
-        dataIndex: 'ch4_max',
-        key: 'ch4_max',
-        width: 80,
-        align: 'center',
-      },
-      {
-        title: '平均值',
-        dataIndex: 'ch4_ave',
-        key: 'ch4_ave',
-        width: 80,
-        align: 'center',
-      },
-    ],
-  },
-  {
-    title: 'N₂(%)',
-    children: [
-      {
-        title: '最大值',
-        dataIndex: 'n2_max',
-        key: 'n2_max',
-        width: 80,
-        align: 'center',
-      },
-      {
-        title: '平均值',
-        dataIndex: 'n2_ave',
-        key: 'n2_ave',
-        width: 80,
-        align: 'center',
-      },
-    ],
-  },
-  {
-    title: 'C₂H₂(PPM)',
-    children: [
-      {
-        title: '最大值',
-        dataIndex: 'c2h2_max',
-        key: 'c2h2_max',
-        width: 80,
-        align: 'center',
-      },
-      {
-        title: '平均值',
-        dataIndex: 'c2h2_ave',
-        key: 'c2h2_ave',
-        width: 80,
-        align: 'center',
-      },
-    ],
-  },
-  {
-    title: 'C₂H₄(PPM)',
-    children: [
-      {
-        title: '最大值',
-        dataIndex: 'c2h4_max',
-        key: 'c2h4_max',
-        width: 80,
-        align: 'center',
-      },
-      {
-        title: '平均值',
-        dataIndex: 'c2h4_ave',
-        key: 'c2h4_ave',
-        width: 80,
-        align: 'center',
-      },
-    ],
-  },
-  {
-    title: '煤自燃阶段',
-    dataIndex: 'internalFireWarnLevel',
-    width: 100,
-    align: 'center',
-  },
-  {
-    title: '操作',
-    dataIndex: 'action',
-    width: 100,
-    align: 'center',
-  },
-];

+ 0 - 1312
src/views/vent/bundle/bundleMonitorTable/index.vue

@@ -1,1312 +0,0 @@
-<template>
-  <div class="dustMonitor">
-    <customHeader>束管日报分析</customHeader>
-    <div class="content-container">
-      <div class="file-list" style="overflow-y: auto; height: 100%">
-        <ul>
-          <li v-for="item in selectList" :key="item.id" :class="{ selected: item.id === selectedFileId }" @click="handleFileClick(item)">
-            {{ item.fileName }}
-          </li>
-        </ul>
-      </div>
-      <div class="table-container">
-        <a-table :columns="computedColumns" :data-source="tableData" size="small" :pagination="false" :scroll="{ y: 250 }" class="tableW">
-          <template #bodyCell="{ column, record }">
-            <template v-if="column.dataIndex === 'action'">
-              <a class="action-link" @click="toDetail(record)">数据分析</a>
-            </template>
-            <template v-else>
-              <template v-if="record[column.dataIndex] === null">
-                <span>-</span>
-              </template>
-            </template>
-          </template>
-        </a-table>
-        <div class="data-container">
-          <div id="barChart" class="bar-chart"></div>
-          <div class="data-content">
-            <div class="title">煤自燃阶段统计分析</div>
-            <div class="explain">测点共计{{ total }}个</div>
-            <div class="progress-label">潜伏期阶段:{{ qfqCount }}</div>
-            <Progress :percent="qfqPercent" size="default" strokeColor="green" :show-info="true" :format="() => qfqCount" />
-            <div class="progress-label">缓慢氧化升温阶段:{{ latentCount }}</div>
-            <Progress :percent="latentPercent" size="default" strokeColor="yellow" :show-info="true" :format="() => latentCount" />
-            <div class="progress-label">加速氧化升温阶段:{{ selfHeatingCount }}</div>
-            <Progress :percent="selfHeatingPercent" size="default" strokeColor="orange‌" :show-info="true" :format="() => selfHeatingCount" />
-            <div class="progress-label">剧烈氧化升温阶段:{{ combustionCount }}</div>
-            <Progress :percent="combustionPercent" size="default" strokeColor="red" :show-info="true" :format="() => combustionCount" />
-          </div>
-        </div>
-      </div>
-    </div>
-    <a-modal style="width: 60%; height: 300px" title="爆炸三角形" v-model:visible="modalVisible" :draggable="true" :footer="null">
-      <div class="blast-delta-container">
-        <BlastDelta :posMonitor="posMonitor" style="width: calc(50% - 20px)" />
-        <BlastDelta1 :posMonitor="posMonitor" style="width: calc(50% - 20px)" />
-      </div>
-    </a-modal>
-  </div>
-</template>
-
-<script setup lang="ts">
-import { ref, onMounted, computed, shallowRef, reactive, nextTick } from 'vue';
-import {
-  columns,
-  Hjtcolumns,
-  Bdcolumns,
-  Bltcolumns,
-  Sgtcolumns,
-  Yjlcolumns,
-  Cctrkcolumns,
-  wlmlcolumns,
-  Cctkcolumns,
-  Jinjiecolumns,
-  Hlgcolumns,
-} from './bundle-table.data';
-import { getBundleInfoList, getAllFileList, getAllFileListById } from './bundle-table.api';
-import customHeader from '/@/components/vent/customHeader.vue';
-// import { blastDelta } from './modal/blastDelta.vue';
-import BlastDelta from './modal/blastDelta.vue';
-import BlastDelta1 from './modal/blastDelta1.vue';
-import * as echarts from 'echarts';
-import { Progress } from 'ant-design-vue';
-import { useGlobSetting } from '/@/hooks/setting';
-// import 'ant-design-vue/dist/antd.css'; // 引入样式
-let selectList = ref<any[]>([]);
-let jcddArr = ref<any[]>([]);
-let formSearch = reactive({
-  pageNum: 1,
-  pageSize: 1000,
-  id: '',
-  fileName: '',
-});
-const total = ref(0);
-const { sysOrgCode } = useGlobSetting();
-const qfqCount = ref(0); // 潜伏期
-const latentCount = ref(0); // 缓慢氧化阶段(潜伏期)
-const selfHeatingCount = ref(0); // 加速氧化阶段(自热期)
-const combustionCount = ref(0); // 剧烈氧化阶段(燃烧期)
-const qfqPercent = ref(0); // 潜伏期(潜伏期)
-const latentPercent = ref(0); // 缓慢氧化阶段(潜伏期)
-const selfHeatingPercent = ref(0); // 加速氧化阶段(自热期)
-const combustionPercent = ref(0); // 剧烈氧化阶段(燃烧期)
-let tableData = ref<any[]>([]);
-let modalVisible = ref(false);
-let selectedFileId = ref<string | null>(null);
-const posMonitor = shallowRef({});
-const computedColumns = computed(() => {
-  switch (sysOrgCode) {
-    case 'sdmtjtdltmkhjtj':
-      return Hjtcolumns; // 活鸡兔对应的列配置
-    case 'sdmtjtBdmk':
-      return Bdcolumns; // 保德对应的列配置
-    case 'sdmtjtbltmk':
-      return Bltcolumns; // 补连塔对应的列配置
-    case 'sdmtjtsgtmk':
-      return Sgtcolumns; // 石圪台对应的列配置
-    case 'sdmtjtyjlmk':
-      return Yjlcolumns; // 榆家梁对应的列配置
-    case 'sdmtjtcctrk':
-      return Cctrkcolumns; // 寸草塔二矿对应的列配置
-    case 'sdmtjtwlmlmk':
-      return wlmlcolumns; // 乌兰木伦对应的列配置
-    case 'sdmtjtcctmk':
-      return Cctkcolumns; // 乌兰木伦对应的列配置
-    case 'sdmtjtjjmk':
-      return Jinjiecolumns; // 锦界对应的列配置
-    case 'sdmtjthlgmk':
-      return Hlgcolumns; // 哈拉沟对应的列配置
-    default:
-      return columns; // 默认情况下返回的列配置
-  }
-});
-function updateChart(data: any) {
-  const chartDom = document.getElementById('barChart');
-  const myChart = echarts.init(chartDom);
-  const categories = data.map((item: any) => item.jcdd);
-  const c2h2MaxValues = data.map((item: any) => parseFloat(item.c2h2_max));
-  const c2h2MinValues = data.map((item: any) => parseFloat(item.c2h2_min));
-  const c2h2AveValues = data.map((item: any) => parseFloat(item.c2h2_ave));
-  const c2h4MaxValues = data.map((item: any) => parseFloat(item.c2h4_max));
-  const c2h4MinValues = data.map((item: any) => parseFloat(item.c2h4_min));
-  const c2h4AveValues = data.map((item: any) => parseFloat(item.c2h4_ave));
-  const c2h6AveValues = data.map((item: any) => parseFloat(item.c2h6_ave));
-  const ch4MaxValues = data.map((item: any) => parseFloat(item.ch4_max));
-  const ch4MinValues = data.map((item: any) => parseFloat(item.ch4_min));
-  const ch4AveValues = data.map((item: any) => parseFloat(item.ch4_ave));
-  const co2MaxValues = data.map((item: any) => parseFloat(item.co2_max));
-  const co2MinValues = data.map((item: any) => parseFloat(item.co2_min));
-  const co2AveValues = data.map((item: any) => parseFloat(item.co2_ave));
-  const coMaxValues = data.map((item: any) => parseFloat(item.co_max));
-  const coMinValues = data.map((item: any) => parseFloat(item.co_min));
-  const coAveValues = data.map((item: any) => parseFloat(item.co_ave));
-  const o2MaxValues = data.map((item: any) => parseFloat(item.o2_max));
-  const o2MinValues = data.map((item: any) => parseFloat(item.o2_min));
-  const o2AveValues = data.map((item: any) => parseFloat(item.o2_ave));
-  const n2MaxValues = data.map((item: any) => parseFloat(item.n2_max));
-  const n2MinValues = data.map((item: any) => parseFloat(item.n2_min));
-  const n2AveValues = data.map((item: any) => parseFloat(item.n2_ave));
-  const no2MaxValues = data.map((item: any) => parseFloat(item.no2_max));
-  const no2MinValues = data.map((item: any) => parseFloat(item.no2_min));
-  const no2AveValues = data.map((item: any) => parseFloat(item.no2_ave));
-  const h2MaxValues = data.map((item: any) => parseFloat(item.h2_max));
-  const h2MinValues = data.map((item: any) => parseFloat(item.h2_min));
-  const h2AveValues = data.map((item: any) => parseFloat(item.h2_ave));
-
-  const getSeriesConfig = (sysOrgCode) => {
-    switch (sysOrgCode) {
-      case 'sdmtjtdltmkhjtj':
-        return [
-          {
-            name: 'CO₂最大值',
-            data: co2MaxValues,
-            type: 'bar',
-          },
-          {
-            name: 'CO₂平均值',
-            data: co2AveValues,
-            type: 'bar',
-          },
-          {
-            name: 'CO最大值',
-            data: coMaxValues,
-            type: 'bar',
-          },
-          {
-            name: 'CO平均值',
-            data: coAveValues,
-            type: 'bar',
-          },
-          {
-            name: 'O₂最小值',
-            data: o2MinValues,
-            type: 'bar',
-          },
-          {
-            name: 'O₂平均值',
-            data: o2AveValues,
-            type: 'bar',
-          },
-          {
-            name: 'CH₄最大值',
-            data: ch4MaxValues,
-            type: 'bar',
-          },
-          {
-            name: 'CH₄平均值',
-            data: ch4AveValues,
-            type: 'bar',
-          },
-          {
-            name: 'N₂最大值',
-            data: n2MaxValues,
-            type: 'bar',
-          },
-          {
-            name: 'N₂平均值',
-            data: n2AveValues,
-            type: 'bar',
-          },
-          {
-            name: 'C₂H₂最大值',
-            data: c2h2MaxValues,
-            type: 'bar',
-          },
-          {
-            name: 'C₂H₂平均值',
-            data: c2h2AveValues,
-            type: 'bar',
-          },
-          {
-            name: 'C₂H₄最大值',
-            data: c2h4MaxValues,
-            type: 'bar',
-          },
-          {
-            name: 'C₂H₄平均值',
-            data: c2h4AveValues,
-            type: 'bar',
-          },
-        ];
-      case 'sdmtjtswmk':
-        return [
-          {
-            name: 'C₂H₂最大值',
-            data: c2h2MaxValues,
-            type: 'bar',
-          },
-          {
-            name: 'C₂H₂平均值',
-            data: c2h2AveValues,
-            type: 'bar',
-          },
-          {
-            name: 'C₂H₄最大值',
-            data: c2h4MaxValues,
-            type: 'bar',
-          },
-          {
-            name: 'C₂H₄平均值',
-            data: c2h4AveValues,
-            type: 'bar',
-          },
-          {
-            name: 'CH₄最大值',
-            data: ch4MaxValues,
-            type: 'bar',
-          },
-          {
-            name: 'CH₄平均值',
-            data: ch4AveValues,
-            type: 'bar',
-          },
-          {
-            name: 'CO₂最大值',
-            data: co2MaxValues,
-            type: 'bar',
-          },
-          {
-            name: 'CO₂平均值',
-            data: co2AveValues,
-            type: 'bar',
-          },
-          {
-            name: 'CO最大值',
-            data: coMaxValues,
-            type: 'bar',
-          },
-          {
-            name: 'CO平均值',
-            data: coAveValues,
-            type: 'bar',
-          },
-          {
-            name: 'O₂最小值',
-            data: o2MinValues,
-            type: 'bar',
-          },
-          {
-            name: 'O₂平均值',
-            data: o2AveValues,
-            type: 'bar',
-          },
-          {
-            name: 'N₂最大值',
-            data: n2MaxValues,
-            type: 'bar',
-          },
-          {
-            name: 'N₂平均值',
-            data: n2AveValues,
-            type: 'bar',
-          },
-          {
-            name: 'NO₂最大值',
-            data: no2MaxValues,
-            type: 'bar',
-          },
-          {
-            name: 'NO₂平均值',
-            data: no2AveValues,
-            type: 'bar',
-          },
-        ];
-      case 'sdmtjtBdmk':
-        return [
-          {
-            name: 'O₂最大值',
-            data: o2MaxValues,
-            type: 'bar',
-          },
-          {
-            name: 'O₂最小值',
-            data: o2MinValues,
-            type: 'bar',
-          },
-          {
-            name: 'O₂平均值',
-            data: o2AveValues,
-            type: 'bar',
-          },
-          {
-            name: 'N₂最大值',
-            data: n2MaxValues,
-            type: 'bar',
-          },
-          {
-            name: 'N₂最小值',
-            data: n2MinValues,
-            type: 'bar',
-          },
-          {
-            name: 'N₂平均值',
-            data: n2AveValues,
-            type: 'bar',
-          },
-
-          {
-            name: 'CO最大值',
-            data: coMaxValues,
-            type: 'bar',
-          },
-          {
-            name: 'CO最小值',
-            data: coMinValues,
-            type: 'bar',
-          },
-          {
-            name: 'CO平均值',
-            data: coAveValues,
-            type: 'bar',
-          },
-          {
-            name: 'CO₂最大值',
-            data: co2MaxValues,
-            type: 'bar',
-          },
-          {
-            name: 'CO₂最小值',
-            data: co2MinValues,
-            type: 'bar',
-          },
-          {
-            name: 'CO₂平均值',
-            data: co2AveValues,
-            type: 'bar',
-          },
-          {
-            name: 'CH₄最大值',
-            data: ch4MaxValues,
-            type: 'bar',
-          },
-          {
-            name: 'CH₄最小值',
-            data: ch4MinValues,
-            type: 'bar',
-          },
-          {
-            name: 'CH₄平均值',
-            data: ch4AveValues,
-            type: 'bar',
-          },
-          {
-            name: 'C₂H₄最大值',
-            data: c2h4MaxValues,
-            type: 'bar',
-          },
-          {
-            name: 'C₂H₄最小值',
-            data: c2h4MinValues,
-            type: 'bar',
-          },
-          {
-            name: 'C₂H₄平均值',
-            data: c2h4AveValues,
-            type: 'bar',
-          },
-          {
-            name: 'C₂H₂最大值',
-            data: c2h2MaxValues,
-            type: 'bar',
-          },
-          {
-            name: 'C₂H₂最小值',
-            data: c2h2MinValues,
-            type: 'bar',
-          },
-          {
-            name: 'C₂H₂平均值',
-            data: c2h2AveValues,
-            type: 'bar',
-          },
-          {
-            name: 'H₂最大值',
-            data: h2MaxValues,
-            type: 'bar',
-          },
-          {
-            name: 'H₂最小值',
-            data: h2MinValues,
-            type: 'bar',
-          },
-          {
-            name: 'H₂平均值',
-            data: h2AveValues,
-            type: 'bar',
-          },
-          {
-            name: 'NO₂最大值',
-            data: no2MaxValues,
-            type: 'bar',
-          },
-          {
-            name: 'NO₂最小值',
-            data: no2MinValues,
-            type: 'bar',
-          },
-          {
-            name: 'NO₂平均值',
-            data: no2AveValues,
-            type: 'bar',
-          },
-        ];
-      case 'sdmtjtBltmk':
-        return [
-          {
-            name: 'O₂最大值',
-            data: o2MaxValues,
-            type: 'bar',
-          },
-          {
-            name: 'O₂最小值',
-            data: o2MinValues,
-            type: 'bar',
-          },
-          {
-            name: 'O₂平均值',
-            data: o2AveValues,
-            type: 'bar',
-          },
-          {
-            name: 'N₂最大值',
-            data: n2MaxValues,
-            type: 'bar',
-          },
-          {
-            name: 'N₂最小值',
-            data: n2MinValues,
-            type: 'bar',
-          },
-          {
-            name: 'N₂平均值',
-            data: n2AveValues,
-            type: 'bar',
-          },
-
-          {
-            name: 'CO最大值',
-            data: coMaxValues,
-            type: 'bar',
-          },
-          {
-            name: 'CO最小值',
-            data: coMinValues,
-            type: 'bar',
-          },
-          {
-            name: 'CO平均值',
-            data: coAveValues,
-            type: 'bar',
-          },
-          {
-            name: 'CO₂最大值',
-            data: co2MaxValues,
-            type: 'bar',
-          },
-          {
-            name: 'CO₂最小值',
-            data: co2MinValues,
-            type: 'bar',
-          },
-          {
-            name: 'CO₂平均值',
-            data: co2AveValues,
-            type: 'bar',
-          },
-          {
-            name: 'CH₄最大值',
-            data: ch4MaxValues,
-            type: 'bar',
-          },
-          {
-            name: 'CH₄最小值',
-            data: ch4MinValues,
-            type: 'bar',
-          },
-          {
-            name: 'CH₄平均值',
-            data: ch4AveValues,
-            type: 'bar',
-          },
-          {
-            name: 'C₂H₄最大值',
-            data: c2h4MaxValues,
-            type: 'bar',
-          },
-          {
-            name: 'C₂H₄最小值',
-            data: c2h4MinValues,
-            type: 'bar',
-          },
-          {
-            name: 'C₂H₄平均值',
-            data: c2h4AveValues,
-            type: 'bar',
-          },
-          {
-            name: 'C₂H₂最大值',
-            data: c2h2MaxValues,
-            type: 'bar',
-          },
-          {
-            name: 'C₂H₂最小值',
-            data: c2h2MinValues,
-            type: 'bar',
-          },
-          {
-            name: 'C₂H₂平均值',
-            data: c2h2AveValues,
-            type: 'bar',
-          },
-        ];
-      case 'sdmtjtyjlmk':
-        return [
-          {
-            name: 'O₂最小值',
-            data: o2MinValues,
-            type: 'bar',
-          },
-          {
-            name: 'O₂平均值',
-            data: o2AveValues,
-            type: 'bar',
-          },
-          {
-            name: 'N₂最大值',
-            data: n2MaxValues,
-            type: 'bar',
-          },
-          {
-            name: 'N₂平均值',
-            data: n2AveValues,
-            type: 'bar',
-          },
-
-          {
-            name: 'CO最大值',
-            data: coMaxValues,
-            type: 'bar',
-          },
-          {
-            name: 'CO平均值',
-            data: coAveValues,
-            type: 'bar',
-          },
-          {
-            name: 'CO₂最大值',
-            data: co2MaxValues,
-            type: 'bar',
-          },
-          {
-            name: 'CO₂平均值',
-            data: co2AveValues,
-            type: 'bar',
-          },
-          {
-            name: 'CH₄最大值',
-            data: ch4MaxValues,
-            type: 'bar',
-          },
-          {
-            name: 'CH₄平均值',
-            data: ch4AveValues,
-            type: 'bar',
-          },
-          {
-            name: 'C₂H₄最大值',
-            data: c2h4MaxValues,
-            type: 'bar',
-          },
-          {
-            name: 'C₂H₄平均值',
-            data: c2h4AveValues,
-            type: 'bar',
-          },
-          {
-            name: 'C₂H₂最大值',
-            data: c2h2MaxValues,
-            type: 'bar',
-          },
-          {
-            name: 'C₂H₂平均值',
-            data: c2h2AveValues,
-            type: 'bar',
-          },
-        ];
-      case 'sdmtjtcctrk':
-        return [
-          {
-            name: 'O₂平均值',
-            data: o2AveValues,
-            type: 'bar',
-          },
-          {
-            name: 'N₂平均值',
-            data: n2AveValues,
-            type: 'bar',
-          },
-          {
-            name: 'CO平均值',
-            data: coAveValues,
-            type: 'bar',
-          },
-          {
-            name: 'CO₂平均值',
-            data: co2AveValues,
-            type: 'bar',
-          },
-          {
-            name: 'CH₄平均值',
-            data: ch4AveValues,
-            type: 'bar',
-          },
-          {
-            name: 'C₂H₄平均值',
-            data: c2h4AveValues,
-            type: 'bar',
-          },
-          {
-            name: 'C₂H₂平均值',
-            data: c2h2AveValues,
-            type: 'bar',
-          },
-          {
-            name: 'C₂H₆平均值',
-            data: c2h6AveValues,
-            type: 'bar',
-          },
-        ];
-      case 'sdmtjtwlmlmk':
-        return [
-          {
-            name: 'O₂平均值',
-            data: o2AveValues,
-            type: 'bar',
-          },
-          {
-            name: 'N₂平均值',
-            data: n2AveValues,
-            type: 'bar',
-          },
-          {
-            name: 'CO平均值',
-            data: coAveValues,
-            type: 'bar',
-          },
-          {
-            name: 'CO₂平均值',
-            data: co2AveValues,
-            type: 'bar',
-          },
-          {
-            name: 'CH₄平均值',
-            data: ch4AveValues,
-            type: 'bar',
-          },
-          {
-            name: 'C₂H₄平均值',
-            data: c2h4AveValues,
-            type: 'bar',
-          },
-          {
-            name: 'C₂H₂平均值',
-            data: c2h2AveValues,
-            type: 'bar',
-          },
-        ];
-      case 'sdmtjtcctmk':
-      case 'sdmtjthlgmk':
-        return [
-          {
-            name: 'O₂最小值',
-            data: o2MinValues,
-            type: 'bar',
-          },
-          {
-            name: 'O₂平均值',
-            data: o2AveValues,
-            type: 'bar',
-          },
-          {
-            name: 'N₂最大值',
-            data: n2MaxValues,
-            type: 'bar',
-          },
-          {
-            name: 'N₂平均值',
-            data: n2AveValues,
-            type: 'bar',
-          },
-
-          {
-            name: 'CO最大值',
-            data: coMaxValues,
-            type: 'bar',
-          },
-          {
-            name: 'CO平均值',
-            data: coAveValues,
-            type: 'bar',
-          },
-          {
-            name: 'CO₂最大值',
-            data: co2MaxValues,
-            type: 'bar',
-          },
-          {
-            name: 'CO₂平均值',
-            data: co2AveValues,
-            type: 'bar',
-          },
-          {
-            name: 'CH₄最大值',
-            data: ch4MaxValues,
-            type: 'bar',
-          },
-          {
-            name: 'CH₄平均值',
-            data: ch4AveValues,
-            type: 'bar',
-          },
-          {
-            name: 'C₂H₄最大值',
-            data: c2h4MaxValues,
-            type: 'bar',
-          },
-          {
-            name: 'C₂H₄平均值',
-            data: c2h4AveValues,
-            type: 'bar',
-          },
-          {
-            name: 'C₂H₂最大值',
-            data: c2h2MaxValues,
-            type: 'bar',
-          },
-          {
-            name: 'C₂H₂平均值',
-            data: c2h2AveValues,
-            type: 'bar',
-          },
-        ];
-      case 'sdmtjtjjmk':
-        return [
-          {
-            name: 'O₂最大值',
-            data: o2MaxValues,
-            type: 'bar',
-            yAxisIndex: 0,
-          },
-          {
-            name: 'O₂最小值',
-            data: o2MinValues,
-            type: 'bar',
-            yAxisIndex: 0,
-          },
-          {
-            name: 'O₂平均值',
-            data: o2AveValues,
-            type: 'bar',
-            yAxisIndex: 0,
-          },
-          {
-            name: 'CO最大值',
-            data: coMaxValues,
-            type: 'bar',
-            yAxisIndex: 1,
-          },
-          {
-            name: 'CO最小值',
-            data: coMinValues,
-            type: 'bar',
-            yAxisIndex: 1,
-          },
-          {
-            name: 'CO平均值',
-            data: coAveValues,
-            type: 'bar',
-            yAxisIndex: 1,
-          },
-          {
-            name: 'CO₂最大值',
-            data: co2MaxValues,
-            type: 'bar',
-            yAxisIndex: 0,
-          },
-          {
-            name: 'CO₂最小值',
-            data: co2MinValues,
-            type: 'bar',
-            yAxisIndex: 0,
-          },
-          {
-            name: 'CO₂平均值',
-            data: co2AveValues,
-            type: 'bar',
-            yAxisIndex: 0,
-          },
-          {
-            name: 'CH₄最大值',
-            data: ch4MaxValues,
-            type: 'bar',
-            yAxisIndex: 1,
-          },
-          {
-            name: 'CH₄最小值',
-            data: ch4MinValues,
-            type: 'bar',
-            yAxisIndex: 1,
-          },
-          {
-            name: 'CH₄平均值',
-            data: ch4AveValues,
-            type: 'bar',
-            yAxisIndex: 1,
-          },
-          {
-            name: 'C₂H₄最大值',
-            data: c2h4MaxValues,
-            type: 'bar',
-            yAxisIndex: 1,
-          },
-          {
-            name: 'C₂H₄最小值',
-            data: c2h4MinValues,
-            type: 'bar',
-            yAxisIndex: 1,
-          },
-          {
-            name: 'C₂H₄平均值',
-            data: c2h4AveValues,
-            type: 'bar',
-            yAxisIndex: 1,
-          },
-          {
-            name: 'C₂H₂最大值',
-            data: c2h2MaxValues,
-            type: 'bar',
-            yAxisIndex: 1,
-          },
-          {
-            name: 'C₂H₂最小值',
-            data: c2h2MinValues,
-            type: 'bar',
-            yAxisIndex: 1,
-          },
-          {
-            name: 'C₂H₂平均值',
-            data: c2h2AveValues,
-            type: 'bar',
-            yAxisIndex: 1,
-          },
-        ];
-      default:
-        return [
-          {
-            name: 'C₂H₂最大值',
-            data: c2h2MaxValues,
-            type: 'bar',
-          },
-          {
-            name: 'C₂H₂平均值',
-            data: c2h2AveValues,
-            type: 'bar',
-          },
-          {
-            name: 'C₂H₄最大值',
-            data: c2h4MaxValues,
-            type: 'bar',
-          },
-          {
-            name: 'C₂H₄平均值',
-            data: c2h4AveValues,
-            type: 'bar',
-          },
-          {
-            name: 'CH₄最大值',
-            data: ch4MaxValues,
-            type: 'bar',
-          },
-          {
-            name: 'CH₄平均值',
-            data: ch4AveValues,
-            type: 'bar',
-          },
-          {
-            name: 'CO₂最大值',
-            data: co2MaxValues,
-            type: 'bar',
-          },
-          {
-            name: 'CO₂平均值',
-            data: co2AveValues,
-            type: 'bar',
-          },
-          {
-            name: 'CO最大值',
-            data: coMaxValues,
-            type: 'bar',
-          },
-          {
-            name: 'CO平均值',
-            data: coAveValues,
-            type: 'bar',
-          },
-          {
-            name: 'O₂最小值',
-            data: o2MinValues,
-            type: 'bar',
-          },
-          {
-            name: 'O₂平均值',
-            data: o2AveValues,
-            type: 'bar',
-          },
-          // {
-          //   name: 'N₂最大值',
-          //   data: n2MaxValues,
-          //   type: 'bar',
-          // },
-          // {
-          //   name: 'N₂平均值',
-          //   data: n2AveValues,
-          //   type: 'bar',
-          // },
-          // {
-          //   name: 'NO₂最大值',
-          //   data: no2MaxValues,
-          //   type: 'bar',
-          // },
-          // {
-          //   name: 'NO₂平均值',
-          //   data: no2AveValues,
-          //   type: 'bar',
-          // },
-        ];
-    }
-  };
-
-  const seriesConfig = getSeriesConfig(sysOrgCode);
-  const option = {
-    tooltip: {
-      trigger: 'axis',
-      backgroundColor: 'rgba(28, 72, 105, 0.5)', // 设置 tooltip 背景为透明
-      textStyle: {
-        color: '#ffffff', // 设置 tooltip 字体颜色为白色
-      },
-      axisPointer: {
-        type: 'shadow',
-        label: {
-          show: true,
-          backgroundColor: '#1c4869',
-        },
-      },
-    },
-    legend: {
-      top: '2%',
-      textStyle: {
-        color: '#ffffffff',
-      },
-      width: '80%', // 设置图例的宽度
-      orient: 'horizontal', // 水平布局
-      pageIconColor: '#ffffff', // 设置翻页图标颜色
-      pageTextStyle: {
-        color: '#ffffff', // 设置翻页文字颜色
-      },
-    },
-    xAxis: {
-      type: 'category',
-      data: categories,
-      splitLine: { show: true, lineStyle: { color: 'rgba(28, 72, 105, 0.5)' } },
-      axisLabel: {
-        interval: 0, // 显示所有标签
-        color: '#ffffff', // 设置 x 轴字体颜色
-        formatter: function (value: string) {
-          return value.length > 8 ? value.slice(0, 8) + '...' : value; // 截断长标签
-        },
-      },
-    },
-    yAxis: [
-      {
-        type: 'value',
-        max: 25,
-        name: '%',
-        splitLine: { show: true, lineStyle: { color: 'rgba(28, 72, 105, 0.5)' } },
-        axisLabel: {
-          color: '#ffffff',
-        },
-      },
-      {
-        type: 'value',
-        min: 0,
-        max: 25,
-        name: 'ppm',
-        splitLine: { show: true, lineStyle: { color: 'rgba(21,80,126,.5)' } },
-        axisLabel: {
-          color: '#ffffff',
-        },
-      },
-    ],
-    dataZoom: [
-      {
-        type: 'slider', // 会创建一个滑块来选择要显示的区域
-        start: 0, // 初始选中范围的起始百分比
-        end: (5 / categories.length) * 100, // 初始选中范围的结束百分比,根据数据条数调整
-        minSpan: (5 / categories.length) * 100, // 最小选中范围,根据数据条数调整
-        maxSpan: (5 / categories.length) * 100, // 最大选中范围,根据数据条数调整
-        show: true,
-        height: 10, // 设置滑块高度
-        bottom: 1, // 设置滑块距离容器底部的距离
-        borderColor: 'transparent', // 设置边框颜色为透明
-        backgroundColor: '#F6F7FB', // 设置背景颜色
-        handleIcon: 'path://M512,512m-448,0a448,448,0,1,0,896,0a448,448,0,1,0,-896,0Z', // 设置手柄图标为圆形
-        handleColor: '#C2D2FF', // 设置手柄颜色
-        handleSize: 13, // 设置手柄大小
-        handleStyle: {
-          borderColor: '#C2D2FF', // 设置手柄边框颜色
-        },
-        fillerColor: '#C2D2FF', // 设置选中范围的填充颜色
-      },
-    ],
-    grid: {
-      top: '21%', // 设置 grid 距离顶部的距离,增加间隔
-      left: '3%',
-      right: '4%',
-      bottom: '3%',
-      containLabel: true,
-    },
-    series: seriesConfig,
-  };
-  myChart.setOption(option);
-}
-//跳转到爆炸三角形
-function toDetail(record: any) {
-  posMonitor.value = record;
-  modalVisible.value = true;
-}
-//获取束管日报
-async function getTableList(params: any) {
-  let res = await getBundleInfoList({ type: 'bundle', ...params });
-  const content = res.content;
-  let contentArr = JSON.parse(content);
-  // const contentNewArr = computed(() => {
-  //   return contentArr.map((item) => {
-  //     let internalFireWarnLevel = '';
-
-  //     const co = item.co_ave;
-  //     const co2 = item.co2_ave;
-  //     const c2h4 = item.c2h4_ave;
-  //     const c2h2 = item.c2h2_ave;
-  //     const coRatio = co / co2;
-
-  //     if (co >= 0 && co <= 13.75) {
-  //       internalFireWarnLevel = '潜伏期阶段';
-  //     } else if (co > 13.75 && co < 67.2 && coRatio < 0.095) {
-  //       internalFireWarnLevel = '缓慢氧化升温阶段';
-  //     } else if ((co >= 67.2 && co < 1606.3) || (coRatio >= 0.095 && coRatio < 0.322) || c2h4 < 2) {
-  //       internalFireWarnLevel = '加速氧化阶段';
-  //     } else if (co >= 1606.3 || coRatio >= 0.322 || c2h4 >= 2 || c2h2 > 0) {
-  //       internalFireWarnLevel = '剧烈氧化阶段';
-  //     }
-
-  //     return { ...item, internalFireWarnLevel };
-  //   });
-  // });
-  total.value = contentArr.length;
-  qfqCount.value = contentArr.filter((item: any) => item.internalFireWarnLevel === '潜伏期阶段').length;
-  latentCount.value = contentArr.filter((item: any) => item.internalFireWarnLevel === '缓慢氧化升温阶段').length;
-  selfHeatingCount.value = contentArr.filter((item: any) => item.internalFireWarnLevel === '加速氧化升温阶段').length;
-  combustionCount.value = contentArr.filter((item: any) => item.internalFireWarnLevel === '剧烈氧化升温阶段').length;
-  qfqPercent.value = (qfqCount.value / total.value) * 100;
-  latentPercent.value = (latentCount.value / total.value) * 100;
-  selfHeatingPercent.value = (selfHeatingCount.value / total.value) * 100;
-  combustionPercent.value = (combustionCount.value / total.value) * 100;
-  tableData.value = contentArr;
-  nextTick(() => {
-    updateChart(contentArr);
-  });
-}
-async function getTableListById(params: any) {
-  let res = await getAllFileListById({ ...params });
-  const content = res.content;
-  let contentArr = JSON.parse(content);
-  total.value = contentArr.length;
-  qfqCount.value = contentArr.filter((item: any) => item.internalFireWarnLevel === '潜伏期阶段').length;
-  latentCount.value = contentArr.filter((item: any) => item.internalFireWarnLevel === '缓慢氧化升温阶段').length;
-  selfHeatingCount.value = contentArr.filter((item: any) => item.internalFireWarnLevel === '加速氧化升温阶段').length;
-  combustionCount.value = contentArr.filter((item: any) => item.internalFireWarnLevel === '剧烈氧化升温阶段').length;
-  qfqPercent.value = (qfqCount.value / total.value) * 100;
-  latentPercent.value = (latentCount.value / total.value) * 100;
-  selfHeatingPercent.value = (selfHeatingCount.value / total.value) * 100;
-  combustionPercent.value = (combustionCount.value / total.value) * 100;
-  tableData.value = contentArr;
-  nextTick(() => {
-    updateChart(contentArr);
-  });
-}
-//获取所有文件列表
-async function getAllFile() {
-  let res = await getAllFileList({ type: 'bundle', pageNo: 1, pageSize: 1000 });
-  selectList.value = res.records.map((item: any) => ({
-    id: item.id,
-    fileName: item.fileName,
-  }));
-  jcddArr.value = res.records.map((item: any) => ({
-    id: item.jcdd,
-  }));
-  if (selectList.value.length > 0) {
-    formSearch.id = selectList.value[0].id;
-    getSearch();
-  }
-}
-// 处理文件点击事件
-function handleFileClick(item: any) {
-  formSearch.id = item.id;
-  formSearch.fileName = item.fileName;
-  selectedFileId.value = item.id;
-  getSearch();
-}
-//查询
-function getSearch() {
-  // const selectedFile = selectList.value.find((item) => item.id === formSearch.id);
-  const params = {
-    id: formSearch.id,
-    // fileName: selectedFile ? selectedFile.fileName : '',
-  };
-  getTableListById(params);
-}
-onMounted(() => {
-  getTableList({ type: 'bundle' });
-  getAllFile().then(() => {
-    if (selectList.value.length > 0) {
-      formSearch.id = selectList.value[0].id;
-      selectedFileId.value = selectList.value[0].id;
-      getSearch();
-    }
-  });
-});
-</script>
-
-<style lang="less" scoped>
-@import '/@/design/theme.less';
-
-.content-container {
-  display: flex;
-  width: 100%;
-  height: 100%;
-  padding-top: 54px;
-}
-
-.file-list {
-  width: 20%;
-  padding: 10px;
-  margin-right: 10px;
-  margin-bottom: 50px;
-  border: 1px solid #99e8ff66;
-  background: #27546e1a;
-  box-shadow: 0px 0px 20px 7px rgba(145, 233, 254, 0.7) inset;
-  -moz-box-shadow: 0px 0px 20px 7px rgba(145, 233, 254, 0.7) inset;
-  -webkit-box-shadow: 0px 0px 50px 1px rgb(149 235 255 / 5%) inset;
-}
-
-.file-list ul {
-  list-style: none;
-  padding: 0;
-}
-
-.file-list li {
-  color: #fff;
-  padding: 5px;
-  cursor: pointer;
-}
-
-.file-list li:hover,
-.file-list li.selected {
-  background: #1c4869;
-}
-
-.table-container {
-  margin-top: 10px;
-  width: 80%;
-  box-sizing: border-box;
-}
-.data-container {
-  margin-top: 40px;
-  display: flex;
-  width: 100%;
-  height: 100%;
-}
-
-.bar-chart {
-  flex: 3; /* 占据 3/4 的空间 */
-  width: 100%;
-  height: 400px;
-}
-
-.data-content {
-  flex: 1; /* 占据 1/4 的空间 */
-  height: 400px;
-  display: flex;
-  flex-direction: column; /* 垂直排列进度条 */
-  // align-items: center; /* 水平居中 */
-  margin: 10px;
-  .title {
-    font-size: 18px;
-    font-weight: 600;
-    color: #fff;
-    margin-bottom: 20px;
-  }
-  .explain {
-    color: var(--vent-table-action-link);
-    margin-top: 18px;
-  }
-}
-
-.dustMonitor {
-  width: 100%;
-  height: 100%;
-  padding: 10px 10px 15px 10px;
-  box-sizing: border-box;
-  position: relative;
-}
-
-.yellow-progress .ant-progress-bg {
-  background-color: yellow !important;
-}
-
-:deep(.zxm-table-thead > tr > th:last-child) {
-  border-right: 1px solid #91e9fe !important;
-}
-
-:deep(.zxm-picker-input > input) {
-  color: #fff;
-}
-
-:deep(.zxm-select:not(.zxm-select-customize-input) .zxm-select-selector) {
-  border: 1px solid var(--vent-form-item-border) !important;
-  background-color: #ffffff00 !important;
-}
-
-:deep(.zxm-select-selection-item) {
-  color: #fff !important;
-}
-.blast-delta-container {
-  margin: 50px;
-  display: flex;
-  justify-content: space-between;
-}
-.progress {
-  width: 100%;
-  height: 20px;
-  margin-top: 10px;
-}
-.progress-label {
-  margin-top: 20px;
-  text-align: left;
-  margin-bottom: 5px;
-  color: #fff;
-}
-::deep .progress-text {
-  color: #fff !important; /* 自定义百分比文字颜色 */
-}
-</style>

+ 0 - 547
src/views/vent/bundle/bundleMonitorTable/modal/blastDelta.vue

@@ -1,547 +0,0 @@
-<template>
-  <div class="blastDelta">
-    <div style="text-align: center; margin-top: -20px"> 平均值 </div>
-    <div ref="coord" class="coords">
-      <div class="coord-lineY">
-        <div :style="{ width: '5px', height: `${lengY}px`, 'border-top': '1px solid #0079ff' }" v-for="item in 10" :key="item"></div>
-      </div>
-      <div class="coord-labelY">
-        <div :style="{ width: '20px', height: `${lengY}px`, color: '#fff' }" v-for="(ite, ind) in 10" :key="ind">{{ ind == 0 ? maxY : '' }}</div>
-      </div>
-      <div class="coord-lineX">
-        <div :style="{ height: '5px', width: `${lengY}px`, 'border-right': '1px solid #0079ff' }" v-for="item in 15" :key="item"></div>
-      </div>
-      <div class="coord-labelX">
-        <div :style="{ height: '20px', width: `${lengY}px`, color: '#fff' }" v-for="(ite, ind) in 15" :key="ind">{{ ind == 14 ? maxX : '' }}</div>
-      </div>
-      <div class="line-AB" :style="{ width: 'calc(100% - 10px)', height: 'calc(100% - 10px)' }">
-        <canvas id="myCanvas" :width="canvasSize.width" :height="canvasSize.height"></canvas>
-      </div>
-      <!-- <div class="line-legend">
-        <div class="legend-ite" v-for="ite in 4" :key="ite"></div>
-      </div>
-      <div class="legend-name">
-        <div class="item-name" v-for="item in legendList" :key="item">{{ item.name }}</div>
-      </div> -->
-    </div>
-    <div class="line-legend">
-      <div class="legend-box" v-for="(item, index) in legendList" :key="index">
-        <span class="legend-icon"></span>
-        <span class="legend-label">{{ item.name }}</span>
-      </div>
-    </div>
-  </div>
-</template>
-
-<script lang="ts" setup>
-import { ref, reactive, onMounted, watch, nextTick } from 'vue';
-
-let props = defineProps({
-  posMonitor: {
-    type: Object,
-    default: () => {
-      return {};
-    },
-  },
-  canvasSize: {
-    type: Object,
-    default: () => {
-      return { width: 380, height: 245 };
-    },
-  },
-});
-let coord = ref(null);
-let lengY = ref(0);
-//与x,y轴相交最大值坐标
-let maxY = ref(0);
-let maxX = ref(0);
-let maxY1 = ref(0);
-let maxX1 = ref(0);
-
-//A点坐标
-let coordinateA = reactive({
-  x: 0,
-  y: 0,
-});
-//B点坐标
-let coordinateB = reactive({
-  x: 0,
-  y: 0,
-});
-//E点坐标
-let coordinateE = reactive({
-  x: 0,
-  y: 0,
-});
-//F点坐标
-let coordinateF = reactive({
-  x: 0,
-  y: 0,
-});
-//G点坐标
-let coordinateG = reactive({
-  x: 0,
-  y: 0,
-});
-
-let legendList = ref<any[]>([{ name: '不爆炸' }, { name: '可燃气体不足' }, { name: '可爆炸' }, { name: '氧气不足' }]);
-
-function getAreas() {
-  if (coord.value) {
-    let width = coord.value.offsetWidth;
-    let height = coord.value.offsetHeight;
-    lengY.value = Math.ceil((height - 10) / 10);
-  }
-}
-//根据A,B,E,G等点坐标绘制爆炸三角形
-function getBlast() {
-  maxY.value = getCoordABY(0);
-  // 获取canvas元素
-  let canvas = document.getElementById('myCanvas');
-  let ctx = canvas.getContext('2d');
-  let scalcY, scalcX;
-  if (coordinateB.x < 50) {
-    maxX.value = 50;
-    scalcY = canvas.height / maxY.value;
-    scalcX = canvas.width / maxX.value;
-  } else {
-    maxX.value = parseInt(coordinateB.x + 10);
-    scalcY = canvas.height / maxY.value;
-    scalcX = canvas.width / maxX.value;
-  }
-  //绘制AB点线条
-  ctx.beginPath();
-  ctx.moveTo(coordinateA.x * scalcX, canvas.height - coordinateA.y * scalcY); // 开始绘制的点
-  ctx.lineTo(coordinateB.x * scalcX, canvas.height - coordinateB.y * scalcY); // 结束绘制的点
-  ctx.strokeStyle = '#000';
-  ctx.stroke(); // 进行绘制
-
-  //绘制AE线条
-  ctx.beginPath();
-  ctx.moveTo(coordinateA.x * scalcX, canvas.height - coordinateA.y * scalcY); // 开始绘制的点
-  ctx.lineTo(coordinateE.x * scalcX, canvas.height - coordinateE.y * scalcY); // 结束绘制的点
-  ctx.strokeStyle = '#000';
-  ctx.stroke(); // 进行绘制
-
-  //绘制BE线条
-  ctx.beginPath();
-  ctx.moveTo(coordinateB.x * scalcX, canvas.height - coordinateB.y * scalcY); // 开始绘制的点
-  ctx.lineTo(coordinateE.x * scalcX, canvas.height - coordinateE.y * scalcY); // 结束绘制的点
-  ctx.strokeStyle = '#000';
-  ctx.stroke(); // 进行绘制
-
-  //绘制A点与坐标轴连线
-  ctx.beginPath();
-  ctx.moveTo(0, canvas.height - maxY.value * scalcY); // 开始绘制的点
-  ctx.lineTo(coordinateA.x * scalcX, canvas.height - coordinateA.y * scalcY); // 结束绘制的点
-  ctx.strokeStyle = '#000';
-  ctx.stroke(); // 进行绘制
-
-  //绘制B点c连线
-  ctx.beginPath();
-  ctx.moveTo(coordinateB.x * scalcX, canvas.height - coordinateB.y * scalcY); // 开始绘制的点
-  ctx.lineTo(maxX.value * scalcX, canvas.height - getCoordABY(maxX.value) * scalcY); // 结束绘制的点
-  ctx.strokeStyle = '#000';
-  ctx.stroke(); // 进行绘制
-  //绘制c点与坐标轴连线
-  ctx.beginPath();
-  ctx.moveTo(maxX.value * scalcX, canvas.height - getCoordABY(maxX.value) * scalcY); // 开始绘制的点
-  ctx.lineTo(maxX.value * scalcX, canvas.height); // 结束绘制的点
-  ctx.strokeStyle = '#000';
-  ctx.stroke(); // 进行绘制
-
-  //绘制E,F线条
-  ctx.beginPath();
-  ctx.moveTo(coordinateE.x * scalcX, canvas.height - coordinateE.y * scalcY); // 开始绘制的点
-  ctx.lineTo(coordinateF.x * scalcX, canvas.height - coordinateF.y * scalcY); // 结束绘制的点
-  ctx.strokeStyle = '#000';
-  ctx.stroke(); // 进行绘制
-
-  //绘制GE线条
-  ctx.beginPath();
-  ctx.moveTo(coordinateG.x * scalcX, canvas.height - coordinateG.y * scalcY); // 开始绘制的点
-  ctx.lineTo(coordinateE.x * scalcX, canvas.height - coordinateE.y * scalcY); // 结束绘制的点
-  ctx.strokeStyle = '#000';
-  ctx.stroke(); // 进行绘制
-
-  ctx.clearRect(0, 0, canvas.width, canvas.height);
-  let pointData = [
-    {
-      arr: [
-        { x: coordinateG.x * scalcX, y: canvas.height - coordinateG.y * scalcY }, //G
-        { x: coordinateE.x * scalcX, y: canvas.height - coordinateE.y * scalcY }, //E
-        { x: coordinateA.x * scalcX, y: canvas.height - coordinateA.y * scalcY }, //A
-        { x: 0, y: canvas.height - maxY.value * scalcY },
-      ],
-      color: 'rgb(1, 127, 2, .9)',
-    },
-    {
-      arr: [
-        { x: 0, y: canvas.height }, //原点
-        { x: coordinateF.x * scalcX, y: canvas.height - coordinateF.y * scalcY }, //F
-        { x: coordinateE.x * scalcX, y: canvas.height - coordinateE.y * scalcY }, //E
-        { x: coordinateG.x * scalcX, y: canvas.height - coordinateG.y * scalcY }, //G
-      ],
-      color: 'rgb(127, 254, 2, .9)',
-    },
-    {
-      arr: [
-        { x: coordinateF.x * scalcX, y: canvas.height - coordinateF.y * scalcY }, //F
-        { x: maxX.value * scalcX, y: canvas.height },
-        { x: maxX.value * scalcX, y: canvas.height - getCoordABY(maxX.value) * scalcY },
-        { x: coordinateB.x * scalcX, y: canvas.height - coordinateB.y * scalcY }, //B
-        { x: coordinateE.x * scalcX, y: canvas.height - coordinateE.y * scalcY }, //E
-      ],
-      color: 'rgb(255, 255, 0, .9)',
-    },
-    {
-      arr: [
-        { x: coordinateE.x * scalcX, y: canvas.height - coordinateE.y * scalcY }, //E
-        { x: coordinateB.x * scalcX, y: canvas.height - coordinateB.y * scalcY }, //B
-        { x: coordinateA.x * scalcX, y: canvas.height - coordinateA.y * scalcY }, //A
-      ],
-      color: 'rgb(255, 0, 0, .9)',
-    },
-  ];
-
-  pointData.forEach((item, index) => {
-    ctx.beginPath();
-    ctx.moveTo(item.arr[0].x, item.arr[0].y);
-    item.arr.forEach((items, ind) => {
-      if (ind != 0) {
-        ctx.lineTo(item.arr[ind].x, item.arr[ind].y);
-      }
-    });
-    ctx.closePath();
-    ctx.fillStyle = item.color;
-    ctx.fill();
-    ctx.strokeStyle = 'transparent';
-    ctx.lineWidth = 1;
-    ctx.stroke();
-  });
-
-  // 标记点A
-  ctx.beginPath();
-  ctx.arc(coordinateA.x * scalcX, canvas.height - coordinateA.y * scalcY, 1, 0, 2 * Math.PI);
-  ctx.fillStyle = '#eee';
-  ctx.fill();
-  // 在点附近添加文字
-  ctx.font = '12px Arial';
-  ctx.fillStyle = '#fff';
-  ctx.fillText('A', coordinateA.x * scalcX + 10, canvas.height - coordinateA.y * scalcY); // 文字位置略微偏上,以便于文字与点对齐
-
-  //标记点B
-  ctx.beginPath();
-  ctx.arc(coordinateB.x * scalcX, canvas.height - coordinateB.y * scalcY, 1, 0, 2 * Math.PI);
-  ctx.fillStyle = '#eee';
-  ctx.fill();
-  // 在点附近添加文字
-  ctx.font = '12px Arial';
-  ctx.fillStyle = '#fff';
-  ctx.fillText('B', coordinateB.x * scalcX + 10, canvas.height - coordinateB.y * scalcY); // 文字位置略微偏上,以便于文字与点对齐
-
-  //标记点E
-  ctx.beginPath();
-  ctx.arc(coordinateE.x * scalcX, canvas.height - coordinateE.y * scalcY, 1, 0, 2 * Math.PI);
-  ctx.fillStyle = '#eee';
-  ctx.fill();
-  // 在点附近添加文字
-  ctx.font = '12px Arial';
-  ctx.fillStyle = '#fff';
-  ctx.fillText('E', coordinateE.x * scalcX + 5, canvas.height - coordinateE.y * scalcY + 10); // 文字位置略微偏上,以便于文字与点对齐
-
-  //标记点G
-  ctx.beginPath();
-  ctx.arc(coordinateG.x * scalcX, canvas.height - coordinateG.y * scalcY, 1, 0, 2 * Math.PI);
-  ctx.fillStyle = '#eee';
-  ctx.fill();
-  // 在点附近添加文字
-  ctx.font = '12px Arial';
-  ctx.fillStyle = '#fff';
-  ctx.fillText('G', coordinateG.x * scalcX + 5, canvas.height - coordinateG.y * scalcY); // 文字位置略微偏上,以便于文字与点对齐
-  //标记点F
-  ctx.beginPath();
-  ctx.arc(coordinateF.x * scalcX, canvas.height - coordinateF.y * scalcY, 1, 0, 2 * Math.PI);
-  ctx.fillStyle = '#eee';
-  ctx.fill();
-  // 在点附近添加文字
-  ctx.font = '12px Arial';
-  ctx.fillStyle = '#fff';
-  ctx.fillText('F', coordinateF.x * scalcX + 10, canvas.height - coordinateF.y * scalcY - 10); // 文字位置略微偏上,以便于文字与点对齐
-  //标记点
-  ctx.beginPath();
-  ctx.arc(maxX1.value * scalcX, canvas.height - maxY1.value * scalcY, 5, 0, 2 * Math.PI);
-  ctx.fillStyle = 'blue';
-  ctx.fill();
-  // 在点附近添加文字
-  ctx.font = '12px Arial';
-  ctx.fillStyle = '#fff';
-  ctx.fillText('', maxX1.value * scalcX + 10, canvas.height - maxY1.value * scalcY - 10); // 文字位置略微偏上,以便于文字与点对齐
-}
-//绘制不爆炸三角形
-function getUnblast() {
-  maxY.value = 21;
-  maxX.value = 50;
-  // 获取canvas元素
-  let canvas = document.getElementById('myCanvas');
-  let ctx = canvas.getContext('2d');
-  let scalcY = canvas.height / maxY.value;
-  let scalcX = canvas.width / maxX.value;
-
-  //绘制AB点线条
-  ctx.beginPath();
-  ctx.moveTo(0, canvas.height - maxY.value * scalcY); // 开始绘制的点
-  ctx.lineTo(maxX.value * scalcX, canvas.height); // 结束绘制的点
-  ctx.strokeStyle = '#000';
-  ctx.stroke(); // 进行绘制
-
-  ctx.clearRect(0, 0, canvas.width, canvas.height);
-  let pointData = [
-    {
-      arr: [
-        { x: 0, y: canvas.height }, //原点
-        { x: 0, y: canvas.height - maxY.value * scalcY }, //A
-        { x: maxX.value * scalcX, y: canvas.height }, //B
-      ],
-      color: 'rgb(127, 254, 2, .9)',
-    },
-  ];
-
-  pointData.forEach((item, index) => {
-    ctx.beginPath();
-    ctx.moveTo(item.arr[0].x, item.arr[0].y);
-    item.arr.forEach((items, ind) => {
-      if (ind != 0) {
-        ctx.lineTo(item.arr[ind].x, item.arr[ind].y);
-      }
-    });
-    ctx.closePath();
-    ctx.fillStyle = item.color;
-    ctx.fill();
-    ctx.strokeStyle = 'transparent';
-    ctx.lineWidth = 1;
-    ctx.stroke();
-  });
-
-  // 标记点A
-  ctx.beginPath();
-  ctx.arc(0, canvas.height - maxY.value * scalcY, 1, 0, 2 * Math.PI);
-  ctx.fillStyle = '#eee';
-  ctx.fill();
-  // 在点附近添加文字
-  ctx.font = '12px Arial';
-  ctx.fillStyle = '#fff';
-  ctx.fillText('A', 10, canvas.height - maxY.value * scalcY + 10); // 文字位置略微偏上,以便于文字与点对齐
-  // 标记点B
-  ctx.beginPath();
-  ctx.arc(maxX.value * scalcX, canvas.height, 1, 0, 2 * Math.PI);
-  ctx.fillStyle = '#eee';
-  ctx.fill();
-  // 在点附近添加文字
-  ctx.font = '12px Arial';
-  ctx.fillStyle = '#fff';
-  ctx.fillText('B', maxX.value * scalcX - 10, canvas.height - 10); // 文字位置略微偏上,以便于文字与点对齐
-  //标记点
-  ctx.beginPath();
-  ctx.arc(maxX1.value * scalcX, canvas.height - maxY1.value * scalcY, 5, 0, 2 * Math.PI);
-  ctx.fillStyle = 'blue';
-  ctx.fill();
-  // 在点附近添加文字
-  ctx.font = '12px Arial';
-  ctx.fillStyle = '#fff';
-  ctx.fillText('', maxX1.value * scalcX + 10, canvas.height - maxY1.value * scalcY - 10); // 文字位置略微偏上,以便于文字与点对齐
-}
-//根据横坐标获取直线AB纵坐标
-function getCoordABY(params) {
-  return Math.ceil(
-    ((parseFloat(coordinateB.y) - parseFloat(coordinateA.y)) * params -
-      parseFloat(coordinateA.x) * parseFloat(coordinateB.y) +
-      parseFloat(coordinateB.x) * parseFloat(coordinateA.y)) /
-      (parseFloat(coordinateB.x) - parseFloat(coordinateA.x))
-  );
-}
-//根据纵坐标获取直线AB横坐标
-function getCoordABX(params1) {
-  return Math.floor(
-    ((parseFloat(coordinateB.x) - parseFloat(coordinateA.x)) * params1 +
-      parseFloat(coordinateA.x) * parseFloat(coordinateB.y) -
-      parseFloat(coordinateB.x) * parseFloat(coordinateA.y)) /
-      (parseFloat(coordinateB.y) - parseFloat(coordinateA.y))
-  );
-}
-
-watch(
-  () => props.posMonitor,
-  (newV, oldV) => {
-    if (newV.btTriBlast) {
-      maxY1.value = parseFloat(newV.o2_ave);
-      maxX1.value =
-        parseFloat(newV.co_max) * 0.0001 + parseFloat(newV.ch4_max) + parseFloat(newV.c2h2_max) * 0.0001 + parseFloat(newV.c2h4_max) * 0.0001;
-      let btTriBlasts = newV.btTriBlast;
-      coordinateA.x = btTriBlasts.A_x;
-      coordinateA.y = btTriBlasts.A_y;
-      coordinateB.x = btTriBlasts.B_x;
-      coordinateB.y = btTriBlasts.B_y;
-      coordinateE.x = btTriBlasts.E_x;
-      coordinateE.y = btTriBlasts.E_y;
-      coordinateF.x = btTriBlasts.F_x;
-      coordinateF.y = btTriBlasts.F_y;
-      coordinateG.x = btTriBlasts.G_x;
-      coordinateG.y = btTriBlasts.G_y;
-      if (
-        !((coordinateA.y - coordinateB.y) / (coordinateA.x - coordinateB.x)) ||
-        (coordinateA.y - coordinateB.y) / (coordinateA.x - coordinateB.x) == 1
-      ) {
-        // 使用 nextTick 为了让 immediate watch 触发时等待组件挂载后执行绘制
-        nextTick(getUnblast);
-      } else {
-        nextTick(getBlast);
-      }
-    }
-  },
-  { deep: true, immediate: true }
-);
-
-onMounted(() => {
-  getAreas();
-});
-</script>
-
-<style lang="less" scoped>
-.blastDelta {
-  position: relative;
-  width: 100%;
-  height: 320px;
-
-  .line-legend {
-    position: absolute;
-    left: 50%;
-    top: 20px;
-    width: 75%;
-    height: 20px;
-    transform: translate(-50%, 0);
-    display: flex;
-    justify-content: space-around;
-
-    .legend-box {
-      display: flex;
-
-      height: 100%;
-      justify-content: center;
-      align-items: center;
-      font-size: 12px;
-
-      &:nth-child(1) {
-        flex: 1;
-
-        .legend-icon {
-          width: 10px;
-          height: 10px;
-          background-color: #7ffe02;
-          margin-right: 5px;
-        }
-      }
-
-      &:nth-child(2) {
-        flex: 1.5;
-
-        .legend-icon {
-          width: 10px;
-          height: 10px;
-          background-color: #017f02;
-          margin-right: 5px;
-        }
-      }
-
-      &:nth-child(3) {
-        flex: 1;
-
-        .legend-icon {
-          width: 10px;
-          height: 10px;
-          background-color: #ff0000;
-          margin-right: 5px;
-        }
-      }
-
-      &:nth-child(4) {
-        flex: 1;
-
-        .legend-icon {
-          width: 10px;
-          height: 10px;
-          background-color: #ffff00;
-          margin-right: 5px;
-        }
-      }
-    }
-  }
-
-  .coords {
-    position: absolute;
-    left: 50%;
-    top: 50%;
-    width: 90%;
-    height: 80%;
-    border-left: 1px solid #006c9d;
-    border-bottom: 1px solid #006c9d;
-    transform: translate(-45%, -46%);
-
-    .coord-lineY {
-      position: absolute;
-      left: -5px;
-      top: 10px;
-      width: 5px;
-      height: calc(100% - 10px);
-    }
-
-    .coord-labelY {
-      position: absolute;
-      left: -25px;
-      top: -5px;
-      width: 20px;
-      height: 100%;
-    }
-
-    .coord-lineX {
-      display: flex;
-      position: absolute;
-      bottom: -5px;
-      right: 10px;
-      width: calc(100% - 10px);
-      height: 5px;
-    }
-
-    .coord-labelX {
-      display: flex;
-      justify-content: flex-end;
-      position: absolute;
-      bottom: -25px;
-      left: -5px;
-      width: 100%;
-      height: 20px;
-    }
-
-    .line-AB {
-      position: absolute;
-      left: 0;
-      top: 10px;
-    }
-
-    // .legend-name {
-    //   position: absolute;
-    //   right: 0;
-    //   top: 20px;
-    //   height: 80px;
-
-    //   .item-name {
-    //     height: 20px;
-    //     line-height: 20px;
-    //     font-size: 10px;
-    //     color: #fff;
-    //     letter-spacing: 2px;
-    //   }
-    // }
-  }
-}
-</style>

+ 0 - 547
src/views/vent/bundle/bundleMonitorTable/modal/blastDelta1.vue

@@ -1,547 +0,0 @@
-<template>
-  <div class="blastDelta">
-    <div style="text-align: center; margin-top: -20px"> 最小值 </div>
-    <div ref="coord" class="coords">
-      <div class="coord-lineY">
-        <div :style="{ width: '5px', height: `${lengY}px`, 'border-top': '1px solid #0079ff' }" v-for="item in 10" :key="item"></div>
-      </div>
-      <div class="coord-labelY">
-        <div :style="{ width: '20px', height: `${lengY}px`, color: '#fff' }" v-for="(ite, ind) in 10" :key="ind">{{ ind == 0 ? maxY : '' }}</div>
-      </div>
-      <div class="coord-lineX">
-        <div :style="{ height: '5px', width: `${lengY}px`, 'border-right': '1px solid #0079ff' }" v-for="item in 15" :key="item"></div>
-      </div>
-      <div class="coord-labelX">
-        <div :style="{ height: '20px', width: `${lengY}px`, color: '#fff' }" v-for="(ite, ind) in 15" :key="ind">{{ ind == 14 ? maxX : '' }}</div>
-      </div>
-      <div class="line-AB" :style="{ width: 'calc(100% - 10px)', height: 'calc(100% - 10px)' }">
-        <canvas id="myCanvas1" :width="canvasSize.width" :height="canvasSize.height"></canvas>
-      </div>
-      <!-- <div class="line-legend">
-        <div class="legend-ite" v-for="ite in 4" :key="ite"></div>
-      </div>
-      <div class="legend-name">
-        <div class="item-name" v-for="item in legendList" :key="item">{{ item.name }}</div>
-      </div> -->
-    </div>
-    <div class="line-legend">
-      <div class="legend-box" v-for="(item, index) in legendList" :key="index">
-        <span class="legend-icon"></span>
-        <span class="legend-label">{{ item.name }}</span>
-      </div>
-    </div>
-  </div>
-</template>
-
-<script lang="ts" setup>
-import { ref, reactive, onMounted, watch, nextTick } from 'vue';
-
-let props = defineProps({
-  posMonitor: {
-    type: Object,
-    default: () => {
-      return {};
-    },
-  },
-  canvasSize: {
-    type: Object,
-    default: () => {
-      return { width: 380, height: 245 };
-    },
-  },
-});
-let coord = ref(null);
-let lengY = ref(0);
-//与x,y轴相交最大值坐标
-let maxY = ref(0);
-let maxX = ref(0);
-let maxY1 = ref(0);
-let maxX1 = ref(0);
-
-//A点坐标
-let coordinateA = reactive({
-  x: 0,
-  y: 0,
-});
-//B点坐标
-let coordinateB = reactive({
-  x: 0,
-  y: 0,
-});
-//E点坐标
-let coordinateE = reactive({
-  x: 0,
-  y: 0,
-});
-//F点坐标
-let coordinateF = reactive({
-  x: 0,
-  y: 0,
-});
-//G点坐标
-let coordinateG = reactive({
-  x: 0,
-  y: 0,
-});
-
-let legendList = ref<any[]>([{ name: '不爆炸' }, { name: '可燃气体不足' }, { name: '可爆炸' }, { name: '氧气不足' }]);
-
-function getAreas() {
-  if (coord.value) {
-    let width = coord.value.offsetWidth;
-    let height = coord.value.offsetHeight;
-    lengY.value = Math.ceil((height - 10) / 10);
-  }
-}
-//根据A,B,E,G等点坐标绘制爆炸三角形
-function getBlast() {
-  maxY.value = getCoordABY(0);
-  // 获取canvas元素
-  let canvas = document.getElementById('myCanvas1');
-  let ctx = canvas.getContext('2d');
-  let scalcY, scalcX;
-  if (coordinateB.x < 50) {
-    maxX.value = 50;
-    scalcY = canvas.height / maxY.value;
-    scalcX = canvas.width / maxX.value;
-  } else {
-    maxX.value = parseInt(coordinateB.x + 10);
-    scalcY = canvas.height / maxY.value;
-    scalcX = canvas.width / maxX.value;
-  }
-  //绘制AB点线条
-  ctx.beginPath();
-  ctx.moveTo(coordinateA.x * scalcX, canvas.height - coordinateA.y * scalcY); // 开始绘制的点
-  ctx.lineTo(coordinateB.x * scalcX, canvas.height - coordinateB.y * scalcY); // 结束绘制的点
-  ctx.strokeStyle = '#000';
-  ctx.stroke(); // 进行绘制
-
-  //绘制AE线条
-  ctx.beginPath();
-  ctx.moveTo(coordinateA.x * scalcX, canvas.height - coordinateA.y * scalcY); // 开始绘制的点
-  ctx.lineTo(coordinateE.x * scalcX, canvas.height - coordinateE.y * scalcY); // 结束绘制的点
-  ctx.strokeStyle = '#000';
-  ctx.stroke(); // 进行绘制
-
-  //绘制BE线条
-  ctx.beginPath();
-  ctx.moveTo(coordinateB.x * scalcX, canvas.height - coordinateB.y * scalcY); // 开始绘制的点
-  ctx.lineTo(coordinateE.x * scalcX, canvas.height - coordinateE.y * scalcY); // 结束绘制的点
-  ctx.strokeStyle = '#000';
-  ctx.stroke(); // 进行绘制
-
-  //绘制A点与坐标轴连线
-  ctx.beginPath();
-  ctx.moveTo(0, canvas.height - maxY.value * scalcY); // 开始绘制的点
-  ctx.lineTo(coordinateA.x * scalcX, canvas.height - coordinateA.y * scalcY); // 结束绘制的点
-  ctx.strokeStyle = '#000';
-  ctx.stroke(); // 进行绘制
-
-  //绘制B点c连线
-  ctx.beginPath();
-  ctx.moveTo(coordinateB.x * scalcX, canvas.height - coordinateB.y * scalcY); // 开始绘制的点
-  ctx.lineTo(maxX.value * scalcX, canvas.height - getCoordABY(maxX.value) * scalcY); // 结束绘制的点
-  ctx.strokeStyle = '#000';
-  ctx.stroke(); // 进行绘制
-  //绘制c点与坐标轴连线
-  ctx.beginPath();
-  ctx.moveTo(maxX.value * scalcX, canvas.height - getCoordABY(maxX.value) * scalcY); // 开始绘制的点
-  ctx.lineTo(maxX.value * scalcX, canvas.height); // 结束绘制的点
-  ctx.strokeStyle = '#000';
-  ctx.stroke(); // 进行绘制
-
-  //绘制E,F线条
-  ctx.beginPath();
-  ctx.moveTo(coordinateE.x * scalcX, canvas.height - coordinateE.y * scalcY); // 开始绘制的点
-  ctx.lineTo(coordinateF.x * scalcX, canvas.height - coordinateF.y * scalcY); // 结束绘制的点
-  ctx.strokeStyle = '#000';
-  ctx.stroke(); // 进行绘制
-
-  //绘制GE线条
-  ctx.beginPath();
-  ctx.moveTo(coordinateG.x * scalcX, canvas.height - coordinateG.y * scalcY); // 开始绘制的点
-  ctx.lineTo(coordinateE.x * scalcX, canvas.height - coordinateE.y * scalcY); // 结束绘制的点
-  ctx.strokeStyle = '#000';
-  ctx.stroke(); // 进行绘制
-
-  ctx.clearRect(0, 0, canvas.width, canvas.height);
-  let pointData = [
-    {
-      arr: [
-        { x: coordinateG.x * scalcX, y: canvas.height - coordinateG.y * scalcY }, //G
-        { x: coordinateE.x * scalcX, y: canvas.height - coordinateE.y * scalcY }, //E
-        { x: coordinateA.x * scalcX, y: canvas.height - coordinateA.y * scalcY }, //A
-        { x: 0, y: canvas.height - maxY.value * scalcY },
-      ],
-      color: 'rgb(1, 127, 2, .9)',
-    },
-    {
-      arr: [
-        { x: 0, y: canvas.height }, //原点
-        { x: coordinateF.x * scalcX, y: canvas.height - coordinateF.y * scalcY }, //F
-        { x: coordinateE.x * scalcX, y: canvas.height - coordinateE.y * scalcY }, //E
-        { x: coordinateG.x * scalcX, y: canvas.height - coordinateG.y * scalcY }, //G
-      ],
-      color: 'rgb(127, 254, 2, .9)',
-    },
-    {
-      arr: [
-        { x: coordinateF.x * scalcX, y: canvas.height - coordinateF.y * scalcY }, //F
-        { x: maxX.value * scalcX, y: canvas.height },
-        { x: maxX.value * scalcX, y: canvas.height - getCoordABY(maxX.value) * scalcY },
-        { x: coordinateB.x * scalcX, y: canvas.height - coordinateB.y * scalcY }, //B
-        { x: coordinateE.x * scalcX, y: canvas.height - coordinateE.y * scalcY }, //E
-      ],
-      color: 'rgb(255, 255, 0, .9)',
-    },
-    {
-      arr: [
-        { x: coordinateE.x * scalcX, y: canvas.height - coordinateE.y * scalcY }, //E
-        { x: coordinateB.x * scalcX, y: canvas.height - coordinateB.y * scalcY }, //B
-        { x: coordinateA.x * scalcX, y: canvas.height - coordinateA.y * scalcY }, //A
-      ],
-      color: 'rgb(255, 0, 0, .9)',
-    },
-  ];
-
-  pointData.forEach((item, index) => {
-    ctx.beginPath();
-    ctx.moveTo(item.arr[0].x, item.arr[0].y);
-    item.arr.forEach((items, ind) => {
-      if (ind != 0) {
-        ctx.lineTo(item.arr[ind].x, item.arr[ind].y);
-      }
-    });
-    ctx.closePath();
-    ctx.fillStyle = item.color;
-    ctx.fill();
-    ctx.strokeStyle = 'transparent';
-    ctx.lineWidth = 1;
-    ctx.stroke();
-  });
-
-  // 标记点A
-  ctx.beginPath();
-  ctx.arc(coordinateA.x * scalcX, canvas.height - coordinateA.y * scalcY, 1, 0, 2 * Math.PI);
-  ctx.fillStyle = '#eee';
-  ctx.fill();
-  // 在点附近添加文字
-  ctx.font = '12px Arial';
-  ctx.fillStyle = '#fff';
-  ctx.fillText('A', coordinateA.x * scalcX + 10, canvas.height - coordinateA.y * scalcY); // 文字位置略微偏上,以便于文字与点对齐
-
-  //标记点B
-  ctx.beginPath();
-  ctx.arc(coordinateB.x * scalcX, canvas.height - coordinateB.y * scalcY, 1, 0, 2 * Math.PI);
-  ctx.fillStyle = '#eee';
-  ctx.fill();
-  // 在点附近添加文字
-  ctx.font = '12px Arial';
-  ctx.fillStyle = '#fff';
-  ctx.fillText('B', coordinateB.x * scalcX + 10, canvas.height - coordinateB.y * scalcY); // 文字位置略微偏上,以便于文字与点对齐
-
-  //标记点E
-  ctx.beginPath();
-  ctx.arc(coordinateE.x * scalcX, canvas.height - coordinateE.y * scalcY, 1, 0, 2 * Math.PI);
-  ctx.fillStyle = '#eee';
-  ctx.fill();
-  // 在点附近添加文字
-  ctx.font = '12px Arial';
-  ctx.fillStyle = '#fff';
-  ctx.fillText('E', coordinateE.x * scalcX + 5, canvas.height - coordinateE.y * scalcY + 10); // 文字位置略微偏上,以便于文字与点对齐
-
-  //标记点G
-  ctx.beginPath();
-  ctx.arc(coordinateG.x * scalcX, canvas.height - coordinateG.y * scalcY, 1, 0, 2 * Math.PI);
-  ctx.fillStyle = '#eee';
-  ctx.fill();
-  // 在点附近添加文字
-  ctx.font = '12px Arial';
-  ctx.fillStyle = '#fff';
-  ctx.fillText('G', coordinateG.x * scalcX + 5, canvas.height - coordinateG.y * scalcY); // 文字位置略微偏上,以便于文字与点对齐
-  //标记点F
-  ctx.beginPath();
-  ctx.arc(coordinateF.x * scalcX, canvas.height - coordinateF.y * scalcY, 1, 0, 2 * Math.PI);
-  ctx.fillStyle = '#eee';
-  ctx.fill();
-  // 在点附近添加文字
-  ctx.font = '12px Arial';
-  ctx.fillStyle = '#fff';
-  ctx.fillText('F', coordinateF.x * scalcX + 10, canvas.height - coordinateF.y * scalcY - 10); // 文字位置略微偏上,以便于文字与点对齐
-  //标记点
-  ctx.beginPath();
-  ctx.arc(maxX1.value * scalcX, canvas.height - maxY1.value * scalcY, 5, 0, 2 * Math.PI);
-  ctx.fillStyle = 'blue';
-  ctx.fill();
-  // 在点附近添加文字
-  ctx.font = '12px Arial';
-  ctx.fillStyle = '#fff';
-  ctx.fillText('', maxX1.value * scalcX + 10, canvas.height - maxY1.value * scalcY - 10); // 文字位置略微偏上,以便于文字与点对齐
-}
-//绘制不爆炸三角形
-function getUnblast() {
-  maxY.value = 21;
-  maxX.value = 50;
-  // 获取canvas元素
-  let canvas = document.getElementById('myCanvas1');
-  let ctx = canvas.getContext('2d');
-  let scalcY = canvas.height / maxY.value;
-  let scalcX = canvas.width / maxX.value;
-
-  //绘制AB点线条
-  ctx.beginPath();
-  ctx.moveTo(0, canvas.height - maxY.value * scalcY); // 开始绘制的点
-  ctx.lineTo(maxX.value * scalcX, canvas.height); // 结束绘制的点
-  ctx.strokeStyle = '#000';
-  ctx.stroke(); // 进行绘制
-
-  ctx.clearRect(0, 0, canvas.width, canvas.height);
-  let pointData = [
-    {
-      arr: [
-        { x: 0, y: canvas.height }, //原点
-        { x: 0, y: canvas.height - maxY.value * scalcY }, //A
-        { x: maxX.value * scalcX, y: canvas.height }, //B
-      ],
-      color: 'rgb(127, 254, 2, .9)',
-    },
-  ];
-
-  pointData.forEach((item, index) => {
-    ctx.beginPath();
-    ctx.moveTo(item.arr[0].x, item.arr[0].y);
-    item.arr.forEach((items, ind) => {
-      if (ind != 0) {
-        ctx.lineTo(item.arr[ind].x, item.arr[ind].y);
-      }
-    });
-    ctx.closePath();
-    ctx.fillStyle = item.color;
-    ctx.fill();
-    ctx.strokeStyle = 'transparent';
-    ctx.lineWidth = 1;
-    ctx.stroke();
-  });
-
-  // 标记点A
-  ctx.beginPath();
-  ctx.arc(0, canvas.height - maxY.value * scalcY, 1, 0, 2 * Math.PI);
-  ctx.fillStyle = '#eee';
-  ctx.fill();
-  // 在点附近添加文字
-  ctx.font = '12px Arial';
-  ctx.fillStyle = '#fff';
-  ctx.fillText('A', 10, canvas.height - maxY.value * scalcY + 10); // 文字位置略微偏上,以便于文字与点对齐
-  // 标记点B
-  ctx.beginPath();
-  ctx.arc(maxX.value * scalcX, canvas.height, 1, 0, 2 * Math.PI);
-  ctx.fillStyle = '#eee';
-  ctx.fill();
-  // 在点附近添加文字
-  ctx.font = '12px Arial';
-  ctx.fillStyle = '#fff';
-  ctx.fillText('B', maxX.value * scalcX - 10, canvas.height - 10); // 文字位置略微偏上,以便于文字与点对齐
-  //标记点
-  ctx.beginPath();
-  ctx.arc(maxX1.value * scalcX, canvas.height - maxY1.value * scalcY, 5, 0, 2 * Math.PI);
-  ctx.fillStyle = 'blue';
-  ctx.fill();
-  // 在点附近添加文字
-  ctx.font = '12px Arial';
-  ctx.fillStyle = '#fff';
-  ctx.fillText('', maxX1.value * scalcX + 10, canvas.height - maxY1.value * scalcY - 10); // 文字位置略微偏上,以便于文字与点对齐
-}
-//根据横坐标获取直线AB纵坐标
-function getCoordABY(params) {
-  return Math.ceil(
-    ((parseFloat(coordinateB.y) - parseFloat(coordinateA.y)) * params -
-      parseFloat(coordinateA.x) * parseFloat(coordinateB.y) +
-      parseFloat(coordinateB.x) * parseFloat(coordinateA.y)) /
-      (parseFloat(coordinateB.x) - parseFloat(coordinateA.x))
-  );
-}
-//根据纵坐标获取直线AB横坐标
-function getCoordABX(params1) {
-  return Math.floor(
-    ((parseFloat(coordinateB.x) - parseFloat(coordinateA.x)) * params1 +
-      parseFloat(coordinateA.x) * parseFloat(coordinateB.y) -
-      parseFloat(coordinateB.x) * parseFloat(coordinateA.y)) /
-      (parseFloat(coordinateB.y) - parseFloat(coordinateA.y))
-  );
-}
-
-watch(
-  () => props.posMonitor,
-  (newV, oldV) => {
-    if (newV.btTriBlast) {
-      maxY1.value = parseFloat(newV.o2_min);
-      maxX1.value =
-        parseFloat(newV.co_max) * 0.0001 + parseFloat(newV.ch4_max) + parseFloat(newV.c2h2_max) * 0.0001 + parseFloat(newV.c2h4_max) * 0.0001;
-      let btTriBlasts = newV.btTriBlast;
-      coordinateA.x = btTriBlasts.A_x;
-      coordinateA.y = btTriBlasts.A_y;
-      coordinateB.x = btTriBlasts.B_x;
-      coordinateB.y = btTriBlasts.B_y;
-      coordinateE.x = btTriBlasts.E_x;
-      coordinateE.y = btTriBlasts.E_y;
-      coordinateF.x = btTriBlasts.F_x;
-      coordinateF.y = btTriBlasts.F_y;
-      coordinateG.x = btTriBlasts.G_x;
-      coordinateG.y = btTriBlasts.G_y;
-      if (
-        !((coordinateA.y - coordinateB.y) / (coordinateA.x - coordinateB.x)) ||
-        (coordinateA.y - coordinateB.y) / (coordinateA.x - coordinateB.x) == 1
-      ) {
-        // 使用 nextTick 为了让 immediate watch 触发时等待组件挂载后执行绘制
-        nextTick(getUnblast);
-      } else {
-        nextTick(getBlast);
-      }
-    }
-  },
-  { deep: true, immediate: true }
-);
-
-onMounted(() => {
-  getAreas();
-});
-</script>
-
-<style lang="less" scoped>
-.blastDelta {
-  position: relative;
-  width: 100%;
-  height: 320px;
-
-  .line-legend {
-    position: absolute;
-    left: 50%;
-    top: 20px;
-    width: 75%;
-    height: 20px;
-    transform: translate(-50%, 0);
-    display: flex;
-    justify-content: space-around;
-
-    .legend-box {
-      display: flex;
-
-      height: 100%;
-      justify-content: center;
-      align-items: center;
-      font-size: 12px;
-
-      &:nth-child(1) {
-        flex: 1;
-
-        .legend-icon {
-          width: 10px;
-          height: 10px;
-          background-color: #7ffe02;
-          margin-right: 5px;
-        }
-      }
-
-      &:nth-child(2) {
-        flex: 1.5;
-
-        .legend-icon {
-          width: 10px;
-          height: 10px;
-          background-color: #017f02;
-          margin-right: 5px;
-        }
-      }
-
-      &:nth-child(3) {
-        flex: 1;
-
-        .legend-icon {
-          width: 10px;
-          height: 10px;
-          background-color: #ff0000;
-          margin-right: 5px;
-        }
-      }
-
-      &:nth-child(4) {
-        flex: 1;
-
-        .legend-icon {
-          width: 10px;
-          height: 10px;
-          background-color: #ffff00;
-          margin-right: 5px;
-        }
-      }
-    }
-  }
-
-  .coords {
-    position: absolute;
-    left: 50%;
-    top: 50%;
-    width: 90%;
-    height: 80%;
-    border-left: 1px solid #006c9d;
-    border-bottom: 1px solid #006c9d;
-    transform: translate(-45%, -46%);
-
-    .coord-lineY {
-      position: absolute;
-      left: -5px;
-      top: 10px;
-      width: 5px;
-      height: calc(100% - 10px);
-    }
-
-    .coord-labelY {
-      position: absolute;
-      left: -25px;
-      top: -5px;
-      width: 20px;
-      height: 100%;
-    }
-
-    .coord-lineX {
-      display: flex;
-      position: absolute;
-      bottom: -5px;
-      right: 10px;
-      width: calc(100% - 10px);
-      height: 5px;
-    }
-
-    .coord-labelX {
-      display: flex;
-      justify-content: flex-end;
-      position: absolute;
-      bottom: -25px;
-      left: -5px;
-      width: 100%;
-      height: 20px;
-    }
-
-    .line-AB {
-      position: absolute;
-      left: 0;
-      top: 10px;
-    }
-
-    // .legend-name {
-    //   position: absolute;
-    //   right: 0;
-    //   top: 20px;
-    //   height: 80px;
-
-    //   .item-name {
-    //     height: 20px;
-    //     line-height: 20px;
-    //     font-size: 10px;
-    //     color: #fff;
-    //     letter-spacing: 2px;
-    //   }
-    // }
-  }
-}
-</style>

+ 0 - 14
src/views/vent/bundleSpy/bundleSpyTable/bundleSpy-table.api.ts

@@ -1,14 +0,0 @@
-import { defHttp } from '/@/utils/http/axios';
-
-enum Api {
-  getbunudleSpyInfo = '/safety/reportLocalData/queryReportData',
-  getFileList = '/safety/reportLocalData/list',
-  getFileListById = '/safety/reportLocalData/queryById',
-}
-/**
- *
- * @param params
- */
-export const getbundleSpyInfoList = (params) => defHttp.post({ url: Api.getbunudleSpyInfo, params });
-export const getAllFileList = (params) => defHttp.get({ url: Api.getFileList, params });
-export const getAllFileListById = (params) => defHttp.get({ url: Api.getFileListById, params });

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

@@ -1,1301 +0,0 @@
-import { BasicColumn } from '/@/components/Table';
-export const columns: BasicColumn[] = [
-  {
-    title: '序号',
-    width: 60,
-    align: 'center',
-    dataIndex: 'xh',
-    key: 'xh',
-  },
-  {
-    title: '采样地点',
-    dataIndex: 'jcdd',
-    key: 'jcdd',
-    width: 100,
-    align: 'center',
-  },
-  {
-    title: '取样分析时间',
-    dataIndex: 'qyfxsj',
-    key: 'qyfxsj',
-    width: 100,
-    align: 'center',
-  },
-  {
-    title: 'O₂(%)',
-    dataIndex: 'o2_ave',
-    key: 'o2_ave',
-    width: 100,
-    align: 'center',
-  },
-  {
-    title: 'N₂(%)',
-    dataIndex: 'n2_ave',
-    key: 'n2_ave',
-    width: 100,
-    align: 'center',
-  },
-  {
-    title: 'CO(%)',
-    dataIndex: 'co_ave',
-    key: 'co_ave',
-    width: 100,
-    align: 'center',
-  },
-  {
-    title: 'CO₂(%)',
-    dataIndex: 'co2_ave',
-    key: 'co2_ave',
-    width: 100,
-    align: 'center',
-  },
-  {
-    title: 'CH₄(%)',
-    dataIndex: 'ch4_ave',
-    key: 'ch4_ave',
-    width: 100,
-    align: 'center',
-  },
-  {
-    title: 'C₂H₆(%)',
-    dataIndex: 'c2h6_ave',
-    key: 'c2h6_ave',
-    width: 100,
-    align: 'center',
-  },
-  {
-    title: 'C₂H₄(%)',
-    dataIndex: 'c2h4_ave',
-    key: 'c2h4_ave',
-    width: 100,
-    align: 'center',
-  },
-  {
-    title: 'C₂H₂(%)',
-    dataIndex: 'c2h2_ave',
-    key: 'c2h2_ave',
-    width: 100,
-    align: 'center',
-  },
-  {
-    title: '总组分含量',
-    dataIndex: 'zzfhl_ave',
-    key: 'zzfhl_ave',
-    width: 100,
-    align: 'center',
-  },
-  {
-    title: '煤自燃阶段',
-    dataIndex: 'internalFireWarnLevel',
-    width: 100,
-    align: 'center',
-  },
-  {
-    title: '操作',
-    dataIndex: 'action',
-    width: 100,
-    align: 'center',
-  },
-];
-export const Hjtcolumns: BasicColumn[] = [
-  {
-    title: '序号',
-    width: 60,
-    align: 'center',
-    dataIndex: 'xh',
-    key: 'xh',
-  },
-  {
-    title: '采空区名称',
-    dataIndex: 'ckqmc',
-    key: 'ckqmc',
-    width: 100,
-    align: 'center',
-  },
-  {
-    title: '检查地点',
-    dataIndex: 'jcdd',
-    key: 'jcdd',
-    width: 100,
-    align: 'center',
-  },
-  {
-    title: '闭内',
-    children: [
-      {
-        title: 'CH₄(%)',
-        dataIndex: 'ch4_ave',
-        key: 'ch4_ave',
-        width: 100,
-        align: 'center',
-      },
-      {
-        title: 'O₂(%)',
-        dataIndex: 'o2_ave',
-        key: 'o2_ave',
-        width: 100,
-        align: 'center',
-      },
-      {
-        title: 'CO(%)',
-        dataIndex: 'co_ave',
-        key: 'co_ave',
-        width: 100,
-        align: 'center',
-      },
-      {
-        title: 'CO₂(%)',
-        dataIndex: 'co2_ave',
-        key: 'co2_ave',
-        width: 100,
-        align: 'center',
-      },
-      {
-        title: '气温(℃)',
-        dataIndex: 'qw',
-        key: 'qw',
-        width: 100,
-        align: 'center',
-      },
-      {
-        title: '水温(℃)',
-        dataIndex: 'sw',
-        key: 'sw',
-        width: 100,
-        align: 'center',
-      },
-      {
-        title: '压差(Pa)',
-        dataIndex: 'yc',
-        key: 'yc',
-        width: 100,
-        align: 'center',
-      },
-    ],
-  },
-  {
-    title: '闭前',
-    children: [
-      {
-        title: 'CH₄(%)',
-        dataIndex: 'ch4_ave_bq',
-        key: 'ch4_ave_bq',
-        width: 100,
-        align: 'center',
-      },
-      {
-        title: 'O₂(%)',
-        dataIndex: 'o2_ave_bq',
-        key: 'o2_ave_bq',
-        width: 100,
-        align: 'center',
-      },
-    ],
-  },
-  {
-    title: '观测孔风流方向',
-    dataIndex: 'gckflfx',
-    key: 'gckflfx',
-    width: 100,
-    align: 'center',
-  },
-  {
-    title: '密闭完好情况',
-    dataIndex: 'mbwhqk',
-    key: 'mbwhqk',
-    width: 100,
-    align: 'center',
-  },
-  {
-    title: '备注',
-    dataIndex: 'smark',
-    key: 'smark',
-    width: 100,
-    align: 'center',
-  },
-  {
-    title: '煤自燃阶段',
-    dataIndex: 'internalFireWarnLevel',
-    width: 100,
-    align: 'center',
-  },
-  {
-    title: '操作',
-    dataIndex: 'action',
-    width: 100,
-    align: 'center',
-  },
-];
-export const Bdcolumns: BasicColumn[] = [
-  {
-    title: '序号',
-    width: 60,
-    align: 'center',
-    dataIndex: 'xh',
-    key: 'xh',
-  },
-  {
-    title: '采空区名称',
-    dataIndex: 'ckqmc',
-    key: 'ckqmc',
-    width: 100,
-    align: 'center',
-  },
-  {
-    title: '采样地点',
-    dataIndex: 'jcdd',
-    key: 'jcdd',
-    width: 100,
-    align: 'center',
-  },
-  {
-    title: '采样时间',
-    dataIndex: 'cysj',
-    key: 'cysj',
-    width: 100,
-    align: 'center',
-  },
-  {
-    title: '分析时间',
-    dataIndex: 'fxsj',
-    key: 'fxsj',
-    width: 100,
-    align: 'center',
-  },
-  {
-    title: '气体分析结果表',
-    children: [
-      {
-        title: '氧气(O₂%)',
-        dataIndex: 'o2_ave',
-        key: 'o2_ave',
-        width: 100,
-        align: 'center',
-      },
-      {
-        title: '氮气(N₂%)',
-        dataIndex: 'n2_ave',
-        key: 'n2_ave',
-        width: 100,
-        align: 'center',
-      },
-      {
-        title: '一氧化碳(CO%)',
-        dataIndex: 'co_ave',
-        key: 'co_ave',
-        width: 100,
-        align: 'center',
-      },
-      {
-        title: '二氧化碳(CO₂%)',
-        dataIndex: 'co2_ave',
-        key: 'co2_ave',
-        width: 100,
-        align: 'center',
-      },
-      {
-        title: '甲烷(CH₄%)',
-        dataIndex: 'ch4_ave',
-        key: 'ch4_ave',
-        width: 100,
-        align: 'center',
-      },
-      {
-        title: '乙烷(C₂H₆%)',
-        dataIndex: 'c2h6_ave',
-        key: 'c2h6_ave',
-        width: 100,
-        align: 'center',
-      },
-      {
-        title: '丙烷(C3H8%)',
-        dataIndex: 'c3h8_ave',
-        key: 'c3h8_ave',
-        width: 100,
-        align: 'center',
-      },
-      {
-        title: '乙烯(C₂H₄%)',
-        dataIndex: 'c2h4_ave',
-        key: 'c2h4_ave',
-        width: 100,
-        align: 'center',
-      },
-      {
-        title: '乙炔(C₂H₂%)',
-        dataIndex: 'c2h2_ave',
-        key: 'c2h2_ave',
-        width: 100,
-        align: 'center',
-      },
-      {
-        title: '合计',
-        dataIndex: 'zzfhl_ave',
-        key: 'zzfhl_ave',
-        width: 100,
-        align: 'center',
-      },
-    ],
-  },
-  {
-    title: '煤自燃阶段',
-    dataIndex: 'internalFireWarnLevel',
-    width: 100,
-    align: 'center',
-  },
-  {
-    title: '进出风状态',
-    dataIndex: 'jcfzt',
-    width: 100,
-    align: 'center',
-  },
-  {
-    title: '操作',
-    dataIndex: 'action',
-    width: 100,
-    align: 'center',
-  },
-];
-export const Bltcolumns: BasicColumn[] = [
-  {
-    title: '编号',
-    width: 60,
-    align: 'center',
-    dataIndex: 'xh',
-    key: 'xh',
-  },
-  {
-    title: '采样区域',
-    width: 60,
-    align: 'center',
-    dataIndex: 'cyqy',
-    key: 'cyqy',
-  },
-  {
-    title: '采空区',
-    dataIndex: 'ckq',
-    key: 'ckq',
-    width: 100,
-    align: 'center',
-  },
-  {
-    title: '采样地点',
-    dataIndex: 'jcdd',
-    key: 'jcdd',
-    width: 100,
-    align: 'center',
-  },
-  {
-    title: '水温(℃)',
-    dataIndex: 'sw',
-    key: 'sw',
-    width: 100,
-    align: 'center',
-  },
-  {
-    title: '气温(℃)',
-    dataIndex: 'qw',
-    key: 'qw',
-    width: 100,
-    align: 'center',
-  },
-  {
-    title: '气流状态',
-    dataIndex: 'qlzt',
-    key: 'qlzt',
-    width: 100,
-    align: 'center',
-  },
-  {
-    title: '压差(Pa)',
-    dataIndex: 'yc',
-    key: 'yc',
-    width: 100,
-    align: 'center',
-  },
-  {
-    title: '气体分析结果表',
-    children: [
-      {
-        title: '便携仪O₂(%)',
-        dataIndex: 'o2_bxyy',
-        key: 'o2_bxyy',
-        width: 100,
-        align: 'center',
-      },
-      {
-        title: '色谱仪O₂(%)',
-        dataIndex: 'o2_ave',
-        key: 'o2_ave',
-        width: 100,
-        align: 'center',
-      },
-      {
-        title: '便携仪CO(CO%)',
-        dataIndex: 'co_bxy',
-        key: 'co_bxy',
-        width: 100,
-        align: 'center',
-      },
-      {
-        title: '色谱仪CO(%)',
-        dataIndex: 'co_ave',
-        key: 'co_ave',
-        width: 100,
-        align: 'center',
-      },
-      {
-        title: '二氧化碳(CO₂%)',
-        dataIndex: 'co2_ave',
-        key: 'co2_ave',
-        width: 100,
-        align: 'center',
-      },
-      {
-        title: 'N₂(%)',
-        dataIndex: 'n2_ave',
-        key: 'n2_ave',
-        width: 100,
-        align: 'center',
-      },
-      {
-        title: 'CH₄(%)',
-        dataIndex: 'ch4_ave',
-        key: 'ch4_ave',
-        width: 100,
-        align: 'center',
-      },
-      {
-        title: 'C₂H₆(%)',
-        dataIndex: 'c2h6_ave',
-        key: 'c2h6_ave',
-        width: 100,
-        align: 'center',
-      },
-      {
-        title: 'C₂H₄(%)',
-        dataIndex: 'c2h4_ave',
-        key: 'c2h4_ave',
-        width: 100,
-        align: 'center',
-      },
-      {
-        title: 'C₂H₂(%)',
-        dataIndex: 'c2h2_ave',
-        key: 'c2h2_ave',
-        width: 100,
-        align: 'center',
-      },
-    ],
-  },
-  {
-    title: '采样日期',
-    dataIndex: 'cyfxsj',
-    key: 'cyfxsj',
-    width: 100,
-    align: 'center',
-  },
-  {
-    title: '采样时间',
-    dataIndex: 'cyfxsj2',
-    key: 'cyfxsj2',
-    width: 100,
-    align: 'center',
-  },
-  {
-    title: '采样人',
-    dataIndex: 'cyr',
-    key: 'cyr',
-    width: 100,
-    align: 'center',
-  },
-  {
-    title: '煤自燃阶段',
-    dataIndex: 'internalFireWarnLevel',
-    width: 100,
-    align: 'center',
-  },
-  {
-    title: '进出风状态',
-    dataIndex: 'jcfzt',
-    width: 100,
-    align: 'center',
-  },
-  {
-    title: '操作',
-    dataIndex: 'action',
-    width: 100,
-    align: 'center',
-  },
-];
-export const Sgtcolumns: BasicColumn[] = [
-  {
-    title: '序号',
-    width: 60,
-    align: 'center',
-    dataIndex: 'xh',
-    key: 'xh',
-  },
-  {
-    title: '采样地点',
-    dataIndex: 'jcdd',
-    key: 'jcdd',
-    width: 100,
-    align: 'center',
-  },
-  {
-    title: '采空区',
-    dataIndex: 'ckq',
-    key: 'ckq',
-    width: 100,
-    align: 'center',
-  },
-  {
-    title: '采样时间',
-    dataIndex: 'qyfxsj',
-    key: 'qyfxsj',
-    width: 100,
-    align: 'center',
-  },
-  {
-    title: 'O₂(%)',
-    dataIndex: 'o2_ave',
-    key: 'o2_ave',
-    width: 100,
-    align: 'center',
-  },
-  {
-    title: 'N₂(%)',
-    dataIndex: 'n2_ave',
-    key: 'n2_ave',
-    width: 100,
-    align: 'center',
-  },
-  {
-    title: 'CO(%)',
-    dataIndex: 'co_ave',
-    key: 'co_ave',
-    width: 100,
-    align: 'center',
-  },
-  {
-    title: 'CO₂(%)',
-    dataIndex: 'co2_ave',
-    key: 'co2_ave',
-    width: 100,
-    align: 'center',
-  },
-  {
-    title: 'CH₄(%)',
-    dataIndex: 'ch4_ave',
-    key: 'ch4_ave',
-    width: 100,
-    align: 'center',
-  },
-  {
-    title: 'C₂H₆(%)',
-    dataIndex: 'c2h6_ave',
-    key: 'c2h6_ave',
-    width: 100,
-    align: 'center',
-  },
-  {
-    title: 'C₂H₄(%)',
-    dataIndex: 'c2h4_ave',
-    key: 'c2h4_ave',
-    width: 100,
-    align: 'center',
-  },
-  {
-    title: 'C₂H₂(%)',
-    dataIndex: 'c2h2_ave',
-    key: 'c2h2_ave',
-    width: 100,
-    align: 'center',
-  },
-  {
-    title: '取样人',
-    dataIndex: 'qyr',
-    key: 'qyr',
-    width: 100,
-    align: 'center',
-  },
-  {
-    title: '备注',
-    dataIndex: 'smark',
-    key: 'smark',
-    width: 100,
-    align: 'center',
-  },
-  {
-    title: '煤自燃阶段',
-    dataIndex: 'internalFireWarnLevel',
-    width: 100,
-    align: 'center',
-  },
-  {
-    title: '操作',
-    dataIndex: 'action',
-    width: 100,
-    align: 'center',
-  },
-];
-export const Yjlcolumns: BasicColumn[] = [
-  {
-    title: '序号',
-    width: 60,
-    align: 'center',
-    dataIndex: 'xh',
-    key: 'xh',
-  },
-  {
-    title: '采空区名称',
-    dataIndex: 'ckq',
-    key: 'ckq',
-    width: 100,
-    align: 'center',
-  },
-  {
-    title: '检查地点',
-    dataIndex: 'jcdd',
-    key: 'jcdd',
-    width: 100,
-    align: 'center',
-  },
-  {
-    title: '气体分析结果表',
-    children: [
-      {
-        title: 'O₂(%)',
-        dataIndex: 'o2_ave',
-        key: 'o2_ave',
-        width: 100,
-        align: 'center',
-      },
-      {
-        title: 'N₂(%)',
-        dataIndex: 'n2_ave',
-        key: 'n2_ave',
-        width: 100,
-        align: 'center',
-      },
-      {
-        title: 'CO(ppm)',
-        dataIndex: 'co_ave',
-        key: 'co_ave',
-        width: 100,
-        align: 'center',
-      },
-      {
-        title: 'CH₄(%)',
-        dataIndex: 'ch4_ave',
-        key: 'ch4_ave',
-        width: 100,
-        align: 'center',
-      },
-      {
-        title: 'C₂H₂(ppm)',
-        dataIndex: 'c2h2_ave',
-        key: 'c2h2_ave',
-        width: 100,
-        align: 'center',
-      },
-      {
-        title: 'C₂H₄(ppm)',
-        dataIndex: 'c2h4_ave',
-        key: 'c2h4_ave',
-        width: 100,
-        align: 'center',
-      },
-      {
-        title: 'C₂H₆(ppm)',
-        dataIndex: 'c2h6_ave',
-        key: 'c2h6_ave',
-        width: 100,
-        align: 'center',
-      },
-      {
-        title: 'CO₂(%)',
-        dataIndex: 'co2_ave',
-        key: 'co2_ave',
-        width: 100,
-        align: 'center',
-      },
-      {
-        title: '合计',
-        dataIndex: 'zzfhl_ave',
-        key: 'zzfhl_ave',
-        width: 100,
-        align: 'center',
-      },
-    ],
-  },
-  {
-    title: '采样日期',
-    dataIndex: 'cyrq',
-    key: 'cyrq',
-    width: 100,
-    align: 'center',
-  },
-  {
-    title: '采样时间',
-    dataIndex: 'cysj',
-    key: 'cysj',
-    width: 100,
-    align: 'center',
-  },
-  {
-    title: '采样人',
-    dataIndex: 'cyr',
-    key: 'cyr',
-    width: 100,
-    align: 'center',
-  },
-  {
-    title: '进出风状态',
-    dataIndex: 'jcfzt',
-    key: 'jcfzt',
-    width: 100,
-    align: 'center',
-  },
-  {
-    title: '煤自燃阶段',
-    dataIndex: 'internalFireWarnLevel',
-    width: 100,
-    align: 'center',
-  },
-  {
-    title: '操作',
-    dataIndex: 'action',
-    width: 100,
-    align: 'center',
-  },
-];
-export const Cctrkcolumns: BasicColumn[] = [
-  {
-    title: '序号',
-    width: 60,
-    align: 'center',
-    dataIndex: 'xh',
-    key: 'xh',
-  },
-  {
-    title: '采空区名称',
-    dataIndex: 'ckq',
-    key: 'ckq',
-    width: 100,
-    align: 'center',
-  },
-  {
-    title: '检查地点',
-    dataIndex: 'jcdd',
-    key: 'jcdd',
-    width: 100,
-    align: 'center',
-  },
-  {
-    title: '密闭编号',
-    dataIndex: 'mbbh',
-    key: 'mbbh',
-    width: 100,
-    align: 'center',
-  },
-  {
-    title: '闭内',
-    children: [
-      {
-        title: 'CH₄(%)',
-        dataIndex: 'ch4_ave',
-        key: 'ch4_ave',
-        width: 100,
-        align: 'center',
-      },
-      {
-        title: 'O₂(%)',
-        dataIndex: 'o2_ave',
-        key: 'o2_ave',
-        width: 100,
-        align: 'center',
-      },
-      {
-        title: 'CO(ppm)',
-        dataIndex: 'co_ave',
-        key: 'co_ave',
-        width: 100,
-        align: 'center',
-      },
-      {
-        title: 'CO₂(%)',
-        dataIndex: 'co2_ave',
-        key: 'co2_ave',
-        width: 100,
-        align: 'center',
-      },
-      {
-        title: '气温(℃)',
-        dataIndex: 'qw',
-        key: 'qw',
-        width: 100,
-        align: 'center',
-      },
-      {
-        title: '水温(℃)',
-        dataIndex: 'sw',
-        key: 'sw',
-        width: 100,
-        align: 'center',
-      },
-      {
-        title: '压差(Pa)',
-        dataIndex: 'yc',
-        key: 'yc',
-        width: 100,
-        align: 'center',
-      },
-    ],
-  },
-  {
-    title: '闭前',
-    children: [
-      {
-        title: 'CH₄(%)',
-        dataIndex: 'ch4_ave_bq',
-        key: 'ch4_ave_bq',
-        width: 100,
-        align: 'center',
-      },
-      {
-        title: 'O₂(%)',
-        dataIndex: 'o2_ave_bq',
-        key: 'o2_ave_bq',
-        width: 100,
-        align: 'center',
-      },
-    ],
-  },
-  {
-    title: '观测孔风流方向',
-    dataIndex: 'gckflfx',
-    key: 'gckflfx',
-    width: 100,
-    align: 'center',
-  },
-  {
-    title: '密闭完好情况',
-    dataIndex: 'mbwhqk',
-    key: 'mbwhqk',
-    width: 100,
-    align: 'center',
-  },
-  {
-    title: '备注',
-    dataIndex: 'smark',
-    key: 'smark',
-    width: 100,
-    align: 'center',
-  },
-  {
-    title: '煤自燃阶段',
-    dataIndex: 'internalFireWarnLevel',
-    width: 100,
-    align: 'center',
-  },
-  {
-    title: '操作',
-    dataIndex: 'action',
-    width: 100,
-    align: 'center',
-  },
-];
-export const Wlmlcolumns: BasicColumn[] = [
-  {
-    title: '序号',
-    width: 60,
-    align: 'center',
-    dataIndex: 'xh',
-    key: 'xh',
-  },
-  {
-    title: '地点名称',
-    dataIndex: 'jcdd',
-    key: 'jcdd',
-    width: 100,
-    align: 'center',
-  },
-  {
-    title: '氧气(%)',
-    dataIndex: 'o2_ave',
-    key: 'o2_ave',
-    width: 100,
-    align: 'center',
-  },
-  {
-    title: '氮气(%)',
-    dataIndex: 'n2_ave',
-    key: 'n2_ave',
-    width: 100,
-    align: 'center',
-  },
-  {
-    title: '一氧化碳(ppm)',
-    dataIndex: 'co_ave',
-    key: 'co_ave',
-    width: 100,
-    align: 'center',
-  },
-  {
-    title: '二氧化碳(%)',
-    dataIndex: 'co2_ave',
-    key: 'co2_ave',
-    width: 100,
-    align: 'center',
-  },
-  {
-    title: '甲烷(%)',
-    dataIndex: 'ch4_ave',
-    key: 'ch4_ave',
-    width: 100,
-    align: 'center',
-  },
-  {
-    title: '乙烷(ppm)',
-    dataIndex: 'c2h6_ave',
-    key: 'c2h6_ave',
-    width: 100,
-    align: 'center',
-  },
-  {
-    title: '乙烯(ppm)',
-    dataIndex: 'c2h4_ave',
-    key: 'c2h4_ave',
-    width: 100,
-    align: 'center',
-  },
-  {
-    title: '乙炔(ppm)',
-    dataIndex: 'c2h2_ave',
-    key: 'c2h2_ave',
-    width: 100,
-    align: 'center',
-  },
-  {
-    title: '化验日期',
-    dataIndex: 'qyfxsj',
-    key: 'qyfxsj',
-    width: 100,
-    align: 'center',
-  },
-  {
-    title: '备注',
-    dataIndex: 'smark',
-    key: 'smark',
-    width: 100,
-    align: 'center',
-  },
-  {
-    title: '煤自燃阶段',
-    dataIndex: 'internalFireWarnLevel',
-    width: 100,
-    align: 'center',
-  },
-  {
-    title: '操作',
-    dataIndex: 'action',
-    width: 100,
-    align: 'center',
-  },
-];
-export const Jinjiecolumns: BasicColumn[] = [
-  {
-    title: '序号',
-    width: 60,
-    align: 'center',
-    dataIndex: 'xh',
-    key: 'xh',
-  },
-  {
-    title: '检查地点',
-    dataIndex: 'jcdd',
-    key: 'jcdd',
-    width: 100,
-    align: 'center',
-  },
-  {
-    title: '气体分析结果表',
-    children: [
-      {
-        title: 'N₂(%)',
-        dataIndex: 'n2_ave',
-        key: 'n2_ave',
-        width: 100,
-        align: 'center',
-      },
-      {
-        title: 'CO₂(%)',
-        dataIndex: 'co2_ave',
-        key: 'co2_ave',
-        width: 100,
-        align: 'center',
-      },
-      {
-        title: 'O₂(%)',
-        dataIndex: 'o2_ave',
-        key: 'o2_ave',
-        width: 100,
-        align: 'center',
-      },
-      {
-        title: 'CO(%)',
-        dataIndex: 'co_ave',
-        key: 'co_ave',
-        width: 100,
-        align: 'center',
-      },
-      {
-        title: 'CH₄(%)',
-        dataIndex: 'ch4_ave',
-        key: 'ch4_ave',
-        width: 100,
-        align: 'center',
-      },
-      {
-        title: 'C₂H₂(%)',
-        dataIndex: 'c2h2_ave',
-        key: 'c2h2_ave',
-        width: 100,
-        align: 'center',
-      },
-      {
-        title: 'C₂H₆(%)',
-        dataIndex: 'c2h6_ave',
-        key: 'c2h6_ave',
-        width: 100,
-        align: 'center',
-      },
-      {
-        title: 'C₂H₄(%)',
-        dataIndex: 'c2h4_ave',
-        key: 'c2h4_ave',
-        width: 100,
-        align: 'center',
-      },
-    ],
-  },
-  {
-    title: '分析时间',
-    dataIndex: 'fxsj',
-    key: 'fxsj',
-    width: 100,
-    align: 'center',
-  },
-  {
-    title: '煤自燃阶段',
-    dataIndex: 'internalFireWarnLevel',
-    width: 100,
-    align: 'center',
-  },
-  {
-    title: '操作',
-    dataIndex: 'action',
-    width: 100,
-    align: 'center',
-  },
-];
-export const Hlgcolumns: BasicColumn[] = [
-  {
-    title: '序号',
-    width: 60,
-    align: 'center',
-    dataIndex: 'xh',
-    key: 'xh',
-  },
-  {
-    title: '地点名称',
-    dataIndex: 'jcdd',
-    key: 'jcdd',
-    width: 100,
-    align: 'center',
-  },
-  {
-    title: '氧气(%)',
-    dataIndex: 'o2_ave',
-    key: 'o2_ave',
-    width: 100,
-    align: 'center',
-  },
-  {
-    title: '氮气(%)',
-    dataIndex: 'n2_ave',
-    key: 'n2_ave',
-    width: 100,
-    align: 'center',
-  },
-  {
-    title: '甲烷(%)',
-    dataIndex: 'ch4_ave',
-    key: 'ch4_ave',
-    width: 100,
-    align: 'center',
-  },
-  {
-    title: '一氧化碳(%)',
-    dataIndex: 'co_ave',
-    key: 'co_ave',
-    width: 100,
-    align: 'center',
-  },
-  {
-    title: '二氧化碳(%)',
-    dataIndex: 'co2_ave',
-    key: 'co2_ave',
-    width: 100,
-    align: 'center',
-  },
-  {
-    title: '乙烷(%)',
-    dataIndex: 'c2h6_ave',
-    key: 'c2h6_ave',
-    width: 100,
-    align: 'center',
-  },
-  {
-    title: '乙烯(%)',
-    dataIndex: 'c2h4_ave',
-    key: 'c2h4_ave',
-    width: 100,
-    align: 'center',
-  },
-  {
-    title: '乙炔(%)',
-    dataIndex: 'c2h2_ave',
-    key: 'c2h2_ave',
-    width: 100,
-    align: 'center',
-  },
-  {
-    title: '化验日期',
-    dataIndex: 'qyfxsj',
-    key: 'qyfxsj',
-    width: 100,
-    align: 'center',
-  },
-  {
-    title: '备注',
-    dataIndex: 'smark',
-    key: 'smark',
-    width: 100,
-    align: 'center',
-  },
-  {
-    title: '煤自燃阶段',
-    dataIndex: 'internalFireWarnLevel',
-    width: 100,
-    align: 'center',
-  },
-  {
-    title: '操作',
-    dataIndex: 'action',
-    width: 100,
-    align: 'center',
-  },
-];
-export const Ltcolumns: BasicColumn[] = [
-  {
-    title: '序号',
-    width: 60,
-    align: 'center',
-    dataIndex: 'xh',
-    key: 'xh',
-  },
-  {
-    title: '地点名称',
-    dataIndex: 'jcdd',
-    key: 'jcdd',
-    width: 100,
-    align: 'center',
-  },
-
-  {
-    title: 'O₂(%)',
-    dataIndex: 'o2_ave',
-    key: 'o2_ave',
-    width: 100,
-    align: 'center',
-  },
-  {
-    title: 'N₂(%)',
-    dataIndex: 'n2_ave',
-    key: 'n2_ave',
-    width: 100,
-    align: 'center',
-  },
-  {
-    title: 'CH₄(%)',
-    dataIndex: 'ch4_ave',
-    key: 'ch4_ave',
-    width: 100,
-    align: 'center',
-  },
-  {
-    title: 'CO₂(%)',
-    dataIndex: 'co2_ave',
-    key: 'co2_ave',
-    width: 100,
-    align: 'center',
-  },
-  {
-    title: 'CO(ppm)',
-    dataIndex: 'co_ave',
-    key: 'co_ave',
-    width: 100,
-    align: 'center',
-  },
-  {
-    title: 'C₂H₄(ppm)',
-    dataIndex: 'c2h4_ave',
-    key: 'c2h4_ave',
-    width: 100,
-    align: 'center',
-  },
-  {
-    title: 'C₂H₆(ppm)',
-    dataIndex: 'c2h6_ave',
-    key: 'c2h6_ave',
-    width: 100,
-    align: 'center',
-  },
-  {
-    title: 'C₂H₂(ppm)',
-    dataIndex: 'c2h2_ave',
-    key: 'c2h2_ave',
-    width: 100,
-    align: 'center',
-  },
-  {
-    title: '化验日期',
-    dataIndex: 'qyfxsj',
-    key: 'qyfxsj',
-    width: 100,
-    align: 'center',
-  },
-
-  {
-    title: '备注',
-    dataIndex: 'smark',
-    key: 'smark',
-    width: 100,
-    align: 'center',
-  },
-  {
-    title: '煤自燃阶段',
-    dataIndex: 'internalFireWarnLevel',
-    width: 100,
-    align: 'center',
-  },
-  {
-    title: '操作',
-    dataIndex: 'action',
-    width: 100,
-    align: 'center',
-  },
-];

+ 0 - 746
src/views/vent/bundleSpy/bundleSpyTable/index.vue

@@ -1,746 +0,0 @@
-<template>
-  <div class="dustMonitor">
-    <customHeader>色谱仪报表分析</customHeader>
-    <div class="content-container">
-      <div class="file-list">
-        <ul>
-          <li v-for="item in selectList" :key="item.id" :class="{ selected: item.id === selectedFileId }" @click="handleFileClick(item)">
-            {{ item.fileName }}
-          </li>
-        </ul>
-      </div>
-      <div class="table-container">
-        <a-table :columns="computedColumns" :data-source="tableData" size="small" :pagination="false" :scroll="{ y: 300 }" class="tableW">
-          <template #bodyCell="{ column, record }">
-            <template v-if="column.dataIndex === 'action'">
-              <a class="action-link" @click="toDetail(record)">数据分析</a>
-            </template>
-          </template>
-        </a-table>
-        <div class="data-container">
-          <div id="lineChart" class="line-chart"></div>
-          <div class="data-content">
-            <div class="title">煤自燃阶段统计分析</div>
-            <div class="explain">测点共计{{ total }}个</div>
-            <div class="progress-label">潜伏期阶段:{{ qfqCount }}</div>
-            <Progress :percent="qfqPercent" size="default" strokeColor="green" :show-info="true" :format="() => qfqCount" />
-            <div class="progress-label">缓慢氧化升温阶段:{{ latentCount }}</div>
-            <Progress :percent="latentPercent" size="default" strokeColor="yellow" :show-info="true" :format="() => latentCount" />
-            <div class="progress-label">加速氧化升温阶段:{{ selfHeatingCount }}</div>
-            <Progress :percent="selfHeatingPercent" size="default" strokeColor="orange‌" :show-info="true" :format="() => selfHeatingCount" />
-            <div class="progress-label">剧烈氧化升温阶段:{{ combustionCount }}</div>
-            <Progress :percent="combustionPercent" size="default" strokeColor="red" :show-info="true" :format="() => combustionCount" />
-          </div>
-        </div>
-      </div>
-    </div>
-    <a-modal style="width: 600px; height: 300px" title="爆炸三角形" v-model:visible="modalVisible" :draggable="true" :footer="null">
-      <div class="blast-delta-container">
-        <BlastDelta :posMonitor="posMonitor" />
-      </div>
-    </a-modal>
-  </div>
-</template>
-
-<script setup lang="ts">
-import { ref, onMounted, computed, reactive, shallowRef } from 'vue';
-import {
-  columns,
-  Hjtcolumns,
-  Bdcolumns,
-  Bltcolumns,
-  Sgtcolumns,
-  Yjlcolumns,
-  Cctrkcolumns,
-  Wlmlcolumns,
-  Jinjiecolumns,
-  Hlgcolumns,
-  Ltcolumns,
-} from './bundleSpy-table.data';
-import { getbundleSpyInfoList, getAllFileList, getAllFileListById } from './bundleSpy-table.api';
-import customHeader from '/@/components/vent/customHeader.vue';
-import * as echarts from 'echarts';
-import BlastDelta from './modal/blastDelta.vue';
-import { Progress } from 'ant-design-vue';
-import { useGlobSetting } from '/@/hooks/setting';
-// import 'ant-design-vue/dist/antd.css'; // 引入样式
-let selectList = ref<any[]>([]);
-
-let formSearch = reactive({
-  pageNum: 1,
-  pageSize: 1000,
-  id: '',
-  fileName: '',
-});
-const total = ref(0);
-const { sysOrgCode } = useGlobSetting();
-const qfqCount = ref(0); // 潜伏期
-const latentCount = ref(0); // 缓慢氧化阶段(潜伏期)
-const selfHeatingCount = ref(0); // 加速氧化阶段(自热期)
-const combustionCount = ref(0); // 剧烈氧化阶段(燃烧期)
-const qfqPercent = ref(0); // 潜伏期(潜伏期)
-const latentPercent = ref(0); // 缓慢氧化阶段(潜伏期)
-const selfHeatingPercent = ref(0); // 加速氧化阶段(自热期)
-const combustionPercent = ref(0); // 剧烈氧化阶段(燃烧期)
-let tableData = ref<any[]>([]);
-let selectedFileId = ref<string | null>(null);
-let modalVisible = ref(false);
-const posMonitor = shallowRef({});
-const computedColumns = computed(() => {
-  switch (sysOrgCode) {
-    case 'sdmtjtdltmkhjtj':
-      return Hjtcolumns; // 活鸡兔对应的列配置
-    case 'sdmtjtBdmk':
-      return Bdcolumns; // 保德对应的列配置
-    case 'sdmtjtbltmk':
-      return Bltcolumns; // 补连塔对应的列配置
-    case 'sdmtjtsgtmk':
-      return Sgtcolumns; // 石圪台对应的列配置
-    case 'sdmtjtyjlmk':
-      return Yjlcolumns; // 榆家梁对应的列配置
-    case 'sdmtjtcctrk':
-      return Cctrkcolumns; // 寸草塔二矿对应的列配置
-    case 'sdmtjtwlmlmk':
-      return Wlmlcolumns; // 乌兰木伦对应的列配置
-    case 'sdmtjtjjmk':
-      return Jinjiecolumns; // 锦界对应的列配置
-    case 'sdmtjthlgmk':
-      return Hlgcolumns; // 哈拉沟对应的列配置
-    case 'sdmtjtltmk':
-      return Ltcolumns; // 柳塔煤矿对应的列配置
-    default:
-      return columns; // 默认情况下返回的列配置
-  }
-});
-
-//获取色谱仪报表
-async function getTableList(params: any) {
-  let res = await getbundleSpyInfoList({ type: 'bundleSpy', ...params });
-  const content = res.content;
-  let contentArr = JSON.parse(content);
-  // const contentNewArr = computed(() => {
-  //   return contentArr.map((item) => {
-  //     let internalFireWarnLevel = '';
-
-  //     const co = item.co_ave;
-  //     const co2 = item.co2_ave;
-  //     const c2h4 = item.c2h4_ave;
-  //     const c2h2 = item.c2h2_ave;
-  //     const coRatio = co / co2;
-
-  //     if (co >= 0 && co <= 13.75) {
-  //       internalFireWarnLevel = '潜伏期阶段';
-  //     } else if (co > 13.75 && co < 67.2 && coRatio < 0.095) {
-  //       internalFireWarnLevel = '缓慢氧化升温阶段';
-  //     } else if ((co >= 67.2 && co < 1606.3) || (coRatio >= 0.095 && coRatio < 0.322) || c2h4 < 2) {
-  //       internalFireWarnLevel = '加速氧化阶段';
-  //     } else if (co >= 1606.3 || coRatio >= 0.322 || c2h4 >= 2 || c2h2 > 0) {
-  //       internalFireWarnLevel = '剧烈氧化阶段';
-  //     }
-
-  //     return { ...item, internalFireWarnLevel };
-  //   });
-  // });
-  total.value = contentArr.length;
-  qfqCount.value = contentArr.filter((item: any) => item.internalFireWarnLevel === '潜伏期阶段').length;
-  latentCount.value = contentArr.filter((item: any) => item.internalFireWarnLevel === '缓慢氧化升温阶段').length;
-  selfHeatingCount.value = contentArr.filter((item: any) => item.internalFireWarnLevel === '加速氧化升温阶段').length;
-  combustionCount.value = contentArr.filter((item: any) => item.internalFireWarnLevel === '剧烈氧化升温阶段').length;
-  qfqPercent.value = (qfqCount.value / total.value) * 100;
-  latentPercent.value = (latentCount.value / total.value) * 100;
-  selfHeatingPercent.value = (selfHeatingCount.value / total.value) * 100;
-  combustionPercent.value = (combustionCount.value / total.value) * 100;
-  tableData.value = contentArr;
-  updateChart(contentArr);
-}
-async function getTableListById(params: any) {
-  let res = await getAllFileListById({ ...params });
-  const content = res.content;
-  let contentArr = JSON.parse(content);
-  total.value = contentArr.length;
-  qfqCount.value = contentArr.filter((item: any) => item.internalFireWarnLevel === '潜伏期阶段').length;
-  latentCount.value = contentArr.filter((item: any) => item.internalFireWarnLevel === '缓慢氧化升温阶段').length;
-  selfHeatingCount.value = contentArr.filter((item: any) => item.internalFireWarnLevel === '加速氧化升温阶段').length;
-  combustionCount.value = contentArr.filter((item: any) => item.internalFireWarnLevel === '剧烈氧化升温阶段').length;
-  qfqPercent.value = (qfqCount.value / total.value) * 100;
-  latentPercent.value = (latentCount.value / total.value) * 100;
-  selfHeatingPercent.value = (selfHeatingCount.value / total.value) * 100;
-  combustionPercent.value = (combustionCount.value / total.value) * 100;
-  tableData.value = contentArr;
-  updateChart(contentArr);
-}
-
-//跳转到爆炸三角形
-function toDetail(record: any) {
-  posMonitor.value = record;
-  console.log(posMonitor.value);
-  modalVisible.value = true;
-}
-//折线图
-function updateChart(data: any) {
-  const chartDom = document.getElementById('lineChart');
-  const myChart = echarts.init(chartDom);
-  const categories = data.map((item: any) => item.jcdd);
-  const c2h2AveValues = data.map((item: any) => parseFloat(item.c2h2_ave));
-  const c2h4AveValues = data.map((item: any) => parseFloat(item.c2h4_ave));
-  const ch4AveValues = data.map((item: any) => parseFloat(item.ch4_ave));
-  const co2AveValues = data.map((item: any) => parseFloat(item.co2_ave));
-  const coAveValues = data.map((item: any) => parseFloat(item.co_ave));
-  const o2AveValues = data.map((item: any) => parseFloat(item.o2_ave));
-  const n2AveValues = data.map((item: any) => parseFloat(item.n2_ave));
-  const c2h6AveValues = data.map((item: any) => parseFloat(item.c2h6_ave));
-  const c3h8AveValues = data.map((item: any) => parseFloat(item.c3h8_ave));
-  const ch4AveBqValues = data.map((item: any) => parseFloat(item.ch4_ave_bq));
-  const o2AveBqValues = data.map((item: any) => parseFloat(item.o2_ave_bq));
-
-  const getSeriesConfig = (sysOrgCode) => {
-    switch (sysOrgCode) {
-      case 'sdmtjtdltmkhjtj':
-        return [
-          {
-            name: 'CH₄闭内',
-            data: ch4AveValues,
-            yAxisIndex: 1,
-            type: 'bar',
-          },
-          {
-            name: 'O₂闭内',
-            data: ch4AveValues,
-            yAxisIndex: 1,
-            type: 'bar',
-          },
-          {
-            name: 'CO₂闭内',
-            data: co2AveValues,
-            yAxisIndex: 1,
-            type: 'bar',
-          },
-          {
-            name: 'CO闭内',
-            data: coAveValues,
-            yAxisIndex: 1,
-            type: 'bar',
-          },
-          {
-            name: 'CH₄闭前',
-            data: ch4AveBqValues,
-            yAxisIndex: 1,
-            type: 'bar',
-          },
-          {
-            name: 'O₂闭前',
-            data: o2AveBqValues,
-            yAxisIndex: 1,
-            type: 'bar',
-          },
-        ];
-      case 'sdmtjtBdmk':
-        return [
-          {
-            name: 'O₂',
-            data: o2AveValues,
-            yAxisIndex: 0,
-            type: 'bar',
-          },
-          {
-            name: 'N₂',
-            data: n2AveValues,
-            yAxisIndex: 0,
-            type: 'bar',
-          },
-
-          {
-            name: 'CO',
-            data: coAveValues,
-            yAxisIndex: 1,
-            type: 'bar',
-          },
-          {
-            name: 'CO₂',
-            data: co2AveValues,
-            yAxisIndex: 1,
-            type: 'bar',
-          },
-          {
-            name: 'CH₄',
-            data: ch4AveValues,
-            yAxisIndex: 1,
-            type: 'bar',
-          },
-          {
-            name: 'C₂H₆',
-            data: c2h6AveValues,
-            yAxisIndex: 1,
-            type: 'bar',
-          },
-          {
-            name: 'C3H8',
-            data: c3h8AveValues,
-            yAxisIndex: 1,
-            type: 'bar',
-          },
-          {
-            name: 'C₂H₄',
-            data: c2h4AveValues,
-            type: 'bar',
-            yAxisIndex: 1,
-          },
-          {
-            name: 'C₂H₂',
-            data: c2h2AveValues,
-            type: 'bar',
-            yAxisIndex: 1,
-          },
-        ];
-      case 'sdmtjtyjlmk':
-        return [
-          {
-            name: 'O₂',
-            data: o2AveValues,
-            yAxisIndex: 0,
-            type: 'bar',
-          },
-          {
-            name: 'N₂',
-            data: n2AveValues,
-            yAxisIndex: 0,
-            type: 'bar',
-          },
-
-          {
-            name: 'CO',
-            data: coAveValues,
-            yAxisIndex: 1,
-            type: 'bar',
-          },
-          {
-            name: 'CO₂',
-            data: co2AveValues,
-            yAxisIndex: 1,
-            type: 'bar',
-          },
-          {
-            name: 'CH₄',
-            data: ch4AveValues,
-            yAxisIndex: 1,
-            type: 'bar',
-          },
-          {
-            name: 'C₂H₆',
-            data: c2h6AveValues,
-            yAxisIndex: 1,
-            type: 'bar',
-          },
-          {
-            name: 'C₂H₄',
-            data: c2h4AveValues,
-            type: 'bar',
-            yAxisIndex: 1,
-          },
-          {
-            name: 'C₂H₂',
-            data: c2h2AveValues,
-            type: 'bar',
-            yAxisIndex: 1,
-          },
-        ];
-      case 'sdmtjtcctrk':
-        return [
-          {
-            name: 'CH₄闭内',
-            data: ch4AveValues,
-            yAxisIndex: 1,
-            type: 'bar',
-          },
-          {
-            name: 'O₂闭内',
-            data: ch4AveValues,
-            yAxisIndex: 1,
-            type: 'bar',
-          },
-          {
-            name: 'CO₂闭内',
-            data: co2AveValues,
-            yAxisIndex: 1,
-            type: 'bar',
-          },
-          {
-            name: 'CO闭内',
-            data: coAveValues,
-            yAxisIndex: 1,
-            type: 'bar',
-          },
-          {
-            name: 'CH₄闭前',
-            data: ch4AveBqValues,
-            yAxisIndex: 1,
-            type: 'bar',
-          },
-          {
-            name: 'O₂闭前',
-            data: o2AveBqValues,
-            yAxisIndex: 1,
-            type: 'bar',
-          },
-        ];
-      case 'sdmtjtltmk':
-      case 'sdmtjtwlmlmk':
-      case 'sdmtjthlgmk':
-        return [
-          {
-            name: 'O₂',
-            data: o2AveValues,
-            yAxisIndex: 0,
-            type: 'bar',
-          },
-          {
-            name: 'N₂',
-            data: n2AveValues,
-            yAxisIndex: 0,
-            type: 'bar',
-          },
-
-          {
-            name: 'CO',
-            data: coAveValues,
-            yAxisIndex: 1,
-            type: 'bar',
-          },
-          {
-            name: 'CO₂',
-            data: co2AveValues,
-            yAxisIndex: 1,
-            type: 'bar',
-          },
-          {
-            name: 'CH₄',
-            data: ch4AveValues,
-            yAxisIndex: 1,
-            type: 'bar',
-          },
-          {
-            name: 'C₂H₆',
-            data: c2h6AveValues,
-            yAxisIndex: 1,
-            type: 'bar',
-          },
-          {
-            name: 'C₂H₄',
-            data: c2h4AveValues,
-            type: 'bar',
-            yAxisIndex: 1,
-          },
-          {
-            name: 'C₂H₂',
-            data: c2h2AveValues,
-            type: 'bar',
-            yAxisIndex: 1,
-          },
-        ];
-      default:
-        return [
-          {
-            name: 'C₂H₂',
-            data: c2h2AveValues,
-            type: 'bar',
-            yAxisIndex: 1,
-          },
-          {
-            name: 'C₂H₄',
-            data: c2h4AveValues,
-            type: 'bar',
-            yAxisIndex: 1,
-          },
-          {
-            name: 'CH₄',
-            data: ch4AveValues,
-            yAxisIndex: 1,
-            type: 'bar',
-          },
-          {
-            name: 'CO₂',
-            data: co2AveValues,
-            yAxisIndex: 1,
-            type: 'bar',
-          },
-          {
-            name: 'CO',
-            data: coAveValues,
-            yAxisIndex: 1,
-            type: 'bar',
-          },
-          {
-            name: 'O₂',
-            data: o2AveValues,
-            yAxisIndex: 0,
-            type: 'bar',
-          },
-          {
-            name: 'N₂',
-            data: n2AveValues,
-            yAxisIndex: 0,
-            type: 'bar',
-          },
-          {
-            name: 'C₂H₆',
-            data: c2h6AveValues,
-            yAxisIndex: 1,
-            type: 'bar',
-          },
-        ];
-    }
-  };
-
-  const seriesConfig = getSeriesConfig(sysOrgCode);
-  const option = {
-    tooltip: {
-      trigger: 'axis',
-      backgroundColor: 'rgba(28, 72, 105, 0.5)', // 设置 tooltip 背景为透明
-      textStyle: {
-        color: '#ffffff', // 设置 tooltip 字体颜色为白色
-      },
-      axisPointer: {
-        label: {
-          show: true,
-          backgroundColor: '#071c44',
-        },
-      },
-    },
-    legend: {
-      top: '5%',
-      textStyle: {
-        color: '#ffffffff',
-      },
-      width: '80%', // 设置图例的宽度
-      orient: 'horizontal', // 水平布局
-      pageIconColor: '#ffffff', // 设置翻页图标颜色
-      pageTextStyle: {
-        color: '#ffffff', // 设置翻页文字颜色
-      },
-    },
-    xAxis: {
-      type: 'category',
-      data: categories,
-      splitLine: { show: true, lineStyle: { color: 'rgba(28, 72, 105, 0.5)' } },
-      axisLabel: {
-        interval: 0, // 显示所有标签
-        color: '#ffffff', // 设置 x 轴字体颜色
-        formatter: function (value: string) {
-          return value.length > 12 ? value.slice(0, 12) + '...' : value; // 截断长标签
-        },
-      },
-    },
-    yAxis: [
-      {
-        type: 'value',
-        name: 'O₂/N₂',
-        max: 100,
-        splitLine: { show: true, lineStyle: { color: 'rgba(21,80,126,.5)' } },
-        axisLabel: {
-          color: '#ffffff',
-        },
-      },
-      {
-        type: 'value',
-        name: '其他气体',
-        splitLine: { show: true, lineStyle: { color: 'rgba(21,80,126,.5)' } },
-        axisLabel: {
-          color: '#ffffff', // 设置 y 轴字体颜色
-        },
-      },
-    ],
-    dataZoom: [
-      {
-        type: 'slider', // 会创建一个滑块来选择要显示的区域
-        start: 0, // 初始选中范围的起始百分比
-        end: (5 / categories.length) * 100, // 初始选中范围的结束百分比,根据数据条数调整
-        minSpan: (5 / categories.length) * 100, // 最小选中范围,根据数据条数调整
-        maxSpan: (5 / categories.length) * 100, // 最大选中范围,根据数据条数调整
-        show: true,
-        height: 10, // 设置滑块高度
-        bottom: 1, // 设置滑块距离容器底部的距离
-        borderColor: 'transparent', // 设置边框颜色为透明
-        backgroundColor: '#F6F7FB', // 设置背景颜色
-        handleIcon: 'path://M512,512m-448,0a448,448,0,1,0,896,0a448,448,0,1,0,-896,0Z', // 设置手柄图标为圆形
-        handleColor: '#C2D2FF', // 设置手柄颜色
-        handleSize: 13, // 设置手柄大小
-        handleStyle: {
-          borderColor: '#C2D2FF', // 设置手柄边框颜色
-        },
-        fillerColor: '#C2D2FF', // 设置选中范围的填充颜色
-      },
-    ],
-    grid: {
-      top: '21%', // 设置 grid 距离顶部的距离,增加间隔
-      left: '3%',
-      right: '4%',
-      bottom: '3%',
-      containLabel: true,
-    },
-    series: seriesConfig,
-  };
-  myChart.setOption(option);
-}
-//获取所有文件列表
-async function getAllFile() {
-  let res = await getAllFileList({ type: 'bundleSpy' });
-  selectList.value = res.records.map((item: any) => ({
-    id: item.id,
-    fileName: item.fileName,
-  }));
-  if (selectList.value.length > 0) {
-    formSearch.id = selectList.value[0].id;
-    getSearch();
-  }
-}
-// 处理文件点击事件
-function handleFileClick(item: any) {
-  formSearch.id = item.id;
-  formSearch.fileName = item.fileName;
-  selectedFileId.value = item.id;
-  getSearch();
-}
-//查询
-function getSearch() {
-  // const selectedFile = selectList.value.find((item) => item.id === formSearch.id);
-  const params = {
-    id: formSearch.id,
-    // fileName: selectedFile ? selectedFile.fileName : '',
-  };
-  getTableListById(params);
-}
-onMounted(() => {
-  getTableList({ type: 'bundleSpy' });
-  getAllFile().then(() => {
-    if (selectList.value.length > 0) {
-      formSearch.id = selectList.value[0].id;
-      selectedFileId.value = selectList.value[0].id;
-      getSearch();
-    }
-  });
-});
-</script>
-
-<style lang="less" scoped>
-@import '/@/design/theme.less';
-
-.content-container {
-  display: flex;
-  width: 100%;
-  height: 100%;
-  padding-top: 54px;
-}
-
-.file-list {
-  width: 20%;
-  padding: 10px;
-  margin-right: 10px;
-  margin-bottom: 50px;
-  border: 1px solid #99e8ff66;
-  background: #27546e1a;
-  box-shadow: 0px 0px 20px 7px rgba(145, 233, 254, 0.7) inset;
-  -moz-box-shadow: 0px 0px 20px 7px rgba(145, 233, 254, 0.7) inset;
-  -webkit-box-shadow: 0px 0px 50px 1px rgb(149 235 255 / 5%) inset;
-}
-
-.file-list ul {
-  list-style: none;
-  padding: 0;
-}
-
-.file-list li {
-  color: #fff;
-  padding: 5px;
-  cursor: pointer;
-}
-
-.file-list li:hover,
-.file-list li.selected {
-  background: #1c4869;
-}
-
-.table-container {
-  margin-top: 10px;
-  width: 80%;
-  box-sizing: border-box;
-}
-
-.dustMonitor {
-  width: 100%;
-  height: 100%;
-  padding: 10px 10px 15px 10px;
-  box-sizing: border-box;
-  position: relative;
-}
-
-:deep(.zxm-table-thead > tr > th:last-child) {
-  border-right: 1px solid #91e9fe !important;
-}
-
-:deep(.zxm-picker-input > input) {
-  color: #fff;
-}
-
-:deep(.zxm-select:not(.zxm-select-customize-input) .zxm-select-selector) {
-  border: 1px solid var(--vent-form-item-border) !important;
-  background-color: #ffffff00 !important;
-}
-
-:deep(.zxm-select-selection-item) {
-  color: #fff !important;
-}
-.data-container {
-  margin-top: 40px;
-  display: flex;
-  width: 100%;
-  height: 100%;
-}
-
-.line-chart {
-  flex: 3; /* 占据 3/4 的空间 */
-  width: 100%;
-  height: 400px;
-}
-.data-content {
-  flex: 1; /* 占据 1/4 的空间 */
-  height: 400px;
-  display: flex;
-  flex-direction: column; /* 垂直排列进度条 */
-  // align-items: center; /* 水平居中 */
-  margin: 10px;
-  .title {
-    font-size: 18px;
-    font-weight: 600;
-    color: #fff;
-    margin-bottom: 20px;
-  }
-  .explain {
-    color: var(--vent-table-action-link);
-    margin-top: 18px;
-  }
-}
-.progress {
-  width: 100%;
-  height: 20px;
-  margin-top: 10px;
-}
-.progress-label {
-  margin-top: 20px;
-  text-align: left;
-  margin-bottom: 5px;
-  color: #fff;
-}
-::deep .progress-text {
-  color: #fff !important; /* 自定义百分比文字颜色 */
-}
-.blast-delta-container {
-  margin: 50px;
-}
-.yellow-progress .ant-progress-bg {
-  background-color: yellow !important;
-}
-
-:deep(.zxm-table-thead > tr > th:last-child) {
-  border-right: 1px solid #91e9fe !important;
-}
-</style>

+ 0 - 545
src/views/vent/bundleSpy/bundleSpyTable/modal/blastDelta.vue

@@ -1,545 +0,0 @@
-<template>
-  <div class="blastDelta">
-    <div ref="coord" class="coords">
-      <div class="coord-lineY">
-        <div :style="{ width: '5px', height: `${lengY}px`, 'border-top': '1px solid #0079ff' }" v-for="item in 10" :key="item"></div>
-      </div>
-      <div class="coord-labelY">
-        <div :style="{ width: '20px', height: `${lengY}px`, color: '#fff' }" v-for="(ite, ind) in 10" :key="ind">{{ ind == 0 ? maxY : '' }}</div>
-      </div>
-      <div class="coord-lineX">
-        <div :style="{ height: '5px', width: `${lengY}px`, 'border-right': '1px solid #0079ff' }" v-for="item in 15" :key="item"></div>
-      </div>
-      <div class="coord-labelX">
-        <div :style="{ height: '20px', width: `${lengY}px`, color: '#fff' }" v-for="(ite, ind) in 15" :key="ind">{{ ind == 14 ? maxX : '' }}</div>
-      </div>
-      <div class="line-AB" :style="{ width: 'calc(100% - 10px)', height: 'calc(100% - 10px)' }">
-        <canvas id="myCanvas" :width="canvasSize.width" :height="canvasSize.height"></canvas>
-      </div>
-      <!-- <div class="line-legend">
-        <div class="legend-ite" v-for="ite in 4" :key="ite"></div>
-      </div>
-      <div class="legend-name">
-        <div class="item-name" v-for="item in legendList" :key="item">{{ item.name }}</div>
-      </div> -->
-    </div>
-    <div class="line-legend">
-      <div class="legend-box" v-for="(item, index) in legendList" :key="index">
-        <span class="legend-icon"></span>
-        <span class="legend-label">{{ item.name }}</span>
-      </div>
-    </div>
-  </div>
-</template>
-
-<script lang="ts" setup>
-import { ref, reactive, onMounted, watch, nextTick } from 'vue';
-
-let props = defineProps({
-  posMonitor: {
-    type: Object,
-    default: () => {
-      return {};
-    },
-  },
-  canvasSize: {
-    type: Object,
-    default: () => {
-      return { width: 380, height: 245 };
-    },
-  },
-});
-let coord = ref(null);
-let lengY = ref(0);
-//与x,y轴相交最大值坐标
-let maxY = ref(0);
-let maxX = ref(0);
-let maxY1 = ref(0);
-let maxX1 = ref(0);
-
-//A点坐标
-let coordinateA = reactive({
-  x: 0,
-  y: 0,
-});
-//B点坐标
-let coordinateB = reactive({
-  x: 0,
-  y: 0,
-});
-//E点坐标
-let coordinateE = reactive({
-  x: 0,
-  y: 0,
-});
-//F点坐标
-let coordinateF = reactive({
-  x: 0,
-  y: 0,
-});
-//G点坐标
-let coordinateG = reactive({
-  x: 0,
-  y: 0,
-});
-
-let legendList = ref<any[]>([{ name: '不爆炸' }, { name: '可燃气体不足' }, { name: '可爆炸' }, { name: '氧气不足' }]);
-
-function getAreas() {
-  if (coord.value) {
-    let width = coord.value.offsetWidth;
-    let height = coord.value.offsetHeight;
-    lengY.value = Math.ceil((height - 10) / 10);
-  }
-}
-//根据A,B,E,G等点坐标绘制爆炸三角形
-function getBlast() {
-  maxY.value = getCoordABY(0);
-  // 获取canvas元素
-  let canvas = document.getElementById('myCanvas');
-  let ctx = canvas.getContext('2d');
-  let scalcY, scalcX;
-  if (coordinateB.x < 50) {
-    maxX.value = 50;
-    scalcY = canvas.height / maxY.value;
-    scalcX = canvas.width / maxX.value;
-  } else {
-    maxX.value = parseInt(coordinateB.x + 10);
-    scalcY = canvas.height / maxY.value;
-    scalcX = canvas.width / maxX.value;
-  }
-  //绘制AB点线条
-  ctx.beginPath();
-  ctx.moveTo(coordinateA.x * scalcX, canvas.height - coordinateA.y * scalcY); // 开始绘制的点
-  ctx.lineTo(coordinateB.x * scalcX, canvas.height - coordinateB.y * scalcY); // 结束绘制的点
-  ctx.strokeStyle = '#000';
-  ctx.stroke(); // 进行绘制
-
-  //绘制AE线条
-  ctx.beginPath();
-  ctx.moveTo(coordinateA.x * scalcX, canvas.height - coordinateA.y * scalcY); // 开始绘制的点
-  ctx.lineTo(coordinateE.x * scalcX, canvas.height - coordinateE.y * scalcY); // 结束绘制的点
-  ctx.strokeStyle = '#000';
-  ctx.stroke(); // 进行绘制
-
-  //绘制BE线条
-  ctx.beginPath();
-  ctx.moveTo(coordinateB.x * scalcX, canvas.height - coordinateB.y * scalcY); // 开始绘制的点
-  ctx.lineTo(coordinateE.x * scalcX, canvas.height - coordinateE.y * scalcY); // 结束绘制的点
-  ctx.strokeStyle = '#000';
-  ctx.stroke(); // 进行绘制
-
-  //绘制A点与坐标轴连线
-  ctx.beginPath();
-  ctx.moveTo(0, canvas.height - maxY.value * scalcY); // 开始绘制的点
-  ctx.lineTo(coordinateA.x * scalcX, canvas.height - coordinateA.y * scalcY); // 结束绘制的点
-  ctx.strokeStyle = '#000';
-  ctx.stroke(); // 进行绘制
-
-  //绘制B点c连线
-  ctx.beginPath();
-  ctx.moveTo(coordinateB.x * scalcX, canvas.height - coordinateB.y * scalcY); // 开始绘制的点
-  ctx.lineTo(maxX.value * scalcX, canvas.height - getCoordABY(maxX.value) * scalcY); // 结束绘制的点
-  ctx.strokeStyle = '#000';
-  ctx.stroke(); // 进行绘制
-  //绘制c点与坐标轴连线
-  ctx.beginPath();
-  ctx.moveTo(maxX.value * scalcX, canvas.height - getCoordABY(maxX.value) * scalcY); // 开始绘制的点
-  ctx.lineTo(maxX.value * scalcX, canvas.height); // 结束绘制的点
-  ctx.strokeStyle = '#000';
-  ctx.stroke(); // 进行绘制
-
-  //绘制E,F线条
-  ctx.beginPath();
-  ctx.moveTo(coordinateE.x * scalcX, canvas.height - coordinateE.y * scalcY); // 开始绘制的点
-  ctx.lineTo(coordinateF.x * scalcX, canvas.height - coordinateF.y * scalcY); // 结束绘制的点
-  ctx.strokeStyle = '#000';
-  ctx.stroke(); // 进行绘制
-
-  //绘制GE线条
-  ctx.beginPath();
-  ctx.moveTo(coordinateG.x * scalcX, canvas.height - coordinateG.y * scalcY); // 开始绘制的点
-  ctx.lineTo(coordinateE.x * scalcX, canvas.height - coordinateE.y * scalcY); // 结束绘制的点
-  ctx.strokeStyle = '#000';
-  ctx.stroke(); // 进行绘制
-
-  ctx.clearRect(0, 0, canvas.width, canvas.height);
-  let pointData = [
-    {
-      arr: [
-        { x: coordinateG.x * scalcX, y: canvas.height - coordinateG.y * scalcY }, //G
-        { x: coordinateE.x * scalcX, y: canvas.height - coordinateE.y * scalcY }, //E
-        { x: coordinateA.x * scalcX, y: canvas.height - coordinateA.y * scalcY }, //A
-        { x: 0, y: canvas.height - maxY.value * scalcY },
-      ],
-      color: 'rgb(1, 127, 2, .9)',
-    },
-    {
-      arr: [
-        { x: 0, y: canvas.height }, //原点
-        { x: coordinateF.x * scalcX, y: canvas.height - coordinateF.y * scalcY }, //F
-        { x: coordinateE.x * scalcX, y: canvas.height - coordinateE.y * scalcY }, //E
-        { x: coordinateG.x * scalcX, y: canvas.height - coordinateG.y * scalcY }, //G
-      ],
-      color: 'rgb(127, 254, 2, .9)',
-    },
-    {
-      arr: [
-        { x: coordinateF.x * scalcX, y: canvas.height - coordinateF.y * scalcY }, //F
-        { x: maxX.value * scalcX, y: canvas.height },
-        { x: maxX.value * scalcX, y: canvas.height - getCoordABY(maxX.value) * scalcY },
-        { x: coordinateB.x * scalcX, y: canvas.height - coordinateB.y * scalcY }, //B
-        { x: coordinateE.x * scalcX, y: canvas.height - coordinateE.y * scalcY }, //E
-      ],
-      color: 'rgb(255, 255, 0, .9)',
-    },
-    {
-      arr: [
-        { x: coordinateE.x * scalcX, y: canvas.height - coordinateE.y * scalcY }, //E
-        { x: coordinateB.x * scalcX, y: canvas.height - coordinateB.y * scalcY }, //B
-        { x: coordinateA.x * scalcX, y: canvas.height - coordinateA.y * scalcY }, //A
-      ],
-      color: 'rgb(255, 0, 0, .9)',
-    },
-  ];
-
-  pointData.forEach((item, index) => {
-    ctx.beginPath();
-    ctx.moveTo(item.arr[0].x, item.arr[0].y);
-    item.arr.forEach((items, ind) => {
-      if (ind != 0) {
-        ctx.lineTo(item.arr[ind].x, item.arr[ind].y);
-      }
-    });
-    ctx.closePath();
-    ctx.fillStyle = item.color;
-    ctx.fill();
-    ctx.strokeStyle = 'transparent';
-    ctx.lineWidth = 1;
-    ctx.stroke();
-  });
-
-  // 标记点A
-  ctx.beginPath();
-  ctx.arc(coordinateA.x * scalcX, canvas.height - coordinateA.y * scalcY, 1, 0, 2 * Math.PI);
-  ctx.fillStyle = '#eee';
-  ctx.fill();
-  // 在点附近添加文字
-  ctx.font = '12px Arial';
-  ctx.fillStyle = '#fff';
-  ctx.fillText('A', coordinateA.x * scalcX + 10, canvas.height - coordinateA.y * scalcY); // 文字位置略微偏上,以便于文字与点对齐
-
-  //标记点B
-  ctx.beginPath();
-  ctx.arc(coordinateB.x * scalcX, canvas.height - coordinateB.y * scalcY, 1, 0, 2 * Math.PI);
-  ctx.fillStyle = '#eee';
-  ctx.fill();
-  // 在点附近添加文字
-  ctx.font = '12px Arial';
-  ctx.fillStyle = '#fff';
-  ctx.fillText('B', coordinateB.x * scalcX + 10, canvas.height - coordinateB.y * scalcY); // 文字位置略微偏上,以便于文字与点对齐
-
-  //标记点E
-  ctx.beginPath();
-  ctx.arc(coordinateE.x * scalcX, canvas.height - coordinateE.y * scalcY, 1, 0, 2 * Math.PI);
-  ctx.fillStyle = '#eee';
-  ctx.fill();
-  // 在点附近添加文字
-  ctx.font = '12px Arial';
-  ctx.fillStyle = '#fff';
-  ctx.fillText('E', coordinateE.x * scalcX + 5, canvas.height - coordinateE.y * scalcY + 10); // 文字位置略微偏上,以便于文字与点对齐
-
-  //标记点G
-  ctx.beginPath();
-  ctx.arc(coordinateG.x * scalcX, canvas.height - coordinateG.y * scalcY, 1, 0, 2 * Math.PI);
-  ctx.fillStyle = '#eee';
-  ctx.fill();
-  // 在点附近添加文字
-  ctx.font = '12px Arial';
-  ctx.fillStyle = '#fff';
-  ctx.fillText('G', coordinateG.x * scalcX + 5, canvas.height - coordinateG.y * scalcY); // 文字位置略微偏上,以便于文字与点对齐
-  //标记点F
-  ctx.beginPath();
-  ctx.arc(coordinateF.x * scalcX, canvas.height - coordinateF.y * scalcY, 1, 0, 2 * Math.PI);
-  ctx.fillStyle = '#eee';
-  ctx.fill();
-  // 在点附近添加文字
-  ctx.font = '12px Arial';
-  ctx.fillStyle = '#fff';
-  ctx.fillText('F', coordinateF.x * scalcX + 10, canvas.height - coordinateF.y * scalcY - 10); // 文字位置略微偏上,以便于文字与点对齐
-  //标记点
-  ctx.beginPath();
-  ctx.arc(maxX1.value * scalcX, canvas.height - maxY1.value * scalcY, 5, 0, 2 * Math.PI);
-  ctx.fillStyle = 'blue';
-  ctx.fill();
-  // 在点附近添加文字
-  ctx.font = '12px Arial';
-  ctx.fillStyle = '#fff';
-  ctx.fillText('', maxX1.value * scalcX + 10, canvas.height - maxY1.value * scalcY - 10); // 文字位置略微偏上,以便于文字与点对齐
-}
-//绘制不爆炸三角形
-function getUnblast() {
-  maxY.value = 21;
-  maxX.value = 50;
-  // 获取canvas元素
-  let canvas = document.getElementById('myCanvas');
-  let ctx = canvas.getContext('2d');
-  let scalcY = canvas.height / maxY.value;
-  let scalcX = canvas.width / maxX.value;
-
-  //绘制AB点线条
-  ctx.beginPath();
-  ctx.moveTo(0, canvas.height - maxY.value * scalcY); // 开始绘制的点
-  ctx.lineTo(maxX.value * scalcX, canvas.height); // 结束绘制的点
-  ctx.strokeStyle = '#000';
-  ctx.stroke(); // 进行绘制
-
-  ctx.clearRect(0, 0, canvas.width, canvas.height);
-  let pointData = [
-    {
-      arr: [
-        { x: 0, y: canvas.height }, //原点
-        { x: 0, y: canvas.height - maxY.value * scalcY }, //A
-        { x: maxX.value * scalcX, y: canvas.height }, //B
-      ],
-      color: 'rgb(127, 254, 2, .9)',
-    },
-  ];
-
-  pointData.forEach((item, index) => {
-    ctx.beginPath();
-    ctx.moveTo(item.arr[0].x, item.arr[0].y);
-    item.arr.forEach((items, ind) => {
-      if (ind != 0) {
-        ctx.lineTo(item.arr[ind].x, item.arr[ind].y);
-      }
-    });
-    ctx.closePath();
-    ctx.fillStyle = item.color;
-    ctx.fill();
-    ctx.strokeStyle = 'transparent';
-    ctx.lineWidth = 1;
-    ctx.stroke();
-  });
-
-  // 标记点A
-  ctx.beginPath();
-  ctx.arc(0, canvas.height - maxY.value * scalcY, 1, 0, 2 * Math.PI);
-  ctx.fillStyle = '#eee';
-  ctx.fill();
-  // 在点附近添加文字
-  ctx.font = '12px Arial';
-  ctx.fillStyle = '#fff';
-  ctx.fillText('A', 10, canvas.height - maxY.value * scalcY + 10); // 文字位置略微偏上,以便于文字与点对齐
-  // 标记点B
-  ctx.beginPath();
-  ctx.arc(maxX.value * scalcX, canvas.height, 1, 0, 2 * Math.PI);
-  ctx.fillStyle = '#eee';
-  ctx.fill();
-  // 在点附近添加文字
-  ctx.font = '12px Arial';
-  ctx.fillStyle = '#fff';
-  ctx.fillText('B', maxX.value * scalcX - 10, canvas.height - 10); // 文字位置略微偏上,以便于文字与点对齐
-  //标记点
-  ctx.beginPath();
-  ctx.arc(maxX1.value * scalcX, canvas.height - maxY1.value * scalcY, 5, 0, 2 * Math.PI);
-  ctx.fillStyle = 'blue';
-  ctx.fill();
-  // 在点附近添加文字
-  ctx.font = '12px Arial';
-  ctx.fillStyle = '#fff';
-  ctx.fillText('', maxX1.value * scalcX + 10, canvas.height - maxY1.value * scalcY - 10); // 文字位置略微偏上,以便于文字与点对齐
-}
-//根据横坐标获取直线AB纵坐标
-function getCoordABY(params) {
-  return Math.ceil(
-    ((parseFloat(coordinateB.y) - parseFloat(coordinateA.y)) * params -
-      parseFloat(coordinateA.x) * parseFloat(coordinateB.y) +
-      parseFloat(coordinateB.x) * parseFloat(coordinateA.y)) /
-      (parseFloat(coordinateB.x) - parseFloat(coordinateA.x))
-  );
-}
-//根据纵坐标获取直线AB横坐标
-function getCoordABX(params1) {
-  return Math.floor(
-    ((parseFloat(coordinateB.x) - parseFloat(coordinateA.x)) * params1 +
-      parseFloat(coordinateA.x) * parseFloat(coordinateB.y) -
-      parseFloat(coordinateB.x) * parseFloat(coordinateA.y)) /
-      (parseFloat(coordinateB.y) - parseFloat(coordinateA.y))
-  );
-}
-
-watch(
-  () => props.posMonitor,
-  (newV, oldV) => {
-    if (newV.btTriBlast) {
-      maxY1.value = parseFloat(newV.o2_ave);
-      maxX1.value =
-        parseFloat(newV.co_ave) * 0.0001 + parseFloat(newV.ch4_ave) + parseFloat(newV.c2h2_ave) * 0.0001 + parseFloat(newV.c2h4_ave) * 0.0001;
-      let btTriBlasts = newV.btTriBlast;
-      coordinateA.x = btTriBlasts.A_x;
-      coordinateA.y = btTriBlasts.A_y;
-      coordinateB.x = btTriBlasts.B_x;
-      coordinateB.y = btTriBlasts.B_y;
-      coordinateE.x = btTriBlasts.E_x;
-      coordinateE.y = btTriBlasts.E_y;
-      coordinateF.x = btTriBlasts.F_x;
-      coordinateF.y = btTriBlasts.F_y;
-      coordinateG.x = btTriBlasts.G_x;
-      coordinateG.y = btTriBlasts.G_y;
-      if (
-        !((coordinateA.y - coordinateB.y) / (coordinateA.x - coordinateB.x)) ||
-        (coordinateA.y - coordinateB.y) / (coordinateA.x - coordinateB.x) == 1
-      ) {
-        // 使用 nextTick 为了让 immediate watch 触发时等待组件挂载后执行绘制
-        nextTick(getUnblast);
-      } else {
-        nextTick(getBlast);
-      }
-    }
-  },
-  { deep: true, immediate: true }
-);
-
-onMounted(() => {
-  getAreas();
-});
-</script>
-
-<style lang="less" scoped>
-.blastDelta {
-  position: relative;
-  width: 100%;
-  height: 320px;
-
-  .line-legend {
-    position: absolute;
-    left: 50%;
-    top: 0px;
-    width: 75%;
-    height: 20px;
-    transform: translate(-50%, 0);
-    display: flex;
-    justify-content: space-around;
-
-    .legend-box {
-      display: flex;
-      height: 100%;
-      justify-content: center;
-      align-items: center;
-      font-size: 12px;
-
-      &:nth-child(1) {
-        flex: 1;
-
-        .legend-icon {
-          width: 10px;
-          height: 10px;
-          background-color: #7ffe02;
-          margin-right: 5px;
-        }
-      }
-
-      &:nth-child(2) {
-        flex: 1.5;
-
-        .legend-icon {
-          width: 10px;
-          height: 10px;
-          background-color: #017f02;
-          margin-right: 5px;
-        }
-      }
-
-      &:nth-child(3) {
-        flex: 1;
-
-        .legend-icon {
-          width: 10px;
-          height: 10px;
-          background-color: #ff0000;
-          margin-right: 5px;
-        }
-      }
-
-      &:nth-child(4) {
-        flex: 1;
-
-        .legend-icon {
-          width: 10px;
-          height: 10px;
-          background-color: #ffff00;
-          margin-right: 5px;
-        }
-      }
-    }
-  }
-
-  .coords {
-    position: absolute;
-    left: 50%;
-    top: 50%;
-    width: 90%;
-    height: 80%;
-    border-left: 1px solid #006c9d;
-    border-bottom: 1px solid #006c9d;
-    transform: translate(-45%, -46%);
-
-    .coord-lineY {
-      position: absolute;
-      left: -5px;
-      top: 10px;
-      width: 5px;
-      height: calc(100% - 10px);
-    }
-
-    .coord-labelY {
-      position: absolute;
-      left: -25px;
-      top: -5px;
-      width: 20px;
-      height: 100%;
-    }
-
-    .coord-lineX {
-      display: flex;
-      position: absolute;
-      bottom: -5px;
-      right: 10px;
-      width: calc(100% - 10px);
-      height: 5px;
-    }
-
-    .coord-labelX {
-      display: flex;
-      justify-content: flex-end;
-      position: absolute;
-      bottom: -25px;
-      left: -5px;
-      width: 100%;
-      height: 20px;
-    }
-
-    .line-AB {
-      position: absolute;
-      left: 0;
-      top: 10px;
-    }
-
-    // .legend-name {
-    //   position: absolute;
-    //   right: 0;
-    //   top: 20px;
-    //   height: 80px;
-
-    //   .item-name {
-    //     height: 20px;
-    //     line-height: 20px;
-    //     font-size: 10px;
-    //     color: #fff;
-    //     letter-spacing: 2px;
-    //   }
-    // }
-  }
-}
-</style>

+ 0 - 0
src/views/vent/gas/components/board/baseBoard.vue → src/views/vent/comment/components/board/baseBoard.vue


+ 0 - 0
src/views/vent/gas/components/board/categoryBoard.vue → src/views/vent/comment/components/board/categoryBoard.vue


+ 0 - 0
src/views/vent/gas/components/board/squareBoard.vue → src/views/vent/comment/components/board/squareBoard.vue


+ 0 - 0
src/views/vent/gas/components/board/unitBoard.vue → src/views/vent/comment/components/board/unitBoard.vue


+ 0 - 0
src/views/vent/gas/components/form/button.vue → src/views/vent/comment/components/form/button.vue


+ 0 - 0
src/views/vent/gas/components/form/formTitle.vue → src/views/vent/comment/components/form/formTitle.vue


+ 0 - 0
src/views/vent/gas/components/list/@/design/vent/color.less → src/views/vent/comment/components/list/@/design/vent/color.less


+ 0 - 0
src/views/vent/gas/components/list/index.vue → src/views/vent/comment/components/list/index.vue


+ 0 - 0
src/views/vent/gas/components/list/listItem.vue → src/views/vent/comment/components/list/listItem.vue


+ 0 - 0
src/views/vent/gas/components/list/listTitle.vue → src/views/vent/comment/components/list/listTitle.vue


+ 0 - 0
src/views/vent/gas/components/modal/confirmModal.vue → src/views/vent/comment/components/modal/confirmModal.vue


+ 0 - 0
src/views/vent/gas/components/modal/confirmModal1.vue → src/views/vent/comment/components/modal/confirmModal1.vue


+ 0 - 0
src/views/vent/gas/components/tab/baseTab.vue → src/views/vent/comment/components/tab/baseTab.vue


+ 0 - 50
src/views/vent/dataCenter/APICenter/ApiAddModal.vue

@@ -1,50 +0,0 @@
-<template>
-  <BasicModal v-bind="$attrs" @register="registerModal" :width="800" :title="isAdd ? '添加API信息' : '编辑API信息'" @ok="handleSubmit">
-    <BasicForm @register="registerForm" />
-  </BasicModal>
-</template>
-<script lang="ts" setup>
-import { ref, computed, unref } from 'vue';
-import { BasicModal, useModalInner } from '/@/components/Modal';
-import { BasicForm, useForm } from '/@/components/Form/index';
-import { formAddSchema } from './apiManger.data';
-import { apiManageList, AddOrEdit, apiManageQueryByID } from './apiManger.api';
-const isAdd = ref(true);
-const currentRecordId = ref('');
-// 声明Emits
-const emit = defineEmits(['success', 'register']);
-//表单配置
-const [registerForm, { resetFields, setFieldsValue, validate }] = useForm({
-  schemas: formAddSchema,
-  showActionButtonGroup: false,
-});
-//表单赋值
-const [registerModal, { setModalProps, closeModal }] = useModalInner(async (data) => {
-  //重置表单
-  await resetFields();
-  setModalProps({ confirmLoading: false });
-  //获取详情
-  data.record = await apiManageQueryByID({ id: data?.record.id });
-  currentRecordId.value = data.record.id;
-  isAdd.value = !!data?.isUpdate;
-  await setFieldsValue({
-    ...data.record,
-  });
-});
-//表单提交事件
-async function handleSubmit() {
-  try {
-    let values = await validate();
-    values.id = currentRecordId.value;
-    setModalProps({ confirmLoading: true });
-    //提交表单
-    await AddOrEdit(values, unref(isAdd.value));
-    //关闭弹窗
-    closeModal();
-    //刷新列表
-    emit('success');
-  } finally {
-    setModalProps({ confirmLoading: false });
-  }
-}
-</script>

+ 0 - 31
src/views/vent/dataCenter/APICenter/apiManger.api.ts

@@ -1,31 +0,0 @@
-import { defHttp } from '/@/utils/http/axios';
-
-enum Api {
-  apiManageList = '/dataCenter/sys/apiMangage/list',
-  apiManageAdd = '/dataCenter/sys/apiMangage/add',
-  apiManageEdit = '/dataCenter/sys/apiMangage/edit',
-  apiManageDelete = '/dataCenter/sys/apiMangage/delete',
-  apiManageQueryByID = '/dataCenter/sys/apiMangage/queryById',
-}
-// 分站查询接口
-export const apiManageList = (params) =>
-  defHttp.get({
-    url: Api.apiManageList,
-    params,
-  });
-// API接口添加
-// API接口编辑
-export const AddOrEdit = (params, isAdd) => {
-  const url = isAdd ? Api.apiManageAdd : Api.apiManageEdit;
-  return defHttp.post({ url: url, params });
-};
-// API接口通过id删除
-export const apiManageDelete = (params) => {
-  return defHttp.delete({ url: Api.apiManageDelete, params }, { joinParamsToUrl: true });
-};
-// API接口通过id查询
-export const apiManageQueryByID = (params) =>
-  defHttp.get({
-    url: Api.apiManageQueryByID,
-    params,
-  });

+ 0 - 61
src/views/vent/dataCenter/APICenter/apiManger.data.ts

@@ -1,61 +0,0 @@
-import { FormSchema, BasicColumn } from '/@/components/Table';
-export const tableColumns: BasicColumn[] = [
-  {
-    title: 'API名称',
-    dataIndex: 'apiName',
-    key: 'apiName',
-    align: 'center',
-  },
-  {
-    title: '请求路径',
-    dataIndex: 'reqUrl',
-    key: 'reqUrl',
-    align: 'center',
-  },
-  {
-    title: 'HTTP方法',
-    dataIndex: 'reqMethod',
-    key: 'reqMethod',
-    align: 'center',
-  },
-  {
-    title: '参数',
-    dataIndex: 'reqParam',
-    key: 'reqParam',
-    align: 'center',
-  },
-  {
-    title: '状态',
-    dataIndex: 'apiStatus',
-    key: 'apiStatus',
-    align: 'center',
-  },
-  {
-    title: '操作',
-    dataIndex: 'action',
-    width: 120,
-    align: 'center',
-    slots: { customRender: 'action' },
-  },
-];
-
-export const formAddSchema: FormSchema[] = [
-  {
-    field: 'apiName',
-    label: '接口名称',
-    required: true,
-    component: 'Input',
-  },
-  {
-    field: 'reqUrl',
-    label: '请求路径',
-    required: true,
-    component: 'Input',
-  },
-  {
-    field: 'reqMethod',
-    label: '请求方式',
-    required: true,
-    component: 'Input',
-  },
-];

+ 0 - 90
src/views/vent/dataCenter/APICenter/index.vue

@@ -1,90 +0,0 @@
-<template>
-  <div class="safetyList">
-    <customHeader>API管理</customHeader>
-    <div class="device-manager-box">
-      <!-- 分站监测 -->
-      <BasicTable @register="registerTable">
-        <template #tableTitle>
-          <a-button type="primary" preIcon="ant-design:plus-outlined" @click="handleCreate"> 新增</a-button>
-        </template>
-        <template #action="{ record }">
-          <a class="table-action-link" @click="handlerEdit(record)">编辑</a>
-          <a-popconfirm title="删除内容无法恢复,是否删除" ok-text="确定" cancel-text="取消" @confirm="handleDelete(record)">
-            <a class="table-action-link">删除</a>
-          </a-popconfirm>
-        </template>
-      </BasicTable>
-    </div>
-    <ApiAddModal @register="registerAddModal" @success="reload" />
-  </div>
-</template>
-
-<script setup lang="ts">
-import { ref, nextTick, computed, reactive, onMounted, onUnmounted, inject } from 'vue';
-import { BasicTable } from '/@/components/Table';
-import { usePermission } from '/@/hooks/web/usePermission';
-import customHeader from '/@/components/vent/customHeader.vue';
-import { apiManageList, apiManageDelete } from './apiManger.api';
-import { useModal } from '/@/components/Modal';
-import { tableColumns } from './apiManger.data';
-import ApiAddModal from './ApiAddModal.vue';
-import { useListPage } from '/@/hooks/system/useListPage';
-const { hasPermission } = usePermission();
-const [registerAddModal, { openModal: openAddModal }] = useModal();
-// 列表页面公共参数、方法
-const { prefixCls, tableContext } = useListPage({
-  designScope: 'API-list',
-  tableProps: {
-    title: 'Api列表',
-    api: apiManageList,
-    columns: tableColumns,
-    size: 'small',
-    actionColumn: {
-      width: 120,
-    },
-    beforeFetch(params) {
-      return Object.assign(
-        {
-          column: 'createTime',
-        },
-        params
-      );
-    },
-    showActionColumn: false,
-  },
-});
-const [registerTable, { reload, updateTableDataRecord }, { selectedRows }] = tableContext;
-// 注册table数据
-
-// async function getAPIList(params) {
-//   const result = await apiManageList(params);
-//   // tableData.value = result.records;
-// }
-function handleCreate() {
-  openAddModal(true, { isAdd: true });
-  reload();
-}
-async function handlerEdit(record) {
-  openAddModal(true, { record, isAdd: false });
-}
-async function handleDelete(record) {
-  await apiManageDelete({ id: record.id });
-  reload();
-}
-onMounted(async () => {
-  // await getAPIList({
-  //   pageNo: 1,
-  //   pageSize: 1000,
-  // });
-});
-onUnmounted(() => {});
-</script>
-
-<style lang="less" scoped>
-.safetyList {
-  width: calc(100% - 20px);
-  height: calc(100% - 80px);
-  position: relative;
-  margin: 40px 10px 10px 10px;
-}
-</style>

+ 0 - 21
src/views/vent/dataCenter/deviceCenter/device.api.ts

@@ -1,21 +0,0 @@
-import { defHttp } from '/@/utils/http/axios';
-
-enum Api {
-  deviceTypeList = '/safety/ventanalyDeviceInfo/DeviceKind/queryByCatagory',
-  deviceList = '/dataCenter/compute/deviceData/getDeviceAll',
-  devMonitorList = '/dataCenter/compute/deviceData/getDeviceMonitorInfo',
-}
-export const getDeviceTypeList = (params) => defHttp.get({ url: Api.deviceTypeList, params });
-//根据设备类型获取设备列表
-// export const getDeviceListByType = (params) => defHttp.post({ url: Api.deviceList, params });
-export const getDeviceListByType = (params) =>
-  defHttp.post({
-    url: Api.deviceList,
-    params,
-  });
-//根据设备id获取设备监控数据
-export const getDevMonitorListById = (params) =>
-  defHttp.post({
-    url: Api.devMonitorList,
-    params,
-  });

+ 0 - 496
src/views/vent/dataCenter/deviceCenter/history/HistoryTable.vue

@@ -1,496 +0,0 @@
-<template>
-  <div class="history-table" v-if="loading">
-    <BasicTable ref="historyTable" @register="registerTable" :data-source="dataSource" :scroll="tableScroll">
-      <template #form-submitBefore>
-        <a-button type="primary" preIcon="ant-design:search-outlined" @click="getDataSource">查询</a-button>
-      </template>
-    </BasicTable>
-  </div>
-</template>
-
-<script lang="ts" setup>
-//ts语法
-import { watchEffect, ref, watch, defineExpose, inject, nextTick, onMounted, computed } from 'vue';
-import { FormSchema } from '/@/components/Form/index';
-import { BasicTable } from '/@/components/Table';
-import { useListPage } from '/@/hooks/system/useListPage';
-import { getTableHeaderColumns } from '/@/hooks/web/useWebColumns';
-import { defHttp } from '/@/utils/http/axios';
-import dayjs from 'dayjs';
-import { getAutoScrollContainer } from '/@/utils/common/compUtils';
-import { render } from '/@/utils/common/renderUtils';
-import { useMethods } from '/@/hooks/system/useMethods';
-import { getDeviceList, getHistoryList } from './history.api';
-import { getDictItemsByCode } from '/@/utils/dict';
-import { get } from 'lodash-es';
-
-const globalConfig = inject('globalConfig');
-const props = defineProps({
-  columnsType: {
-    type: String,
-  },
-  columns: {
-    type: Array,
-    // required: true,
-    default: () => [],
-  },
-  deviceType: {
-    type: String,
-    required: true,
-  },
-  deviceListApi: {
-    type: Function,
-  },
-  deviceArr: {
-    type: Array,
-    // required: true,
-    default: () => [],
-  },
-  designScope: {
-    type: String,
-  },
-  sysId: {
-    type: String,
-  },
-  deviceId: {
-    type: String,
-  },
-  scroll: {
-    type: Object,
-    default: { y: 0 },
-  },
-  formSchemas: {
-    type: Array<FormSchema>,
-    default: () => [],
-  },
-  /** 仅展示已绑定设备,选择是则从系统中获取sysId下已绑定设备。仅能查询到已绑定设备的历史数据 */
-  onlyBounedDevices: {
-    type: Boolean,
-    default: false,
-  },
-  showHistoryCurve: {
-    type: Boolean,
-    default: false,
-  },
-});
-const getDeviceListApi = (params) => defHttp.post({ url: '/monitor/device', params });
-const historyTable = ref();
-const loading = ref(false);
-const stationType = ref('plc1');
-const dataSource = ref([]);
-const emit = defineEmits(['change']);
-
-const historyType = ref('');
-const deviceKide = ref('');
-const columns = ref([]);
-let deviceOptions = ref([]);
-const deviceTypeStr = ref('');
-const deviceTypeName = ref('');
-const deviceType = ref('');
-loading.value = true;
-
-const selectedOption = computed<Record<string, any> | undefined>(() => {
-  let idval: string | undefined = getForm()?.getFieldsValue()?.gdeviceids;
-  if (VENT_PARAM.historyIsMultiple && idval) {
-    const arr = idval.split(',');
-    idval = arr[arr.length - 1];
-  }
-  return deviceOptions.value.find((e: any) => {
-    return e.value === idval;
-  });
-});
-
-watch(
-  () => {
-    return props.columnsType;
-  },
-  async (newVal) => {
-    if (!newVal) return;
-    deviceKide.value = newVal;
-    if (historyTable.value) {
-      getForm().resetFields();
-      // getForm().updateSchema();
-      // getForm();
-    }
-    dataSource.value = [];
-    // const column = getTableHeaderColumns(newVal.includes('_history') ? newVal : newVal + '_history');
-    // if (column && column.length < 1) {
-    //   const arr = newVal.split('_');
-    //   console.log('历史记录列表表头------------>', arr[0] + '_monitor');
-    //   columns.value = getTableHeaderColumns(arr[0] + '_history');
-    //   if (columns.value.length < 1) {
-    //     if (historyType.value) {
-    //       columns.value = getTableHeaderColumns(historyType.value + '_history');
-    //     }
-    //   }
-    // } else {
-    //   columns.value = column;
-    // }
-    await getDeviceList();
-    nextTick(() => {
-      getDataSource();
-    });
-
-    if (historyTable.value) reload();
-  },
-  {
-    immediate: true,
-  }
-);
-
-watch(historyType, (type) => {
-  if (!type) return;
-  // if (historyTable.value) getForm().resetFields()
-
-  const column = getTableHeaderColumns(type.includes('_history') ? type : type + '_history');
-  if (column && column.length < 1) {
-    const arr = type.split('_');
-    columns.value = getTableHeaderColumns(arr[0] + '_history');
-  } else {
-    columns.value = column;
-  }
-  setColumns(columns.value);
-});
-
-// 是否显示历史曲线,在devices_shows_history_curve字典里可以配置哪些设备类型需要显示曲线
-// 字典内的字段可以是前缀,例如fanlocal之于fanlocal_normal
-// 安全监控设备需要更多的配置,除去配置safetymonitor,还需要配置哪些安全监控设备需要曲线
-// 因此可以配置例如A1001的dataTypeName代码(可以查看真实数据参考)
-function calcShowCurveValue() {
-  const historyCurveDicts = getDictItemsByCode('devices_shows_history_curve') || [];
-  const findDict = (str) => historyCurveDicts.some(({ value }) => str.startsWith(value));
-
-  if (!props.showHistoryCurve) return false;
-  const dt = props.deviceType; // 依赖项
-
-  if (!findDict(dt)) return false;
-  if (!dt.startsWith('safetymonitor')) return true;
-
-  // 和字典的设备类型匹配后,如果是安全监控设备,需要额外的匹配安全监控类型
-  const dtns = get(selectedOption.value, 'readData.dataTypeName', ''); // 依赖项
-  return findDict(dtns);
-}
-
-const tableScroll = computed(() => {
-  if (props.scroll.y) return { y: props.scroll.y - 100 };
-  return {};
-});
-
-// watch(stationType, (type) => {
-//   if (type) {
-//     nextTick(() => {
-//       getDataSource();
-//     });
-//   }
-// });
-
-watch(
-  () => props.deviceId,
-  async () => {
-    await getForm().setFieldsValue({});
-    await getDeviceList();
-  }
-);
-
-/** 获取可供查询历史数据的设备列表 */
-async function getDeviceList() {
-  // if (props.deviceType.split('_')[1] && props.deviceType.split('_')[1] === 'history') return;
-  let result;
-  let response;
-  if (props.onlyBounedDevices) {
-    response = await getDeviceListApi({
-      systemID: props.sysId,
-      devicetype: 'sys',
-    }).then(({ msgTxt }) => {
-      return { msgTxt: msgTxt.filter((e) => e.type === props.deviceType) };
-    });
-  } else if (props.sysId) {
-    response = await getDeviceListApi({
-      sysId: props.sysId,
-      devicetype: props.deviceType.startsWith('vehicle') ? 'location_normal' : props.deviceType,
-      pageSize: 10000,
-    });
-  } else if (props.deviceListApi) {
-    response = await props.deviceListApi();
-  } else {
-    response = await getDeviceListApi({ devicetype: props.deviceType, pageSize: 10000 });
-  }
-
-  // 处理不同格式的数据
-  if (response['records'] && response['records'].length > 0) {
-    result = response['records'];
-  } else if (response['msgTxt'] && response['msgTxt'][0] && response['msgTxt'][0]['datalist']) {
-    result = response['msgTxt'][0]['datalist'];
-  }
-  if (response['msgTxt'] && response['msgTxt'][0]) {
-    deviceTypeName.value = response['msgTxt'][0]['typeName'];
-    deviceType.value = response['msgTxt'][0]['type'];
-  }
-
-  if (result) {
-    deviceOptions.value = [];
-    deviceOptions.value = result.map((item, index) => {
-      return {
-        label: item['strinstallpos'],
-        value: item['id'] || item['deviceID'],
-        strtype: item['strtype'] || item['deviceType'],
-        strinstallpos: item['strinstallpos'],
-        devicekind: item['devicekind'],
-        stationtype: item['stationtype'],
-        readData: item['readData'],
-      };
-    });
-
-    stationType.value = deviceOptions.value[0]['stationtype'];
-    if (props.deviceType.startsWith('vehicle')) {
-      historyType.value = 'vehicle';
-    } else {
-      historyType.value = deviceOptions.value[0]['strtype'] || deviceOptions.value[0]['devicekind'];
-    }
-  }
-  if (VENT_PARAM.historyIsMultiple) {
-    await getForm().setFieldsValue({
-      gdeviceids: [props.deviceId ? props.deviceId : deviceOptions.value[0] ? deviceOptions.value[0]['value'] : ''],
-    });
-    await getForm().updateSchema({
-      field: 'gdeviceids',
-      componentProps: {
-        mode: 'multiple',
-        maxTagCount: 'responsive',
-      },
-    });
-  } else {
-    await getForm().setFieldsValue({
-      gdeviceids: props.deviceId ? props.deviceId : deviceOptions.value[0] ? deviceOptions.value[0]['value'] : '',
-    });
-    await getForm().updateSchema({
-      field: 'gdeviceids',
-    });
-  }
-}
-
-function resetFormParam() {
-  const formData = getForm().getFieldsValue();
-  const pagination = getPaginationRef();
-  formData['pageNo'] = pagination['current'];
-  formData['pageSize'] = pagination['pageSize'];
-  formData['column'] = 'createTime';
-  const params = {
-    pageNo: pagination['current'],
-    pageSize: pagination['pageSize'],
-    column: pagination['createTime'],
-    ttime_begin: formData['ttime_begin'],
-    ttime_end: formData['ttime_end'],
-    deviceId: formData['gdeviceids'],
-  };
-  return params;
-}
-
-async function getDataSource() {
-  dataSource.value = [];
-  setLoading(true);
-  const params = await resetFormParam();
-  const result = await getHistoryList(params);
-  setPagination({ total: Math.abs(result['datalist']['total']) || 0 });
-  if (result['datalist']['records'].length > 0) {
-    dataSource.value = result['datalist']['records'].map((item: any) => {
-      return Object.assign(item, item['readData']);
-    });
-  } else {
-    dataSource.value = [];
-  }
-  setLoading(false);
-}
-
-// 列表页面公共参数、方法
-const { tableContext, onExportXls, onExportXlsPost } = useListPage({
-  tableProps: {
-    // api: list,
-    columns: props.columnsType ? columns : (props.columns as any[]),
-    canResize: true,
-    showTableSetting: false,
-    showActionColumn: false,
-    bordered: false,
-    size: 'small',
-    showIndexColumn: true,
-    tableLayout: 'auto',
-    formConfig: {
-      labelAlign: 'left',
-      labelWidth: 80,
-      showAdvancedButton: false,
-      showSubmitButton: false,
-      showResetButton: false,
-      baseColProps: {
-        xs: 24,
-        sm: 24,
-        md: 24,
-        lg: 9,
-        xl: 7,
-        xxl: 4,
-      },
-      schemas:
-        props.formSchemas.length > 0
-          ? props.formSchemas
-          : [
-              {
-                field: 'ttime_begin',
-                label: '开始时间',
-                component: 'DatePicker',
-                defaultValue: dayjs().startOf('date'),
-                required: true,
-                componentProps: {
-                  showTime: true,
-                  valueFormat: 'YYYY-MM-DD HH:mm:ss',
-                  getPopupContainer: getAutoScrollContainer,
-                },
-                colProps: {
-                  span: 5,
-                },
-              },
-              {
-                field: 'ttime_end',
-                label: '结束时间',
-                component: 'DatePicker',
-                defaultValue: dayjs(),
-                required: true,
-                componentProps: {
-                  showTime: true,
-                  valueFormat: 'YYYY-MM-DD HH:mm:ss',
-                  getPopupContainer: getAutoScrollContainer,
-                },
-                colProps: {
-                  span: 5,
-                },
-              },
-              {
-                label: '查询设备',
-                field: 'gdeviceids',
-                component: 'Select',
-                required: true,
-                componentProps: {
-                  showSearch: true,
-                  filterOption: (input: string, option: any) => {
-                    return option.label.toLowerCase().indexOf(input.toLowerCase()) >= 0;
-                  },
-                  options: deviceOptions,
-                  onChange: (e, option) => {
-                    if (option && (option['strinstallpos'] || option['strtype'] || option['devicekind'])) {
-                      historyType.value = option['strtype'] || option['devicekind'];
-                    }
-                    if (option['strtype']) {
-                      deviceTypeStr.value = option['strtype'];
-                    }
-                    stationType.value = option['stationtype'];
-                    nextTick(() => {
-                      getDataSource();
-                    });
-                  },
-                },
-                colProps: {
-                  span: 6,
-                },
-              },
-            ],
-      // fieldMapToTime: [['tickectDate', ['ttime_begin', 'ttime_end'], '']],
-    },
-    // fetchSetting: {
-    //   listField: 'datalist',
-    //   totalField: 'datalist.total',
-    // },
-    pagination: {
-      current: 1,
-      pageSize: 20,
-      showQuickJumper: false,
-      showSizeChanger: false,
-    },
-    beforeFetch() {
-      const newParams = { ...resetFormParam() };
-      return newParams;
-    },
-  },
-});
-//注册table数据
-const [registerTable, { reload, setLoading, getForm, setColumns, getPaginationRef, setPagination }] = tableContext;
-watchEffect(() => {
-  if (historyTable.value && dataSource) {
-    const data = dataSource.value || [];
-    emit('change', data);
-  }
-});
-
-onMounted(async () => {
-  await getDeviceList();
-  if (deviceOptions.value[0]) {
-    nextTick(async () => {
-      await getDataSource();
-    });
-  }
-
-  watch([() => getPaginationRef()['current'], () => getPaginationRef()['pageSize']], async () => {
-    if (deviceOptions.value[0]) {
-      if (deviceOptions.value[0]) {
-        await getDataSource();
-      }
-    }
-  });
-});
-defineExpose({ setLoading });
-</script>
-
-<style scoped lang="less">
-@import '/@/design/theme.less';
-
-:deep(.@{ventSpace}-table-body) {
-  height: auto !important;
-}
-:deep(.zxm-picker) {
-  height: 30px !important;
-}
-.history-table {
-  width: 100%;
-  :deep(.jeecg-basic-table-form-container) {
-    .@{ventSpace}-form {
-      padding: 0 !important;
-      border: none !important;
-      margin-bottom: 0 !important;
-      .@{ventSpace}-picker,
-      .@{ventSpace}-select-selector {
-        width: 100% !important;
-        height: 100%;
-        background: #00000017;
-        border: 1px solid #b7b7b7;
-        input,
-        .@{ventSpace}-select-selection-item,
-        .@{ventSpace}-picker-suffix {
-          color: #fff;
-        }
-        .@{ventSpace}-select-selection-placeholder {
-          color: #ffffffaa;
-        }
-      }
-    }
-    .@{ventSpace}-table-title {
-      min-height: 0 !important;
-    }
-  }
-  .pagination-box {
-    display: flex;
-    justify-content: flex-end;
-    align-items: center;
-    .page-num {
-      border: 1px solid #0090d8;
-      padding: 4px 8px;
-      margin-right: 5px;
-      color: #0090d8;
-    }
-    .btn {
-      margin-right: 10px;
-    }
-  }
-}
-
-.history-chart {
-  background-color: #0090d822;
-  margin: 0 10px;
-}
-</style>

+ 0 - 289
src/views/vent/dataCenter/deviceCenter/history/HistoryTableFan.vue

@@ -1,289 +0,0 @@
-<template>
-  <div class="history-table">
-    <BasicTable ref="historyTable" @register="register" :data-source="data" :scroll="scroll" @change="search">
-      <template #bodyCell="{ column, record }">
-        <a-tag v-if="column.dataIndex === 'warnFlag'" :color="record.warnFlag == '0' ? 'green' : 'red'">
-          {{ record.warnFlag == '0' ? '正常' : '报警' }}
-        </a-tag>
-        <a-tag v-if="column.dataIndex === 'netStatus'" :color="record.netStatus == '0' ? '#f00' : 'green'">
-          {{ record.netStatus == '0' ? '断开' : '连接' }}
-        </a-tag>
-      </template>
-      <template #form-submitBefore>
-        <a-button type="primary" preIcon="ant-design:search-outlined" @click="search">查询</a-button>
-      </template>
-    </BasicTable>
-  </div>
-</template>
-
-<script lang="ts" setup>
-import { computed, onMounted, ref, shallowRef } from 'vue';
-import { BasicColumn, PaginationProps, BasicTable } from '/@/components/Table';
-import { getTableHeaderColumns } from '/@/hooks/web/useWebColumns';
-import { getDefaultSchemas } from './history.data';
-import { getDeviceList, getHistoryList } from './history.api';
-import { useListPage } from '/@/hooks/system/useListPage';
-import { initDictOptions } from '/@/utils/dict';
-
-const props = withDefaults(
-  defineProps<{
-    /** 表格项配置,默认由deviceCode获取且联动dictCode,可以覆写,覆写后将不支持联动,参考BaiscTable */
-    // columns?: BasicColumn[];
-    /** 表格操作项配置,默认为空,可以覆写 */
-    // actionColumns?: BasicColumn;
-    /** 查询表单项配置,默认联动dictCode,可以覆写,覆写后将不支持联动,提供formProps时此项无效,参考BaiscTable */
-    // schemas?: FormSchema[];
-    /** 表格分页配置,可以覆写,参考BaiscTable */
-    pagination?: PaginationProps;
-    /** 设备编码,该编码用于请求设备信息,示例:forcFan */
-    deviceCode: string;
-    /** 字典编码,该编码用于从字典配置中读出设备项,示例:forcFan_dict */
-    dictCode: string;
-    /** 字段编码,该编码用于从设备字段配置中读取默认表头信息,示例:forcFan_history */
-    columnsCode: string;
-
-    scroll: { x: number | true; y: number };
-    /** 表格配置,参考BaiscTable,该值会与默认的配置进行浅合并,这里提供的任何配置都是优先的 */
-    // tableProps?: BasicTableProps;
-    /** 查询表单配置,参考BaiscTable */
-    // formProps?: FormProps;
-  }>(),
-  {
-    deviceCode: '',
-    dictCode: '',
-    pagination: (): PaginationProps => ({
-      current: 1,
-      pageSize: 20,
-      showQuickJumper: false,
-      showSizeChanger: false,
-    }),
-  }
-);
-
-// 未经过处理的原始表头,即项目配置的表头
-let originColumns: BasicColumn[] = [];
-// 表格数据
-const data = shallowRef([]);
-
-const { tableContext } = useListPage({
-  tableProps: {
-    columns: [
-      {
-        align: 'center',
-        dataIndex: 'strinstallpos',
-        defaultHidden: false,
-        title: '安装位置',
-        width: 80,
-      },
-    ],
-    formConfig: {
-      labelAlign: 'left',
-      labelWidth: 80,
-      showAdvancedButton: false,
-      showSubmitButton: false,
-      showResetButton: false,
-      actionColOptions: {
-        xxl: 4,
-      },
-    },
-    canResize: true,
-    showTableSetting: false,
-    showActionColumn: false,
-    bordered: false,
-    size: 'small',
-    showIndexColumn: true,
-    tableLayout: 'auto',
-    scroll: computed(() => {
-      return { ...props.scroll, y: props.scroll.y - 100 };
-    }),
-    pagination: props.pagination,
-  },
-});
-const [register, { getForm, setLoading, getPaginationRef, setPagination, setColumns }] = tableContext;
-
-// 已选中的设备信息
-const deviceInfo = ref<Record<string, unknown>>({});
-// 设备下拉框选项
-const deviceOptions = ref<Record<string, unknown>[]>([]);
-// 子设备下拉框选项
-const dictOptions = ref<Record<string, unknown>[]>([]);
-
-/**
- * 获取设备信息列表、子设备字典,初始化设备可选项、子设备可选项并选中首个设备
- */
-async function fetchDevice() {
-  const results = await getDeviceList({ devicetype: props.deviceCode, pageSize: 10000 });
-  const dicts = await initDictOptions(props.dictCode);
-
-  const options = results.map((item) => {
-    return {
-      label: item.strinstallpos,
-      value: item.id || item.deviceID,
-      deviceType: item.strtype || item.deviceType,
-      devicekind: item.devicekind,
-      stationtype: item.stationtype,
-    };
-  });
-  deviceOptions.value = options;
-  dictOptions.value = dicts;
-  onDeviceChangeCallback(null, options[0]);
-}
-
-/**
- * 选择任意设备后的回调,根据设备信息刷新表格、表头及其数据
- */
-function onDeviceChangeCallback(__, option) {
-  // 生成所有需要查询的表头编码,例如 forcFan_auto 对应 forcFan_auto_history、forcFan_history 这两个
-  const codes: string[] = [];
-  deviceInfo.value = option;
-  if (deviceInfo.value && deviceInfo.value.deviceType) {
-    const arr = (deviceInfo.value.deviceType as string).split('_');
-    while (arr.length) {
-      codes.push(arr.join('_').concat('_history'));
-      arr.pop();
-    }
-  }
-  // 如此,例如deviceType为forcFan_auto, 则查询表头按 forcFan_auto_history、forcFan_history、columnsCode 为顺序
-  initTable(codes.concat(props.columnsCode));
-  search();
-}
-
-/**
- * 初始化表格,该方法将根据参数设定新的表头、表单。
- *
- * 需要有设备信息之后再初始化表格。
- *
- * @param deviceCodes 获取表头所用的编码,从左到右依次尝试,直到找到第一个有表头信息的为止
- */
-function initTable(deviceCodes: string[]) {
-  const defaultSchemas = getDefaultSchemas(dictOptions.value, deviceOptions.value, onDeviceChangeCallback);
-  for (const code of deviceCodes) {
-    const cols = getTableHeaderColumns(code);
-    if (cols.length) {
-      originColumns = cols;
-      break;
-    }
-  }
-  getForm().setProps({
-    schemas: defaultSchemas,
-  });
-}
-
-/**
- * 搜索,核心方法
- *
- * 该方法获取表单、处理表单数据后尝试获取数据并设置表头
- */
-async function search() {
-  if (!deviceInfo.value) return;
-
-  const form = getForm();
-  await form.validate();
-  const formData = form.getFieldsValue();
-  const pagination = getPaginationRef() as PaginationProps;
-  const params = {
-    ...formData,
-    pageNo: pagination.current,
-    pageSize: pagination.pageSize,
-  };
-  setLoading(true);
-  const result = await getHistoryList(params);
-  if (result) {
-    setLoading(false);
-  }
-  data.value = result.datalist['records'].map((item: any) => {
-    setPagination({ total: Math.abs(result['datalist']['total']) || 0 });
-    return Object.assign(item, item['readData']);
-  });
-
-  updateColumns(formData.deviceNum);
-}
-
-/**
- * 更新表头,表头默认情况下需要和子设备联动
- * @param prefix 子设备的值,即为表头取数据时字段的前缀
- */
-function updateColumns(prefix?: string) {
-  if (!prefix) return setColumns(originColumns);
-  // 如果有子设备信息,筛选符合规范的表头
-  const cols = originColumns.map((col) => {
-    const dataIndex = col.dataIndex as string;
-    // 获取到子设备编码的前缀及编码,正则例子:forcFan1 => [forcFan1, forcFan, 1]
-    const [_, pfx] = prefix.match(/([A-Za-z]+)([0-9]+)/) || [];
-    // 同时,如若已经在前缀后配置了编号则不要更改
-    const reg = new RegExp(`${pfx}[0-9]`);
-    if (dataIndex.search(reg) !== -1) return col;
-    if (dataIndex.includes(pfx)) {
-      return {
-        ...col,
-        dataIndex: dataIndex.replace(pfx, prefix),
-      };
-    }
-    // 默认直接放行
-    return col;
-  });
-  setColumns(cols);
-}
-
-onMounted(async () => {
-  await fetchDevice();
-  onDeviceChangeCallback(null, deviceInfo.value);
-});
-</script>
-
-<style scoped lang="less">
-@import '/@/design/theme.less';
-
-:deep(.@{ventSpace}-table-body) {
-  height: auto !important;
-}
-:deep(.zxm-picker) {
-  height: 30px !important;
-}
-:deep(.zxm-table) {
-  .zxm-table-title {
-    display: none !important;
-  }
-}
-.history-table {
-  width: 100%;
-  :deep(.jeecg-basic-table-form-container) {
-    .@{ventSpace}-form {
-      padding: 0 !important;
-      border: none !important;
-      margin-bottom: 0 !important;
-      .@{ventSpace}-picker,
-      .@{ventSpace}-select-selector {
-        width: 100% !important;
-        background: #00000017;
-        border: 1px solid #b7b7b7;
-        input,
-        .@{ventSpace}-select-selection-item,
-        .@{ventSpace}-picker-suffix {
-          color: #fff;
-        }
-        .@{ventSpace}-select-selection-placeholder {
-          color: #ffffffaa;
-        }
-      }
-    }
-    .@{ventSpace}-table-title {
-      min-height: 0 !important;
-    }
-  }
-  .pagination-box {
-    display: flex;
-    justify-content: flex-end;
-    align-items: center;
-    .page-num {
-      border: 1px solid #0090d8;
-      padding: 4px 8px;
-      margin-right: 5px;
-      color: #0090d8;
-    }
-    .btn {
-      margin-right: 10px;
-    }
-  }
-}
-</style>

+ 0 - 78
src/views/vent/dataCenter/deviceCenter/history/history.api.ts

@@ -1,78 +0,0 @@
-import { PaginationProps } from '/@/components/Table';
-import { defHttp } from '/@/utils/http/axios';
-
-enum Api {
-  getHistory = '/safety/ventanalyMonitorData/getRealHistory',
-  getDeviceList = '/monitor/device',
-}
-/**
- * 获取列表的接口
- * @param deviceCode 设备编码,作为 strtype 传参
- * @param deviceInfo 设备信息,根据分站判别所用的 api
- * @param formData 表单数据
- * @param pagination 分页数据
- * @returns
- */
-
-const intervalMap = new Map([
-  ['1', '1s'],
-  ['2', '5s'],
-  ['3', '10s'],
-  ['4', '30s'],
-  ['5', '1m'],
-  ['6', '10m'],
-  ['7', '30m'],
-  ['8', '1h'],
-]);
-
-/**
- * 根据所给设备的分站信息、设备编码等信息生成历史数据/数据导出api所需的请求参数
- * @param deviceCode
- * @param deviceInfo
- * @param formData
- * @param pagination
- * @returns
- */
-export const adaptFormData = (deviceCode: string, deviceInfo: any, formData: any, pagination: PaginationProps) => {
-  if (deviceInfo.stationtype === 'redis') {
-    return {
-      pageNum: pagination.current,
-      pageSize: pagination.pageSize,
-      column: 'createTime',
-      startTime: formData.ttime_begin,
-      endTime: formData.ttime_end,
-      deviceId: formData.gdeviceids,
-      strtype: deviceCode,
-      isEmployee: deviceCode.startsWith('vehicle') ? false : true,
-    };
-  } else {
-    return {
-      pageNo: pagination.current,
-      pageSize: pagination.pageSize,
-      column: 'createTime',
-      strtype: deviceCode,
-      ...formData,
-    };
-  }
-};
-
-// 获取历史数据
-export const getHistoryList = (params) =>
-  defHttp.get({
-    url: Api.getHistory,
-    params,
-  });
-/**
- * 根据设备编码获取设备列表
- * @param params
- */
-export const getDeviceList = (params) =>
-  defHttp.post({ url: Api.getDeviceList, params }).then((r) => {
-    if (r.records && r.records.length) {
-      return r.records;
-    }
-    if (r.msgTxt && r.msgTxt.length) {
-      return r.msgTxt[0].datalist;
-    }
-    return [];
-  });

+ 0 - 86
src/views/vent/dataCenter/deviceCenter/history/history.data.ts

@@ -1,86 +0,0 @@
-import dayjs from 'dayjs';
-import { FormSchema } from '/@/components/Table';
-import { getAutoScrollContainer } from '/@/utils/common/compUtils';
-import { get } from 'lodash-es';
-
-/**
- * 默认的查询表单项props
- *
- * @param dictOptions 用于初始化子设备下拉框
- * @param deviceOptions 用于初始化设备下拉框
- * @param onDeviceChange 设备下拉框选择内容后的回调函数
- * @returns
- */
-export const getDefaultSchemas: (dictOptions: any[], deviceOptions: any[], onDeviceChange?: Function) => FormSchema[] = (
-  dictOptions: any[],
-  deviceOptions: any[],
-  onDeviceChange?: Function
-) => {
-  const device = get(deviceOptions, '[0].value', '');
-  const isRedis = get(deviceOptions, '[0].stationtype', 'redis') === 'redis';
-  const dictcode = get(dictOptions, '[0].value', '');
-  return [
-    {
-      field: 'ttime_begin',
-      label: '开始时间',
-      component: 'DatePicker',
-      defaultValue: dayjs().startOf('date'),
-      required: true,
-      componentProps: {
-        showTime: true,
-        valueFormat: 'YYYY-MM-DD HH:mm:ss',
-        getPopupContainer: getAutoScrollContainer,
-      },
-      colProps: {
-        span: 5,
-      },
-    },
-    {
-      field: 'ttime_end',
-      label: '结束时间',
-      component: 'DatePicker',
-      defaultValue: dayjs(),
-      required: true,
-      componentProps: {
-        showTime: true,
-        valueFormat: 'YYYY-MM-DD HH:mm:ss',
-        getPopupContainer: getAutoScrollContainer,
-      },
-      colProps: {
-        span: 5,
-      },
-    },
-    {
-      label: '查询设备',
-      field: 'deviceId',
-      component: 'Select',
-      required: true,
-      defaultValue: VENT_PARAM.historyIsMultiple ? [device] : device,
-      componentProps: {
-        options: deviceOptions,
-        mode: VENT_PARAM.historyIsMultiple ? 'multiple' : undefined,
-        maxTagCount: 'responsive',
-        onChange: onDeviceChange,
-      },
-      colProps: {
-        span: 5,
-      },
-    },
-    {
-      label: '子设备',
-      field: 'deviceNum',
-      component: 'Select',
-      required: isRedis ? false : Boolean(dictOptions.length),
-      show: isRedis ? false : Boolean(dictOptions.length),
-      defaultValue: isRedis ? '' : dictcode,
-      componentProps: {
-        options: dictOptions,
-        // onChange: (e, option) => {
-        // },
-      },
-      colProps: {
-        span: 4,
-      },
-    },
-  ];
-};

+ 0 - 626
src/views/vent/dataCenter/deviceCenter/index.vue

@@ -1,626 +0,0 @@
-<template>
-  <div class="safetyList">
-    <customHeader>设备监测</customHeader>
-    <div class="content">
-      <a-tabs class="tab-box" v-model:activeKey="activeKey" @change="onChangeTab">
-        <a-tab-pane tab="设备监测" key="device" />
-        <a-tab-pane tab="历史数据" key="history" />
-      </a-tabs>
-      <div class="box-content">
-        <!-- 分站监测 -->
-        <div class="now-content">
-          <div class="left-box">
-            <div class="device-select">
-              <div class="device-select-box">
-                <a-tree
-                  v-if="treeData && treeData.length > 0"
-                  :show-line="true"
-                  :tree-data="treeData"
-                  v-model:selectedKeys="selectedKeys"
-                  v-model:expandedKeys="expandedKeys"
-                  :defaultExpandAll="true"
-                  @select="onSelect"
-                >
-                </a-tree>
-              </div>
-            </div>
-          </div>
-          <div class="right-box" v-if="activeKey == 'device'">
-            <div class="right-title">实时监测:</div>
-            <a-table
-              size="small"
-              :scroll="{ y: 650 }"
-              :columns="outerColumns"
-              :data-source="deviceList"
-              :pagination="false"
-              :row-key="(record) => record.id"
-              :expand-row-by-click="true"
-              :expanded-row-keys="expandedRowKeys"
-              @expand="onExpand"
-              :loading="loading"
-            >
-              <!-- 自定义展开图标 -->
-              <template #expandIcon="{ expanded, onExpand, record }">
-                <a-button
-                  type="text"
-                  size="small"
-                  @click="
-                    (e) => {
-                      e.stopPropagation();
-                      toggleExpand(record.id);
-                    }
-                  "
-                >
-                  <DownCircleTwoTone v-if="expandedRowKeys.includes(record.id)" />
-                  <RightCircleTwoTone v-else />
-                </a-button>
-              </template>
-              <!-- 嵌套表格 -->
-              <template #expandedRowRender="{ record }">
-                <a-table
-                  size="small"
-                  :columns="innerColumns"
-                  :data-source="monitorList[record.id] || []"
-                  :pagination="false"
-                  :loading="loadingMap[record.id]"
-                  bordered
-                  :scroll="{ y: 410 }"
-                >
-                  <template #bodyCell="{ column, record: innerRecord }">
-                    <template v-if="column.dataIndex === 'value'">
-                      <span>
-                        {{ innerRecord.value }}
-                      </span>
-                    </template>
-                  </template>
-                </a-table>
-              </template>
-              <template #bodyCell="{ column, record }">
-                <template v-if="column.key === 'netStatus'">
-                  <span
-                    :style="{
-                      color: record.netStatus ? '#52c41a' : '#ddd',
-                      fontWeight: '500',
-                    }"
-                  >
-                    {{ record.netStatus ? '在线' : '断开' }}
-                  </span>
-                </template>
-                <template v-else>
-                  {{ record[column.dataIndex] }}
-                </template>
-              </template>
-            </a-table>
-          </div>
-          <div class="right-box" v-else-if="activeKey == 'history'">
-            <template v-if="deviceType.startsWith('fanmain')">
-              <HistoryTableFan class="w-100% h-100%" :device-code="`${deviceType}`" :scroll="scroll" dict-code="fan_dict" />
-            </template>
-            <template v-else-if="deviceType.startsWith('fanlocal')">
-              <HistoryTableFan class="w-100% h-100%" :device-code="`${deviceType}`" :scroll="scroll" dict-code="fanlocal_dict" />s
-            </template>
-            <template v-else>
-              <HistoryTable
-                ref="historyTable"
-                :sysId="systemID"
-                :columns-type="`${deviceType}`"
-                :device-type="deviceType"
-                designScope="device-history"
-                :scroll="scroll"
-              />
-            </template>
-          </div>
-        </div>
-      </div>
-    </div>
-  </div>
-</template>
-
-<script setup lang="ts">
-import { ref, nextTick, reactive, onMounted, onUnmounted, watch, shallowRef, computed } from 'vue';
-import { usePermission } from '/@/hooks/web/usePermission';
-import customHeader from '/@/components/vent/customHeader.vue';
-import { message, TreeProps } from 'ant-design-vue';
-import { getDeviceTypeList, getDeviceListByType, getDevMonitorListById } from './device.api';
-import HistoryTableFan from './history/HistoryTableFan.vue';
-import HistoryTable from './history/HistoryTable.vue';
-import { RightCircleTwoTone, DownCircleTwoTone } from '@ant-design/icons-vue';
-import { useRoute } from 'vue-router';
-import { useListPage } from '/@/hooks/system/useListPage';
-import { BasicTable } from '/@/components/Table';
-import { FormSchema } from '/@/components/Form/index';
-
-let route = useRoute();
-const { hasPermission } = usePermission();
-let activeKey = ref('device');
-const treeData = ref<TreeProps['treeData']>([]);
-const selectedKeys = ref<string[]>([]);
-const expandedKeys = ref<string[]>([]);
-const AllNodeKeys = ref<string[]>([]);
-const deviceType = ref(''); // 监测设备类型
-const systemType = ref('');
-const systemID = ref(''); // 系统监测时,系统id
-const dataSource = shallowRef([]); // 实时监测数据
-let startMonitorTimer = 0;
-const monitorTable = ref();
-const isRefresh = ref(true);
-const treeNodeTitle = ref(''); // 选中的树形标题
-const deviceList = ref<any[]>([]); // 设备列表
-const monitorList = ref<Record<string, any[]>>({}); // 监测数据列表
-const loading = ref(false);
-// 当前展开的行key数组
-const expandedRowKeys = ref([]);
-const scroll = reactive({
-  y: 680,
-});
-// 加载状态映射
-const loadingMap = reactive({});
-// 切换tab页面
-async function onChangeTab(tab) {
-  activeKey.value = tab;
-  if (activeKey.value == 'device') {
-    // 获取监测接口
-  } else if (activeKey.value == 'history') {
-    // 获取历史数据
-  }
-}
-//树形菜单选择事件
-const onSelect: TreeProps['onSelect'] = (keys, e) => {
-  deviceType.value = '';
-  systemID.value = '';
-  deviceList.value = [];
-  const currentNode = e.node;
-  const parentNode = currentNode.parent?.node;
-  let newDeviceType = '';
-  if (parentNode && parentNode.type.toString().startsWith('sys')) {
-    systemType.value = parentNode.type;
-    newDeviceType = parentNode.type;
-    systemID.value = currentNode.type;
-  } else {
-    systemType.value = currentNode.type;
-    newDeviceType = currentNode.type;
-  }
-  deviceType.value = newDeviceType;
-  getDeviceList(newDeviceType);
-};
-// 获取所有节点key的函数
-const getAllNodeKeys = (nodes, type) => {
-  const keys = [];
-  const traverse = (nodeList) => {
-    nodeList.forEach((node) => {
-      if (node.type === type) {
-        selectedKeys.value.push(node.key);
-      }
-      keys.push(node.key);
-      if (node.children && node.children.length > 0) {
-        traverse(node.children);
-      }
-    });
-  };
-  traverse(nodes);
-  return keys;
-};
-
-// 获取树形菜单数据
-async function getDeviceType(type?) {
-  const result = await getDeviceTypeList({});
-
-  if (result.length > 0) {
-    const dataSource = [];
-    let key = '0';
-    const getData = (resultList, dataSourceList, keyVal) => {
-      resultList.forEach((item, index) => {
-        const children = item.children ? getData(item.children, [], `${keyVal}-${index}`) : [];
-        dataSourceList.push({
-          children: children,
-          title: item.itemText,
-          key: `${keyVal}-${index}`,
-          type: item.itemValue,
-          parentKey: `${keyVal}`,
-        });
-      });
-      return dataSourceList;
-    };
-
-    treeData.value = getData(result, dataSource, key);
-    // 数据就绪后设置展开key数组
-    expandedKeys.value = getAllNodeKeys(treeData.value, type);
-  }
-}
-// 获取当前选择节点
-// 根据选择设备获取设备列表
-async function getDeviceList(deviceTypeVal?: any) {
-  // 1. 如果没有设备类型值,停止定时器并返回(不再重复请求)
-  if (!deviceTypeVal) {
-    if (timer) {
-      clearInterval(timer);
-      timer = undefined;
-    }
-    return;
-  }
-  if (timer) {
-    clearInterval(timer);
-    timer = undefined;
-  }
-  loading.value = true;
-  const fetchDeviceData = async () => {
-    const params: any = {
-      devKind: deviceTypeVal,
-      pageNo: 1,
-      pageSize: 2000,
-    };
-    try {
-      const result = await getDeviceListByType(params);
-      loading.value = false;
-      deviceList.value = result.records; // 更新设备列表
-    } catch (error) {
-      console.error('定时请求设备列表失败:', error);
-    }
-  };
-  await fetchDeviceData();
-  timer = setInterval(fetchDeviceData, 3000);
-}
-
-// 外层表格列配置
-const outerColumns = [
-  {
-    title: '设备ID',
-    dataIndex: 'id',
-    key: 'id',
-    align: 'center',
-  },
-  {
-    title: '安装位置',
-    dataIndex: 'strinstallpos',
-    key: 'strinstallpos',
-    align: 'center',
-  },
-  {
-    title: '设备类型',
-    dataIndex: 'devicekind_dictText',
-    key: 'devicekind_dictText',
-    align: 'center',
-  },
-  {
-    title: '状态',
-    dataIndex: 'netStatus',
-    key: 'netStatus',
-    align: 'center',
-  },
-];
-
-// 内层表格列配置
-const innerColumns = [
-  {
-    title: '地址',
-    dataIndex: 'plcAddr',
-    key: 'plcAddr',
-    align: 'center',
-  },
-  {
-    title: '数据code',
-    dataIndex: 'valueCode',
-    align: 'center',
-    key: 'valueCode',
-  },
-  {
-    title: '数据名称',
-    dataIndex: 'valueName',
-    align: 'center',
-    key: 'valueName',
-  },
-  {
-    title: '数据值',
-    dataIndex: 'value',
-    align: 'center',
-    key: 'value',
-  },
-  {
-    title: '时间',
-    dataIndex: 'time',
-    align: 'center',
-    key: 'time',
-  },
-];
-
-// 切换展开状态
-const toggleExpand = (deviceId) => {
-  const index = expandedRowKeys.value.indexOf(deviceId);
-
-  if (index > -1) {
-    // 如果已经展开,则关闭
-    expandedRowKeys.value.splice(index, 1);
-    if (timer) {
-      clearInterval(timer);
-      timer = undefined;
-    }
-  } else {
-    // 如果未展开,则打开
-    expandedRowKeys.value.push(deviceId);
-    loadMonitoringData(deviceId);
-  }
-};
-// 加载监测数据
-let timer: null | NodeJS.Timeout = null;
-async function loadMonitoringData(deviceId: string) {
-  // 先清除之前的定时器
-  if (timer) {
-    clearInterval(timer);
-    timer = null;
-  }
-  // 定时器会在1秒后开始,所以先手动加载一次
-  refreshData(deviceId);
-  // 设置新的定时器
-  timer = setInterval(() => {
-    refreshData(deviceId);
-  }, 1000);
-}
-async function refreshData(deviceId: string) {
-  // 这里实现具体的请求逻辑
-  const device = deviceList.value.find((d) => d.id === deviceId);
-  const result = await getDevMonitorListById({ devId: deviceId.toString() });
-  monitorList.value[deviceId] = Object.values(result.readData);
-  console.log(monitorList.value[deviceId], '123123');
-}
-
-onMounted(() => {
-  const path = route.query.deviceType as string;
-  deviceType.value = path;
-  if (path) {
-    getDeviceType(path);
-    getDeviceList(path);
-  } else {
-    getDeviceType();
-  }
-});
-onUnmounted(() => {
-  if (timer) {
-    clearInterval(timer);
-    timer = undefined;
-  }
-});
-// 监听分页变化
-</script>
-
-<style lang="less" scoped>
-.safetyList {
-  width: calc(100% - 20px);
-  height: calc(100% - 80px);
-  position: relative;
-  margin: 70px 10px 10px 10px;
-
-  .content {
-    position: relative;
-    width: 100%;
-    height: 100%;
-
-    .tab-box {
-      display: flex;
-      color: #fff;
-      position: relative;
-      background: linear-gradient(#001325, #012e4f);
-
-      :deep(.zxm-tabs-nav) {
-        margin: 0 !important;
-
-        .zxm-tabs-tab {
-          width: 180px;
-          height: 45px;
-          background: url('/@/assets/images/top-btn.png') center no-repeat;
-          background-size: cover;
-          display: flex;
-          justify-content: center;
-          font-size: 16px;
-        }
-
-        .zxm-tabs-tab-active {
-          width: 180px;
-          position: relative;
-          background: url('/@/assets/images/top-btn-select.png') center no-repeat;
-          background-size: cover;
-
-          .zxm-tabs-tab-btn {
-            color: #fff !important;
-          }
-        }
-
-        .zxm-tabs-ink-bar {
-          width: 0 !important;
-        }
-
-        .zxm-tabs-tab + .zxm-tabs-tab {
-          margin: 0 !important;
-        }
-      }
-    }
-
-    .box-content {
-      height: calc(100% - 50px);
-      padding-top: 10px;
-      box-sizing: border-box;
-
-      .now-content {
-        position: relative;
-        width: 100%;
-        height: 100%;
-        display: flex;
-        justify-content: space-between;
-        align-items: center;
-
-        .left-box {
-          width: 20%;
-          height: 100%;
-          margin-right: 15px;
-          padding: 10px;
-          box-sizing: border-box;
-          background: url('/@/assets/images/fire/bj1.png') no-repeat center;
-          background-size: 100% 100%;
-          border: 3px, solid, #0b69b6;
-          border-radius: 5px;
-        }
-
-        .right-box {
-          width: calc(80% - 15px);
-          height: 100%;
-          padding: 10px;
-          box-sizing: border-box;
-          background: url('/@/assets/images/fire/bj1.png') no-repeat center;
-          background-size: 100% 100%;
-          border: 3px, solid, #0b69b6;
-          border-radius: 5px;
-
-          .right-title {
-            display: flex;
-            height: 30px;
-            align-items: center;
-            font-size: 14px;
-            color: #fff;
-            margin-bottom: 10px;
-          }
-        }
-      }
-    }
-  }
-}
-
-.down-btn {
-  line-height: 15px;
-  height: 20px;
-  padding: 0px 17px;
-  font-size: 12px;
-}
-
-.zxm-form {
-  width: 50%;
-  height: 100%;
-  padding-top: 20px !important;
-  box-sizing: border-box;
-}
-
-.zxm-picker,
-.zxm-input {
-  border: 1px solid #3ad8ff77 !important;
-  background-color: #ffffff !important;
-  color: #fff !important;
-}
-
-.card-item.selected {
-  border: 2px solid #3ad8ff77;
-  /* 选中时的边框颜色 */
-}
-
-::v-deep(.zxm-radio-wrapper) {
-  font-size: 12px;
-}
-
-::v-deep(.zxm-input) {
-  font-size: 12px;
-}
-
-::v-deep(.zxm-select:not(.zxm-select-customize-input) .zxm-select-selector) {
-  border: 1px solid #3ad8ff77 !important;
-}
-
-// ::v-deep(.zxm-select-selection-item) {
-//   color: #fff ;
-// }
-
-// ::v-deep(.zxm-form-item-label > label) {
-//   color: #fff !important;
-// }
-/* 值样式 */
-.high-value {
-  color: #f5222d;
-  font-weight: bold;
-}
-.low-value {
-  color: #1890ff;
-  font-weight: bold;
-}
-.normal-value {
-  color: #52c41a;
-}
-
-/* 嵌套表格样式 */
-:deep(.ant-table-expanded-row) > td {
-  background-color: #f9f9f9 !important;
-  padding: 0 !important;
-}
-
-:deep(.ant-table-expanded-row .ant-table) {
-  margin: -10px -8px;
-  background: #f9f9f9;
-}
-
-/* 自定义展开按钮 */
-:deep(.ant-table-row-expand-icon) {
-  margin-right: 8px;
-}
-
-.device-select-box {
-  margin-top: 30px;
-  width: 300px;
-  height: calc(100% - 70px);
-  overflow-y: auto;
-  color: #fff;
-
-  :deep(.zxm-tree) {
-    background: transparent !important;
-    color: #fff !important;
-
-    .zxm-tree-switcher {
-      background: transparent !important;
-    }
-
-    .zxm-tree-node-content-wrapper.zxm-tree-node-selected {
-      background-color: #00b1c8;
-    }
-
-    .zxm-tree-node-content-wrapper:hover {
-      background-color: #00b1c8;
-    }
-    input {
-      height: 0px !important;
-    }
-  }
-
-  &::-webkit-scrollbar-track {
-    -webkit-box-shadow: inset 0 0 5px rgba(0, 0, 0, 0.2);
-    border-radius: 10px;
-    background: #ededed22;
-    height: 100px;
-  }
-
-  &::-webkit-scrollbar-thumb {
-    -webkit-box-shadow: inset 0 0 5px rgba(0, 0, 0, 0.2);
-    background: #4288a444;
-  }
-}
-.device-select {
-  width: 280px !important;
-  height: calc(100% - 70px);
-  background: var(--image-tree-bg) no-repeat;
-  position: fixed;
-  top: 100px;
-  left: 55px;
-  background-size: contain;
-  pointer-events: auto;
-  padding: 20px 10px 30px 10px;
-}
-/* 在线状态 - 绿色 */
-.status-online {
-  color: #36d399; /* 可替换为其他绿色,如 #00C48C */
-  font-weight: 500;
-}
-
-/* 断开状态 - 灰色(可选调整为红色) */
-.status-offline {
-  color: #999;
-  /* 若想断开显示红色:color: #F5222D; */
-}
-</style>
-<style>
-div[aria-hidden='true'] {
-  display: none !important;
-}
-</style>

+ 0 - 71
src/views/vent/dataCenter/infoCenter/components/infoBox.vue

@@ -1,71 +0,0 @@
-<template>
-  <div class="info-box-bg">
-    <div class="box-top">
-      <div class="title">
-        <slot name="title"></slot>
-      </div>
-    </div>
-    <div class="box-center">
-      <div class="box-container">
-        <slot name="container"></slot>
-      </div>
-    </div>
-  </div>
-</template>
-<script lang="ts" setup></script>
-
-<style lang="less" scoped>
-  @font-face {
-    font-family: 'douyuFont';
-    src: url('@/assets/font/douyuFont.otf');
-  }
-  @import '/@/design/theme.less';
-  .info-box-bg {
-    --image-border1: url('/@/assets/images/dataCenter/infoCenter/info-border1.png');
-    --image-border2: url('/@/assets/images/dataCenter/infoCenter/info-border2.png');
-    --image-border3: url('/@/assets/images/dataCenter/infoCenter/info-border3.png');
-    --image-border4: url('/@/assets/images/dataCenter/infoCenter/info-border4.png');
-    --image-title: url('/@/assets/images/dataCenter/infoCenter/info-title.png');
-
-    --container-color: #00213236;
-    --container-image: linear-gradient(#3df6ff00, #3df6ff, #3df6ff00);
-    width: 100%;
-    height: 100%;
-    min-height: 80px;
-    position: relative;
-    background: var(--image-border4) no-repeat;
-    background-size: 100% 100%;
-    overflow: hidden;
-    .box-top {
-      width: 220px;
-      height: 35px;
-
-      .title {
-        width: 100%;
-        height: 35px;
-        display: flex;
-        background-image: var(--image-title);
-        background-size: 100% 100%;
-        justify-content: center;
-        align-items: center;
-        color: #66ffff;
-        font-family: 'douyuFont';
-        padding-top: 5px;
-      }
-    }
-    .box-center {
-      width: calc(100% + 0.5px);
-      height: calc(100% - 50px);
-      position: relative;
-
-      .box-container {
-        width: calc(100% - 2px);
-        height: 100%;
-        min-height: 50px;
-        padding: 5px 25px;
-        color: #fff;
-        overflow-y: scroll;
-      }
-    }
-  }
-</style>

+ 0 - 380
src/views/vent/dataCenter/infoCenter/index.vue

@@ -1,380 +0,0 @@
-<template>
-  <div class="company-home">
-    <customHeader>{{ mainTitle }}</customHeader>
-    <div class="company-content">
-      <div class="content-item item-1">
-        <infoBox class="infoBox1">
-          <template #title> 设备数据量 </template>
-          <template #container>
-            <div class="content-wrapper wrapper-1 grid">
-              <div class="data-item">
-                <div class="item-icon icon1"></div>
-                <div>
-                  <div class="label">接入设备数量</div>
-                  <div class="value">{{ deviceData.deviceCount }} </div>
-                </div>
-              </div>
-              <div class="data-item">
-                <div class="item-icon icon2"></div>
-                <div>
-                  <div class="label">接入点位数量</div>
-                  <div class="value status-normal">{{ deviceData.monitorParamsCount }}</div>
-                </div>
-              </div>
-              <div class="data-item">
-                <div class="item-icon icon3"></div>
-                <div>
-                  <div class="label">数据存储量(GB)</div>
-                  <div class="value status-normal">{{ deviceData.databaseDiskUsage.total_size_gb }}</div>
-                </div>
-              </div>
-              <div class="data-item">
-                <div class="item-icon icon4"></div>
-                <div>
-                  <div class="label">消息总数量(条)</div>
-                  <div class="value status-normal">{{ formatNumber(deviceData.collectTotalNum) }}</div>
-                </div>
-              </div>
-              <div class="data-item">
-                <div class="item-icon icon5"></div>
-                <div>
-                  <div class="label">共享接口数量</div>
-                  <div class="value status-normal">{{ deviceData.summaryShareAPINum }}</div>
-                </div>
-              </div>
-            </div>
-          </template>
-        </infoBox>
-      </div>
-      <div class="content-item item-2 grid">
-        <infoBox class="infoBox2">
-          <template #title> 每日采集数据量 </template>
-          <template #container>
-            <div class="content-wrapper">
-              <CustomChartSJZX :chart-config="dailyNumOption" :chart-data="deviceData" height="260px" width="100%" />
-            </div>
-          </template>
-        </infoBox>
-        <infoBox class="infoBox3">
-          <template #title> 系统数据量排名 </template>
-          <template #container>
-            <div class="content-wrapper">
-              <a-table size="small" :dataSource="deviceData.collectGroupByDevKindList" :columns="sysDataColumn" :pagination="false" />
-            </div>
-          </template>
-        </infoBox>
-      </div>
-      <div class="content-item item-3">
-        <infoBox class="infoBox4">
-          <template #title> 设备接入情况 </template>
-          <template #container>
-            <div class="content-wrapper">
-              <a-table size="small" :dataSource="accessStatusData" :columns="accessStatusColumn" :pagination="pagination" @change="pageChange">
-                <template #action="{ record }">
-                  <div class="option-cont">
-                    <div class="view-icon"></div>
-                    <a class="table-action-link" @click="viewData(record)">查看数据</a>
-                  </div>
-                </template>
-              </a-table>
-            </div>
-          </template>
-        </infoBox>
-      </div>
-    </div>
-  </div>
-</template>
-<script lang="ts" setup>
-  import { ref, onMounted, reactive } from 'vue';
-  import customHeader from '/@/components/vent/customHeader.vue';
-  import infoBox from './components/infoBox.vue';
-  import { sysDataColumn, accessStatusColumn, dailyNumOption } from './infoCenter.data';
-  import CustomChartSJZX from '@/views/vent/home/configurable/components/detail/CustomChart-SJZX.vue';
-  // import CustomChart from '@/views/vent/home/configurable/components/detail/CustomChart.vue';
-  import { getDeviceAll, getHomepageSummaryIndexes } from './infoCenter.api';
-  import { useRouter } from 'vue-router';
-  let mainTitle = ref('智能通风数据中心');
-  let router = useRouter();
-  //分页参数配置
-  const pagination = reactive({
-    current: 1, // 当前页码
-    pageSize: 5, // 每页显示条数
-    total: 0, // 总条目数,后端返回
-    // showTotal: (total, range) => `${range[0]}-${range[1]} 条,总共 ${total} 条`, // 分页右下角显示信息
-  });
-  // 设备接入情况数据
-  const accessStatusData = ref([]);
-  // 数据中心首页设备数据
-  const deviceData = ref({
-    monitorParamsCount: 0,
-    deviceCount: 0,
-    databaseDiskUsage: {
-      total_size_bytes: 0,
-      total_size_mb: 0,
-      total_size_gb: 0,
-    },
-    collectTotalNum: 0,
-    summaryShareAPINum: 0,
-    collectDataByStationList: [
-      {
-        sub_id: '1',
-        strName: '测试分站',
-        total_num: 0,
-      },
-    ],
-    collectDataByDayList: [
-      {
-        day: '2025-10-29',
-        total_count: 0,
-      },
-    ],
-    collectGroupByDevKindList: [
-      {
-        devKind: 'bundletube',
-        devNum: 0,
-        dataCount: 0,
-      },
-    ],
-  });
-  // 查看数据
-  function viewData(record) {
-    console.log(record.devicekind, '设备类型');
-    router.push(`/sjzx/deviceCenter/home?deviceType=${record.devicekind}`);
-  }
-  //分页切换
-  const pageChange = async (val) => {
-    pagination.current = val.current;
-    pagination.pageSize = val.pageSize;
-    const res = await getDeviceAll({
-      pageNo: pagination.current,
-      pageSize: pagination.pageSize,
-    });
-    accessStatusData.value = res.records; // 赋值给响应式变量
-    pagination.total = res.total; // 更新总条数
-  };
-  // 获取设备数据接口
-  const fetchDeviceData = async () => {
-    try {
-      const summaryRes = await getHomepageSummaryIndexes();
-      deviceData.value = summaryRes;
-    } catch (error) {
-      console.error('获取首页汇总指标数据失败:', error);
-    }
-
-    try {
-      const deviceRes = await getDeviceAll({
-        pageNo: pagination.current,
-        pageSize: pagination.pageSize,
-      });
-      accessStatusData.value = deviceRes.records;
-      pagination.total = deviceRes.total;
-    } catch (error) {
-      console.error('获取设备接入情况数据失败:', error);
-    }
-  };
-
-  // 数字千位分隔格式化函数
-  const formatNumber = (num: number | string): string => {
-    // 处理非数字或空值的情况
-    if (!num && num !== 0) return '0';
-    // 转换为数字后再处理,避免字符串类型的数字出现问题
-    const number = typeof num === 'number' ? num : parseFloat(num);
-    // 利用正则表达式实现千位分隔
-    return number.toLocaleString('zh-CN');
-  };
-
-  // 页面挂载时调用接口获取数据
-  onMounted(async () => {
-    await fetchDeviceData();
-  });
-</script>
-<style lang="less" scoped>
-  @font-face {
-    font-family: 'douyuFont';
-    src: url('@/assets/font/douyuFont.otf');
-  }
-
-  .company-home {
-    width: 100%;
-    height: 100%;
-    position: relative;
-
-    :deep(.vent-home-header) {
-      height: 50px;
-      background: url('@/assets/images/vent/home/modal-top.png') no-repeat center;
-      background-size: 100% 100%;
-    }
-
-    .company-content {
-      position: absolute;
-      left: 0;
-      width: 100%;
-      height: calc(100% - 50px);
-      padding: 20px 20px 10px 20px;
-      --image-border1: url('/@/assets/images/dataCenter/infoCenter/info-border1.png');
-      --image-border2: url('/@/assets/images/dataCenter/infoCenter/info-border2.png');
-      --image-border3: url('/@/assets/images/dataCenter/infoCenter/info-border3.png');
-      --image-border4: url('/@/assets/images/dataCenter/infoCenter/info-border4.png');
-      --image-split-line: url('/@/assets/images/dataCenter/infoCenter/split-line.png');
-      --image-rank: url('/@/assets/images/dataCenter/infoCenter/rank-bg.png');
-      .content-item {
-        width: 100%;
-        overflow: hidden;
-        padding-bottom: 20px;
-        .content-wrapper {
-          width: 100% !important; // 强制撑满父容器
-          height: 100% !important;
-          padding: 0 !important; // 抵消默认内边距(如果 infoBox 有内边距,这里需对应调整)
-          box-sizing: border-box; // 避免 padding 挤压宽度
-        }
-      }
-      .item-1 {
-        height: 20%;
-      }
-      .item-2 {
-        height: 40%;
-        grid-template-columns: 6fr 4fr;
-        gap: 20px;
-        :deep(table) {
-          border-collapse: separate !important;
-          border-spacing: 0 10px !important;
-          .zxm-table-thead {
-            height: 35px;
-            background-color: unset !important;
-            .zxm-table-cell {
-              color: #66ffff !important;
-            }
-          }
-          .zxm-table-tbody {
-            background-color: unset !important;
-          }
-          .zxm-table-cell {
-            border: none !important;
-            background: none !important;
-            padding: 0px;
-          }
-          tr {
-            background: var(--image-rank) no-repeat !important;
-            background-size: 100% 100% !important;
-          }
-        }
-        .infoBox2 {
-          :deep(.box-container) {
-            padding: 5px 0px 5px 5px !important;
-          }
-        }
-      }
-      .item-3 {
-        height: 40%;
-        padding-bottom: 0;
-        :deep(table) {
-          border-collapse: collapse !important;
-          // border-spacing: 0 10px !important;
-          .zxm-table-thead {
-            height: 35px;
-            background-color: #0b2542 !important;
-            border: 1px solid #1f7eb5;
-            .zxm-table-cell {
-              border: none !important;
-              color: #37e0eb !important;
-            }
-          }
-          .zxm-table-tbody {
-            .zxm-table-row:nth-child(odd) {
-              background-color: #0e3455;
-            }
-
-            /* 偶数行背景色 */
-            .zxm-table-row:nth-child(even) {
-              background-color: #114268 !important;
-            }
-            .zxm-table-cell {
-              border: none !important;
-              background: none !important;
-            }
-          }
-        }
-        .box-container {
-          overflow: hidden;
-        }
-      }
-      .infoBox1 {
-        background-color: var(--image-border1) no-repeat;
-      }
-      .infoBox2 {
-        background-color: var(--image-border2) no-repeat;
-      }
-      .infoBox3 {
-        background-color: var(--image-border3) no-repeat;
-      }
-      .infoBox4 {
-        background-color: var(--image-border4) no-repeat;
-      }
-    }
-    .wrapper-1 {
-      grid-template-columns: repeat(5, 1fr);
-      .data-item {
-        display: flex;
-        align-items: center;
-        justify-content: center;
-        position: relative;
-        &::after {
-          position: absolute;
-          right: 1px;
-          top: 5px;
-          display: block;
-          width: 2px;
-          height: 100%;
-          background: var(--image-split-line);
-          content: '';
-        }
-        &:last-child::after {
-          display: none;
-        }
-        .value {
-          font-family: 'douyuFont';
-          color: #66ffff;
-          margin-top: 20px;
-          max-width: 200px; // 限制最大宽度
-          white-space: normal;
-          word-break: break-all; // 强制长内容换行(包括数字/字母)
-          text-align: center; // 保持文字居中对齐
-        }
-        .item-icon {
-          width: 80px;
-          height: 80px;
-          background-size: 100% 100%;
-          margin-right: 15px;
-        }
-        .icon1 {
-          background-image: url('/@/assets/images/dataCenter/infoCenter/icon1.png');
-        }
-        .icon2 {
-          background-image: url('/@/assets/images/dataCenter/infoCenter/icon2.png');
-        }
-        .icon3 {
-          background-image: url('/@/assets/images/dataCenter/infoCenter/icon3.png');
-        }
-        .icon4 {
-          background-image: url('/@/assets/images/dataCenter/infoCenter/icon4.png');
-        }
-        .icon5 {
-          background-image: url('/@/assets/images/dataCenter/infoCenter/icon5.png');
-        }
-      }
-    }
-    .option-cont {
-      display: flex;
-      justify-content: center;
-      align-items: center;
-      .view-icon {
-        width: 20px;
-        height: 20px;
-        background-image: url('/@/assets/images/dataCenter/infoCenter/view-icon.png');
-        background-repeat: no-repeat;
-        background-size: contain;
-        background-position: center;
-      }
-    }
-  }
-</style>

+ 0 - 18
src/views/vent/dataCenter/infoCenter/infoCenter.api.ts

@@ -1,18 +0,0 @@
-import { defHttp } from '/@/utils/http/axios';
-
-enum Api {
-  getDeviceAll = '/dataCenter/compute/deviceData/getDeviceAll',
-  getHomepageSummaryIndexes = '/dataCenter/compute/homepage/getHomepageSummaryIndexes',
-}
-//数据列表
-export const getDeviceAll = (params) =>
-  defHttp.post({
-    url: Api.getDeviceAll,
-    params,
-  });
-
-//首页数据详情
-export const getHomepageSummaryIndexes = () =>
-  defHttp.get({
-    url: Api.getHomepageSummaryIndexes,
-  });

+ 0 - 170
src/views/vent/dataCenter/infoCenter/infoCenter.data.ts

@@ -1,170 +0,0 @@
-import { BasicColumn } from '/@/components/Table';
-import { ModuleDataChart } from '/@/views/vent/deviceManager/configurationTable/types';
-
-import { h } from 'vue'; // 引入vue的h函数用于创建VNode
-
-// 导入图片资源(关键步骤)
-import rank1 from '@/assets/images/dataCenter/infoCenter/rank-1.png';
-import rank2 from '@/assets/images/dataCenter/infoCenter/rank-2.png';
-import rank3 from '@/assets/images/dataCenter/infoCenter/rank-3.png';
-import rank4 from '@/assets/images/dataCenter/infoCenter/rank-4.png';
-// 系统数据排名
-export const sysDataColumn: BasicColumn[] = [
-  {
-    title: '',
-    align: 'center',
-    width: 60,
-    // 修正customRender的类型和返回值
-    customRender: ({ index }: { index: number }) => {
-      // 确保index是数字类型,避免算术运算错误
-      const numIndex = Number(index);
-      let rankImg = '';
-      if (numIndex === 0) {
-        rankImg = rank1;
-      } else if (numIndex === 1) {
-        rankImg = rank2;
-      } else if (numIndex === 2) {
-        rankImg = rank3;
-      } else {
-        rankImg = rank4;
-      }
-      return h(
-        'div',
-        {
-          style: {
-            width: '80px',
-            height: '35px',
-            backgroundImage: `url(${rankImg})`,
-            backgroundSize: '100% 100%',
-            backgroundRepeat: 'no-repeat',
-            position: 'relative',
-            margin: '0 15px',
-          },
-        },
-        [
-          // 排名文字
-          h(
-            'span',
-            {
-              style: {
-                position: 'absolute',
-                top: '50%',
-                left: '50%',
-                transform: 'translate(-50%, -50%)',
-                color: '#fff',
-                fontSize: '14px',
-                fontWeight: 'bold',
-              },
-            },
-            `NO.${index + 1}`
-          ), // 显示NO.1、NO.2等
-        ]
-      );
-    },
-  },
-  {
-    title: '设备类别',
-    dataIndex: 'devKind',
-    align: 'center',
-  },
-  {
-    title: '设备数量',
-    dataIndex: 'devNum',
-    align: 'center',
-  },
-  {
-    title: '数据采集量',
-    dataIndex: 'dataCount',
-    align: 'center',
-  },
-];
-
-//系统接入情况
-export const accessStatusColumn: BasicColumn[] = [
-  {
-    title: '序号',
-    align: 'center',
-    customRender: ({ index }: { index: number }) => `${index + 1}`,
-  },
-  {
-    title: '设备名称',
-    dataIndex: 'devicekind_dictText',
-    align: 'center',
-  },
-  {
-    title: '设备接入时间',
-    dataIndex: 'createTime',
-    align: 'center',
-  },
-  {
-    title: '点位数量',
-    dataIndex: 'monitorPointNum',
-    align: 'center',
-  },
-  {
-    title: '网络状态',
-    dataIndex: 'netStatus',
-    align: 'center',
-    // 添加状态转换逻辑
-    customRender: ({ record }) => {
-      // 将状态值转为数字进行判断
-      const status = Number(record.netStatus);
-      return status === 1 ? '正常' : '断开';
-    },
-  },
-  {
-    title: '数据更新时间',
-    dataIndex: 'dataUpdateTime',
-    align: 'center',
-  },
-  {
-    title: '操作',
-    dataIndex: 'action',
-    width: 200,
-    align: 'center',
-    slots: { customRender: 'action' },
-  },
-];
-// 每日采集数据表格属性
-export const dailyNumOption: ModuleDataChart = {
-  type: 'bar',
-  readFrom: '',
-  legend: { show: false },
-  grid: {
-    left: 100,
-  },
-  xAxis: [
-    {
-      show: true,
-      axisLabel: {
-        rotate: 45, // 在这里配置旋转角度
-        interval: 0,
-      },
-    },
-  ],
-  yAxis: [
-    {
-      show: true,
-      name: '',
-      position: 'left',
-    },
-  ],
-  series: [{ readFrom: 'collectDataByDayList', xprop: 'day', yprop: 'total_count', label: '' }],
-  dataZoom: [
-    {
-      type: 'slider' as any,
-      show: true,
-      xAxisIndex: 0,
-      height: 10,
-      bottom: 10,
-      start: 0,
-      handleStyle: { color: '#66ffff' },
-      backgroundColor: 'rgba(102, 255, 255, 0.1)', // 滚动条背景色,适配UI
-    },
-    {
-      type: 'inside' as any, // 支持鼠标滚轮缩放柱子
-      xAxisIndex: 0,
-      zoomOnMouseWheel: true,
-    },
-  ] as any[],
-};

+ 0 - 21
src/views/vent/dataCenter/stationCenter/device.api.ts

@@ -1,21 +0,0 @@
-import { defHttp } from '/@/utils/http/axios';
-
-enum Api {
-  subStationList = '/safety/ventanalySubStation/alllist',
-  deviceList = '/dataCenter/compute/deviceData/getDeviceAll',
-  devMonitorList = '/dataCenter/compute/deviceData/getDeviceMonitorInfo',
-}
-// 分站查询接口
-export const subStationList = (params) => defHttp.get({ url: Api.subStationList, params });
-//根据设备类型获取设备列表
-export const getDeviceListByType = (params) =>
-  defHttp.post({
-    url: Api.deviceList,
-    params,
-  });
-//根据设备id获取设备监控数据
-export const getDevMonitorListById = (params) =>
-  defHttp.post({
-    url: Api.devMonitorList,
-    params,
-  });

+ 0 - 620
src/views/vent/dataCenter/stationCenter/index.vue

@@ -1,620 +0,0 @@
-<template>
-  <div class="safetyList">
-    <customHeader>分站监测</customHeader>
-    <div class="content">
-      <a-tabs class="tab-box" v-model:activeKey="activeKey" @change="onChangeTab">
-        <a-tab-pane tab="分站监测" key="device" />
-      </a-tabs>
-      <div class="box-content">
-        <!-- 分站监测 -->
-        <div class="now-content">
-          <div class="left-box">
-            <div class="left-content">
-              <div class="card-box" v-for="(item, index) in cardList" :key="index">
-                <div class="card-itemL" :class="{ active: selectedIndex === index }" @click="cardClick(item, index)">
-                  <div class="card-item-label">{{ item.strname }}</div>
-                </div>
-              </div>
-            </div>
-          </div>
-          <div class="right-box">
-            <div class="right-title">详细信息:</div>
-            <a-table
-              size="small"
-              :scroll="{ y: 650 }"
-              :columns="outerColumns"
-              :data-source="deviceList"
-              :pagination="false"
-              :row-key="(record) => record.id"
-              :expand-row-by-click="true"
-              :expandedRowKeys="expandedRowKeys"
-              @expand="handleExpand"
-              :loading="loading"
-            >
-              <!-- 自定义展开图标 -->
-              <template #expandIcon="{ expanded, onExpand, record }">
-                <a-button
-                  type="text"
-                  size="small"
-                  @click="
-                    (e) => {
-                      e.stopPropagation();
-                      toggleExpand(record.id);
-                    }
-                  "
-                >
-                  <DownCircleTwoTone v-if="expandedRowKeys.includes(record.id)" />
-                  <RightCircleTwoTone v-else />
-                </a-button>
-              </template>
-              <template #bodyCell="{ column, record }">
-                <template v-if="column.key === 'netStatus'">
-                  <span
-                    :style="{
-                      color: record.netStatus ? '#52c41a' : '#ddd',
-                      fontWeight: '500',
-                    }"
-                  >
-                    {{ record.netStatus ? '在线' : '断开' }}
-                  </span>
-                </template>
-                <template v-else>
-                  {{ record[column.dataIndex] }}
-                </template>
-              </template>
-              <!-- 嵌套表格 -->
-              <template #expandedRowRender="{ record }">
-                <a-table
-                  size="small"
-                  :columns="innerColumns"
-                  :data-source="monitorList[record.id] || []"
-                  :pagination="false"
-                  :loading="loadingMap[record.id]"
-                  bordered
-                  :scroll="{ y: 410 }"
-                >
-                  <template #bodyCell="{ column, record: innerRecord }">
-                    <template v-if="column.dataIndex === 'value'">
-                      <span>
-                        {{ innerRecord.value }}
-                      </span>
-                    </template>
-                  </template>
-                </a-table>
-              </template>
-            </a-table>
-          </div>
-        </div>
-      </div>
-    </div>
-  </div>
-</template>
-
-<script setup lang="ts">
-import { ref, nextTick, computed, reactive, onMounted, onUnmounted, inject } from 'vue';
-import { usePermission } from '/@/hooks/web/usePermission';
-import customHeader from '/@/components/vent/customHeader.vue';
-import { message, TreeProps } from 'ant-design-vue';
-import { getDeviceList, getDeviceListByType, getDevMonitorListById } from './device.api';
-import { subStationList } from './device.api';
-import { RightCircleTwoTone, DownCircleTwoTone } from '@ant-design/icons-vue';
-import Index from '/@/layouts/page/index.vue';
-const { hasPermission } = usePermission();
-let activeKey = ref('device');
-//当前左侧激活菜单的索引
-let activeIndex1 = ref(0);
-const cardList = ref<any[]>(); //分站列表
-const deviceList = ref<any[]>([]);
-const openNum = ref(0);
-const clsoeNum = ref(0);
-const monitorList = ref<Record<string, any[]>>({}); // 监测数据列表
-const expandedRowKeys = ref([]);
-const selectedIndex = ref(0);
-const loading = ref(false);
-// // 分页参数
-// const paginationState = ref({
-//   current: 1,
-//   pageSize: 10,
-//   total: 0,
-// });
-// const paginationState2 = ref({
-//   current: 1,
-//   pageSize: 10,
-//   total: 0,
-// });
-// // 计算分页后的数据
-// const paginatedData = computed(() => {
-//   const start = (paginationState.value.current - 1) * paginationState.value.pageSize;
-//   const end = start + paginationState.value.pageSize;
-//   return monitorList.value.slice(start, end);
-// });
-// // 计算分页后的数据
-// const paginatedData2 = computed(() => {
-//   const start = (paginationState2.value.current - 1) * paginationState2.value.pageSize;
-//   const end = start + paginationState2.value.pageSize;
-//   return deviceList.value.slice(start, end);
-// });
-// // 分页器配置 - 修复响应式问题
-// const paginationConfig = computed(() => {
-//   return {
-//     current: paginationState.value.current,
-//     pageSize: paginationState.value.pageSize,
-//     total: monitorList.value.length,
-//     showSizeChanger: true,
-//     showQuickJumper: true,
-//     showTotal: (total) => `共 ${total} 条`,
-//     pageSizeOptions: ['10', '20', '50', '100'],
-//     size: 'small',
-//     onChange: (page, pageSize) => {
-//       paginationState.value.current = page;
-//       paginationState.value.pageSize = pageSize;
-//     },
-//     onShowSizeChange: (current, size) => {
-//       paginationState.value.current = 1;
-//       paginationState.value.pageSize = size;
-//     },
-//   };
-// });
-// const paginationConfig2 = computed(() => {
-//   return {
-//     current: paginationState2.value.current,
-//     pageSize: paginationState2.value.pageSize,
-//     total: deviceList.value.length,
-//     showSizeChanger: true,
-//     showQuickJumper: true,
-//     showTotal: (total) => `共 ${total} 条`,
-//     pageSizeOptions: ['10', '20', '50', '100'],
-//     size: 'small',
-//     onChange: (page, pageSize) => {
-//       paginationState2.value.current = page;
-//       paginationState2.value.pageSize = pageSize;
-//     },
-//     onShowSizeChange: (current, size) => {
-//       paginationState2.value.current = 1;
-//       paginationState2.value.pageSize = size;
-//     },
-//   };
-// });
-//获取分站信息
-async function getSubStationList() {
-  let res = await subStationList({ pageSize: 1000, pageNo: 1 });
-  if (res.length != 0) {
-    cardList.value = [...res];
-    getDeviceList(cardList.value[0].id);
-    openNum.value = cardList.value?.filter((v) => v.linkstatus == 1)['length'];
-    clsoeNum.value = cardList.value?.filter((v) => v.linkstatus == 0)['length'];
-  } else {
-    cardList.value = [];
-  }
-}
-//菜单选项切换
-function cardClick(item, ind) {
-  loading.value = true;
-
-  selectedIndex.value = selectedIndex.value === ind ? -1 : ind;
-  if (timer) {
-    clearInterval(timer);
-    timer = undefined;
-  }
-  activeIndex1.value = ind;
-  getDeviceList(item.id);
-}
-
-// 加载状态映射
-const loadingMap = reactive({});
-// 根据选择设备获取设备列表
-async function getDeviceList(ID?) {
-  const params: any = {
-    subId: ID.toString(),
-    pageNo: 1,
-    pageSize: 2000,
-  };
-  const result = await getDeviceListByType(params);
-  loading.value = false;
-  deviceList.value = result.records;
-}
-// 外层表格列配置
-const outerColumns = [
-  {
-    title: '设备ID',
-    dataIndex: 'id',
-    key: 'id',
-    align: 'center',
-  },
-  {
-    title: '安装位置',
-    dataIndex: 'strinstallpos',
-    key: 'strinstallpos',
-    align: 'center',
-  },
-  {
-    title: '设备类型',
-    dataIndex: 'devicekind_dictText',
-    key: 'devicekind_dictText',
-    align: 'center',
-  },
-  {
-    title: '状态',
-    dataIndex: 'netStatus',
-    key: 'netStatus',
-    align: 'center',
-  },
-];
-
-// 内层表格列配置
-const innerColumns = [
-  {
-    title: '地址',
-    dataIndex: 'plcAddr',
-    key: 'plcAddr',
-    align: 'center',
-  },
-  {
-    title: '数据code',
-    dataIndex: 'valueCode',
-    align: 'center',
-    key: 'valueCode',
-  },
-  {
-    title: '数据名称',
-    dataIndex: 'valueName',
-    align: 'center',
-    key: 'valueName',
-  },
-  {
-    title: '数据值',
-    dataIndex: 'value',
-    align: 'center',
-    key: 'value',
-  },
-  {
-    title: '时间',
-    dataIndex: 'time',
-    align: 'center',
-    key: 'time',
-  },
-];
-
-// 切换展开状态
-const toggleExpand = (id) => {
-  const index = expandedRowKeys.value.indexOf(id);
-
-  if (index > -1) {
-    expandedRowKeys.value.splice(index, 1);
-  } else {
-    expandedRowKeys.value = [id];
-    loadMonitoringData(id);
-  }
-};
-const handleExpand = (expanded, record) => {
-  // 确保展开状态与 expandedRowKeys 同步
-  if (expanded) {
-    expandedRowKeys.value = [record.id];
-  } else {
-    expandedRowKeys.value = [];
-  }
-};
-// 加载监测数据
-let timer: null | NodeJS.Timeout = null;
-async function loadMonitoringData(deviceId: string) {
-  // 先清除之前的定时器
-  if (timer) {
-    clearInterval(timer);
-    timer = null;
-  }
-  refreshData(deviceId);
-
-  // 设置新的定时器
-  timer = setInterval(() => {
-    refreshData(deviceId);
-  }, 1000);
-}
-async function refreshData(deviceId: string) {
-  // 这里实现具体的请求逻辑
-  const device = deviceList.value.find((d) => d.id === deviceId);
-  const result = await getDevMonitorListById({ devId: deviceId.toString() });
-  monitorList.value[deviceId] = Object.values(result.readData);
-}
-onMounted(async () => {
-  await getSubStationList();
-  await getDeviceList();
-});
-onUnmounted(() => {
-  if (timer) {
-    clearInterval(timer);
-    timer = undefined;
-  }
-});
-</script>
-
-<style lang="less" scoped>
-.safetyList {
-  width: calc(100% - 20px);
-  height: calc(100% - 80px);
-  position: relative;
-  margin: 70px 10px 10px 10px;
-
-  .content {
-    position: relative;
-    width: 100%;
-    height: 100%;
-
-    .tab-box {
-      display: flex;
-      color: #fff;
-      position: relative;
-      background: linear-gradient(#001325, #012e4f);
-
-      :deep(.zxm-tabs-nav) {
-        margin: 0 !important;
-
-        .zxm-tabs-tab {
-          width: 180px;
-          height: 45px;
-          background: url('/@/assets/images/top-btn.png') center no-repeat;
-          background-size: cover;
-          display: flex;
-          justify-content: center;
-          font-size: 16px;
-        }
-
-        .zxm-tabs-tab-active {
-          width: 180px;
-          position: relative;
-          background: url('/@/assets/images/top-btn-select.png') center no-repeat;
-          background-size: cover;
-
-          .zxm-tabs-tab-btn {
-            color: #fff !important;
-          }
-        }
-
-        .zxm-tabs-ink-bar {
-          width: 0 !important;
-        }
-
-        .zxm-tabs-tab + .zxm-tabs-tab {
-          margin: 0 !important;
-        }
-      }
-    }
-
-    .box-content {
-      height: calc(100% - 50px);
-      padding-top: 10px;
-      box-sizing: border-box;
-      .now-content {
-        position: relative;
-        width: 100%;
-        height: 100%;
-        display: flex;
-        justify-content: space-between;
-        align-items: center;
-
-        .left-box {
-          width: 30%;
-          height: 100%;
-          margin-right: 15px;
-          padding: 10px;
-          box-sizing: border-box;
-          background: url('/@/assets/images/fire/bj1.png') no-repeat center;
-          background-size: 100% 100%;
-          border: 3px, solid, #0b69b6;
-          border-radius: 5px;
-          .left-content {
-            display: flex;
-            justify-content: flex-start;
-            align-items: flex-start;
-            flex-wrap: wrap;
-            overflow-y: auto;
-
-            .card-box {
-              position: relative;
-              width: 178px;
-              height: 120px;
-              margin-top: 15px;
-              margin-bottom: 30px;
-              display: flex;
-              justify-content: center;
-
-              .card-itemL {
-                position: relative;
-                width: 85px;
-                height: 120px;
-                background: url('/@/assets/images/zd-3.png') no-repeat center;
-                background-size: 100% 100%;
-                cursor: pointer;
-                border: 1px solid transparent;
-                transition: border-color 0.2s ease;
-                .card-item-label {
-                  width: 100%;
-                  position: absolute;
-                  bottom: 5px;
-                  font-size: 12px;
-                  color: #fff;
-                  text-align: center;
-                }
-              }
-              /* 选中状态的高亮边框 */
-              .card-itemL.active {
-                border-color: #0b69b6;
-                border-radius: 5px;
-                box-shadow: 0 0 3px 3px rgb(0, 128, 255);
-              }
-              .card-modal {
-                width: 86px;
-                position: absolute;
-                left: 140px;
-                color: #fff;
-                top: 50%;
-                transform: translate(0, -50%);
-                font-size: 12px;
-              }
-
-              .card-modal1 {
-                width: 86px;
-                position: absolute;
-                left: -42px;
-                color: #fff;
-                top: 50%;
-                transform: translate(0, -50%);
-                font-size: 12px;
-              }
-            }
-          }
-        }
-
-        .right-box {
-          width: calc(70% - 15px);
-          height: 100%;
-          padding: 10px;
-          box-sizing: border-box;
-          background: url('/@/assets/images/fire/bj1.png') no-repeat center;
-          background-size: 100% 100%;
-          border: 3px, solid, #0b69b6;
-          border-radius: 5px;
-          .right-title {
-            display: flex;
-            height: 30px;
-            align-items: center;
-            font-size: 14px;
-            color: #fff;
-            margin-bottom: 10px;
-          }
-        }
-      }
-    }
-  }
-}
-
-.down-btn {
-  line-height: 15px;
-  height: 20px;
-  padding: 0px 17px;
-  font-size: 12px;
-}
-
-.zxm-form {
-  width: 50%;
-  height: 100%;
-  padding-top: 20px !important;
-  box-sizing: border-box;
-}
-
-.zxm-picker,
-.zxm-input {
-  border: 1px solid #3ad8ff77 !important;
-  background-color: #ffffff !important;
-  color: #fff !important;
-}
-
-.card-item.selected {
-  border: 2px solid #3ad8ff77;
-  /* 选中时的边框颜色 */
-}
-
-::v-deep(.zxm-radio-wrapper) {
-  font-size: 12px;
-}
-
-::v-deep(.zxm-input) {
-  font-size: 12px;
-}
-
-::v-deep(.zxm-select:not(.zxm-select-customize-input) .zxm-select-selector) {
-  border: 1px solid #3ad8ff77 !important;
-}
-
-// ::v-deep(.zxm-select-selection-item) {
-//   color: #fff ;
-// }
-
-// ::v-deep(.zxm-form-item-label > label) {
-//   color: #fff !important;
-// }
-/* 值样式 */
-.high-value {
-  color: #f5222d;
-  font-weight: bold;
-}
-.low-value {
-  color: #1890ff;
-  font-weight: bold;
-}
-.normal-value {
-  color: #52c41a;
-}
-
-/* 嵌套表格样式 */
-:deep(.ant-table-expanded-row) > td {
-  background-color: #f9f9f9 !important;
-  padding: 0 !important;
-}
-
-:deep(.ant-table-expanded-row .ant-table) {
-  margin: -10px -8px;
-  background: #f9f9f9;
-}
-
-/* 自定义展开按钮 */
-:deep(.ant-table-row-expand-icon) {
-  margin-right: 8px;
-}
-
-.device-select-box {
-  margin-top: 60px;
-  width: 208px;
-  height: calc(100% - 70px);
-  overflow-y: auto;
-  color: #fff;
-
-  :deep(.zxm-tree) {
-    background: transparent !important;
-    color: #fff !important;
-
-    .zxm-tree-switcher {
-      background: transparent !important;
-    }
-
-    .zxm-tree-node-content-wrapper.zxm-tree-node-selected {
-      background-color: var(--tree-node-select);
-    }
-
-    .zxm-tree-node-content-wrapper:hover {
-      background-color: var(--tree-node-hover);
-    }
-
-    input {
-      height: 0px !important;
-    }
-  }
-
-  &::-webkit-scrollbar-track {
-    -webkit-box-shadow: inset 0 0 5px rgba(0, 0, 0, 0.2);
-    border-radius: 10px;
-    background: #ededed22;
-    height: 100px;
-  }
-
-  &::-webkit-scrollbar-thumb {
-    -webkit-box-shadow: inset 0 0 5px rgba(0, 0, 0, 0.2);
-    background: #4288a444;
-  }
-}
-.device-select {
-  width: 250px;
-  height: calc(100% - 70px);
-  background: var(--image-tree-bg) no-repeat;
-  position: fixed;
-  top: 100px;
-  left: 55px;
-  background-size: contain;
-  pointer-events: auto;
-  padding: 20px 10px 30px 10px;
-}
-</style>
-<style>
-div[aria-hidden='true'] {
-  display: none !important;
-}
-</style>

+ 0 - 257
src/views/vent/dataCenter/statsCenter/index.vue

@@ -1,257 +0,0 @@
-<template>
-  <div class="safetyList">
-    <customHeader>统计监测</customHeader>
-    <div class="content">
-      <div class="box-content">
-        <a-table size="small" :columns="outerColumns" :data-source="deviceList" :pagination="true">
-          <template #bodyCell="{ column, record }">
-            <template v-if="column.dataIndex === 'action'">
-              <a class="action-link" @click="openNestedTable(record)">详情</a>
-            </template>
-          </template>
-        </a-table>
-      </div>
-    </div>
-    <a-modal width="80%" :footer="null" title="统计详情" centered v-model:visible="showDetail">
-      <a-table size="small" :columns="innerColumns" :data-source="monitorList" :pagination="true"></a-table>
-    </a-modal>
-  </div>
-</template>
-
-<script setup lang="ts">
-import { ref, nextTick, reactive, onMounted, onUnmounted, watch, shallowRef, computed } from 'vue';
-import { getInvokeList, getInvokeDetailList } from './stats.api.ts';
-import customHeader from '/@/components/vent/customHeader.vue';
-const deviceList = ref<any[]>([]); // 列表数据
-const monitorList = ref<any[]>([]); // 详情数据
-const showDetail = ref(false);
-// 分页参数
-const paginationState = ref({
-  current: 1,
-  pageSize: 10,
-  total: 0,
-});
-const paginationState2 = ref({
-  current: 1,
-  pageSize: 10,
-  total: 0,
-});
-// 计算分页后的数据
-const paginatedData = computed(() => {
-  const start = (paginationState.value.current - 1) * paginationState.value.pageSize;
-  const end = start + paginationState.value.pageSize;
-  return monitorList.value.slice(start, end);
-});
-// 计算分页后的数据
-const paginatedData2 = computed(() => {
-  const start = (paginationState2.value.current - 1) * paginationState2.value.pageSize;
-  const end = start + paginationState2.value.pageSize;
-  return deviceList.value.slice(start, end);
-});
-// 分页器配置 - 修复响应式问题
-const paginationConfig = computed(() => {
-  return {
-    current: paginationState.value.current,
-    pageSize: paginationState.value.pageSize,
-    total: monitorList.value.length,
-    showSizeChanger: true,
-    showQuickJumper: true,
-    showTotal: (total) => `共 ${total} 条`,
-    pageSizeOptions: ['10', '20', '50', '100'],
-    size: 'small',
-    onChange: (page, pageSize) => {
-      paginationState.value.current = page;
-      paginationState.value.pageSize = pageSize;
-    },
-    onShowSizeChange: (current, size) => {
-      paginationState.value.current = 1;
-      paginationState.value.pageSize = size;
-    },
-  };
-});
-const paginationConfig2 = computed(() => {
-  return {
-    current: paginationState2.value.current,
-    pageSize: paginationState2.value.pageSize,
-    total: deviceList.value.length,
-    showSizeChanger: true,
-    showQuickJumper: true,
-    showTotal: (total) => `共 ${total} 条`,
-    pageSizeOptions: ['10', '20', '50', '100'],
-    size: 'small',
-    onChange: (page, pageSize) => {
-      paginationState2.value.current = page;
-      paginationState2.value.pageSize = pageSize;
-    },
-    onShowSizeChange: (current, size) => {
-      paginationState2.value.current = 1;
-      paginationState2.value.pageSize = size;
-    },
-  };
-});
-// 外层表格列配置
-const outerColumns = [
-  {
-    title: '账户',
-    dataIndex: 'userid',
-    key: 'userid',
-    align: 'center',
-  },
-  {
-    title: '账号名称',
-    dataIndex: 'username',
-    key: 'username',
-    align: 'center',
-  },
-  {
-    title: '访问次数',
-    dataIndex: 'invoke_count',
-    key: 'invoke_count',
-    align: 'center',
-  },
-  {
-    title: '最新访问时间',
-    dataIndex: 'lastTime',
-    key: 'lastTime',
-    align: 'center',
-  },
-  {
-    title: '操作',
-    dataIndex: 'action',
-    width: 80,
-    align: 'center',
-  },
-];
-
-// 内层表格列配置
-const innerColumns = [
-  {
-    title: '账号',
-    dataIndex: 'userid',
-    key: 'userid',
-    align: 'center',
-  },
-  {
-    title: '账号名称',
-    dataIndex: 'username',
-    key: 'username',
-    align: 'center',
-  },
-  {
-    title: '请求路径',
-    dataIndex: 'requestUrl',
-    key: 'requestUrl',
-    align: 'center',
-  },
-  {
-    title: '访问ip',
-    dataIndex: 'ip',
-    key: 'ip',
-    align: 'center',
-  },
-  {
-    title: '请求时间',
-    dataIndex: 'createTime',
-    key: 'createTime',
-    align: 'center',
-  },
-];
-const openNestedTable = (record) => {
-  showDetail.value = !showDetail.value;
-  refreshData(record.userid);
-};
-
-async function getTableData(params?) {
-  if (!params) {
-    const params = {
-      pageNo: 1,
-      pageSize: 20,
-      logType: 9,
-    };
-    const result = await getInvokeList(params);
-    deviceList.value = result.records;
-  } else {
-    const result = await getInvokeList(params);
-    deviceList.value = result.records;
-  }
-}
-async function refreshData(userid: string) {
-  // 这里实现具体的请求逻辑
-  const params = {
-    pageNo: 1,
-    pageSize: 20,
-    userid: userid,
-  };
-  const result = await getInvokeDetailList(params);
-  monitorList.value = Object.values(result.records);
-}
-onMounted(() => {
-  getTableData();
-});
-onUnmounted(() => {});
-// 监听分页变化
-watch(
-  () => [paginationState.value.current, paginationState.value.pageSize],
-  () => {}
-);
-</script>
-
-<style lang="less" scoped>
-.safetyList {
-  width: calc(100% - 20px);
-  height: calc(100% - 80px);
-  position: relative;
-  margin: 50px 10px 10px 10px;
-
-  .content {
-    position: relative;
-    width: 100%;
-    height: 100%;
-
-    .box-content {
-      height: calc(100% - 50px);
-      padding-top: 10px;
-      box-sizing: border-box;
-    }
-  }
-}
-::v-deep(.zxm-radio-wrapper) {
-  font-size: 12px;
-}
-
-::v-deep(.zxm-input) {
-  font-size: 12px;
-}
-
-::v-deep(.zxm-select:not(.zxm-select-customize-input) .zxm-select-selector) {
-  border: 1px solid #3ad8ff77 !important;
-}
-
-// ::v-deep(.zxm-select-selection-item) {
-//   color: #fff ;
-// }
-
-// ::v-deep(.zxm-form-item-label > label) {
-//   color: #fff !important;
-// }
-
-/* 嵌套表格样式 */
-:deep(.ant-table-expanded-row) > td {
-  background-color: #f9f9f9 !important;
-  padding: 0 !important;
-}
-
-:deep(.ant-table-expanded-row .ant-table) {
-  margin: -10px -8px;
-  background: #f9f9f9;
-}
-/* 自定义展开按钮 */
-:deep(.ant-table-row-expand-icon) {
-  margin-right: 8px;
-}
-</style>
-<style>
-div[aria-hidden='true'] {
-  display: none !important;
-}
-</style>

+ 0 - 18
src/views/vent/dataCenter/statsCenter/stats.api.ts

@@ -1,18 +0,0 @@
-import { defHttp } from '/@/utils/http/axios';
-
-enum Api {
-  invokeList = '/dataCenter/sys/log/invokeList',
-  invokeDetailList = '/dataCenter/sys/log/invokeDetailList',
-}
-//统计列表接口
-export const getInvokeList = (params) =>
-  defHttp.get({
-    url: Api.invokeList,
-    params,
-  });
-//统计详情接口
-export const getInvokeDetailList = (params) =>
-  defHttp.get({
-    url: Api.invokeDetailList,
-    params,
-  });

+ 0 - 42
src/views/vent/dataCenter/user/PasswordModal.vue

@@ -1,42 +0,0 @@
-<template>
-  <BasicModal v-bind="$attrs" @register="registerModal" title="修改密码" @ok="handleSubmit">
-    <BasicForm @register="registerForm" />
-  </BasicModal>
-</template>
-<script lang="ts" name="PassWordModal" setup>
-  import { ref, computed, unref } from 'vue';
-  import { BasicModal, useModalInner } from '/@/components/Modal';
-  import { BasicForm, useForm } from '/@/components/Form/index';
-  import { formPasswordSchema } from './user.data';
-  import { changePassword } from './user.api';
-  // 声明Emits
-  const emit = defineEmits(['success', 'register']);
-  //表单配置
-  const [registerForm, { resetFields, setFieldsValue, validate }] = useForm({
-    schemas: formPasswordSchema,
-    showActionButtonGroup: false,
-  });
-  //表单赋值
-  const [registerModal, { setModalProps, closeModal }] = useModalInner(async (data) => {
-    //重置表单
-    await resetFields();
-    setModalProps({ confirmLoading: false });
-    //表单赋值
-    await setFieldsValue({ ...data });
-  });
-  //表单提交事件
-  async function handleSubmit() {
-    try {
-      const values = await validate();
-      setModalProps({ confirmLoading: true });
-      //提交表单
-      await changePassword(values);
-      //关闭弹窗
-      closeModal();
-      //刷新列表
-      emit('success');
-    } finally {
-      setModalProps({ confirmLoading: false });
-    }
-  }
-</script>

+ 0 - 45
src/views/vent/dataCenter/user/UserAgentModal.vue

@@ -1,45 +0,0 @@
-<template>
-  <BasicModal v-bind="$attrs" @register="registerModal" :width="800" title="用户代理" @ok="handleSubmit">
-    <BasicForm @register="registerForm" />
-  </BasicModal>
-</template>
-<script lang="ts" setup>
-  import { ref, computed, unref } from 'vue';
-  import { BasicModal, useModalInner } from '/@/components/Modal';
-  import { BasicForm, useForm } from '/@/components/Form/index';
-  import { formAgentSchema } from './user.data';
-  import { getUserAgent, saveOrUpdateAgent } from './user.api';
-  // 声明Emits
-  const emit = defineEmits(['success', 'register']);
-  //表单配置
-  const [registerForm, { resetFields, setFieldsValue, validate }] = useForm({
-    schemas: formAgentSchema,
-    showActionButtonGroup: false,
-  });
-  //表单赋值
-  const [registerModal, { setModalProps, closeModal }] = useModalInner(async (data) => {
-    //重置表单
-    await resetFields();
-    setModalProps({ confirmLoading: false });
-    //查询获取表单数据
-    const res = await getUserAgent({ userName: data.userName });
-    data = res.result ? res.result : data;
-    //表单赋值
-    await setFieldsValue({ ...data });
-  });
-  //表单提交事件
-  async function handleSubmit() {
-    try {
-      const values = await validate();
-      setModalProps({ confirmLoading: true });
-      //提交表单
-      await saveOrUpdateAgent(values);
-      //关闭弹窗
-      closeModal();
-      //刷新列表
-      emit('success');
-    } finally {
-      setModalProps({ confirmLoading: false });
-    }
-  }
-</script>

+ 0 - 136
src/views/vent/dataCenter/user/UserDrawer.vue

@@ -1,136 +0,0 @@
-<template>
-  <BasicDrawer
-    v-bind="$attrs"
-    @register="registerDrawer"
-    :title="getTitle"
-    :width="adaptiveWidth"
-    @ok="handleSubmit"
-    :showFooter="showFooter"
-    destroyOnClose
-  >
-    <BasicForm @register="registerForm" />
-  </BasicDrawer>
-</template>
-<script lang="ts" setup>
-import { defineComponent, ref, computed, unref, useAttrs } from 'vue';
-import { BasicForm, useForm } from '/@/components/Form/index';
-import { formSchema } from './user.data';
-import { BasicDrawer, useDrawerInner } from '/@/components/Drawer';
-import { saveOrUpdateUser, getUserRoles, getUserDepartList } from './user.api';
-import { useDrawerAdaptiveWidth } from '/@/hooks/jeecg/useAdaptiveWidth';
-// 声明Emits
-const emit = defineEmits(['success', 'register']);
-const attrs = useAttrs();
-const isUpdate = ref(true);
-const rowId = ref('');
-const departOptions = ref([]);
-//表单配置
-const [registerForm, { setProps, resetFields, setFieldsValue, validate, updateSchema }] = useForm({
-  labelWidth: 90,
-  schemas: formSchema,
-  showActionButtonGroup: false,
-});
-// TODO [VUEN-527] https://www.teambition.com/task/6239beb894b358003fe93626
-const showFooter = ref(true);
-//表单赋值
-const [registerDrawer, { setDrawerProps, closeDrawer }] = useDrawerInner(async (data) => {
-  await resetFields();
-  showFooter.value = data?.showFooter ?? true;
-  setDrawerProps({ confirmLoading: false, showFooter: showFooter.value });
-  isUpdate.value = !!data?.isUpdate;
-  if (unref(isUpdate)) {
-    rowId.value = data.record.id;
-    //租户信息定义成数组
-    if (data.record.relTenantIds && !Array.isArray(data.record.relTenantIds)) {
-      data.record.relTenantIds = data.record.relTenantIds.split(',');
-    } else {
-      //【issues/I56C5I】用户管理中连续点两次编辑租户配置就丢失了
-      //data.record.relTenantIds = [];
-    }
-
-    //查角色/赋值/try catch 处理,不然编辑有问题
-    try {
-      const userRoles = await getUserRoles({ userid: data.record.id });
-      if (userRoles && userRoles.length > 0) {
-        data.record.selectedroles = userRoles;
-      }
-    } catch (error) {}
-
-    //查所属部门/赋值
-    const userDepart = await getUserDepartList({ userId: data.record.id });
-    if (userDepart && userDepart.length > 0) {
-      data.record.selecteddeparts = userDepart;
-      let selectDepartKeys = Array.from(userDepart, ({ key }) => key);
-      data.record.selecteddeparts = selectDepartKeys.join(',');
-      departOptions.value = userDepart.map((item) => {
-        return { label: item.title, value: item.key };
-      });
-    }
-    //负责部门/赋值
-    data.record.departIds && !Array.isArray(data.record.departIds) && (data.record.departIds = data.record.departIds.split(','));
-    //update-begin---author:zyf   Date:20211210  for:避免空值显示异常------------
-    data.record.departIds = data.record.departIds == '' ? [] : data.record.departIds;
-    //update-begin---author:zyf   Date:20211210  for:避免空值显示异常------------
-  }
-  //处理角色用户列表情况(和角色列表有关系)
-  data.selectedroles && (await setFieldsValue({ selectedroles: data.selectedroles }));
-  //编辑时隐藏密码/角色列表隐藏角色信息/我的部门时隐藏所属部门
-  updateSchema([
-    {
-      field: 'password',
-      show: !unref(isUpdate),
-    },
-    {
-      field: 'confirmPassword',
-      ifShow: !unref(isUpdate),
-    },
-    {
-      field: 'selectedroles',
-      show: !data.isRole,
-    },
-    {
-      field: 'departIds',
-      componentProps: { options: departOptions },
-    },
-    {
-      field: 'selecteddeparts',
-      show: !data?.departDisabled ?? false,
-    },
-    {
-      field: 'selectedroles',
-      show: !data?.departDisabled ?? false,
-    },
-  ]);
-  // 无论新增还是编辑,都可以设置表单值
-  if (typeof data.record === 'object') {
-    setFieldsValue({
-      ...data.record,
-    });
-  }
-  // 隐藏底部时禁用整个表单
-  //update-begin-author:taoyan date:2022-5-24 for: VUEN-1117【issue】0523周开源问题
-  setProps({ disabled: !showFooter.value });
-  //update-end-author:taoyan date:2022-5-24 for: VUEN-1117【issue】0523周开源问题
-});
-//获取标题
-const getTitle = computed(() => (!unref(isUpdate) ? '新增用户' : '编辑用户'));
-const { adaptiveWidth } = useDrawerAdaptiveWidth();
-
-//提交事件
-async function handleSubmit() {
-  try {
-    let values = await validate();
-    setDrawerProps({ confirmLoading: true });
-    values.userIdentity === 1 && (values.departIds = '');
-    let isUpdateVal = unref(isUpdate);
-    //提交表单
-    await saveOrUpdateUser(values, isUpdateVal);
-    //关闭弹窗
-    closeDrawer();
-    //刷新列表
-    emit('success', { isUpdateVal, values });
-  } finally {
-    setDrawerProps({ confirmLoading: false });
-  }
-}
-</script>

+ 0 - 96
src/views/vent/dataCenter/user/UserPermModal.vue

@@ -1,96 +0,0 @@
-<template>
-  <BasicModal v-bind="$attrs" @register="registerModal" title="API授权" :width="adaptiveWidth" @ok="handleSubmit" :showFooter="showFooter">
-    <a-table :data-source="APIList" :columns="columns" :row-selection="rowSelection" :row-key="(record) => record.id"> </a-table>
-  </BasicModal>
-</template>
-<script lang="ts" setup>
-import { ref, computed, onMounted, unref } from 'vue';
-import { BasicModal, useModalInner } from '/@/components/Modal';
-import { apiManageList, apiPermPagelist, bathAddApiPerm } from './user.api';
-import { useDrawerAdaptiveWidth } from '/@/hooks/jeecg/useAdaptiveWidth';
-import { message, Modal } from 'ant-design-vue';
-// 声明Emits
-const emit = defineEmits(['success', 'register']);
-const showFooter = ref(true);
-const APIList = ref([]);
-const selectedRowKeys = ref<any>([]);
-const userID = ref('');
-const columns = [
-  {
-    title: 'API名称',
-    dataIndex: 'apiName',
-    key: 'apiName',
-    align: 'center',
-  },
-  {
-    title: '请求路径',
-    dataIndex: 'reqUrl',
-    key: 'reqUrl',
-    align: 'center',
-  },
-  {
-    title: 'HTTP方法',
-    dataIndex: 'reqMethod',
-    key: 'reqMethod',
-    align: 'center',
-  },
-];
-//表单赋值
-const [registerModal, { setModalProps, closeModal }] = useModalInner(async (data) => {
-  setModalProps({ confirmLoading: false });
-  userID.value = data.userID;
-  await getAllApiList();
-  await getPermApiList();
-});
-const { adaptiveWidth } = useDrawerAdaptiveWidth();
-// 行选择配置
-const rowSelection = {
-  selectedRowKeys,
-  onChange: (selectedKeys) => {
-    selectedRowKeys.value = selectedKeys;
-  },
-};
-//表单提交事件
-async function handleSubmit() {
-  try {
-    setModalProps({ confirmLoading: true });
-    // 参数
-    const params = {
-      apiIdList: selectedRowKeys.value.length > 0 ? selectedRowKeys.value.join(',') : {}, // 转换为逗号分隔的字符串
-      userId: userID.value, // 用户ID
-    };
-    const response = await bathAddApiPerm(params);
-    console.log('提交的ID:', selectedRowKeys.value);
-    console.log('API响应:', response);
-    message.success('提交成功');
-    //关闭弹窗
-    closeModal();
-    //刷新列表
-    emit('success');
-  } finally {
-    setModalProps({ confirmLoading: false });
-  }
-}
-async function getPermApiList() {
-  const result = await apiPermPagelist({ pageNo: 1, pageSize: 1000, userId: userID.value });
-  const permApiIds = result.records?.map((item) => String(item.apiId)) || [];
-  selectedRowKeys.value = [...permApiIds];
-  return result;
-}
-// 获取接口列表
-async function getAllApiList() {
-  const result = await apiManageList({ pageNo: 1, pageSize: 1000 });
-  APIList.value = result.records;
-}
-onMounted(async () => {
-  await getAllApiList();
-});
-</script>
-<style scoped>
-.selected-info {
-  background: #cccc;
-  padding: 15px;
-  border-radius: 6px;
-  margin-bottom: 20px;
-}
-</style>

+ 0 - 138
src/views/vent/dataCenter/user/UserRecycleBinModal.vue

@@ -1,138 +0,0 @@
-<template>
-  <BasicModal v-bind="$attrs" @register="registerModal" title="用户回收站" :showOkBtn="false" width="1000px" destroyOnClose>
-    <BasicTable @register="registerTable" :rowSelection="rowSelection">
-      <!--插槽:table标题-->
-      <template #tableTitle>
-        <a-dropdown v-if="checkedKeys.length > 0">
-          <template #overlay>
-            <a-menu>
-              <a-menu-item key="1" @click="batchHandleDelete">
-                <Icon icon="ant-design:delete-outlined"></Icon>
-                批量删除
-              </a-menu-item>
-              <a-menu-item key="1" @click="batchHandleRevert">
-                <Icon icon="ant-design:redo-outlined"></Icon>
-                批量还原
-              </a-menu-item>
-            </a-menu>
-          </template>
-          <a-button
-            >批量操作
-            <Icon icon="ant-design:down-outlined"></Icon>
-          </a-button>
-        </a-dropdown>
-      </template>
-      <!--操作栏-->
-      <template #bodyCell="{ column, record }">
-        <template v-if="column.key === 'action'">
-          <TableAction :actions="getTableAction(record)" />
-        </template>
-      </template>
-    </BasicTable>
-  </BasicModal>
-</template>
-<script lang="ts" setup>
-  import { ref, toRaw, unref } from 'vue';
-  import { BasicModal, useModalInner } from '/@/components/Modal';
-  import { BasicTable, useTable, TableAction } from '/@/components/Table';
-  import { recycleColumns } from './user.data';
-  import { getRecycleBinList, putRecycleBin, deleteRecycleBin } from './user.api';
-  import { useMessage } from '/@/hooks/web/useMessage';
-
-  const { createConfirm } = useMessage();
-  // 声明Emits
-  const emit = defineEmits(['success', 'register']);
-  const checkedKeys = ref<Array<string | number>>([]);
-  const [registerModal] = useModalInner(() => {
-    checkedKeys.value = [];
-  });
-  //注册table数据
-  const [registerTable, { reload }] = useTable({
-    api: getRecycleBinList,
-    columns: recycleColumns,
-    rowKey: 'id',
-    striped: true,
-    useSearchForm: false,
-    showTableSetting: false,
-    clickToRowSelect: false,
-    bordered: true,
-    showIndexColumn: false,
-    pagination: true,
-    tableSetting: { fullScreen: true },
-    canResize: false,
-    actionColumn: {
-      width: 150,
-      title: '操作',
-      dataIndex: 'action',
-      // slots: { customRender: 'action' },
-      fixed: undefined,
-    },
-  });
-  /**
-   * 选择列配置
-   */
-  const rowSelection = {
-    type: 'checkbox',
-    columnWidth: 50,
-    selectedRowKeys: checkedKeys,
-    onChange: onSelectChange,
-  };
-  /**
-   * 选择事件
-   */
-  function onSelectChange(selectedRowKeys: (string | number)[]) {
-    checkedKeys.value = selectedRowKeys;
-  }
-  /**
-   * 还原事件
-   */
-  async function handleRevert(record) {
-    await putRecycleBin({ userIds: record.id }, reload);
-    emit('success');
-  }
-  /**
-   * 批量还原事件
-   */
-  function batchHandleRevert() {
-    handleRevert({ id: toRaw(unref(checkedKeys)).join(',') });
-  }
-  /**
-   * 删除事件
-   */
-  async function handleDelete(record) {
-    await deleteRecycleBin({ userIds: record.id }, reload);
-  }
-  /**
-   * 批量删除事件
-   */
-  function batchHandleDelete() {
-    createConfirm({
-      iconType: 'warning',
-      title: '删除',
-      content: '确定要永久删除吗?删除后将不可恢复!',
-      onOk: () => handleDelete({ id: toRaw(unref(checkedKeys)).join(',') }),
-      onCancel() {},
-    });
-  }
-  //获取操作栏事件
-  function getTableAction(record) {
-    return [
-      {
-        label: '取回',
-        icon: 'ant-design:redo-outlined',
-        popConfirm: {
-          title: '是否确认还原',
-          confirm: handleRevert.bind(null, record),
-        },
-      },
-      {
-        label: '彻底删除',
-        icon: 'ant-design:scissor-outlined',
-        popConfirm: {
-          title: '是否确认删除',
-          confirm: handleDelete.bind(null, record),
-        },
-      },
-    ];
-  }
-</script>

+ 0 - 242
src/views/vent/dataCenter/user/index.vue

@@ -1,242 +0,0 @@
-<template>
-  <div class="device-manager-box">
-    <!--引用表格-->
-    <BasicTable @register="registerTable">
-      <!--插槽:table标题-->
-      <template #tableTitle>
-        <a-button type="primary" preIcon="ant-design:plus-outlined" @click="handleCreate"> 新增</a-button>
-        <!-- <a-button type="primary" preIcon="ant-design:export-outlined" @click="onExportXls"> 导出</a-button>
-        <j-upload-button type="primary" preIcon="ant-design:import-outlined" @click="onImportXls">导入</j-upload-button> -->
-        <!-- <a-button type="primary" @click="handleSyncUser" preIcon="ant-design:sync-outlined"> 同步流程</a-button> -->
-        <!-- <a-button type="primary" @click="openModal(true, {})" preIcon="ant-design:hdd-outlined"> 回收站</a-button> -->
-        <JThirdAppButton biz-type="user" :selected-row-keys="selectedRowKeys" syncToApp syncToLocal @sync-finally="onSyncFinally" />
-        <a-dropdown v-if="selectedRowKeys.length > 0">
-          <template #overlay>
-            <a-menu>
-              <a-menu-item key="1" @click="batchHandleDelete">
-                <Icon icon="ant-design:delete-outlined" />
-                删除
-              </a-menu-item>
-            </a-menu>
-          </template>
-          <a-button
-            >批量操作
-            <Icon icon="mdi:chevron-down" />
-          </a-button>
-        </a-dropdown>
-      </template>
-      <!--操作栏-->
-      <template #action="{ record }">
-        <TableAction :actions="getTableAction(record)" :dropDownActions="getDropDownAction(record)" />
-      </template>
-    </BasicTable>
-    <!--用户抽屉-->
-    <UserDrawer @register="registerDrawer" @success="handleSuccess" />
-    <!--修改密码-->
-    <PasswordModal @register="registerPasswordModal" @success="reload" />
-    <!--用户代理-->
-    <UserAgentModal @register="registerAgentModal" @success="reload" />
-    <!--授权弹窗-->
-    <UserPermModal @register="registerPermModal" @success="reload" />
-  </div>
-</template>
-
-<script lang="ts" name="system-user" setup>
-//ts语法
-import { ref, computed, unref } from 'vue';
-import { BasicTable, TableAction, ActionItem } from '/@/components/Table';
-import UserDrawer from './UserDrawer.vue';
-// import UserRecycleBinModal from './UserRecycleBinModal.vue';
-import PasswordModal from './PasswordModal.vue';
-import UserAgentModal from './UserAgentModal.vue';
-import JThirdAppButton from '/@/components/jeecg/thirdApp/JThirdAppButton.vue';
-import { useDrawer } from '/@/components/Drawer';
-import { useListPage } from '/@/hooks/system/useListPage';
-import { useModal } from '/@/components/Modal';
-import { useMessage } from '/@/hooks/web/useMessage';
-import { columns, searchFormSchema } from './user.data';
-import { list, deleteUser, batchDeleteUser, frozenBatch, syncUser } from './user.api';
-import UserPermModal from './UserPermModal.vue';
-// import { usePermission } from '/@/hooks/web/usePermission'
-// const { hasPermission } = usePermission();
-
-const { createMessage, createConfirm } = useMessage();
-
-//注册drawer
-const [registerDrawer, { openDrawer }] = useDrawer();
-//回收站model
-// const [registerModal, { openModal }] = useModal();
-//密码model
-const [registerPasswordModal, { openModal: openPasswordModal }] = useModal();
-//代理人model
-const [registerAgentModal, { openModal: openAgentModal }] = useModal();
-// 授权model
-const [registerPermModal, { openModal: openPermissionModal }] = useModal();
-
-// 列表页面公共参数、方法
-const { prefixCls, tableContext } = useListPage({
-  designScope: 'user-list',
-  tableProps: {
-    title: '用户列表',
-    api: list,
-    columns: columns,
-    size: 'small',
-    formConfig: {
-      // labelWidth: 200,
-      schemas: searchFormSchema,
-    },
-    actionColumn: {
-      width: 120,
-    },
-    beforeFetch(params) {
-      return Object.assign(
-        {
-          column: 'createTime',
-          order: 'desc',
-          thirdType: '_thirdPartyUser',
-        },
-        params
-      );
-    },
-  },
-  // exportConfig: {
-  //   name: '用户列表',
-  //   url: getExportUrl,
-  // },
-  // importConfig: {
-  //   url: getImportUrl,
-  // },
-});
-
-//注册table数据
-const [registerTable, { reload }, { selectedRows, selectedRowKeys }] = tableContext;
-
-/**
- * 新增事件
- */
-function handleCreate() {
-  openDrawer(true, {
-    isUpdate: false,
-    showFooter: true,
-  });
-}
-/**
- * 编辑事件
- */
-async function handleEdit(record: Recordable) {
-  openDrawer(true, {
-    record,
-    isUpdate: true,
-    showFooter: true,
-  });
-}
-/**
- * 详情
- */
-async function handleDetail(record: Recordable) {
-  openDrawer(true, {
-    record,
-    isUpdate: true,
-    showFooter: false,
-  });
-}
-/**
- * 删除事件
- */
-async function handleDelete(record) {
-  if ('admin' == record.username) {
-    createMessage.warning('管理员账号不允许此操作!');
-    return;
-  }
-  await deleteUser({ id: record.id }, reload);
-}
-/**
- * 批量删除事件
- */
-async function batchHandleDelete() {
-  let hasAdmin = unref(selectedRows).filter((item) => item.username == 'admin');
-  if (unref(hasAdmin).length > 0) {
-    createMessage.warning('管理员账号不允许此操作!');
-    return;
-  }
-  await batchDeleteUser({ ids: selectedRowKeys.value }, () => {
-    selectedRowKeys.value = [];
-    reload();
-  });
-}
-/**
- * 成功回调
- */
-function handleSuccess() {
-  reload();
-}
-
-/**
- * 打开修改密码弹窗
- */
-function handleChangePassword(username) {
-  openPasswordModal(true, { username });
-}
-/**
- * 打开代理人弹窗
- */
-function handleAgentSettings(userName) {
-  openAgentModal(true, { userName });
-}
-/**
- * 打开授权弹窗
- */
-function handlePermissionModel(userID) {
-  openPermissionModal(true, { userID });
-}
-/**
- *同步钉钉和微信回调
- */
-function onSyncFinally({ isToLocal }) {
-  // 同步到本地时刷新下数据
-  if (isToLocal) {
-    reload();
-  }
-}
-/**
- * 操作栏
- */
-function getTableAction(record): ActionItem[] {
-  return [
-    {
-      label: '编辑',
-      onClick: handleEdit.bind(null, record),
-      // ifShow: () => hasPermission('system:user:edit'),
-    },
-    {
-      label: '授权',
-      onClick: handlePermissionModel.bind(null, record.username),
-      // ifShow: () => hasPermission('system:user:edit'),
-    },
-  ];
-}
-/**
- * 下拉操作栏
- */
-function getDropDownAction(record): ActionItem[] {
-  return [
-    {
-      label: '详情',
-      onClick: handleDetail.bind(null, record),
-    },
-    {
-      label: '密码',
-      onClick: handleChangePassword.bind(null, record.username),
-    },
-    {
-      label: '删除',
-      popConfirm: {
-        title: '是否确认删除',
-        confirm: handleDelete.bind(null, record),
-      },
-    },
-  ];
-}
-</script>
-
-<style scoped></style>

+ 0 - 196
src/views/vent/dataCenter/user/user.api.ts

@@ -1,196 +0,0 @@
-import { defHttp } from '/@/utils/http/axios';
-import { Modal } from 'ant-design-vue';
-
-enum Api {
-  list = '/sys/user/list',
-  save = '/sys/user/add',
-  edit = '/sys/user/edit',
-  agentSave = '/sys/sysUserAgent/add',
-  agentEdit = '/sys/sysUserAgent/edit',
-  getUserRole = '/sys/user/queryUserRole',
-  duplicateCheck = '/sys/duplicate/check',
-  deleteUser = '/sys/user/delete',
-  deleteBatch = '/sys/user/deleteBatch',
-  // importExcel = '/sys/user/importExcel',
-  // exportXls = '/sys/user/exportXls',
-  recycleBinList = '/sys/user/recycleBin',
-  putRecycleBin = '/sys/user/putRecycleBin',
-  deleteRecycleBin = '/sys/user/deleteRecycleBin',
-  allRolesList = '/sys/role/queryall',
-  allTenantList = '/sys/tenant/queryList',
-  allPostList = '/sys/position/list',
-  userDepartList = '/sys/user/userDepartList',
-  changePassword = '/sys/user/changePassword',
-  frozenBatch = '/sys/user/frozenBatch',
-  getUserAgent = '/sys/sysUserAgent/queryByUserName',
-  syncUser = '/act/process/extActProcess/doSyncUser',
-  apiManageList = '/dataCenter/sys/apiMangage/list',
-  bathAddApiPerm = '/dataCenter/sys/apiMangage/bathAddApiPerm',
-  apiPermPagelist = '/dataCenter/sys/apiMangage/apiPermPagelist',
-}
-
-/**
- * 查询api
- * @param params
- */
-export const apiManageList = (params) =>
-  defHttp.get({
-    url: Api.apiManageList,
-    params,
-  });
-/**
- * api授权接口
- * @param params
- */
-export const bathAddApiPerm = (params) =>
-  defHttp.post({
-    url: Api.bathAddApiPerm,
-    params,
-  });
-/**
- * 查询api已授权接口
- * @param params
- */
-export const apiPermPagelist = (params) =>
-  defHttp.get({
-    url: Api.apiPermPagelist,
-    params,
-  });
-/**
- * 列表接口
- * @param params
- */
-export const list = (params) =>
-  defHttp.get({
-    url: Api.list,
-    params,
-  });
-
-/**
- * 用户角色接口
- * @param params
- */
-export const getUserRoles = (params) => defHttp.get({ url: Api.getUserRole, params }, { errorMessageMode: 'none' });
-
-/**
- * 删除用户
- */
-export const deleteUser = (params, handleSuccess) => {
-  return defHttp.delete({ url: Api.deleteUser, params }, { joinParamsToUrl: true }).then(() => {
-    handleSuccess();
-  });
-};
-/**
- * 批量删除用户
- * @param params
- */
-export const batchDeleteUser = (params, handleSuccess) => {
-  Modal.confirm({
-    title: '确认删除',
-    content: '是否删除选中数据',
-    okText: '确认',
-    cancelText: '取消',
-    onOk: () => {
-      return defHttp.delete({ url: Api.deleteBatch, data: params }, { joinParamsToUrl: true }).then(() => {
-        handleSuccess();
-      });
-    },
-  });
-};
-/**
- * 保存或者更新用户
- * @param params
- */
-export const saveOrUpdateUser = (params, isUpdate) => {
-  const url = isUpdate ? Api.edit : Api.save;
-  return defHttp.post({
-    url: url,
-    params,
-  });
-};
-/**
- * 唯一校验
- * @param params
- */
-export const duplicateCheck = (params) => defHttp.get({ url: Api.duplicateCheck, params }, { isTransformResponse: false });
-/**
- * 获取全部角色
- * @param params
- */
-export const getAllRolesList = (params) => defHttp.get({ url: Api.allRolesList, params });
-/**
- * 获取全部租户
- */
-export const getAllTenantList = (params) => defHttp.get({ url: Api.allTenantList, params });
-/**
- * 获取指定用户负责部门
- */
-export const getUserDepartList = (params) => defHttp.get({ url: Api.userDepartList, params }, { successMessageMode: 'none' });
-/**
- * 获取全部职务
- */
-export const getAllPostList = (params) => {
-  return new Promise((resolve) => {
-    defHttp.get({ url: Api.allPostList, params }).then((res) => {
-      resolve(res.records);
-    });
-  });
-};
-/**
- * 回收站列表
- * @param params
- */
-export const getRecycleBinList = (params) => defHttp.get({ url: Api.recycleBinList, params });
-/**
- * 回收站还原
- * @param params
- */
-export const putRecycleBin = (params, handleSuccess) => {
-  return defHttp.put({ url: Api.putRecycleBin, params }).then(() => {
-    handleSuccess();
-  });
-};
-/**
- * 回收站删除
- * @param params
- */
-export const deleteRecycleBin = (params, handleSuccess) => {
-  return defHttp.delete({ url: Api.deleteRecycleBin, params }, { joinParamsToUrl: true }).then(() => {
-    handleSuccess();
-  });
-};
-/**
- * 修改密码
- * @param params
- */
-export const changePassword = (params) => {
-  return defHttp.put({ url: Api.changePassword, params });
-};
-/**
- * 冻结解冻
- * @param params
- */
-export const frozenBatch = (params, handleSuccess) => {
-  return defHttp.put({ url: Api.frozenBatch, params }).then(() => {
-    handleSuccess();
-  });
-};
-/**
- * 获取用户代理
- * @param params
- */
-export const getUserAgent = (params) => defHttp.get({ url: Api.getUserAgent, params }, { isTransformResponse: false });
-/**
- * 保存或者更新用户代理
- * @param params
- */
-export const saveOrUpdateAgent = (params) => {
-  const url = params.id ? Api.agentEdit : Api.agentSave;
-  return defHttp.post({ url: url, params });
-};
-
-/**
- * 用户同步流程
- * @param params
- */
-export const syncUser = () => defHttp.put({ url: Api.syncUser });

+ 0 - 284
src/views/vent/dataCenter/user/user.data.ts

@@ -1,284 +0,0 @@
-import { BasicColumn } from '/@/components/Table';
-import { FormSchema } from '/@/components/Table';
-import { getAllRolesList, getAllTenantList } from './user.api';
-import { rules } from '/@/utils/helper/validator';
-import { render } from '/@/utils/common/renderUtils';
-
-export const columns: BasicColumn[] = [
-  {
-    title: '用户账号',
-    dataIndex: 'username',
-    width: 80,
-  },
-  {
-    title: '用户姓名',
-    dataIndex: 'realname',
-    width: 80,
-  },
-  {
-    title: '令牌',
-    dataIndex: 'thirdId',
-    width: 150,
-  },
-  {
-    title: '有效期',
-    dataIndex: 'birthday',
-    width: 80,
-  },
-  {
-    title: '状态',
-    dataIndex: 'status_dictText',
-    width: 80,
-  },
-];
-
-export const recycleColumns: BasicColumn[] = [
-  {
-    title: '用户账号',
-    dataIndex: 'username',
-    width: 100,
-  },
-  {
-    title: '用户姓名',
-    dataIndex: 'realname',
-    width: 100,
-  },
-  {
-    title: '头像',
-    dataIndex: 'avatar',
-    width: 80,
-    customRender: render.renderAvatar,
-  },
-  {
-    title: '性别',
-    dataIndex: 'sex',
-    width: 80,
-    sorter: true,
-    customRender: ({ text }) => {
-      return render.renderDict(text, 'sex');
-    },
-  },
-];
-
-export const searchFormSchema: FormSchema[] = [
-  {
-    label: '账号',
-    field: 'username',
-    component: 'JInput',
-    colProps: { span: 6 },
-  },
-  {
-    label: '名字',
-    field: 'realname',
-    component: 'JInput',
-    colProps: { span: 6 },
-  },
-  // {
-  //   label: '性别',
-  //   field: 'sex',
-  //   component: 'JDictSelectTag',
-  //   componentProps: {
-  //     dictCode: 'sex',
-  //     placeholder: '请选择性别',
-  //     stringToNumber: true,
-  //   },
-  //   colProps: { span: 6 },
-  // },
-  // {
-  //   label: '手机号码',
-  //   field: 'phone',
-  //   component: 'Input',
-  //   colProps: { span: 6 },
-  // },
-  // {
-  //   label: '用户状态',
-  //   field: 'status',
-  //   component: 'JDictSelectTag',
-  //   componentProps: {
-  //     dictCode: 'user_status',
-  //     placeholder: '请选择状态',
-  //     stringToNumber: true,
-  //   },
-  //   colProps: { span: 6 },
-  // },
-];
-
-export const formSchema: FormSchema[] = [
-  {
-    label: '',
-    field: 'id',
-    component: 'Input',
-    show: false,
-  },
-  {
-    label: '用户账号',
-    field: 'username',
-    component: 'Input',
-    dynamicDisabled: ({ values }) => {
-      return !!values.id;
-    },
-    dynamicRules: ({ model, schema }) => rules.duplicateCheckRule('sys_user', 'username', model, schema, true),
-  },
-  {
-    label: '登录密码',
-    field: 'password',
-    component: 'StrengthMeter',
-    rules: [
-      {
-        required: true,
-        message: '请输入登录密码',
-      },
-    ],
-  },
-  {
-    label: '确认密码',
-    field: 'confirmPassword',
-    component: 'InputPassword',
-    dynamicRules: ({ values }) => rules.confirmPassword(values, true),
-  },
-  {
-    label: '用户姓名',
-    field: 'realname',
-    required: true,
-    component: 'Input',
-  },
-  {
-    label: '有效期',
-    field: 'birthday',
-    component: 'DatePicker',
-  },
-  {
-    label: '第三方用户',
-    field: 'thirdType',
-    component: 'Input',
-    defaultValue: '_thirdPartyUser',
-    show: false,
-  },
-  // {
-  //   label: '角色',
-  //   field: 'selectedroles',
-  //   component: 'ApiSelect',
-  //   componentProps: {
-  //     mode: 'multiple',
-  //     api: getAllRolesList,
-  //     labelField: 'roleName',
-  //     valueField: 'id',
-  //   },
-  // },
-  {
-    label: '所属部门',
-    field: 'selecteddeparts',
-    component: 'JSelectDept',
-    required: true,
-    componentProps: ({ formActionType, formModel }) => {
-      return {
-        sync: false,
-        checkStrictly: true,
-        defaultExpandLevel: 2,
-
-        onSelect: (options, values) => {
-          const { updateSchema } = formActionType;
-          //所属部门修改后更新负责部门下拉框数据
-          updateSchema([
-            {
-              field: 'departIds',
-              componentProps: { options },
-            },
-          ]);
-          //所属部门修改后更新负责部门数据
-          formModel.departIds && (formModel.departIds = formModel.departIds.filter((item) => values.value.indexOf(item) > -1));
-        },
-      };
-    },
-  },
-];
-
-export const formPasswordSchema: FormSchema[] = [
-  {
-    label: '用户账号',
-    field: 'username',
-    component: 'Input',
-    componentProps: { readOnly: true },
-  },
-  {
-    label: '登录密码',
-    field: 'password',
-    component: 'StrengthMeter',
-    componentProps: {
-      placeholder: '请输入登录密码',
-    },
-    rules: [
-      {
-        required: true,
-        message: '请输入登录密码',
-      },
-    ],
-  },
-  {
-    label: '确认密码',
-    field: 'confirmPassword',
-    component: 'InputPassword',
-    dynamicRules: ({ values }) => rules.confirmPassword(values, true),
-  },
-];
-
-export const formAgentSchema: FormSchema[] = [
-  {
-    label: '',
-    field: 'id',
-    component: 'Input',
-    show: false,
-  },
-  {
-    field: 'userName',
-    label: '用户名',
-    component: 'Input',
-    componentProps: {
-      readOnly: true,
-      allowClear: false,
-    },
-  },
-  {
-    field: 'agentUserName',
-    label: '代理人用户名',
-    required: true,
-    component: 'JSelectUser',
-    componentProps: {
-      rowKey: 'username',
-      labelKey: 'realname',
-      maxSelectCount: 10,
-    },
-  },
-  {
-    field: 'startTime',
-    label: '代理开始时间',
-    component: 'DatePicker',
-    required: true,
-    componentProps: {
-      showTime: true,
-      valueFormat: 'YYYY-MM-DD HH:mm:ss',
-      placeholder: '请选择代理开始时间',
-    },
-  },
-  {
-    field: 'endTime',
-    label: '代理结束时间',
-    component: 'DatePicker',
-    required: true,
-    componentProps: {
-      showTime: true,
-      valueFormat: 'YYYY-MM-DD HH:mm:ss',
-      placeholder: '请选择代理结束时间',
-    },
-  },
-  {
-    field: 'status',
-    label: '状态',
-    component: 'JDictSelectTag',
-    defaultValue: '1',
-    componentProps: {
-      dictCode: 'valid_status',
-      type: 'radioButton',
-    },
-  },
-];

+ 0 - 54
src/views/vent/dataCenter/user/userDetails.vue

@@ -1,54 +0,0 @@
-<template>
-  <Description @register="register" class="mt-4" />
-</template>
-<script lang="ts">
-  import { defineComponent } from 'vue';
-  import { Description, DescItem, useDescription } from '/@/components/Description/index';
-  const mockData = {
-    username: 'test',
-    nickName: 'VB',
-    age: '123',
-    phone: '15695909xxx',
-    email: '190848757@qq.com',
-    addr: '厦门市思明区',
-    sex: '男',
-    certy: '3504256199xxxxxxxxx',
-    tag: 'orange',
-  };
-  const schema: DescItem[] = [
-    {
-      field: 'username',
-      label: '用户名',
-    },
-    {
-      field: 'nickName',
-      label: '昵称',
-      render: (curVal, data) => {
-        return `${data.username}-${curVal}`;
-      },
-    },
-    {
-      field: 'phone',
-      label: '联系电话',
-    },
-    {
-      field: 'email',
-      label: '邮箱',
-    },
-    {
-      field: 'addr',
-      label: '地址',
-    },
-  ];
-  export default defineComponent({
-    components: { Description },
-    setup() {
-      const [register] = useDescription({
-        title: 'useDescription',
-        data: mockData,
-        schema: schema,
-      });
-      return { mockData, schema, register };
-    },
-  });
-</script>

+ 0 - 73
src/views/vent/deviceManager/comment/editWarnTable/index.vue

@@ -1,73 +0,0 @@
-<template>
-  <div class="editWarnTable">
-    <a-form :model="formStates" labelAlign="center" :label-col="{ span: 4 }" :wrapper-col="{ span: 20 }">
-      <a-form-item label="所属煤层:">
-        <a-select v-model:value="formStates.ssmc" placeholder="请选择...">
-          <a-select-option v-for="item in mcList" :value="item.value">{{ item.label }}</a-select-option>
-        </a-select>
-      </a-form-item>
-      <a-form-item label="绿色预警CO:">
-        <a-input v-model:value="formStates.lsco" placeholder="请输入..." />
-      </a-form-item>
-      <a-form-item label="绿色预警CO/CO₂:">
-        <a-input v-model:value="formStates.lsco2" placeholder="请输入..." />
-      </a-form-item>
-      <a-form-item label="黄色预警CO:">
-        <a-input v-model:value="formStates.hsco" placeholder="请输入..." />
-      </a-form-item>
-      <a-form-item label="黄色预警CO/CO₂:">
-        <a-input v-model:value="formStates.hsco2" placeholder="请输入..." />
-      </a-form-item>
-      <a-form-item label="黄色预警C₂H₄:">
-        <a-input v-model:value="formStates.hsc2h4" placeholder="请输入..." />
-      </a-form-item>
-      <a-form-item label="黄色预警C3H8/C2H6:">
-        <a-input v-model:value="formStates.hsc2h6" placeholder="请输入..." />
-      </a-form-item>
-      <a-form-item label="红色预警CO:">
-        <a-input v-model:value="formStates.rsco" placeholder="请输入..." />
-      </a-form-item>
-      <a-form-item label="红色预警CO/CO₂:">
-        <a-input v-model:value="formStates.rsco2" placeholder="请输入..." />
-      </a-form-item>
-      <a-form-item label="红色预警C₂H₄:">
-        <a-input v-model:value="formStates.rsc2h4" placeholder="请输入..." />
-      </a-form-item>
-      <a-form-item label="红色预警C3H8/C2H6:">
-        <a-input v-model:value="formStates.rsc2h6" placeholder="请输入..." />
-      </a-form-item>
-    </a-form>
-  </div>
-</template>
-
-<script setup lang="ts">
-  import { ref, reactive, watch, onMounted } from 'vue';
-  import { sysTypeWarnList } from '../../../monitorManager/alarmMonitor/common.api.ts';
-
-  let formStates = reactive({});
-  let mcList = reactive<any[]>([]);
-
-  //获取煤层列表
-
-  async function getMenuList() {
-    let res = await sysTypeWarnList({ type: 'fire' });
-    mcList.length = 0;
-    if (res.fire && res.fire.length != 0) {
-      res.fire.forEach((el) => {
-        mcList.push({ label: el.systemname, value: el.id });
-      });
-    }
-  }
-  onMounted(() => {
-    getMenuList();
-  });
-</script>
-
-<style lang="less" scoped>
-  .warnTargetFire-brt {
-    width: 100%;
-    height: 600px;
-    padding: 15px;
-    box-sizing: border-box;
-  }
-</style>

+ 0 - 310
src/views/vent/deviceManager/workingFace/CustomNormalTable.vue

@@ -1,310 +0,0 @@
-<template>
-  <div>
-    <BasicTable @register="registerTable" :rowSelection="rowSelection">
-      <template #tableTitle>
-        <a-button preIcon="ant-design:plus-outlined" type="primary" @click="handleAdd">新增</a-button
-        ><span style="color: #f00">(注:新增时请先选择系统类型 <b style="color: rgb(255, 191, 0); font-size: 20px">↑</b>)</span>
-        <a-dropdown v-if="selectedRowKeys.length > 0" :getPopupContainer="getPopupContainer">
-          <template #overlay>
-            <a-menu>
-              <a-menu-item key="1" @click="batchHandleDelete">
-                <Icon icon="ant-design:delete-outlined" />
-                删除
-              </a-menu-item>
-            </a-menu>
-          </template>
-          <a-button
-            >批量操作
-            <Icon style="fontsize: 12px" icon="ant-design:down-outlined" />
-          </a-button>
-        </a-dropdown>
-      </template>
-      <template #action="{ record }">
-        <a class="table-action-link" @click="handleEdit(record)">编辑</a>
-        <a-popconfirm title="确定删除?" @confirm="handleDelete(record)">
-          <a class="table-action-link">删除</a>
-        </a-popconfirm>
-        <slot name="action" v-bind="{ record }"></slot>
-      </template>
-      <template #bodyCell="{ column, record }">
-        <slot name="filterCell" v-bind="{ column, record }"></slot>
-      </template>
-    </BasicTable>
-    <DeviceModal @register="registerModal" @saveOrUpdate="saveOrUpdateHandler" :showTab="showTab" :deviceType="deviceType" />
-    <!-- <DeviceModal v-model:visible="modalVisible" @saveOrUpdate="saveOrUpdateHandler" @close-modal="closeModal" :showTab="showTab"  /> -->
-  </div>
-</template>
-
-<script lang="ts" setup>
-  //ts语法
-  import { ref, provide, reactive, toRaw, defineExpose, watch } from 'vue';
-  import { BasicTable, ActionItem, EditRecordRow, BasicColumn } from '/@/components/Table';
-  import { useModal } from '/@/components/Modal';
-  import DeviceModal from '../comment/DeviceModal.vue';
-  // import { getToken } from '/@/utils/auth';
-  // import { useGlobSetting } from '/@/hooks/setting';
-  import { getTableHeaderColumns } from '/@/hooks/web/useWebColumns';
-  import { useListPage } from '/@/hooks/system/useListPage';
-  import { getPopupContainer } from '/@/utils';
-  import { message } from 'ant-design-vue';
-
-  const props = defineProps({
-    columnsType: {
-      type: String,
-      // required: true,
-    },
-    columns: {
-      type: Array,
-      // required: true,
-      default: () => [],
-    },
-    searchFormSchema: {
-      type: Array,
-      default: () => [],
-    },
-    formSchema: {
-      type: Array,
-      required: true,
-    },
-    list: {
-      type: Function,
-      required: true,
-    },
-    getImportUrl: {
-      type: String,
-    },
-    getExportUrl: {
-      type: String,
-    },
-    deleteById: {
-      type: Function,
-      required: true,
-    },
-    batchDelete: {
-      type: Function,
-    },
-    saveOrUpdate: {
-      type: Function,
-      required: true,
-    },
-    pointList: {
-      type: Function,
-    },
-    showTab: {
-      type: Boolean,
-      default: false,
-    },
-    designScope: {
-      type: String,
-    },
-    title: {
-      type: String,
-    },
-    deviceType: {
-      type: String,
-    },
-  });
-
-  const emit = defineEmits(['submitSuccess', 'editHandler']);
-
-  const isUpdate = ref(false);
-  const record = reactive({});
-  const formSchemaData = ref(props.formSchema);
-  const deviceTypeId = ref('');
-  const pageType = ref('');
-
-  watch(
-    () => props.formSchema,
-    (val) => {
-      formSchemaData.value = val;
-    }
-  );
-
-  provide('formSchema', formSchemaData);
-  provide('isUpdate', isUpdate);
-  provide('formData', record);
-  provide('deviceType', props.deviceType);
-  // const glob = useGlobSetting();
-  const [registerModal, { openModal, closeModal }] = useModal();
-
-  const columnList = getTableHeaderColumns(props.columnsType);
-
-  // 列表页面公共参数、方法
-  const { prefixCls, tableContext, onExportXls, onImportXls, doRequest } = useListPage({
-    designScope: props.designScope,
-    tableProps: {
-      showTableSetting: false,
-      title: props.title,
-      api: props.list,
-      columns: props.columns.length > 0 ? (props.columns as any[]) : columnList,
-      // size: 'small',
-      // bordered: false,
-      showIndexColumn: true,
-      formConfig: {
-        showAdvancedButton: true,
-        // labelWidth: 100,
-        labelAlign: 'left',
-        labelCol: {
-          xs: 24,
-          sm: 24,
-          md: 24,
-          lg: 9,
-          xl: 7,
-          xxl: 5,
-        },
-        schemas: props.searchFormSchema as any[],
-      },
-      useSearchForm: props.searchFormSchema.length > 0 ? true : false,
-      striped: true,
-      actionColumn: {
-        width: 180,
-      },
-      beforeFetch: (params) => {
-        return Object.assign(params, { column: 'createTime', devicekind: props.deviceType });
-      },
-    },
-  });
-
-  //注册table数据
-  const [registerTable, { reload, getForm }, { rowSelection, selectedRowKeys }] = tableContext;
-
-  const saveOrUpdateHandler = async (params) => {
-    try {
-      await props.saveOrUpdate(params, isUpdate.value);
-      !props.showTab ? closeModal() : '';
-      await doRequest(props.list, { confirm: false });
-      emit('submitSuccess', params);
-    } catch (error) {
-      message.error('保存失败,请联系管理员');
-    }
-  };
-
-  // const closeModalFn = () => {
-  //   closeModal()
-  // }
-  /**
-   * 新增事件
-   */
-  function handleAdd() {
-    const searchFormData = getForm().getFieldsValue();
-    if (searchFormData && searchFormData['strtype']) {
-      emit('editHandler', searchFormData);
-      for (let key in record) {
-        if (key == 'strtype') {
-          record[key] = searchFormData['strtype'];
-        } else {
-          delete record[key];
-        }
-      }
-      isUpdate.value = false;
-      openModal(
-        true,
-        {
-          record: { strtype: searchFormData['strtype'] },
-        },
-        false
-      );
-    } else {
-      message.info('请先选择系统类型!!');
-    }
-  }
-
-  /**
-   * 编辑事件
-   */
-  function handleEdit(data) {
-    emit('editHandler', data);
-    isUpdate.value = true;
-    Object.assign(record, toRaw(data));
-    openModal(
-      true,
-      {
-        record,
-      },
-      false
-    );
-  }
-
-  /**
-   * 删除事件
-   */
-  async function handleDelete(record) {
-    await props.deleteById({ id: record.id }, reload);
-  }
-
-  /**
-   * 批量删除事件
-   */
-  async function batchHandleDelete() {
-    doRequest(() => props.batchDelete({ ids: selectedRowKeys.value }));
-  }
-  /**
-   * 查看
-   */
-  // function handleDetail(record) {
-  //   iframeUrl.value = `${glob.uploadUrl}/sys/annountCement/show/${record.id}?token=${getToken()}`;
-  //   openDetail(true);
-  // }
-  /**
-   * 操作列定义
-   * @param record
-   */
-  function getActions(record: EditRecordRow, column: BasicColumn): ActionItem[] {
-    return [
-      {
-        label: '编辑',
-        onClick: handleEdit.bind(null, record, column),
-      },
-      {
-        label: '删除',
-        popConfirm: {
-          title: '是否确认删除',
-          confirm: handleDelete.bind(null, record, column),
-        },
-      },
-      // {
-      //   label: '查看',
-      //   onClick: handleDetail.bind(null, record),
-      // },
-    ];
-  }
-
-  defineExpose({
-    doRequest,
-    onExportXls,
-    onImportXls,
-    reload,
-    getForm,
-  });
-</script>
-
-<style scoped lang="less">
-  @ventSpace: zxm;
-  @vent-table-no-hover: #00bfff10;
-
-  :deep(.@{ventSpace}-table-cell-row-hover) {
-    background: #264d8833 !important;
-  }
-  :deep(.@{ventSpace}-table-row-selected) {
-    background: #268bc522 !important;
-  }
-
-  :deep(.@{ventSpace}-table-tbody > tr > td) {
-    background-color: #0dc3ff05;
-  }
-  :deep(.jeecg-basic-table-row__striped) {
-    td {
-      background-color: @vent-table-no-hover !important;
-    }
-  }
-  :deep(.@{ventSpace}-select-dropdown) {
-    .@{ventSpace}-select-item-option-selected,
-    .@{ventSpace}-select-item-option-active {
-      background-color: #ffffff33 !important;
-    }
-
-    .@{ventSpace}-select-item:hover {
-      background-color: #ffffff33 !important;
-    }
-  }
-</style>

+ 0 - 98
src/views/vent/deviceManager/workingFace/index.vue

@@ -1,98 +0,0 @@
-<template>
-  <div class="device-manager-box">
-    <CustomNormalTable
-      :columns="[]"
-      :searchFormSchema="searchFormSchema"
-      :list="list"
-      :formSchema="formSchema"
-      :deleteById="deleteById"
-      :batchDelete="batchDeleteById"
-      :saveOrUpdate="saveOrUpdate"
-      @edit-handler="changeFormItems"
-      designScope="workingFace-tabel"
-      title="智能管控"
-      :showTab="true"
-      deviceType="managesys"
-      columnsType="managesys_list"
-    />
-  </div>
-</template>
-
-<script lang="ts" name="system-user" setup>
-  //ts语法
-  import { ref, onMounted } from 'vue';
-  import CustomNormalTable from './CustomNormalTable.vue';
-  import { searchFormSchema, commentFormSchema } from './workingFace.data';
-  import { list, deleteById, batchDeleteById, saveOrUpdate } from './workingFace.api';
-
-  import { FormSchema } from '/@/components/Table';
-  import { getFormSchemaColumns } from '/@/hooks/web/useWebColumns';
-
-  const formSchema = ref<FormSchema[]>([]);
-  const isRefresh = ref(false);
-
-  const arrToFormColumns = (tableHeaderColumns = [], strtype) => {
-    const columnList: any[] = [];
-    if (tableHeaderColumns.length > 0) {
-      tableHeaderColumns.forEach((item: any) => {
-        let columnsItem;
-        if (item.type == 1 || item.type == 10) {
-          columnsItem = {
-            label: item.des, //_dictText
-            field: item.monitorcode,
-            component: item.type == 1 ? 'Input' : item.type == 10 ? 'InputTextArea' : '',
-          };
-        } else {
-          if (item.type == 3) {
-            columnsItem = {
-              label: item.des, //_dictText
-              field: item.monitorcode,
-              component: 'RadioGroup',
-              defaultValue: 1,
-              componentProps: () => {
-                return {
-                  options: [
-                    { label: '是', value: 1, key: '1' },
-                    { label: '否', value: 0, key: '2' },
-                  ],
-                  stringToNumber: true,
-                };
-              },
-            };
-          }
-          if (item.type == 4) {
-            columnsItem = {
-              label: item.des, //_dictText
-              field: item.monitorcode,
-              component: 'JDictSelectTag',
-              componentProps: {
-                dictCode: item.dict,
-                placeholder: '请选择',
-                stringToNumber: true,
-              },
-            };
-          }
-        }
-        columnList.push(columnsItem);
-        formSchema.value = [...commentFormSchema(strtype), ...columnList];
-      });
-    } else {
-      formSchema.value = commentFormSchema(strtype) as any[];
-    }
-  };
-
-  const changeFormItems = (data) => {
-    if (data && data['strtype']) {
-      const formSchemaColumns = getFormSchemaColumns(`${data['strtype']}_edit`) || [];
-      arrToFormColumns(formSchemaColumns, data['strtype']);
-      isRefresh.value = true;
-    } else {
-      formSchema.value = commentFormSchema(data['strtype']) as any[];
-      isRefresh.value = true;
-    }
-  };
-
-  onMounted(() => {});
-</script>
-
-<style scoped></style>

+ 0 - 99
src/views/vent/deviceManager/workingFace/workingFace.api.ts

@@ -1,99 +0,0 @@
-import { defHttp } from '/@/utils/http/axios';
-import { Modal } from 'ant-design-vue';
-
-enum Api {
-  list = '/safety/ventanalyManageSystem/list',
-  save = '/safety/ventanalyManageSystem/add',
-  edit = '/safety/ventanalyManageSystem/edit',
-  modalList = '/ventanaly-model/Vmodel/ventanalyModel/list',
-  huifengids = '/ventanaly-jingtaifengliang/xufengController/getXufengHuifengJingtai',
-  xufengids = '/safety/ventanalyManageSystem/queryXufengliangList',
-  caimei = '/ventanaly-jingtaifengliang/xufengController/getXufengCaimeiInfoJingtai',
-  juejin = '/ventanaly-jingtaifengliang/xufengController/getXufengJuejinInfoJingtai',
-  dongshi = '/ventanaly-jingtaifengliang/xufengController/getXufengDongshiInfoJingtai',
-  cheliang = '/ventanaly-jingtaifengliang/xufengController/getXufengCheliangiInfoJingtai',
-  qita = '/ventanaly-jingtaifengliang/xufengController/getXufengOtherInfoJingtai',
-  beiyong = '/ventanaly-jingtaifengliang/xufengController/getXufengBeiyongInfoJingtai',
-  getDeviceIds = '/safety/ventanalyMonitorParams/getdevices',
-  deleteById = '/safety/ventanalyManageSystem/delete',
-  deleteBatch = '/sys/user/deleteBatch',
-  importExcel = '/sys/user/importExcel',
-  exportXls = '/sys/user/exportXls',
-}
-/**
- * 导出api
- * @param params
- */
-export const getExportUrl = Api.exportXls;
-/**
- * 导入api
- */
-export const getImportUrl = Api.importExcel;
-/**
- * 列表接口
- * @param params
- */
-export const list = (params) => defHttp.get({ url: Api.list, params });
-
-/**
- * 列表接口
- * @param params
- */
-export const modalList = (params) => defHttp.get({ url: Api.modalList, params });
-
-/**
- * 列表接口
- * @param params
- */
-export const huifengids = (params) => defHttp.post({ url: Api.huifengids, params });
-
-/**
- * 列表接口
- * @param params
- */
-export const caimei = (params) => defHttp.post({ url: Api.caimei, params });
-export const juejin = (params) => defHttp.post({ url: Api.juejin, params });
-export const dongshi = (params) => defHttp.post({ url: Api.dongshi, params });
-export const cheliang = (params) => defHttp.post({ url: Api.cheliang, params });
-export const qita = (params) => defHttp.post({ url: Api.qita, params });
-export const beiyong = (params) => defHttp.post({ url: Api.beiyong, params });
-
-/**
- * 列表接口
- * @param params
- */
-export const getDeviceIds = (params) => defHttp.get({ url: Api.getDeviceIds, params });
-
-/**
- * 删除用户
- */
-export const deleteById = (params, handleSuccess) => {
-  return defHttp.delete({ url: Api.deleteById, params }, { joinParamsToUrl: true }).then(() => {
-    handleSuccess();
-  });
-};
-/**
- * 批量删除用户
- * @param params
- */
-export const batchDeleteById = (params, handleSuccess) => {
-  Modal.confirm({
-    title: '确认删除',
-    content: '是否删除选中数据',
-    okText: '确认',
-    cancelText: '取消',
-    onOk: () => {
-      return defHttp.delete({ url: Api.deleteBatch, data: params }, { joinParamsToUrl: true }).then(() => {
-        handleSuccess();
-      });
-    },
-  });
-};
-/**
- * 保存或者更新用户
- * @param params
- */
-export const saveOrUpdate = (params, isUpdate) => {
-  const url = isUpdate ? Api.edit : Api.save;
-  return isUpdate ? defHttp.put({ url: url, params }) : defHttp.post({ url: url, params });
-};

+ 0 - 251
src/views/vent/deviceManager/workingFace/workingFace.data.ts

@@ -1,251 +0,0 @@
-import { BasicColumn } from '/@/components/Table';
-import { FormSchema } from '/@/components/Table';
-import { list, modalList, huifengids, beiyong, qita, cheliang, dongshi, juejin, caimei } from './workingFace.api';
-
-export const columns: BasicColumn[] = [
-  {
-    title: '系统名称',
-    dataIndex: 'strname',
-    width: 120,
-  },
-  // {
-  //   title: '系统型号',
-  //   dataIndex: 'strinstallpos',
-  //   width: 100,
-  // },
-  {
-    title: '系统Code',
-    dataIndex: 'nwindowtype_dictText',
-    width: 100,
-  },
-  {
-    title: '类型',
-    dataIndex: 'strtype',
-    width: 80,
-  },
-  {
-    title: '模型ID',
-    dataIndex: 'fperheight',
-    width: 100,
-  },
-  {
-    title: '控制策略',
-    dataIndex: 'nwindow',
-    width: 100,
-  },
-  {
-    title: '风向',
-    width: 150,
-    dataIndex: 'stationname',
-  },
-];
-
-export const recycleColumns: BasicColumn[] = [
-  {
-    title: '名称',
-    dataIndex: 'strname',
-    width: 100,
-  },
-  {
-    title: '是否为常闭型',
-    dataIndex: 'bnormalclose',
-    width: 100,
-  },
-];
-
-export const searchFormSchema: FormSchema[] = [
-  {
-    label: '系统类型',
-    field: 'strtype',
-    component: 'JDictSelectTag',
-    colProps: { span: 6 },
-    componentProps: {
-      dictCode: 'syskind',
-      placeholder: '请选择系统型号',
-    },
-  },
-  {
-    label: '系统名称',
-    field: 'systemname',
-    component: 'Input',
-    colProps: { span: 6 },
-  },
-];
-
-export const commentFormSchema = (strtype) => {
-  return [
-    {
-      label: '',
-      field: 'id',
-      component: 'Input',
-      show: false,
-    },
-    {
-      label: '系统名称',
-      field: 'systemname',
-      component: 'Input',
-    },
-    {
-      label: '系统Code',
-      field: 'code',
-      component: 'Input',
-    },
-    {
-      label: '系统类型',
-      field: 'strtype',
-      component: 'JDictSelectTag',
-      defaultValue: strtype,
-      required: true,
-      componentProps: {
-        disabled: true,
-        dictCode: 'syskind',
-        placeholder: '请选择系统型号',
-      },
-    },
-    {
-      label: '模型ID',
-      field: 'nmodelid',
-      component: 'ApiSelect',
-      componentProps: () => {
-        return {
-          api: modalList,
-          resultField: 'records',
-          labelField: 'strmodelname',
-          valueField: 'nmodelid',
-        };
-      },
-    },
-    {
-      label: '控制策略',
-      field: 'workmode',
-      component: 'JDictSelectTag',
-      componentProps: {
-        dictCode: 'workmode',
-        placeholder: '请选择控制策略',
-        stringToNumber: true,
-      },
-    },
-    {
-      label: '监测类型',
-      field: 'monitorflag_dictText',
-      component: 'JDictSelectTag',
-      componentProps: {
-        dictCode: 'monitorflag',
-        placeholder: '请选择状态',
-      },
-    },
-    {
-      label: '风向',
-      field: 'windkind',
-      component: 'JDictSelectTag',
-      componentProps: {
-        dictCode: 'winddir',
-        placeholder: '请选择风向',
-        stringToNumber: true,
-      },
-    },
-    {
-      label: '所属回风系统',
-      field: 'huifengid',
-      component: 'ApiSelect',
-      componentProps: () => {
-        return {
-          api: huifengids,
-          labelField: 'huifeng_name',
-          valueField: 'id',
-          resultField: 'obj',
-        };
-      },
-    },
-    {
-      label: '关联需风量地点',
-      field: 'xufengliangid',
-      component: 'ApiSelect',
-      componentProps: ({ formModel }) => {
-        let api;
-        if (formModel['strtype'] == 'sys_dongshi') {
-          api = dongshi;
-        } else if (formModel['strtype'] == 'sys_cheliang') {
-          api = cheliang;
-        } else if (formModel['strtype'] == 'sys_surface_juejin') {
-          api = juejin;
-        } else if (formModel['strtype'] == 'sys_surface_caimei') {
-          api = caimei;
-        } else if (formModel['strtype'] == 'sys_surface_beiyong') {
-          api = beiyong;
-        } else if (formModel['strtype'] == 'sys_other') {
-          api = qita;
-        }
-        if (api)
-          return {
-            api: api.bind(null, { id: formModel['huifengid'] }),
-            labelField: 'work_name',
-            valueField: 'id',
-            resultField: 'obj',
-          };
-      },
-    },
-    {
-      label: '模型类型',
-      field: 'strsystype',
-      component: 'JDictSelectTag',
-      componentProps: ({ formModel }) => {
-        if (formModel['strtype']) {
-          console.log('场景类型---->', formModel['strtype']);
-          return {
-            dictCode: `${formModel['strtype']}_modal`,
-            placeholder: '请选择模型类型',
-          };
-        }
-        return {
-          options: [],
-        };
-      },
-    },
-    {
-      label: '是否绑定采空区',
-      field: 'linkEmptyFlag',
-      component: 'RadioGroup',
-      defaultValue: 0,
-      componentProps: ({ formActionType }) => {
-        return {
-          options: [
-            { label: '绑定采空区', value: 1, key: '1' },
-            { label: '不绑定', value: 0, key: '2' },
-          ],
-          onChange: (e: any) => {
-            const { updateSchema } = formActionType;
-            updateSchema({
-              field: 'linkEmpty',
-              label: '绑定采空区ID',
-              component: 'ApiSelect',
-              show: e.target.value == 1 ? true : false,
-              componentProps: () => {
-                return {
-                  api: list.bind(null, { strtype: 'sys_empty', pageSize: 1000 }),
-                  labelField: 'systemname',
-                  valueField: 'id',
-                  resultField: 'records',
-                };
-              },
-            });
-          },
-        };
-      },
-    },
-    {
-      label: '绑定采空区ID',
-      field: 'linkEmpty',
-      component: 'ApiSelect',
-      show: false,
-      componentProps: () => {
-        return {
-          api: list.bind(null, { strtype: 'sys_empty', pageSize: 1000 }),
-          labelField: 'systemname',
-          valueField: 'id',
-          resultField: 'records',
-        };
-      },
-    },
-  ];
-};

+ 0 - 14
src/views/vent/dust/dustMonitorTable/dsut-table.api.ts

@@ -1,14 +0,0 @@
-import { defHttp } from '/@/utils/http/axios';
-
-enum Api {
-  getDustInfo = '/safety/reportLocalData/queryReportData',
-  getFileList = '/safety/reportLocalData/list',
-  getFileListById = '/safety/reportLocalData/queryById',
-}
-/**
- * 获取粉尘监测结果报表
- * @param params
- */
-export const getDustInfoList = (params) => defHttp.post({ url: Api.getDustInfo, params });
-export const getAllFileList = (params) => defHttp.get({ url: Api.getFileList, params });
-export const getAllFileListById = (params) => defHttp.get({ url: Api.getFileListById, params });

+ 0 - 1967
src/views/vent/dust/dustMonitorTable/dust-table.data.ts

@@ -1,1967 +0,0 @@
-export const columns = [
-  {
-    title: '序号',
-    width: 60,
-    align: 'center',
-    customRender: ({ index }: { index: number }) => `${index + 1}`,
-  },
-  {
-    title: '工作场所',
-    dataIndex: 'gzcs',
-    key: 'gzcs',
-    width: 100,
-    align: 'center',
-  },
-  {
-    title: '工种',
-    dataIndex: 'gz',
-    key: 'gz',
-    width: 100,
-    align: 'center',
-  },
-  {
-    title: '监测地点',
-    dataIndex: 'jcdd',
-    key: 'jcdd',
-    width: 100,
-    align: 'center',
-  },
-  {
-    title: '粉尘种类',
-    dataIndex: 'fczl',
-    key: 'fczl',
-    width: 80,
-    align: 'center',
-  },
-  {
-    title: '总尘(短时间监测浓度,mg/m³)',
-    width: 100,
-    align: 'center',
-    children: [
-      {
-        title: '作业工序-生产',
-        dataIndex: 'sc_zcds',
-        key: 'sc_zcds',
-        width: 100,
-        align: 'center',
-      },
-      {
-        title: '作业工序-检修',
-        dataIndex: 'jx_zcds',
-        key: 'jx_zcds',
-        width: 100,
-        align: 'center',
-      },
-    ],
-  },
-  {
-    title: '呼尘(短时间监测浓度,mg/m³)',
-    width: 100,
-    align: 'center',
-    children: [
-      {
-        title: '作业工序-生产',
-        dataIndex: 'sc_hcds',
-        key: 'sc_hcds',
-        width: 100,
-        align: 'center',
-      },
-      {
-        title: '作业工序-检修',
-        dataIndex: 'jx_hcds',
-        key: 'jx_hcds',
-        width: 100,
-        align: 'center',
-      },
-    ],
-  },
-  {
-    title: '总尘(时间加权平均浓度,mg/m³)',
-    dataIndex: 'zcjqpj',
-    key: 'zcjqpj',
-    width: 100,
-    align: 'center',
-  },
-  {
-    title: '呼尘(时间加权平均浓度,mg/m³)',
-    dataIndex: 'hcjqpj',
-    key: 'hcjqpj',
-    width: 100,
-    align: 'center',
-  },
-  {
-    title: '总尘容许浓度(mg/m³)',
-    children: [
-      {
-        title: '短时间监测浓度',
-        dataIndex: 'zcrxd_ds',
-        key: 'zcrxd_ds',
-        width: 100,
-        align: 'center',
-      },
-      {
-        title: '时间加权平均浓度',
-        dataIndex: 'zcrxd_jqpj',
-        key: 'zcrxd_jqpj',
-        width: 120,
-        align: 'center',
-      },
-    ],
-  },
-  {
-    title: '呼尘容许浓度(mg/m³)',
-    children: [
-      {
-        title: '短时间监测浓度',
-        dataIndex: 'hcrxd_ds',
-        key: 'hcrxd_ds',
-        width: 120,
-        align: 'center',
-      },
-      {
-        title: '时间加权平均浓度',
-        dataIndex: 'hcrxd_jqpj',
-        key: 'hcrxd_jqpj',
-        width: 120,
-        align: 'center',
-      },
-    ],
-  },
-];
-export const Dltcolumns = [
-  {
-    title: '序号',
-    width: 60,
-    align: 'center',
-    customRender: ({ index }: { index: number }) => `${index + 1}`,
-  },
-  {
-    title: '监测地点',
-    dataIndex: 'jcdd',
-    key: 'jcdd',
-    width: 100,
-    align: 'center',
-  },
-  {
-    title: '粉尘种类',
-    dataIndex: 'fczl',
-    key: 'fczl',
-    width: 80,
-    align: 'center',
-  },
-  {
-    title: '总尘(短时间监测浓度,单位:mg/m³)',
-    width: 100,
-    align: 'center',
-    children: [
-      {
-        title: '作业工序-生产',
-        dataIndex: 'sc_zcds',
-        key: 'sc_zcds',
-        width: 100,
-        align: 'center',
-      },
-      {
-        title: '作业工序-检修',
-        dataIndex: 'jx_zcds',
-        key: 'jx_zcds',
-        width: 100,
-        align: 'center',
-      },
-    ],
-  },
-  {
-    title: '呼尘(短时间监测浓度,单位:mg/m³)',
-    width: 100,
-    align: 'center',
-    children: [
-      {
-        title: '作业工序-生产',
-        dataIndex: 'sc_hcds',
-        key: 'sc_hcds',
-        width: 100,
-        align: 'center',
-      },
-      {
-        title: '作业工序-检修',
-        dataIndex: 'jx_hcds',
-        key: 'jx_hcds',
-        width: 100,
-        align: 'center',
-      },
-    ],
-  },
-  {
-    title: '总尘(时间加权平均浓度,单位:mg/m³)',
-    dataIndex: 'zcjqpj',
-    key: 'zcjqpj',
-    width: 100,
-    align: 'center',
-  },
-  {
-    title: '呼尘(时间加权平均浓度,单位:mg/m³)',
-    dataIndex: 'hcjqpj',
-    key: 'hcjqpj',
-    width: 100,
-    align: 'center',
-  },
-];
-export const Swcolumns = [
-  {
-    title: '序号',
-    width: 60,
-    align: 'center',
-    customRender: ({ index }: { index: number }) => `${index + 1}`,
-  },
-  {
-    title: '班次',
-    dataIndex: 'class',
-    key: 'class',
-    width: 100,
-    align: 'center',
-  },
-  {
-    title: '工作场所',
-    dataIndex: 'gzcs',
-    key: 'gzcs',
-    width: 100,
-    align: 'center',
-  },
-  {
-    title: '监测地点',
-    dataIndex: 'jcdd',
-    key: 'jcdd',
-    width: 100,
-    align: 'center',
-  },
-  {
-    title: '粉尘种类',
-    dataIndex: 'fczl',
-    key: 'fczl',
-    width: 80,
-    align: 'center',
-  },
-  {
-    title: '总尘(时间加权平均浓度,单位:mg/m³)',
-    dataIndex: 'zcjqpj',
-    key: 'zcjqpj',
-    width: 100,
-    align: 'center',
-  },
-  {
-    title: '呼尘(时间加权平均浓度,单位:mg/m³)',
-    dataIndex: 'hcjqpj',
-    key: 'hcjqpj',
-    width: 100,
-    align: 'center',
-  },
-];
-export const Hjtcolumns = [
-  {
-    title: '序号',
-    width: 60,
-    align: 'center',
-    customRender: ({ index }: { index: number }) => `${index + 1}`,
-  },
-  {
-    title: '监测地点',
-    dataIndex: 'jcdd',
-    key: 'jcdd',
-    width: 150,
-    align: 'center',
-  },
-  {
-    title: '作业环境(工序)',
-    dataIndex: 'fczl',
-    key: 'fczl',
-    width: 80,
-    align: 'center',
-  },
-  {
-    title: '生产期间粉尘浓度(mg/m³)',
-    width: 100,
-    align: 'center',
-    children: [
-      {
-        title: '总尘',
-        dataIndex: 'sc_zcds',
-        key: 'sc_zcds',
-        width: 80,
-        align: 'center',
-      },
-      {
-        title: '呼尘',
-        dataIndex: 'sc_hcds',
-        key: 'sc_hcds',
-        width: 80,
-        align: 'center',
-      },
-      {
-        title: '正常生产时间',
-        dataIndex: 'sc_sj',
-        key: 'sc_sj',
-        width: 100,
-        align: 'center',
-      },
-    ],
-  },
-  {
-    title: '检修期间粉尘浓度(mg/m³)',
-    width: 100,
-    align: 'center',
-    children: [
-      {
-        title: '总尘',
-        dataIndex: 'jx_zcds',
-        key: 'jx_zcds',
-        width: 80,
-        align: 'center',
-      },
-      {
-        title: '呼尘',
-        dataIndex: 'jx_hcds',
-        key: 'jx_hcds',
-        width: 80,
-        align: 'center',
-      },
-      {
-        title: '停机检修时间',
-        dataIndex: 'jx_sj',
-        key: 'jx_sj',
-        width: 100,
-        align: 'center',
-      },
-    ],
-  },
-  {
-    title: '时间加权平均浓度(mg/m³)',
-    width: 100,
-    align: 'center',
-    children: [
-      {
-        title: '总尘',
-        dataIndex: 'zcjqpj',
-        key: 'zcjqpj',
-        width: 80,
-        align: 'center',
-      },
-      {
-        title: '是否合格',
-        dataIndex: 'zcsfhgjqpj',
-        key: 'zcsfhgjqpj',
-        width: 80,
-        align: 'center',
-      },
-      {
-        title: '呼尘',
-        dataIndex: 'hcjqpj',
-        key: 'hcjqpj',
-        width: 80,
-        align: 'center',
-      },
-      {
-        title: '是否合格',
-        dataIndex: 'hcsfhgjqpj',
-        key: 'hcsfhgjqpj',
-        width: 80,
-        align: 'center',
-      },
-    ],
-  },
-  {
-    title: '采取措施',
-    dataIndex: 'smark',
-    key: 'smark',
-    width: 80,
-    align: 'center',
-  },
-];
-export const Bdcolumns = [
-  {
-    title: '序号',
-    width: 60,
-    align: 'center',
-    dataIndex: 'xh',
-  },
-  {
-    title: '测定地点',
-    dataIndex: 'jcdd',
-    key: 'jcdd',
-    width: 150,
-    align: 'center',
-  },
-  {
-    title: '作业环境(工序)',
-    dataIndex: 'zyhj',
-    key: 'zyhj',
-    width: 80,
-    align: 'center',
-  },
-  {
-    title: '粉尘浓度(mg/m³)',
-    width: 100,
-    align: 'center',
-    children: [
-      {
-        title: '全尘',
-        dataIndex: 'qc',
-        key: 'qc',
-        width: 80,
-        align: 'center',
-      },
-      {
-        title: '呼尘',
-        dataIndex: 'hc',
-        key: 'hc',
-        width: 80,
-        align: 'center',
-      },
-    ],
-  },
-  {
-    title: '备注',
-    dataIndex: 'smark',
-    key: 'smark',
-    width: 80,
-    align: 'center',
-  },
-];
-export const Bltcolumns = [
-  {
-    title: '序号',
-    width: 60,
-    align: 'center',
-    dataIndex: 'xh',
-  },
-  {
-    title: '工作面',
-    dataIndex: 'gzm',
-    key: 'gzm',
-    width: 150,
-    align: 'center',
-  },
-  {
-    title: '监测地点',
-    dataIndex: 'jcdd',
-    key: 'jcdd',
-    width: 150,
-    align: 'center',
-  },
-  {
-    title: '生产工艺',
-    dataIndex: 'scgy',
-    key: 'scgy',
-    width: 80,
-    align: 'center',
-  },
-  {
-    title: '粉尘浓度(mg/m³)',
-    width: 100,
-    align: 'center',
-    children: [
-      {
-        title: '总粉尘',
-        dataIndex: 'sc_zcds',
-        key: 'sc_zcds',
-        width: 80,
-        align: 'center',
-      },
-      {
-        title: '呼吸性粉尘',
-        dataIndex: 'sc_hcds',
-        key: 'sc_hcds',
-        width: 80,
-        align: 'center',
-      },
-    ],
-  },
-  {
-    title: '防尘措施',
-    dataIndex: 'fccs',
-    key: 'fccs',
-    width: 80,
-    align: 'center',
-  },
-  {
-    title: '测尘日期',
-    dataIndex: 'ccrq',
-    key: 'ccrq',
-    width: 80,
-    align: 'center',
-  },
-  {
-    title: '测尘人',
-    dataIndex: 'ccr',
-    key: 'ccr',
-    width: 80,
-    align: 'center',
-  },
-  {
-    title: '测尘仪编号',
-    dataIndex: 'ccybh',
-    key: 'ccybh',
-    width: 80,
-    align: 'center',
-  },
-  {
-    title: '备注',
-    dataIndex: 'smark',
-    key: 'smark',
-    width: 80,
-    align: 'center',
-  },
-];
-export const Sgtcolumns = [
-  {
-    title: '序号',
-    width: 60,
-    align: 'center',
-    dataIndex: 'xh',
-  },
-  {
-    title: '测定地点',
-    dataIndex: 'jcdd',
-    key: 'jcdd',
-    width: 150,
-    align: 'center',
-  },
-  {
-    title: '作业环境(工序)',
-    dataIndex: 'scgy',
-    key: 'scgy',
-    width: 80,
-    align: 'center',
-  },
-  {
-    title: '粉尘浓度(mg/m³)',
-    width: 100,
-    align: 'center',
-    children: [
-      {
-        title: '全尘',
-        dataIndex: 'sc_zcds',
-        key: 'sc_zcds',
-        width: 80,
-        align: 'center',
-      },
-      {
-        title: '呼尘',
-        dataIndex: 'sc_hcds',
-        key: 'sc_hcds',
-        width: 80,
-        align: 'center',
-      },
-    ],
-  },
-  {
-    title: '测尘员',
-    dataIndex: 'ccr',
-    key: 'ccr',
-    width: 80,
-    align: 'center',
-  },
-  {
-    title: '备注',
-    dataIndex: 'smark',
-    key: 'smark',
-    width: 80,
-    align: 'center',
-  },
-];
-export const Yjlcolumns = [
-  {
-    title: '序号',
-    width: 60,
-    align: 'center',
-    dataIndex: 'xh',
-  },
-  {
-    title: '测定地点',
-    dataIndex: 'jcdd',
-    key: 'jcdd',
-    width: 150,
-    align: 'center',
-  },
-  {
-    title: '作业环境(工序)',
-    dataIndex: 'zyhj',
-    key: 'zyhj',
-    width: 80,
-    align: 'center',
-  },
-  {
-    title: '防尘措施',
-    dataIndex: 'fccs',
-    key: 'fccs',
-    width: 80,
-    align: 'center',
-  },
-  {
-    title: '采样流量(L/min)',
-    dataIndex: 'cyll',
-    key: 'cyll',
-    width: 80,
-    align: 'center',
-  },
-  {
-    title: '采样时间(min)',
-    dataIndex: 'cysj',
-    key: 'cysj',
-    width: 80,
-    align: 'center',
-  },
-  {
-    title: '采样体积(L)',
-    dataIndex: 'cytj',
-    key: 'cytj',
-    width: 80,
-    align: 'center',
-  },
-  {
-    title: '粉尘浓度(mg/m³)',
-    width: 100,
-    align: 'center',
-    children: [
-      {
-        title: '总粉尘',
-        dataIndex: 'zcfcnd',
-        key: 'zcfcnd',
-        width: 80,
-        align: 'center',
-      },
-      {
-        title: '呼尘',
-        dataIndex: 'hcfcnd',
-        key: 'hcfcnd',
-        width: 80,
-        align: 'center',
-      },
-    ],
-  },
-  {
-    title: '备注',
-    dataIndex: 'smark',
-    key: 'smark',
-    width: 80,
-    align: 'center',
-  },
-];
-export const Cctrkcolumns = [
-  {
-    title: '序号',
-    width: 60,
-    align: 'center',
-    dataIndex: 'xh',
-  },
-  {
-    title: '测定地点',
-    dataIndex: 'jcdd',
-    key: 'jcdd',
-    width: 150,
-    align: 'center',
-  },
-  {
-    title: '粉尘种类',
-    dataIndex: 'fczl',
-    key: 'fczl',
-    width: 80,
-    align: 'center',
-  },
-  {
-    title: '作业环境(工序)',
-    dataIndex: 'zyhj',
-    key: 'zyhj',
-    width: 80,
-    align: 'center',
-  },
-  {
-    title: '总粉尘(短时间检查浓度,mg/m³)',
-    dataIndex: 'zcjqpj',
-    key: 'zcjqpj',
-    width: 100,
-    align: 'center',
-  },
-  {
-    title: '呼吸性粉尘(短时间检查浓度,mg/m³)',
-    dataIndex: 'hcjqpj',
-    key: 'hcjqpj',
-    width: 100,
-    align: 'center',
-  },
-  {
-    title: '总尘容许浓度(短时间监测浓度,mg/m³)',
-    dataIndex: 'zcrxnd',
-    key: 'zcrxnd',
-    width: 100,
-    align: 'center',
-  },
-  {
-    title: '呼尘容许浓度(短时间监测浓度,mg/m³)',
-    dataIndex: 'hcrxnd',
-    key: 'hcrxnd',
-    width: 100,
-    align: 'center',
-  },
-];
-export const Wlmlcolumns = [
-  {
-    title: '序号',
-    width: 60,
-    align: 'center',
-    dataIndex: 'xh',
-  },
-  {
-    title: '测定地点',
-    dataIndex: 'jcdd',
-    key: 'jcdd',
-    width: 150,
-    align: 'center',
-  },
-
-  {
-    title: '作业环境(工序)',
-    dataIndex: 'zyhj',
-    key: 'zyhj',
-    width: 80,
-    align: 'center',
-  },
-  {
-    title: '粉尘浓度(mg/m³)',
-    width: 100,
-    align: 'center',
-    children: [
-      {
-        title: '总尘',
-        dataIndex: 'sc_zcds',
-        key: 'sc_zcds',
-        width: 80,
-        align: 'center',
-      },
-      {
-        title: '呼尘',
-        dataIndex: 'sc_hcds',
-        key: 'sc_hcds',
-        width: 80,
-        align: 'center',
-      },
-    ],
-  },
-  {
-    title: '测尘员',
-    dataIndex: 'ccy',
-    key: 'ccy',
-    width: 80,
-    align: 'center',
-  },
-  {
-    title: '备注',
-    dataIndex: 'smark',
-    key: 'smark',
-    width: 80,
-    align: 'center',
-  },
-];
-export const Cctkcolumns = [
-  {
-    title: '序号',
-    width: 60,
-    align: 'center',
-    dataIndex: 'xh',
-  },
-  {
-    title: '测尘地点',
-    dataIndex: 'jcdd',
-    key: 'jcdd',
-    width: 150,
-    align: 'center',
-  },
-
-  {
-    title: '作业环境(工序)',
-    dataIndex: 'zyhj',
-    key: 'zyhj',
-    width: 80,
-    align: 'center',
-  },
-  {
-    title: '粉尘浓度(mg/m³)',
-    width: 100,
-    align: 'center',
-    children: [
-      {
-        title: '总尘',
-        dataIndex: 'sc_zcds',
-        key: 'sc_zcds',
-        width: 80,
-        align: 'center',
-      },
-      {
-        title: '呼尘',
-        dataIndex: 'sc_hcds',
-        key: 'sc_hcds',
-        width: 80,
-        align: 'center',
-      },
-    ],
-  },
-  {
-    title: '测尘员',
-    dataIndex: 'ccy',
-    key: 'ccy',
-    width: 80,
-    align: 'center',
-  },
-  {
-    title: '备注',
-    dataIndex: 'smark',
-    key: 'smark',
-    width: 80,
-    align: 'center',
-  },
-];
-export const Jinjiecolumns = [
-  {
-    title: '序号',
-    width: 60,
-    align: 'center',
-    dataIndex: 'xh',
-  },
-  {
-    title: '测尘地点',
-    dataIndex: 'ccdd',
-    key: 'ccdd',
-    width: 150,
-    align: 'center',
-  },
-  {
-    title: '生产工艺',
-    dataIndex: 'zyhj',
-    key: 'zyhj',
-    width: 80,
-    align: 'center',
-  },
-  {
-    title: '测尘位置',
-    dataIndex: 'jcdd',
-    key: 'jcdd',
-    width: 120,
-    align: 'center',
-  },
-  {
-    title: '防尘措施',
-    dataIndex: 'fccs',
-    key: 'fccs',
-    width: 120,
-    align: 'center',
-  },
-  {
-    title: '采样时间(s)',
-    width: 100,
-    align: 'center',
-    children: [
-      {
-        title: '总粉尘',
-        dataIndex: 'cysj_zc',
-        key: 'cysj_zc',
-        width: 80,
-        align: 'center',
-      },
-      {
-        title: '呼吸性粉尘',
-        dataIndex: 'cysj_hc',
-        key: 'cysj_hc',
-        width: 80,
-        align: 'center',
-      },
-    ],
-  },
-  {
-    title: '粉尘浓度(mg/m³)',
-    width: 100,
-    align: 'center',
-    children: [
-      {
-        title: '总粉尘',
-        dataIndex: 'sc_zcds',
-        key: 'sc_zcds',
-        width: 80,
-        align: 'center',
-      },
-      {
-        title: '呼吸性粉尘',
-        dataIndex: 'sc_hcds',
-        key: 'sc_hcds',
-        width: 80,
-        align: 'center',
-      },
-    ],
-  },
-  {
-    title: '检测时间',
-    dataIndex: 'jcsj',
-    key: 'jcsj',
-    width: 80,
-    align: 'center',
-  },
-  {
-    title: '备注',
-    dataIndex: 'smark',
-    key: 'smark',
-    width: 80,
-    align: 'center',
-  },
-];
-export const Hlgcolumns = [
-  {
-    title: '序号',
-    width: 60,
-    align: 'center',
-    dataIndex: 'xh',
-  },
-  {
-    title: '测尘地点',
-    dataIndex: 'jcdd',
-    key: 'jcdd',
-    width: 150,
-    align: 'center',
-  },
-  {
-    title: '作业环境(工序)',
-    dataIndex: 'zyhj',
-    key: 'zyhj',
-    width: 80,
-    align: 'center',
-  },
-  {
-    title: '检修班工作8h粉尘浓度',
-    width: 100,
-    align: 'center',
-    children: [
-      {
-        title: '检修4h粉尘浓度(mg/m³)',
-        align: 'center',
-        children: [
-          { title: '总尘', dataIndex: 'jx4h_zc', key: 'jx4h_zc', width: 80, align: 'center' },
-          { title: '呼尘', dataIndex: 'jx4h_hc', key: 'jx4h_hc', width: 80, align: 'center' },
-        ],
-      },
-      {
-        title: '生产4h粉尘浓度(mg/m³)',
-        align: 'center',
-        children: [
-          { title: '总尘', dataIndex: 'sc4h_zc', key: 'sc4h_zc', width: 80, align: 'center' },
-          { title: '呼尘', dataIndex: 'sc4h_hc', key: 'sc4h_hc', width: 80, align: 'center' },
-        ],
-      },
-      {
-        title: '检修班工作8h时间加权平均粉尘浓度(mg/m³)',
-        align: 'center',
-        children: [
-          { title: '总尘', dataIndex: 'jx8h_zc', key: 'jx8h_zc', width: 80, align: 'center' },
-          { title: '呼尘', dataIndex: 'jx8h_hc', key: 'jx8h_hc', width: 80, align: 'center' },
-        ],
-      },
-    ],
-  },
-  {
-    title: '生产班工作8h粉尘浓度',
-    width: 100,
-    align: 'center',
-    children: [
-      {
-        title: '生产班工作8h时间加权平均粉尘浓度(mg/m³)',
-        align: 'center',
-        children: [
-          { title: '总尘', dataIndex: 'sc8h_zc', key: 'sc8h_zc', width: 80, align: 'center' },
-          { title: '呼尘', dataIndex: 'sc8h_hc', key: 'sc8h_hc', width: 80, align: 'center' },
-        ],
-      },
-    ],
-  },
-  {
-    title: '除尘风机降尘率(%)',
-    width: 80,
-    align: 'center',
-    children: [
-      { title: '总尘', dataIndex: 'jccfjjcl_zc', key: 'jccfjjcl_zc', width: 80, align: 'center' },
-      { title: '呼尘', dataIndex: 'jccfjjcl_hc', key: 'jccfjjcl_hc', width: 80, align: 'center' },
-    ],
-  },
-  {
-    title: '测尘员',
-    dataIndex: 'smark',
-    key: 'smark',
-    width: 80,
-    align: 'center',
-  },
-];
-export const Ltcolumns = [
-  {
-    title: '序号',
-    width: 60,
-    align: 'center',
-    dataIndex: 'xh',
-  },
-  {
-    title: '测尘地点',
-    dataIndex: 'jcdd',
-    key: 'jcdd',
-    width: 150,
-    align: 'center',
-  },
-  {
-    title: '作业环境(工序)',
-    dataIndex: 'zyhj',
-    key: 'zyhj',
-    width: 80,
-    align: 'center',
-  },
-  {
-    title: '粉尘浓度(mg/m³)',
-    width: 100,
-    align: 'center',
-    children: [
-      {
-        title: '总粉尘',
-        dataIndex: 'sc_zcds',
-        key: 'sc_zcds',
-        width: 80,
-        align: 'center',
-      },
-      {
-        title: '呼吸性粉尘',
-        dataIndex: 'sc_hcds',
-        key: 'sc_hcds',
-        width: 80,
-        align: 'center',
-      },
-    ],
-  },
-  {
-    title: '测尘员',
-    dataIndex: 'ccy',
-    key: 'ccy',
-    width: 80,
-    align: 'center',
-  },
-  {
-    title: '备注',
-    dataIndex: 'smark',
-    key: 'smark',
-    width: 80,
-    align: 'center',
-  },
-];
-//监测字段
-export const fieldMapping = {
-  sc_zcds: '总尘-作业工序-生产(短时间监测浓度,mg/m³)',
-  jx_zcds: '总尘-作业工序-检修(短时间监测浓度,mg/m³)',
-  sc_hcds: '呼尘-作业工序-生产(短时间监测浓度,mg/m³)',
-  jx_hcds: '呼尘-作业工序-检修(短时间监测浓度,mg/m³)',
-  zcjqpj: '总尘(时间加权平均浓度,mg/m³)',
-  hcjqpj: '呼尘(时间加权平均浓度,mg/m³)',
-  zcrxd_ds: '总尘容许浓度(短时间监测浓度,mg/m³)',
-  zcrxd_jqpj: '总尘容许浓度(时间加权平均浓度,mg/m³)',
-  hcrxd_ds: '呼尘容许浓度(短时间监测浓度,mg/m³)',
-  hcrxd_jqpj: '呼尘容许浓度(时间加权平均浓度,mg/m³)',
-};
-export const fieldDltMapping = {
-  sc_zcds: '总尘-作业工序-生产(短时间监测浓度,mg/m³)',
-  jx_zcds: '总尘-作业工序-检修(短时间监测浓度,mg/m³)',
-  sc_hcds: '呼尘-作业工序-生产(短时间监测浓度,mg/m³)',
-  jx_hcds: '呼尘-作业工序-检修(短时间监测浓度,mg/m³)',
-  zcjqpj: '总尘(时间加权平均浓度,mg/m³)',
-  hcjqpj: '呼尘(时间加权平均浓度,mg/m³)',
-};
-export const fieldSwMapping = {
-  zcjqpj: '总尘(时间加权平均浓度,mg/m³)',
-  hcjqpj: '呼尘(时间加权平均浓度,mg/m³)',
-};
-export const fieldHjtMapping = {
-  sc_zcds: '总尘(生产期间粉尘浓度,mg/m³)',
-  sc_hcds: '呼尘(生产期间粉尘浓度,mg/m³)',
-  jx_zcds: '总尘(检修期间粉尘浓度,mg/m³)',
-  jx_hcds: '呼尘(检修期间粉尘浓度,mg/m³)',
-  zcjqpj: '总尘(时间加权平均浓度,mg/m³)',
-  hcjqpj: '呼尘(时间加权平均浓度,mg/m³)',
-};
-export const fieldBdMapping = {
-  qc: '总尘(粉尘浓度,mg/m³)',
-  hc: '呼尘(粉尘浓度,mg/m³)',
-};
-export const fieldBltMapping = {
-  sc_zcds: '总尘(粉尘浓度,mg/m³)',
-  sc_hcds: '呼尘(粉尘浓度,mg/m³)',
-};
-export const fieldSgtMapping = {
-  sc_zcds: '全尘(粉尘浓度,mg/m³)',
-  sc_hcds: '呼尘(粉尘浓度,mg/m³)',
-};
-export const fieldYjlMapping = {
-  zcfcnd: '总粉尘(粉尘浓度,mg/m³)',
-  hcfcnd: '呼尘(粉尘浓度,mg/m³)',
-};
-export const fieldCctrkMapping = {
-  zcjqpj: '总粉尘(短时间检查浓度,mg/m³)',
-  hcjqpj: '呼吸性粉尘(短时间检查浓度,mg/m³)',
-  zcrxnd: '总尘容许浓度(短时间监测浓度,mg/m³)',
-  hcrxnd: '呼尘容许浓度(短时间监测浓度,mg/m³)',
-};
-export const fieldWlmlMapping = {
-  sc_zcds: '总尘(粉尘浓度,mg/m³)',
-  sc_hcds: '呼尘(粉尘浓度,mg/m³)',
-};
-export const fieldJinjieMapping = {
-  sc_zcds: '总粉尘(粉尘浓度,mg/m³)',
-  sc_hcds: '呼吸性粉尘(粉尘浓度,mg/m³)',
-};
-export const fieldHlgMapping = {
-  jx4h_zc: '检修4h粉尘浓度(mg/m³)-总尘',
-  jx4h_hc: '检修4h粉尘浓度(mg/m³)-呼尘',
-  sc4h_zc: '生产4h粉尘浓度(mg/m³)-总尘',
-  sc4h_hc: '生产4h粉尘浓度(mg/m³)-呼尘',
-  jx8h_zc: '检修班工作8h时间加权平均粉尘浓度(mg/m³)-总尘',
-  jx8h_hc: '检修班工作8h时间加权平均粉尘浓度(mg/m³)-呼尘',
-  sc8h_zc: '生产班工作8h时间加权平均粉尘浓度(mg/m³)-总尘',
-  sc8h_hc: '生产班工作8h时间加权平均粉尘浓度(mg/m³)-呼尘',
-};
-export const fieldLtMapping = {
-  sc_zcds: '总粉尘(粉尘浓度,mg/m³)',
-  sc_hcds: '呼吸性粉尘(粉尘浓度,mg/m³)',
-};
-// 检测地点
-export const dataColumns = [
-  {
-    title: '监测字段',
-    align: 'center',
-    dataIndex: 'key',
-    key: 'key',
-    width: 200,
-    customRender: ({ text }) => fieldMapping[text] || text,
-  },
-  {
-    title: '最大值',
-    dataIndex: 'value',
-    align: 'center',
-    width: 100,
-    key: 'value',
-  },
-  {
-    title: '工种',
-    width: 100,
-    dataIndex: 'gz',
-    align: 'center',
-    key: 'gz',
-  },
-  {
-    width: 100,
-    align: 'center',
-    title: '监测地点',
-    dataIndex: 'jcdd',
-    key: 'jcdd',
-  },
-  {
-    width: 100,
-    align: 'center',
-    title: '粉尘种类',
-    dataIndex: 'fczl',
-    key: 'fczl',
-  },
-];
-export const dataDltColumns = [
-  {
-    title: '监测字段',
-    align: 'center',
-    dataIndex: 'key',
-    key: 'key',
-    width: 130,
-    customRender: ({ text }) => fieldDltMapping[text] || text,
-  },
-  {
-    title: '最大值',
-    dataIndex: 'value',
-    align: 'center',
-    width: 100,
-    key: 'value',
-  },
-  {
-    width: 130,
-    align: 'center',
-    title: '监测地点',
-    dataIndex: 'jcdd',
-    key: 'jcdd',
-  },
-  {
-    width: 100,
-    align: 'center',
-    title: '粉尘种类',
-    dataIndex: 'fczl',
-    key: 'fczl',
-  },
-];
-export const dataSwColumns = [
-  {
-    title: '监测字段',
-    align: 'center',
-    dataIndex: 'key',
-    key: 'key',
-    width: 200,
-    customRender: ({ text }) => fieldSwMapping[text] || text,
-  },
-  {
-    title: '最大值',
-    dataIndex: 'value',
-    align: 'center',
-    width: 100,
-    key: 'value',
-  },
-  {
-    width: 100,
-    align: 'center',
-    title: '监测地点',
-    dataIndex: 'jcdd',
-    key: 'jcdd',
-  },
-  {
-    width: 100,
-    align: 'center',
-    title: '粉尘种类',
-    dataIndex: 'fczl',
-    key: 'fczl',
-  },
-];
-export const dataHjtColumns = [
-  {
-    title: '监测字段',
-    align: 'center',
-    dataIndex: 'key',
-    key: 'key',
-    width: 100,
-    customRender: ({ text }) => fieldHjtMapping[text] || text,
-  },
-  {
-    title: '最大值',
-    dataIndex: 'value',
-    align: 'center',
-    width: 100,
-    key: 'value',
-  },
-  {
-    width: 100,
-    align: 'center',
-    title: '监测地点',
-    dataIndex: 'jcdd',
-    key: 'jcdd',
-  },
-  {
-    width: 100,
-    align: 'center',
-    title: '作业环境(工序)',
-    dataIndex: 'fczl',
-    key: 'fczl',
-  },
-];
-export const dataBdColumns = [
-  {
-    title: '监测字段',
-    align: 'center',
-    dataIndex: 'key',
-    key: 'key',
-    width: 100,
-    customRender: ({ text }) => fieldBdMapping[text] || text,
-  },
-  {
-    title: '最大值',
-    dataIndex: 'value',
-    align: 'center',
-    width: 100,
-    key: 'value',
-  },
-  {
-    width: 100,
-    align: 'center',
-    title: '监测地点',
-    dataIndex: 'jcdd',
-    key: 'jcdd',
-  },
-  {
-    width: 100,
-    align: 'center',
-    title: '作业环境(工序)',
-    dataIndex: 'zyhj',
-    key: 'zyhj',
-  },
-];
-export const dataBltColumns = [
-  {
-    title: '监测字段',
-    align: 'center',
-    dataIndex: 'key',
-    key: 'key',
-    width: 100,
-    customRender: ({ text }) => fieldBltMapping[text] || text,
-  },
-  {
-    title: '最大值',
-    dataIndex: 'value',
-    align: 'center',
-    width: 100,
-    key: 'value',
-  },
-  {
-    width: 100,
-    align: 'center',
-    title: '监测地点',
-    dataIndex: 'jcdd',
-    key: 'jcdd',
-  },
-  {
-    width: 100,
-    align: 'center',
-    title: '作业环境(工序)',
-    dataIndex: 'scgy',
-    key: 'scgy',
-  },
-];
-export const dataSgtColumns = [
-  {
-    title: '监测字段',
-    align: 'center',
-    dataIndex: 'key',
-    key: 'key',
-    width: 100,
-    customRender: ({ text }) => fieldBltMapping[text] || text,
-  },
-  {
-    title: '最大值',
-    dataIndex: 'value',
-    align: 'center',
-    width: 100,
-    key: 'value',
-  },
-  {
-    width: 100,
-    align: 'center',
-    title: '监测地点',
-    dataIndex: 'jcdd',
-    key: 'jcdd',
-  },
-  {
-    width: 100,
-    align: 'center',
-    title: '作业环境(工序)',
-    dataIndex: 'scgy',
-    key: 'scgy',
-  },
-];
-export const dataYjlColumns = [
-  {
-    title: '监测字段',
-    align: 'center',
-    dataIndex: 'key',
-    key: 'key',
-    width: 100,
-    customRender: ({ text }) => fieldYjlMapping[text] || text,
-  },
-  {
-    title: '最大值',
-    dataIndex: 'value',
-    align: 'center',
-    width: 100,
-    key: 'value',
-  },
-  {
-    width: 100,
-    align: 'center',
-    title: '监测地点',
-    dataIndex: 'jcdd',
-    key: 'jcdd',
-  },
-  {
-    width: 100,
-    align: 'center',
-    title: '作业环境(工序)',
-    dataIndex: 'zyhj',
-    key: 'zyhj',
-  },
-];
-export const dataCctrkColumns = [
-  {
-    title: '监测字段',
-    align: 'center',
-    dataIndex: 'key',
-    key: 'key',
-    width: 100,
-    customRender: ({ text }) => fieldCctrkMapping[text] || text,
-  },
-  {
-    title: '最大值',
-    dataIndex: 'value',
-    align: 'center',
-    width: 100,
-    key: 'value',
-  },
-  {
-    width: 100,
-    align: 'center',
-    title: '监测地点',
-    dataIndex: 'jcdd',
-    key: 'jcdd',
-  },
-  {
-    width: 100,
-    align: 'center',
-    title: '作业环境(工序)',
-    dataIndex: 'zyhj',
-    key: 'zyhj',
-  },
-];
-export const dataWlmlColumns = [
-  {
-    title: '监测字段',
-    align: 'center',
-    dataIndex: 'key',
-    key: 'key',
-    width: 100,
-    customRender: ({ text }) => fieldWlmlMapping[text] || text,
-  },
-  {
-    title: '最大值',
-    dataIndex: 'value',
-    align: 'center',
-    width: 100,
-    key: 'value',
-  },
-  {
-    width: 100,
-    align: 'center',
-    title: '监测地点',
-    dataIndex: 'jcdd',
-    key: 'jcdd',
-  },
-  {
-    width: 100,
-    align: 'center',
-    title: '作业环境(工序)',
-    dataIndex: 'zyhj',
-    key: 'zyhj',
-  },
-];
-export const dataJinjieColumns = [
-  {
-    title: '监测字段',
-    align: 'center',
-    dataIndex: 'key',
-    key: 'key',
-    width: 100,
-    customRender: ({ text }) => fieldJinjieMapping[text] || text,
-  },
-  {
-    title: '最大值',
-    dataIndex: 'value',
-    align: 'center',
-    width: 100,
-    key: 'value',
-  },
-  {
-    width: 100,
-    align: 'center',
-    title: '测尘位置',
-    dataIndex: 'jcdd',
-    key: 'jcdd',
-  },
-  {
-    width: 100,
-    align: 'center',
-    title: '生产工艺',
-    dataIndex: 'zyhj',
-    key: 'zyhj',
-  },
-];
-export const dataHlgColumns = [
-  {
-    title: '监测字段',
-    align: 'center',
-    dataIndex: 'key',
-    key: 'key',
-    width: 200,
-    customRender: ({ text }) => fieldHlgMapping[text] || text,
-  },
-  {
-    title: '最大值',
-    dataIndex: 'value',
-    align: 'center',
-    width: 100,
-    key: 'value',
-  },
-  {
-    width: 100,
-    align: 'center',
-    title: '测定地点',
-    dataIndex: 'jcdd',
-    key: 'jcdd',
-  },
-  {
-    width: 100,
-    align: 'center',
-    title: '作业环境(工序)',
-    dataIndex: 'zyhj',
-    key: 'zyhj',
-  },
-];
-export const dataLtColumns = [
-  {
-    title: '监测字段',
-    align: 'center',
-    dataIndex: 'key',
-    key: 'key',
-    width: 100,
-    customRender: ({ text }) => fieldLtMapping[text] || text,
-  },
-  {
-    title: '最大值',
-    dataIndex: 'value',
-    align: 'center',
-    width: 100,
-    key: 'value',
-  },
-  {
-    width: 100,
-    align: 'center',
-    title: '测尘位置',
-    dataIndex: 'jcdd',
-    key: 'jcdd',
-  },
-  {
-    width: 100,
-    align: 'center',
-    title: '生产工艺',
-    dataIndex: 'zyhj',
-    key: 'zyhj',
-  },
-];
-// 当日情况粉尘情况分析
-export const AllDataColumns = [
-  {
-    title: '监测字段',
-    align: 'center',
-    dataIndex: 'key',
-    key: 'key',
-    width: 200,
-    customRender: ({ text }) => fieldMapping[text] || text,
-  },
-  {
-    title: '最大值',
-    dataIndex: 'value',
-    align: 'center',
-    width: 100,
-    key: 'value',
-  },
-  {
-    width: 100,
-    title: '工作场所',
-    dataIndex: 'gzcs',
-    align: 'center',
-    key: 'gzcs',
-  },
-  {
-    title: '工种',
-    width: 100,
-    dataIndex: 'gz',
-    align: 'center',
-    key: 'gz',
-  },
-  {
-    width: 100,
-    align: 'center',
-    title: '监测地点',
-    dataIndex: 'jcdd',
-    key: 'jcdd',
-  },
-  {
-    width: 100,
-    align: 'center',
-    title: '粉尘种类',
-    dataIndex: 'fczl',
-    key: 'fczl',
-  },
-];
-export const AllDataDltColumns = [
-  {
-    title: '监测字段',
-    align: 'center',
-    dataIndex: 'key',
-    key: 'key',
-    width: 130,
-    customRender: ({ text }) => fieldDltMapping[text] || text,
-  },
-  {
-    title: '最大值',
-    dataIndex: 'value',
-    align: 'center',
-    width: 100,
-    key: 'value',
-  },
-  {
-    width: 130,
-    align: 'center',
-    title: '监测地点',
-    dataIndex: 'jcdd',
-    key: 'jcdd',
-  },
-  {
-    width: 100,
-    align: 'center',
-    title: '粉尘种类',
-    dataIndex: 'fczl',
-    key: 'fczl',
-  },
-];
-export const AllDataSwColumns = [
-  {
-    title: '监测字段',
-    align: 'center',
-    dataIndex: 'key',
-    key: 'key',
-    width: 200,
-    customRender: ({ text }) => fieldSwMapping[text] || text,
-  },
-  {
-    title: '最大值',
-    dataIndex: 'value',
-    align: 'center',
-    width: 100,
-    key: 'value',
-  },
-  {
-    width: 100,
-    title: '工作场所',
-    dataIndex: 'gzcs',
-    align: 'center',
-    key: 'gzcs',
-  },
-  {
-    width: 100,
-    align: 'center',
-    title: '监测地点',
-    dataIndex: 'jcdd',
-    key: 'jcdd',
-  },
-  {
-    width: 100,
-    align: 'center',
-    title: '粉尘种类',
-    dataIndex: 'fczl',
-    key: 'fczl',
-  },
-];
-export const AllDataHjtColumns = [
-  {
-    title: '监测字段',
-    align: 'center',
-    dataIndex: 'key',
-    key: 'key',
-    width: 100,
-    customRender: ({ text }) => fieldHjtMapping[text] || text,
-  },
-  {
-    title: '最大值',
-    dataIndex: 'value',
-    align: 'center',
-    width: 100,
-    key: 'value',
-  },
-  {
-    width: 100,
-    align: 'center',
-    title: '监测地点',
-    dataIndex: 'jcdd',
-    key: 'jcdd',
-  },
-  {
-    width: 100,
-    align: 'center',
-    title: '作业环境(工序)',
-    dataIndex: 'fczl',
-    key: 'fczl',
-  },
-];
-export const AllDataBdColumns = [
-  {
-    title: '监测字段',
-    align: 'center',
-    dataIndex: 'key',
-    key: 'key',
-    width: 100,
-    customRender: ({ text }) => fieldBdMapping[text] || text,
-  },
-  {
-    title: '最大值',
-    dataIndex: 'value',
-    align: 'center',
-    width: 100,
-    key: 'value',
-  },
-  {
-    width: 100,
-    align: 'center',
-    title: '监测地点',
-    dataIndex: 'jcdd',
-    key: 'jcdd',
-  },
-  {
-    width: 100,
-    align: 'center',
-    title: '作业环境(工序)',
-    dataIndex: 'zyhj',
-    key: 'zyhj',
-  },
-];
-export const AllDataBltColumns = [
-  {
-    title: '监测字段',
-    align: 'center',
-    dataIndex: 'key',
-    key: 'key',
-    width: 100,
-    customRender: ({ text }) => fieldBltMapping[text] || text,
-  },
-  {
-    title: '最大值',
-    dataIndex: 'value',
-    align: 'center',
-    width: 100,
-    key: 'value',
-  },
-  {
-    width: 100,
-    align: 'center',
-    title: '监测地点',
-    dataIndex: 'jcdd',
-    key: 'jcdd',
-  },
-  {
-    width: 100,
-    align: 'center',
-    title: '作业环境(工序)',
-    dataIndex: 'scgy',
-    key: 'scgy',
-  },
-];
-export const AllDataSgtColumns = [
-  {
-    title: '监测字段',
-    align: 'center',
-    dataIndex: 'key',
-    key: 'key',
-    width: 100,
-    customRender: ({ text }) => fieldBltMapping[text] || text,
-  },
-  {
-    title: '最大值',
-    dataIndex: 'value',
-    align: 'center',
-    width: 100,
-    key: 'value',
-  },
-  {
-    width: 100,
-    align: 'center',
-    title: '监测地点',
-    dataIndex: 'jcdd',
-    key: 'jcdd',
-  },
-  {
-    width: 100,
-    align: 'center',
-    title: '作业环境(工序)',
-    dataIndex: 'scgy',
-    key: 'scgy',
-  },
-];
-export const AllDataYjlColumns = [
-  {
-    title: '监测字段',
-    align: 'center',
-    dataIndex: 'key',
-    key: 'key',
-    width: 100,
-    customRender: ({ text }) => fieldYjlMapping[text] || text,
-  },
-  {
-    title: '最大值',
-    dataIndex: 'value',
-    align: 'center',
-    width: 100,
-    key: 'value',
-  },
-  {
-    width: 100,
-    align: 'center',
-    title: '监测地点',
-    dataIndex: 'jcdd',
-    key: 'jcdd',
-  },
-  {
-    width: 100,
-    align: 'center',
-    title: '作业环境(工序)',
-    dataIndex: 'zyhj',
-    key: 'zyhj',
-  },
-];
-export const AllDataCctrkColumns = [
-  {
-    title: '监测字段',
-    align: 'center',
-    dataIndex: 'key',
-    key: 'key',
-    width: 100,
-    customRender: ({ text }) => fieldCctrkMapping[text] || text,
-  },
-  {
-    title: '最大值',
-    dataIndex: 'value',
-    align: 'center',
-    width: 100,
-    key: 'value',
-  },
-  {
-    width: 100,
-    align: 'center',
-    title: '监测地点',
-    dataIndex: 'jcdd',
-    key: 'jcdd',
-  },
-  {
-    width: 100,
-    align: 'center',
-    title: '作业环境(工序)',
-    dataIndex: 'zyhj',
-    key: 'zyhj',
-  },
-];
-export const AllDataWlmlColumns = [
-  {
-    title: '监测字段',
-    align: 'center',
-    dataIndex: 'key',
-    key: 'key',
-    width: 100,
-    customRender: ({ text }) => fieldWlmlMapping[text] || text,
-  },
-  {
-    title: '最大值',
-    dataIndex: 'value',
-    align: 'center',
-    width: 100,
-    key: 'value',
-  },
-  {
-    width: 100,
-    align: 'center',
-    title: '监测地点',
-    dataIndex: 'jcdd',
-    key: 'jcdd',
-  },
-  {
-    width: 100,
-    align: 'center',
-    title: '作业环境(工序)',
-    dataIndex: 'zyhj',
-    key: 'zyhj',
-  },
-];
-export const AllDataJinjieColumns = [
-  {
-    title: '监测字段',
-    align: 'center',
-    dataIndex: 'key',
-    key: 'key',
-    width: 100,
-    customRender: ({ text }) => fieldJinjieMapping[text] || text,
-  },
-  {
-    title: '最大值',
-    dataIndex: 'value',
-    align: 'center',
-    width: 100,
-    key: 'value',
-  },
-  {
-    width: 100,
-    align: 'center',
-    title: '测尘位置',
-    dataIndex: 'jcdd',
-    key: 'jcdd',
-  },
-  {
-    width: 100,
-    align: 'center',
-    title: '生产工艺',
-    dataIndex: 'zyhj',
-    key: 'zyhj',
-  },
-];
-export const AllDataHlgColumns = [
-  {
-    title: '监测字段',
-    align: 'center',
-    dataIndex: 'key',
-    key: 'key',
-    width: 200,
-    customRender: ({ text }) => fieldHlgMapping[text] || text,
-  },
-  {
-    title: '最大值',
-    dataIndex: 'value',
-    align: 'center',
-    width: 100,
-    key: 'value',
-  },
-  {
-    width: 100,
-    align: 'center',
-    title: '测定地点',
-    dataIndex: 'jcdd',
-    key: 'jcdd',
-  },
-  {
-    width: 100,
-    align: 'center',
-    title: '作业环境(工序)',
-    dataIndex: 'zyhj',
-    key: 'zyhj',
-  },
-];
-export const AllDataLtColumns = [
-  {
-    title: '监测字段',
-    align: 'center',
-    dataIndex: 'key',
-    key: 'key',
-    width: 200,
-    customRender: ({ text }) => fieldLtMapping[text] || text,
-  },
-  {
-    title: '最大值',
-    dataIndex: 'value',
-    align: 'center',
-    width: 100,
-    key: 'value',
-  },
-  {
-    width: 100,
-    align: 'center',
-    title: '测定地点',
-    dataIndex: 'jcdd',
-    key: 'jcdd',
-  },
-  {
-    width: 100,
-    align: 'center',
-    title: '作业环境(工序)',
-    dataIndex: 'zyhj',
-    key: 'zyhj',
-  },
-];

+ 0 - 818
src/views/vent/dust/dustMonitorTable/index.vue

@@ -1,818 +0,0 @@
-<template>
-  <div class="dustMonitor">
-    <customHeader>粉尘监测报表分析</customHeader>
-    <div class="content-container">
-      <div class="file-list">
-        <ul>
-          <li v-for="item in selectList" :key="item.id" :class="{ selected: item.id === selectedFileId }" @click="handleFileClick(item)">
-            {{ item.fileName }}
-          </li>
-        </ul>
-      </div>
-      <div class="table-container">
-        <a-table :columns="computedColumns" :data-source="tableData" size="small" :pagination="false" :scroll="{ y: 330 }" class="tableW">
-          <template #bodyCell="{ record, column }">
-            <template v-if="record[column.dataIndex] === null">
-              <span>-</span>
-            </template>
-          </template>
-        </a-table>
-        <div class="tab-container">
-          <a-tabs v-model:activeKey="activeTab">
-            <a-tab-pane key="workplace" class="tab1" tab="监测地点粉尘情况分析">
-              <div class="filter-container" v-if="workplaceList.length > 0">
-                <a-select
-                  :key="DefaultValue"
-                  :default-value="DefaultValue"
-                  v-model="selectedWorkplace"
-                  @change="workPlaceChange"
-                  placeholder="选择工作场所"
-                  style="width: 280px; margin: 5px"
-                >
-                  <a-select-option v-for="workplace in workplaceList" :key="workplace.index" :value="workplace">
-                    {{ workplace }}
-                  </a-select-option>
-                </a-select>
-              </div>
-              <a-table
-                :columns="DataComputedColumns"
-                :data-source="filteredResultByWorkplace"
-                :pagination="false"
-                size="small"
-                :scroll="updateScrollPosition"
-                class="tableW"
-              />
-            </a-tab-pane>
-            <a-tab-pane key="overall" class="tab2" tab="当日粉尘情况分析">
-              <a-table
-                :columns="AllDataComputedColumns"
-                :data-source="AllMaxValues"
-                size="small"
-                :pagination="false"
-                :scroll="{ y: 280 }"
-                class="tableW"
-              />
-            </a-tab-pane>
-          </a-tabs>
-        </div>
-      </div>
-    </div>
-  </div>
-</template>
-
-<script setup lang="ts">
-import { ref, onMounted, reactive, computed, watch, nextTick } from 'vue';
-import {
-  columns,
-  Dltcolumns,
-  Swcolumns,
-  Hjtcolumns,
-  Bdcolumns,
-  Bltcolumns,
-  Sgtcolumns,
-  Yjlcolumns,
-  Wlmlcolumns,
-  Cctrkcolumns,
-  Cctkcolumns,
-  Ltcolumns,
-  Jinjiecolumns,
-  Hlgcolumns,
-  dataColumns,
-  dataDltColumns,
-  dataSwColumns,
-  dataHjtColumns,
-  dataBdColumns,
-  dataBltColumns,
-  dataSgtColumns,
-  dataYjlColumns,
-  dataCctrkColumns,
-  dataWlmlColumns,
-  dataJinjieColumns,
-  dataHlgColumns,
-  dataLtColumns,
-  AllDataColumns,
-  AllDataDltColumns,
-  AllDataSwColumns,
-  AllDataHjtColumns,
-  AllDataBdColumns,
-  AllDataBltColumns,
-  AllDataSgtColumns,
-  AllDataYjlColumns,
-  AllDataCctrkColumns,
-  AllDataWlmlColumns,
-  AllDataJinjieColumns,
-  AllDataHlgColumns,
-  AllDataLtColumns,
-} from './dust-table.data';
-import { getDustInfoList, getAllFileList, getAllFileListById } from './dsut-table.api';
-import customHeader from '/@/components/vent/customHeader.vue';
-import { result } from 'lodash-es';
-// import { nextTick } from 'process';
-import { useGlobSetting } from '/@/hooks/setting';
-let tableData = ref<any[]>([]);
-let selectList = ref<any[]>([]);
-let resultByWorkplace = ref<any[]>([]);
-let AllMaxValues = ref<any[]>([]);
-let resultValues = ref<any[]>([]);
-let filteredResultByWorkplace = ref<any[]>([]); //根据工作场所查询的数据
-let workplaceList = ref<any[]>([]); //根据工作场所查询的数据
-let activeTab = ref<string>('workplace');
-let selectedFileId = ref<string | null>(null);
-let selectedWorkplace = ref<string | null>(null);
-let DefaultValue = ref<string | null>(null);
-const { sysOrgCode } = useGlobSetting();
-let formSearch = reactive({
-  pageNum: 1,
-  pageSize: 1000,
-  id: '',
-  fileName: '',
-});
-const updateScrollPosition = computed(() => {
-  return {
-    y: workplaceList.value.length > 0 ? 240 : 280,
-  };
-});
-//获取粉尘监测列展示数据
-const computedColumns = computed(() => {
-  switch (sysOrgCode) {
-    case 'sdmtjtbetmk':
-      return columns; // 布尔台对应的列配置
-    case 'sdmtjtdltmk':
-      return Dltcolumns; // 大柳塔对应的列配置
-    case 'sdmtjtswmk':
-      return Swcolumns; // 上湾对应的列配置
-    case 'sdmtjtdltmkhjtj':
-      return Hjtcolumns; // 活鸡兔对应的列配置
-    case 'sdmtjtbdmk':
-      return Bdcolumns; // 保德对应的列配置
-    case 'sdmtjtbltmk':
-      return Bltcolumns; // 补连塔对应的列配置
-    case 'sdmtjtsgtmk':
-      return Sgtcolumns; // 石圪台对应的列配置
-    case 'sdmtjtyjlmk':
-      return Yjlcolumns; // 榆家梁对应的列配置
-    case 'sdmtjtcctrk':
-      return Cctrkcolumns; // 寸草塔二矿对应的列配置
-    case 'sdmtjtwlmlmk':
-      return Wlmlcolumns; // 乌兰木伦对应的列配置
-    case 'sdmtjtcctmk':
-      return Wlmlcolumns; // 寸草塔一矿对应的列配置
-    case 'sdmtjtjjmk':
-      return Jinjiecolumns; // 锦界对应的列配置v
-    case 'sdmtjthlgmk':
-      return Hlgcolumns; // 哈拉沟对应的列配置
-    case 'sdmtjtltmk':
-      return Ltcolumns; // 柳塔对应的列配置
-    default:
-      return columns; // 默认情况下返回的列配置
-  }
-});
-const AllDataComputedColumns = computed(() => {
-  switch (sysOrgCode) {
-    case 'sdmtjtbetmk':
-      return AllDataColumns; // 布尔台对应的列配置
-    case 'sdmtjtdltmk':
-      return AllDataDltColumns; // 大柳塔对应的列配置
-    case 'sdmtjtswmk':
-      return AllDataSwColumns; // 上湾对应的列配置
-    case 'sdmtjtdltmkhjtj':
-      return AllDataHjtColumns; // 活鸡兔对应的列配置
-    case 'sdmtjtbdmk':
-      return AllDataBdColumns; // 保德对应的列配置
-    case 'sdmtjtbltmk':
-      return AllDataBltColumns; // 补连塔对应的列配置
-    case 'sdmtjtsgtmk':
-      return AllDataSgtColumns; // 石圪台对应的列配置
-    case 'sdmtjtyjlmk':
-      return AllDataYjlColumns; // 榆家梁对应的列配置
-    case 'sdmtjtcctrk':
-      return AllDataCctrkColumns; // 寸草塔二矿对应的列配置
-    case 'sdmtjtwlmlmk':
-      return AllDataWlmlColumns; // 乌兰木伦对应的列配置
-    case 'sdmtjtcctmk':
-      return AllDataWlmlColumns; // 寸草塔一矿对应的列配置
-    case 'sdmtjtjjmk':
-      return AllDataJinjieColumns; // 锦界对应的列配置
-    case 'sdmtjthlgmk':
-      return AllDataHlgColumns; // 哈拉沟对应的列配置
-    case 'sdmtjtltmk':
-      return AllDataLtColumns; // 柳塔对应的列配置
-    default:
-      return AllDataColumns; // 默认情况下返回的列配置
-  }
-});
-const DataComputedColumns = computed(() => {
-  switch (sysOrgCode) {
-    case 'sdmtjtbetmk':
-      return dataColumns; // 布尔台对应的列配置
-    case 'sdmtjtdltmk':
-      return dataDltColumns; // 大柳塔对应的列配置
-    case 'sdmtjtswmk':
-      return dataSwColumns; // 上湾对应的列配置
-    case 'sdmtjtdltmkhjtj':
-      return dataHjtColumns; // 活鸡兔对应的列配置
-    case 'sdmtjtbdmk':
-      return dataBdColumns; // 保德对应的列配置
-    case 'sdmtjtbltmk':
-      return dataBltColumns; // 补连塔对应的列配置
-    case 'sdmtjtsgtmk':
-      return dataSgtColumns; // 石圪台对应的列配置
-    case 'sdmtjtyjlmk':
-      return dataYjlColumns; // 榆家梁对应的列配置
-    case 'sdmtjtcctrk':
-      return dataCctrkColumns; // 寸草塔二矿对应的列配置
-    case 'sdmtjtwlmlmk':
-      return dataWlmlColumns; // 乌兰木伦对应的列配置
-    case 'sdmtjtcctmk':
-      return dataWlmlColumns; // 寸草塔一矿对应的列配置
-    case 'sdmtjtjjmk':
-      return dataJinjieColumns; // 锦界对应的列配置
-    case 'sdmtjthlgmk':
-      return dataHlgColumns; // 哈拉沟对应的列配置
-    case 'sdmtjtltmk':
-      return dataLtColumns; // 柳塔对应的列配置
-    default:
-      return dataColumns; // 默认情况下返回的列配置
-  }
-});
-//获取粉尘监测结果数据
-async function getTableList(params: any) {
-  let res = await getDustInfoList({ type: 'smoke', ...params });
-  const content = res.content;
-  let contentArr = JSON.parse(content);
-  tableData.value = contentArr;
-  processTableData(contentArr);
-  if (workplaceList.value.length > 0) {
-    console.log(workplaceList.value, 'workplaceList');
-    DefaultValue.value = workplaceList.value[0];
-    workPlaceChange(selectedWorkplace.value);
-  }
-}
-async function getTableListById(params: any) {
-  let res = await getAllFileListById({ ...params });
-  const content = res.content;
-  let contentArr = JSON.parse(content);
-  tableData.value = contentArr;
-  processTableData(contentArr);
-  if (workplaceList.value.length > 0) {
-    console.log(workplaceList.value, 'workplaceList');
-    DefaultValue.value = workplaceList.value[0];
-    workPlaceChange(selectedWorkplace.value);
-  }
-}
-// 处理 tableData 数据
-function processTableData(data: any) {
-  // 根据 gzcs 字段进行分组
-  const groupedData = data.reduce((acc: any, item: any) => {
-    if (sysOrgCode === 'sdmtjtbltmk') {
-      item.gzcs = item.gzm;
-    } else if (sysOrgCode === 'sdmtjthlgmk' || sysOrgCode === 'sdmtjtjjmk') {
-      item.gzcs = item.ccdd;
-    } else {
-      item.gzcs = item.jcdd;
-    }
-    const workplace = item.gzcs;
-    if (!acc[workplace]) {
-      acc[workplace] = [];
-    }
-    acc[workplace].push(item);
-    return acc;
-  }, {});
-
-  // 筛选每个工作场所下的最大值
-  const result = Object.keys(groupedData).flatMap((workplace) => {
-    const items = groupedData[workplace];
-    const maxValues = [
-      { key: 'sc_zcds', value: -Infinity, gz: '', jcdd: '', fczl: '', gzcs: workplace },
-      { key: 'jx_zcds', value: -Infinity, gz: '', jcdd: '', fczl: '', gzcs: workplace },
-      { key: 'sc_hcds', value: -Infinity, gz: '', jcdd: '', fczl: '', gzcs: workplace },
-      { key: 'jx_hcds', value: -Infinity, gz: '', jcdd: '', fczl: '', gzcs: workplace },
-      { key: 'zcjqpj', value: -Infinity, gz: '', jcdd: '', fczl: '', gzcs: workplace },
-      { key: 'hcjqpj', value: -Infinity, gz: '', jcdd: '', fczl: '', gzcs: workplace },
-      { key: 'zcrxd_ds', value: -Infinity, gz: '', jcdd: '', fczl: '', gzcs: workplace },
-      { key: 'zcrxd_jqpj', value: -Infinity, gz: '', jcdd: '', fczl: '', gzcs: workplace },
-      { key: 'hcrxd_ds', value: -Infinity, gz: '', jcdd: '', fczl: '', gzcs: workplace },
-      { key: 'hcrxd_jqpj', value: -Infinity, gz: '', jcdd: '', fczl: '', gzcs: workplace },
-    ];
-    const DltMaxValues = [
-      { key: 'sc_zcds', value: -Infinity, gz: '', jcdd: '', fczl: '', gzcs: workplace },
-      { key: 'jx_zcds', value: -Infinity, gz: '', jcdd: '', fczl: '', gzcs: workplace },
-      { key: 'sc_hcds', value: -Infinity, gz: '', jcdd: '', fczl: '', gzcs: workplace },
-      { key: 'jx_hcds', value: -Infinity, gz: '', jcdd: '', fczl: '', gzcs: workplace },
-      { key: 'zcjqpj', value: -Infinity, gz: '', jcdd: '', fczl: '', gzcs: workplace },
-      { key: 'hcjqpj', value: -Infinity, gz: '', jcdd: '', fczl: '', gzcs: workplace },
-    ];
-    const SwMaxValues = [
-      { key: 'zcjqpj', value: -Infinity, gz: '', jcdd: '', fczl: '', gzcs: workplace },
-      { key: 'hcjqpj', value: -Infinity, gz: '', jcdd: '', fczl: '', gzcs: workplace },
-    ];
-    const HjtMaxValues = [
-      { key: 'sc_zcds', value: -Infinity, gz: '', jcdd: '', fczl: '', gzcs: workplace },
-      { key: 'sc_hcds', value: -Infinity, gz: '', jcdd: '', fczl: '', gzcs: workplace },
-      { key: 'jx_zcds', value: -Infinity, gz: '', jcdd: '', fczl: '', gzcs: workplace },
-      { key: 'jx_hcds', value: -Infinity, gz: '', jcdd: '', fczl: '', gzcs: workplace },
-      { key: 'zcjqpj', value: -Infinity, gz: '', jcdd: '', fczl: '', gzcs: workplace },
-      { key: 'hcjqpj', value: -Infinity, gz: '', jcdd: '', fczl: '', gzcs: workplace },
-    ];
-    const BdMaxValues = [
-      { key: 'qc', value: -Infinity, gz: '', jcdd: '', fczl: '', gzcs: workplace },
-      { key: 'hc', value: -Infinity, gz: '', jcdd: '', fczl: '', gzcs: workplace },
-    ];
-    const BltMaxValues = [
-      { key: 'sc_zcds', value: -Infinity, gz: '', jcdd: '', scgy: '', gzcs: workplace },
-      { key: 'sc_hcds', value: -Infinity, gz: '', jcdd: '', scgy: '', gzcs: workplace },
-    ];
-    const YjlMaxValues = [
-      { key: 'zcfcnd', value: -Infinity, gz: '', jcdd: '', scgy: '', gzcs: workplace },
-      { key: 'hcfcnd', value: -Infinity, gz: '', jcdd: '', scgy: '', gzcs: workplace },
-    ];
-    const CctrkMaxValues = [
-      { key: 'zcjqpj', value: -Infinity, gz: '', jcdd: '', zyhj: '', gzcs: workplace },
-      { key: 'hcjqpj', value: -Infinity, gz: '', jcdd: '', zyhj: '', gzcs: workplace },
-      { key: 'zcrxnd', value: -Infinity, gz: '', jcdd: '', zyhj: '', gzcs: workplace },
-      { key: 'hcrxnd', value: -Infinity, gz: '', jcdd: '', zyhj: '', gzcs: workplace },
-    ];
-    const WlmlMaxValues = [
-      { key: 'sc_zcds', value: -Infinity, gz: '', jcdd: '', zyhj: '', gzcs: workplace },
-      { key: 'sc_hcds', value: -Infinity, gz: '', jcdd: '', zyhj: '', gzcs: workplace },
-    ];
-    const HlgMaxValues = [
-      { key: 'jx4h_zc', value: -Infinity, gz: '', jcdd: '', zyhj: '', gzcs: workplace },
-      { key: 'jx4h_hc', value: -Infinity, gz: '', jcdd: '', zyhj: '', gzcs: workplace },
-      { key: 'sc4h_zc', value: -Infinity, gz: '', jcdd: '', zyhj: '', gzcs: workplace },
-      { key: 'sc4h_hc', value: -Infinity, gz: '', jcdd: '', zyhj: '', gzcs: workplace },
-      { key: 'jx8h_zc', value: -Infinity, gz: '', jcdd: '', zyhj: '', gzcs: workplace },
-      { key: 'jx8h_hc', value: -Infinity, gz: '', jcdd: '', zyhj: '', gzcs: workplace },
-      { key: 'sc8h_zc', value: -Infinity, gz: '', jcdd: '', zyhj: '', gzcs: workplace },
-      { key: 'sc8h_hc', value: -Infinity, gz: '', jcdd: '', zyhj: '', gzcs: workplace },
-    ];
-    items.forEach((item: any) => {
-      maxValues.forEach((maxValue) => {
-        if (item[maxValue.key] > maxValue.value) {
-          maxValue.value = item[maxValue.key];
-          maxValue.gz = item.gz;
-          maxValue.jcdd = item.jcdd;
-          maxValue.fczl = item.fczl;
-        }
-      });
-      DltMaxValues.forEach((maxValue) => {
-        if (item[maxValue.key] > maxValue.value) {
-          maxValue.value = item[maxValue.key];
-          maxValue.gz = item.gz;
-          maxValue.jcdd = item.jcdd;
-          maxValue.fczl = item.fczl;
-          maxValue.gzcs = item.gzcs;
-        }
-      });
-      SwMaxValues.forEach((maxValue) => {
-        if (item[maxValue.key] > maxValue.value) {
-          maxValue.value = item[maxValue.key];
-          maxValue.gz = item.gz;
-          maxValue.jcdd = item.jcdd;
-          maxValue.fczl = item.fczl;
-          maxValue.gzcs = item.gzcs;
-        }
-      });
-      HjtMaxValues.forEach((maxValue) => {
-        if (item[maxValue.key] > maxValue.value) {
-          maxValue.value = item[maxValue.key];
-          maxValue.gz = item.gz;
-          maxValue.jcdd = item.jcdd;
-          maxValue.fczl = item.fczl;
-          maxValue.gzcs = item.gzcs;
-        }
-      });
-      BdMaxValues.forEach((maxValue) => {
-        if (item[maxValue.key] > maxValue.value) {
-          maxValue.value = item[maxValue.key];
-          maxValue.gz = item.gz;
-          maxValue.jcdd = item.jcdd;
-          maxValue.fczl = item.fczl;
-          maxValue.gzcs = item.gzcs;
-        }
-      });
-      BltMaxValues.forEach((maxValue) => {
-        if (item[maxValue.key] > maxValue.value) {
-          maxValue.value = item[maxValue.key];
-          maxValue.gz = item.gz;
-          maxValue.jcdd = item.jcdd;
-          maxValue.scgy = item.scgy;
-          maxValue.gzcs = item.gzcs;
-        }
-      });
-      YjlMaxValues.forEach((maxValue) => {
-        if (item[maxValue.key] > maxValue.value) {
-          maxValue.value = item[maxValue.key];
-          maxValue.gz = item.gz;
-          maxValue.jcdd = item.jcdd;
-          maxValue.scgy = item.zyhj;
-          maxValue.gzcs = item.gzcs;
-        }
-      });
-      CctrkMaxValues.forEach((maxValue) => {
-        if (item[maxValue.key] > maxValue.value) {
-          maxValue.value = item[maxValue.key];
-          maxValue.gz = item.gz;
-          maxValue.jcdd = item.jcdd;
-          maxValue.zyhj = item.zyhj;
-          maxValue.gzcs = item.gzcs;
-        }
-      });
-      WlmlMaxValues.forEach((maxValue) => {
-        if (item[maxValue.key] > maxValue.value) {
-          maxValue.value = item[maxValue.key];
-          maxValue.gz = item.gz;
-          maxValue.jcdd = item.jcdd;
-          maxValue.zyhj = item.zyhj;
-        }
-      });
-      HlgMaxValues.forEach((maxValue) => {
-        if (item[maxValue.key] > maxValue.value) {
-          maxValue.value = item[maxValue.key];
-          maxValue.gz = item.gz;
-          maxValue.jcdd = item.jcdd;
-          maxValue.zyhj = item.zyhj;
-          maxValue.gzcs = item.jcdd;
-        }
-      });
-    });
-    switch (sysOrgCode) {
-      case 'sdmtjtbetmk':
-        return maxValues; // 布尔台对应的列配置
-      case 'sdmtjtdltmk':
-        return DltMaxValues; // 大柳塔对应的列配置
-      case 'sdmtjtswmk':
-        return SwMaxValues; // 上湾对应的列配置
-      case 'sdmtjtdltmkhjtj':
-        return HjtMaxValues; // 活鸡兔对应的列配置
-      case 'sdmtjtbdmk':
-        return BdMaxValues; // 保德对应的列配置
-      case 'sdmtjtbltmk':
-        return BltMaxValues; // 补连塔对应的列配置
-      case 'sdmtjtsgtmk':
-        return BltMaxValues; // 石圪台对应的列配置
-      case 'sdmtjtyjlmk':
-        return YjlMaxValues; // 榆家梁对应的列配置
-      case 'sdmtjtcctrk':
-        return CctrkMaxValues; // 寸草塔二矿对应的列配置
-      case 'sdmtjtwlmlmk':
-        return WlmlMaxValues; // 乌兰木伦对应的列配置
-      case 'sdmtjtcctmk':
-        return WlmlMaxValues; // 寸草塔一矿对应的列配置
-      case 'sdmtjtjjmk':
-      case 'sdmtjtltmk':
-        return WlmlMaxValues; // 锦界对应的列配置
-      case 'sdmtjthlgmk':
-        return HlgMaxValues; // 哈拉沟对应的列配置
-      default:
-        return maxValues; // 默认情况下返回的列配置
-    }
-  });
-  resultByWorkplace.value = result;
-  workplaceList.value = Array.from(new Set(resultByWorkplace.value.map((item) => item.gzcs)));
-  if (workplaceList.value.length > 0) {
-    selectedWorkplace.value = workplaceList.value[0];
-    workPlaceChange(selectedWorkplace.value);
-  }
-  // 筛选整个 tableData 下的最大值
-  const overallMaxValues = [
-    { key: 'sc_zcds', value: -Infinity, gz: '', jcdd: '', fczl: '', gzcs: '' },
-    { key: 'jx_zcds', value: -Infinity, gz: '', jcdd: '', fczl: '', gzcs: '' },
-    { key: 'sc_hcds', value: -Infinity, gz: '', jcdd: '', fczl: '', gzcs: '' },
-    { key: 'jx_hcds', value: -Infinity, gz: '', jcdd: '', fczl: '', gzcs: '' },
-    { key: 'zcjqpj', value: -Infinity, gz: '', jcdd: '', fczl: '', gzcs: '' },
-    { key: 'hcjqpj', value: -Infinity, gz: '', jcdd: '', fczl: '', gzcs: '' },
-    { key: 'zcrxd_ds', value: -Infinity, gz: '', jcdd: '', fczl: '', gzcs: '' },
-    { key: 'zcrxd_jqpj', value: -Infinity, gz: '', jcdd: '', fczl: '', gzcs: '' },
-    { key: 'hcrxd_ds', value: -Infinity, gz: '', jcdd: '', fczl: '', gzcs: '' },
-    { key: 'hcrxd_jqpj', value: -Infinity, gz: '', jcdd: '', fczl: '', gzcs: '' },
-  ];
-  const overallDltMaxValues = [
-    { key: 'sc_zcds', value: -Infinity, gz: '', jcdd: '', fczl: '', gzcs: '' },
-    { key: 'jx_zcds', value: -Infinity, gz: '', jcdd: '', fczl: '', gzcs: '' },
-    { key: 'sc_hcds', value: -Infinity, gz: '', jcdd: '', fczl: '', gzcs: '' },
-    { key: 'jx_hcds', value: -Infinity, gz: '', jcdd: '', fczl: '', gzcs: '' },
-    { key: 'zcjqpj', value: -Infinity, gz: '', jcdd: '', fczl: '', gzcs: '' },
-    { key: 'hcjqpj', value: -Infinity, gz: '', jcdd: '', fczl: '', gzcs: '' },
-  ];
-  const overallSwMaxValues = [
-    { key: 'zcjqpj', value: -Infinity, gz: '', jcdd: '', fczl: '', gzcs: '' },
-    { key: 'hcjqpj', value: -Infinity, gz: '', jcdd: '', fczl: '', gzcs: '' },
-  ];
-  const overallHjtMaxValues = [
-    { key: 'sc_zcds', value: -Infinity, gz: '', jcdd: '', fczl: '', gzcs: '' },
-    { key: 'jx_zcds', value: -Infinity, gz: '', jcdd: '', fczl: '', gzcs: '' },
-    { key: 'sc_hcds', value: -Infinity, gz: '', jcdd: '', fczl: '', gzcs: '' },
-    { key: 'jx_hcds', value: -Infinity, gz: '', jcdd: '', fczl: '', gzcs: '' },
-    { key: 'zcjqpj', value: -Infinity, gz: '', jcdd: '', fczl: '', gzcs: '' },
-    { key: 'hcjqpj', value: -Infinity, gz: '', jcdd: '', fczl: '', gzcs: '' },
-  ];
-  const overallBdMaxValues = [
-    { key: 'zcjqpj', value: -Infinity, gz: '', jcdd: '', fczl: '', gzcs: '' },
-    { key: 'hcjqpj', value: -Infinity, gz: '', jcdd: '', fczl: '', gzcs: '' },
-  ];
-  const overallBltMaxValues = [
-    { key: 'sc_zcds', value: -Infinity, gz: '', jcdd: '', scgy: '', gzcs: '' },
-    { key: 'sc_hcds', value: -Infinity, gz: '', jcdd: '', scgy: '', gzcs: '' },
-  ];
-  const overallYjlMaxValues = [
-    { key: 'zcfcnd', value: -Infinity, gz: '', jcdd: '', scgy: '', gzcs: '' },
-    { key: 'hcfcnd', value: -Infinity, gz: '', jcdd: '', scgy: '', gzcs: '' },
-  ];
-  const overallCctrkMaxValues = [
-    { key: 'zcjqpj', value: -Infinity, gz: '', jcdd: '', fczl: '', gzcs: '' },
-    { key: 'hcjqpj', value: -Infinity, gz: '', jcdd: '', fczl: '', gzcs: '' },
-    { key: 'zcrxnd', value: -Infinity, gz: '', jcdd: '', fczl: '', gzcs: '' },
-    { key: 'hcrxnd', value: -Infinity, gz: '', jcdd: '', fczl: '', gzcs: '' },
-  ];
-  const overallWlmlMaxValues = [
-    { key: 'sc_zcds', value: -Infinity, gz: '', jcdd: '', zyhj: '' },
-    { key: 'sc_hcds', value: -Infinity, gz: '', jcdd: '', zyhj: '' },
-  ];
-  const overallHlgMaxValues = [
-    { key: 'jx4h_zc', value: -Infinity, gz: '', jcdd: '', zyhj: '' },
-    { key: 'jx4h_hc', value: -Infinity, gz: '', jcdd: '', zyhj: '' },
-    { key: 'sc4h_zc', value: -Infinity, gz: '', jcdd: '', zyhj: '' },
-    { key: 'sc4h_hc', value: -Infinity, gz: '', jcdd: '', zyhj: '' },
-    { key: 'jx8h_zc', value: -Infinity, gz: '', jcdd: '', zyhj: '' },
-    { key: 'jx8h_hc', value: -Infinity, gz: '', jcdd: '', zyhj: '' },
-    { key: 'sc8h_zc', value: -Infinity, gz: '', jcdd: '', zyhj: '' },
-    { key: 'sc8h_hc', value: -Infinity, gz: '', jcdd: '', zyhj: '' },
-  ];
-  data.forEach((item: any) => {
-    overallMaxValues.forEach((maxValue) => {
-      if (item[maxValue.key] > maxValue.value) {
-        maxValue.value = item[maxValue.key];
-        maxValue.gz = item.gz;
-        maxValue.jcdd = item.jcdd;
-        maxValue.fczl = item.fczl;
-        maxValue.gzcs = item.gzcs;
-      }
-    });
-    overallDltMaxValues.forEach((maxValue) => {
-      if (item[maxValue.key] > maxValue.value) {
-        maxValue.value = item[maxValue.key];
-        maxValue.gz = item.gz;
-        maxValue.jcdd = item.jcdd;
-        maxValue.fczl = item.fczl;
-        maxValue.gzcs = item.gzcs;
-      }
-    });
-    overallSwMaxValues.forEach((maxValue) => {
-      if (item[maxValue.key] > maxValue.value) {
-        maxValue.value = item[maxValue.key];
-        maxValue.gz = item.gz;
-        maxValue.jcdd = item.jcdd;
-        maxValue.fczl = item.fczl;
-        maxValue.gzcs = item.gzcs;
-      }
-    });
-    overallHjtMaxValues.forEach((maxValue) => {
-      if (item[maxValue.key] > maxValue.value) {
-        maxValue.value = item[maxValue.key];
-        maxValue.gz = item.gz;
-        maxValue.jcdd = item.jcdd;
-        maxValue.fczl = item.fczl;
-        maxValue.gzcs = item.gzcs;
-      }
-    });
-    overallBdMaxValues.forEach((maxValue) => {
-      if (item[maxValue.key] > maxValue.value) {
-        maxValue.value = item[maxValue.key];
-        maxValue.gz = item.gz;
-        maxValue.jcdd = item.jcdd;
-        maxValue.fczl = item.fczl;
-        maxValue.gzcs = item.gzcs;
-      }
-    });
-    overallBltMaxValues.forEach((maxValue) => {
-      if (item[maxValue.key] > maxValue.value) {
-        maxValue.value = item[maxValue.key];
-        maxValue.gz = item.gz;
-        maxValue.jcdd = item.jcdd;
-        maxValue.scgy = item.scgy;
-        maxValue.gzcs = item.gzcs;
-      }
-    });
-    overallYjlMaxValues.forEach((maxValue) => {
-      if (item[maxValue.key] > maxValue.value) {
-        maxValue.value = item[maxValue.key];
-        maxValue.gz = item.gz;
-        maxValue.jcdd = item.jcdd;
-        maxValue.scgy = item.zyhj;
-        maxValue.gzcs = item.gzcs;
-      }
-    });
-    overallCctrkMaxValues.forEach((maxValue) => {
-      if (item[maxValue.key] > maxValue.value) {
-        maxValue.value = item[maxValue.key];
-        maxValue.gz = item.gz;
-        maxValue.jcdd = item.jcdd;
-        maxValue.fczl = item.fczl;
-        maxValue.gzcs = item.gzcs;
-      }
-    });
-    overallWlmlMaxValues.forEach((maxValue) => {
-      if (item[maxValue.key] > maxValue.value) {
-        maxValue.value = item[maxValue.key];
-        maxValue.gz = item.gz;
-        maxValue.jcdd = item.jcdd;
-        maxValue.zyhj = item.zyhj;
-      }
-    });
-    overallHlgMaxValues.forEach((maxValue) => {
-      if (item[maxValue.key] > maxValue.value) {
-        maxValue.value = item[maxValue.key];
-        maxValue.gz = item.gz;
-        maxValue.jcdd = item.jcdd;
-        maxValue.zyhj = item.zyhj;
-      }
-    });
-  });
-  AllMaxValues = computed(() => {
-    switch (sysOrgCode) {
-      case 'sdmtjtbetmk':
-        return overallMaxValues; // 布尔台对应的列配置
-      case 'sdmtjtdltmk':
-        return overallDltMaxValues; // 大柳塔对应的列配置
-      case 'sdmtjtswmk':
-        return overallSwMaxValues; // 上湾对应的列配置
-      case 'sdmtjtdltmkhjtj':
-        return overallHjtMaxValues; // 活鸡兔对应的列配置
-      case 'sdmtjtbdmk':
-        return overallBdMaxValues; // 保德对应的列配置
-      case 'sdmtjtbltmk':
-        return overallBltMaxValues; // 补连塔对应的列配置
-      case 'sdmtjtsgtmk':
-        return overallBltMaxValues; // 石圪台对应的列配置
-      case 'sdmtjtyjlmk':
-        return overallYjlMaxValues; // 榆家梁对应的列配置
-      case 'sdmtjtcctrk':
-        return overallCctrkMaxValues; // 寸草塔二矿对应的列配置
-      case 'sdmtjtwlmlmk':
-        return overallWlmlMaxValues; // 乌兰木伦对应的列配置
-      case 'sdmtjtcctmk':
-        return overallWlmlMaxValues; // 寸草塔一矿对应的列配置
-      case 'sdmtjtjjmk':
-      case 'sdmtjtltmk':
-        return overallWlmlMaxValues; // 锦界对应的列配置
-      case 'sdmtjthlgmk':
-        return overallHlgMaxValues; // 锦界对应的列配置
-      default:
-        return overallMaxValues; // 默认情况下返回的列配置
-    }
-  });
-}
-//获取所有文件列表
-async function getAllFile() {
-  let res = await getAllFileList({ type: 'smoke' });
-  selectList.value = res.records.map((item: any) => ({
-    id: item.id,
-    fileName: item.fileName,
-  }));
-  if (selectList.value.length > 0) {
-    formSearch.id = selectList.value[0].id;
-    getSearch();
-  }
-}
-//查询
-// 处理文件点击事件
-function handleFileClick(item: any) {
-  formSearch.id = item.id;
-  formSearch.fileName = item.fileName;
-  selectedFileId.value = item.id;
-  getSearch();
-}
-function getSearch() {
-  // const selectedFile = selectList.value.find((item) => item.id === formSearch.id);
-  const params = {
-    id: formSearch.id,
-    // fileName: selectedFile ? selectedFile.fileName : '',
-  };
-  getTableListById(params);
-  // getTableList(params);
-}
-function workPlaceChange(value: any) {
-  selectedWorkplace.value = value;
-  filteredResultByWorkplace.value = resultByWorkplace.value.filter((item) => item.gzcs === value);
-}
-
-onMounted(() => {
-  getTableList({ type: 'smoke' });
-  getAllFile().then(() => {
-    if (selectList.value.length > 0) {
-      formSearch.id = selectList.value[0].id;
-      selectedFileId.value = selectList.value[0].id;
-      getSearch();
-    }
-  });
-});
-</script>
-
-<style lang="less" scoped>
-@import '/@/design/theme.less';
-
-.content-container {
-  display: flex;
-  width: 100%;
-  height: 100%;
-  padding-top: 54px;
-}
-.file-list {
-  width: 20%;
-  padding: 10px;
-  margin-right: 10px;
-  margin-bottom: 40px;
-  border: 1px solid #99e8ff66;
-  background: #27546e1a;
-  box-shadow: 0px 0px 20px 7px rgba(145, 233, 254, 0.7) inset;
-  -moz-box-shadow: 0px 0px 20px 7px rgba(145, 233, 254, 0.7) inset;
-  -webkit-box-shadow: 0px 0px 50px 1px rgb(149 235 255 / 5%) inset;
-}
-
-.file-list ul {
-  list-style: none;
-  padding: 0;
-}
-
-.file-list li {
-  color: #fff;
-  padding: 5px;
-  cursor: pointer;
-}
-
-.file-list li:hover,
-.file-list li.selected {
-  background: #1c4869;
-}
-
-.table-container {
-  margin-top: 10px;
-  width: 80%;
-  box-sizing: border-box;
-}
-
-.tab-container {
-  display: flex;
-  align-items: center;
-  padding-top: 50px;
-}
-
-.tab-container .ant-tabs {
-  flex-grow: 1;
-}
-
-:deep(.zxm-tabs-nav) {
-  margin: 0 !important;
-  .zxm-tabs-tab {
-    width: 180px;
-    height: 45px;
-    background: url('@/assets/images/defaultbg.png') center no-repeat;
-    background-size: 100%;
-    display: flex;
-    justify-content: center;
-    font-size: 16px;
-    margin-right: 10px;
-  }
-  .zxm-tabs-tab-active {
-    width: 180px;
-    position: relative;
-    background: url('@/assets/images/selected.png') center no-repeat;
-    background-size: 100%;
-    .zxm-tabs-tab-btn {
-      color: #fff !important;
-    }
-  }
-  .zxm-tabs-ink-bar {
-    width: 0 !important;
-  }
-  .zxm-tabs-tab + .zxm-tabs-tab {
-    margin: 0 !important;
-  }
-}
-
-.dustMonitor {
-  width: 100%;
-  height: 100%;
-  padding: 10px 10px 15px 10px;
-  box-sizing: border-box;
-  position: relative;
-}
-
-:deep(.zxm-table-thead > tr > th:last-child) {
-  border-right: 1px solid #91e9fe !important;
-}
-
-:deep(.zxm-picker-input > input) {
-  color: #fff;
-}
-
-:deep(.zxm-select:not(.zxm-select-customize-input) .zxm-select-selector) {
-  border: 1px solid var(--vent-form-item-border) !important;
-  background-color: #ffffff00 !important;
-}
-
-:deep(.zxm-select-selection-item) {
-  color: #fff !important;
-}
-</style>

+ 0 - 219
src/views/vent/gas/gasAnalysis/components/echartBox.vue

@@ -1,219 +0,0 @@
-<template>
-    <div class="echartBar">
-        <div class="bar" ref="bar"></div>
-    </div>
-</template>
-
-<script lang="ts" setup>
-import { defineProps, ref, nextTick, reactive, watch, onMounted } from 'vue';
-import * as echarts from 'echarts';
-
-let props = defineProps({
-    gridV: {
-        type: Object,
-        default: () => {
-            return {
-                left: '2%',
-                right: '4%',
-                bottom: '14%',
-                top: '16%',
-                containLabel: true
-            }
-        }
-    },
-    legendV: {
-        type: Object,
-        default: () => {
-            return {}
-        }
-    },
-    xData: {
-        type: Array,
-        default: () => {
-            return []
-        }
-    },
-    maxY: {
-        type: String,
-        default: '100'
-    },
-    datazoomShow: {
-        type: Boolean,
-        default: false,
-    },
-    yData1: {
-        type: Array,
-        default: () => {
-            return []
-        }
-    },
-    yData2: {
-        type: Array,
-        default: () => {
-            return []
-        }
-    },
-    typeV: {
-        type: String,
-        default: 'bar',
-    }
-});
-//获取dom元素节点
-let bar = ref<any>();
-let legendD = reactive({})
-function getOption() {
-    nextTick(() => {
-        let myChart = echarts.init(bar.value);
-        let option = {
-            tooltip: {
-                trigger: 'item',
-                backgroundColor: 'rgba(0, 0, 0, .6)',
-                textStyle: {
-                    color: '#fff',
-                    fontSize: 12,
-                },
-            },
-            grid: props.gridV,
-            legend: legendD || {},
-            xAxis: {
-                type: 'category',
-                data: props.xData || [],
-                axisLine: {
-                    lineStyle: {
-                        color: 'rgba(36, 71, 76,1)'
-
-                    }
-                },
-                axisLabel: {
-                    interval: 'auto',
-                    fontSize: 14,
-                    rotate: 0,
-                    textStyle: {
-                        color: '#fff',
-                        fontFamily: 'Microsoft YaHei'
-                    }
-                },
-            },
-
-            yAxis: {
-                type: 'value',
-                max: props.maxY,
-                axisLine: {
-                    show: false,
-                    lineStyle: {
-                        color: 'white'
-                    }
-                },
-                splitLine: {
-                    show: true,
-                    lineStyle: {
-                        color: 'rgba(36, 71, 76,.6)'
-                    }
-                },
-                axisLabel: {
-                    textStyle: {
-                        color: '#fff',
-                    },
-                    formatter: '{value}',
-                },
-            },
-            // "dataZoom": [{
-            //     "show": props.datazoomShow,
-            //     "height": 12,
-            //     "xAxisIndex": [
-            //         0
-            //     ],
-            //     bottom: '8%',
-            //     "start": 10,
-            //     "end": 90,
-            //     handleIcon: 'path://M306.1,413c0,2.2-1.8,4-4,4h-59.8c-2.2,0-4-1.8-4-4V200.8c0-2.2,1.8-4,4-4h59.8c2.2,0,4,1.8,4,4V413z',
-            //     handleSize: '110%',
-            //     handleStyle: {
-            //         color: "#d3dee5",
-
-            //     },
-            //     textStyle: {
-            //         color: "#fff"
-            //     },
-            //     borderColor: "#90979c"
-            // }, {
-            //     "type": "inside",
-            //     "show": true,
-            //     "height": 15,
-            //     "start": 1,
-            //     "end": 35
-            // }],
-            series: [{
-                name: legendD['data'][0],
-                type: props.typeV || '',
-                barWidth: '10%',
-                itemStyle: {
-                    normal: {
-                        color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [{
-                            offset: 0,
-                            color: '#fccb05'
-                        }, {
-                            offset: 1,
-                            color: '#f5804d'
-                        }]),
-                        barBorderRadius: 12,
-                    },
-                },
-                data: props.yData1 || []
-            },
-            {
-                name: legendD['data'][1],
-                type: props.typeV || '',
-                barWidth: '10%',
-                itemStyle: {
-                    normal: {
-                        color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [{
-                            offset: 0,
-                            color: '#8bd46e'
-                        }, {
-                            offset: 1,
-                            color: '#09bcb7'
-                        }]),
-                        barBorderRadius: 12,
-                    }
-
-                },
-                data: props.yData2 || []
-            },
-            ]
-        };
-        myChart.setOption(option);
-        window.onresize = function () {
-            myChart.resize();
-        };
-    });
-}
-
-watch(() => props.legendV, (newV, oldV) => {
-    if (JSON.stringify(newV) != '{}') {
-        legendD = Object.assign({}, newV)
-        getOption()
-        console.log(legendD, 'legendD')
-    }
-}, {
-    immediate: true,
-})
-watch(() => props.yData1, (newY, oldY) => {
-    getOption()
-}, { immediate: true })
-onMounted(() => {
-
-})
-</script>
-
-<style scoped lang="less">
-.echartBar {
-    width: 100%;
-    height: 100%;
-
-    .bar {
-        width: 100%;
-        height: 100%;
-    }
-}
-</style>

+ 0 - 21
src/views/vent/gas/gasAnalysis/gasAnalysis.api.ts

@@ -1,21 +0,0 @@
-import { defHttp } from '/@/utils/http/axios';
-
-
-enum Api {
-    gasReportLogList = '/safety/gasDayReport/gasReportLogList',//瓦斯巡检统计分析查询列表
-    exportGasInsFx='/safety/gasDayReport/exportGasInsFx'
-    
-
-}
-
-/**
- * 下载文件目录
- * @param params
- */
-export const exportGasInsFx = (params) => defHttp.get({ url: Api.exportGasInsFx, params, responseType: 'blob' },{ joinParamsToUrl: true });
-/**
- * 瓦斯巡检统计分析查询列表
- * @param params
- */
-export const gasReportLogList = (params) => defHttp.get({ url: Api.gasReportLogList,params },{ joinParamsToUrl: true });
-

+ 0 - 86
src/views/vent/gas/gasAnalysis/gasAnalysis.data.ts

@@ -1,86 +0,0 @@
-import { BasicColumn } from '/@/components/Table';
-export const columns: BasicColumn[] = [
-    {
-        title: '序号',
-        width: 60,
-        align: 'center',
-        customRender: ({ index }: { index: number }) => `${index + 1}`
-    },
-    {
-        title: '时间',
-        dataIndex: 'reportTime',
-        key: 'reportTime',
-        align: 'center',
-    },
-    {
-        title: '班次',
-        dataIndex: 'bc',
-        key: 'bc',
-        align: 'center',
-    },
-    {
-        title: '巡检类别',
-        dataIndex: 'insType',
-        key: 'insType',
-        align: 'center',
-    },
-    {
-        title: '巡检总数',
-        dataIndex: 'xjzs',
-        key: 'xjzs',
-        align: 'center',
-    },
-    {
-        title: '已巡检数',
-        dataIndex: 'yxjs',
-        key: 'yxjs',
-        align: 'center',
-    },
-    {
-        title: '未巡检数',
-        dataIndex: 'wxjs',
-        key: 'wxjs',
-        align: 'center',
-    },
-    {
-        title: '漏检率(%)',
-        dataIndex: 'ljv',
-        key: 'ljv',
-        align: 'center',
-    },
-    {
-        title: '漏检详情',
-        dataIndex: 'ljxq',
-        key: 'ljxq',
-        width:250,
-        align: 'center',
-    },
-    {
-        title: '班总漏检率(%)',
-        dataIndex: 'bzljv',
-        key: 'bzljv',
-        align: 'center',
-    },
-    {
-        title: '日总漏检率(%)',
-        dataIndex: 'totalLossDay',
-        key: 'totalLossDay',
-        align: 'center',
-    },
-    {
-        title: '操作',
-        dataIndex: 'action',
-        width: 120,
-        align: 'center',
-        slots: { customRender: 'action' },
-    },
-];
-//分页参数
-export const pagination = {
-    current: 1, // 当前页码
-    pageSize: 20, // 每页显示条数
-    total: 0, // 总条目数,后端返回
-    // showTotal: (total, range) => `${range[0]}-${range[1]} 条,总共 ${total} 条`, // 分页右下角显示信息
-    showSizeChanger: true, // 是否可改变每页显示条数
-    pageSizeOptions: ['10', '20', '50'], // 可选的每页显示条数
-};

+ 0 - 311
src/views/vent/gas/gasAnalysis/index.vue

@@ -1,311 +0,0 @@
-<template>
-    <div class="gasReport">
-        <customHeader>瓦斯巡检业务分析</customHeader>
-        <div class="report-container">
-            <div class="search-area">
-                <a-row>
-                    <a-col :span="4">
-                        <div class="area-item">
-                            <div class="item-text">时间:</div>
-                            <a-date-picker style="width:240px" v-model:value="searchTime" :showTime="false"
-                                valueFormat="YYYY-MM-DD" placeholder="请选择时间" />
-                        </div>
-                    </a-col>
-                    <a-col :span="20">
-                        <a-button type="primary" preIcon="ant-design:search-outlined" @click="getSearch">查询</a-button>
-                        <a-button preIcon="ant-design:sync-outlined" style="margin: 0px 15px"
-                            @click="getReset">重置</a-button>
-                        <!-- <a-button type="primary" preIcon="ant-design:download-outlined" @click="downLoadFx">导出</a-button> -->
-                    </a-col>
-                </a-row>
-            </div>
-            <div class="table-area">
-                <a-table :key="keyActive" :columns="columns"
-                    :row-selection="{ selectedRowKeys: selectedRowKey, type: 'radio', onChange: onSelectChange }"
-                    size="small" :data-source="tableData" :scroll="{ y: 470 }" class="tableW" :pagination="pagination"
-                    @change="pageChange">
-                    <template #bodyCell="{ column, text }">
-                        <template v-if="column.dataIndex == 'bc'">
-                            <div :style="contentStyle">夜班</div>
-                            <div :style="contentStyle">早班</div>
-                            <div :style="contentStyle">中班</div>
-                        </template>
-                        <template v-if="column.dataIndex == 'insType'">
-                            <div :style="contentStyle1">
-                                <div>一次巡检</div>
-                                <div>二次巡检</div>
-                            </div>
-                            <div :style="contentStyle1">
-                                <div>一次巡检</div>
-                                <div>二次巡检</div>
-                            </div>
-                            <div :style="contentStyle1">
-                                <div>一次巡检</div>
-                                <div>二次巡检</div>
-                            </div>
-                        </template>
-                        <template
-                            v-if="column.dataIndex == 'xjzs' || column.dataIndex == 'yxjs' || column.dataIndex == 'wxjs' || column.dataIndex == 'ljv'">
-                            <div :style="contentStyle1">
-                                <div>{{ text[0] }}</div>
-                                <div>{{ text[1] }}</div>
-                            </div>
-                            <div :style="contentStyle1">
-                                <div>{{ text[2] }}</div>
-                                <div>{{ text[3] }}</div>
-                            </div>
-                            <div :style="contentStyle1">
-                                <div>{{ text[4] }}</div>
-                                <div>{{ text[5] }}</div>
-                            </div>
-                        </template>
-                        <template v-if="column.dataIndex == 'ljxq'">
-                            <div :style="contentStyle1">
-                                <div>
-                                    <div v-for="(item, index) in text[0]" :key="index">{{ item.address }}</div>
-                                </div>
-                                <div>
-                                    <div v-for="(item, index) in text[1]" :key="index">{{ item.address }}</div>
-                                </div>
-                            </div>
-                            <div :style="contentStyle1">
-                                <div>
-                                    <div v-for="(item, index) in text[2]" :key="index">{{ item.address }}</div>
-                                </div>
-                                <div>
-                                    <div v-for="(item, index) in text[3]" :key="index">{{ item.address }}</div>
-                                </div>
-                            </div>
-                            <div :style="contentStyle1">
-                                <div>
-                                    <div v-for="(item, index) in text[4]" :key="index">{{ item.address }}</div>
-                                </div>
-                                <div>
-                                    <div v-for="(item, index) in text[5]" :key="index">{{ item.address }}</div>
-                                </div>
-                            </div>
-                        </template>
-                        <template v-if="column.dataIndex == 'bzljv'">
-                            <div :style="contentStyle">{{ text[0] }}</div>
-                            <div :style="contentStyle">{{ text[1] }}</div>
-                            <div :style="contentStyle">{{ text[2] }}</div>
-                        </template>
-                    </template>
-                    <template #action="{ record }">
-                        <a class="table-action-link" @click="downLoadFx(record)">导出</a>
-
-                    </template>
-                </a-table>
-            </div>
-            <div class="echart-area">
-                <div class="left-echart-area" v-if="yDataY.length != 0">
-                    <echartBox :legendV="legendData" :xData="xData" :yData1="yDataY" :yData2="yDataN"
-                        :datazoomShow="false">
-                    </echartBox>
-                </div>
-                <div class="right-echart-area" v-if="yDataL.length != 0">
-                    <echartBox :legendV="legendData1" :xData="xData1" :yData1="yDataL" :datazoomShow="true"
-                        :typeV="typeV">
-                    </echartBox>
-                </div>
-            </div>
-        </div>
-    </div>
-</template>
-
-<script setup lang="ts">
-import { ref, onMounted, computed, reactive } from 'vue';
-import customHeader from '/@/components/vent/customHeader.vue';
-import echartBox from './components/echartBox.vue'
-import dayjs from 'dayjs';
-import { columns, pagination, } from './gasAnalysis.data'
-import { gasReportLogList, exportGasInsFx } from './gasAnalysis.api'
-import { message } from 'ant-design-vue';
-
-let keyActive = ref(0)
-let searchTime = ref(dayjs().format('YYYY-MM-DD'))//dayjs().format('YYYY-MM-DD HH:mm:ss')
-let tableData = ref<any[]>([])
-let selectedRowKey = ref<any[]>(['1'])
-//柱状图相关数据
-let legendData = reactive({
-    data: ['已巡检', '未巡检',],
-    right: 'center',
-    top: 5,
-    textStyle: {
-        color: "#fff"
-    },
-    itemWidth: 12,
-    itemHeight: 10,
-    // itemGap: 35
-})
-let xData = ref<any[]>(['夜班1', '夜班2', '早班1', '早班2', '中班1', '中班2'])
-let yDataY = ref<any[]>([])
-let yDataN = ref<any[]>([])
-
-//曲线图相关数据
-let legendData1 = reactive({
-    data: ['日漏检率'],
-    right: 'center',
-    top: 5,
-    textStyle: {
-        color: "#fff"
-    },
-    itemWidth: 12,
-    itemHeight: 10,
-    // itemGap: 35
-})
-let xData1 = ref<any[]>([])
-let yDataL = ref<any[]>([])
-let typeV = ref('line')
-let styleNum = ref<any>(6)
-
-let contentStyle = computed(() => {
-    return { height: `${styleNum.value * 8.5}px`, width: '100%', display: 'flex', 'align-items': 'center', 'justify-content': 'center' }
-})
-let contentStyle1 = computed(() => {
-    return { height: `${styleNum.value * 8.5}px`, display: 'flex', 'flex-direction': 'column', 'align-items': 'center', 'justify-content': 'space-around' }
-})
-//table选中数据切换
-let onSelectChange = (selectedRowKeys, selectedRows) => {
-    console.log(`当前选中key: ${selectedRowKeys}`, 'selectedRows: ', selectedRows);
-    selectedRowKey.value = selectedRowKeys
-    yDataY.value = selectedRows[0].yxjs
-    yDataN.value = selectedRows[0].wxjs
-}
-
-//瓦斯巡检统计分析查询列表
-async function gasReportLogLists() {
-    let res = await gasReportLogList({ reportTime: searchTime.value, pageNo: pagination.current, pageSize: pagination.pageSize })
-    console.log(res, '瓦斯巡检统计分析列表')
-    keyActive.value = new Date().getTime()
-    if (res.records.length != 0) {
-        pagination.current = 1
-        tableData.value = res.records.map(el => {
-            el.key = el.id
-            el.bc = '3'
-            el.insType = '2'
-            el.xjzs = [el.totalNight1 || 0, el.totalNight2 || 0, el.totalEarly1 || 0, el.totalEarly2 || 0, el.totalNoon1 || 0, el.totalNoon2 || 0]
-            el.yxjs = [el.finishNight1 || 0, el.finishNight2 || 0, el.finishEarly1 || 0, el.finishEarly2 || 0, el.finishNoon1 || 0, el.finishNoon2 || 0]
-            el.wxjs = [el.missNight1 || 0, el.missNight2 || 0, el.missEarly1 || 0, el.missEarly2 || 0, el.missNoon1 || 0, el.missNoon2 || 0]
-            el.ljv = [el.lossNight1 || 0, el.lossNight2 || 0, el.lossEarly1 || 0, el.lossEarly2 || 0, el.lossNoon1 || 0, el.lossNoon2 || 0]
-            el.ljxq = [JSON.parse(el.detailsLossNight1), JSON.parse(el.detailsLossNight2), JSON.parse(el.detailsLossEarly1), JSON.parse(el.detailsLossEarly2), JSON.parse(el.detailsLossNoon1), JSON.parse(el.detailsLossNoon2)]
-            el.bzljv = [el.totalLossNight || 0, el.totalLossEarly || 0, el.totalLossNoon || 0]
-            // styleNum.value = [...JSON.parse(el.detailsLossNight1), ...JSON.parse(el.detailsLossNight2), ...JSON.parse(el.detailsLossEarly1), ...JSON.parse(el.detailsLossEarly2), ...JSON.parse(el.detailsLossNoon1), ...JSON.parse(el.detailsLossNoon2)].length
-            return el
-        })
-        pagination.total = res.total
-        selectedRowKey.value = [tableData.value[0].id]
-        yDataY.value = tableData.value[0].yxjs
-        yDataN.value = tableData.value[0].wxjs
-        xData1.value = tableData.value.map(v => v.reportTime)
-        yDataL.value = tableData.value.map(m => m.totalLossDay)
-    }
-}
-//查询
-let getSearch = () => {
-    pagination.current = 1
-    gasReportLogLists()
-}
-//重置
-let getReset = () => {
-    pagination.current = 1
-    searchTime.value = dayjs().format('YYYY-MM-DD')
-    gasReportLogLists()
-}
-//分页切换
-let pageChange = (val) => {
-    pagination.current = val.current;
-    pagination.pageSize = val.pageSize;
-    gasReportLogLists()
-}
-//导出
-async function downLoadFx(record) {
-    let res = await exportGasInsFx({ id: record.id })
-    if (res) {
-        let filename = `${new Date().getTime()}.xlsx`;
-        downFilePublic(res, filename);
-        message.success('导出成功')
-    }
-}
-// 下载公用方法
-function downFilePublic(content, fileName) {
-    const blob = new Blob([content], { type: 'application/xlsx;charset=UTF-8' }); // 构造一个blob对象来处理数据
-    // 对于<a>标签,只有 Firefox 和 Chrome(内核) 支持 download 属性
-    // IE10以上支持blob但是依然不支持download
-    if ('download' in document.createElement('a')) {
-        // 支持a标签download的浏览器
-        const link = document.createElement('a'); // 创建a标签
-        link.download = fileName; // a标签添加属性
-        link.style.display = 'none';
-        link.href = URL.createObjectURL(blob);
-        document.body.appendChild(link);
-        link.click(); // 执行下载
-        URL.revokeObjectURL(link.href); // 释放url
-        document.body.removeChild(link); // 释放标签
-    } else {
-        // 其他浏览器
-        navigator.msSaveBlob(blob, fileName);
-    }
-}
-onMounted(() => {
-    gasReportLogLists()
-})
-
-</script>
-
-<style lang="less" scoped>
-.gasReport {
-    width: 100%;
-    height: 100%;
-    padding: 80px 10px 15px 10px;
-    box-sizing: border-box;
-    position: relative;
-
-    .report-container {
-        height: 100%;
-
-        .search-area {
-            margin: 20px 0px;
-
-            .area-item {
-                display: flex;
-                align-items: center;
-
-                .item-text {
-                    color: #fff;
-                }
-            }
-        }
-
-        .table-area {
-            height: 545px;
-        }
-
-        .echart-area {
-            height: calc(100% - 617px);
-            display: flex;
-            justify-content: space-between;
-
-            .left-echart-area,
-            .right-echart-area {
-                width: calc(50% - 10px);
-            }
-        }
-    }
-
-}
-
-:deep(.zxm-table-thead > tr > th:last-child) {
-    border-right: 1px solid #91e9fe !important;
-}
-
-:deep(.zxm-picker-input > input) {
-    color: #fff;
-}
-
-:deep(.zxm-picker) {
-    border: 1px solid #3ad8ff77 !important;
-    background-color: #ffffff00 !important;
-    color: #fff !important;
-}
-</style>

+ 0 - 88
src/views/vent/gas/gasAssessment/components/customHeader.vue

@@ -1,88 +0,0 @@
-<template>
-  <div class="custom-header flex justify-around">
-    <div
-      v-for="(item, i) in badges"
-      :key="`gashome-comp-custom-header-${i}`"
-      class="custom-header__badge"
-      :style="{ backgroundImage: `url(${items[i].bgSrc})` }"
-    >
-      <div class="custom-header__badge_title"> {{ item.value }}</div>
-      <div class="custom-header__badge_desc"> {{ item.desc }}</div>
-    </div>
-  </div>
-</template>
-
-<script setup lang="ts">
-  import Badge02Src from '@/assets/images/vent/home/badge02.png';
-  import Badge03Src from '@/assets/images/vent/home/badge03.png';
-  import Badge05Src from '@/assets/images/vent/home/badge05.png';
-  import Badge06Src from '@/assets/images/vent/home/badge06.png';
-  import Badge04Src from '@/assets/images/vent/home/badge04.png';
-
-  // @TODO 对组件的颜色、背景等样式进行修改,符合全局规范
-
-  defineProps<{
-    /** 描述 Header 中各个徽章的数组,要求4条 */
-    badges: { desc: string; value: string }[];
-  }>();
-
-  const items = [
-    {
-      bgSrc: Badge06Src,
-      color: '#d9e6ec',
-    },
-    {
-      bgSrc: Badge02Src,
-      color: '#aacacd',
-    },
-    {
-      bgSrc: Badge03Src,
-      color: '#9ea890',
-    },
-    {
-      bgSrc: Badge05Src,
-      color: '#d7deea',
-    },
-    {
-      bgSrc: Badge04Src,
-      color: '#d8d5e4',
-    },
-  ];
-</script>
-
-<style lang="less" scoped>
-  @light-blue: aqua;
-
-  .custom-header {
-    width: 1000px;
-    background-image: url('@/assets/images/vent/home/badge-bg.png');
-    background-repeat: no-repeat;
-    background-position: center center;
-    background-size: 1000px auto;
-    height: 160px;
-    padding: 35px 0;
-    color: @white;
-    position: absolute;
-    margin: auto;
-    top: 40px;
-    z-index: 9999;
-    left: 50%;
-    transform: translateX(-50%);
-  }
-
-  .custom-header__badge {
-    background-repeat: no-repeat;
-    background-position: center center;
-    background-size: 100% auto;
-    width: 185px;
-    height: 70px;
-    padding-left: 80px;
-  }
-
-  .custom-header__badge_title {
-    font-size: 20px;
-  }
-  .custom-header__badge_desc {
-    font-size: 12px;
-  }
-</style>

+ 0 - 268
src/views/vent/gas/gasAssessment/components/gasControl.vue

@@ -1,268 +0,0 @@
-<template>
-  <CustomBadges class="w-1710px ml-100px mt-50px" :badges="headerBadges" />
-  <div class="monitor-container">
-    <transition enter-active-class="animate__animated  animate__fadeInLeft" leave-active-class="animate__animated  animate__fadeOutLeft">
-      <div class="lr left-box" v-if="loading">
-        <template v-for="monitorPos in monitorPosNum" :key="monitorPos">
-          <ventBox1 v-if="monitorPos < 4" class="vent-margin-t-10">
-            <template #title>
-              <div>测点{{ monitorPos }}</div>
-            </template>
-            <template #container>
-              <ListItem
-                v-for="(item, index) in monitorPosData"
-                :key="index"
-                class="w-100% mb-5px"
-                :value="get(dataSource, item.code)"
-                :label="item.title"
-                labelWidth="200px"
-              />
-            </template>
-          </ventBox1>
-        </template>
-      </div>
-    </transition>
-    <transition enter-active-class="animate__animated  animate__fadeInRight" leave-active-class="animate__animated  animate__fadeInRight">
-      <div class="lr right-box" v-if="loading">
-        <ventBox1 class="vent-margin-t-10">
-          <template #title>
-            <div>阀门开度调控</div>
-          </template>
-          <template #container>
-            <div class="valve-box-list">
-              <div v-for="(item, index) in monitorValveData" :key="index" class="valve-box">
-                <div class="valve-title">{{ item.title }}:</div>
-                <div class="valve-item">
-                  <a-input placeholder="当前开度" />
-                  <a-input placeholder="目标开度" />
-                  <div class="btn btn1">自主控制</div>
-                  <div class="btn btn1">人工控制</div>
-                </div>
-              </div>
-            </div>
-          </template>
-        </ventBox1>
-        <template v-for="monitorPos in monitorPosNum" :key="monitorPos">
-          <ventBox1 v-if="monitorPos >= 4" class="vent-margin-t-10">
-            <template #title>
-              <div>测点{{ monitorPos }}</div>
-            </template>
-            <template #container>
-              <ListItem
-                v-for="(item, index) in monitorPosData"
-                :key="index"
-                class="w-100% mb-5px"
-                :value="get(dataSource, item.code)"
-                :label="item.title"
-                labelWidth="200px"
-              />
-            </template>
-          </ventBox1>
-        </template>
-      </div>
-    </transition>
-  </div>
-</template>
-
-<script setup lang="ts">
-  import { ref, onMounted } from 'vue';
-  import ventBox1 from '/@/components/vent/ventBox1.vue';
-  import CustomBadges from './customHeader.vue';
-  import { gasUnitOption, headerBadges, monitorValveData, monitorPosData, mockData, gasUnitPieOption, mockPieData } from '../gasAssessment.data';
-  import ListItem from '@/views/vent/gas/components/list/listItem.vue';
-  import { get } from '@/utils/ventutil';
-  import CustomChart from '@/views/vent/home/configurable/components/detail/CustomChart.vue';
-  import BarAndLine from '/@/components/chart/BarAndLine.vue';
-  const echatsOption = {
-    grid: {
-      top: '70px',
-      left: '0px',
-      right: '30px',
-      bottom: '10px',
-      containLabel: true,
-    },
-    legend: {
-      top: '5',
-    },
-  };
-  const loading = ref(false);
-  const dataSource = ref({});
-  const monitorPosNum = ref(4);
-  // // https获取监测数据
-  let timer: null | NodeJS.Timeout = null;
-  function getMonitor(flag?) {
-    if (Object.prototype.toString.call(timer) === '[object Null]') {
-      timer = setTimeout(
-        async () => {
-          if (timer) {
-            timer = null;
-          }
-          await getMonitor();
-          // loading.value = false;
-        },
-        flag ? 0 : 1000
-      );
-    }
-  }
-
-  onMounted(async () => {
-    timer = null;
-    await getMonitor(true);
-    loading.value = true;
-  });
-</script>
-
-<style lang="less" scoped>
-  @ventSpace: zxm;
-  @import '/@/design/vent/modal.less';
-  @import '@/views/vent/monitorManager/comment/less/workFace.less';
-  .monitor-container {
-    height: 850px;
-    pointer-events: none;
-  }
-  .modal-monitor {
-    position: absolute;
-    z-index: -1;
-    flex-direction: row-reverse;
-    .main-container {
-      background-color: #00000078;
-    }
-    .monitor-item {
-      width: 180px;
-      display: flex;
-      flex-direction: row;
-      width: auto;
-      margin-bottom: 3px;
-      .monitor-title {
-        width: 120px;
-        color: #7af5ff;
-        font-weight: 400;
-        font-size: 13px;
-      }
-      .monitor-val {
-        color: #ffb700;
-        display: flex;
-        width: auto;
-
-        .val {
-          width: 60px;
-          font-size: 13px;
-          text-align: center;
-        }
-
-        .unit {
-          color: #ffffffbb;
-          font-size: 13px;
-        }
-      }
-    }
-    .title {
-      text-align: center;
-    }
-  }
-  .left-box,
-  .right-box {
-    width: 380px !important;
-    .valve-box-list {
-      height: 340px;
-      overflow-y: auto;
-    }
-    .valve-box {
-      margin: 10px 5px;
-      .valve-title {
-        color: var(--vent-tabs-action-link);
-        position: relative;
-        &::after {
-          content: '';
-          position: absolute;
-          width: 290px;
-          height: 1px;
-          border: 1px dashed #ffffff8f;
-          top: 11px;
-          right: 5px;
-        }
-      }
-      .valve-item {
-        display: flex;
-        align-items: center;
-        justify-content: space-between;
-        .zxm-input {
-          width: 80px;
-          color: #fff;
-          border: 1px solid #3ad8ff77 !important;
-          background-color: #ffffff00 !important;
-        }
-      }
-    }
-  }
-  .gas-pump-item {
-    padding: 3px 0;
-  }
-
-  .param-set {
-    color: #45d3fd;
-    cursor: pointer;
-    &:hover {
-      color: #38a6c8;
-    }
-  }
-
-  .input-item {
-    margin: 3px 0 !important;
-    .value {
-      width: 80px;
-      text-align: center;
-    }
-  }
-  .data-group {
-    display: flex;
-    flex-wrap: wrap;
-    justify-content: space-between;
-    padding-bottom: 8px;
-    .data-item {
-      width: calc(50% - 10px);
-      display: flex;
-      justify-content: space-between;
-      line-height: 24px;
-      background-image: linear-gradient(to right, #39a3ff00, #39a3ff10, #39a3ff02);
-      margin: 4px 0;
-    }
-    .value {
-      color: #00eefffe;
-    }
-    .data-item1 {
-      width: 100%;
-      line-height: 24px;
-      background-image: linear-gradient(to right, #39a3ff00, #39a3ff10, #39a3ff02);
-      margin: 4px 0;
-    }
-  }
-
-  .base-title {
-    line-height: 26px;
-    position: relative;
-    padding-left: 15px;
-    color: #9bf2ff;
-    &::after {
-      content: '';
-      position: absolute;
-      display: block;
-      width: 4px;
-      height: 12px;
-      top: 8px;
-      left: 5px;
-      background: #45d3fd;
-      border-radius: 4px;
-    }
-  }
-
-  .detail {
-    border: 1px solid #9bf2ff88;
-    padding: 0 5px;
-    background-color: #ffffff11;
-    margin-right: 4px;
-    &:hover {
-      background-color: #ffffff05;
-    }
-  }
-</style>

+ 0 - 225
src/views/vent/gas/gasAssessment/components/gasEcharts.vue

@@ -1,225 +0,0 @@
-<template>
-  <CustomBadges class="w-1710px ml-100px mt-50px" :badges="headerBadges" />
-  <div class="monitor-container">
-    <transition enter-active-class="animate__animated  animate__fadeInLeft" leave-active-class="animate__animated  animate__fadeOutLeft">
-      <div class="lr left-box" v-if="loading">
-        <template v-for="unitIndex in unitNum" :key="unitIndex">
-          <ventBox1 v-if="unitIndex < 4" class="vent-margin-t-10">
-            <template #title>
-              <div>抽采单元{{ unitIndex }}</div>
-            </template>
-            <template #container>
-              <BarAndLine
-                xAxisPropType="time"
-                :dataSource="get(mockGasUnitData, 'history')"
-                height="205px"
-                :chartsColumns="gasUnitOption"
-                :option="echatsOption"
-              />
-            </template>
-          </ventBox1>
-        </template>
-      </div>
-    </transition>
-    <transition enter-active-class="animate__animated  animate__fadeInRight" leave-active-class="animate__animated  animate__fadeInRight">
-      <div class="lr right-box" v-if="loading">
-        <template v-for="unitIndex in unitNum" :key="unitIndex">
-          <ventBox1 v-if="unitIndex >= 4" class="vent-margin-t-10">
-            <template #title>
-              <div>抽采单元{{ unitIndex }}</div>
-            </template>
-            <template #container>
-              <BarAndLine
-                xAxisPropType="time"
-                :dataSource="get(mockGasUnitData, 'history')"
-                height="205px"
-                :chartsColumns="gasUnitOption"
-                :option="echatsOption"
-              />
-            </template>
-          </ventBox1>
-        </template>
-        <ventBox1 class="vent-margin-t-10">
-          <template #title>
-            <div>单元瓦斯累计抽采量</div>
-          </template>
-          <template #container>
-            <CustomChart :chart-config="gasUnitPieOption" :chart-data="mockPieData" height="220px" />
-          </template>
-        </ventBox1>
-      </div>
-    </transition>
-  </div>
-</template>
-
-<script setup lang="ts">
-  import { ref, onMounted } from 'vue';
-  import ventBox1 from '/@/components/vent/ventBox1.vue';
-  import CustomBadges from './customHeader.vue';
-  import { gasUnitOption, headerBadges, mockGasUnitData, gasUnitBarOption, mockData, gasUnitPieOption, mockPieData } from '../gasAssessment.data';
-  import ListItem from '@/views/vent/gas/components/list/listItem.vue';
-  import { get } from '@/utils/ventutil';
-  import CustomChart from '@/views/vent/home/configurable/components/detail/CustomChart.vue';
-  import BarAndLine from '/@/components/chart/BarAndLine.vue';
-  const echatsOption = {
-    grid: {
-      top: '70px',
-      left: '0px',
-      right: '30px',
-      bottom: '10px',
-      containLabel: true,
-    },
-    legend: {
-      top: '5',
-    },
-  };
-  const loading = ref(false);
-  const dataSource = ref({});
-  const unitNum = ref(5);
-  // // https获取监测数据
-  let timer: null | NodeJS.Timeout = null;
-  function getMonitor(flag?) {
-    if (Object.prototype.toString.call(timer) === '[object Null]') {
-      timer = setTimeout(
-        async () => {
-          if (timer) {
-            timer = null;
-          }
-          await getMonitor();
-          // loading.value = false;
-        },
-        flag ? 0 : 1000
-      );
-    }
-  }
-
-  onMounted(async () => {
-    timer = null;
-    await getMonitor(true);
-    loading.value = true;
-  });
-</script>
-
-<style lang="less" scoped>
-  @ventSpace: zxm;
-  @import '/@/design/vent/modal.less';
-  @import '@/views/vent/monitorManager/comment/less/workFace.less';
-  .monitor-container {
-    height: 850px;
-    pointer-events: none;
-  }
-  .modal-monitor {
-    position: absolute;
-    z-index: -1;
-    flex-direction: row-reverse;
-    .main-container {
-      background-color: #00000078;
-    }
-    .monitor-item {
-      width: 180px;
-      display: flex;
-      flex-direction: row;
-      width: auto;
-      margin-bottom: 3px;
-      .monitor-title {
-        width: 120px;
-        color: #7af5ff;
-        font-weight: 400;
-        font-size: 13px;
-      }
-      .monitor-val {
-        color: #ffb700;
-        display: flex;
-        width: auto;
-
-        .val {
-          width: 60px;
-          font-size: 13px;
-          text-align: center;
-        }
-
-        .unit {
-          color: #ffffffbb;
-          font-size: 13px;
-        }
-      }
-    }
-    .title {
-      text-align: center;
-    }
-  }
-  .left-box,
-  .right-box {
-    width: 380px !important;
-  }
-  .gas-pump-item {
-    padding: 3px 0;
-  }
-
-  .param-set {
-    color: #45d3fd;
-    cursor: pointer;
-    &:hover {
-      color: #38a6c8;
-    }
-  }
-
-  .input-item {
-    margin: 3px 0 !important;
-    .value {
-      width: 80px;
-      text-align: center;
-    }
-  }
-  .data-group {
-    display: flex;
-    flex-wrap: wrap;
-    justify-content: space-between;
-    padding-bottom: 8px;
-    .data-item {
-      width: calc(50% - 10px);
-      display: flex;
-      justify-content: space-between;
-      line-height: 24px;
-      background-image: linear-gradient(to right, #39a3ff00, #39a3ff10, #39a3ff02);
-      margin: 4px 0;
-    }
-    .value {
-      color: #00eefffe;
-    }
-    .data-item1 {
-      width: 100%;
-      line-height: 24px;
-      background-image: linear-gradient(to right, #39a3ff00, #39a3ff10, #39a3ff02);
-      margin: 4px 0;
-    }
-  }
-
-  .base-title {
-    line-height: 26px;
-    position: relative;
-    padding-left: 15px;
-    color: #9bf2ff;
-    &::after {
-      content: '';
-      position: absolute;
-      display: block;
-      width: 4px;
-      height: 12px;
-      top: 8px;
-      left: 5px;
-      background: #45d3fd;
-      border-radius: 4px;
-    }
-  }
-
-  .detail {
-    border: 1px solid #9bf2ff88;
-    padding: 0 5px;
-    background-color: #ffffff11;
-    margin-right: 4px;
-    &:hover {
-      background-color: #ffffff05;
-    }
-  }
-</style>

+ 0 - 289
src/views/vent/gas/gasAssessment/components/gasPipingEcharts.vue

@@ -1,289 +0,0 @@
-<template>
-  <CustomBadges class="w-1710px ml-100px mt-50px" :badges="headerBadges" />
-  <div class="monitor-container">
-    <transition enter-active-class="animate__animated  animate__fadeInLeft" leave-active-class="animate__animated  animate__fadeOutLeft">
-      <div class="lr left-box" v-if="loading">
-        <ventBox1 class="vent-margin-t-10">
-          <template #title>
-            <div>甲烷浓度监测</div>
-          </template>
-          <template #container>
-            <BarAndLine
-              xAxisPropType="time"
-              :dataSource="mockGasPipingData"
-              height="205px"
-              :chartsColumns="gasPipingCH4Option"
-              :option="echatsOption"
-            />
-          </template>
-        </ventBox1>
-        <ventBox1 class="vent-margin-t-10">
-          <template #title>
-            <div>甲CO浓度监测</div>
-          </template>
-          <template #container>
-            <BarAndLine
-              xAxisPropType="time"
-              :dataSource="mockGasPipingCOData"
-              height="205px"
-              :chartsColumns="gasPipingCOOption"
-              :option="echatsOption"
-            />
-          </template>
-        </ventBox1>
-        <ventBox1 class="vent-margin-t-10">
-          <template #title>
-            <div>管路温度监测</div>
-          </template>
-          <template #container>
-            <BarAndLine
-              xAxisPropType="time"
-              :dataSource="mockGasPipingWdData"
-              height="205px"
-              :chartsColumns="gasPipingWdOption"
-              :option="echatsOption"
-            />
-          </template>
-        </ventBox1>
-      </div>
-    </transition>
-    <transition enter-active-class="animate__animated  animate__fadeInRight" leave-active-class="animate__animated  animate__fadeInRight">
-      <div class="lr right-box" v-if="loading">
-        <ventBox1 class="vent-margin-t-10">
-          <template #title>
-            <div>管路纯流量监测</div>
-          </template>
-          <template #container>
-            <BarAndLine
-              xAxisPropType="time"
-              :dataSource="mockGasPipingFlowData"
-              height="205px"
-              :chartsColumns="gasPipingFlowOption"
-              :option="echatsOption"
-            />
-          </template>
-        </ventBox1>
-        <ventBox1 class="vent-margin-t-10">
-          <template #title>
-            <div>管路累计抽采量</div>
-          </template>
-          <template #container>
-            <BarAndLine
-              xAxisPropType="time"
-              :dataSource="mockGasPipingCylData"
-              height="205px"
-              :chartsColumns="gasPipingCylOption"
-              :option="echatsOption"
-            />
-          </template>
-        </ventBox1>
-        <ventBox1 class="vent-margin-t-10">
-          <template #title>
-            <div>管路负压</div>
-          </template>
-          <template #container>
-            <BarAndLine
-              xAxisPropType="time"
-              :dataSource="mockGasPipingFyData"
-              height="205px"
-              :chartsColumns="gasPipingFyOption"
-              :option="echatsOption"
-            />
-          </template>
-        </ventBox1>
-        <!-- <ventBox1 class="vent-margin-t-10">
-          <template #title>
-            <div>单元瓦斯累计抽采量</div>
-          </template>
-          <template #container>
-            <CustomChart :chart-config="gasUnitPieOption" :chart-data="mockPieData" height="220px" />
-          </template>
-        </ventBox1> -->
-      </div>
-    </transition>
-  </div>
-</template>
-
-<script setup lang="ts">
-  import { ref, onMounted } from 'vue';
-  import ventBox1 from '/@/components/vent/ventBox1.vue';
-  import CustomBadges from './customHeader.vue';
-  import {
-    gasPipingCylOption,
-    mockGasPipingCylData,
-    mockGasPipingFyData,
-    gasPipingFyOption,
-    mockGasPipingFlowData,
-    gasPipingFlowOption,
-    gasPipingCOOption,
-    mockGasPipingCOData,
-    headerBadges,
-    gasPipingWdOption,
-    mockGasPipingWdData,
-    gasPipingCH4Option,
-    mockGasPipingData,
-  } from '../gasAssessment.data';
-  import CustomChart from '@/views/vent/home/configurable/components/detail/CustomChart.vue';
-  import BarAndLine from '/@/components/chart/BarAndLine.vue';
-  const echatsOption = {
-    grid: {
-      top: '60px',
-      left: '-20px',
-      right: '0px',
-      bottom: '10px',
-      containLabel: true,
-    },
-    legend: {
-      top: '5',
-    },
-  };
-  const loading = ref(false);
-  const dataSource = ref({});
-  const unitNum = ref(5);
-  // // https获取监测数据
-  let timer: null | NodeJS.Timeout = null;
-  function getMonitor(flag?) {
-    if (Object.prototype.toString.call(timer) === '[object Null]') {
-      timer = setTimeout(
-        async () => {
-          if (timer) {
-            timer = null;
-          }
-          await getMonitor();
-          // loading.value = false;
-        },
-        flag ? 0 : 1000
-      );
-    }
-  }
-
-  onMounted(async () => {
-    timer = null;
-    await getMonitor(true);
-    loading.value = true;
-  });
-</script>
-
-<style lang="less" scoped>
-  @ventSpace: zxm;
-  @import '/@/design/vent/modal.less';
-  @import '@/views/vent/monitorManager/comment/less/workFace.less';
-  .monitor-container {
-    height: 850px;
-    pointer-events: none;
-  }
-  .modal-monitor {
-    position: absolute;
-    z-index: -1;
-    flex-direction: row-reverse;
-    .main-container {
-      background-color: #00000078;
-    }
-    .monitor-item {
-      width: 180px;
-      display: flex;
-      flex-direction: row;
-      width: auto;
-      margin-bottom: 3px;
-      .monitor-title {
-        width: 120px;
-        color: #7af5ff;
-        font-weight: 400;
-        font-size: 13px;
-      }
-      .monitor-val {
-        color: #ffb700;
-        display: flex;
-        width: auto;
-
-        .val {
-          width: 60px;
-          font-size: 13px;
-          text-align: center;
-        }
-
-        .unit {
-          color: #ffffffbb;
-          font-size: 13px;
-        }
-      }
-    }
-    .title {
-      text-align: center;
-    }
-  }
-  .left-box,
-  .right-box {
-    width: 380px !important;
-  }
-  .gas-pump-item {
-    padding: 3px 0;
-  }
-
-  .param-set {
-    color: #45d3fd;
-    cursor: pointer;
-    &:hover {
-      color: #38a6c8;
-    }
-  }
-
-  .input-item {
-    margin: 3px 0 !important;
-    .value {
-      width: 80px;
-      text-align: center;
-    }
-  }
-  .data-group {
-    display: flex;
-    flex-wrap: wrap;
-    justify-content: space-between;
-    padding-bottom: 8px;
-    .data-item {
-      width: calc(50% - 10px);
-      display: flex;
-      justify-content: space-between;
-      line-height: 24px;
-      background-image: linear-gradient(to right, #39a3ff00, #39a3ff10, #39a3ff02);
-      margin: 4px 0;
-    }
-    .value {
-      color: #00eefffe;
-    }
-    .data-item1 {
-      width: 100%;
-      line-height: 24px;
-      background-image: linear-gradient(to right, #39a3ff00, #39a3ff10, #39a3ff02);
-      margin: 4px 0;
-    }
-  }
-
-  .base-title {
-    line-height: 26px;
-    position: relative;
-    padding-left: 15px;
-    color: #9bf2ff;
-    &::after {
-      content: '';
-      position: absolute;
-      display: block;
-      width: 4px;
-      height: 12px;
-      top: 8px;
-      left: 5px;
-      background: #45d3fd;
-      border-radius: 4px;
-    }
-  }
-
-  .detail {
-    border: 1px solid #9bf2ff88;
-    padding: 0 5px;
-    background-color: #ffffff11;
-    margin-right: 4px;
-    &:hover {
-      background-color: #ffffff05;
-    }
-  }
-</style>

+ 0 - 283
src/views/vent/gas/gasAssessment/components/gasUnit.vue

@@ -1,283 +0,0 @@
-<template>
-  <CustomBadges class="w-1710px ml-100px mt-50px" :badges="unitHeaderBadges" />
-  <div class="monitor-container">
-    <transition enter-active-class="animate__animated animate__fadeInLeft" leave-active-class="animate__animated animate__fadeOutLeft">
-      <div class="lr left-box" v-if="loading">
-        <ventBox1>
-          <template #title>
-            <div>评价单元基础信息</div>
-          </template>
-          <template #container>
-            <ListItem
-              v-for="(item, index) in gasUnitBase"
-              :key="index"
-              class="w-100% mb-5px"
-              :value="get(dataSource, item.code)"
-              :label="item.title"
-              labelWidth="200px"
-            />
-          </template>
-        </ventBox1>
-
-        <ventBox1 class="vent-margin-t-10">
-          <template #title>
-            <div>单元累计抽采混量</div>
-          </template>
-          <template #container>
-            <CustomChart :chart-config="gasUnitHlOption" :chart-data="mockGasUnitHlData" height="280px" />
-          </template>
-        </ventBox1>
-      </div>
-    </transition>
-    <transition enter-active-class="animate__animated animate__fadeInRight" leave-active-class="animate__animated  animate__fadeOutRight">
-      <div class="lr right-box" v-if="loading">
-        <div class="item-box">
-          <ventBox1>
-            <template #title>
-              <div>实时监测数据</div>
-            </template>
-            <template #container>
-              <ListItem
-                v-for="(item, index) in gasUnitMonitor"
-                :key="index"
-                class="w-100% mb-5px"
-                :value="get(dataSource, item.code)"
-                :label="item.title"
-                labelWidth="200px"
-              />
-            </template>
-          </ventBox1>
-          <ventBox1 class="vent-margin-t-10">
-            <template #title>
-              <div>单元累计抽采纯量</div>
-            </template>
-            <template #container>
-              <CustomChart :chart-config="gasUnitClOption" :chart-data="mockGasUnitClData" height="280px" />
-            </template>
-          </ventBox1>
-        </div>
-      </div>
-    </transition>
-  </div>
-</template>
-
-<script setup lang="ts">
-  import { onBeforeMount, ref, onMounted, onUnmounted } from 'vue';
-  import ventBox1 from '/@/components/vent/ventBox1.vue';
-  import CustomBadges from './customHeader.vue';
-  import {
-    gasUnitMonitor,
-    unitHeaderBadges,
-    gasUnitBase,
-    gasUnitHlOption,
-    mockGasUnitHlData,
-    gasUnitClOption,
-    mockGasUnitClData,
-  } from '../gasAssessment.data';
-  import ListItem from '@/views/vent/gas/components/list/listItem.vue';
-  import { get } from '@/utils/ventutil';
-  import CustomChart from '@/views/vent/home/configurable/components/detail/CustomChart.vue';
-  import { list } from '../gasAssessment.api';
-
-  let props = withDefaults(
-    defineProps<{
-      unitId: string;
-    }>(),
-    {
-      unitId: '',
-    }
-  );
-  const loading = ref(false);
-  const dataSource = ref({});
-
-  // // https获取监测数据
-  let timer: null | NodeJS.Timeout = null;
-  function getMonitor(flag?) {
-    if (Object.prototype.toString.call(timer) === '[object Null]') {
-      timer = setTimeout(
-        async () => {
-          const res = await list({ ids: props.unitId, pagetype: 'normal' });
-          if (res.msgTxt && res.msgTxt[0]) {
-            const data = res.msgTxt[0].datalist[0] || [];
-            dataSource.value = Object.assign(data, data['readData']);
-            if (timer) {
-              timer = null;
-            }
-            getMonitor();
-          }
-          if (timer) {
-            timer = null;
-          }
-          await getMonitor();
-        },
-        flag ? 0 : 1000
-      );
-    }
-  }
-
-  onBeforeMount(() => {});
-
-  onMounted(async () => {
-    getMonitor(true);
-    loading.value = true;
-  });
-
-  onUnmounted(() => {
-    if (timer) {
-      clearTimeout(timer);
-    }
-  });
-</script>
-
-<style lang="less">
-  @import '/@/design/vent/modal.less';
-
-  .@{ventSpace}-select-dropdown {
-    background: #ffffff !important;
-    border-bottom: 1px solid rgba(236, 236, 236, 0.4);
-    backdrop-filter: blur(10px);
-
-    .@{ventSpace}-select-item-option-selected,
-    .@{ventSpace}-select-item-option-active {
-      background-color: #ffffff33 !important;
-    }
-
-    .@{ventSpace}-select-item:hover {
-      background-color: #ffffff33 !important;
-    }
-  }
-</style>
-
-<style lang="less" scoped>
-  @ventSpace: zxm;
-  @import '/@/design/vent/modal.less';
-  @import '@/views/vent/monitorManager/comment/less/workFace.less';
-  .bg {
-    width: 100%;
-    height: 100%;
-    display: flex;
-    justify-content: center;
-    align-items: center;
-    overflow: hidden;
-    position: absolute;
-    pointer-events: auto;
-    z-index: 0;
-  }
-  .monitor-container {
-    height: 850px;
-    pointer-events: none;
-  }
-  .modal-monitor {
-    position: absolute;
-    z-index: -1;
-    flex-direction: row-reverse;
-    .main-container {
-      background-color: #00000078;
-    }
-    .monitor-item {
-      width: 180px;
-      display: flex;
-      flex-direction: row;
-      width: auto;
-      margin-bottom: 3px;
-      .monitor-title {
-        width: 120px;
-        color: #7af5ff;
-        font-weight: 400;
-        font-size: 13px;
-      }
-      .monitor-val {
-        color: #ffb700;
-        display: flex;
-        width: auto;
-
-        .val {
-          width: 60px;
-          font-size: 13px;
-          text-align: center;
-        }
-
-        .unit {
-          color: #ffffffbb;
-          font-size: 13px;
-        }
-      }
-    }
-    .title {
-      text-align: center;
-    }
-  }
-  .left-box {
-    width: 360px;
-  }
-  .gas-pump-item {
-    padding: 3px 0;
-  }
-
-  .param-set {
-    color: #45d3fd;
-    cursor: pointer;
-    &:hover {
-      color: #38a6c8;
-    }
-  }
-
-  .input-item {
-    margin: 3px 0 !important;
-    .value {
-      width: 80px;
-      text-align: center;
-    }
-  }
-  .data-group {
-    display: flex;
-    flex-wrap: wrap;
-    justify-content: space-between;
-    padding-bottom: 8px;
-    .data-item {
-      width: calc(50% - 10px);
-      display: flex;
-      justify-content: space-between;
-      line-height: 24px;
-      background-image: linear-gradient(to right, #39a3ff00, #39a3ff10, #39a3ff02);
-      margin: 4px 0;
-    }
-    .value {
-      color: #00eefffe;
-    }
-    .data-item1 {
-      width: 100%;
-      line-height: 24px;
-      background-image: linear-gradient(to right, #39a3ff00, #39a3ff10, #39a3ff02);
-      margin: 4px 0;
-    }
-  }
-
-  .base-title {
-    line-height: 26px;
-    position: relative;
-    padding-left: 15px;
-    color: #9bf2ff;
-    &::after {
-      content: '';
-      position: absolute;
-      display: block;
-      width: 4px;
-      height: 12px;
-      top: 8px;
-      left: 5px;
-      background: #45d3fd;
-      border-radius: 4px;
-    }
-  }
-
-  .detail {
-    border: 1px solid #9bf2ff88;
-    padding: 0 5px;
-    background-color: #ffffff11;
-    margin-right: 4px;
-    &:hover {
-      background-color: #ffffff05;
-    }
-  }
-</style>

+ 0 - 83
src/views/vent/gas/gasAssessment/components/gasVideo.vue

@@ -1,83 +0,0 @@
-<template>
-  <CustomBadges class="w-1710px ml-100px mt-50px" :badges="headerBadges" />
-  <div class="monitor-container">
-    <transition enter-active-class="animate__animated  animate__fadeInLeft" leave-active-class="animate__animated  animate__fadeOutLeft">
-      <div class="lr left-box" v-if="loading">
-        <template v-for="unitIndex in unitNum" :key="unitIndex">
-          <ventBox1 v-if="unitIndex < 4" class="vent-margin-t-10">
-            <template #title>
-              <div>视频{{ unitIndex }}</div>
-            </template>
-            <template #container>
-              <div class="video-box"></div>
-            </template>
-          </ventBox1>
-        </template>
-      </div>
-    </transition>
-    <transition enter-active-class="animate__animated  animate__fadeInRight" leave-active-class="animate__animated  animate__fadeInRight">
-      <div class="lr right-box" v-if="loading">
-        <template v-for="unitIndex in unitNum" :key="unitIndex">
-          <ventBox1 v-if="unitIndex >= 4" class="vent-margin-t-10">
-            <template #title>
-              <div>视频{{ unitIndex }}</div>
-            </template>
-            <template #container>
-              <div class="video-box"></div>
-            </template>
-          </ventBox1>
-        </template>
-      </div>
-    </transition>
-  </div>
-</template>
-
-<script setup lang="ts">
-  import { ref, onMounted } from 'vue';
-  import ventBox1 from '/@/components/vent/ventBox1.vue';
-  import CustomBadges from './customHeader.vue';
-  import { gasUnitOption, headerBadges, mockGasUnitData, gasUnitBarOption, mockData, gasUnitPieOption, mockPieData } from '../gasAssessment.data';
-  const loading = ref(false);
-  const dataSource = ref({});
-  const unitNum = ref(5);
-  // // https获取监测数据
-  let timer: null | NodeJS.Timeout = null;
-  function getMonitor(flag?) {
-    if (Object.prototype.toString.call(timer) === '[object Null]') {
-      timer = setTimeout(
-        async () => {
-          if (timer) {
-            timer = null;
-          }
-          await getMonitor();
-          // loading.value = false;
-        },
-        flag ? 0 : 1000
-      );
-    }
-  }
-
-  onMounted(async () => {
-    timer = null;
-    await getMonitor(true);
-    loading.value = true;
-  });
-</script>
-
-<style lang="less" scoped>
-  @ventSpace: zxm;
-  @import '/@/design/vent/modal.less';
-  @import '@/views/vent/monitorManager/comment/less/workFace.less';
-  .monitor-container {
-    height: 850px;
-    pointer-events: none;
-  }
-
-  .left-box,
-  .right-box {
-    width: 380px !important;
-  }
-  .video-box {
-    height: 200px;
-  }
-</style>

+ 0 - 249
src/views/vent/gas/gasAssessment/components/workFace.vue

@@ -1,249 +0,0 @@
-<template>
-  <CustomBadges class="w-1710px ml-100px mt-50px" :badges="headerBadges" />
-  <div class="monitor-container">
-    <transition enter-active-class="animate__animated  animate__fadeInLeft" leave-active-class="animate__animated  animate__fadeOutLeft">
-      <div class="lr left-box" v-if="loading">
-        <ventBox1>
-          <template #title>
-            <div>工作面基础信息</div>
-          </template>
-          <template #container>
-            <ListItem
-              v-for="(item, index) in gasMonitor"
-              :key="index"
-              class="w-100% mb-5px"
-              :value="get(workFaceData, item.code)"
-              :label="item.title"
-              labelWidth="200px"
-            />
-          </template>
-        </ventBox1>
-
-        <ventBox1 class="vent-margin-t-10">
-          <template #title>
-            <div>工作面基础信息</div>
-          </template>
-          <template #container>
-            <CustomChart :chart-config="gasUnitBarOption" :chart-data="gasUnitDataSource" height="280px" />
-          </template>
-        </ventBox1>
-      </div>
-    </transition>
-    <transition enter-active-class="animate__animated  animate__fadeInRight" leave-active-class="animate__animated  animate__fadeInRight">
-      <div class="lr right-box" v-if="loading">
-        <div class="item-box">
-          <ventBox1>
-            <template #title>
-              <div>工作面支管抽采信息</div>
-            </template>
-            <template #container>
-              <ListItem
-                v-for="(item, index) in gasPumpValve"
-                :key="index"
-                class="w-100% mb-5px"
-                :value="get(workFaceData, item.code)"
-                :label="item.title"
-                labelWidth="200px"
-              />
-            </template>
-          </ventBox1>
-          <ventBox1 class="vent-margin-t-10">
-            <template #title>
-              <div>工作面基础信息</div>
-            </template>
-            <template #container>
-              <CustomChart :chart-config="gasUnitPieOption" :chart-data="gasUnitDataSource" height="280px" />
-            </template>
-          </ventBox1>
-        </div>
-      </div>
-    </transition>
-  </div>
-</template>
-
-<script setup lang="ts">
-  import { ref, onMounted, watch } from 'vue';
-  import ventBox1 from '/@/components/vent/ventBox1.vue';
-  import CustomBadges from './customHeader.vue';
-  import { gasMonitor, gasPumpValve, gasUnitBarOption, mockData, gasUnitPieOption, mockPieData } from '../gasAssessment.data';
-  import ListItem from '@/views/vent/gas/components/list/listItem.vue';
-  import { get } from '@/utils/ventutil';
-  import CustomChart from '@/views/vent/home/configurable/components/detail/CustomChart.vue';
-  type DeviceType = { deviceType: string; deviceName: string; datalist: any[] };
-  const props = defineProps({
-    dataSource: {
-      type: Object,
-      default: () => {},
-    },
-  });
-
-  const loading = ref(false);
-  const gasUnitDataSource = ref<DeviceType>(); // 抽采单元监测数据
-  const workFaceData = ref<any>({}); // 工作面基础数据
-  const headerBadges = ref([
-    {
-      value: get(workFaceData.value, 'gasReserves'),
-      desc: '瓦斯总储量',
-      code: '',
-    },
-    {
-      value: get(workFaceData.value, 'totalGasVolume'),
-      desc: '抽采达标量',
-      code: '',
-    },
-    {
-      value: get(workFaceData.value, 'cumulativeFlow'),
-      desc: '累计抽采量',
-      code: '',
-    },
-    {
-      value: get(workFaceData.value, 'scalarRecognition'),
-      desc: '预抽确认量',
-      code: '',
-    },
-    {
-      value: get(workFaceData.value, 'totalDate'),
-      desc: '已抽时间',
-      code: '',
-    },
-  ]);
-  watch(
-    () => props.dataSource,
-    (newValue: DeviceType[]) => {
-      if (newValue && newValue.length > 0) {
-        gasUnitDataSource.value = newValue.find((item) => item.deviceType.startsWith('unit'));
-        const workFaceDataSorce = newValue.find((item) => item.deviceType === 'sys');
-        if (workFaceDataSorce) {
-          workFaceData.value = workFaceDataSorce.datalist[0];
-        }
-      }
-    }
-  );
-
-  onMounted(async () => {
-    loading.value = true;
-  });
-</script>
-
-<style lang="less" scoped>
-  @ventSpace: zxm;
-  @import '/@/design/vent/modal.less';
-  @import '@/views/vent/monitorManager/comment/less/workFace.less';
-  .monitor-container {
-    height: 850px;
-    pointer-events: none;
-  }
-  .modal-monitor {
-    position: absolute;
-    z-index: -1;
-    flex-direction: row-reverse;
-    .main-container {
-      background-color: #00000078;
-    }
-    .monitor-item {
-      width: 180px;
-      display: flex;
-      flex-direction: row;
-      width: auto;
-      margin-bottom: 3px;
-      .monitor-title {
-        width: 120px;
-        color: #7af5ff;
-        font-weight: 400;
-        font-size: 13px;
-      }
-      .monitor-val {
-        color: #ffb700;
-        display: flex;
-        width: auto;
-
-        .val {
-          width: 60px;
-          font-size: 13px;
-          text-align: center;
-        }
-
-        .unit {
-          color: #ffffffbb;
-          font-size: 13px;
-        }
-      }
-    }
-    .title {
-      text-align: center;
-    }
-  }
-  .left-box {
-    width: 360px;
-  }
-  .gas-pump-item {
-    padding: 3px 0;
-  }
-
-  .param-set {
-    color: #45d3fd;
-    cursor: pointer;
-    &:hover {
-      color: #38a6c8;
-    }
-  }
-
-  .input-item {
-    margin: 3px 0 !important;
-    .value {
-      width: 80px;
-      text-align: center;
-    }
-  }
-  .data-group {
-    display: flex;
-    flex-wrap: wrap;
-    justify-content: space-between;
-    padding-bottom: 8px;
-    .data-item {
-      width: calc(50% - 10px);
-      display: flex;
-      justify-content: space-between;
-      line-height: 24px;
-      background-image: linear-gradient(to right, #39a3ff00, #39a3ff10, #39a3ff02);
-      margin: 4px 0;
-    }
-    .value {
-      color: #00eefffe;
-    }
-    .data-item1 {
-      width: 100%;
-      line-height: 24px;
-      background-image: linear-gradient(to right, #39a3ff00, #39a3ff10, #39a3ff02);
-      margin: 4px 0;
-    }
-  }
-
-  .base-title {
-    line-height: 26px;
-    position: relative;
-    padding-left: 15px;
-    color: #9bf2ff;
-    &::after {
-      content: '';
-      position: absolute;
-      display: block;
-      width: 4px;
-      height: 12px;
-      top: 8px;
-      left: 5px;
-      background: #45d3fd;
-      border-radius: 4px;
-    }
-  }
-
-  .detail {
-    border: 1px solid #9bf2ff88;
-    padding: 0 5px;
-    background-color: #ffffff11;
-    margin-right: 4px;
-    &:hover {
-      background-color: #ffffff05;
-    }
-  }
-</style>

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

@@ -1,11 +0,0 @@
-import { defHttp } from '/@/utils/http/axios';
-
-enum Api {
-  list = '/monitor/device',
-}
-/**
- * 列表接口
- * @param params
- */
-export const list = (params) => defHttp.post({ url: Api.list, params });
-export const getTableList = (params) => defHttp.get({ url: '/safety/ventanalyManageSystem/list', params });

+ 0 - 1385
src/views/vent/gas/gasAssessment/gasAssessment.data.ts

@@ -1,1385 +0,0 @@
-import { reactive, ref } from 'vue';
-import echarts from '/@/utils/lib/echarts';
-import { ModuleDataChart } from '/@/views/vent/deviceManager/configurationTable/types';
-
-export const monitorNav = [
-  {
-    title: '达标评判',
-    pathName: 'gasAssessment',
-    isShow: true,
-  },
-  {
-    title: '智能调控',
-    pathName: 'gasControl',
-    isShow: false,
-  },
-  {
-    title: '单元时程曲线',
-    pathName: 'gasEcharts',
-    isShow: false,
-  },
-  {
-    title: '管道监测',
-    pathName: 'gasPiping',
-    isShow: false,
-  },
-  {
-    title: '视频监测',
-    pathName: 'gasVideo',
-    isHover: false,
-  },
-  // {
-  //   title: '故障诊断',
-  //   pathName: 'gasAlarm',
-  //   isHover: false,
-  // },
-];
-
-export const echartsOption = reactive({
-  tooltip: { trigger: 'axis', axisPointer: { lineStyle: { color: '#fff' } } },
-  legend: {
-    top: '-5',
-    icon: 'rect',
-    data: ['进风', '回风'],
-    right: '10px',
-    textStyle: { fontSize: 12, color: '#fff' },
-  },
-  grid: { x: 50, y: 50, x2: 12, y2: 40, bottom: '25', top: '10' },
-  xAxis: {
-    type: 'category',
-    boundaryGap: false,
-    axisLine: { lineStyle: { color: '#8EAFB9' } },
-    axisLabel: { color: '#ffffffcc' },
-    splitLine: { show: true, lineStyle: { color: '#57617B22', type: 'dashed' } },
-    data: [],
-  },
-  yAxis: [
-    {
-      type: 'value',
-      name: 'm³/min',
-      axisTick: {
-        show: false,
-      },
-      axisLine: { lineStyle: { show: true, color: '#8EAFB9' } },
-      axisLabel: { margin: 10, fontSize: 12, color: '#ffffffcc' },
-      splitLine: { show: true, lineStyle: { color: '#57617B22', type: 'dashed' } },
-    },
-  ],
-  series: [
-    {
-      name: '进风',
-      type: 'line',
-      smooth: true,
-      lineStyle: { width: 2 },
-      yAxisIndex: 0,
-      // markLine: {
-      //   data: [{ yAxis: 0, name: '需风量' }],
-      // },
-      areaStyle: {
-        color: new echarts.graphic.LinearGradient(
-          0,
-          0,
-          0,
-          1,
-          [
-            {
-              offset: 0,
-              color: 'rgba(185,150,248,0.3)',
-            },
-            {
-              offset: 0.8,
-              color: 'rgba(185,150,248,0)',
-            },
-          ],
-          false
-        ),
-        shadowColor: 'rgba(0, 0, 0, 0.1)',
-        shadowBlur: 10,
-      },
-      itemStyle: { color: '#B996F8' },
-      data: [],
-    },
-    {
-      name: '回风',
-      type: 'line',
-      smooth: true,
-      lineStyle: { width: 2 },
-      yAxisIndex: 0,
-      // markLine: {
-      //   data: [{ yAxis: 0, name: '需风量' }],
-      // },
-      areaStyle: {
-        color: new echarts.graphic.LinearGradient(
-          0,
-          0,
-          0,
-          1,
-          [
-            {
-              offset: 0,
-              color: 'rgba(3, 194, 236, 0.3)',
-            },
-            {
-              offset: 0.8,
-              color: 'rgba(3, 194, 236, 0)',
-            },
-          ],
-          false
-        ),
-        shadowColor: 'rgba(0, 0, 0, 0.1)',
-        shadowBlur: 10,
-      },
-      itemStyle: { color: '#03C2EC' },
-      data: [],
-    },
-  ],
-});
-
-export const gasMonitor = [
-  {
-    title: '工作面走向长度',
-    code: 'workingFaceZouxiangLength',
-    unit: 'm',
-  },
-  {
-    title: '煤层厚度',
-    code: 'coalSeamThickness',
-    unit: 'm',
-  },
-  {
-    title: '切眼长度',
-    code: 'workingFaceQieyanLength',
-    unit: 'm',
-  },
-  {
-    title: '工作面长度',
-    code: 'workingFaceLengeh',
-    unit: 'm',
-  },
-  {
-    title: '工作面采高',
-    code: 'workingFaceHeight',
-    unit: 'm',
-  },
-  {
-    title: '煤炭储量',
-    code: 'coalReserves',
-    unit: 't',
-  },
-  {
-    title: '原始瓦斯含量',
-    code: 'originalGasContent',
-    unit: 'm³',
-  },
-  {
-    title: '工作面瓦斯储量',
-    code: 'gasReserves',
-    unit: 'm³',
-  },
-  {
-    title: '预抽瓦斯认标量',
-    code: 'scalarRecognition',
-    unit: '',
-  },
-];
-export const gasUnitBase = [
-  {
-    title: '单元名称',
-    code: 'T0',
-    unit: '',
-  },
-  {
-    title: '煤炭储量',
-    code: 'T1',
-    unit: '',
-  },
-  {
-    title: '瓦斯储量',
-    code: 'T2',
-    unit: 'm³',
-  },
-  {
-    title: '钻孔施工长度',
-    code: 'CO2',
-    unit: 'm',
-  },
-  {
-    title: '单元瓦斯含量',
-    code: 'gasC',
-    unit: 'm³',
-  },
-  {
-    title: '单元原始瓦斯压力',
-    code: 'gasMixMass',
-    unit: 'MPa',
-  },
-  {
-    title: '抽采钻孔管径',
-    code: 'gasMass',
-    unit: 'm',
-  },
-  {
-    title: '抽采单元汇总管径',
-    code: 'gasMass',
-    unit: 'm',
-  },
-];
-export const gasUnitMonitor = [
-  {
-    title: '瓦斯总储量',
-    code: 'T0',
-    unit: 'm³',
-  },
-  {
-    title: '抽采达标量',
-    code: 'T1',
-    unit: 'm³',
-  },
-  {
-    title: '累计抽采纯量',
-    code: 'T2',
-    unit: 'm³',
-  },
-  {
-    title: '当前抽采率',
-    code: 'CO2',
-    unit: '%',
-  },
-  {
-    title: '实时抽采率',
-    code: 'gasC',
-    unit: '%',
-  },
-  {
-    title: '实时抽采浓度',
-    code: 'gasMixMass',
-    unit: '%',
-  },
-  {
-    title: '实时抽采负压',
-    code: 'gasMass',
-    unit: 'MPa',
-  },
-  {
-    title: '残余瓦斯压力',
-    code: 'gasMass',
-    unit: 'MPa',
-  },
-];
-
-export const monitorPosData = [
-  {
-    title: '负压',
-    code: 'T0',
-    unit: 'kPa',
-  },
-  {
-    title: 'CH₄浓度',
-    code: 'T1',
-    unit: '%',
-  },
-  {
-    title: '流量',
-    code: 'T2',
-    unit: 'm³/min',
-  },
-  {
-    title: '管道温度',
-    code: 'CO2',
-    unit: '℃',
-  },
-  {
-    title: 'CO浓度',
-    code: 'gasC',
-    unit: 'ppm',
-  },
-];
-export const monitorValveData = [
-  {
-    title: '1#阀门',
-    code: 'T0',
-    unit: '°',
-  },
-  {
-    title: '2#阀门',
-    code: 'T1',
-    unit: '°',
-  },
-  {
-    title: '3#阀门',
-    code: 'T2',
-    unit: '°',
-  },
-  {
-    title: '4#阀门',
-    code: 'CO2',
-    unit: '°',
-  },
-  {
-    title: '5#阀门',
-    code: 'gasC',
-    unit: '°',
-  },
-];
-
-export const gasParamData = [
-  {
-    title: '走向长度 (m)',
-    code: 'lenH',
-  },
-  {
-    title: '倾向长度 (m)',
-    code: 'lenDip',
-  },
-  {
-    title: '煤层厚度 (m)',
-    code: 'thickness',
-  },
-  {
-    title: '煤层倾角 (°)',
-    code: 'angleDip',
-  },
-  {
-    title: '吸附常数a (cm³/gdaf)',
-    code: 'adsorbA',
-  },
-  {
-    title: '吸附常数b (MPa-l)',
-    code: 'adsorbB',
-  },
-  {
-    title: '水分Mad (%)',
-    code: 'waterMad',
-  },
-  {
-    title: '灰分Ad (%)',
-    code: 'dustAd',
-  },
-  {
-    title: '挥发分Vdaf (%)',
-    code: 'volatilizeAd',
-  },
-  {
-    title: '孔隙率 (m³)',
-    code: 'poreRate',
-  },
-  {
-    title: '真相对密度',
-    code: 'trueDensity',
-  },
-  {
-    title: '视相对密度',
-    code: 'apparentDensity',
-  },
-];
-
-export const currentGasMonitor = [
-  {
-    title: '原始瓦斯含量 (m³)',
-    code: 'gasOriginalMass',
-  },
-  {
-    title: '残余瓦斯含量 (m³)',
-    code: 'gasRemnantMass',
-  },
-  {
-    title: '残存瓦斯含量 (m³)',
-    code: 'gasSurviveMass',
-  },
-  {
-    title: '瓦斯压力 (MPa)',
-    code: 'gasTotalMass',
-  },
-  {
-    title: '煤层厚度 (m)',
-    code: 'currentThickness',
-  },
-  {
-    title: '煤层倾角 (°)',
-    code: 'currentAngleDip',
-  },
-  {
-    title: '地质构造',
-    code: 'geologicStructure',
-  },
-];
-
-export const gasPumpValve = [
-  {
-    title: '开始抽采日期',
-    code: 'beginDrainageDate',
-    unit: '',
-  },
-  {
-    title: '已抽时间',
-    code: 'totalDate',
-    unit: '天',
-  },
-  {
-    title: '抽采单元数量',
-    code: 'unitNum',
-    unit: '',
-  },
-  {
-    title: '累计流量',
-    code: 'cumulativeFlow',
-    unit: 'm³',
-  },
-  {
-    title: '累计纯量',
-    code: 'cumulativeScalar',
-    unit: 'm³',
-  },
-  // {
-  //   title: '开抽日期',
-  //   code: 'T0',
-  //   unit: '',
-  // },
-  // {
-  //   title: '支管抽采负压',
-  //   code: 'T0',
-  //   unit: '',
-  // },
-  // {
-  //   title: '支管抽采流量',
-  //   code: 'T0',
-  //   unit: '',
-  // },
-  // {
-  //   title: '抽采管路气体温度',
-  //   code: 'T0',
-  //   unit: '',
-  // },
-  // {
-  //   title: '抽采管路甲烷浓度',
-  //   code: 'T0',
-  //   unit: '',
-  // },
-  // {
-  //   title: '抽采管路一氧化碳浓度',
-  //   code: 'T0',
-  //   unit: '',
-  // },
-  // {
-  //   title: '累计流量',
-  //   code: 'T0',
-  //   unit: '',
-  // },
-  // {
-  //   title: '累计纯量',
-  //   code: 'T0',
-  //   unit: '',
-  // },
-];
-
-export const gasUnitDetail = [
-  {
-    title: '开抽日期',
-    code: 'startDay',
-    // unit: 'kPa',
-  },
-  {
-    title: '瓦斯储量',
-    code: 'gasReserves  ',
-    unit: 'Nm³',
-  },
-  {
-    title: '煤炭储量',
-    code: 'coalReserves  ',
-    unit: 'Mt',
-  },
-  {
-    title: '累计纯量',
-    code: 'cumulativeScalar',
-    unit: 'Nm³',
-  },
-  {
-    title: '累计流量',
-    code: 'cumulativeFlow',
-    unit: 'm³',
-  },
-  {
-    title: '抽采达标量',
-    code: 'extractScalarQuantity', //cumulativeScalar
-    unit: 'Nm³',
-  },
-  {
-    title: '累计抽采纯量',
-    code: 'accumulatedExtractionPurity',
-    unit: 'm³',
-  },
-  {
-    title: '残余瓦斯含量',
-    code: 'residualGasContent',
-    unit: 'Nm³',
-  },
-  // {
-  //   title: '累计纯量',
-  //   code: 'unit=Mass',
-  // },
-];
-
-export function getBezierControlPoint(A = { x: 1, y: 1 }, alpha_degrees = 45, d = 10) {
-  // 转换角度为弧度
-  const alpha_radians = (alpha_degrees * Math.PI) / 180;
-  // 计算 C 点的坐标
-  const C = {
-    x: A.x + d * Math.cos(alpha_radians),
-    y: A.y + d * Math.sin(alpha_radians),
-  };
-  return C;
-}
-
-export const headerBadges = ref([
-  {
-    value: 'T1', //
-    desc: '瓦斯总储量',
-    code: '',
-  },
-  {
-    value: 'T2',
-    desc: '抽采达标量',
-    code: '',
-  },
-  {
-    value: 'T3',
-    desc: '累计抽采量',
-    code: '',
-  },
-  {
-    value: 'T4',
-    desc: '预抽比率',
-    code: '',
-  },
-  {
-    value: 'T5',
-    desc: '已抽时间',
-    code: '',
-  },
-]);
-
-export const gasUnitBarOption: ModuleDataChart = {
-  type: 'bar_cylinder',
-  readFrom: '',
-  legend: { show: true },
-  xAxis: [{ show: true }],
-  yAxis: [{ show: true, name: '', position: 'left' }],
-  series: [
-    {
-      readFrom: 'datalist',
-      xprop: 'strname',
-      yprop: 'unitval',
-      label: '',
-    },
-  ],
-};
-
-export const mockData = {
-  id: 4,
-  objType: '氧气',
-  arrayDev: [
-    {
-      strinstallpos: '抽采单元1',
-      val: '1.76',
-    },
-    {
-      strinstallpos: '抽采单元2',
-      val: '0.08',
-    },
-    {
-      strinstallpos: '抽采单元3',
-      val: '0.30',
-    },
-    {
-      strinstallpos: '抽采单元4',
-      val: '0.67',
-    },
-    {
-      strinstallpos: '抽采单元5',
-      val: '0.67',
-    },
-  ],
-};
-
-export const gasUnitPieOption: ModuleDataChart = {
-  type: 'pie',
-  readFrom: '',
-  legend: { show: true },
-  xAxis: [{ show: true }],
-  yAxis: [{ show: true, name: '', position: 'left' }],
-  series: [
-    {
-      readFrom: 'datalist',
-      xprop: 'strname',
-      yprop: 'unitval',
-      label: '',
-    },
-  ],
-};
-
-export const mockPieData = {
-  id: 4,
-  objType: '氧气',
-  arrayDev: [
-    {
-      strinstallpos: '抽采单元1',
-      val: '1.76',
-    },
-    {
-      strinstallpos: '抽采单元2',
-      val: '0.08',
-    },
-    {
-      strinstallpos: '抽采单元3',
-      val: '0.30',
-    },
-    {
-      strinstallpos: '抽采单元4',
-      val: '0.67',
-    },
-    {
-      strinstallpos: '抽采单元5',
-      val: '0.67',
-    },
-  ],
-};
-
-export const gasUnitHlOption: ModuleDataChart = {
-  type: 'line_area',
-  readFrom: '',
-  legend: { show: false },
-  xAxis: [{ show: true }],
-  yAxis: [{ show: true, name: '混量(m³)', position: 'left' }],
-  series: [{ readFrom: 'history', xprop: 'time', yprop: 'val', label: '单元瓦斯混量' }],
-};
-
-export const mockGasUnitHlData = {
-  id: 4,
-  objType: '氧气',
-  history: [
-    {
-      time: '2024-12-13',
-      val: '113.76',
-    },
-    {
-      time: '2024-12-14',
-      val: '153.76',
-    },
-    {
-      time: '2024-12-15',
-      val: '163.76',
-    },
-    {
-      time: '2024-12-16',
-      val: '193.76',
-    },
-    {
-      time: '2024-12-17',
-      val: '203.76',
-    },
-    {
-      time: '2024-12-18',
-      val: '223.76',
-    },
-  ],
-};
-
-export const gasUnitClOption: ModuleDataChart = {
-  type: 'line_area',
-  readFrom: '',
-  legend: { show: false },
-  xAxis: [{ show: true }],
-  yAxis: [{ show: true, name: '纯量(m³)', position: 'left' }],
-  series: [{ readFrom: 'history', xprop: 'time', yprop: 'val', label: '单元瓦斯纯量', color: '#FAC858' }],
-};
-
-export const mockGasUnitClData = {
-  id: 4,
-  objType: '氧气',
-  history: [
-    {
-      time: '2024-12-13',
-      val: '103.76',
-    },
-    {
-      time: '2024-12-14',
-      val: '133.76',
-    },
-    {
-      time: '2024-12-15',
-      val: '143.76',
-    },
-    {
-      time: '2024-12-16',
-      val: '173.76',
-    },
-    {
-      time: '2024-12-17',
-      val: '193.76',
-    },
-    {
-      time: '2024-12-18',
-      val: '213.76',
-    },
-  ],
-};
-
-export const gasUnitOption = [
-  {
-    legend: '瓦斯浓度',
-    seriesName: '(m³)',
-    ymax: 10000,
-    yname: 'm³',
-    linetype: 'line',
-    yaxispos: 'left',
-    color: '#37BCF2',
-    sort: 1,
-    xRotate: 10,
-    dataIndex: 'nd',
-  },
-  {
-    legend: '抽采负压',
-    seriesName: '(KPa)',
-    ymax: 50,
-    yname: 'MPa',
-    linetype: 'line',
-    yaxispos: 'right',
-    color: '#FC4327',
-    sort: 2,
-    xRotate: 10,
-    dataIndex: 'fy',
-  },
-  {
-    legend: '瓦斯流量',
-    seriesName: '(%)',
-    ymax: 50,
-    yname: '%',
-    linetype: 'line',
-    yaxispos: 'right',
-    color: '#91CC75',
-    sort: 3,
-    xRotate: 10,
-    dataIndex: 'flowNum',
-  },
-];
-
-export const mockGasUnitData = {
-  history: [
-    {
-      time: '08:12:00',
-      flowNum: '43.76',
-      fy: '26.87',
-      nd: '23',
-    },
-    {
-      time: '08:12:01',
-      flowNum: '33.76',
-      fy: '26.87',
-      nd: '23',
-    },
-    {
-      time: '08:12:02',
-      flowNum: '53.76',
-      fy: '26.87',
-      nd: '23',
-    },
-    {
-      time: '08:12:03',
-      flowNum: '73.76',
-      fy: '19.87',
-      nd: '23',
-    },
-    {
-      time: '08:12:04',
-      flowNum: '63.76',
-      fy: '20.87',
-      nd: '23',
-    },
-    {
-      time: '08:12:05',
-      flowNum: '13.76',
-      fy: '23.87',
-      nd: '23',
-    },
-  ],
-};
-// 管道甲烷
-export const gasPipingCH4Option = [
-  {
-    legend: '主管道',
-    seriesName: '(%)',
-    ymax: 50,
-    yname: '%',
-    linetype: 'line',
-    yaxispos: 'left',
-    color: '#37BCF2',
-    sort: 1,
-    xRotate: 10,
-    dataIndex: 'CH40',
-  },
-  {
-    legend: '支路1',
-    seriesName: '(%)',
-    ymax: 50,
-    yname: '%',
-    linetype: 'line',
-    yaxispos: 'left',
-    color: '#FC4327',
-    sort: 1,
-    xRotate: 10,
-    dataIndex: 'CH41',
-  },
-  {
-    legend: '支路2',
-    seriesName: '(%)',
-    ymax: 50,
-    yname: '%',
-    linetype: 'line',
-    yaxispos: 'left',
-    color: '#91CC75',
-    sort: 1,
-    xRotate: 10,
-    dataIndex: 'CH42',
-  },
-];
-
-export const mockGasPipingData = [
-  {
-    time: '08:12:00',
-    CH40: '43',
-    CH41: '24.23',
-    CH42: '14.23',
-  },
-  {
-    time: '08:12:01',
-    CH40: '43',
-    CH41: '28.23',
-    CH42: '16.23',
-  },
-  {
-    time: '08:12:02',
-    CH40: '43',
-    CH41: '21.23',
-    CH42: '16.23',
-  },
-  {
-    time: '08:12:03',
-    CH40: '43',
-    CH41: '25.23',
-    CH42: '11.23',
-  },
-  {
-    time: '08:12:04',
-    CH40: '43',
-    CH41: '27.23',
-    CH42: '15.23',
-  },
-  {
-    time: '08:12:05',
-    CH40: '43',
-    CH41: '28.23',
-    CH42: '12.23',
-  },
-];
-// 管道一氧化碳
-export const gasPipingCOOption = [
-  {
-    legend: '主管道',
-    seriesName: '(ppm)',
-    ymax: 50,
-    yname: 'ppm',
-    linetype: 'line',
-    yaxispos: 'left',
-    color: '#37BCF2',
-    sort: 1,
-    xRotate: 10,
-    dataIndex: 'CO0',
-  },
-  {
-    legend: '支路1',
-    seriesName: '(ppm)',
-    ymax: 50,
-    yname: 'ppm',
-    linetype: 'line',
-    yaxispos: 'left',
-    color: '#FC4327',
-    sort: 1,
-    xRotate: 10,
-    dataIndex: 'CO1',
-  },
-  {
-    legend: '支路2',
-    seriesName: '(ppm)',
-    ymax: 50,
-    yname: 'ppm',
-    linetype: 'line',
-    yaxispos: 'left',
-    color: '#91CC75',
-    sort: 1,
-    xRotate: 10,
-    dataIndex: 'CO2',
-  },
-];
-
-export const mockGasPipingCOData = [
-  {
-    time: '08:12:00',
-    CO0: '43',
-    CO1: '24.23',
-    CO2: '14.23',
-  },
-  {
-    time: '08:12:01',
-    CO0: '21.98',
-    CO1: '18.23',
-    CO2: '16.23',
-  },
-  {
-    time: '08:12:02',
-    CO0: '23.89',
-    CO1: '21.23',
-    CO2: '16.23',
-  },
-  {
-    time: '08:12:03',
-    CO0: '20.23',
-    CO1: '15.23',
-    CO2: '11.23',
-  },
-  {
-    time: '08:12:04',
-    CO0: '24.75',
-    CO1: '17.23',
-    CO2: '15.23',
-  },
-  {
-    time: '08:12:05',
-    CO0: '23.45',
-    CO1: '18.23',
-    CO2: '12.23',
-  },
-];
-// 管道温度
-export const gasPipingWdOption = [
-  {
-    legend: '主管道',
-    seriesName: '(℃)',
-    ymax: 20,
-    yname: '℃',
-    linetype: 'line',
-    yaxispos: 'left',
-    color: '#37BCF2',
-    sort: 1,
-    xRotate: 10,
-    dataIndex: 'wd0',
-  },
-  {
-    legend: '支路1',
-    seriesName: '(℃)',
-    ymax: 20,
-    yname: '℃',
-    linetype: 'line',
-    yaxispos: 'left',
-    color: '#FC4327',
-    sort: 1,
-    xRotate: 10,
-    dataIndex: 'wd1',
-  },
-  {
-    legend: '支路2',
-    seriesName: '(℃)',
-    ymax: 20,
-    yname: '℃',
-    linetype: 'line',
-    yaxispos: 'left',
-    color: '#91CC75',
-    sort: 1,
-    xRotate: 10,
-    dataIndex: 'wd2',
-  },
-];
-
-export const mockGasPipingWdData = [
-  {
-    time: '08:12:00',
-    wd0: '22.23',
-    wd1: '18.32',
-    wd2: '14.23',
-  },
-  {
-    time: '08:12:01',
-    wd0: '14.23',
-    wd1: '18.23',
-    wd2: '16.23',
-  },
-  {
-    time: '08:12:02',
-    wd0: '18.98',
-    wd1: '15.23',
-    wd2: '16.23',
-  },
-  {
-    time: '08:12:03',
-    wd0: '22.45',
-    wd1: '15.23',
-    wd2: '11.23',
-  },
-  {
-    time: '08:12:04',
-    wd0: '23.87',
-    wd1: '19.23',
-    wd2: '15.23',
-  },
-  {
-    time: '08:12:05',
-    wd0: '25.42',
-    wd1: '21.23',
-    wd2: '12.23',
-  },
-];
-// 管道流量
-export const gasPipingFlowOption = [
-  {
-    legend: '主管道',
-    seriesName: '(m³/min)',
-    ymax: 20,
-    yname: 'm³/min',
-    linetype: 'line',
-    yaxispos: 'left',
-    color: '#37BCF2',
-    sort: 1,
-    xRotate: 10,
-    dataIndex: 'flow0',
-  },
-  {
-    legend: '支路1',
-    seriesName: '(m³/min)',
-    ymax: 20,
-    yname: 'm³/min',
-    linetype: 'line',
-    yaxispos: 'left',
-    color: '#FC4327',
-    sort: 1,
-    xRotate: 10,
-    dataIndex: 'flow1',
-  },
-  {
-    legend: '支路2',
-    seriesName: '(m³/min)',
-    ymax: 20,
-    yname: 'm³/min',
-    linetype: 'line',
-    yaxispos: 'left',
-    color: '#91CC75',
-    sort: 1,
-    xRotate: 10,
-    dataIndex: 'flow2',
-  },
-];
-
-export const mockGasPipingFlowData = [
-  {
-    time: '08:12:00',
-    flow0: '22.23',
-    flow1: '18.32',
-    flow2: '14.23',
-  },
-  {
-    time: '08:12:01',
-    flow0: '14.23',
-    flow1: '18.23',
-    flow2: '16.23',
-  },
-  {
-    time: '08:12:02',
-    flow0: '18.98',
-    flow1: '15.23',
-    flow2: '16.23',
-  },
-  {
-    time: '08:12:03',
-    flow0: '22.45',
-    flow1: '15.23',
-    flow2: '11.23',
-  },
-  {
-    time: '08:12:04',
-    flow0: '23.87',
-    flow1: '19.23',
-    flow2: '15.23',
-  },
-  {
-    time: '08:12:05',
-    flow0: '25.42',
-    flow1: '21.23',
-    flow2: '12.23',
-  },
-];
-
-// 管道流量
-export const gasPipingCylOption = [
-  {
-    legend: '主管道',
-    seriesName: '(m³)',
-    ymax: 20,
-    yname: 'm³',
-    linetype: 'line',
-    yaxispos: 'left',
-    color: '#37BCF2',
-    sort: 1,
-    xRotate: 10,
-    dataIndex: 'flow0',
-  },
-  {
-    legend: '支路1',
-    seriesName: '(m³)',
-    ymax: 20,
-    yname: 'm³',
-    linetype: 'line',
-    yaxispos: 'left',
-    color: '#FC4327',
-    sort: 1,
-    xRotate: 10,
-    dataIndex: 'flow1',
-  },
-  {
-    legend: '支路2',
-    seriesName: '(m³)',
-    ymax: 20,
-    yname: 'm³',
-    linetype: 'line',
-    yaxispos: 'left',
-    color: '#91CC75',
-    sort: 1,
-    xRotate: 10,
-    dataIndex: 'flow2',
-  },
-];
-
-export const mockGasPipingCylData = [
-  {
-    time: '08:12:00',
-    flow0: '13452',
-    flow1: '3452',
-    flow2: '9032.23',
-  },
-  {
-    time: '08:12:01',
-    flow0: '17452',
-    flow1: '3452',
-    flow2: '9032.23',
-  },
-  {
-    time: '08:12:02',
-    flow0: '14452',
-    flow1: '3452',
-    flow2: '9032.23',
-  },
-  {
-    time: '08:12:03',
-    flow0: '16452',
-    flow1: '3452',
-    flow2: '9032.23',
-  },
-  {
-    time: '08:12:04',
-    flow0: '19452',
-    flow1: '3452',
-    flow2: '9032.23',
-  },
-  {
-    time: '08:12:05',
-    flow0: '20452',
-    flow1: '3452',
-    flow2: '9032.23',
-  },
-];
-
-// 管道负压
-
-export const gasPipingFyOption = [
-  {
-    legend: '主管道',
-    seriesName: '(kPa)',
-    ymax: 30,
-    yname: 'kPa',
-    linetype: 'line',
-    yaxispos: 'left',
-    color: '#37BCF2',
-    sort: 1,
-    xRotate: 10,
-    dataIndex: 'fy0',
-  },
-  {
-    legend: '支路1',
-    seriesName: '(kPa)',
-    ymax: 30,
-    yname: 'kPa',
-    linetype: 'line',
-    yaxispos: 'left',
-    color: '#FC4327',
-    sort: 1,
-    xRotate: 10,
-    dataIndex: 'fy1',
-  },
-  {
-    legend: '支路2',
-    seriesName: '(kPa)',
-    ymax: 30,
-    yname: 'kPa',
-    linetype: 'line',
-    yaxispos: 'left',
-    color: '#91CC75',
-    sort: 1,
-    xRotate: 10,
-    dataIndex: 'fy2',
-  },
-];
-
-export const mockGasPipingFyData = [
-  {
-    time: '08:12:00',
-    fy0: '22.23',
-    fy1: '18.32',
-    fy2: '14.23',
-  },
-  {
-    time: '08:12:01',
-    fy0: '14.23',
-    fy1: '18.23',
-    fy2: '16.23',
-  },
-  {
-    time: '08:12:02',
-    fy0: '18.98',
-    fy1: '15.23',
-    fy2: '16.23',
-  },
-  {
-    time: '08:12:03',
-    fy0: '22.45',
-    fy1: '15.23',
-    fy2: '11.23',
-  },
-  {
-    time: '08:12:04',
-    fy0: '23.87',
-    fy1: '19.23',
-    fy2: '15.23',
-  },
-  {
-    time: '08:12:05',
-    fy0: '25.42',
-    fy1: '21.23',
-    fy2: '12.23',
-  },
-];
-
-export const unitHeaderBadges = ref([
-  {
-    value: 'T1',
-    desc: '单元瓦斯总储量',
-    code: '',
-  },
-  {
-    value: 'T2',
-    desc: '单元抽采达标量',
-    code: '',
-  },
-  {
-    value: 'T3',
-    desc: '单元累计抽采纯量',
-    code: '',
-  },
-  {
-    value: 'T4',
-    desc: '单元预抽比率',
-    code: '',
-  },
-]);
-
-export const unitBaseInfo = [
-  {
-    title: '单元名称',
-    code: 'T0',
-    unit: '',
-  },
-  {
-    title: '煤炭储量',
-    code: 'T1',
-    unit: 'm³',
-  },
-  {
-    title: '瓦斯储量',
-    code: 'T2',
-    unit: 'm³',
-  },
-  {
-    title: '钻孔施工长度',
-    code: 'CO2',
-    unit: 'm',
-  },
-  {
-    title: '单元瓦斯含量',
-    code: 'gasC',
-    unit: 'm³',
-  },
-  {
-    title: '单元原始瓦斯压力',
-    code: 'gasMixMass',
-    unit: 'Pa',
-  },
-  {
-    title: '抽采钻孔管径',
-    code: 'gasMass',
-    unit: 'm',
-  },
-  {
-    title: '抽采单元汇总管径',
-    code: 'gasMass',
-    unit: 'm',
-  },
-];
-
-export const unitMonitor = [
-  {
-    title: '瓦斯总储量',
-    code: 'T0',
-    unit: 'm³',
-  },
-  {
-    title: '抽采达标量',
-    code: 'T1',
-    unit: 'm³',
-  },
-  {
-    title: '累计抽采纯量',
-    code: 'T2',
-    unit: 'm³',
-  },
-  {
-    title: '当前抽采率',
-    code: 'CO2',
-    unit: '%',
-  },
-  {
-    title: '试试抽采率',
-    code: 'gasC',
-    unit: '%',
-  },
-  {
-    title: '实时抽采浓度',
-    code: 'gasMixMass',
-    unit: 'ppm',
-  },
-  {
-    title: '实时抽采负压',
-    code: 'gasMass',
-    unit: 'Pa',
-  },
-  {
-    title: '参与瓦斯压力',
-    code: 'gasMass',
-    unit: 'Pa',
-  },
-];

+ 0 - 258
src/views/vent/gas/gasAssessment/index.vue

@@ -1,258 +0,0 @@
-<template>
-  <CustomHeader
-    :fieldNames="{ label: 'systemname', value: 'id', options: 'children' }"
-    :options="options"
-    @change="getSelectRow"
-    :optionValue="optionValue"
-    >瓦斯抽采达标评判</CustomHeader
-  >
-  <div class="bg" style="">
-    <div id="workFace3D" style="width: 100%; height: 100%; position: absolute; overflow: hidden; z-index: 1; top: 0; pointer-events: auto"> </div>
-    <div
-      id="workFace3DCSS"
-      v-show="pageType == 'workFace'"
-      class="threejs-Object-CSS"
-      style="width: 100%; height: 100%; position: absolute; pointer-events: none; overflow: hidden; z-index: 1; top: 0"
-    >
-    </div>
-  </div>
-  <template v-if="isRefreshUnit">
-    <div class="modal-monitor vent-flex-row" style="display: none">
-      <div v-for="groupNum in monitorDataGroupNum" :id="'gasUnitBox' + groupNum" :key="groupNum" style="margin: 0 5px">
-        <FourBorderBg class="four-border-bg">
-          <div class="title">抽采单元{{ groupNum }}</div>
-          <div class="monitor-item" v-for="(gasUnit, index) in gasUnitDetail" :key="index">
-            <div class="monitor-title">{{ gasUnit.title }}:</div>
-            <div class="monitor-val">
-              <span class="val">
-                {{
-                  gasUnitDataSource[groupNum - 1] && gasUnitDataSource[groupNum - 1][gasUnit.code]
-                    ? gasUnitDataSource[groupNum - 1][gasUnit.code]
-                    : '-'
-                }} </span
-              ><span>{{ gasUnit.unit }}</span>
-            </div>
-          </div>
-        </FourBorderBg>
-      </div>
-    </div>
-  </template>
-
-  <template v-if="activeKey == 'gasAssessment'">
-    <WorkFace class="point-event" v-if="pageType == 'workFace'" :data-source="dataSource" />
-    <gasUnit class="point-event" v-if="pageType == 'gasUnit'" />
-  </template>
-  <template v-if="activeKey == 'gasEcharts'">
-    <GasEcharts class="point-event" />
-  </template>
-  <template v-if="activeKey == 'gasControl'">
-    <GasControl class="point-event" />
-  </template>
-  <template v-if="activeKey == 'gasPiping'">
-    <GasPiping class="point-event" />
-  </template>
-  <template v-if="activeKey == 'gasVideo'">
-    <GasVideo class="point-event" />
-  </template>
-  <BottomMenu :navList="monitorNav" @change="changeActive" />
-</template>
-
-<script setup lang="ts">
-  import FourBorderBg from '/@/components/vent/fourBorderBg.vue';
-  import { onBeforeMount, ref, onMounted, onUnmounted, nextTick, watch } from 'vue';
-  import CustomHeader from '/@/components/vent/customHeader.vue';
-  import { gasUnitDetail, monitorNav } from './gasAssessment.data';
-  import { mountedThree, destroy, setModelType, setCss3D, setPlanes, clearCss3D } from './threejs/gasAssessmen.threejs';
-  import { useSystemSelect } from '/@/hooks/vent/useSystemSelect';
-  import gasUnit from './components/gasUnit.vue';
-  import GasEcharts from './components/gasEcharts.vue';
-  import GasControl from './components/gasControl.vue';
-  import GasPiping from './components/gasPipingEcharts.vue';
-  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');
-  const loading = ref(false);
-  const dataSource = ref<DeviceType[]>([]);
-  const pageType = ref('workFace');
-  const activeUnitId = ref('');
-  const gasUnitDataSource = ref([]);
-  const isRefreshUnit = ref(false);
-  function changeActive(activeValue) {
-    activeKey.value = activeValue;
-  }
-
-  // 获取模型类型
-  const changeModalType = (currentData) => {
-    // 根据抽采单元
-    isRefreshUnit.value = false;
-    clearCss3D();
-    clearTimeout(timer);
-    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 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);
-  // // https获取监测数据
-  let timer: null | NodeJS.Timeout = null;
-  function getMonitor(flag?) {
-    if (Object.prototype.toString.call(timer) === '[object Null]') {
-      return new Promise((resolve) => {
-        timer = setTimeout(
-          async () => {
-            dataSource.value = await getDeviceList();
-            const gasUnitData = dataSource.value.find((item) => item.deviceType.startsWith('unit'));
-            if (gasUnitData) {
-              gasUnitDataSource.value = gasUnitData['datalist'];
-              monitorDataGroupNum.value = gasUnitData['datalist'].length;
-            }
-
-            if (timer) {
-              timer = null;
-            }
-            resolve(1);
-            await getMonitor();
-            loading.value = false;
-          },
-          flag ? 0 : 1000
-        );
-      });
-    }
-  }
-
-  watch(
-    pageType,
-    (newVal, oldVal) => {
-      console.log('页面类型', newVal);
-      if (newVal == 'gasUnit') {
-      } else if (newVal == 'workFace') {
-      }
-    },
-    {}
-  );
-
-  onBeforeMount(() => {});
-
-  onMounted(async () => {
-    loading.value = true;
-
-    timer = null;
-
-    mountedThree(pageType, activeUnitId).then(async () => {
-      gasUnitNum.value = 4;
-      loading.value = false;
-      await getSysDataSource();
-      nextTick(async () => {
-        await getMonitor(true);
-      });
-    });
-  });
-  onUnmounted(() => {
-    if (timer) {
-      clearTimeout(timer);
-    }
-    timer = undefined;
-    destroy();
-  });
-</script>
-
-<style lang="less">
-  @import '/@/design/vent/modal.less';
-
-  .@{ventSpace}-select-dropdown {
-    background: #ffffff !important;
-    border-bottom: 1px solid rgba(236, 236, 236, 0.4);
-    backdrop-filter: blur(10px);
-
-    .@{ventSpace}-select-item-option-selected,
-    .@{ventSpace}-select-item-option-active {
-      background-color: #ffffff33 !important;
-    }
-
-    .@{ventSpace}-select-item:hover {
-      background-color: #ffffff33 !important;
-    }
-  }
-</style>
-
-<style lang="less" scoped>
-  @ventSpace: zxm;
-  @import '/@/design/vent/modal.less';
-  @import '@/views/vent/monitorManager/comment/less/workFace.less';
-  .bg {
-    width: 100%;
-    height: 100%;
-    display: flex;
-    justify-content: center;
-    align-items: center;
-    overflow: hidden;
-    position: absolute;
-    pointer-events: auto;
-    z-index: 0;
-  }
-  .point-event {
-    pointer-events: none !important;
-  }
-  :deep(.four-border-bg) {
-    backdrop-filter: blur(10px);
-    .title {
-      text-align: center;
-      color: var(--vent-modal-title);
-    }
-    .monitor-item {
-      display: flex;
-      justify-content: space-between;
-      .monitor-title {
-        width: 90px;
-      }
-      .monitor-val {
-        color: var(--vent-modal-title);
-        .val {
-          padding-right: 3px;
-        }
-      }
-    }
-  }
-</style>

+ 0 - 314
src/views/vent/gas/gasAssessment/threejs/gasAssessmen.threejs.base.ts

@@ -1,314 +0,0 @@
-import * as THREE from 'three';
-import { EffectComposer } from 'three/examples/jsm/postprocessing/EffectComposer.js';
-import { OutlinePass } from 'three/examples/jsm/postprocessing/OutlinePass.js';
-import { setModalCenter, setTag3D, gradientColors } from '/@/utils/threejs/util';
-import { CSS3DObject } from 'three/examples/jsm/renderers/CSS3DRenderer.js';
-import { green, yellow } from '@ant-design/colors';
-
-// import * as dat from 'dat.gui';
-// const gui = new dat.GUI();
-// gui.domElement.style = 'position:absolute;top:100px;left:10px;z-index:99999999999999';
-type Unit = {
-  id: string;
-  ratio: number;
-  color: THREE.Color;
-};
-
-class GasAssessmen {
-  model;
-  modelName = 'workFace';
-  group: THREE.Object3D = new THREE.Object3D();
-  planeGroup: THREE.Group = new THREE.Group();
-  bloomComposer: EffectComposer | null = null;
-  finalComposer: EffectComposer | null = null;
-  outlinePass: OutlinePass | null = null;
-  positions: THREE.Vector3[][] = [];
-  bloomLayer = new THREE.Layers();
-  darkMaterial = new THREE.MeshBasicMaterial({ color: 'black', transparent: true, side: THREE.DoubleSide });
-  materials = {};
-  glob = {
-    ENTIRE_SCENE: 0,
-    BLOOM_SCENE: 10,
-    N: 100,
-  };
-  locationTexture: THREE.Texture | null = null;
-  warningLocationTexture: THREE.Texture | null = null;
-  errorLocationTexture: THREE.Texture | null = null;
-  playerStartClickTime1 = new Date().getTime();
-  playerStartClickTime2 = new Date().getTime();
-  planeNum = 0;
-  unitList: Unit[] = [];
-
-  constructor(model) {
-    this.model = model;
-    this.group.name = this.modelName;
-  }
-  addLight() {
-    // const _this = this;
-    const directionalLight = new THREE.DirectionalLight(0xffffff, 1);
-    directionalLight.position.set(-196, 150, 258);
-    this.group.add(directionalLight);
-    directionalLight.target = this.group;
-  }
-
-  render() {
-    this.model.renderer?.render(this.model.scene as THREE.Scene, this.model.camera as THREE.PerspectiveCamera);
-  }
-
-  setPlanes = (unitList: any[]) => {
-    if (!unitList || unitList.length === 0) return;
-    // 要根据unitList来计算比例
-    type Point = { u: number; v: number };
-    let max = 0;
-    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];
-      const unitRatio: Point[] = [];
-      const color = new THREE.Color(item['unitColor']);
-      if (item['unitLen']) {
-        const unitLen = item['unitLen'].split(',');
-        const sortList = [1, 0, 2, 3];
-        for (let j = 0; j < sortList.length; j++) {
-          const x = unitLen[sortList[j]];
-          const unitU = Number((x / max).toFixed(2));
-          const unitV = sortList[j] % 2 === 0 ? 0.0 : 1.0;
-          unitRatio.push({
-            u: unitU == 0 ? 0.0 : unitU,
-            v: unitV == 0 ? 0.0 : unitV,
-          });
-        }
-      }
-      regions.push({
-        points: unitRatio,
-        color: [color.r, color.g, color.b],
-        // color: [1, 0, 0],
-      });
-    }
-
-    // 自定义着色器
-    const vertexShader = `
-    varying vec2 vUv;
-    void main() {
-        vUv = uv; // 传递纹理坐标
-        gl_Position = projectionMatrix * modelViewMatrix * vec4(position, 1.0);
-    }
-`;
-
-    const fragmentShader = `
-    uniform vec3 regionColors[${regions.length}]; // 区域颜色数组
-    uniform vec4 regionPoints[${regions.length * 4}]; // 区域顶点数组 (每个区域4个点)
-    varying vec2 vUv;
-
-    // 判断点是否在四边形内(通过叉积法)
-    bool isPointInQuad(vec2 p, vec2 a, vec2 b, vec2 c, vec2 d) {
-        vec2 ab = b - a;
-        vec2 bc = c - b;
-        vec2 cd = d - c;
-        vec2 da = a - d;
-
-        vec2 ap = p - a;
-        vec2 bp = p - b;
-        vec2 cp = p - c;
-        vec2 dp = p - d;
-
-        float cross1 = ab.x * ap.y - ab.y * ap.x;
-        float cross2 = bc.x * bp.y - bc.y * bp.x;
-        float cross3 = cd.x * cp.y - cd.y * cp.x;
-        float cross4 = da.x * dp.y - da.y * dp.x;
-
-        return (cross1 >= 0.0 && cross2 >= 0.0 && cross3 >= 0.0 && cross4 >= 0.0) ||
-               (cross1 <= 0.0 && cross2 <= 0.0 && cross3 <= 0.0 && cross4 <= 0.0);
-    }
-
-    void main() {
-        vec3 finalColor = vec3(0.0);
-        for (int i = 0; i < ${regions.length}; i++) {
-            vec4 p1 = regionPoints[i * 4];
-            vec4 p2 = regionPoints[i * 4 + 1];
-            vec4 p3 = regionPoints[i * 4 + 2];
-            vec4 p4 = regionPoints[i * 4 + 3];
-
-            // 判断当前片段是否在梯形区域内
-            if (isPointInQuad(vUv, p1.xy, p2.xy, p3.xy, p4.xy)) {
-                finalColor = regionColors[i];
-                break;
-            }
-        }
-        gl_FragColor = vec4(finalColor, 1.0);
-    }
-`;
-
-    const geometry = new THREE.PlaneGeometry(7.723, 3.72, 1, 1);
-    // 创建材质
-    const material = new THREE.ShaderMaterial({
-      vertexShader,
-      fragmentShader,
-      uniforms: {
-        regionColors: { value: regions.map((region) => new THREE.Vector3(...region.color)) },
-        regionPoints: {
-          value: regions.flatMap((region) => region.points.map((p) => new THREE.Vector4(p.u, p.v, 0, 0))),
-        },
-      },
-      depthTest: false,
-      depthWrite: false,
-    });
-
-    // 创建网格并添加到场景中
-    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);
-  };
-
-  // 清除抽采单元绘制面
-  clearPlanes = () => {
-    for (let i = 0; i < this.planeNum; i++) {
-      const plane = this.planeGroup.getObjectByName(`unit${i}`);
-      const label = this.planeGroup.getObjectByName(`planeText${i}`);
-      if (plane) this.planeGroup.remove(plane);
-      if (label) this.planeGroup.remove(label);
-    }
-  };
-  // 抽采单元内容显示
-  setCss3D = (unitList: any[]) => {
-    const sizeList: number[] = [];
-    if (!unitList || unitList.length === 0) return;
-    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);
-      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(unitPos * 7.913 - 4.22, 0.015, 0.142);
-      label.name = 'planeText' + i;
-      this.planeGroup.add(label);
-
-      const obj = this.group.getObjectByName(`unitText${i}`);
-      if (!obj) {
-        const element = document.getElementById(`gasUnitBox${i + 1}`) as HTMLElement;
-        if (element) {
-          const gasUnitCSS3D = new CSS3DObject(element);
-          gasUnitCSS3D.name = `unitText${i}`;
-          gasUnitCSS3D.scale.set(0.01, 0.01, 0.01);
-          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);
-        }
-      }
-    }
-  };
-  // 显示或隐藏抽采单元显示内容
-  changeCss3D = () => {
-    for (let i = 0; i < this.planeNum; i++) {
-      const planeText = this.planeGroup.getObjectByName(`planeText${i}`);
-      this.planeGroup.remove(planeText);
-      const unitText = this.planeGroup.getObjectByName(`unitText${i}`);
-      this.planeGroup.remove(unitText);
-    }
-  };
-  // 清除抽采单元显示内容
-  clearCss3D = () => {
-    // const obj = this.group.getObjectByName(`unitText`);
-    // if (obj) this.group.remove(obj);
-    // const element = document.getElementById(`gasUnitBox`) as HTMLElement;
-    // if (element) {
-    //   element.remove();
-    // }
-    // for (let i = 0; i < this.planeNum; i++) {
-    //   const label = this.planeGroup.getObjectByName(`planeText${i}`);
-    //   if (label) this.planeGroup.remove(label);
-    // }
-    this.model.clearGroup(this.planeGroup);
-    this.planeGroup = new THREE.Group();
-  };
-
-  /* 点击 */
-  mousedownModel(intersects: THREE.Intersection<THREE.Object3D<THREE.Event>>[]) {
-    // 判断是否点击到视频
-    return new Promise((resolve) => {
-      intersects.find((intersect) => {
-        const intersectedObject = intersect.object;
-        if (intersectedObject.name == 'unit') {
-          // 如果对象是我们的平面,并且它有自定义属性来标识它的 UV 范围
-          if (intersectedObject && intersectedObject.material && intersectedObject.material.uniforms) {
-            const uv = intersect.uv; // 点击点的 UV 坐标
-            const clickedRatio = uv.x; // 使用 UV 的 x 分量作为比例值
-
-            // 根据点击的比例找到对应的色块
-            let clickedColorIndex = -1;
-            let accRatio = 0;
-            for (let i = 0; i < this.unitList.length - 1; i++) {
-              const unitData = this.unitList[i];
-              accRatio += unitData.ratio;
-              if (clickedRatio < accRatio) {
-                clickedColorIndex = i;
-                break;
-              }
-            }
-
-            if (clickedColorIndex !== -1) {
-              const unitData = this.unitList[clickedColorIndex];
-              const unitId = unitData.id;
-              // window.open(`${location.origin}/gasUnitAssessment/home?id=${unitId}`);
-              resolve(unitId);
-            }
-          }
-          return true;
-        }
-        return false;
-      });
-      this.render();
-    });
-  }
-
-  mouseUpModel() {
-    //
-  }
-
-  mountedThree() {
-    return new Promise(async (resolve) => {
-      this.model.renderer.sortObjects = true;
-      this.model.orbitControls.update();
-      this.model.setGLTFModel(['workFace1'], this.group).then(async () => {
-        this.group.children.forEach((object: THREE.Object3D) => {
-          if (object.name.startsWith('workFace')) {
-            setModalCenter(object);
-          }
-        });
-        this.group.name = this.modelName;
-        this.addLight();
-        resolve(null);
-      });
-    });
-  }
-
-  destroy() {
-    this.model.clearGroup(this.group);
-    this.model = null;
-    this.group = null;
-    this.bloomComposer?.dispose();
-    this.finalComposer?.dispose();
-  }
-}
-
-export default GasAssessmen;

+ 0 - 191
src/views/vent/gas/gasAssessment/threejs/gasAssessmen.threejs.ts

@@ -1,191 +0,0 @@
-import * as THREE from 'three';
-import UseThree from '@/utils/threejs/useThree';
-import GasAssessmen from './gasAssessmen.threejs.base';
-import GasUnit from './gasUnit.threejs.base';
-import { animateCamera, setModalCenter } from '/@/utils/threejs/util';
-import useEvent from '@/utils/threejs/useEvent';
-import gsap from 'gsap';
-import { Ref } from 'vue';
-
-// 模型对象、 文字对象
-let model, workFaceObj: GasAssessmen | undefined, gasUnit: GasUnit | undefined, group;
-let modalType: Ref<string>;
-let activeId: Ref<string>;
-const { mouseDownFn } = useEvent();
-
-// 鼠标点击、松开事件
-const mouseEvent = (event) => {
-  if (event.button == 0 && group) {
-    if (modalType?.value == 'workFace') {
-      mouseDownFn(<UseThree>model, <THREE.Object3D>workFaceObj?.planeGroup, event, (intersects) => {
-        workFaceObj?.mousedownModel(intersects).then(async (unitId: string) => {
-          if (activeId) activeId.value = unitId;
-          await setModelType('toUnit');
-        });
-      });
-    } else if (modalType?.value == 'gasUnit') {
-      mouseDownFn(<UseThree>model, <THREE.Object3D>gasUnit?.group, event, (intersects) => {
-        gasUnit?.mousedownModel(intersects).then(async () => {
-          await setModelType('toWorkFace');
-        });
-      });
-    }
-  }
-};
-
-const mouseUp = () => {
-  if (!model) return;
-  workFaceObj?.mouseUpModel.call(workFaceObj);
-};
-
-const addMouseEvent = () => {
-  // 定义鼠标点击事件
-  model.canvasContainer?.addEventListener('mousedown', mouseEvent.bind(null));
-  model.canvasContainer?.addEventListener('pointerup', mouseUp);
-};
-
-const render = () => {
-  if (model && model.isRender) {
-    model.animationId = requestAnimationFrame(render);
-    model.css3dRender?.render(model.scene as THREE.Scene, model.camera as THREE.PerspectiveCamera);
-    model.stats?.update();
-    model.orbitControls?.update();
-    model.camera?.updateMatrixWorld();
-    workFaceObj?.render();
-  }
-};
-
-export const setCss3D = (unitList: any[]) => {
-  workFaceObj?.setCss3D(unitList);
-};
-export const clearCss3D = () => {
-  workFaceObj?.clearCss3D();
-};
-export const setPlanes = (unitList) => {
-  workFaceObj?.setPlanes(unitList);
-};
-// 切换风窗类型
-export const setModelType = (type) => {
-  debugger;
-
-  return new Promise((resolve) => {
-    const newCameraPosition = { x: -0.1077663653208413, y: 3.730662630250735, z: 5.174545297338427 };
-    const newControlsPosition = { x: -0.0997084705839992, y: -0.050186843433472336, z: -0.3263852289773498 };
-
-    if (type == 'toUnit' && workFaceObj && gasUnit) {
-      if (modalType) modalType.value = 'gasUnit';
-      gsap.to(workFaceObj.group.scale, {
-        x: 30,
-        y: 30,
-        z: 30,
-        duration: 1,
-        ease: 'easeInCirc',
-        onComplete: function () {
-          gasUnit.group.scale.set(20, 20, 20);
-          workFaceObj.group.visible = false;
-          setModalCenter(gasUnit.group);
-          gasUnit.group.visible = true;
-          const newCameraPosition1 = { x: 0.07728832423767938, y: 2.000608719643587, z: 3.920565793165089 };
-          const newControlsPosition1 = { x: 0.08291552616960282, y: -0.6396998462924676, z: 0.07906121096410117 };
-          animateCamera(newCameraPosition, newControlsPosition, newCameraPosition1, newControlsPosition1, model, 0.8);
-          gsap.to(gasUnit.group.scale, {
-            x: 1,
-            y: 1,
-            z: 1,
-            duration: 2,
-            ease: 'easeOutCubic',
-            onComplete: function () {},
-          });
-        },
-      });
-    } else if (type == 'toWorkFace') {
-      // 由抽采单元切换到工作面
-      gsap.to(gasUnit.group.scale, {
-        x: 20,
-        y: 20,
-        z: 20,
-        duration: 1,
-        ease: 'easeInCirc',
-        onComplete: function () {
-          workFaceObj.group.scale.set(20, 20, 20);
-          gasUnit.group.visible = false;
-          setModalCenter(workFaceObj.group);
-          workFaceObj.group.visible = true;
-          const newCameraPosition1 = { x: 0.07728832423767938, y: 2.000608719643587, z: 3.920565793165089 };
-          const newControlsPosition1 = { x: 0.08291552616960282, y: -0.6396998462924676, z: 0.07906121096410117 };
-          animateCamera(newCameraPosition1, newControlsPosition1, newCameraPosition, newControlsPosition, model, 0.8);
-          gsap.to(workFaceObj.group.scale, {
-            x: 1,
-            y: 1,
-            z: 1,
-            duration: 1,
-            ease: 'easeOutCubic',
-            onComplete: function () {
-              if (modalType) modalType.value = 'workFace';
-            },
-          });
-        },
-      });
-    } else {
-      // 初始加载
-      group = workFaceObj.group;
-      showOrHideGasPlane(true);
-      const oldControlsPosition = { x: -0.086221, y: -0.612538, z: 0.33468 };
-      const oldCameraPosition = { x: 19.589025920044726, y: 7.437905524957071, z: 23.032636074396976 };
-
-      if (model.scene.getObjectByName('workFace')) {
-        model.camera.position.set(oldCameraPosition.x, oldCameraPosition.y, oldCameraPosition.z + 20);
-        model.orbitControls.target.set(oldControlsPosition.x, oldControlsPosition.y, oldControlsPosition.z);
-      }
-      setTimeout(async () => {
-        resolve(null);
-        if (!model.scene.getObjectByName('workFace')) {
-          model.scene.add(group);
-          model.scene.add(gasUnit.group);
-        }
-        await animateCamera(oldCameraPosition, oldControlsPosition, newCameraPosition, newControlsPosition, model, 0.8);
-      }, 600);
-    }
-  });
-};
-
-export const showOrHideGasPlane = (isShowPlane) => {
-  if (workFaceObj) {
-    if (isShowPlane) {
-      workFaceObj.planeGroup.visible = true;
-    } else {
-      workFaceObj.planeGroup.visible = false;
-    }
-  }
-};
-
-export const mountedThree = (pageType: Ref<string>, activeUnitId: Ref<string>) => {
-  modalType = pageType;
-  activeId = activeUnitId;
-  return new Promise(async (resolve) => {
-    model = new UseThree('#workFace3D', '#workFace3DCSS');
-    model.setEnvMap('test1.hdr');
-    model.renderer.toneMappingExposure = 1.0;
-    // model.renderer = 1;
-    workFaceObj = new GasAssessmen(model);
-    await workFaceObj.mountedThree();
-
-    gasUnit = new GasUnit(model);
-    await gasUnit.mountedThree();
-
-    addMouseEvent();
-    render();
-    resolve(null);
-  });
-};
-
-export const destroy = () => {
-  if (model) {
-    model.isRender = false;
-    workFaceObj?.destroy();
-    workFaceObj = undefined;
-    model.destroy();
-    model = null;
-    group = null;
-  }
-};

+ 0 - 105
src/views/vent/gas/gasAssessment/threejs/gasUnit.threejs.base.ts

@@ -1,105 +0,0 @@
-import * as THREE from 'three';
-import { EffectComposer } from 'three/examples/jsm/postprocessing/EffectComposer.js';
-import { OutlinePass } from 'three/examples/jsm/postprocessing/OutlinePass.js';
-import { setModalCenter, setTag3D, gradientColors } from '/@/utils/threejs/util';
-import { CSS3DObject } from 'three/examples/jsm/renderers/CSS3DRenderer.js';
-
-// import * as dat from 'dat.gui';
-// const gui = new dat.GUI();
-// gui.domElement.style = 'position:absolute;top:100px;left:10px;z-index:99999999999999';
-type Unit = {
-  id: string;
-  ratio: number;
-  color: THREE.Color;
-};
-
-class GasUnit {
-  model;
-  modelName = 'gasUnit';
-  group: THREE.Object3D = new THREE.Object3D();
-  planeGroup: THREE.Group = new THREE.Group();
-
-  constructor(model) {
-    this.model = model;
-    this.group.name = this.modelName;
-  }
-  addLight() {
-    // const _this = this;
-    const directionalLight = new THREE.DirectionalLight(0xffffff, 1);
-    directionalLight.position.set(-196, 150, 258);
-    this.group.add(directionalLight);
-    directionalLight.target = this.group;
-  }
-  /* 点击 */
-  mousedownModel(intersects: THREE.Intersection<THREE.Object3D<THREE.Event>>[]) {
-    // 判断是否点击到视频
-    return new Promise((resolve) => {
-      intersects.find((intersect) => {
-        const intersectedObject = intersect.object;
-        if (intersectedObject.name == 'wangge1') {
-          // 如果对象是我们的平面,并且它有自定义属性来标识它的 UV 范围
-          resolve(null);
-          return true;
-        }
-        return false;
-      });
-      this.render();
-    });
-  }
-  render() {
-    this.model.renderer?.render(this.model.scene as THREE.Scene, this.model.camera as THREE.PerspectiveCamera);
-  }
-  // 绘制抽采单元
-  setPlanes = () => {
-    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 planeGeo = new THREE.PlaneGeometry();
-    planeGeo.applyMatrix4(new THREE.Matrix4().makeTranslation(-1, 0, 0));
-    const material = new THREE.MeshBasicMaterial({ color: colors[0], transparent: true, opacity: 0.6, depthTest: false, depthWrite: false });
-    const plane = new THREE.Mesh(planeGeo, material);
-    plane.name = 'unit';
-    plane.rotation.x = -Math.PI / 2;
-    plane.scale.set(1, 0.375, 1.0);
-    plane.position.set(0, 0.015, 0.142);
-    this.planeGroup.add(plane);
-    this.group.add(this.planeGroup);
-  };
-
-  mouseUpModel() {
-    //
-  }
-
-  mountedThree() {
-    return new Promise(async (resolve) => {
-      this.model.renderer.sortObjects = true;
-      this.model.orbitControls.update();
-      this.model.setGLTFModel(['gasUnit'], this.group).then(async () => {
-        this.group.children.forEach((object: THREE.Object3D) => {
-          if (object.name.startsWith('gasUnit')) {
-            setModalCenter(object);
-          }
-        });
-        this.group.name = this.modelName;
-        this.group.visible = false;
-        this.addLight();
-        // this.group.scale.set(0.1, 0.1, 0.1);
-        // this.model.setGLTFModel(['workFace1'], this.group).then(async () => {});
-
-        resolve(null);
-      });
-    });
-  }
-
-  destroy() {
-    this.model.clearGroup(this.group);
-    this.model = null;
-    this.group = null;
-  }
-}
-
-export default GasUnit;

+ 0 - 89
src/views/vent/gas/gasHome/components/customHeader.vue

@@ -1,89 +0,0 @@
-<template>
-  <div class="custom-header flex justify-around">
-    <div
-      v-for="(item, i) in items"
-      :key="`gashome-comp-custom-header-${i}`"
-      class="custom-header__badge"
-      :style="{ backgroundImage: `url(${item.bgSrc})` }"
-    >
-      <div class="custom-header__badge_title"> {{ badges[i].title }}</div>
-      <div class="custom-header__badge_desc"> {{ badges[i].desc }}</div>
-    </div>
-  </div>
-</template>
-
-<script setup lang="ts">
-  import Badge01Src from '@/assets/images/vent/home/badge01.png';
-  import Badge02Src from '@/assets/images/vent/home/badge02.png';
-  import Badge03Src from '@/assets/images/vent/home/badge03.png';
-  // import Badge04Src from '@/assets/images/vent/home/badge04.png';
-  import Badge04Src from '@/assets/images/vent/home/badge05.png';
-  import Badge05Src from '@/assets/images/vent/home/badge06.png';
-
-  // @TODO 对组件的颜色、背景等样式进行修改,符合全局规范
-
-  defineProps<{
-    /** 描述 Header 中各个徽章的数组,要求6条 */
-    badges: { desc: string; title: string }[];
-  }>();
-
-  const items = [
-    {
-      bgSrc: Badge05Src,
-      color: '#d9e6ec',
-    },
-    {
-      bgSrc: Badge02Src,
-      color: '#aacacd',
-    },
-    {
-      bgSrc: Badge03Src,
-      color: '#9ea890',
-    },
-    {
-      bgSrc: Badge04Src,
-      color: '#d7deea',
-    },
-    {
-      bgSrc: Badge01Src,
-      color: '#dbe0d7',
-    },
-    // {
-    //   bgSrc: Badge04Src,
-    //   color: '#d8d5e4',
-    // },
-  ];
-</script>
-
-<style lang="less" scoped>
-  @light-blue: aqua;
-
-  .custom-header {
-    background-image: url('@/assets/images/vent/home/badge-bg.png');
-    background-repeat: no-repeat;
-    background-position: center center;
-    background-size: 100% auto;
-    height: 140px;
-    padding: 35px 0;
-    color: @white;
-    position: relative;
-    z-index: initial;
-  }
-
-  .custom-header__badge {
-    background-repeat: no-repeat;
-    background-position: center center;
-    background-size: 100% auto;
-    width: 235px;
-    height: 70px;
-    padding-left: 80px;
-  }
-
-  .custom-header__badge_title {
-    font-size: 20px;
-    margin-left: 10px;
-  }
-  .custom-header__badge_desc {
-    font-size: 14px;
-  }
-</style>

+ 0 - 86
src/views/vent/gas/gasHome/components/gasMonitor.vue

@@ -1,86 +0,0 @@
-<template>
-  <div class="monitor-container" style="margin-top: 20px">
-    <transition enter-active-class="animate__animated animate__fadeInLeft" leave-active-class="animate__animated animate__fadeOutLeft">
-      <div class="lr left-box" style="margin-top: 0" v-if="loading">
-        <ventBox1>
-          <template #title>
-            <div>矿井概况</div>
-          </template>
-          <template #container>
-            <ListItem
-              v-for="(item, index) in sysInfo"
-              :key="index"
-              class="w-100% mb-5px"
-              label-width="180px"
-              :value="get(dataSource, item.code)"
-              :label="item.title"
-            />
-          </template>
-        </ventBox1>
-        <ventBox1 class="vent-margin-t-10">
-          <template #title>
-            <div>瓦斯抽采泵站概况</div>
-          </template>
-          <template #container>
-            <ListItem v-for="(item, index) in gasPump" :key="index" class="w-100% mb-5px" :value="get(dataSource, item.code)" :label="item.title" />
-          </template>
-        </ventBox1>
-      </div>
-    </transition>
-    <transition enter-active-class="animate__animated animate__fadeInRight" leave-active-class="animate__animated  animate__fadeOutRight">
-      <div class="lr right-box" style="margin-top: 0" v-if="loading">
-        <div class="item-box sensor-container">
-          <ventBox1>
-            <template #title>
-              <div>井下抽采区域</div>
-            </template>
-            <template #container>
-              <ListItem
-                v-for="(item, index) in caikongqu"
-                :key="index"
-                class="w-100% mb-5px"
-                :value="get(dataSource, item.code)"
-                :label="item.title"
-                label-width="180px"
-              />
-            </template>
-          </ventBox1>
-        </div>
-      </div>
-    </transition>
-  </div>
-</template>
-
-<script setup lang="ts" name="gas-pump-monitor">
-  import { onMounted, defineProps, computed, ref } from 'vue';
-  import ventBox1 from '/@/components/vent/ventBox1.vue';
-  import ListItem from '@/views/vent/gas/components/list/listItem.vue';
-  import { sysInfo, gasPump, caikongqu } from '../gasHome.data';
-  import { get } from '@/utils/ventutil';
-
-  const props = defineProps({
-    dataSource: {
-      type: Object,
-      default: () => {},
-      require: true,
-    },
-  });
-  const loading = ref(false);
-  const dataSource = computed(() => props.dataSource);
-  // 抽放泵相关
-  // const activedPump = ref<any>({});
-
-  // function fetchPump() {
-  //   const fakePP = { name: 't4', id: 4 };
-  //   activedPump.value = fakePP;
-  // }
-
-  onMounted(async () => {
-    loading.value = true;
-  });
-</script>
-
-<style lang="less" scoped>
-  @import '@/views/vent/monitorManager/comment/less/workFace.less';
-  @ventSpace: zxm;
-</style>

+ 0 - 14
src/views/vent/gas/gasHome/gasHome.api.ts

@@ -1,14 +0,0 @@
-import { defHttp } from '/@/utils/http/axios';
-
-enum Api {
-  list = '/monitor/system',
-  gasSystem = '/monitor/gasSystem',
-}
-/**
- * 列表接口
- * @param params
- */
-export const list = (params) => defHttp.post({ url: Api.list, params });
-
-/** 获取瓦斯系统数据 */
-export const gasSystem = (params?) => defHttp.post({ url: Api.gasSystem, params });

+ 0 - 101
src/views/vent/gas/gasHome/gasHome.data.ts

@@ -1,101 +0,0 @@
-import { ref } from 'vue';
-export const navList = ref([
-  {
-    title: '抽采泵站管控',
-    pathName: 'gasPump',
-    isHover: false,
-  },
-  {
-    title: '抽采达标评判',
-    pathName: 'gasStandard',
-    isHover: false,
-  },
-  {
-    title: '管网监控',
-    pathName: 'gasPiping',
-    isHover: false,
-  },
-  {
-    title: '瓦斯监测预警',
-    pathName: 'gasAlarm',
-    isHover: false,
-  },
-  {
-    title: '钻孔设计',
-    pathName: 'drillDesign',
-    isHover: false,
-  },
-]);
-
-export const sysInfo = [
-  {
-    title: '矿井名称',
-    code: 'sysInfo.strinstallpos',
-  },
-  {
-    title: '矿井产量',
-    code: 'sysInfo.coalProduction',
-  },
-  {
-    title: '矿井瓦斯等级',
-    code: 'sysInfo.gasLevel',
-  },
-  {
-    title: '煤炭储量',
-    code: 'sysInfo.coalReserves',
-  },
-  {
-    title: '主采煤层',
-    code: 'sysInfo.mainCoalseam',
-  },
-  {
-    title: '平均煤厚',
-    code: 'sysInfo.coalThickness',
-  },
-];
-
-export const gasPump = [
-  {
-    title: '地面泵站数量',
-    code: 'pump_over.num',
-  },
-  {
-    title: '移动泵站数量',
-    code: 'pump_under.num',
-  },
-  {
-    title: '抽放泵型号',
-    code: 'pump_under.runNum',
-  },
-  {
-    title: '抽采管路',
-    code: 'pump_under.runNum',
-  },
-  {
-    title: '抽放泵运行数量',
-    code: 'pump_under.runNum',
-  },
-];
-
-export const caikongqu = [
-  {
-    title: '回采工作面数量',
-    code: 'caimei.num',
-  },
-  {
-    title: '掘进工作面数量',
-    code: 'juejin.num',
-  },
-  {
-    title: '采空区数量',
-    code: 'caikongqu.num',
-  },
-  {
-    title: '抽采达标数量',
-    code: 'sysInfo.totalComplteQuantity',
-  },
-  {
-    title: '平均抽采率',
-    code: 'sysInfo.totalAverageRate',
-  },
-];

+ 0 - 113
src/views/vent/gas/gasHome/index.vue

@@ -1,113 +0,0 @@
-<!-- eslint-disable vue/multi-word-component-names -->
-<template>
-  <div class="scene-box" style="position: relative">
-    <CustomHeader> 瓦斯抽采综合管控系统 </CustomHeader>
-    <template v-if="activeKey == 'gasHome'">
-      <VentModal />
-      <CustomBadges class="w-1710px ml-100px mt-50px" :badges="headerBadges" />
-      <GasMonitor v-if="dataSource" :dataSource="dataSource" />
-    </template>
-    <BottomMenu :navList="navList" @change="changeActive" type="router" />
-  </div>
-</template>
-<script lang="ts" setup>
-  import { ref, onBeforeMount, onBeforeUnmount, onMounted, computed } from 'vue';
-  import CustomHeader from '/@/components/vent/customHeader.vue';
-  import CustomBadges from './components/customHeader.vue';
-  import GasMonitor from './components/gasMonitor.vue';
-  import VentModal from '/@/components/vent/micro/ventModal.vue';
-  import { gasSystem } from './gasHome.api';
-  import { unmountMicroApps } from '/@/qiankun';
-  import BottomMenu from '/@/views/vent/comment/components/bottomMenu.vue';
-  import { navList } from './gasHome.data';
-  import { useRouter } from 'vue-router';
-  import { get } from '@/utils/ventutil';
-
-  const router = useRouter();
-  const activeKey = ref('gasHome');
-  const dataSource = ref<any | null>(null);
-  function changeActive(activeValue) {
-    if (activeValue == 'gasPump') {
-      const newPage = router.resolve({ path: '/gas/gas-pump-monitor/home' });
-      window.open(newPage.href, '_blank');
-    }
-    if (activeValue == 'gasStandard') {
-      const newPage = router.resolve({ path: '/gasAssessment/home' });
-      window.open(newPage.href, '_blank');
-    }
-    if (activeValue == 'gasPiping') {
-      const newPage = router.resolve({
-        path: '/micro-vent-3dModal/gas-pipe-net/home',
-        query: {
-          type: 'sysMonitor',
-          deviceType: 'pipingpage',
-        },
-      });
-      window.open(newPage.href, '_blank');
-    }
-    if (activeValue == 'gasAlarm') {
-      const newPage = router.resolve({ path: '/gas/warn/home?p=0' });
-      window.open(newPage.href, '_blank');
-    }
-    if (activeValue == 'drillDesign') {
-      const newPage = router.resolve({
-        path: '/micro-vent-3dModal/modelchannel/model3D/home',
-        query: {
-          type: 'model3D',
-          deviceType: 'model3D',
-          kind: 'drillset',
-        },
-      });
-      window.open(newPage.href, '_blank');
-    }
-  }
-
-  const headerBadges = computed(() => [
-    {
-      title: get(dataSource.value, 'sysInfo.totalGasVolume'),
-      desc: '累积瓦斯抽采量(万t/d)',
-    },
-    {
-      title: get(dataSource.value, 'sysInfo.totalAverageRate'),
-      desc: '平均瓦斯抽采率(%)',
-    },
-    {
-      title: get(dataSource.value, 'sysInfo.totalComplteQuantity'),
-      desc: '抽采达标工作面数量(个)',
-    },
-    {
-      title: get(dataSource.value, 'sysInfo.useM3Perent'),
-      desc: '有效风量率(%)', //回采中工作面数量
-    },
-    {
-      title: get(dataSource.value, 'sysInfo.drillinFootage'),
-      desc: '抽采钻孔总进尺(m)',
-    },
-  ]);
-
-  onBeforeMount(async () => {
-    dataSource.value = await gasSystem();
-  });
-  onMounted(() => {});
-  onBeforeUnmount(async () => {
-    await unmountMicroApps(['/micro-vent-3dModal']);
-  });
-</script>
-
-<style lang="less" scoped>
-  .gas-container {
-    width: 100%;
-    position: absolute;
-    z-index: 999;
-  }
-  .modal-box {
-    width: 100%;
-    height: calc(100%);
-    position: absolute;
-    top: 0;
-    left: 0;
-  }
-  :deep(.vent-home-header) {
-    background-color: var(--vent-base-color) !important;
-  }
-</style>

+ 0 - 74
src/views/vent/gas/gasInspect/components/addressAdd.vue

@@ -1,74 +0,0 @@
-<template>
-    <div class="inspectEdit">
-        <a-form :model="formAddress" name="basic" :label-col="{ span: 8 }" :wrapper-col="{ span: 12 }"
-            autocomplete="off">
-            <a-form-item label="巡检类型:">
-                <JDictSelectTag v-model:value="formAddress.insType" placeholder="请选择巡检类型" dictCode="ins_type"
-                    style="width: 220px" />
-            </a-form-item>
-            <!-- <a-form-item label="巡检区域:">
-                <a-input v-model:value="formAddress.strremark" style="width: 220px" />
-            </a-form-item> -->
-            <a-form-item label="巡检地址:">
-                <a-input v-model:value="formAddress.strinstallpos"  style="width: 220px" />
-            </a-form-item>
-
-
-        </a-form>
-        <div class="edit-btn">
-            <a-button type="primary" @click="confirmAddress">确定</a-button>
-            <a-button type="success" @click="cancelAddress">取消</a-button>
-        </div>
-    </div>
-</template>
-
-<script setup lang="ts">
-import { ref, reactive, onMounted, watch } from 'vue'
-import JDictSelectTag from '/@/components/Form/src/jeecg/components/JDictSelectTag.vue';
-
-let formAddress = reactive<any>({
-    insType: '',
-    // strremark: '',
-    strinstallpos: '',
-})
-let $emit = defineEmits(['confirmAddress', 'cancelAddress'])
-
-//确定
-let confirmAddress = () => {
-    $emit('confirmAddress', formAddress)
-}
-//取消
-let cancelAddress = () => {
-    formAddress = {
-        insType: '',
-        // strremark: '',
-        strinstallpos: '',
-    }
-    $emit('cancelAddress',)
-}
-
-onMounted(() => { })
-</script>
-
-<style lang="less" scoped>
-.inspectEdit {
-    padding: 10px;
-    box-sizing: border-box;
-
-    .edit-btn {
-        display: flex;
-        justify-content: flex-end;
-
-        .zxm-btn {
-            margin: 0px 10px;
-        }
-    }
-
-}
-
-:deep(.zxm-input) {
-    color: #fff;
-    border: 1px solid #3ad8ff77 !important;
-    background-color: #ffffff00 !important;
-}
-</style>

+ 0 - 50
src/views/vent/gas/gasInspect/components/inspectDel.vue

@@ -1,50 +0,0 @@
-<template>
-    <div class="inspectEdit">
-        <div class="card-area">
-
-            <a-popconfirm title="删除内容无法恢复,是否删除" ok-text="确定" cancel-text="取消" @confirm="handleDelCard"
-                @cancel="handleCancelDelCard">
-                <a-button type="primary" preIcon="ant-design:delete-outlined">删除巡检卡</a-button>
-            </a-popconfirm>
-            <a-popconfirm title="删除内容无法恢复,是否删除" ok-text="确定" cancel-text="取消" @confirm="handleDelCardInfo"
-                @cancel="handleCancelDelCard">
-                <a-button type="primary" preIcon="ant-design:delete-outlined">删除巡检信息</a-button>
-            </a-popconfirm>
-
-        </div>
-
-    </div>
-</template>
-
-<script setup lang="ts">
-import { ref, reactive } from 'vue'
-
-let $emit = defineEmits(['handleDelCard', 'handleDelCardInfo', 'handleCancelDelCard'])
-//删除巡检卡
-let handleDelCard = () => {
-    $emit('handleDelCard')
-}
-//删除巡检卡信息
-let handleDelCardInfo = () => {
-    $emit('handleDelCardInfo')
-}
-//取消删除巡检卡或者巡检信息
-let handleCancelDelCard = () => {
-    $emit('handleCancelDelCard')
-}
-
-</script>
-
-<style lang="less" scoped>
-.inspectEdit {
-    padding: 10px;
-    box-sizing: border-box;
-
-    .card-area {
-        width: 100%;
-        margin: 10px;
-        display: flex;
-        justify-content: space-around;
-    }
-}
-</style>

+ 0 - 138
src/views/vent/gas/gasInspect/components/inspectEdit.vue

@@ -1,138 +0,0 @@
-<template>
-    <div class="inspectEdit">
-        <a-form :model="formStateEdit" name="basic" :label-col="{ span: 8 }" :wrapper-col="{ span: 12 }"
-            autocomplete="off">
-            <a-form-item label="瓦斯巡检卡ID:">
-                <a-input v-model:value="formStateEdit.id" disabled />
-            </a-form-item>
-            <a-form-item label="瓦斯巡检地点:">
-                <a-select ref="select" v-model:value="formStateEdit.strInstallPos" placeholder="请选择..."
-                    @change="changeAddress">
-                    <a-select-option v-for="(item, index) in addressList" :key="item.value" :value="item.label">{{
-                        item.label
-                        }}</a-select-option>
-                </a-select>
-            </a-form-item>
-            <a-form-item label="所属区队:">
-                <a-select ref="select" v-model:value="formStateEdit.disTeamId" placeholder="请选择...">
-                    <a-select-option v-for="(item, index) in qdList" :key="index" :value="item.value">{{ item.label }}</a-select-option>
-                </a-select>
-            </a-form-item>
-            <a-form-item label="巡检类型:">
-                <JDictSelectTag v-model:value="formStateEdit.insType" placeholder="请选择巡检类型" dictCode="ins_type"
-                    style="width: 240px" />
-            </a-form-item>
-        </a-form>
-        <div class="edit-btn">
-            <a-button type="primary" @click="confirmEdit">提交</a-button>
-            <a-button type="success" @click="cancelEdit">取消</a-button>
-        </div>
-    </div>
-</template>
-
-<script setup lang="ts">
-import { ref, reactive, onMounted, watch } from 'vue'
-import JDictSelectTag from '/@/components/Form/src/jeecg/components/JDictSelectTag.vue';
-import { queryAllDisTeam, getAllGasIns } from '../gasInspect.api'
-
-let props = defineProps({
-    inspectEditData: {
-        type: Object,
-        default: () => {
-            return {}
-        }
-    }
-})
-
-let formStateEdit = reactive<any>({
-    id: '',
-    strInstallPos: '',
-    disTeamId: '',
-    insType: '',
-    deviceId: ''
-})
-let addressList = ref<any[]>([])//监测地点下拉选项列表
-let qdList = ref<any[]>([])//区队下拉选项列表
-let $emit = defineEmits(['confirmEdit', 'cancelEdit'])
-
-//查询所有区队
-async function queryAllDisTeamList() {
-    let res = await queryAllDisTeam()
-    console.log(res, '区队数据---------------')
-    if (res.length != 0) {
-        qdList.value = res.map(m => {
-            return {
-                label: m.name,
-                value: m.id
-            }
-        })
-    }
-}
-//获取所有巡检地址
-async function getAllGasInsList() {
-    let res = await getAllGasIns()
-    console.log(res, '所有巡检地点---------')
-    if (res.length != 0) {
-        addressList.value = res.map(el => {
-            return {
-                label: el.strinstallpos,
-                value: el.strinstallpos,
-                deviceId: el.id,
-            }
-        })
-    }
-}
-//巡检地址选项切换
-let changeAddress = (val) => {
-    formStateEdit.deviceId = addressList.value.filter(v => v.value == val)[0].deviceId
-    formStateEdit.strInstallPos = val
-}
-//编辑提交
-let confirmEdit = () => {
-    $emit('confirmEdit', formStateEdit)
-}
-//编辑取消
-let cancelEdit = () => {
-    formStateEdit = {
-        id: '',
-        strInstallPos: '',
-        disTeamId: '',
-        insType: '',
-        deviceId: ''
-    }
-    $emit('cancelEdit',)
-}
-watch(() => props.inspectEditData, (newV, oldV) => {
-    formStateEdit.strInstallPos = newV.strInstallPos
-    formStateEdit.id = newV.id
-    formStateEdit.disTeamId = newV.disTeamId
-    formStateEdit.insType = newV.insType
-    formStateEdit.deviceId = newV.deviceId
-    getAllGasInsList()
-    queryAllDisTeamList()
-}, { immediate: true })
-onMounted(() => { })
-</script>
-
-<style lang="less" scoped>
-.inspectEdit {
-    padding: 10px;
-    box-sizing: border-box;
-
-    .edit-btn {
-        display: flex;
-        justify-content: flex-end;
-
-        .zxm-btn {
-            margin: 0px 10px;
-        }
-    }
-
-}
-
-:deep(.zxm-input) {
-    color: #fff;
-    border: 1px solid #3ad8ff77 !important;
-    background-color: #ffffff00 !important;
-}
-</style>

+ 0 - 131
src/views/vent/gas/gasInspect/components/inspectTask.vue

@@ -1,131 +0,0 @@
-<template>
-    <div class="inspectTask">
-        <a-table :columns="columnsTask" size="small" :data-source="tableDataTask" :pagination="false">
-            <template #bodyCell="{ column, text }">
-                <template v-if="column.dataIndex === 'accountEarly'">
-                    <a-select ref="select" v-model:value="accountEarly" size="small" clearable placeholder="请选择巡检员"
-                        style="width: 140px">
-                        <a-select-option v-for="(item, index) in accountList" :key="index" :value="item.value">{{
-                            item.label
-                            }}</a-select-option>
-                    </a-select>
-                </template>
-                <template v-if="column.dataIndex === 'accountNoon'">
-                    <a-select ref="select" v-model:value="accountNoon" size="small" clearable placeholder="请选择巡检员"
-                        style="width: 140px">
-                        <a-select-option v-for="(item, index) in accountList" :key="index" :value="item.value">{{
-                            item.label
-                            }}</a-select-option>
-                    </a-select>
-                </template>
-                <template v-if="column.dataIndex === 'accountNight'">
-                    <a-select ref="select" v-model:value="accountNight" size="small" clearable placeholder="请选择巡检员"
-                        style="width: 140px">
-                        <a-select-option v-for="(item, index) in accountList" :key="index" :value="item.value">{{
-                            item.label
-                            }}</a-select-option>
-                    </a-select>
-                </template>
-            </template>
-            <template #action="{ record }">
-                <a class="table-action-link" @click="handleTaskSubmit(record)">下发</a>
-            </template>
-        </a-table>
-        <div class="edit-btn">
-
-            <a-button type="primary" @click="handleTaskCancel">返回</a-button>
-        </div>
-    </div>
-</template>
-
-<script setup lang="ts">
-import { ref, reactive, onMounted } from 'vue'
-import { columnsTask } from '../gasInspect.data'
-import { queryAllDisTeam, getAllUserInfo } from '../gasInspect.api'
-
-let tableDataTask = ref<any[]>([])
-let accountEarly = ref('')
-let accountNoon = ref('')
-let accountNight = ref('')
-let accountList = ref<any[]>([//巡检员下拉列表
-    { label: '1', value: '1' }
-])
-
-let $emit = defineEmits(['handleTaskSubmit', 'handleTaskCancel'])
-
-
-//获取任务管理列表
-async function queryAllDisTeamList() {
-    let res = await queryAllDisTeam()
-    console.log(res, '任务管理列表')
-    tableDataTask.value = res || []
-}
-//任务管理下发
-let handleTaskSubmit = (param) => {
-    $emit('handleTaskSubmit', { ...param, accountEarly: accountEarly.value, accountNoon: accountNoon.value, accountNight: accountNight.value })
-}
-//任务管理弹窗关闭
-let handleTaskCancel = () => {
-    accountEarly.value = ''
-    accountNoon.value = ''
-    accountNight.value = ''
-    $emit('handleTaskCancel')
-}
-//获取早中晚班巡检员列表
-async function getAllUserInfoList() {
-    let res = await getAllUserInfo()
-    console.log(res, '巡检员列表')
-    if (res.length != 0) {
-        accountList.value = res.map(el => {
-            return {
-                label: el.realname,
-                value: el.id,
-            }
-        })
-    } else {
-        accountList.value = []
-    }
-}
-onMounted(() => {
-    queryAllDisTeamList()
-    getAllUserInfoList()
-})
-</script>
-
-<style lang="less" scoped>
-.inspectTask {
-    padding: 10px;
-    box-sizing: border-box;
-
-    .edit-btn {
-        padding: 10px 10px 0px 10px;
-        display: flex;
-        justify-content: flex-end;
-    }
-}
-
-:deep(.zxm-input) {
-    color: #fff;
-    border: 1px solid #3ad8ff77 !important;
-    background-color: #ffffff00 !important;
-}
-
-:deep(.zxm-select-selector) {
-    width: 100%;
-    color: #fff;
-    border: 1px solid #3ad8ff77 !important;
-    background-color: #ffffff00 !important;
-}
-
-:deep(.zxm-select-selection-item) {
-    color: #fff !important;
-}
-
-:deep(.zxm-select-selection-placeholder) {
-    color: #ccc !important;
-}
-
-:deep(.zxm-select-arrow) {
-    color: #fff;
-}
-</style>

+ 0 - 145
src/views/vent/gas/gasInspect/components/inspectTeam.vue

@@ -1,145 +0,0 @@
-<template>
-    <div class="inspect-team">
-        <a-button class="addBtn" type="primary" preIcon="ant-design:plus-outlined" @click="handlerAdd">新增区队</a-button>
-        <a-table :columns="columnsTeam" size="small" :data-source="tableDataTeam" :scroll="{ y: 200 }" class="tableW"
-            :pagination="paginationTeam">
-            <template #action="{ record }">
-                <a class="table-action-link" @click="handlerEdit(record)">编辑</a>
-                <a class="table-action-link" @click="handlerDel(record)">删除</a>
-            </template>
-            <template #bodyCell="{ column, text }">
-
-            </template>
-        </a-table>
-        <!-- 区队新增弹窗 -->
-        <a-modal v-model:visible="visibleTeamAdd" width="450px" :footer="null" :title="titleTeamAdd" centered
-            destroyOnClose>
-            <a-form :model="formStateTeam" name="basic" :label-col="{ span: 8 }" :wrapper-col="{ span: 12 }"
-                autocomplete="off">
-                <a-form-item label="区队名称:">
-                    <a-input v-model:value="formStateTeam.teamName" placeholder="请输入" clearable />
-                </a-form-item>
-            </a-form>
-            <div class="edit-btn">
-                <a-button type="primary" @click="confirmAddTeam">提交</a-button>
-                <a-button type="success" @click="cancelAddTeam">取消</a-button>
-            </div>
-        </a-modal>
-    </div>
-</template>
-
-<script lang="ts" setup>
-import { ref, reactive, onMounted } from 'vue'
-import { teamList, teamAdd, teamEdit, deleteTeam } from '../gasInspect.api'
-import { columnsTeam, paginationTeam } from '../gasInspect.data'
-
-let isFlag = ref('')
-let tableDataTeam = ref<any[]>([])
-let visibleTeamAdd = ref(false)//控制区队新增弹窗显示与隐藏
-let titleTeamAdd = ref('')//区队标题
-//区队名称
-let formStateTeam = reactive({
-    teamName: '',
-    id: '',
-})
-//获取区队列表
-async function getTeamList() {
-    paginationTeam.current = 1
-    let res = await teamList({ pageNo: paginationTeam.current, pageSize: paginationTeam.pageSize })
-    console.log(res, '区队列表-------------')
-    tableDataTeam.value = res.records
-    paginationTeam.total = res.total
-}
-//区队新增
-let handlerAdd = () => {
-    isFlag.value = 'add'
-    visibleTeamAdd.value = true
-    titleTeamAdd.value = '区队新增'
-}
-//区队编辑
-let handlerEdit = (record) => {
-    isFlag.value = 'edit'
-    visibleTeamAdd.value = true
-    titleTeamAdd.value = '区队编辑'
-    formStateTeam.id = record.id
-    formStateTeam.teamName = record.name
-}
-//确定添加/编辑
-async function confirmAddTeam() {
-    if (isFlag.value == 'add') {
-        let res = await teamAdd({ name: formStateTeam.teamName })
-        console.log(res, '区队新增------')
-        if (res) {
-            visibleTeamAdd.value = false
-            formStateTeam.teamName = ''
-            titleTeamAdd.value = ''
-            getTeamList()
-        }
-    } else {
-        let res = await teamEdit({id:formStateTeam.id,name:formStateTeam.teamName})
-        console.log(res,'区队编辑-------')
-        if (res) {
-            visibleTeamAdd.value = false
-            formStateTeam.teamName = ''
-            formStateTeam.id=''
-            titleTeamAdd.value = ''
-            getTeamList()
-        }
-    }
-}
-//取消添加/编辑
-let cancelAddTeam = () => {
-    formStateTeam.teamName = ''
-    formStateTeam.id=''
-    visibleTeamAdd.value = false
-    titleTeamAdd.value=''
-}
-
-//删除区队
-async function handlerDel(record) {
-    let res=await deleteTeam({id:record.id})
-    if(res){
-        getTeamList() 
-    }
-}
-
-onMounted(() => {
-    getTeamList()
-})
-</script>
-
-<style lang="less" scoped>
-.inspect-team {
-    padding: 10px;
-    box-sizing: border-box;
-
-    .addBtn {
-        margin-bottom: 10px;
-    }
-}
-
-.zxm-form {
-    padding: 10px !important;
-    box-sizing: border-box;
-
-    .zxm-form-item {
-        margin-bottom: 0;
-    }
-}
-
-.edit-btn {
-    display: flex;
-    justify-content: flex-end;
-    margin-bottom: 10px;
-
-    .zxm-btn {
-        margin: 0px 10px;
-    }
-}
-
-::v-deep .zxm-input {
-    color: #fff;
-    border: 1px solid #3ad8ff77 !important;
-    background-color: #ffffff00 !important;
-}
-</style>

+ 0 - 103
src/views/vent/gas/gasInspect/components/uploadOrdown.vue

@@ -1,103 +0,0 @@
-<template>
-    <div class="uploadOrdown">
-        <a-form :model="formState" :label-col="{ span: 7 }" :wrapper-col="{ span: 14 }" autocomplete="off">
-            <a-form-item label="巡检类型:">
-                <JDictSelectTag v-model:value="formState.insType" placeholder="请选择巡检类型" dictCode="ins_type"
-                    style="width: 240px" />
-            </a-form-item>
-
-            <a-form-item label="选择文件:" v-if="modalType == 'upload'">
-                <a-upload :before-upload="beforeUpload" @remove="handleRemove" :multiple="false" :file-list="fileList">
-                    <a-button type="primary" preIcon="ant-design:cloud-upload-outlined">选择文件</a-button>
-                </a-upload>
-            </a-form-item>
-        </a-form>
-        <div class="btn">
-            <a-button class="btn-item" type="primary" @click="handlerComfirm">确定</a-button>
-
-            <a-button class="btn-item" @click="handlerCancel">取消</a-button>
-        </div>
-    </div>
-</template>
-
-<script setup lang=ts>
-import { ref, reactive, computed } from 'vue'
-import { message } from 'ant-design-vue';
-import JDictSelectTag from '/@/components/Form/src/jeecg/components/JDictSelectTag.vue';
-
-let props = defineProps({
-    modalType: {
-        type: String,
-        default: ''
-    }
-})
-
-let formState = reactive({
-    insType: '',
-})
-let fileList = reactive<any[]>([])
-let $emit = defineEmits(['handlerComfirm', 'handlerCancel'])
-
-//选择文件
-let beforeUpload = (file) => {
-    console.log(file, '选中文件');
-    fileList.length = 0;
-    let index = file.name.indexOf('.');
-    let name = file.name.substring(index + 1);
-    if (name == 'png' || name == 'jpg' || name == 'gif' || name == 'psd' || name == 'webp') {
-        message.warning('禁止上传图片类型的文件!');
-    } else {
-        fileList.push(file);
-    }
-};
-// 文件移除
-let handleRemove = (file) => {
-    const index = fileList.indexOf(file);
-    const newFileList = fileList.slice();
-    newFileList.splice(index, 1);
-    fileList.length = 0;
-};
-
-//确认
-let handlerComfirm = () => {
-    if (props.modalType == 'upload') {
-        const formData = new FormData();
-        formData.append('file', fileList[0]);
-        formData.append('insType', formState.insType);
-        $emit('handlerComfirm', formData)
-    } else {
-        $emit('handlerComfirm', formState)
-    }
-}
-//取消
-let handlerCancel = () => {
-    formState.insType = ''
-    $emit('handlerCancel')
-}
-</script>
-
-<style lang="less" scoped>
-.uploadOrdown {
-    position: relative;
-    padding: 10px 15px;
-    box-sizing: border-box;
-
-    .btn {
-        padding: 10px 10px 0px 10px;
-        display: flex;
-        justify-content: flex-end;
-
-        .btn-item {
-            margin: 0px 5px;
-        }
-    }
-}
-
-::v-deep .zxm-upload-list-item-name {
-    color: #fff;
-}
-
-::v-deep .zxm-upload-list-item-name:hover {
-    background-color: transparent !important;
-}
-</style>

+ 0 - 127
src/views/vent/gas/gasInspect/gasInspect.api.ts

@@ -1,127 +0,0 @@
-import { defHttp } from '/@/utils/http/axios';
-
-enum Api {
-  list = '/safety/gasInsCard/list', //通过id(巡检卡id)查询
-  importByExcel = '/safety/gasDayReport/importGasInsCard', //导入瓦斯巡检地址
-  exportGasByExcel = '/safety/gasDayReport/exportGasByExcel', //导出瓦斯巡检地址
-  queryAllDisTeam = '/safety/disTeamInfo/queryAllDisTeam', //查询所有区队
-  moveOrderNum = '/safety/gasInsCard/moveOrderNum', //上下移接口
-  edit = '/safety/gasInsCard/edit', //瓦斯巡检地点编辑
-  deleteCard = '/safety/gasInsCard/delete', //瓦斯巡检卡删除
-  taskSubmit = '/safety/disTeamInfo/edit', //任务管理下发
-  clearCardInfo = '/safety/gasInsCard/clearCard', //瓦斯巡检卡信息删除
-  getAllUserInfo = '/safety/gasInsCard/getAllUserInfo', //获取早中晚班巡检员列表
-  getAllGasIns = '/safety/gasIns/getAllGasIns', //获取所有巡检地址
-  teamList = '/safety/disTeamInfo/list', //区队分页列表查询
-  teamAdd = '/safety/disTeamInfo/add', //区队添加
-  //   teamEdit = '/safety/disTeamInfo/edit', //区队编辑
-  deleteTeam = '/safety/disTeamInfo/delete', //区队删除
-  deleteTeamNew = '/safety/disTeamInfo/deleteNew', //区队删除
-  addGasReportAddress = '/safety/gasDayReport/addGasReportAddress', //新增瓦斯巡检地址
-  taskDetailsList = '/safety/gasDayReport/taskDetailsList', // 瓦斯巡检任务明细列表分页查询
-  zipdownload = '/ventanaly-sharefile/fileServer/zipdownload',
-  operateGasCheckTaskDetail = '/safety/gasDayReport/operateGasCheckTaskDetail',
-  getManageTasklist = '/safety/gasDayReport/getManageTasklist',
-}
-
-/**
- * 新增瓦斯巡检地址
- * @param params
- */
-export const addGasReportAddress = (params) => defHttp.post({ url: Api.addGasReportAddress, params });
-/**
- * 下载文件目录
- * @param params
- */
-export const zipdownload = (params) => defHttp.post({ url: Api.zipdownload, params, responseType: 'blob' }, { joinParamsToUrl: true });
-/**
- * 通过id(巡检卡id)查询
- * @param params
- */
-export const list = (params) => defHttp.get({ url: Api.list, params });
-
-/**
- * 导入瓦斯巡检地址
- * @param params
- */
-export const importByExcel = (params) => defHttp.post({ headers: { 'Content-Type': 'multipart/form-data' }, url: Api.importByExcel, params });
-
-/**
- * 导出瓦斯巡检地址
- * @param params
- */
-export const exportGasByExcel = (params) => defHttp.get({ url: Api.exportGasByExcel, params, responseType: 'blob' });
-
-/**
- * 查询所有区队
- * @param params
- */
-export const queryAllDisTeam = () => defHttp.get({ url: Api.queryAllDisTeam });
-/**
- * 上下移接口
- * @param params
- */
-export const moveOrderNum = (params) => defHttp.post({ url: Api.moveOrderNum, params });
-/**
- * 瓦斯巡检地点编辑
- * @param params
- */
-export const edit = (params) => defHttp.post({ url: Api.edit, params });
-
-/**
- * 瓦斯巡检卡-删除
- */
-export const deleteCard = (params) => defHttp.delete({ url: Api.deleteCard, params }, { joinParamsToUrl: true });
-/**
- * 瓦斯巡检卡信息-删除
- */
-export const clearCardInfo = (params) => defHttp.get({ url: Api.clearCardInfo, params }, { joinParamsToUrl: true });
-/**
- * 获取早中晚班巡检员列表
- */
-export const getAllUserInfo = () => defHttp.get({ url: Api.getAllUserInfo });
-/**
- * 任务管理下发
- * @param params
- */
-export const taskSubmit = (params) => defHttp.post({ url: Api.taskSubmit, params });
-/**
- * 获取所有巡检地址
- */
-export const getAllGasIns = () => defHttp.get({ url: Api.getAllGasIns });
-/**
- * 区队分页列表查询
- */
-export const teamList = (params) => defHttp.get({ url: Api.teamList, params }, { joinParamsToUrl: true });
-/**
- * 区队添加
- */
-export const teamAdd = (params) => defHttp.post({ url: Api.teamAdd, params });
-/**
- * 区队编辑
- */
-export const teamEdit = (params) => defHttp.put({ url: Api.taskSubmit, params });
-/**
- * 区队删除
- */
-export const deleteTeam = (params) => defHttp.delete({ url: Api.deleteTeam, params }, { joinParamsToUrl: true });
-/**
- * 区队删除
- */
-export const deleteTeamNew = (params) => defHttp.delete({ url: Api.deleteTeamNew, params }, { joinParamsToUrl: true });
-
-/**
- * 瓦斯巡检任务明细列表分页查询
- * @param params
- */
-export const taskDetailsList = (params) => defHttp.get({ url: Api.taskDetailsList, params });
-/**
- * 瓦斯巡检任务明细列表
- * @param params
- */
-export const operateGasCheckTaskDetail = (params) => defHttp.post({ url: Api.operateGasCheckTaskDetail, params });
-/**
- * 瓦斯巡检任务明细管理列表
- * @param params
- */
-export const getManageTasklist = (params) => defHttp.post({ url: Api.getManageTasklist, params });

+ 0 - 425
src/views/vent/gas/gasInspect/gasInspect.data.ts

@@ -1,425 +0,0 @@
-import { BasicColumn, FormSchema } from '/@/components/Table';
-
-export const columns: BasicColumn[] = [
-  {
-    title: '序号',
-    width: 60,
-    align: 'center',
-    customRender: ({ index }: { index: number }) => `${index + 1}`,
-  },
-  {
-    title: '巡检卡ID',
-    dataIndex: 'id',
-    key: 'id',
-    align: 'center',
-  },
-  {
-    title: '地点',
-    dataIndex: 'strInstallPos',
-    key: 'strInstallPos',
-    align: 'center',
-  },
-  {
-    title: '巡检人',
-    children: [
-      {
-        title: '早班',
-        dataIndex: 'nameEarly',
-        key: 'nameEarly',
-        align: 'center',
-      },
-
-      {
-        title: '中班',
-        dataIndex: 'nameNoon',
-        key: 'nameNoon',
-        align: 'center',
-      },
-      {
-        title: '晚班',
-        dataIndex: 'nameNight',
-        key: 'nameNight',
-        align: 'center',
-      },
-    ],
-  },
-  {
-    title: '是否巡检',
-    children: [
-      {
-        title: '',
-        dataIndex: 'insType',
-        key: 'insType',
-        align: 'center',
-      },
-      {
-        title: '早班',
-        dataIndex: 'morning',
-        key: 'morning',
-        align: 'center',
-      },
-
-      {
-        title: '中班',
-        dataIndex: 'afterNoon',
-        key: 'afterNoon',
-        align: 'center',
-      },
-      {
-        title: '晚班',
-        dataIndex: 'evening',
-        key: 'eevening',
-        align: 'center',
-      },
-    ],
-  },
-  {
-    title: '操作',
-    dataIndex: 'action',
-    width: 250,
-    align: 'center',
-    slots: { customRender: 'action' },
-  },
-];
-export const columnsTask: BasicColumn[] = [
-  {
-    title: '序号',
-    width: 60,
-    align: 'center',
-    customRender: ({ index }: { index: number }) => `${index + 1}`,
-  },
-  {
-    title: '所属队别',
-    dataIndex: 'name',
-    key: 'name',
-    align: 'center',
-  },
-  {
-    title: '早班巡检',
-    dataIndex: 'accountEarly',
-    key: 'accountEarly',
-    align: 'center',
-  },
-  {
-    title: '中班巡检',
-    dataIndex: 'accountNoon',
-    key: 'accountNoon',
-    align: 'center',
-  },
-  {
-    title: '晚班巡检',
-    dataIndex: 'accountNight',
-    key: 'accountNight',
-    align: 'center',
-  },
-  {
-    title: '操作',
-    dataIndex: 'action',
-    width: 120,
-    align: 'center',
-    slots: { customRender: 'action' },
-  },
-];
-//区队管理列表列
-export const columnsTeam: BasicColumn[] = [
-  {
-    title: '序号',
-    width: 60,
-    align: 'center',
-    customRender: ({ index }: { index: number }) => `${index + 1}`,
-  },
-  {
-    title: 'ID',
-    dataIndex: 'id',
-    key: 'id',
-    align: 'center',
-  },
-  {
-    title: '区队',
-    dataIndex: 'name',
-    key: 'name',
-    align: 'center',
-  },
-
-  {
-    title: '操作',
-    dataIndex: 'action',
-    width: 180,
-    align: 'center',
-    slots: { customRender: 'action' },
-  },
-];
-//分页参数
-export const pagination = {
-  current: 1, // 当前页码
-  pageSize: 10, // 每页显示条数
-  total: 0, // 总条目数,后端返回
-  // showTotal: (total, range) => `${range[0]}-${range[1]} 条,总共 ${total} 条`, // 分页右下角显示信息
-  showSizeChanger: true, // 是否可改变每页显示条数
-  pageSizeOptions: ['10', '20', '50'], // 可选的每页显示条数
-};
-//区队管理分页参数
-export const paginationTeam = {
-  current: 1, // 当前页码
-  pageSize: 5, // 每页显示条数
-  total: 0, // 总条目数,后端返回
-  // showTotal: (total, range) => `${range[0]}-${range[1]} 条,总共 ${total} 条`, // 分页右下角显示信息
-  showSizeChanger: true, // 是否可改变每页显示条数
-  pageSizeOptions: ['5', '10', '20', '50'], // 可选的每页显示条数
-};
-
-// 任务表格
-export const taskColumns: BasicColumn[] = [
-  {
-    title: '序号',
-    width: 60,
-    align: 'center',
-    customRender: ({ index }: { index: number }) => `${index + 1}`,
-  },
-  // {
-  //   title: 'ID',
-  //   dataIndex: 'id',
-  //   key: 'id',
-  //   align: 'center',
-  // },
-  {
-    title: '任务名称',
-    dataIndex: 'name',
-    key: 'name',
-    align: 'center',
-  },
-  // {
-  //   title: '早班巡检人账号',
-  //   dataIndex: 'accountEarly',
-  //   key: 'accountEarly',
-  //   align: 'center',
-  //   edit: true,
-  //   editComponent: 'ApiSelect',
-  //   editComponentProps: {
-  //     api: getAllUserInfo,
-  //     labelField: 'realname',
-  //     valueField: 'id',
-  //   },
-  // },
-  // {
-  //   title: '午班巡检人账号',
-  //   dataIndex: 'accountNoon',
-  //   key: 'accountNoon',
-  //   align: 'center',
-  //   edit: true,
-  //   editComponent: 'ApiSelect',
-  //   editComponentProps: {
-  //     api: getAllUserInfo,
-  //     labelField: 'realname',
-  //     valueField: 'id',
-  //   },
-  // },
-  // {
-  //   title: '晚班巡检人账号',
-  //   dataIndex: 'accountNight',
-  //   key: 'accountNight',
-  //   align: 'center',
-  //   edit: true,
-  //   editComponent: 'ApiSelect',
-  //   editComponentProps: {
-  //     api: getAllUserInfo,
-  //     labelField: 'realname',
-  //     valueField: 'id',
-  //   },
-  // },
-  {
-    title: '所属区队',
-    dataIndex: 'teamCode_dictText',
-    key: 'teamCode_dictText',
-    align: 'center',
-  },
-  {
-    title: '任务班次',
-    dataIndex: 'classType_dictText',
-    key: 'classType_dictText',
-    align: 'center',
-  },
-  {
-    title: '总巡检数',
-    dataIndex: 'totalCheckNum',
-    key: 'totalCheckNum',
-    align: 'center',
-  },
-  {
-    title: '未巡检数',
-    dataIndex: 'missCheckNum',
-    key: 'missCheckNum',
-    align: 'center',
-  },
-  {
-    title: '巡检人',
-    dataIndex: 'checkPerson',
-    key: 'checkPerson',
-    align: 'center',
-  },
-  {
-    title: '创建日期',
-    dataIndex: 'createTime',
-    key: 'createTime',
-    align: 'center',
-  },
-  {
-    title: '任务日期',
-    dataIndex: 'taskTime',
-    key: 'taskTime',
-    align: 'center',
-  },
-];
-
-export const taskschemas: FormSchema[] = [
-  {
-    label: 'ID',
-    field: 'id',
-    component: 'Input',
-    show: false,
-  },
-  {
-    label: '任务名称',
-    field: 'name',
-    component: 'Input',
-    labelWidth: 100,
-  },
-  // {
-  //   label: '早班巡检人账号',
-  //   field: 'accountEarly',
-  //   component: 'ApiSelect',
-  //   componentProps: {
-  //     api: getAllUserInfo,
-  //     labelField: 'realname',
-  //     valueField: 'id',
-  //   },
-  // },
-  // {
-  //   label: '午班巡检人账号',
-  //   field: 'accountNoon',
-  //   component: 'ApiSelect',
-  //   componentProps: {
-  //     api: getAllUserInfo,
-  //     labelField: 'realname',
-  //     valueField: 'id',
-  //   },
-  // },
-  // {
-  //   label: '晚班巡检人账号',
-  //   field: 'accountNight',
-  //   component: 'ApiSelect',
-  //   componentProps: {
-  //     api: getAllUserInfo,
-  //     labelField: 'realname',
-  //     valueField: 'id',
-  //   },
-  // },
-  {
-    label: '任务班次',
-    field: 'classType',
-    component: 'JDictSelectTag',
-    componentProps: {
-      dictCode: 'classType',
-      placeholder: '请选择任务班次',
-    },
-    labelWidth: 100,
-  },
-  {
-    label: '所属区队',
-    field: 'teamCode',
-    component: 'JDictSelectTag',
-    componentProps: {
-      dictCode: 'districtTeam',
-      placeholder: '请选择所属区队',
-    },
-    labelWidth: 100,
-  },
-];
-
-// 任务详细表格
-export const taskManageColumns: BasicColumn[] = [
-  {
-    title: '序号',
-    width: 60,
-    align: 'center',
-    customRender: ({ index }: { index: number }) => `${index + 1}`,
-  },
-  {
-    title: '巡检地址',
-    dataIndex: 'deviceName',
-    key: 'deviceName',
-    align: 'center',
-    width: 300,
-  },
-  {
-    title: '巡检次数',
-    dataIndex: 'checkNum',
-    key: 'checkNum',
-    align: 'center',
-  },
-  {
-    title: '任务名称',
-    dataIndex: 'taskName',
-    key: 'taskName',
-    align: 'center',
-  },
-  {
-    title: '任务班次',
-    dataIndex: 'classType',
-    key: 'classType',
-    align: 'center',
-  },
-  {
-    title: '已关联当前任务',
-    dataIndex: 'isSelect',
-    key: 'isSelect',
-    align: 'center',
-  },
-  {
-    title: '已关联其它任务',
-    dataIndex: 'isOtherSelect',
-    key: 'isOtherSelect',
-    align: 'center',
-  },
-];
-
-// 任务详细表格
-export const taskDetailsColumns: BasicColumn[] = [
-  {
-    title: '序号',
-    width: 60,
-    align: 'center',
-    customRender: ({ index }: { index: number }) => `${index + 1}`,
-  },
-  {
-    title: '巡检地址',
-    dataIndex: 'deviceName',
-    key: 'deviceName',
-    align: 'center',
-    width: 300,
-  },
-  {
-    title: '巡检次数',
-    dataIndex: 'checkNum',
-    key: 'checkNum',
-    align: 'center',
-  },
-  {
-    title: '任务名称',
-    dataIndex: 'taskName',
-    key: 'taskName',
-    align: 'center',
-  },
-  {
-    title: '任务班次',
-    dataIndex: 'classType_dictText',
-    key: 'classType_dictText',
-    align: 'center',
-  },
-  {
-    title: '巡检状态',
-    dataIndex: 'checkState',
-    key: 'checkState',
-    align: 'center',
-  },
-];

Niektóre pliki nie zostały wyświetlone z powodu dużej ilości zmienionych plików