Browse Source

1. 修改文件共享中新的删除与下载bug
2. 替换均压模型文件
3. 去掉了项目中关于矿名的信息
4. 修改地上、地下瓦斯泵站模型切换不显示问题

hongrunxia 1 year ago
parent
commit
42649bcb61
37 changed files with 1314 additions and 1206 deletions
  1. 1 1
      .env.development
  2. 2 2
      public/js/config.js
  3. BIN
      public/model/glft/fc/ddFc_2023-06-02.glb
  4. BIN
      public/model/glft/fc/ddFc_2023-10-11.glb
  5. BIN
      public/model/glft/fc/sdFc_2023-06-02.glb
  6. BIN
      public/model/glft/fc/wall_2023-10-11.glb
  7. BIN
      public/model/glft/fire/balancePress_2023-07-20.glb
  8. BIN
      public/model/glft/fm/fm_2023-06-02.glb
  9. 0 2
      src/components/vent/micro/ventModal.vue
  10. 1 0
      src/hooks/system/useCamera.ts
  11. 0 1
      src/qiankun/index.ts
  12. 5 3
      src/utils/http/axios/index.ts
  13. 5 2
      src/utils/threejs/main.worker.ts
  14. 1 1
      src/views/vent/deviceManager/substationTabel/substation.data.ts
  15. 4 0
      src/views/vent/deviceManager/tableColumns/tableColumns.data.ts
  16. 11 11
      src/views/vent/home/clique/clique.data.ts
  17. 27 13
      src/views/vent/home/clique/components/3Dmap/index.vue
  18. 2 1
      src/views/vent/home/clique/components/dialog-modal.vue
  19. 6 6
      src/views/vent/home/clique/components/file-share.vue
  20. 28 14
      src/views/vent/home/clique/components/icon-light.vue
  21. 64 71
      src/views/vent/home/clique/components/mine-wind.vue
  22. 2 1
      src/views/vent/home/clique/components/wind-road.vue
  23. 2 1
      src/views/vent/home/clique/index.vue
  24. 1 1
      src/views/vent/home/clique/index1.vue
  25. 13 13
      src/views/vent/home/colliery/clique.data.ts
  26. 319 309
      src/views/vent/home/colliery/components/fan-monitor.vue
  27. 373 365
      src/views/vent/home/colliery/components/main-monitor.vue
  28. 0 1
      src/views/vent/home/colliery/index.vue
  29. 0 1
      src/views/vent/monitorManager/camera/index.vue
  30. 413 353
      src/views/vent/monitorManager/gasPumpMonitor/components/gasPumpHome.vue
  31. 2 3
      src/views/vent/monitorManager/gasPumpMonitor/gasPump.threejs.ts
  32. 1 0
      src/views/vent/monitorManager/gasPumpMonitor/gasPump.threejs.under.ts
  33. 0 1
      src/views/vent/monitorManager/gateMonitor/gate.threejs.two.ss.ts
  34. 4 5
      src/views/vent/monitorManager/windowMonitor/modal.vue
  35. 22 20
      src/views/vent/monitorManager/workFaceMonitor/workFace.threejs.base.ts
  36. 2 0
      src/views/vent/performance/comment/NormalTable.vue
  37. 3 4
      src/views/vent/performance/fileDetail/fileDetail.api.ts

+ 1 - 1
.env.development

@@ -6,7 +6,7 @@ VITE_PUBLIC_PATH = /
 
 # 跨域代理,您可以配置多个 ,请注意,没有换行符
 #VITE_PROXY = [["/jeecgboot","http://localhost:8080/jeecg-boot"],["/upload","http://localhost:3300/upload"]]
-VITE_PROXY = [["/jeecgsystem","http://182.92.126.35:9999"],["/upload","http://localhost:3300/upload"],["/documents", "http://182.92.126.35:9050"],["/modelreq", "http://182.92.126.35:9999"],["/webRtc", "http://192.168.183.216:8000"]]
+VITE_PROXY = [["/jeecgsystem","http://182.92.126.35:9999"],["/upload","http://localhost:3300/upload"],["/documents", "http://182.92.126.35:9050"],["/modelreq", "http://182.92.126.35:9999"],["/webRtc", "http://192.168.183.216:8051"]]
 #VITE_PROXY = [["/jeecgsystem","http://192.168.1.8:9999"],["/upload","http://localhost:3300/upload"]]
 
 # 控制台不输出

+ 2 - 2
public/js/config.js

@@ -9,7 +9,7 @@ const History_Type = {
 }
 
 const VENT_PARAM = {
-  simulatedPassword: '123456', //(simulatedPassword 为空时有密码输入框弹出,不为空时不弹出密码输入框,无需输入密码)
-  // simulatedPassword: '',
+  // simulatedPassword: '123456', //(simulatedPassword 为空时有密码输入框弹出,不为空时不弹出密码输入框,无需输入密码)
+  simulatedPassword: '',
   showReport: false
 }

BIN
public/model/glft/fc/ddFc_2023-06-02.glb


BIN
public/model/glft/fc/ddFc_2023-10-11.glb


BIN
public/model/glft/fc/sdFc_2023-06-02.glb


BIN
public/model/glft/fc/wall_2023-10-11.glb


BIN
public/model/glft/fire/balancePress_2023-07-20.glb


BIN
public/model/glft/fm/fm_2023-06-02.glb


+ 0 - 2
src/components/vent/micro/ventModal.vue

@@ -21,12 +21,10 @@
       });
 
       onBeforeUnmount(() => {
-        debugger;
         unmountMicroApps(['/micro-vent-3dModal']);
       });
 
       onUnmounted(() => {
-        debugger;
         unmountMicroApps(['/micro-vent-3dModal']);
       });
       return { loading };

+ 1 - 0
src/hooks/system/useCamera.ts

@@ -182,6 +182,7 @@ export function useCamera() {
             render(
               h(LivePlayer, {
                 class: 'player',
+                id: videoParentDom[0],
                 muted: 'muted',
                 autoplay: true,
                 live: true,

+ 0 - 1
src/qiankun/index.ts

@@ -56,7 +56,6 @@ const mountMicroApp = (path, toPath?) => {
 
 // 卸载app的方法
 const unmountMicroApps = async (multipleApp) => {
-  debugger;
   for (const key in activeApps) {
     const isExist = multipleApp.some((name) => name == key);
     if (isExist) {

+ 5 - 3
src/utils/http/axios/index.ts

@@ -59,9 +59,11 @@ const transform: AxiosTransform = {
         createMessage.success(message);
       }
       return result;
-    } else if (data) {
-      //lxh
-      // console.log(data, '000000000000000');
+    } else if (data && data.type) {
+      //信息成功提示
+      createMessage.success('下载成功!');
+      return data;
+    } else {
       createMessage.error(message);
       throw new Error(message);
     }

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

@@ -56,17 +56,20 @@ export function initModalWorker() {
     'ztfj/ztfj_2023-12-12.glb',
     'fire/laneway_2023-06-02.glb',
     'fire/chamber_2023-06-02.glb',
-    'fire/workFace_2023-06-29.glb',
+    // 'fire/workFace_2023-06-29.glb',
     'fire/tunFace_2023-07-14.glb',
     'fire/nitrogen_2023-06-02.glb',
     'fire/nitrogenUnderground_2023-09-15.glb',
     'fire/grout_2023-06-02.glb',
     'fire/Bertai_2023-11-29.glb', //lxh
-    'fire/balancePress_2023-07-20.glb',
+    'fire/balancePress_2024-02-23.glb',
     'yafeng/compressor_2023-07-10.glb',
     'gas/gasPump_2023-08-18.glb',
     'gas/gasPumpUnder_2023-10-05.glb',
     'mb/obfurage_2023-09-09.glb',
+    'workFace/workFace-base_2014-02-04.glb',
+    'workFace/workFace-jin_2014-02-04.glb',
+    'workFace/workFace-hui_2014-02-04.glb',
   ];
 
   const db: any = new Dexie('DB');

+ 1 - 1
src/views/vent/deviceManager/substationTabel/substation.data.ts

@@ -140,7 +140,7 @@ export const formSchema: FormSchema[] = [
     field: 'monitorparam',
     component: 'MTreeSelect',
     componentProps: {
-      isSearch: false
+      virtual: false,
     },
   },
   {

+ 4 - 0
src/views/vent/deviceManager/tableColumns/tableColumns.data.ts

@@ -40,6 +40,9 @@ export const searchFormSchema: FormSchema[] = [
     label: '设备类型',
     field: 'devicetype',
     component: 'MTreeSelect',
+    componentProps: {
+      isSearch: false,
+    },
     colProps: { span: 6 },
   },
   {
@@ -79,6 +82,7 @@ export const formSchema: FormSchema[] = [
     component: 'MTreeSelect',
     componentProps: {
       isSearch: false,
+      virtual: false,
     },
   },
 

+ 11 - 11
src/views/vent/home/clique/clique.data.ts

@@ -18,67 +18,67 @@ export const airVolumeMonitorKey = [
 ];
 export const airVolumeMonitor = [
   {
-    name: '大柳塔',
+    name: 'XXX',
     jin: 10215,
     hui: 10215,
     xufeng: 10215,
   },
   {
-    name: '大柳塔',
+    name: 'XXX',
     jin: 10215,
     hui: 10215,
     xufeng: 10215,
   },
   {
-    name: '大柳塔',
+    name: 'XXX',
     jin: 10215,
     hui: 10215,
     xufeng: 10215,
   },
   {
-    name: '大柳塔',
+    name: 'XXX',
     jin: 10215,
     hui: 10215,
     xufeng: 10215,
   },
   {
-    name: '大柳塔',
+    name: 'XXX',
     jin: 10215,
     hui: 10215,
     xufeng: 10215,
   },
   {
-    name: '大柳塔',
+    name: 'XXX',
     jin: 10215,
     hui: 10215,
     xufeng: 10215,
   },
   {
-    name: '大柳塔',
+    name: 'XXX',
     jin: 10215,
     hui: 10215,
     xufeng: 10215,
   },
   {
-    name: '大柳塔',
+    name: 'XXX',
     jin: 10215,
     hui: 10215,
     xufeng: 10215,
   },
   {
-    name: '大柳塔',
+    name: 'XXX',
     jin: 10215,
     hui: 10215,
     xufeng: 10215,
   },
   {
-    name: '大柳塔',
+    name: 'XXX',
     jin: 10215,
     hui: 10215,
     xufeng: 10215,
   },
   {
-    name: '大柳塔1111',
+    name: 'XXX',
     jin: 10215,
     hui: 10215,
     xufeng: 10215,

+ 27 - 13
src/views/vent/home/clique/components/3Dmap/index.vue

@@ -16,22 +16,26 @@
 
   const locationInfo = [
     {
-      name: '保德矿',
+      // name: '保德矿',
+      name: '矿矿矿',
       code: 'bd',
       value: [111.102548, 38.951875],
     },
     {
-      name: '锦界矿',
+      // name: '锦界矿',
+      name: '矿矿矿',
       code: 'jj',
       value: [110.174801, 38.742404],
     },
     {
-      name: '榆家梁矿',
+      // name: '榆家梁矿',
+      name: '矿矿矿',
       code: 'yjl',
       value: [110.526055, 39.044234],
     },
     {
-      name: '大柳塔矿',
+      // name: '大柳塔矿',
+      name: '矿矿矿',
       code: 'dlt',
       value: [110.245165, 39.259314],
     },
@@ -40,49 +44,59 @@
     //   value: [110.216401, 39.276499],
     // },
     {
-      name: '上湾矿',
+      // name: '上湾矿',
+      name: '矿矿矿',
       code: 'sw',
       value: [110.191364, 39.290282],
     },
     {
-      name: '哈拉沟矿',
+      // name: '哈拉沟矿',
+      name: '矿矿矿',
       code: 'hlg',
       value: [110.207022, 39.308751],
     },
     {
-      name: '补连塔矿',
+      // name: '补连塔矿',
+      name: '矿矿矿',
       code: 'blt',
       value: [110.173867, 39.358305],
     },
     {
-      name: '石圪台矿',
+      // name: '石圪台矿',
+      name: '矿矿矿',
       code: 'sgt',
       value: [110.136362, 39.418578],
     },
 
     {
-      name: '寸草塔矿',
+      // name: '寸草塔矿',
+      name: '矿矿矿',
       code: 'cct',
       value: [110.107954, 39.436366],
     },
     {
-      name: '乌兰木伦矿',
+      // name: '乌兰木伦矿',
+      name: '矿矿矿',
       code: 'wlml',
       value: [110.102314, 39.456531],
     },
 
     {
-      name: '布尔台矿',
+      // name: '布尔台矿',
+      name: '矿矿矿',
       code: 'bet',
       value: [110.066138, 39.480941],
     },
     {
-      name: '寸草塔二矿',
+      // name: '寸草塔二矿',
+      name: '矿矿矿',
       code: 'ccte',
       value: [110.059497, 39.505482],
     },
     {
-      name: '柳塔矿',
+      // name: '柳塔矿',
+      // name: '柳塔矿',
+      name: '矿矿矿',
       code: 'lt',
       value: [110.094463, 39.536514],
     },

+ 2 - 1
src/views/vent/home/clique/components/dialog-modal.vue

@@ -81,7 +81,8 @@
   import { SvgIcon } from '/@/components/Icon';
   import { getAssetURL } from '/@/utils/ui';
 
-  let modalTitle = ref('榆家梁矿');
+  // let modalTitle = ref('榆家梁矿');
+  let modalTitle = ref('yjl');
   let modalCard = reactive([
     { imgSrc: getAssetURL('company/home/hang.png'), label: '巷道长度', value: 12300 },
     { imgSrc: getAssetURL('company/home/people.png'), label: '人员总数', value: 23 },

+ 6 - 6
src/views/vent/home/clique/components/file-share.vue

@@ -40,7 +40,7 @@
   let fileTitle = ref('文件共享中心');
   let fileData = reactive([
     {
-      title: '大柳塔井',
+      title: 'XXX井',
       imgSrc: getAssetURL('company/file/file2.png'),
       imgSrc1: getAssetURL('company/file/file1.png'),
       label: '文件总数',
@@ -49,7 +49,7 @@
       value1: 10,
     },
     {
-      title: '大柳塔井',
+      title: 'XXX',
       imgSrc: getAssetURL('company/file/file2.png'),
       imgSrc1: getAssetURL('company/file/file1.png'),
       label: '文件总数',
@@ -58,7 +58,7 @@
       value1: 10,
     },
     {
-      title: '大柳塔井',
+      title: 'XXX',
       imgSrc: getAssetURL('company/file/file2.png'),
       imgSrc1: getAssetURL('company/file/file1.png'),
       label: '文件总数',
@@ -67,7 +67,7 @@
       value1: 10,
     },
     {
-      title: '大柳塔井',
+      title: 'XXX',
       imgSrc: getAssetURL('company/file/file2.png'),
       imgSrc1: getAssetURL('company/file/file1.png'),
       label: '文件总数',
@@ -76,7 +76,7 @@
       value1: 10,
     },
     {
-      title: '大柳塔井',
+      title: 'XXX',
       imgSrc: getAssetURL('company/file/file2.png'),
       imgSrc1: getAssetURL('company/file/file1.png'),
       label: '文件总数',
@@ -85,7 +85,7 @@
       value1: 10,
     },
     {
-      title: '大柳塔井',
+      title: 'XXX',
       imgSrc: getAssetURL('company/file/file2.png'),
       imgSrc1: getAssetURL('company/file/file1.png'),
       label: '文件总数',

+ 28 - 14
src/views/vent/home/clique/components/icon-light.vue

@@ -18,20 +18,34 @@
   const unselectBgPath = getAssetURL('company/home/unselect-bg.png');
   const selectBgPath = getAssetURL('company/home/select-bg.png');
   let pointList = ref<any[]>([
-    { code: 'liuTa', imgSrc: unselectBgPath, label: '柳塔矿', leftV: '327px', topV: '40px', textColor: '#fff' },
-    { code: 'cunCaoErTa', imgSrc: unselectBgPath, label: '寸草塔二矿', leftV: '291px', topV: '69px', textColor: '#fff' },
-    { code: 'buErTaiTa', imgSrc: selectBgPath, label: '布尔台矿', leftV: '286px', topV: '97px', textColor: 'rgba(255, 231, 83,.9)' },
-    { code: 'wuLunTa', imgSrc: unselectBgPath, label: '乌兰木伦矿', leftV: '327px', topV: '115px', textColor: '#fff' },
-    { code: 'cunCaoTa', imgSrc: selectBgPath, label: '寸草塔矿', leftV: '346px', topV: '132px', textColor: 'rgba(255, 231, 83,.9)' },
-    { code: 'shiKanTa', imgSrc: unselectBgPath, label: '石坎台矿', leftV: '373px', topV: '149px', textColor: '#fff' },
-    { code: 'buLieTa', imgSrc: selectBgPath, label: '补连塔矿', leftV: '408px', topV: '184px', textColor: 'rgba(255, 231, 83,.9)' },
-    { code: 'haLaGouTa', imgSrc: unselectBgPath, label: '哈拉沟矿', leftV: '445px', topV: '214px', textColor: '#fff' },
-    { code: 'shangWanTa', imgSrc: selectBgPath, label: '上湾矿', leftV: '439px', topV: '244px', textColor: 'rgba(255, 231, 83,.9)' },
-    { code: 'huoJiTuTa', imgSrc: unselectBgPath, label: '活鸡兔井', leftV: '398px', topV: '265px', textColor: '#fff' },
-    { code: 'daLiuTa', imgSrc: unselectBgPath, label: '大柳塔矿', leftV: '492px', topV: '260px', textColor: '#fff' },
-    { code: 'jinJieTa', imgSrc: selectBgPath, label: '锦界矿', leftV: '565px', topV: '413px', textColor: 'rgba(255, 231, 83,.9)' },
-    { code: 'yuJiaTa', imgSrc: unselectBgPath, label: '榆家梁矿', leftV: '669px', topV: '308px', textColor: '#fff' },
-    { code: 'baoDeTa', imgSrc: selectBgPath, label: '宝德矿', leftV: '862px', topV: '340px', textColor: 'rgba(255, 231, 83,.9)' },
+    // { code: 'liuTa', imgSrc: unselectBgPath, label: '柳塔矿', leftV: '327px', topV: '40px', textColor: '#fff' },
+    // { code: 'cunCaoErTa', imgSrc: unselectBgPath, label: '寸草塔二矿', leftV: '291px', topV: '69px', textColor: '#fff' },
+    // { code: 'buErTaiTa', imgSrc: selectBgPath, label: '布尔台矿', leftV: '286px', topV: '97px', textColor: 'rgba(255, 231, 83,.9)' },
+    // { code: 'wuLunTa', imgSrc: unselectBgPath, label: '乌兰木伦矿', leftV: '327px', topV: '115px', textColor: '#fff' },
+    // { code: 'cunCaoTa', imgSrc: selectBgPath, label: '寸草塔矿', leftV: '346px', topV: '132px', textColor: 'rgba(255, 231, 83,.9)' },
+    // { code: 'shiKanTa', imgSrc: unselectBgPath, label: '石坎台矿', leftV: '373px', topV: '149px', textColor: '#fff' },
+    // { code: 'buLieTa', imgSrc: selectBgPath, label: '补连塔矿', leftV: '408px', topV: '184px', textColor: 'rgba(255, 231, 83,.9)' },
+    // { code: 'haLaGouTa', imgSrc: unselectBgPath, label: '哈拉沟矿', leftV: '445px', topV: '214px', textColor: '#fff' },
+    // { code: 'shangWanTa', imgSrc: selectBgPath, label: '上湾矿', leftV: '439px', topV: '244px', textColor: 'rgba(255, 231, 83,.9)' },
+    // { code: 'huoJiTuTa', imgSrc: unselectBgPath, label: '活鸡兔井', leftV: '398px', topV: '265px', textColor: '#fff' },
+    // { code: 'daLiuTa', imgSrc: unselectBgPath, label: '大柳塔矿', leftV: '492px', topV: '260px', textColor: '#fff' },
+    // { code: 'jinJieTa', imgSrc: selectBgPath, label: '锦界矿', leftV: '565px', topV: '413px', textColor: 'rgba(255, 231, 83,.9)' },
+    // { code: 'yuJiaTa', imgSrc: unselectBgPath, label: '榆家梁矿', leftV: '669px', topV: '308px', textColor: '#fff' },
+    // { code: 'baoDeTa', imgSrc: selectBgPath, label: '宝德矿', leftV: '862px', topV: '340px', textColor: 'rgba(255, 231, 83,.9)' },
+    { code: 'liuTa', imgSrc: unselectBgPath, label: 'XXX', leftV: '327px', topV: '40px', textColor: '#fff' },
+    { code: 'cunCaoErTa', imgSrc: unselectBgPath, label: 'XXX', leftV: '291px', topV: '69px', textColor: '#fff' },
+    { code: 'buErTaiTa', imgSrc: selectBgPath, label: 'XXX', leftV: '286px', topV: '97px', textColor: 'rgba(255, 231, 83,.9)' },
+    { code: 'wuLunTa', imgSrc: unselectBgPath, label: 'XXX', leftV: '327px', topV: '115px', textColor: '#fff' },
+    { code: 'cunCaoTa', imgSrc: selectBgPath, label: 'XXX', leftV: '346px', topV: '132px', textColor: 'rgba(255, 231, 83,.9)' },
+    { code: 'shiKanTa', imgSrc: unselectBgPath, label: 'XXX', leftV: '373px', topV: '149px', textColor: '#fff' },
+    { code: 'buLieTa', imgSrc: selectBgPath, label: 'XXX', leftV: '408px', topV: '184px', textColor: 'rgba(255, 231, 83,.9)' },
+    { code: 'haLaGouTa', imgSrc: unselectBgPath, label: 'XXX', leftV: '445px', topV: '214px', textColor: '#fff' },
+    { code: 'shangWanTa', imgSrc: selectBgPath, label: 'XXX', leftV: '439px', topV: '244px', textColor: 'rgba(255, 231, 83,.9)' },
+    { code: 'huoJiTuTa', imgSrc: unselectBgPath, label: 'XXX', leftV: '398px', topV: '265px', textColor: '#fff' },
+    { code: 'daLiuTa', imgSrc: unselectBgPath, label: 'XXX', leftV: '492px', topV: '260px', textColor: '#fff' },
+    { code: 'jinJieTa', imgSrc: selectBgPath, label: 'XXX', leftV: '565px', topV: '413px', textColor: 'rgba(255, 231, 83,.9)' },
+    { code: 'yuJiaTa', imgSrc: unselectBgPath, label: 'XXX', leftV: '669px', topV: '308px', textColor: '#fff' },
+    { code: 'baoDeTa', imgSrc: selectBgPath, label: 'XXX', leftV: '862px', topV: '340px', textColor: 'rgba(255, 231, 83,.9)' },
   ]);
 
   function openModal(code, leftV, topV) {

+ 64 - 71
src/views/vent/home/clique/components/mine-wind.vue

@@ -3,106 +3,99 @@
     <div class="mine-title">{{ mineTitle }}</div>
     <div class="mine-content">
       <div class="content-label">
-        <div class="label-t" v-for="(ite,ind) in labelList" :key="ind">{{ ite.name }}</div>
+        <div class="label-t" v-for="(ite, ind) in labelList" :key="ind">{{ ite.name }}</div>
       </div>
       <div class="content-text">
-        <div class="text" v-for="(item,index) in mineData" :key="index">
+        <div class="text" v-for="(item, index) in mineData" :key="index">
           <span>{{ item.name }}</span>
           <span>{{ item.jf }}</span>
           <span>{{ item.hf }}</span>
           <span>{{ item.xf }}</span>
-          </div>
+        </div>
       </div>
     </div>
   </div>
 </template>
 <script lang="ts" setup>
-import { ref,reactive } from 'vue'
-
-let mineTitle = ref('矿井通风状态监测')
-let labelList=reactive([
-  {name:'矿井名称'},
-  {name:'总进风量'},
-  {name:'总回风量'},
-  {name:'总需风量'}
-])
-let mineData=reactive([
-  {name:'大柳塔井', jf:10215, hf:10198, xf:9810},
-  {name:'大柳塔井', jf:10215, hf:10198, xf:9810},
-  {name:'大柳塔井', jf:10215, hf:10198, xf:9810},
-  {name:'大柳塔井', jf:10215, hf:10198, xf:9810},
-  {name:'大柳塔井', jf:10215, hf:10198, xf:9810},
-  {name:'大柳塔井', jf:10215, hf:10198, xf:9810},
-  {name:'大柳塔井', jf:10215, hf:10198, xf:9810},
-])
+  import { ref, reactive } from 'vue';
 
+  let mineTitle = ref('矿井通风状态监测');
+  let labelList = reactive([{ name: '矿井名称' }, { name: '总进风量' }, { name: '总回风量' }, { name: '总需风量' }]);
+  let mineData = reactive([
+    { name: 'XXX', jf: 10215, hf: 10198, xf: 9810 },
+    { name: 'XXX', jf: 10215, hf: 10198, xf: 9810 },
+    { name: 'XXX', jf: 10215, hf: 10198, xf: 9810 },
+    { name: 'XXX', jf: 10215, hf: 10198, xf: 9810 },
+    { name: 'XXX', jf: 10215, hf: 10198, xf: 9810 },
+    { name: 'XXX', jf: 10215, hf: 10198, xf: 9810 },
+    { name: 'XXX', jf: 10215, hf: 10198, xf: 9810 },
+  ]);
 </script>
 <style lang="less" scoped>
-@font-face {
-  font-family: 'douyuFont';
-  src: url('../../../../assets/font/douyuFont.otf');
-}
-
-.mineWind {
-  position: relative;
-  width: 100%;
-  height: 100%;
-
-  .mine-title {
-    position: absolute;
-    left: 50px;
-    top: 12px;
-    color: #fff;
+  @font-face {
     font-family: 'douyuFont';
-    font-size: 14px;
+    src: url('../../../../assets/font/douyuFont.otf');
   }
 
-  .mine-content {
+  .mineWind {
+    position: relative;
+    width: 100%;
     height: 100%;
-    padding: 62px 0px 28px 0px;
-    box-sizing: border-box;
-    display: flex;
-    flex-direction: column;
-    align-items: center;
 
-    .content-label {
-      width: 366px;
-      height: 32px;
-      display: flex;
-      justify-content: space-around;
-      align-items: center;
-      background: url('../../../../../assets/images/company/content-label.png') no-repeat;
-      .label-t{
-        width: 25%;
-        color: #3df6ff;
-        text-align: center;
-        font-size: 14px;
-      }
+    .mine-title {
+      position: absolute;
+      left: 50px;
+      top: 12px;
+      color: #fff;
+      font-family: 'douyuFont';
+      font-size: 14px;
     }
 
-    .content-text {
-      height: calc(100% - 32px);
-      width: 378px;
+    .mine-content {
+      height: 100%;
+      padding: 62px 0px 28px 0px;
+      box-sizing: border-box;
       display: flex;
       flex-direction: column;
-      justify-content: space-around;
-      overflow-y: auto;
-      .text{
-        width: 100%;
-        height: 25px;
+      align-items: center;
+
+      .content-label {
+        width: 366px;
+        height: 32px;
         display: flex;
         justify-content: space-around;
-        align-items: flex-start;
-        background: url('../../../../../assets/images/company/content-text.png') no-repeat;
-        color: #fff;
-        span{
-          display: inline-block;
+        align-items: center;
+        background: url('../../../../../assets/images/company/content-label.png') no-repeat;
+        .label-t {
           width: 25%;
+          color: #3df6ff;
           text-align: center;
+          font-size: 14px;
+        }
+      }
+
+      .content-text {
+        height: calc(100% - 32px);
+        width: 378px;
+        display: flex;
+        flex-direction: column;
+        justify-content: space-around;
+        overflow-y: auto;
+        .text {
+          width: 100%;
+          height: 25px;
+          display: flex;
+          justify-content: space-around;
+          align-items: flex-start;
+          background: url('../../../../../assets/images/company/content-text.png') no-repeat;
+          color: #fff;
+          span {
+            display: inline-block;
+            width: 25%;
+            text-align: center;
+          }
         }
       }
     }
   }
-}
 </style>
-  

+ 2 - 1
src/views/vent/home/clique/components/wind-road.vue

@@ -32,7 +32,8 @@
     value: '1737公里',
   });
 
-  let xData = reactive(['宝德', '榆家梁', '锦界', '大柳塔', '哈拉沟']);
+  // let xData = reactive(['宝德', '榆家梁', '锦界', '大柳塔', '哈拉沟']);
+  let xData = reactive(['bd', 'yjl', 'jj', 'dlt', 'hlg']);
   var yData = reactive([200, 100, 200, 200, 100]);
   var maxData = reactive([300, 200, 300, 300, 200]);
 

+ 2 - 1
src/views/vent/home/clique/index.vue

@@ -58,7 +58,8 @@
   import iconLight from './components/icon-light.vue';
   import dialogModal from './components/dialog-modal.vue';
   const dialogModalRef = ref();
-  let mainTitle = ref('国家能源神东煤炭集团');
+  // let mainTitle = ref('国家能源神东煤炭集团');
+  let mainTitle = ref('XXXX集团');
   const isShowDialog = ref(false);
   function showDetail(code, leftV, topV) {
     if (code) {

+ 1 - 1
src/views/vent/home/clique/index1.vue

@@ -57,7 +57,7 @@
   import iconLight from './components/icon-light.vue';
   // import mapComponent from './components/3Dmap/index.vue';
 
-  let mainTitle = ref('国家能源神东煤炭集团');
+  let mainTitle = ref('XXXX集团');
   function showDetail(code) {
     if (code) {
       // isShowDialog.value = true;

+ 13 - 13
src/views/vent/home/colliery/clique.data.ts

@@ -21,67 +21,67 @@ export const airVolumeMonitorKey = [
 ];
 export const airVolumeMonitor = [
   {
-    name: '大柳塔',
+    name: 'XXX',
     jin: 10215,
     hui: 10215,
     xufeng: 10215,
   },
   {
-    name: '大柳塔',
+    name: 'XXX',
     jin: 10215,
     hui: 10215,
     xufeng: 10215,
   },
   {
-    name: '大柳塔',
+    name: 'XXX',
     jin: 10215,
     hui: 10215,
     xufeng: 10215,
   },
   {
-    name: '大柳塔',
+    name: 'XXX',
     jin: 10215,
     hui: 10215,
     xufeng: 10215,
   },
   {
-    name: '大柳塔',
+    name: 'XXX',
     jin: 10215,
     hui: 10215,
     xufeng: 10215,
   },
   {
-    name: '大柳塔',
+    name: 'XXX',
     jin: 10215,
     hui: 10215,
     xufeng: 10215,
   },
   {
-    name: '大柳塔',
+    name: 'XXX',
     jin: 10215,
     hui: 10215,
     xufeng: 10215,
   },
   {
-    name: '大柳塔',
+    name: 'XXX',
     jin: 10215,
     hui: 10215,
     xufeng: 10215,
   },
   {
-    name: '大柳塔',
+    name: 'XXX',
     jin: 10215,
     hui: 10215,
     xufeng: 10215,
   },
   {
-    name: '大柳塔',
+    name: 'XXX',
     jin: 10215,
     hui: 10215,
     xufeng: 10215,
   },
   {
-    name: '大柳塔1111',
+    name: 'XXX',
     jin: 10215,
     hui: 10215,
     xufeng: 10215,
@@ -109,7 +109,7 @@ export function getDate(workData) {
         hui: '0',
         history: [],
         deviceName: workTypeList[j]['deviceName'],
-        deviceID:workTypeList[j]['deviceID'],
+        deviceID: workTypeList[j]['deviceID'],
         deviceType: 'sys_surface_caimei',
       };
       itemData['jin'] = (1042 + (Math.random() * 2 - 1 * 50)).toFixed(2);
@@ -122,7 +122,7 @@ export function getDate(workData) {
           hui: (1082 + (Math.random() * 2 - 1 * 50)).toFixed(2),
           time: getTime((i + 1) * 5),
           deviceName: workTypeList[j]['deviceName'],
-          deviceID:workTypeList[j]['deviceID'],
+          deviceID: workTypeList[j]['deviceID'],
           deviceType: 'sys_surface_caimei',
         };
         itemData['history'].unshift(item);

+ 319 - 309
src/views/vent/home/colliery/components/fan-monitor.vue

@@ -5,8 +5,13 @@
       <i class="icon-search">
         <SvgIcon class="icon" size="14" name="toggle" />
       </i>
-      <a-select v-model:value="searchValue" style="width: 180px; margin-right: 10px" :options="fanTypeList"
-        aria-placeholder="请选择" @change="changeSelect" />
+      <a-select
+        v-model:value="searchValue"
+        style="width: 180px; margin-right: 10px"
+        :options="fanTypeList"
+        aria-placeholder="请选择"
+        @change="changeSelect"
+      />
       <div class="status-yx">
         <template v-if="!isShowGif">
           <div class="now-name">
@@ -18,373 +23,378 @@
           <div class="now-status">{{ fjStatus }}</div>
         </template>
         <template v-else>
-          <div class="now-status" style="margin-left: 25px;">正在运行</div>
+          <div class="now-status" style="margin-left: 25px">正在运行</div>
         </template>
       </div>
     </div>
     <div class="fan-contents">
       <div v-if="!isShowGif" class="fan" ref="fan"></div>
-      <img v-else src="@/assets/images/gif/fanlocal.gif" style="height: 100%; width: 100%; " />
+      <img v-else src="@/assets/images/gif/fanlocal.gif" style="height: 100%; width: 100%" />
     </div>
   </div>
 </template>
 
 <script lang="ts" setup>
-import { ref, reactive, onMounted, nextTick, defineProps, watch } from 'vue';
-import { SvgIcon } from '/@/components/Icon';
-import * as echarts from 'echarts';
-import { useGo } from '/@/hooks/web/usePage';
-let props = defineProps({
-  fandata: Array,
-});
-const emit = defineEmits(['goDetail']);
-const go = useGo();
-let searchValue = ref('');
-let fanList = reactive<any[]>([]);
-let fanTypeList = reactive<any[]>([]); //下拉列表
-let fjStatus = ref(''); //运行风机
-const isShowGif = ref(false)
-//获取dom节点
-let fan = ref<any>();
-//echart图表数据
-let echartData = reactive<any>({
-  xdata: 0,
-  ydata: 0,
-});
-//跳转详情
-function getDetail() {
-  emit('goDetail', 'fanLocal');
-}
-//选项切换
-function changeSelect(val) {
-  searchValue.value = val
-  const selectData = fanList.find((item) => item['deviceID'] == val)
-  if (selectData) {
-    fjStatus.value = selectData.readData.Fan1StartStatus == '1' ? '1号风机' : selectData.readData.Fan2StartStatus == '1' ? '2号风机' : '';
-    echartData.xdata = selectData.readData.windQuantity1;
-    echartData.ydata = selectData.readData.windQuantity2;
-    if (echartData.xdata && echartData.ydata) {
-      getOption();
-    } else {
-      isShowGif.value = true
+  import { ref, reactive, onMounted, nextTick, defineProps, watch } from 'vue';
+  import { SvgIcon } from '/@/components/Icon';
+  import * as echarts from 'echarts';
+  import { useGo } from '/@/hooks/web/usePage';
+  let props = defineProps({
+    fandata: Array,
+  });
+  const emit = defineEmits(['goDetail']);
+  const go = useGo();
+  let searchValue = ref('');
+  let fanList = reactive<any[]>([]);
+  let fanTypeList = reactive<any[]>([]); //下拉列表
+  let fjStatus = ref(''); //运行风机
+  const isShowGif = ref(false);
+  //获取dom节点
+  let fan = ref<any>();
+  //echart图表数据
+  let echartData = reactive<any>({
+    xdata: 0,
+    ydata: 0,
+  });
+  //跳转详情
+  function getDetail() {
+    emit('goDetail', 'fanLocal');
+  }
+  //选项切换
+  function changeSelect(val) {
+    searchValue.value = val;
+    const selectData = fanList.find((item) => item['deviceID'] == val);
+    if (selectData) {
+      fjStatus.value =
+        selectData.readData.Fan1StartStatus && selectData.readData.Fan1StartStatus == '1'
+          ? '1号风机'
+          : selectData.readData.Fan2StartStatus && selectData.readData.Fan2StartStatus == '1'
+          ? '2号风机'
+          : '--';
+      echartData.xdata = selectData.readData.windQuantity1;
+      echartData.ydata = selectData.readData.windQuantity2;
+      if (echartData.xdata && echartData.ydata) {
+        getOption();
+      } else {
+        isShowGif.value = true;
+      }
     }
   }
-}
-function getOption() {
-  nextTick(() => {
-    const myChart = echarts.init(fan.value);
-    let option = {
-      grid: {
-        top: '20%',
-        left: '7%',
-        bottom: '14%',
-        right: '7%',
-        containLabel: true,
-      },
-      xAxis: [
-        {
-          type: 'category',
-          data: ['吸风量', '供风量'],
-          axisTick: {
-            alignWithLabel: true,
-          },
-          nameTextStyle: {
-            color: 'red',
-          },
-          axisLine: {
-            //坐标轴轴线相关设置。数学上的x轴
-            show: true,
-            lineStyle: {
-              color: 'rgba(62, 103, 164)',
-            },
-          },
-          axisLabel: {
-            //坐标轴刻度标签的相关设置
-            textStyle: {
-              color: '#b3b8cc',
-              padding: 10,
-              fontSize: 14,
+  function getOption() {
+    nextTick(() => {
+      const myChart = echarts.init(fan.value);
+      let option = {
+        grid: {
+          top: '20%',
+          left: '7%',
+          bottom: '14%',
+          right: '7%',
+          containLabel: true,
+        },
+        xAxis: [
+          {
+            type: 'category',
+            data: ['吸风量', '供风量'],
+            axisTick: {
+              alignWithLabel: true,
             },
-            formatter: function (data) {
-              return data;
+            nameTextStyle: {
+              color: 'red',
             },
-          },
-        },
-      ],
-      yAxis: [
-        {
-          type: 'value',
-          min: 0,
-          name: '(m³/min)',
-          nameTextStyle: {
-            color: '#b3b8cc',
-            fontSize: 12,
-            padding: 0,
-          },
-          splitLine: {
-            show: false,
-            lineStyle: {
-              color: 'rgba(62, 103, 164,.4)',
+            axisLine: {
+              //坐标轴轴线相关设置。数学上的x轴
+              show: true,
+              lineStyle: {
+                color: 'rgba(62, 103, 164)',
+              },
             },
-          },
-          axisLine: {
-            show: true,
-            lineStyle: {
-              color: 'rgba(62, 103, 164)',
+            axisLabel: {
+              //坐标轴刻度标签的相关设置
+              textStyle: {
+                color: '#b3b8cc',
+                padding: 10,
+                fontSize: 14,
+              },
+              formatter: function (data) {
+                return data;
+              },
             },
           },
-
-          axisLabel: {
-            show: true,
-            textStyle: {
+        ],
+        yAxis: [
+          {
+            type: 'value',
+            min: 0,
+            name: '(m³/min)',
+            nameTextStyle: {
               color: '#b3b8cc',
+              fontSize: 12,
               padding: 0,
-              fontSize: 14,
             },
-            formatter: function (value) {
-              if (value === 0) {
-                return value;
-              }
-              return value;
-            },
-          },
-          axisTick: {
-            show: false,
-          },
-        },
-      ],
-      series: [
-        {
-          name: '',
-          type: 'pictorialBar',
-          symbolSize: [60, 16],
-          symbolOffset: [0, -10],
-          symbolPosition: 'end',
-          z: 12,
-          //"barWidth": "20",
-          label: {
-            normal: {
-              show: true,
-              position: 'top',
-              formatter: '{c}',
-              color: '#fff',
-            },
-          },
-          data: [
-            {
-              value: echartData.xdata,
-              itemStyle: {
-                color: '#59cb42',
+            splitLine: {
+              show: false,
+              lineStyle: {
+                color: 'rgba(62, 103, 164,.4)',
               },
             },
-            {
-              value: echartData.ydata,
-              itemStyle: {
-                color: '#3cefff',
+            axisLine: {
+              show: true,
+              lineStyle: {
+                color: 'rgba(62, 103, 164)',
               },
             },
-          ],
-        },
-        {
-          name: '',
-          type: 'pictorialBar',
-          symbolSize: [60, 16],
-          symbolOffset: [0, 10],
-          // "barWidth": "20",
-          z: 12,
-          data: [
-            {
-              value: 100,
-              itemStyle: {
-                color: '#59cb42',
+
+            axisLabel: {
+              show: true,
+              textStyle: {
+                color: '#b3b8cc',
+                padding: 0,
+                fontSize: 14,
               },
-            },
-            {
-              value: 100,
-              itemStyle: {
-                color: '#3cefff',
+              formatter: function (value) {
+                if (value === 0) {
+                  return value;
+                }
+                return value;
               },
             },
-          ],
-        },
-        {
-          name: '',
-          type: 'pictorialBar',
-          symbolSize: [90, 30],
-          symbolOffset: [0, 20],
-          z: 10,
-          itemStyle: {
-            normal: {
-              color: 'transparent',
-              borderColor: '#14b1eb',
-              borderType: 'dashed',
-              borderWidth: 5,
+            axisTick: {
+              show: false,
             },
           },
-          data: [100, 100],
-        },
-        {
-          type: 'bar',
-          itemStyle: {
-            normal: {
-              //color: '#14b1eb',
-              opacity: 0.7,
+        ],
+        series: [
+          {
+            name: '',
+            type: 'pictorialBar',
+            symbolSize: [60, 16],
+            symbolOffset: [0, -10],
+            symbolPosition: 'end',
+            z: 12,
+            //"barWidth": "20",
+            label: {
+              normal: {
+                show: true,
+                position: 'top',
+                formatter: '{c}',
+                color: '#fff',
+              },
             },
+            data: [
+              {
+                value: echartData.xdata,
+                itemStyle: {
+                  color: '#59cb42',
+                },
+              },
+              {
+                value: echartData.ydata,
+                itemStyle: {
+                  color: '#3cefff',
+                },
+              },
+            ],
           },
-          //silent: true,
-          barWidth: '60',
-          //barGap: '-100%', // Make series be overlap
-          data: [
-            {
-              value: echartData.xdata,
-              itemStyle: {
-                color: '#59cb42',
+          {
+            name: '',
+            type: 'pictorialBar',
+            symbolSize: [60, 16],
+            symbolOffset: [0, 10],
+            // "barWidth": "20",
+            z: 12,
+            data: [
+              {
+                value: 100,
+                itemStyle: {
+                  color: '#59cb42',
+                },
+              },
+              {
+                value: 100,
+                itemStyle: {
+                  color: '#3cefff',
+                },
+              },
+            ],
+          },
+          {
+            name: '',
+            type: 'pictorialBar',
+            symbolSize: [90, 30],
+            symbolOffset: [0, 20],
+            z: 10,
+            itemStyle: {
+              normal: {
+                color: 'transparent',
+                borderColor: '#14b1eb',
+                borderType: 'dashed',
+                borderWidth: 5,
               },
             },
-            {
-              value: echartData.ydata,
-              itemStyle: {
-                color: '#3cefff',
+            data: [100, 100],
+          },
+          {
+            type: 'bar',
+            itemStyle: {
+              normal: {
+                //color: '#14b1eb',
+                opacity: 0.7,
               },
             },
-          ],
-          markLine: {
-            symbol: 'none',
-            label: {
-              position: 'middle',
-              formatter: '{b}',
+            //silent: true,
+            barWidth: '60',
+            //barGap: '-100%', // Make series be overlap
+            data: [
+              {
+                value: echartData.xdata,
+                itemStyle: {
+                  color: '#59cb42',
+                },
+              },
+              {
+                value: echartData.ydata,
+                itemStyle: {
+                  color: '#3cefff',
+                },
+              },
+            ],
+            markLine: {
+              symbol: 'none',
+              label: {
+                position: 'middle',
+                formatter: '{b}',
+              },
+              // data: [
+              //   {
+              //     name: '目标值',
+              //     yAxis: 40, //res.targetTwo,
+              //     lineStyle: {
+              //       color: 'rgba(0, 119, 233,.8)',
+              //     },
+              //   },
+              // ],
             },
-            // data: [
-            //   {
-            //     name: '目标值',
-            //     yAxis: 40, //res.targetTwo,
-            //     lineStyle: {
-            //       color: 'rgba(0, 119, 233,.8)',
-            //     },
-            //   },
-            // ],
           },
-        },
-      ],
-    };
-    myChart.setOption(option);
-    window.onresize = function () {
-      myChart.resize();
-    };
-  });
-}
+        ],
+      };
+      myChart.setOption(option);
+      window.onresize = function () {
+        myChart.resize();
+      };
+    });
+  }
 
-watch(
-  () => props.fandata,
-  (val) => {
-    fanList = val[0];
-    fanTypeList.length = 0;
-    fanList.forEach((el) => {
-      fanTypeList.push({
-        label: el.strinstallpos,
-        value: el.deviceID,
+  watch(
+    () => props.fandata,
+    (val) => {
+      fanList = val[0];
+      fanTypeList.length = 0;
+      fanList.forEach((el) => {
+        fanTypeList.push({
+          label: el.strinstallpos,
+          value: el.deviceID,
+        });
       });
-    });
-    if (searchValue.value) {
-      changeSelect(searchValue.value);
-    } else {
-      searchValue.value = fanTypeList[0].value;
-      changeSelect(searchValue.value);
+      if (searchValue.value) {
+        changeSelect(searchValue.value);
+      } else {
+        searchValue.value = fanTypeList[0].value;
+        changeSelect(searchValue.value);
+      }
+    },
+    {
+      deep: true,
     }
-  },
-  {
-    deep: true,
-  }
-);
+  );
 
-onMounted(() => { });
+  onMounted(() => {});
 </script>
 
 <style lang="less" scoped>
-@font-face {
-  font-family: 'douyuFont';
-  src: url('../../../../../assets/font/douyuFont.otf');
-}
-
-.fanMonitor {
-  width: 100%;
-  height: 100%;
-  position: relative;
-
-  .title-top {
-    position: absolute;
-    top: 9px;
-    left: 46px;
-    color: #fff;
-    font-size: 16px;
+  @font-face {
     font-family: 'douyuFont';
-    cursor: pointer;
-
-    &:hover {
-      color: #66ffff;
-    }
+    src: url('../../../../../assets/font/douyuFont.otf');
   }
 
-  .toggle-search {
-    position: absolute;
-    left: 9px;
-    top: 37px;
-    display: flex;
+  .fanMonitor {
+    width: 100%;
+    height: 100%;
+    position: relative;
 
-    .icon-search {
+    .title-top {
       position: absolute;
-      top: 50%;
-      left: 5px;
-      transform: translate(0%, -50%);
+      top: 9px;
+      left: 46px;
+      color: #fff;
+      font-size: 16px;
+      font-family: 'douyuFont';
+      cursor: pointer;
+
+      &:hover {
+        color: #66ffff;
+      }
     }
 
-    .status-yx {
-      height: 30px;
-      width: 180px;
-      background-color: rgba(8, 148, 255, 0.3);
-      border: 1px solid #1d80da;
+    .toggle-search {
+      position: absolute;
+      left: 9px;
+      top: 37px;
       display: flex;
-      justify-content: space-between;
-      align-items: center;
 
-      .now-status {
-        margin-right: 5px;
-        padding-top: 3px;
-        font-family: 'douyuFont';
-        color: #3df6ff;
+      .icon-search {
+        position: absolute;
+        top: 50%;
+        left: 5px;
+        transform: translate(0%, -50%);
       }
-    }
-  }
 
-  .fan-contents {
-    position: absolute;
-    top: 66px;
-    left: 0;
-    height: calc(100% - 66px);
-    width: 100%;
-    padding: 10px;
+      .status-yx {
+        height: 30px;
+        width: 180px;
+        background-color: rgba(8, 148, 255, 0.3);
+        border: 1px solid #1d80da;
+        display: flex;
+        justify-content: space-between;
+        align-items: center;
+
+        .now-status {
+          margin-right: 5px;
+          padding-top: 3px;
+          font-family: 'douyuFont';
+          color: #3df6ff;
+        }
+      }
+    }
 
-    .fan {
+    .fan-contents {
+      position: absolute;
+      top: 66px;
+      left: 0;
+      height: calc(100% - 66px);
       width: 100%;
-      height: 100%;
+      padding: 10px;
+
+      .fan {
+        width: 100%;
+        height: 100%;
+      }
     }
   }
-}
 
-:deep .zxm-select-selector {
-  width: 100%;
-  height: 30px !important;
-  padding: 0 11px 0px 25px !important;
-  background-color: rgba(8, 148, 255, 0.3) !important;
-  border: 1px solid #1d80da !important;
-}
+  :deep .zxm-select-selector {
+    width: 100%;
+    height: 30px !important;
+    padding: 0 11px 0px 25px !important;
+    background-color: rgba(8, 148, 255, 0.3) !important;
+    border: 1px solid #1d80da !important;
+  }
 
-:deep .zxm-select-selection-item {
-  color: #fff !important;
-  line-height: 28px !important;
-}
+  :deep .zxm-select-selection-item {
+    color: #fff !important;
+    line-height: 28px !important;
+  }
 
-:deep .zxm-select-arrow {
-  color: #fff !important;
-}
+  :deep .zxm-select-arrow {
+    color: #fff !important;
+  }
 </style>

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

@@ -5,8 +5,13 @@
       <i class="icon-search">
         <SvgIcon class="icon" size="14" name="toggle" />
       </i>
-      <a-select v-model:value="searchValue" style="width: 180px; margin-right: 10px" :options="mainTypeList"
-        aria-placeholder="请选择" @change="changeSelect" />
+      <a-select
+        v-model:value="searchValue"
+        style="width: 180px; margin-right: 10px"
+        :options="mainTypeList"
+        aria-placeholder="请选择"
+        @change="changeSelect"
+      />
       <div class="status-yx">
         <div class="now-name">
           <i style="margin: 0px 5px 0px 5px">
@@ -30,427 +35,430 @@
 </template>
 
 <script lang="ts" setup>
-import { ref, reactive, onMounted, nextTick, defineProps, watch } from 'vue';
-import { SvgIcon } from '/@/components/Icon';
-import * as echarts from 'echarts';
+  import { ref, reactive, onMounted, nextTick, defineProps, watch } from 'vue';
+  import { SvgIcon } from '/@/components/Icon';
+  import * as echarts from 'echarts';
 
-let props = defineProps({
-  maindata: Array,
-});
-const emit = defineEmits(['goDetail']);
-let searchValue = ref('');
-let mainTypeList = reactive<any>([]); //下拉框
-let mainList = reactive<any[]>([]); //主风机列表
-let selectDataObj = ref({
-  dataQ: 0,
-  dataH: 0
-})
-
-//风机启动状态
-let runStatus = ref('')
-//获取dom节点
-let main = ref<any>();
-//echart图表数据
-let echartData = reactive<any>({
-  ydata: [],
-  ydata1: [],
-});
+  let props = defineProps({
+    maindata: Array,
+  });
+  const emit = defineEmits(['goDetail']);
+  let searchValue = ref('');
+  let mainTypeList = reactive<any>([]); //下拉框
+  let mainList = reactive<any[]>([]); //主风机列表
+  let selectDataObj = ref({
+    dataQ: 0,
+    dataH: 0,
+  });
 
+  //风机启动状态
+  let runStatus = ref('');
+  //获取dom节点
+  let main = ref<any>();
+  //echart图表数据
+  let echartData = reactive<any>({
+    ydata: [],
+    ydata1: [],
+  });
 
-//跳转详情
-function getDetail() {
-  emit('goDetail', 'fanMain');
-}
-//选项切换
-function changeSelect(val) {
-  let objParam
-  let objParam1
-  searchValue.value = val;
-  const selectData = mainList.find((item) => item['deviceID'] == val)
-  if (selectData) {
-    runStatus.value = selectData.readData.Fan1StartStatus == '1' ? '主机启动' : selectData.readData.Fan2StartStatus == '1' ? '备机启动' : '--'
-    if (runStatus.value == '主机启动') {
-      objParam = {
-        dataQ: selectData.readData.Fan1m3 || 0,
-        dataH: Math.abs(Number(selectData.readData.Fan1FanPre || 0)),
-      }
-    } else if (runStatus.value == '备机启动') {
-      objParam = {
-        dataQ: selectData.readData.Fan2m3 || 0,
-        dataH: Math.abs(Number(selectData.readData.Fan2FanPre || 0)),
-      }
-    } else {
-      objParam = {
-        dataQ: 0,
-        dataH: 0,
+  //跳转详情
+  function getDetail() {
+    emit('goDetail', 'fanMain');
+  }
+  //选项切换
+  function changeSelect(val) {
+    let objParam;
+    let objParam1;
+    searchValue.value = val;
+    const selectData = mainList.find((item) => item['deviceID'] == val);
+    if (selectData) {
+      runStatus.value =
+        selectData.readData.Fan1StartStatus && selectData.readData.Fan1StartStatus == '1'
+          ? '主机'
+          : selectData.readData.Fan2StartStatus && selectData.readData.Fan2StartStatus == '1'
+          ? '备机'
+          : '--';
+      if (runStatus.value == '主机') {
+        objParam = {
+          dataQ: selectData.readData.Fan1m3 || 0,
+          dataH: Math.abs(Number(selectData.readData.Fan1FanPre || 0)),
+        };
+      } else if (runStatus.value == '备机') {
+        objParam = {
+          dataQ: selectData.readData.Fan2m3 || 0,
+          dataH: Math.abs(Number(selectData.readData.Fan2FanPre || 0)),
+        };
+      } else {
+        objParam = {
+          dataQ: 0,
+          dataH: 0,
+        };
       }
-    }
 
-    //  objParam = {
-    //     dataQ: selectData.readData.Fan1m3 || selectData.readData.Fan2m3 || selectData.readData.m3 || selectData.readData.Fanm3,
-    //     dataH: Math.abs(Number(selectData.readData.Fan1FanPre || selectData.readData.Fan2FanPre || selectData.readData.DataPa || selectData.readData.FanNegative || 0)),
-    //   }
-    objParam1 = {
-      dataha0: -0.056,
-      dataha1: 3.6491,
-      dataha2: 434.4,
-      dataha3: 100,
-      dataha4: -1000,
+      //  objParam = {
+      //     dataQ: selectData.readData.Fan1m3 || selectData.readData.Fan2m3 || selectData.readData.m3 || selectData.readData.Fanm3,
+      //     dataH: Math.abs(Number(selectData.readData.Fan1FanPre || selectData.readData.Fan2FanPre || selectData.readData.DataPa || selectData.readData.FanNegative || 0)),
+      //   }
+      objParam1 = {
+        dataha0: -0.056,
+        dataha1: 3.6491,
+        dataha2: 434.4,
+        dataha3: 100,
+        dataha4: -1000,
+      };
+      setChart(objParam, objParam1);
+      getOption();
     }
-    setChart(objParam, objParam1);
-    getOption();
   }
-}
 
-function getOption() {
-  nextTick(() => {
-    const myChart = echarts.init(main.value);
-    let option = {
-      title: {
-        textStyle: {
-          color: '#3df6ff',
-          fontSize: 14, // 字体颜色
-        },
-        text: '',
-      },
-      grid: {
-        top: '25%',
-        left: '5%',
-        right: '19%',
-        bottom: '8%',
-        containLabel: true,
-      },
-      legend: {
-        // x:'right',
-        top: '5%',
-        textStyle: {
-          color: '#ffffff',
-          fontSize: 14, // 字体颜色
+  function getOption() {
+    nextTick(() => {
+      const myChart = echarts.init(main.value);
+      let option = {
+        title: {
+          textStyle: {
+            color: '#3df6ff',
+            fontSize: 14, // 字体颜色
+          },
+          text: '',
         },
-        data: ['风阻', '负压'],
-      },
-      tooltip: {
-        backgroundColor: 'rgba(0,0,0,0.8)',
-        textStyle: {
-          color: '#3df6ff',
-          fontSize: 14, // 字体颜色
+        grid: {
+          top: '25%',
+          left: '5%',
+          right: '19%',
+          bottom: '8%',
+          containLabel: true,
         },
-        formatter: function (params, ticket, callback) {
-          // var res = '风量' + ' : ' + Math.round(params.data[0] * 60 * 10) / 10 + '(m³/min)<br/>'
-          // res = res + '&emsp;&emsp;&emsp;' + params.data[0] + '(m³/s)<br/>'
-          var res = '风量' + ' : ' + params.data[0] * 60 + '(m³/s)<br/>';
-          res = res + '&emsp;&emsp;&emsp;' + params.data[0].toFixed(2) + '(m³/s)<br/>';
-          res = res + '负压' + ' : ' + params.data[1] + '(Pa)<br/>';
-          return res;
+        legend: {
+          // x:'right',
+          top: '5%',
+          textStyle: {
+            color: '#ffffff',
+            fontSize: 14, // 字体颜色
+          },
+          data: ['风阻', '负压'],
         },
-        trigger: 'item',
-      },
-      color: ['#00bb00', '#ffbb00', '#ff0000', '#0000ff'],
-      xAxis: [
-        {
-          name: '风量\r\n(m³/s)\r\n',
-          nameTextStyle: {
+        tooltip: {
+          backgroundColor: 'rgba(0,0,0,0.8)',
+          textStyle: {
             color: '#3df6ff',
-            fontSize: 12,
+            fontSize: 14, // 字体颜色
           },
-          axisLine: {
-            lineStyle: {
-              color: '#0092d5',
-              width: 1, // 这里是为了突出显示加上的
-            },
+          formatter: function (params, ticket, callback) {
+            // var res = '风量' + ' : ' + Math.round(params.data[0] * 60 * 10) / 10 + '(m³/min)<br/>'
+            // res = res + '&emsp;&emsp;&emsp;' + params.data[0] + '(m³/s)<br/>'
+            var res = '风量' + ' : ' + params.data[0] * 60 + '(m³/s)<br/>';
+            res = res + '&emsp;&emsp;&emsp;' + params.data[0].toFixed(2) + '(m³/s)<br/>';
+            res = res + '负压' + ' : ' + params.data[1] + '(Pa)<br/>';
+            return res;
           },
-          splitLine: {
-            show: false, // 网格线
-            lineStyle: {
-              color: '#006c9d',
-              type: 'dashed', // 设置网格线类型 dotted:虚线   solid:实线
+          trigger: 'item',
+        },
+        color: ['#00bb00', '#ffbb00', '#ff0000', '#0000ff'],
+        xAxis: [
+          {
+            name: '风量\r\n(m³/s)\r\n',
+            nameTextStyle: {
+              color: '#3df6ff',
+              fontSize: 12,
             },
-          },
-          axisLabel: {
-            show: true,
-            position: 'bottom',
-            textStyle: {
-              color: '#b3b8cc',
-              fontSize: 14,
+            axisLine: {
+              lineStyle: {
+                color: '#0092d5',
+                width: 1, // 这里是为了突出显示加上的
+              },
             },
-          },
-          type: 'value',
-          min: 0,
-          max: 400,
-        },
-        {
-          name: '',
-          nameTextStyle: {
-            color: '#3df6ff',
-            fontSize: 12,
-          },
-          axisTick: {
-            show: false,
-          },
-          axisLine: {
-            show: false,
-            lineStyle: {
-              color: '#0092d5',
-              width: 1, // 这里是为了突出显示加上的
+            splitLine: {
+              show: false, // 网格线
+              lineStyle: {
+                color: '#006c9d',
+                type: 'dashed', // 设置网格线类型 dotted:虚线   solid:实线
+              },
             },
-          },
-          splitLine: {
-            show: false, // 网格线
-            lineStyle: {
-              color: '#006c9d',
-              type: 'dashed', // 设置网格线类型 dotted:虚线   solid:实线
+            axisLabel: {
+              show: true,
+              position: 'bottom',
+              textStyle: {
+                color: '#b3b8cc',
+                fontSize: 14,
+              },
             },
+            type: 'value',
+            min: 0,
+            max: 400,
           },
-          axisLabel: {
-            show: false,
-            textStyle: {
-              color: '#b3b8cc',
-              fontSize: 14,
+          {
+            name: '',
+            nameTextStyle: {
+              color: '#3df6ff',
+              fontSize: 12,
             },
-          },
-          type: 'value',
-          min: 0,
-          max: 400,
-        },
-      ],
-      yAxis: [
-        {
-          name: '负压(Pa)',
-          splitNumber: 5,
-          nameTextStyle: {
-            color: '#3df6ff',
-            fontSize: 12,
-          },
-          axisLine: {
-            show: true,
-            lineStyle: {
-              color: '#0092d5',
-              width: 1, // 这里是为了突出显示加上的
+            axisTick: {
+              show: false,
             },
-          },
-          splitLine: {
-            show: true, // 网格线
-            lineStyle: {
-              color: '#006c9d',
-              type: 'dashed', // 设置网格线类型 dotted:虚线   solid:实线
+            axisLine: {
+              show: false,
+              lineStyle: {
+                color: '#0092d5',
+                width: 1, // 这里是为了突出显示加上的
+              },
+            },
+            splitLine: {
+              show: false, // 网格线
+              lineStyle: {
+                color: '#006c9d',
+                type: 'dashed', // 设置网格线类型 dotted:虚线   solid:实线
+              },
             },
+            axisLabel: {
+              show: false,
+              textStyle: {
+                color: '#b3b8cc',
+                fontSize: 14,
+              },
+            },
+            type: 'value',
+            min: 0,
+            max: 400,
           },
-          axisLabel: {
-            show: true,
-            textStyle: {
-              color: '#b3b8cc',
-              fontSize: 14,
+        ],
+        yAxis: [
+          {
+            name: '负压(Pa)',
+            splitNumber: 5,
+            nameTextStyle: {
+              color: '#3df6ff',
+              fontSize: 12,
+            },
+            axisLine: {
+              show: true,
+              lineStyle: {
+                color: '#0092d5',
+                width: 1, // 这里是为了突出显示加上的
+              },
+            },
+            splitLine: {
+              show: true, // 网格线
+              lineStyle: {
+                color: '#006c9d',
+                type: 'dashed', // 设置网格线类型 dotted:虚线   solid:实线
+              },
             },
+            axisLabel: {
+              show: true,
+              textStyle: {
+                color: '#b3b8cc',
+                fontSize: 14,
+              },
+            },
+            type: 'value',
+            min: 0,
+            max: 4000,
           },
-          type: 'value',
-          min: 0,
-          max: 4000,
-        },
-      ],
-      series: [
-        {
-          type: 'effectScatter',
-          symbolSize: 5,
-          // symbolOffset:[1, 1],
-          showEffectOn: 'render',
-          // 涟漪特效相关配置。
-          rippleEffect: {
-            // 波纹的绘制方式,可选 'stroke' 和 'fill'。
-            brushType: 'stroke'
+        ],
+        series: [
+          {
+            type: 'effectScatter',
+            symbolSize: 5,
+            // symbolOffset:[1, 1],
+            showEffectOn: 'render',
+            // 涟漪特效相关配置。
+            rippleEffect: {
+              // 波纹的绘制方式,可选 'stroke' 和 'fill'。
+              brushType: 'stroke',
+            },
+            zlevel: 1,
+            z: 999,
+            itemStyle: {
+              color: '#ff0000',
+            },
+            data: echartData.ydata2,
           },
-          zlevel: 1,
-          z: 999,
-          itemStyle: {
-            color: '#ff0000'
+          {
+            name: '风阻',
+            yAxisIndex: 0,
+            xAxisIndex: 1,
+            type: 'line',
+            smooth: true,
+            animationDuration: 1000,
+            showSymbol: false,
+            data: echartData.ydata,
           },
-          data: echartData.ydata2,
-        },
-        {
-          name: '风阻',
-          yAxisIndex: 0,
-          xAxisIndex: 1,
-          type: 'line',
-          smooth: true,
-          animationDuration: 1000,
-          showSymbol: false,
-          data: echartData.ydata,
-        },
-        {
-          name: '负压',
-          yAxisIndex: 0,
-          xAxisIndex: 1,
-          type: 'line',
-          smooth: true,
-          animationDuration: 1000,
-          showSymbol: false,
+          {
+            name: '负压',
+            yAxisIndex: 0,
+            xAxisIndex: 1,
+            type: 'line',
+            smooth: true,
+            animationDuration: 1000,
+            showSymbol: false,
 
-          data: echartData.ydata1,
-        },
-      ],
-    };
-    myChart.setOption(option);
-    window.onresize = function () {
-      myChart.resize();
-    };
-  });
-}
+            data: echartData.ydata1,
+          },
+        ],
+      };
+      myChart.setOption(option);
+      window.onresize = function () {
+        myChart.resize();
+      };
+    });
+  }
 
-// 设置曲线数据
-function setChart(param, character) {
-  var dataQ = 300;
-  var dataH = character.dataha0 * dataQ * dataQ + character.dataha1 * dataQ + character.dataha2
-  let Q1 = Math.round((parseFloat(param.dataQ) / 60) * 100) / 100;
-  let H1 = parseFloat(param.dataH);
+  // 设置曲线数据
+  function setChart(param, character) {
+    var dataQ = 300;
+    var dataH = character.dataha0 * dataQ * dataQ + character.dataha1 * dataQ + character.dataha2;
+    let Q1 = Math.round((parseFloat(param.dataQ) / 60) * 100) / 100;
+    let H1 = parseFloat(param.dataH);
 
-  selectDataObj.value.dataH = H1
-  selectDataObj.value.dataQ = Q1
+    selectDataObj.value.dataH = H1;
+    selectDataObj.value.dataQ = Q1;
 
-  let q = Q1 - dataQ;
-  let h = H1 - dataH;
-  // 风压特性曲线1
-  let data = [];
-  // 风压特性曲线2
-  let data2 = [];
+    let q = Q1 - dataQ;
+    let h = H1 - dataH;
+    // 风压特性曲线1
+    let data = [];
+    // 风压特性曲线2
+    let data2 = [];
 
-  for (let i = 30; i <= 400; i++) {
-    let x = i;
-    let y4 = character.dataha0 * (x - q) * (x - q) + character.dataha1 * (x - q) + character.dataha2 + h;
-    data2.push([x, y4]);
-  }
-  for (let i = 0; i <= 400; i++) {
-    let x = i;
-    let y = (H1 / Q1 / Q1) * x * x;
-    data.push([x, y]);
+    for (let i = 30; i <= 400; i++) {
+      let x = i;
+      let y4 = character.dataha0 * (x - q) * (x - q) + character.dataha1 * (x - q) + character.dataha2 + h;
+      data2.push([x, y4]);
+    }
+    for (let i = 0; i <= 400; i++) {
+      let x = i;
+      let y = (H1 / Q1 / Q1) * x * x;
+      data.push([x, y]);
+    }
+    echartData.ydata = data;
+    echartData.ydata1 = data2;
+    echartData.ydata2 = [[Q1, H1]];
   }
-  echartData.ydata = data
-  echartData.ydata1 = data2
-  echartData.ydata2 = [[Q1, H1]]
-}
 
-watch(
-  () => props.maindata,
-  (val) => {
-    console.log(val, '主风机数据-----------')
-    mainList = val;
-    mainTypeList.length = 0;
-    mainList.forEach(el => {
-      mainTypeList.push({
-        label: el.strinstallpos,
-        value: el.deviceID,
+  watch(
+    () => props.maindata,
+    (val) => {
+      console.log(val, '主风机数据-----------');
+      mainList = val;
+      mainTypeList.length = 0;
+      mainList.forEach((el) => {
+        mainTypeList.push({
+          label: el.strinstallpos,
+          value: el.deviceID,
+        });
       });
-    })
 
-    if (searchValue.value) {
-      changeSelect(searchValue.value);
-    } else {
-      searchValue.value = mainTypeList[0].value;
-      changeSelect(searchValue.value);
+      if (searchValue.value) {
+        changeSelect(searchValue.value);
+      } else {
+        searchValue.value = mainTypeList[0].value;
+        changeSelect(searchValue.value);
+      }
+    },
+    {
+      deep: true,
     }
-  },
-  {
-    deep: true,
-  }
-);
-onMounted(() => { });
+  );
+  onMounted(() => {});
 </script>
 
 <style lang="less" scoped>
-@font-face {
-  font-family: 'douyuFont';
-  src: url('../../../../../assets/font/douyuFont.otf');
-}
-
-.mainMonitor {
-  width: 100%;
-  height: 100%;
-  position: relative;
-
-  .title-top {
-    position: absolute;
-    top: 9px;
-    left: 46px;
-    color: #fff;
-    font-size: 16px;
+  @font-face {
     font-family: 'douyuFont';
-    cursor: pointer;
-
-    &:hover {
-      color: #66ffff;
-    }
+    src: url('../../../../../assets/font/douyuFont.otf');
   }
 
-  .toggle-search {
-    position: absolute;
-    left: 9px;
-    top: 37px;
-    display: flex;
+  .mainMonitor {
+    width: 100%;
+    height: 100%;
+    position: relative;
 
-    .icon-search {
+    .title-top {
       position: absolute;
-      top: 50%;
-      left: 5px;
-      transform: translate(0%, -50%);
+      top: 9px;
+      left: 46px;
+      color: #fff;
+      font-size: 16px;
+      font-family: 'douyuFont';
+      cursor: pointer;
+
+      &:hover {
+        color: #66ffff;
+      }
     }
 
-    .status-yx {
-      height: 30px;
-      width: 180px;
-      background-color: rgba(8, 148, 255, 0.3);
-      border: 1px solid #1d80da;
+    .toggle-search {
+      position: absolute;
+      left: 9px;
+      top: 37px;
       display: flex;
-      justify-content: space-between;
-      align-items: center;
 
-      .now-status {
-        margin-right: 5px;
-        padding-top: 3px;
-        font-family: 'douyuFont';
-        color: #3df6ff;
+      .icon-search {
+        position: absolute;
+        top: 50%;
+        left: 5px;
+        transform: translate(0%, -50%);
       }
-    }
-  }
 
-  .main-contents {
-    position: relative;
-    top: 66px;
-    left: 0;
-    height: calc(100% - 66px);
-    width: 100%;
-
-    .point-des-box {
-      position: absolute;
-      background: #0d0d0dbd;
-      padding: 5px 8px;
-      border-radius: 10px;
-      border: 1px solid #ffffff;
-      z-index: 999;
-      color: #fff;
-      right: 20px;
-      top: 10px;
+      .status-yx {
+        height: 30px;
+        width: 180px;
+        background-color: rgba(8, 148, 255, 0.3);
+        border: 1px solid #1d80da;
+        display: flex;
+        justify-content: space-between;
+        align-items: center;
 
+        .now-status {
+          margin-right: 5px;
+          padding-top: 3px;
+          font-family: 'douyuFont';
+          color: #3df6ff;
+        }
+      }
     }
 
-    .main {
+    .main-contents {
+      position: relative;
+      top: 66px;
+      left: 0;
+      height: calc(100% - 66px);
       width: 100%;
-      height: 100%;
+
+      .point-des-box {
+        position: absolute;
+        background: #0d0d0dbd;
+        padding: 5px 8px;
+        border-radius: 10px;
+        border: 1px solid #ffffff;
+        z-index: 999;
+        color: #fff;
+        right: 20px;
+        top: 10px;
+      }
+
+      .main {
+        width: 100%;
+        height: 100%;
+      }
     }
   }
-}
 
-:deep .zxm-select-selector {
-  width: 100%;
-  height: 30px !important;
-  padding: 0 11px 0px 25px !important;
-  background-color: rgba(8, 148, 255, 0.3) !important;
-  border: 1px solid #1d80da !important;
-}
+  :deep .zxm-select-selector {
+    width: 100%;
+    height: 30px !important;
+    padding: 0 11px 0px 25px !important;
+    background-color: rgba(8, 148, 255, 0.3) !important;
+    border: 1px solid #1d80da !important;
+  }
 
-:deep .zxm-select-selection-item {
-  color: #fff !important;
-  line-height: 28px !important;
-}
+  :deep .zxm-select-selection-item {
+    color: #fff !important;
+    line-height: 28px !important;
+  }
 
-:deep .zxm-select-arrow {
-  color: #fff !important;
-}
+  :deep .zxm-select-arrow {
+    color: #fff !important;
+  }
 </style>

+ 0 - 1
src/views/vent/home/colliery/index.vue

@@ -298,7 +298,6 @@
   }
 
   onMounted(() => {
-    debugger;
     const currentRouteObj = unref(currentRoute);
     if (currentRouteObj && currentRouteObj['query'] && currentRouteObj['query']['deviceType']) {
       pageType.value = 'model3D';

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

@@ -26,7 +26,6 @@
   async function getVideoAddrs(){
     const result = await list({ pageSize: 10000 })
     if(result && result.records && result.records.length > 0){
-      debugger;
       addrList.value = result.records.map(item => ({ addr: item['addr'].includes('0.0.0.0') ? item['addr'].replace('0.0.0.0', window.location.hostname) :item['addr'] , name: item['name'] }))
     }
   }

+ 413 - 353
src/views/vent/monitorManager/gasPumpMonitor/components/gasPumpHome.vue

@@ -1,7 +1,7 @@
 <template>
-  <div id="FlowSensor" class="FlowSensor-box" style="position: absolute;" v-if="selectData.FlowSensor_InputFlux">
-    <div class="elementContent" >
-      <fourBorderBg >
+  <div id="FlowSensor" class="FlowSensor-box" style="position: absolute">
+    <div class="elementContent" v-if="deviceType == 'pump_under'">
+      <fourBorderBg>
         <template v-for="(item, index) in modelMonitor" :key="index">
           <!-- <div v-if="selectData[item.code] != undefined" class="gas-monitor-row">
           <div class="title">{{ item.title }}</div>
@@ -26,17 +26,29 @@
               <div>抽采泵</div>
             </template>
             <template #container>
-              <div  v-for="key in 2" :key="key">
-                <div class="parameter-title group-parameter-title"><SvgIcon class="icon" size="14" name="pulp-title"/><span>{{ key }}#抽采泵</span></div>
+              <div v-for="key in 2" :key="key">
+                <div class="parameter-title group-parameter-title"
+                  ><SvgIcon class="icon" size="14" name="pulp-title" /><span>{{ key }}#抽采泵</span></div
+                >
                 <div class="input-box">
                   <div v-for="(item, index) in pumpMonitorData" class="input-item" :key="index">
                     <div class="title">{{ item.title }}:</div>
                     <template v-if="item.type !== 'sign'">
-                      <div class="value">{{ selectData && selectData[item.code.replace('CentrifugalPump', `CentrifugalPump${key}`)] ? formatNum(selectData[item.code.replace('CentrifugalPump', `CentrifugalPump${key}`)]) : '-' }}</div>
+                      <div class="value">{{
+                        selectData && selectData[item.code.replace('CentrifugalPump', `CentrifugalPump${key}`)]
+                          ? formatNum(selectData[item.code.replace('CentrifugalPump', `CentrifugalPump${key}`)])
+                          : '-'
+                      }}</div>
                     </template>
                     <template v-else>
                       <div class="value">
-                        <span :class="{ 'signal-round': true, 'signal-round-run': selectData[item.code.replace('CentrifugalPump', `CentrifugalPump${key}`)] == '1', 'signal-round-gry': selectData[item.code.replace('CentrifugalPump', `CentrifugalPump${key}`)] == '0' }"></span>
+                        <span
+                          :class="{
+                            'signal-round': true,
+                            'signal-round-run': selectData[item.code.replace('CentrifugalPump', `CentrifugalPump${key}`)] == '1',
+                            'signal-round-gry': selectData[item.code.replace('CentrifugalPump', `CentrifugalPump${key}`)] == '0',
+                          }"
+                        ></span>
                       </div>
                     </template>
                   </div>
@@ -49,17 +61,29 @@
               <div>注水泵</div>
             </template>
             <template #container>
-              <div  v-for="key in 2" :key="key">
-                <div class="parameter-title group-parameter-title"><SvgIcon class="icon" size="14" name="pulp-title"/><span>{{ key }}#注水泵</span></div>
+              <div v-for="key in 2" :key="key">
+                <div class="parameter-title group-parameter-title"
+                  ><SvgIcon class="icon" size="14" name="pulp-title" /><span>{{ key }}#注水泵</span></div
+                >
                 <div class="input-box">
                   <div v-for="(item, index) in waterPumpData" class="input-item" :key="index">
                     <div class="title">{{ item.title }}:</div>
                     <template v-if="item.type !== 'sign'">
-                      <div class="value">{{ selectData && selectData[item.code.replace('WaterfloodPump', `WaterfloodPump${key}`)] ? formatNum(selectData[item.code.replace('WaterfloodPump', `WaterfloodPump${key}`)]) : '-' }}</div>
+                      <div class="value">{{
+                        selectData && selectData[item.code.replace('WaterfloodPump', `WaterfloodPump${key}`)]
+                          ? formatNum(selectData[item.code.replace('WaterfloodPump', `WaterfloodPump${key}`)])
+                          : '-'
+                      }}</div>
                     </template>
                     <template v-else>
                       <div class="value">
-                        <span :class="{ 'signal-round': true, 'signal-round-run': selectData[item.code.replace('WaterfloodPump', `WaterfloodPump${key}`)], 'signal-round-gry': selectData[item.code.replace('WaterfloodPump', `WaterfloodPump${key}`)] == '0' }"></span>
+                        <span
+                          :class="{
+                            'signal-round': true,
+                            'signal-round-run': selectData[item.code.replace('WaterfloodPump', `WaterfloodPump${key}`)],
+                            'signal-round-gry': selectData[item.code.replace('WaterfloodPump', `WaterfloodPump${key}`)] == '0',
+                          }"
+                        ></span>
                       </div>
                     </template>
                   </div>
@@ -72,17 +96,29 @@
               <div>排水泵</div>
             </template>
             <template #container>
-              <div  v-for="key in 2" :key="key">
-                <div class="parameter-title group-parameter-title"><SvgIcon class="icon" size="14" name="pulp-title"/><span>{{ key }}#排水泵</span></div>
+              <div v-for="key in 2" :key="key">
+                <div class="parameter-title group-parameter-title"
+                  ><SvgIcon class="icon" size="14" name="pulp-title" /><span>{{ key }}#排水泵</span></div
+                >
                 <div class="input-box">
                   <div v-for="(item, index) in dewateringPumpData" class="input-item" :key="index">
                     <div class="title">{{ item.title }}:</div>
                     <template v-if="item.type !== 'sign'">
-                      <div class="value">{{ selectData && selectData[item.code.replace('DewateringPump', `DewateringPump${key}`)] ? formatNum(selectData[item.code.replace('DewateringPump', `DewateringPump${key}`)]) : '-' }}</div>
+                      <div class="value">{{
+                        selectData && selectData[item.code.replace('DewateringPump', `DewateringPump${key}`)]
+                          ? formatNum(selectData[item.code.replace('DewateringPump', `DewateringPump${key}`)])
+                          : '-'
+                      }}</div>
                     </template>
                     <template v-else>
                       <div class="value">
-                        <span :class="{ 'signal-round': true, 'signal-round-run': selectData[item.code.replace('DewateringPump', `DewateringPump${key}`)], 'signal-round-gry': selectData[item.code.replace('DewateringPump', `DewateringPump${key}`)] == '0' }"></span>
+                        <span
+                          :class="{
+                            'signal-round': true,
+                            'signal-round-run': selectData[item.code.replace('DewateringPump', `DewateringPump${key}`)],
+                            'signal-round-gry': selectData[item.code.replace('DewateringPump', `DewateringPump${key}`)] == '0',
+                          }"
+                        ></span>
                       </div>
                     </template>
                   </div>
@@ -106,7 +142,7 @@
                 <a-button class="btn-item" type="default" disabled @click="handlerFn('change')">一键切换</a-button>
               </div>
               <div class="btn-group">
-                <a-button style="width: calc(100% - 16px); padding: 0 8px;" type="primary" @click="openModal">瓦斯泵控制</a-button>
+                <a-button style="width: calc(100% - 16px); padding: 0 8px" type="primary" @click="openModal">瓦斯泵控制</a-button>
               </div>
               <div>
                 <div class="control-item">
@@ -138,10 +174,19 @@
             <div class="">
               <div v-for="key in 2" :key="key">
                 <div class="device-row" v-for="(valveType, index) in valveCtrlType" :key="index">
-                  <div class="state"  >#{{ key }}{{ valveType.title }} </div>
-                  <div class="state" v-for="(state, i) in valveState" :key="i" >                    
-                    <span v-if="state.code == '_CtrlMode'">{{ selectData[`CentrifugalPump${key}_${valveType.code}${state.code}`] == '1' ? '控制' : '-' }}</span>
-                    <span v-else :class="{ 'signal-round': true, 'signal-round-run': selectData[`CentrifugalPump${key}_${valveType.code}${state.code}`] == '1', 'signal-round-gry': selectData[`CentrifugalPump${key}_${valveType.code}${state.code}`] == '0' }"></span>
+                  <div class="state">#{{ key }}{{ valveType.title }} </div>
+                  <div class="state" v-for="(state, i) in valveState" :key="i">
+                    <span v-if="state.code == '_CtrlMode'">{{
+                      selectData[`CentrifugalPump${key}_${valveType.code}${state.code}`] == '1' ? '控制' : '-'
+                    }}</span>
+                    <span
+                      v-else
+                      :class="{
+                        'signal-round': true,
+                        'signal-round-run': selectData[`CentrifugalPump${key}_${valveType.code}${state.code}`] == '1',
+                        'signal-round-gry': selectData[`CentrifugalPump${key}_${valveType.code}${state.code}`] == '0',
+                      }"
+                    ></span>
                   </div>
                 </div>
               </div>
@@ -154,397 +199,412 @@
     </div> -->
     </div>
   </div>
-  <DetailModal @register="register" :device-type="deviceType" :device-id="deviceId"/>
-  <PasswordModal :modal-is-show="passwordModalIsShow" modal-title="密码检验" :modal-type="handlerType" @handle-ok="handleOK"
-      @handle-cancel="handleCancel"/>
+  <DetailModal @register="register" :device-type="deviceType" :device-id="deviceId" />
+  <PasswordModal
+    :modal-is-show="passwordModalIsShow"
+    modal-title="密码检验"
+    :modal-type="handlerType"
+    @handle-ok="handleOK"
+    @handle-cancel="handleCancel"
+  />
 </template>
 
 <script setup lang="ts">
+  import { onBeforeMount, ref, onMounted, onUnmounted, reactive, defineProps, watch, inject, nextTick } from 'vue';
+  import ventBox1 from '/@/components/vent/ventBox1.vue';
+  import { setModelType } from '../gasPump.threejs';
+  import {
+    stateHeader,
+    valveState,
+    pumpMonitorData,
+    waterPumpData,
+    dewateringPumpData,
+    modelMonitor,
+    valveCtrlType,
+    valveCtrl,
+    PumpCtrlItems,
+    pumpCtrl,
+  } from '../gasPump.data';
+  import { list } from '../gasPump.api';
+  import { SvgIcon } from '/@/components/Icon';
+  import { formatNum } from '/@/utils/ventutil';
+  import DetailModal from './DetailModal.vue';
+  import { useModal } from '/@/components/Modal';
+  import { deviceControlApi } from '/@/api/vent/index';
+  import PasswordModal from '../../comment/components/PasswordModal.vue';
+  import { message } from 'ant-design-vue';
+  import fourBorderBg from '/@/components/vent/fourBorderBg.vue';
 
-import { onBeforeMount, ref, onMounted, onUnmounted, reactive, defineProps, watch, inject } from 'vue';
-import ventBox1 from '/@/components/vent/ventBox1.vue'
-import { setModelType } from '../gasPump.threejs';
-import { stateHeader, valveState, pumpMonitorData, waterPumpData, dewateringPumpData, modelMonitor, valveCtrlType, valveCtrl, PumpCtrlItems, pumpCtrl } from '../gasPump.data'
-import { list } from '../gasPump.api';
-import { SvgIcon } from '/@/components/Icon'
-import { formatNum } from '/@/utils/ventutil'
-import DetailModal from './DetailModal.vue'
-import { useModal } from '/@/components/Modal';
-import { deviceControlApi } from '/@/api/vent/index';
-import PasswordModal from '../../comment/components/PasswordModal.vue'
-import { message } from 'ant-design-vue';
-import fourBorderBg from '/@/components/vent/fourBorderBg.vue'
-
-const globalConfig = inject('globalConfig');
-
-const props = defineProps({
-  deviceId: {
-    type: String,
-    require: true
-  },
-  deviceType: {
-    type: String,
-    require: true
-  }
-})
-const [register, { openModal }] = useModal()
-const loading = ref(false);
-const tabActiveKey = ref(1)
-const passwordModalIsShow = ref(false)
-const handlerType = ref('')
-// 默认初始是第一行
+  const globalConfig = inject('globalConfig');
 
+  const props = defineProps({
+    deviceId: {
+      type: String,
+      require: true,
+    },
+    deviceType: {
+      type: String,
+      require: true,
+    },
+  });
+  const [register, { openModal }] = useModal();
+  const loading = ref(false);
+  const tabActiveKey = ref(1);
+  const passwordModalIsShow = ref(false);
+  const handlerType = ref('');
+  // 默认初始是第一行
 
-// 监测数据
-const selectData = reactive({
-  pump1: false,
-  pump2: false,
-  pump3: false,
-  pump4: false,
-  waterPump1: false,
-  waterPump2: false,
-  waterPump3: false,
-  waterPump4: false,
-  inValve1: false,
-  outValve1: false,
-  inValve2: false,
-  outValve2: false,
-  inValve3: false,
-  outValve3: false,
-  inValve4: false,
-  outValve4: false,
-  jxmsqh: '1',
-  ykjdqh: '1',
-  FlowSensor_InputFlux: '-',
-});
+  // 监测数据
+  const selectData = reactive({
+    pump1: false,
+    pump2: false,
+    pump3: false,
+    pump4: false,
+    waterPump1: false,
+    waterPump2: false,
+    waterPump3: false,
+    waterPump4: false,
+    inValve1: false,
+    outValve1: false,
+    inValve2: false,
+    outValve2: false,
+    inValve3: false,
+    outValve3: false,
+    inValve4: false,
+    outValve4: false,
+    jxmsqh: '1',
+    ykjdqh: '1',
+    FlowSensor_InputFlux: '-',
+  });
 
-const flvURL1 = () => {
-  return `https://sf1-hscdn-tos.pstatp.com/obj/media-fe/xgplayer_doc_video/flv/xgplayer-demo-360p.flv`;
-  // return ''
-};
+  const flvURL1 = () => {
+    return `https://sf1-hscdn-tos.pstatp.com/obj/media-fe/xgplayer_doc_video/flv/xgplayer-demo-360p.flv`;
+    // return ''
+  };
 
-// https获取监测数据
-let timer: null | NodeJS.Timeout = null;
-function getMonitor(flag?) {
-  if (Object.prototype.toString.call(timer) === '[object Null]') {
-    timer = setTimeout(async () => {
-      if (props.deviceId) {
-        const data = await getDataSource(props.deviceId)
-        Object.assign(selectData, data); 
-      }
-      if (timer) {
-        timer = null;
-      }
-      await getMonitor();
-      loading.value = false
-    }, flag ? 0 : 1000);
+  // https获取监测数据
+  let timer: null | NodeJS.Timeout = null;
+  function getMonitor(flag?) {
+    if (Object.prototype.toString.call(timer) === '[object Null]') {
+      timer = setTimeout(
+        async () => {
+          if (props.deviceId) {
+            const data = await getDataSource(props.deviceId);
+            Object.assign(selectData, data);
+          }
+          if (timer) {
+            timer = null;
+          }
+          await getMonitor();
+          loading.value = false;
+        },
+        flag ? 0 : 1000
+      );
+    }
   }
-};
 
-async function getDataSource(systemID) {
-  const res = await list({ devicetype: props.deviceType, ids: systemID });
-  const result = res.msgTxt[0]['datalist'][0];
-  Object.assign(result, result['readData'])
-  return result
-}
-
-function handler(passWord, paramcode) {
-  let value = null
-  if(paramcode == 'ykjdqh'){
-    value = selectData['ykjdqh'] == '1' ? '2' : '1'
-  }
-  if (paramcode == 'jxmsqh') {
-    value = selectData['jxmsqh'] == '1' ? '2' : '1'
+  async function getDataSource(systemID) {
+    const res = await list({ devicetype: props.deviceType, ids: systemID });
+    const result = res.msgTxt[0]['datalist'][0];
+    Object.assign(result, result['readData']);
+    return result;
   }
-  const data = {
-    deviceid: selectData.deviceID,
-    devicetype: selectData.deviceType,
-    paramcode: paramcode,
-    password: passWord,
-    value: value,
-  };
-  deviceControlApi(data).then((res) => {
-    if (globalConfig.History_Type == 'remote') {
-      message.success('指令已下发至生产管控平台成功!')
-    } else {
-      message.success('指令已下发成功!')
-    }
-  }).catch((err) => {
-    message.success('控制异常');
-  });
-}
 
-function changeCtr(e) {
-  if(e.target.value == 1){
-    // 就地
-    handlerType.value = 'jxmsqh'
-  }else if(e.target.value == 2) {
-    // 远程
-    handlerType.value = 'jxmsqh'
+  function handler(passWord, paramcode) {
+    let value = null;
+    if (paramcode == 'ykjdqh') {
+      value = selectData['ykjdqh'] == '1' ? '2' : '1';
+    }
+    if (paramcode == 'jxmsqh') {
+      value = selectData['jxmsqh'] == '1' ? '2' : '1';
+    }
+    const data = {
+      deviceid: selectData.deviceID,
+      devicetype: selectData.deviceType,
+      paramcode: paramcode,
+      password: passWord,
+      value: value,
+    };
+    deviceControlApi(data)
+      .then((res) => {
+        if (globalConfig.History_Type == 'remote') {
+          message.success('指令已下发至生产管控平台成功!');
+        } else {
+          message.success('指令已下发成功!');
+        }
+      })
+      .catch((err) => {
+        message.success('控制异常');
+      });
   }
-  passwordModalIsShow.value = true;
-}
 
-function changeMode(e) {
-  if (e.target.value == 1) {
-    // 检修开
-    handlerType.value = 'ykjdqh'
-  } else if (e.target.value == 2) {
-    // 检修关
-    handlerType.value = 'ykjdqh'
+  function changeCtr(e) {
+    if (e.target.value == 1) {
+      // 就地
+      handlerType.value = 'jxmsqh';
+    } else if (e.target.value == 2) {
+      // 远程
+      handlerType.value = 'jxmsqh';
+    }
+    passwordModalIsShow.value = true;
   }
-  passwordModalIsShow.value = true;
-}
-
-function handlerFn(paramcode){
-  handlerType.value = paramcode
-  passwordModalIsShow.value = true;
-}
 
-function handleOK(passWord, handlerState) {
-  handler(passWord, handlerState)
-  passwordModalIsShow.value = false;
-  handlerType.value = ''
-}
+  function changeMode(e) {
+    if (e.target.value == 1) {
+      // 检修开
+      handlerType.value = 'ykjdqh';
+    } else if (e.target.value == 2) {
+      // 检修关
+      handlerType.value = 'ykjdqh';
+    }
+    passwordModalIsShow.value = true;
+  }
 
-function handleCancel() {
-  passwordModalIsShow.value = false;
-  handlerType.value = ''
-};
+  function handlerFn(paramcode) {
+    handlerType.value = paramcode;
+    passwordModalIsShow.value = true;
+  }
 
-// 喷粉操作
-function handlerDevice(code, data) {
-  
-}
+  function handleOK(passWord, handlerState) {
+    handler(passWord, handlerState);
+    passwordModalIsShow.value = false;
+    handlerType.value = '';
+  }
 
-watch(() => props.deviceType, () => {
-  if(props.deviceType == 'pump_over'){
-    setModelType('gasPump')
-  }else if(props.deviceType == 'pump_under') {
-    setModelType('gasPumpUnder')
+  function handleCancel() {
+    passwordModalIsShow.value = false;
+    handlerType.value = '';
   }
-})
 
-onBeforeMount(() => {
+  // 喷粉操作
+  function handlerDevice(code, data) {}
 
-});
+  watch(
+    () => props.deviceType,
+    () => {
+      nextTick(() => {
+        if (props.deviceType == 'pump_over') {
+          setModelType('gasPump');
+        } else if (props.deviceType == 'pump_under') {
+          setModelType('gasPumpUnder');
+        }
+      });
+    }
+  );
 
-onMounted(async() => {
-  timer = null
-  await getMonitor(true)
-});
+  onBeforeMount(() => {});
 
-onUnmounted(() => {
-  if (timer) {
-    clearTimeout(timer);
-    timer = undefined;
-  }
-});
+  onMounted(async () => {
+    timer = null;
+    await getMonitor(true);
+  });
 
+  onUnmounted(() => {
+    if (timer) {
+      clearTimeout(timer);
+      timer = undefined;
+    }
+  });
 </script>
 <style lang="less" scoped>
-@import '/@/design/vent/modal.less';
-@import '../../comment/less/workFace.less';
-@ventSpace: zxm;
-.elementContent{
-  :deep(.main-container){
-    display: flex;
-    flex-wrap: wrap;
-    width: 690px;
-    padding: 10px 12px 10px 15px;
-    border: 1px solid #d3e1ff55;
-    background-color: #061c2a55;
-    box-shadow: 0 0 10px #c3c7cd;
-    .gas-monitor-row{
+  @import '/@/design/vent/modal.less';
+  @import '../../comment/less/workFace.less';
+  @ventSpace: zxm;
+  .elementContent {
+    :deep(.main-container) {
       display: flex;
-      flex-direction: row;
       flex-wrap: wrap;
-      color: #fff;
-      line-height: 32px;
-      .title{
-        width: 250px;
-        color: #baeaff;
-      }
-      .value{
-        width: 80px;
-        color: #EFAE05;
+      width: 690px;
+      padding: 10px 12px 10px 15px;
+      border: 1px solid #d3e1ff55;
+      background-color: #061c2a55;
+      box-shadow: 0 0 10px #c3c7cd;
+      .gas-monitor-row {
+        display: flex;
+        flex-direction: row;
+        flex-wrap: wrap;
+        color: #fff;
+        line-height: 32px;
+        .title {
+          width: 250px;
+          color: #baeaff;
+        }
+        .value {
+          width: 80px;
+          color: #efae05;
+        }
       }
     }
   }
-  
-  
-}
 
-.device-state{
-  width: 100%;
-  position: absolute;
-  top: 20px;
-  color: #e90000;
-  display: flex;
-  justify-content: center;
-  font-size: 20px;
-}
+  .device-state {
+    width: 100%;
+    position: absolute;
+    top: 20px;
+    color: #e90000;
+    display: flex;
+    justify-content: center;
+    font-size: 20px;
+  }
 
-.lr{
-  margin-top: 0 !important;
-}
-.left-box{
-  width: 360px !important;
-  direction: rtl;
-  overflow-y: auto;
-  overflow-x: hidden;
-  height: calc(100% - 30px);
-  
-  .left-container{
-    margin-top: 30px;
-    direction: ltr;
+  .lr {
+    margin-top: 0 !important;
   }
-}
-.right-box{
-  width: 350px !important;
-  .environment-monitor{
-    .item{
-      flex: 1;
-      margin: 0 5px;
-      .title{
-        color: #7ae5ff;
-        text-align: center;
-        margin-bottom: 2px;
-      }
-      .num{
-        width: 100%;
-        height: 30px;
-        text-align: center;
-        border-top: 2px solid #50c8fc;
-        border-radius: 4px;
-        background-image: linear-gradient( #2e4d5955, #3780b499, #2E465955); 
-      }
+  .left-box {
+    width: 360px !important;
+    direction: rtl;
+    overflow-y: auto;
+    overflow-x: hidden;
+    height: calc(100% - 30px);
+
+    .left-container {
+      margin-top: 30px;
+      direction: ltr;
     }
   }
-  .pool-box{
-    width: 327px;
-    height: 65px;
-    padding: 0 5px;
-    background: url('/@/assets/images/vent/pump1.png') no-repeat;
-    background-size: cover;
-    background-origin: content-box;
-    margin-top: 2px;
-    .num{
-      color: aqua;
+  .right-box {
+    width: 350px !important;
+    .environment-monitor {
+      .item {
+        flex: 1;
+        margin: 0 5px;
+        .title {
+          color: #7ae5ff;
+          text-align: center;
+          margin-bottom: 2px;
+        }
+        .num {
+          width: 100%;
+          height: 30px;
+          text-align: center;
+          border-top: 2px solid #50c8fc;
+          border-radius: 4px;
+          background-image: linear-gradient(#2e4d5955, #3780b499, #2e465955);
+        }
+      }
     }
-    .center{
-      padding-right: 5px;
+    .pool-box {
+      width: 327px;
+      height: 65px;
+      padding: 0 5px;
+      background: url('/@/assets/images/vent/pump1.png') no-repeat;
+      background-size: cover;
+      background-origin: content-box;
+      margin-top: 2px;
+      .num {
+        color: aqua;
+      }
+      .center {
+        padding-right: 5px;
+      }
     }
   }
-}
-.control-group{
-  display: flex;
-  // justify-content: space-around;
-  flex-wrap: wrap;
-  margin: 4px 0;
-  .control-item {
+  .control-group {
     display: flex;
-    flex-direction: column;
-    justify-content: center;
-    align-items: center;
-    padding: 1px 10px;
-    .control-item-title{
-      color: #A6DCE9;
-      position: relative;
-    }
-    .control-item-state{
-      width: 86px;
-      height: 31px;
-      background: url('/@/assets/images/vent/control-switch-bg1.png');
+    // justify-content: space-around;
+    flex-wrap: wrap;
+    margin: 4px 0;
+    .control-item {
       display: flex;
+      flex-direction: column;
       justify-content: center;
       align-items: center;
-      color: #fff;
-    }
-  
-    .button-box {
-      position: relative;
-      padding: 5px;
-      border: 1px transparent solid;
-      background-clip: border-box;
-      border-radius: 5px;
-      margin-left: 8px;
-    }
+      padding: 1px 10px;
+      .control-item-title {
+        color: #a6dce9;
+        position: relative;
+      }
+      .control-item-state {
+        width: 86px;
+        height: 31px;
+        background: url('/@/assets/images/vent/control-switch-bg1.png');
+        display: flex;
+        justify-content: center;
+        align-items: center;
+        color: #fff;
+      }
 
-    .a-button {
-      pointer-events: auto;
-    }
+      .button-box {
+        position: relative;
+        padding: 5px;
+        border: 1px transparent solid;
+        background-clip: border-box;
+        border-radius: 5px;
+        margin-left: 8px;
+      }
 
-    &::v-deep .a-button--mini {
-      padding: 6px 10px;
-    }
+      .a-button {
+        pointer-events: auto;
+      }
+
+      &::v-deep .a-button--mini {
+        padding: 6px 10px;
+      }
 
-    &::v-deep .a-button--mini.is-round {
-      padding: 6px 10px;
+      &::v-deep .a-button--mini.is-round {
+        padding: 6px 10px;
+      }
     }
   }
+  .input-box {
+    width: calc(100%);
+    display: flex;
+    flex-direction: row !important;
+    flex-wrap: wrap !important;
+    .input-item {
+      width: calc(50% - 8px);
+      padding: 0 2px;
 
-}
-.input-box{
-  width: calc(100%);
-  display: flex;
-  flex-direction: row !important;
-  flex-wrap: wrap !important;
-  .input-item{
-    width: calc(50% - 8px);
-    padding: 0 2px;
-  
-    &:nth-child(2n){
-      margin-left: 4px;
+      &:nth-child(2n) {
+        margin-left: 4px;
+      }
     }
   }
-}
-.btn-group{
-  display: flex;
-  justify-content: space-around;
-  .btn-item{
-    width: 82px;
-    text-align: center;
+  .btn-group {
+    display: flex;
+    justify-content: space-around;
+    .btn-item {
+      width: 82px;
+      text-align: center;
+    }
   }
-}
-.top-btn{
-  .btn-group{
-    margin-bottom: 8px;
-    .btn-item{
-      width: calc(50% - 16px);
-      margin: 0 4px;
+  .top-btn {
+    .btn-group {
+      margin-bottom: 8px;
+      .btn-item {
+        width: calc(50% - 16px);
+        margin: 0 4px;
+      }
+    }
+    .control-item {
+      margin-left: 10px;
+      margin-bottom: 8px;
+      display: flex;
+      .control-title {
+        width: 150px;
+        color: #73e8fe;
+      }
     }
   }
-  .control-item{
-    margin-left: 10px;
-    margin-bottom: 8px;
+  .state-header {
     display: flex;
-    .control-title{
-      width: 150px;
-      color: #73e8fe;
+    color: #73e8fe;
+    .header-item {
+      width: 25%;
+      text-align: center;
     }
   }
-}
-.state-header{
-  display: flex;
-  color: #73e8fe;
-  .header-item{
-    width: 25%;
-    text-align: center;
-  }
-}
-.device-row{
-  display: flex;
-  margin-top: 10px;
-  .state{
-    width: 25%;
-    text-align: center;
-    font-size: 13px;
+  .device-row {
+    display: flex;
+    margin-top: 10px;
+    .state {
+      width: 25%;
+      text-align: center;
+      font-size: 13px;
+    }
   }
-}
-
-:deep(.@{ventSpace}-tabs-tabpane-active) {
-  overflow: auto;
-}
 
+  :deep(.@{ventSpace}-tabs-tabpane-active) {
+    overflow: auto;
+  }
 </style>

+ 2 - 3
src/views/vent/monitorManager/gasPumpMonitor/gasPump.threejs.ts

@@ -52,7 +52,6 @@ export const setModelType = (type) => {
     if (gasPumpType === 'gasPump' && gasPumpBaseObj && gasPumpBaseObj.group) {
       if (model?.scene?.getObjectByName('gasPumpUnder') && gasPumpUnderObj && gasPumpUnderObj.group) {
         model.scene.remove(gasPumpUnderObj.group);
-        gasPumpUnderObj.clearCssText();
       }
       group = gasPumpBaseObj.group;
       const oldCameraPosition = { x: 15.9074, y: 5.40264, z: 27.12551 };
@@ -74,8 +73,8 @@ export const setModelType = (type) => {
       if (model?.scene?.getObjectByName('gasPump') && gasPumpBaseObj && gasPumpBaseObj.group) {
         model.scene.remove(gasPumpBaseObj.group);
       }
+      gasPumpUnderObj.addCssText();
       group = gasPumpUnderObj.group;
-
       const oldCameraPosition = { x: 15.9074, y: 5.40264, z: 27.12551 };
       setTimeout(async () => {
         model?.scene?.add(group);
@@ -105,7 +104,7 @@ export const mountedThree = () => {
 
     gasPumpUnderObj = new gasPumpUnder(model);
     await gasPumpUnderObj.mountedThree();
-    gasPumpUnderObj.addCssText();
+
     addMouseEvent();
     // render();
     model.animate();

+ 1 - 0
src/views/vent/monitorManager/gasPumpMonitor/gasPump.threejs.under.ts

@@ -35,6 +35,7 @@ class gasPumpUnder {
   }
 
   addCssText = () => {
+    debugger;
     if (!this.group) return;
     if (!this.group.getObjectByName('text1')) {
       const element = document.getElementById('FlowSensor') as HTMLElement;

+ 0 - 1
src/views/vent/monitorManager/gateMonitor/gate.threejs.two.ss.ts

@@ -517,7 +517,6 @@ class FmTwoSs {
     this.group.name = this.modelName;
     return new Promise((resolve) => {
       this.model.setGLTFModel(['fmTwoSs-door', 'fmTwoSs-wall', 'fmTwoSs-wire'], this.group).then(() => {
-        debugger;
         this.setModalPosition();
         // 初始化左右摇摆动画;
         this.initAnimation();

+ 4 - 5
src/views/vent/monitorManager/windowMonitor/modal.vue

@@ -7,9 +7,9 @@
       </div>
       <div class="vent-flex-row input-box">
         <div class="label">风窗面积:</div>
-        <a-input-number size="small" placeholder="0" :min="0" :max="90" :step="1" v-model:value="area" />
+        <a-input-number size="small" placeholder="0" :min="0" :max="90" v-model:value="area" />
       </div>
-      <div  v-if="!globalConfig?.simulatedPassword" class="vent-flex-row input-box">
+      <div v-if="!globalConfig?.simulatedPassword" class="vent-flex-row input-box">
         <div class="label">操作密码:</div>
         <a-input size="small" type="password" v-model:value="passWord" />
       </div>
@@ -54,10 +54,9 @@
   });
 
   function handleOk() {
-
-    if(globalConfig?.simulatedPassword){
+    if (globalConfig?.simulatedPassword) {
       emit('handleOk', '', type.value, area.value);
-    }else{
+    } else {
       emit('handleOk', passWord.value, type.value, area.value);
     }
   }

+ 22 - 20
src/views/vent/monitorManager/workFaceMonitor/workFace.threejs.base.ts

@@ -65,19 +65,20 @@ class WorkFace {
   }
 
   render() {
-    const _this = this;
-    if (this.model && this.model.scene.getObjectByName(this.modelName)) {
-      this.group?.traverse((obj) => {
-        _this.darkenNonBloomed(obj);
-      });
-      this.bloomComposer?.render();
-      this.group?.traverse((obj) => {
-        _this.restoreMaterial(obj);
-      });
-      this.finalComposer?.render();
-    }
+    this.model.renderer?.render(this.model.scene as THREE.Scene, this.model.camera as THREE.PerspectiveCamera);
+    // const _this = this;
+    // if (this.model && this.model.scene.getObjectByName(this.modelName)) {
+    //   this.group?.traverse((obj) => {
+    //     _this.darkenNonBloomed(obj);
+    //   });
+    //   this.bloomComposer?.render();
+    //   this.group?.traverse((obj) => {
+    //     _this.restoreMaterial(obj);
+    //   });
+    //   this.finalComposer?.render();
+    // }
   }
-
+  // 绘制抽采单元
   setPlanes = (n, colors = new Array(n).fill(new THREE.Color('rgb(100%, 0%, 0%)'))) => {
     colors = gradientColors('#00FF2C', '#FF0000', n, 2);
     this.planeNum = n;
@@ -100,6 +101,7 @@ class WorkFace {
     }
   };
 
+  // 清除抽采单元绘制面
   clearPlanes = () => {
     for (let i = 0; i < this.planeNum; i++) {
       const plane = this.group.getObjectByName(`unit${i}`);
@@ -108,7 +110,7 @@ class WorkFace {
       if (label) this.group.remove(label);
     }
   };
-
+  // 抽采单元内容显示
   setCss3D = () => {
     const obj = this.group.getObjectByName(`unitText`);
     if (!obj) {
@@ -123,7 +125,7 @@ class WorkFace {
       }
     }
   };
-
+  // 显示或隐藏抽采单元显示内容
   changeCss3D = (isHide) => {
     for (let i = 0; i < this.planeNum; i++) {
       const obj = this.group.getObjectByName(`unitText${i}`);
@@ -132,7 +134,7 @@ class WorkFace {
       }
     }
   };
-
+  // 清除抽采单元显示内容
   clearCss3D = () => {
     const obj = this.group.getObjectByName(`unitText`);
     if (obj) this.group.remove(obj);
@@ -368,17 +370,17 @@ class WorkFace {
     return new Promise(async (resolve) => {
       this.model.renderer.sortObjects = true;
       // this.model.camera.position.set(0, 3.1, 500);
-      this.setRenderPass();
+      // this.setRenderPass();
       this.model.orbitControls.update();
-      this.model.setGLTFModel([this.modelName]).then(async (gltf) => {
-        this.group = gltf[0];
+      this.model.setGLTFModel(['workFace-base', 'workFace-jin', 'workFace-hui'], this.group).then(async () => {
+        this.group.name = this.modelName;
         this.setPlanes(7);
         // this.group.position.set(-0.06, 0.28, 0.07);
         this.group.scale.set(2.5, 2.5, 2.5);
-        this.resetMesh();
+        // this.resetMesh();
         this.getPositions(this.glob.N);
         this.addLight();
-        this.drawSpheres();
+        // this.drawSpheres();
 
         resolve(null);
       });

+ 2 - 0
src/views/vent/performance/comment/NormalTable.vue

@@ -164,6 +164,7 @@
   function handleDownLoad(record) {
     console.log(record, '下载');
     props.downLoad({ id: record.id }).then((res) => {
+      debugger;
       console.log('11111');
       console.log(res, '文件下载成功');
       let filename = `${record.fileName}`;
@@ -172,6 +173,7 @@
   }
   // 下载公用方法
   function downFilePublic(content, fileName) {
+    // const blob = new Blob([content], { type: 'application/xlsx;charset=UTF-8' }); // 构造一个blob对象来处理数据
     const blob = new Blob([content], { type: 'application/xlsx;charset=UTF-8' }); // 构造一个blob对象来处理数据
     // 对于<a>标签,只有 Firefox 和 Chrome(内核) 支持 download 属性
     // IE10以上支持blob但是依然不支持download

+ 3 - 4
src/views/vent/performance/fileDetail/fileDetail.api.ts

@@ -5,10 +5,9 @@ enum Api {
   getTree = '/ventanaly-sharefile/fileServer/list',
   createFile = '/ventanaly-sharefile/fileServer/add',
   editMenu = '/ventanaly-sharefile/fileServer/edit',
-  delMenu = '/ventanaly-sharefile/fileServer/delete?id=',
+  delMenu = '/ventanaly-sharefile/fileServer/delete',
   uploadApi = '/ventanaly-sharefile/fileServer/upload',
   downLoad = '/ventanaly-sharefile/fileServer/download',
-  deleteById = '/ventanaly-sharefile/fileServer/delete?id=',
 }
 
 /**
@@ -26,7 +25,7 @@ export const createFile = (params) => defHttp.post({ url: Api.createFile, params
  * 上传文件接口
  * @param params
  */
-export const uploadApi = (params) => defHttp.post({headers: {'Content-Type':'application/x-www-form-urlencoded'}, url: Api.uploadApi, params });
+export const uploadApi = (params) => defHttp.post({ headers: { 'Content-Type': 'application/x-www-form-urlencoded' }, url: Api.uploadApi, params });
 
 /**
  * 修改文件夹名称接口
@@ -49,7 +48,7 @@ export const downLoad = (params) => defHttp.post({ url: Api.downLoad, params, re
  * 删除文件/文件夹
  */
 export const deleteById = (params, handleSuccess) => {
-  return defHttp.delete({ url: Api.deleteById, params }, { joinParamsToUrl: true }).then(() => {
+  return defHttp.delete({ url: Api.delMenu, params }, { joinParamsToUrl: true }).then(() => {
     handleSuccess();
   });
 };