Kaynağa Gözat

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

hongrunxia 21 saat önce
ebeveyn
işleme
268194091c
24 değiştirilmiş dosya ile 5156 ekleme ve 1201 silme
  1. 1 1
      src/views/vent/deviceManager/deviceTable/device.api.ts
  2. 6 7
      src/views/vent/deviceManager/deviceTable/index-footage.vue
  3. 2 1
      src/views/vent/home/configurable/components/detail/MiniBoard.vue
  4. 5 2
      src/views/vent/home/configurable/fireTS.vue
  5. 40 3
      src/views/vent/monitorManager/airDoor/airdoor.api.ts
  6. 91 15
      src/views/vent/monitorManager/airDoor/airdoor.data.ts
  7. 0 863
      src/views/vent/monitorManager/airDoor/airdoor.threejs.ts
  8. 124 147
      src/views/vent/monitorManager/airDoor/components/door-content-r.vue
  9. 0 26
      src/views/vent/monitorManager/airDoor/components/entryThree.vue
  10. 588 0
      src/views/vent/monitorManager/airDoor/components/gateDualSVG1.vue
  11. 588 0
      src/views/vent/monitorManager/airDoor/components/gateDualSVG2.vue
  12. 588 0
      src/views/vent/monitorManager/airDoor/components/gateDualSVG3.vue
  13. 588 0
      src/views/vent/monitorManager/airDoor/components/gateDualSVG4.vue
  14. 588 0
      src/views/vent/monitorManager/airDoor/components/gateDualSVG5.vue
  15. 588 0
      src/views/vent/monitorManager/airDoor/components/gateDualSVG6.vue
  16. 588 0
      src/views/vent/monitorManager/airDoor/components/gateDualSVG7.vue
  17. 588 0
      src/views/vent/monitorManager/airDoor/components/gateDualSVG8.vue
  18. 9 7
      src/views/vent/monitorManager/airDoor/components/syncModal.vue
  19. 17 92
      src/views/vent/monitorManager/airDoor/components/timeSetModal.vue
  20. 59 0
      src/views/vent/monitorManager/airDoor/components/tipModal.vue
  21. 29 2
      src/views/vent/monitorManager/airDoor/index.vue
  22. 12 12
      src/views/vent/monitorManager/footageMonitor/components/moduleCommon.vue
  23. 4 3
      src/views/vent/monitorManager/footageMonitor/footage.api.ts
  24. 53 20
      src/views/vent/monitorManager/footageMonitor/index.vue

+ 1 - 1
src/views/vent/deviceManager/deviceTable/device.api.ts

@@ -56,7 +56,7 @@ export const deleteById = (params, handleSuccess) => {
  * 删除用户-进尺与瓦斯涌出
  */
 export const deleteByIdF = (params, handleSuccess) => {
-  return defHttp.delete({ url: Api.deleteById, params }, { joinParamsToUrl: true }).then(() => {
+  return defHttp.delete({ url: Api.deleteByIdF, params }, { joinParamsToUrl: true }).then(() => {
     handleSuccess();
   });
 };

+ 6 - 7
src/views/vent/deviceManager/deviceTable/index-footage.vue

@@ -51,14 +51,13 @@ const arrToFormColumns = (tableHeaderColumns = []) => {
       field: 'ateFte',
       component: 'Input'
     },
-
-    {
-      label: '累计进尺',
-      field: 'sumFte',
-      component: 'Input'
-    },
+    // {
+    //   label: '累计进尺111',
+    //   field: 'sumFte',
+    //   component: 'Input'
+    // },
     {
-      label: '设备类型',
+      label: '工作面',
       field: 'devId',
       component: 'ApiSelect',
       componentProps: {

+ 2 - 1
src/views/vent/home/configurable/components/detail/MiniBoard.vue

@@ -132,8 +132,9 @@
       --image-jdjl: url(/@/assets/images/themify/green/home-container/configurable/dusthome/jdjl.png);
     }
     // type E 专用样式调整
-    .mini-board_E .mini-board__label_E {
+    .mini-board_E .mini-board__label {
       height: 100px;
+      white-space: normal;
     }
     .mini-board_E:nth-child(1) {
       background-image: var(--image-hycd);

+ 5 - 2
src/views/vent/home/configurable/fireTS.vue

@@ -81,6 +81,10 @@
   // import { testConfigTSFire } from './configurable.data.tashan';
   import ModuleCommon from './components/ModuleCommon.vue';
   import ModuleCommonDual from './components/ModuleCommonDual.vue';
+  import { useGlobSetting } from '/@/hooks/setting';
+
+  const { title = '采空区无线监测预警及防灭火平台' } = useGlobSetting();
+  const { data, updateData, mainTitle } = useInitPage(title);
   // import Three3D from './components/three3D.vue';
 
   // const modalName = ref('workFace11');
@@ -89,7 +93,6 @@
   const cfgB = computed<any>(() => configs.value[7]);
   const cfgC = computed<any>(() => configs.value[8]);
   const { configs, fetchConfigs } = useInitConfigs();
-  const { mainTitle, data, updateData } = useInitPage('回采工作面智能管控');
   let interval: ReturnType<typeof setInterval> | undefined;
   const commonTitle = '实时监测与预警';
   const fireSgWarnInfo = ref({
@@ -300,7 +303,7 @@
       .main-title {
         height: 80px;
         font-family: 'douyuFont';
-        font-size: 26px;
+        font-size: 22px;
         letter-spacing: 2px;
         display: flex;
         justify-content: center;

+ 40 - 3
src/views/vent/monitorManager/airDoor/airdoor.api.ts

@@ -1,9 +1,15 @@
 import { defHttp } from '/@/utils/http/axios';
+import { AesEncryption } from '/@/utils/cipher';
+import { loginCipher } from '/@/settings/encryptionSetting';
 
 
 enum Api {
-getDevice = '/monitor/device',
-getCameraUrl = '/monitor/camera/queryByCameraCode',
+  getDevice = '/monitor/device',
+  getCameraUrl = '/monitor/camera/queryByCameraCode',
+  devicecontrol = '/safety/ventanalyMonitorData/devicecontrol_ssl',
+  insertSyncRule = '/ventanaly-device/synccontrol/upcoming/saveOrUpdateRule',
+  upcoming = '/ventanaly-device/synccontrol/upcoming',
+  GetSyncRule='/ventanaly-device/synccontrol/upcoming/GetSyncRule'
 }
 
 
@@ -12,6 +18,37 @@ getCameraUrl = '/monitor/camera/queryByCameraCode',
 * 风门列表
 * @param params
 */
-export const getDevice = (params) => defHttp.post({ url: Api.getDevice,params });
+export const getDevice = (params) => defHttp.post({ url: Api.getDevice, params });
 
 export const cameraAddr = (params) => defHttp.get({ url: Api.getCameraUrl, params });
+
+/**
+*同步开启/同步关闭
+* @param params
+*/
+export const devicecontrol = (params) => {
+  // 加密password
+  const encryption = new AesEncryption({ key: loginCipher.key, iv: loginCipher.iv });
+  params.password = encryption.encryptByAES(params.password);
+  return defHttp.put({ url: Api.devicecontrol, params });
+};
+
+/**
+* 定时设置-读取规则
+* @param params
+*/
+export const GetSyncRule = (params) => defHttp.post({ url: Api.GetSyncRule, params });
+/**
+* 定时设置-修改规则
+* @param params
+*/
+export const insertSyncRule = (params) => {
+  // 加密password
+  const encryption = new AesEncryption({ key: loginCipher.key, iv: loginCipher.iv });
+  params.password = encryption.encryptByAES(params.password);
+  return defHttp.post({ url: Api.insertSyncRule, params });
+};
+
+//读取未来30秒内的预告
+export const upcoming = (params) => defHttp.get({ url: Api.upcoming, params });
+

+ 91 - 15
src/views/vent/monitorManager/airDoor/airdoor.data.ts

@@ -1,17 +1,93 @@
 import { defineAsyncComponent } from 'vue';
-import EntryThree from './components/entryThree.vue';
 
-export function getModelComponent(is2DModel: boolean = false, sysOrgCode?: string) {
-  if (!is2DModel) return EntryThree;
-  return defineAsyncComponent(() => {
-    // return import('./components/gateTripleSVG.vue');
-    switch (sysOrgCode) {
-      // case '000000':
-      //   双道风门
-      //   return import('./components/gateDualSVG.vue');
-      default:
-        // return import('./components/gateTripleSVG.vue');
-        return import('./components/gateDualSVG.vue');
-    }
-  });
-}
+export const hourOption:any[] = [
+  { label: '00', value: 0 },
+  { label: '01', value: 1 },
+  { label: '02', value: 2 },
+  { label: '03', value: 3 },
+  { label: '04', value: 4 },
+  { label: '05', value: 5 },
+  { label: '06', value: 6 },
+  { label: '07', value: 7 },
+  { label: '08', value: 8 },
+  { label: '09', value: 9 },
+  { label: '10', value: 10 },
+  { label: '11', value: 11 },
+  { label: '12', value: 12 },
+  { label: '13', value: 13 },
+  { label: '14', value: 14 },
+  { label: '15', value: 15 },
+  { label: '16', value: 16 },
+  { label: '17', value: 17 },
+  { label: '18', value: 18 },
+  { label: '19', value: 19 },
+  { label: '20', value: 20 },
+  { label: '21', value: 21 },
+  { label: '22', value: 22 },
+  { label: '23', value: 23 },
+]
+
+export const minuteOption:any[] = [
+  { label: '00', value: 0 },
+  { label: '01', value: 1 },
+  { label: '02', value: 2 },
+  { label: '03', value: 3 },
+  { label: '04', value: 4 },
+  { label: '05', value: 5 },
+  { label: '06', value: 6 },
+  { label: '07', value: 7 },
+  { label: '08', value: 8 },
+  { label: '09', value: 9 },
+  { label: '10', value: 10 },
+  { label: '11', value: 11 },
+  { label: '12', value: 12 },
+  { label: '13', value: 13 },
+  { label: '14', value: 14 },
+  { label: '15', value: 15 },
+  { label: '16', value: 16 },
+  { label: '17', value: 17 },
+  { label: '18', value: 18 },
+  { label: '19', value: 19 },
+  { label: '20', value: 20 },
+  { label: '21', value: 21 },
+  { label: '22', value: 22 },
+  { label: '23', value: 23 },
+  { label: '24', value: 24 },
+  { label: '25', value: 25 },
+  { label: '26', value: 26 },
+  { label: '27', value: 27 },
+  { label: '28', value: 28 },
+  { label: '29', value: 29 },
+  { label: '30', value: 30 },
+  { label: '31', value: 31 },
+  { label: '32', value: 32 },
+  { label: '33', value: 33 },
+  { label: '34', value: 34 },
+  { label: '35', value: 35 },
+  { label: '36', value: 36 },
+  { label: '37', value: 37 },
+  { label: '38', value: 38 },
+  { label: '39', value: 39 },
+  { label: '40', value: 40 },
+  { label: '41', value: 41 },
+  { label: '42', value: 42 },
+  { label: '43', value: 43 },
+  { label: '44', value: 44 },
+  { label: '45', value: 45 },
+  { label: '46', value: 46 },
+  { label: '47', value: 47 },
+  { label: '48', value: 48 },
+  { label: '49', value: 49 },
+  { label: '50', value: 50 },
+  { label: '51', value: 51 },
+  { label: '52', value: 52 },
+  { label: '53', value: 53 },
+  { label: '54', value: 54 },
+  { label: '55', value: 55 },
+  { label: '56', value: 56 },
+  { label: '57', value: 57 },
+  { label: '58', value: 58 },
+  { label: '59', value: 59 },
+
+]
+

+ 0 - 863
src/views/vent/monitorManager/airDoor/airdoor.threejs.ts

@@ -1,863 +0,0 @@
-import * as THREE from 'three';
-import UseThree from '../../../../utils/threejs/useThree';
-// import Fm1 from './gate.threejs.yy';
-// import Fm3 from './gate.threejs.qd';
-import FmXR from './gate.threejs.xr';
-// import Fm2 from './gate.threejs.three';
-// import FmTwoSs from './gate.threejs.two.ss';
-// import FmThreeTl from './gate.threejs.three.tl';
-// import FmDc from './gate.threejs.window';
-// import FmDcHJG from './gate.threejs.window.hjg';
-// import FmDcZHQ from './gate.threejs.window.zhq';
-// import FmHsw3 from './gate.threejs.three.hsw';
-// import FmYjXr from './gate.threejs.two.yj'; // 窑街行人
-// import FmYj from './gate.threejs.yj'; // 窑街
-// import FmSp1 from './gate.threejs.one.sp';
-import { animateCamera } from '/@/utils/threejs/util';
-import useEvent from '../../../../utils/threejs/useEvent';
-import { getDictItemsByCode } from '/@/utils/dict';
-import { useGlobSetting } from '/@/hooks/setting';
-
-// 模型对象、 文字对象
-let model,
-  fm1, //液压风门
-  fm2, //三道风门收缩
-  fm3, //气动风门
-  fmXr: FmXR, //行人风门
-  fmTwoSs, //
-  fmThreeTl, // 三道推拉
-  fmWindowHjg, // 带风窗
-  fmWindowZhq, // 带风窗 沼和泉
-  fmWindow, // 带风窗
-  fmHsw3, // 海石湾拱形三道风门
-  fmYjXr, // 窑街拱形行人风门
-  fmYj, // 窑街拱形行车风门
-  fmSp1, // 沙坪一道风门
-  group: THREE.Object3D,
-  fmType = '',
-  windowType = 'singleWindow';
-
-const rotationParam = {
-  frontLeftDeg0: 0, // 前门初始
-  frontLeftDeg1: 0, // 前门目标
-  backLeftDeg0: 0, // 后门初始
-  backLeftDeg1: 0, // 后门目标
-  frontRightDeg0: 0, // 前门初始
-  frontRightDeg1: 0, // 前门目标
-  backRightDeg0: 0, // 后门初始
-  backRightDeg1: 0, // 后门目标
-};
-
-const { mouseDownFn } = useEvent();
-
-// 初始化左右摇摆动画
-const startAnimation = () => {
-  if (!model) return;
-  // 定义鼠标点击事件
-  model.canvasContainer?.addEventListener('mousedown', mouseEvent.bind(null));
-  model.canvasContainer?.addEventListener('pointerup', (event) => {
-    event.stopPropagation();
-    // 单道、 双道
-    if (fmType === 'fm1') {
-      fm1?.mouseUpModel.call(fm1);
-    } else if (fmType === 'fm2') {
-      fm2?.mouseUpModel.call(fm2);
-    } else if (fmType === 'fmThreeTl') {
-      fmThreeTl?.mouseUpModel.call(fmThreeTl);
-    } else if (fmType === 'fm3') {
-      fm3?.mouseUpModel.call(fm3);
-    } else if (fmType === 'fmXr') {
-      fmXr?.mouseUpModel.call(fmXr);
-    } else if (fmType === 'fmTwoSs') {
-      fmTwoSs?.mouseUpModel.call(fmTwoSs);
-    } else if (fmType === 'fmWindow') {
-      fmWindow.mouseUpModel.call(fmWindow);
-    } else if (fmType === 'fmWindowHjg') {
-      fmWindowHjg.mouseUpModel();
-    } else if (fmType === 'fmWindowZhq') {
-      fmWindowZhq.mouseUpModel();
-    } else if (fmType === 'fmHsw3') {
-      fmHsw3.mouseUpModel();
-    } else if (fmType === 'fmYjXr') {
-      fmYjXr.mouseUpModel();
-    } else if (fmType === 'fmYj') {
-      fmYj.mouseUpModel();
-    } else if (fmType === 'fmSp1') {
-      fmSp1.mouseUpModel();
-    }
-  });
-};
-
-// 鼠标点击、松开事件
-const mouseEvent = (event) => {
-  if (!model) return;
-  if (event.button == 0) {
-    mouseDownFn(model, group, event, (intersects) => {
-      if (fmType === 'fm1' && fm1) {
-        fm1?.mousedownModel.call(fm1, intersects);
-      } else if (fmType === 'fm2' && fm2) {
-        fm2?.mousedownModel.call(fm2, intersects);
-      } else if (fmType === 'fm3' && fm3) {
-        fm3?.mousedownModel.call(fm3, intersects);
-      } else if (fmType === 'fmXr' && fmXr) {
-        fmXr?.mousedownModel.call(fmXr, intersects);
-      } else if (fmType === 'fmTwoSs' && fmTwoSs) {
-        fmTwoSs?.mousedownModel.call(fmTwoSs, intersects);
-      } else if (fmType === 'fmThreeTl') {
-        fmThreeTl?.mousedownModel.call(fmThreeTl, intersects);
-      } else if (fmType === 'fmWindow' && fmWindow) {
-        fmWindow.mousedownModel.call(fmWindow, intersects);
-      } else if (fmType === 'fmWindowHjg' && fmWindowHjg) {
-        fmWindowHjg.mousedownModel(intersects);
-      } else if (fmType === 'fmWindowZhq' && fmWindowZhq) {
-        fmWindowZhq.mousedownModel(intersects);
-      } else if (fmType === 'fmHsw3' && fmHsw3) {
-        fmHsw3.mousedownModel(intersects);
-      } else if (fmType === 'fmYjXr' && fmYjXr) {
-        fmYjXr.mousedownModel(intersects);
-      } else if (fmType === 'fmYj' && fmYj) {
-        fmYj.mousedownModel(intersects);
-      } else if (fmType === 'fmSp1') {
-        fmSp1.mousedownModel(intersects);
-      }
-    });
-    console.log('摄像头控制信息', model.orbitControls, model.camera);
-  }
-};
-
-export const addMonitorText = (selectData) => {
-  if (!model) return;
-  if (fmType === 'fm1' && fm1) {
-    return fm1?.addMonitorText.call(fm1, selectData);
-  } else if (fmType === 'fm2' && fm2) {
-    return fm2?.addMonitorText.call(fm2, selectData);
-  } else if (fmType === 'fm3' && fm3) {
-    return fm3?.addMonitorText.call(fm3, selectData);
-  } else if (fmType === 'fmXr' && fmXr) {
-    return fmXr?.addMonitorText.call(fmXr, selectData);
-  } else if (fmType === 'fmTwoSs' && fmTwoSs) {
-    return fmTwoSs?.addMonitorText.call(fmTwoSs, selectData);
-  } else if (fmType === 'fmThreeTl') {
-    fmThreeTl?.addMonitorText.call(fmThreeTl, selectData);
-  } else if (fmType === 'fmWindow' && fmWindow) {
-    fmWindow.addMonitorText.call(fmWindow, selectData);
-  } else if (fmType === 'fmWindowHjg' && fmWindowHjg) {
-    fmWindowHjg.addMonitorText(selectData);
-  } else if (fmType === 'fmWindowZhq' && fmWindowZhq) {
-    fmWindowZhq.addMonitorText(selectData);
-  } else if (fmType === 'fmHsw3' && fmHsw3) {
-    fmHsw3.addMonitorText(selectData);
-  } else if (fmType === 'fmYjXr' && fmYjXr) {
-    fmYjXr.addMonitorText(selectData);
-  } else if (fmType === 'fmYj' && fmYj) {
-    fmYj.addMonitorText(selectData);
-  } else if (fmType === 'fmSp1' && fmSp1) {
-    fmSp1.addMonitorText(selectData);
-  }
-};
-
-export const deviceDetailCard = () => {
-  if (!model) return;
-  if (fmType === 'fm1') {
-    return fm1?.deviceDetailCard.call(fm1);
-  } else if (fmType === 'fm3') {
-    return fm3?.deviceDetailCard.call(fm3);
-  } else if (fmType === 'fmXr') {
-    return fmXr?.deviceDetailCard.call(fmXr);
-  } else {
-    // return fm2.addMonitorText.call(fm2);
-  }
-};
-
-export const play = (handlerState, flag?) => {
-  if (!model) return;
-  if (fmType === 'fm1' && fm1) {
-    return fm1.play.call(fm1, handlerState, flag);
-  } else if (fmType === 'fm2' && fm2) {
-    return fm2.play.call(fm2, handlerState, flag);
-  } else if (fmType === 'fmWindow' && fmWindow) {
-    return fmWindow.play.call(fmWindow, handlerState, flag);
-  } else if (fmType === 'fmWindowHjg' && fmWindowHjg) {
-    return fmWindowHjg.play.call(fmWindowHjg, handlerState, flag);
-  } else if (fmType === 'fmWindowZhq' && fmWindowZhq) {
-    return fmWindowZhq.play.call(fmWindowZhq, handlerState, flag);
-  } else if (fmType === 'fm3' && fm3) {
-    return fm3.play.call(fm3, handlerState, flag);
-  } else if (fmType === 'fmXr' && fmXr) {
-    return fmXr.play.call(fmXr, handlerState, flag);
-  } else if (fmType === 'fmTwoSs' && fmTwoSs) {
-    return fmTwoSs.play.call(fmTwoSs, handlerState, flag);
-  } else if (fmType === 'fmThreeTl') {
-    return fmThreeTl?.play.call(fmThreeTl, handlerState, flag);
-  } else if (fmType === 'fmHsw3') {
-    return fmHsw3?.play.call(fmHsw3, handlerState, flag);
-  } else if (fmType === 'fmYjXr') {
-    return fmYjXr?.play.call(fmYjXr, handlerState, flag);
-  } else if (fmType === 'fmYj') {
-    return fmYj?.play.call(fmYj, handlerState, flag);
-  } else if (fmType === 'fmSp1') {
-    return fmSp1?.play(handlerState, flag);
-  }
-};
-
-// export const playWindow = (rotationParam, flag) => {
-//   if (fmType === 'fmWindow' && fmWindow) {
-//     return fmWindow.playWindow.call(fmWindow, rotationParam, flag);
-//   } else if (fmType === 'fmWindowHjg' && fmWindowHjg) {
-//     return fmWindowHjg.playWindow.call(fmWindowHjg, rotationParam, flag);
-//   }
-// };
-
-export function computePlay(data, maxarea, isFirst = false) {
-  if (!model) return;
-  // 前门后窗  rearPresentValue1
-  // 前门前窗 frontPresentValue1
-  // 后门后窗 rearPresentValue2
-  // 后门前窗 frontPresentValue2
-  // data['frontArea'] = 70;
-  // data['rearArea'] = 40;
-
-  if (
-    (fmType === 'fmWindowHjg' || fmType === 'fmWindowZhq') &&
-    (data.rearPresentValue1 || data.frontPresentValue1 || data.rearPresentValue2 || data.frontPresentValue2)
-  ) {
-    maxarea = 90;
-    rotationParam.frontLeftDeg0 = (90 / maxarea) * Number(isFirst ? 0 : data.frontPresentValue1);
-    rotationParam.frontRightDeg0 = (90 / maxarea) * Number(isFirst ? 0 : data.rearPresentValue1);
-    rotationParam.frontLeftDeg1 = (90 / maxarea) * Number(data.frontPresentValue1) || 0;
-    rotationParam.frontRightDeg1 = (90 / maxarea) * Number(data.rearPresentValue1) || 0;
-    rotationParam.backLeftDeg0 = (90 / maxarea) * Number(isFirst ? 0 : data.frontPresentValue2);
-    rotationParam.backRightDeg0 = (90 / maxarea) * Number(isFirst ? 0 : data.rearPresentValue2);
-    rotationParam.backLeftDeg1 = (90 / maxarea) * Number(data.frontPresentValue2) || 0;
-    rotationParam.backRightDeg1 = (90 / maxarea) * Number(data.rearPresentValue2) || 0;
-
-    rotationParam.backLeftDeg1 = 90;
-    if (fmType === 'fmWindowHjg') {
-      fmWindowHjg.playWindow(rotationParam, 1);
-      fmWindowHjg.playWindow(rotationParam, 2);
-      fmWindowHjg.playWindow(rotationParam, 3);
-      fmWindowHjg.playWindow(rotationParam, 4);
-    } else {
-      fmWindowZhq.playWindow(rotationParam, 1);
-      fmWindowZhq.playWindow(rotationParam, 2);
-      fmWindowZhq.playWindow(rotationParam, 3);
-      fmWindowZhq.playWindow(rotationParam, 4);
-    }
-  } else if (fmType === 'fmWindow' && data.frontPresentValue1 && data.frontPresentValue2 && data.rearPresentValue1 && data.rearPresentValue2) {
-    maxarea = 90;
-    rotationParam.frontLeftDeg0 = (90 / maxarea) * Number(isFirst ? 0 : data.frontPresentValue1);
-    rotationParam.frontRightDeg0 = (90 / maxarea) * Number(isFirst ? 0 : data.frontPresentValue2);
-    rotationParam.frontLeftDeg1 = (90 / maxarea) * Number(data.frontPresentValue1) || 0;
-    rotationParam.frontRightDeg1 = (90 / maxarea) * Number(data.frontPresentValue2) || 0;
-    rotationParam.backLeftDeg0 = (90 / maxarea) * Number(isFirst ? 0 : data.rearPresentValue1);
-    rotationParam.backRightDeg0 = (90 / maxarea) * Number(isFirst ? 0 : data.rearPresentValue2);
-    rotationParam.backLeftDeg1 = (90 / maxarea) * Number(data.rearPresentValue1) || 0;
-    rotationParam.backRightDeg1 = (90 / maxarea) * Number(data.rearPresentValue2) || 0;
-    fmWindow.playWindow(rotationParam, 1);
-    fmWindow.playWindow(rotationParam, 2);
-    fmWindow.playWindow(rotationParam, 3);
-    fmWindow.playWindow(rotationParam, 4);
-  }
-}
-
-// 切换风门类型
-export const setModelType = (type) => {
-  if (!model) return Promise.reject('model is null');
-  fmType = type;
-  return new Promise((resolve) => {
-    // 暂停风门1动画
-    if (fmType === 'fm1' && fm1 && fm1.group) {
-      if (fm1.clipActionArr.frontDoor && fm1.clipActionArr.backDoor) {
-        fm1.clipActionArr.frontDoor.reset();
-        fm1.clipActionArr.frontDoor.time = 0.5;
-        fm1.clipActionArr.backDoor.reset();
-        fm1.clipActionArr.backDoor.time = 0.5;
-        fm1.clipActionArr.frontDoor.stop();
-        fm1.clipActionArr.backDoor.stop();
-      }
-
-      if (fm1.frontDamperOpenMesh) fm1.frontDamperOpenMesh.visible = false;
-      if (fm1.frontDamperClosedMesh) fm1.frontDamperClosedMesh.visible = true;
-      if (fm1.backDamperOpenMesh) fm1.backDamperOpenMesh.visible = false;
-      if (fm1.backDamperClosedMesh) fm1.backDamperClosedMesh.visible = true;
-      model.scene.remove(group);
-      model.startAnimation = fm1.render.bind(fm1);
-      group = fm1.group;
-      group.rotation.y = 0;
-      const oldCameraPosition = { x: -1000, y: 100, z: 500 };
-      setTimeout(async () => {
-        resolve(null);
-        model.scene.add(fm1.group);
-        await animateCamera(
-          oldCameraPosition,
-          { x: 0, y: 0, z: 0 },
-          { x: 50.99, y: 69.32, z: 93.61 },
-          { x: -10.04, y: -14.38, z: -31.4 },
-          model,
-          0.8
-        );
-      }, 300);
-    } else if (fmType === 'fm2' && fm2 && fm2.group) {
-      if (fm2.clipActionArr.frontDoor && fm2.clipActionArr.backDoor) {
-        fm2.clipActionArr.frontDoor.reset();
-        fm2.clipActionArr.frontDoor.time = 0.5;
-        fm2.clipActionArr.backDoor.reset();
-        fm2.clipActionArr.backDoor.time = 0.5;
-
-        fm2.clipActionArr.centerDoor.reset();
-        fm2.clipActionArr.centerDoor.time = 0.5;
-
-        fm2.clipActionArr.frontDoor.stop();
-        fm2.clipActionArr.backDoor.stop();
-        fm2.clipActionArr.centerDoor.stop();
-      }
-
-      // 显示单道风窗
-      model.startAnimation = fm2.render.bind(fm2);
-      model.scene.remove(group);
-      group = fm2.group;
-      const oldCameraPosition = { x: -761, y: 569, z: 871 };
-      setTimeout(async () => {
-        resolve(null);
-        model.scene.add(fm2.group);
-        const position = { x: -2.28, y: -0.91, z: -5.68 };
-
-        await animateCamera(
-          oldCameraPosition,
-          { x: -2.27, y: -0.91, z: -5.67 },
-          { x: 66.257, y: 57.539, z: 94.313 },
-          { x: position.x, y: position.y, z: position.z },
-          model,
-          0.6
-        );
-      }, 300);
-    } else if (fmType === 'fmWindow' && fmWindow && fmWindow.group) {
-      if (fmWindow.clipActionArr.frontDoor && fmWindow.clipActionArr.backDoor) {
-        fmWindow.clipActionArr.frontDoor.reset();
-        fmWindow.clipActionArr.frontDoor.time = 0.5;
-        fmWindow.clipActionArr.backDoor.reset();
-        fmWindow.clipActionArr.backDoor.time = 0.5;
-
-        fmWindow.clipActionArr.frontDoor.stop();
-        fmWindow.clipActionArr.backDoor.stop();
-      }
-
-      model.startAnimation = fmWindow.render.bind(fmWindow);
-      model.scene.remove(group);
-      group = fmWindow.group;
-      const oldCameraPosition = { x: -761, y: 569, z: 871 };
-      setTimeout(async () => {
-        resolve(null);
-        model.scene.add(fmWindow.group);
-        const position = { x: -2.28, y: -0.91, z: -5.68 };
-
-        await animateCamera(
-          oldCameraPosition,
-          { x: -2.27, y: -0.91, z: -5.67 },
-          { x: 66.257, y: 57.539, z: 94.313 },
-          { x: position.x, y: position.y, z: position.z },
-          model,
-          0.6
-        );
-      }, 300);
-    } else if (fmType === 'fmWindowHjg' && fmWindowHjg && fmWindowHjg.group) {
-      if (fmWindowHjg.clipActionArr.frontDoor && fmWindowHjg.clipActionArr.backDoor) {
-        fmWindowHjg.clipActionArr.frontDoor.reset();
-        fmWindowHjg.clipActionArr.frontDoor.time = 0.5;
-        fmWindowHjg.clipActionArr.backDoor.reset();
-        fmWindowHjg.clipActionArr.backDoor.time = 0.5;
-
-        fmWindowHjg.clipActionArr.frontDoor.stop();
-        fmWindowHjg.clipActionArr.backDoor.stop();
-      }
-
-      model.startAnimation = fmWindowHjg.render.bind(fmWindowHjg);
-      model.scene.remove(group);
-      group = fmWindowHjg.group;
-      const oldCameraPosition = { x: -761, y: 569, z: 871 };
-      setTimeout(async () => {
-        resolve(null);
-        model.scene.add(fmWindowHjg.group);
-        const position = { x: -2.28, y: -0.91, z: -5.68 };
-
-        await animateCamera(
-          oldCameraPosition,
-          { x: -2.27, y: -0.91, z: -5.67 },
-          { x: 66.257, y: 57.539, z: 94.313 },
-          { x: position.x, y: position.y, z: position.z },
-          model,
-          0.6
-        );
-      }, 300);
-    } else if (fmType === 'fmWindowZhq' && fmWindowZhq && fmWindowZhq.group) {
-      if (fmWindowZhq.clipActionArr.frontDoor && fmWindowZhq.clipActionArr.backDoor) {
-        fmWindowZhq.clipActionArr.frontDoor.reset();
-        fmWindowZhq.clipActionArr.frontDoor.time = 0.5;
-        fmWindowZhq.clipActionArr.backDoor.reset();
-        fmWindowZhq.clipActionArr.backDoor.time = 0.5;
-
-        fmWindowZhq.clipActionArr.frontDoor.stop();
-        fmWindowZhq.clipActionArr.backDoor.stop();
-      }
-
-      model.startAnimation = fmWindowZhq.render.bind(fmWindowZhq);
-      model.scene.remove(group);
-      group = fmWindowZhq.group;
-      const oldCameraPosition = { x: -761, y: 569, z: 871 };
-      setTimeout(async () => {
-        resolve(null);
-        model.scene.add(fmWindowZhq.group);
-        const position = { x: -2.28, y: -0.91, z: -5.68 };
-
-        await animateCamera(
-          oldCameraPosition,
-          { x: -2.27, y: -0.91, z: -5.67 },
-          { x: 66.257, y: 57.539, z: 94.313 },
-          { x: position.x, y: position.y, z: position.z },
-          model,
-          0.6
-        );
-      }, 300);
-    } else if (fmType === 'fmThreeTl' && fmThreeTl && fmThreeTl.group) {
-      if (fmThreeTl.clipActionArr.frontDoor && fmThreeTl.clipActionArr.backDoor && fmThreeTl.clipActionArr.centerDoor) {
-        fmThreeTl.clipActionArr.frontDoor.reset();
-        fmThreeTl.clipActionArr.frontDoor.time = 0.5;
-        fmThreeTl.clipActionArr.backDoor.reset();
-        fmThreeTl.clipActionArr.backDoor.time = 0.5;
-        fmThreeTl.clipActionArr.centerDoor.reset();
-        fmThreeTl.clipActionArr.centerDoor.time = 0.5;
-
-        fmThreeTl.clipActionArr.frontDoor.stop();
-        fmThreeTl.clipActionArr.backDoor.stop();
-        fmThreeTl.clipActionArr.centerDoor.stop();
-      }
-      if (fmThreeTl.frontDamperOpenMesh) fmThreeTl.frontDamperOpenMesh.visible = false;
-      if (fmThreeTl.frontDamperClosedMesh) fmThreeTl.frontDamperClosedMesh.visible = true;
-      if (fmThreeTl.centerDamperOpenMesh) fmThreeTl.centerDamperOpenMesh.visible = false;
-      if (fmThreeTl.centerDamperClosedMesh) fmThreeTl.centerDamperClosedMesh.visible = true;
-      if (fmThreeTl.backDamperOpenMesh) fmThreeTl.backDamperOpenMesh.visible = false;
-      if (fmThreeTl.backDamperClosedMesh) fmThreeTl.backDamperClosedMesh.visible = true;
-
-      // 显示单道风窗
-      model.startAnimation = fmThreeTl.render.bind(fmThreeTl);
-      model.scene.remove(group);
-      group = fmThreeTl.group;
-      const oldCameraPosition = { x: -761, y: 569, z: 871 };
-      setTimeout(async () => {
-        resolve(null);
-        model.scene.add(fmThreeTl.group);
-        const position = { x: 31.873075535732386, y: -3.501715880262631, z: -15.490295891616942 };
-
-        await animateCamera(
-          oldCameraPosition,
-          { x: -2.27, y: -0.91, z: -5.67 },
-          { x: 88.60102093060523, y: 53.89462381404774, z: 109.90762232602137 },
-          { x: position.x, y: position.y, z: position.z },
-          model,
-          0.6
-        );
-      }, 300);
-    } else if (fmType === 'fm3' && fm3 && fm3.group) {
-      if (fm3.clipActionArr.frontDoor && fm3.clipActionArr.backDoor) {
-        fm3.clipActionArr.frontDoor.reset();
-        fm3.clipActionArr.frontDoor.time = 0.5;
-        fm3.clipActionArr.backDoor.reset();
-        fm3.clipActionArr.backDoor.time = 0.5;
-        fm3.clipActionArr.frontDoor.stop();
-        fm3.clipActionArr.backDoor.stop();
-      }
-
-      if (fm3.frontDamperOpenMesh) fm3.frontDamperOpenMesh.visible = false;
-      if (fm3.frontDamperClosedMesh) fm3.frontDamperClosedMesh.visible = true;
-      if (fm3.backDamperOpenMesh) fm3.backDamperOpenMesh.visible = false;
-      if (fm3.backDamperClosedMesh) fm3.backDamperClosedMesh.visible = true;
-
-      model.scene.remove(group);
-      model.startAnimation = fm3.render.bind(fm3);
-      group = fm3.group;
-      group.rotation.y = 0;
-      const oldCameraPosition = { x: -1000, y: 100, z: 500 };
-      setTimeout(async () => {
-        resolve(null);
-        model.scene.add(fm3.group);
-        await animateCamera(
-          oldCameraPosition,
-          { x: 0, y: 0, z: 0 },
-          { x: 50.99, y: 69.32, z: 93.61 },
-          { x: -10.04, y: -14.38, z: -31.4 },
-          model,
-          0.8
-        );
-      }, 300);
-    } else if (fmType === 'fmXr' && fmXr && fmXr.group) {
-      if (fmXr.clipActionArr.frontDoor && fmXr.clipActionArr.backDoor) {
-        fmXr.clipActionArr.frontDoor.reset();
-        fmXr.clipActionArr.frontDoor.time = 0.5;
-        fmXr.clipActionArr.backDoor.reset();
-        fmXr.clipActionArr.backDoor.time = 0.5;
-        fmXr.clipActionArr.frontDoor.stop();
-        fmXr.clipActionArr.backDoor.stop();
-      }
-
-      if (fmXr.frontDamperOpenMesh) fmXr.frontDamperOpenMesh.visible = false;
-      if (fmXr.frontDamperClosedMesh) fmXr.frontDamperClosedMesh.visible = true;
-      if (fmXr.backDamperOpenMesh) fmXr.backDamperOpenMesh.visible = false;
-      if (fmXr.backDamperClosedMesh) fmXr.backDamperClosedMesh.visible = true;
-
-      model.startAnimation = fmXr.render.bind(fmXr);
-      model.scene.remove(group);
-      group = fmXr.group;
-      group.rotation.y = 0;
-
-      const oldCameraPosition = { x: -1000, y: 100, z: 500 };
-      setTimeout(async () => {
-        resolve(null);
-        model.scene.add(fmXr.group);
-        await animateCamera(
-          oldCameraPosition,
-          { x: 0, y: 0, z: 0 },
-          { x: 50.99, y: 69.32, z: 93.61 },
-          { x: -10.04, y: -14.38, z: -31.4 },
-          model,
-          0.8
-        );
-      }, 300);
-    } else if (fmType === 'fmTwoSs' && fmTwoSs && fmTwoSs.group) {
-      if (fmTwoSs.clipActionArr.frontDoor && fmTwoSs.clipActionArr.backDoor) {
-        fmTwoSs.clipActionArr.frontDoor.reset();
-        fmTwoSs.clipActionArr.frontDoor.time = 0.5;
-        fmTwoSs.clipActionArr.backDoor.reset();
-        fmTwoSs.clipActionArr.backDoor.time = 0.5;
-        fmTwoSs.clipActionArr.frontDoor.stop();
-        fmTwoSs.clipActionArr.backDoor.stop();
-      }
-
-      if (fmTwoSs.frontDamperOpenMesh) fmTwoSs.frontDamperOpenMesh.visible = false;
-      if (fmTwoSs.frontDamperClosedMesh) fmTwoSs.frontDamperClosedMesh.visible = true;
-      if (fmTwoSs.backDamperOpenMesh) fmTwoSs.backDamperOpenMesh.visible = false;
-      if (fmTwoSs.backDamperClosedMesh) fmTwoSs.backDamperClosedMesh.visible = true;
-
-      model.startAnimation = fmTwoSs.render.bind(fmTwoSs);
-      model.scene.remove(group);
-      group = fmTwoSs.group;
-      group.rotation.y = 0;
-
-      const oldCameraPosition = { x: -1000, y: 100, z: 500 };
-      setTimeout(async () => {
-        resolve(null);
-        model.scene.add(fmTwoSs.group);
-        await animateCamera(
-          oldCameraPosition,
-          { x: 0, y: 0, z: 0 },
-          { x: 50.99, y: 69.32, z: 93.61 },
-          { x: -10.04, y: -14.38, z: -31.4 },
-          model,
-          0.8
-        );
-      }, 300);
-    } else if (fmType === 'fmHsw3' && fmHsw3 && fmHsw3.group) {
-      if (fmHsw3.clipActionArr.frontDoor && fmHsw3.clipActionArr.backDoor) {
-        fmHsw3.clipActionArr.frontDoor.reset();
-        fmHsw3.clipActionArr.frontDoor.time = 0.5;
-        fmHsw3.clipActionArr.backDoor.reset();
-        fmHsw3.clipActionArr.backDoor.time = 0.5;
-        fmHsw3.clipActionArr.frontDoor.stop();
-        fmHsw3.clipActionArr.backDoor.stop();
-      }
-
-      if (fmHsw3.frontDamperOpenMesh) fmHsw3.frontDamperOpenMesh.visible = false;
-      if (fmHsw3.frontDamperClosedMesh) fmHsw3.frontDamperClosedMesh.visible = true;
-      if (fmHsw3.backDamperOpenMesh) fmHsw3.backDamperOpenMesh.visible = false;
-      if (fmHsw3.backDamperClosedMesh) fmHsw3.backDamperClosedMesh.visible = true;
-
-      model.startAnimation = fmHsw3.render.bind(fmHsw3);
-      model.scene.remove(group);
-      group = fmHsw3.group;
-      group.rotation.y = 0;
-
-      const oldCameraPosition = { x: -1000, y: 100, z: 500 };
-      setTimeout(async () => {
-        resolve(null);
-        model.scene.add(fmHsw3.group);
-        await animateCamera(
-          oldCameraPosition,
-          { x: 0, y: 0, z: 0 },
-          { x: 50.99, y: 69.32, z: 93.61 },
-          { x: -10.04, y: -14.38, z: -31.4 },
-          model,
-          0.8
-        );
-      }, 300);
-    } else if (fmType === 'fmYjXr' && fmYjXr && fmYjXr.group) {
-      if (fmYjXr.clipActionArr.frontDoor && fmYjXr.clipActionArr.backDoor) {
-        fmYjXr.clipActionArr.frontDoor.reset();
-        fmYjXr.clipActionArr.frontDoor.time = 0.5;
-        fmYjXr.clipActionArr.backDoor.reset();
-        fmYjXr.clipActionArr.backDoor.time = 0.5;
-        fmYjXr.clipActionArr.frontDoor.stop();
-        fmYjXr.clipActionArr.backDoor.stop();
-      }
-
-      if (fmYjXr.frontDamperOpenMesh) fmYjXr.frontDamperOpenMesh.visible = false;
-      if (fmYjXr.frontDamperClosedMesh) fmYjXr.frontDamperClosedMesh.visible = true;
-      if (fmYjXr.backDamperOpenMesh) fmYjXr.backDamperOpenMesh.visible = false;
-      if (fmYjXr.backDamperClosedMesh) fmYjXr.backDamperClosedMesh.visible = true;
-
-      model.startAnimation = fmYjXr.render.bind(fmYjXr);
-      model.scene.remove(group);
-      group = fmYjXr.group;
-      group.rotation.y = 0;
-
-      const oldCameraPosition = { x: -1000, y: 100, z: 500 };
-      setTimeout(async () => {
-        resolve(null);
-        model.scene.add(fmYjXr.group);
-        await animateCamera(
-          oldCameraPosition,
-          { x: 0, y: 0, z: 0 },
-          { x: 50.99, y: 69.32, z: 93.61 },
-          { x: -10.04, y: -14.38, z: -31.4 },
-          model,
-          0.8
-        );
-      }, 300);
-    } else if (fmType === 'fmYj' && fmYj && fmYj.group) {
-      if (fmYj.clipActionArr.frontDoor && fmYj.clipActionArr.backDoor) {
-        fmYj.clipActionArr.frontDoor.reset();
-        fmYj.clipActionArr.frontDoor.time = 0.5;
-        fmYj.clipActionArr.backDoor.reset();
-        fmYj.clipActionArr.backDoor.time = 0.5;
-        fmYj.clipActionArr.frontDoor.stop();
-        fmYj.clipActionArr.backDoor.stop();
-      }
-
-      if (fmYj.frontDamperOpenMesh) fmYj.frontDamperOpenMesh.visible = false;
-      if (fmYj.frontDamperClosedMesh) fmYj.frontDamperClosedMesh.visible = true;
-      if (fmYj.backDamperOpenMesh) fmYj.backDamperOpenMesh.visible = false;
-      if (fmYj.backDamperClosedMesh) fmYj.backDamperClosedMesh.visible = true;
-
-      model.startAnimation = fmYj.render.bind(fmYj);
-      model.scene.remove(group);
-      group = fmYj.group;
-      group.rotation.y = 0;
-
-      const oldCameraPosition = { x: -1000, y: 100, z: 500 };
-      setTimeout(async () => {
-        resolve(null);
-        model.scene.add(fmYj.group);
-        await animateCamera(
-          oldCameraPosition,
-          { x: 0, y: 0, z: 0 },
-          { x: 50.99, y: 69.32, z: 93.61 },
-          { x: -10.04, y: -14.38, z: -31.4 },
-          model,
-          0.8
-        );
-      }, 300);
-    } else if (fmType === 'fmSp1' && fmSp1 && fmSp1.group) {
-      if (fmSp1.clipActionArr.frontDoor) {
-        fmSp1.clipActionArr.frontDoor.reset();
-        fmSp1.clipActionArr.frontDoor.time = 0.5;
-        fmSp1.clipActionArr.frontDoor.stop();
-      }
-
-      if (fmSp1.frontDamperOpenMesh) fmSp1.frontDamperOpenMesh.visible = false;
-      if (fmSp1.frontDamperClosedMesh) fmSp1.frontDamperClosedMesh.visible = true;
-
-      model.startAnimation = fmSp1.render.bind(fmSp1);
-      model.scene.remove(group);
-      group = fmSp1.group;
-      group.rotation.y = 0;
-
-      const oldCameraPosition = { x: -1000, y: 100, z: 500 };
-      setTimeout(async () => {
-        resolve(null);
-        model.scene.add(fmSp1.group);
-        await animateCamera(
-          oldCameraPosition,
-          { x: 0, y: 0, z: 0 },
-          { x: 50.99, y: 69.32, z: 93.61 },
-          { x: -10.04, y: -14.38, z: -31.4 },
-          model,
-          0.8
-        );
-      }, 300);
-    }
-  });
-};
-
-export const initCameraCanvas = async (playerVal1) => {
-  if (!model) return;
-  if (fmType === 'fm1' && fm1) {
-    return await fm1.initCamera.call(fm1, playerVal1);
-  } else if (fmType === 'fm2' && fm2) {
-    return fm2.initCamera.call(fm2, playerVal1);
-  } else if (fmType === 'fm3' && fm3) {
-    return fm3.initCamera.call(fm3, playerVal1);
-  } else if (fmType === 'fmXr' && fmXr) {
-    return fmXr.initCamera.call(fmXr, playerVal1);
-  }
-};
-
-const loadModel = (code): Promise<any> => {
-  if (code === 'Fm1') return import('./gate.threejs.yy').then((r) => r.default);
-  if (code === 'Fm3') return import('./gate.threejs.qd').then((r) => r.default);
-  if (code === 'FmXR') return import('./gate.threejs.xr').then((r) => r.default);
-  if (code === 'Fm2') return import('./gate.threejs.three').then((r) => r.default);
-  if (code === 'FmTwoSs') return import('./gate.threejs.two.ss').then((r) => r.default);
-  if (code === 'FmThreeTl') return import('./gate.threejs.three.tl').then((r) => r.default);
-  if (code === 'FmDc') return import('./gate.threejs.window').then((r) => r.default);
-  if (code === 'FmDcHJG') return import('./gate.threejs.window.hjg').then((r) => r.default);
-  if (code === 'FmDcZHQ') return import('./gate.threejs.window.zhq').then((r) => r.default);
-  if (code === 'FmHsw3') return import('./gate.threejs.three.hsw').then((r) => r.default);
-  if (code === 'FmYjXr') return import('./gate.threejs.two.yj').then((r) => r.default); // 姚街行人
-  if (code === 'FmYj') return import('./gate.threejs.yj').then((r) => r.default); // 姚街
-  if (code === 'FmSp1') return import('./gate.threejs.one.sp').then((r) => r.default);
-  return import('./gate.threejs.yy').then((r) => r.default);
-};
-
-export const mountedThree = (playerDom) => {
-  // const { sysOrgCode } = useGlobSetting();
-  // const sysOrgCode = 'gsgszdek';
-  return new Promise(async (resolve) => {
-    model = new UseThree('#damper3D', '', '#deviceDetail');
-    model.setEnvMap('test1.hdr');
-    model.renderer.toneMappingExposure = 0.9;
-    model.camera.position.set(100, 0, 1000);
-    const dictCodes = getDictItemsByCode('gateStyle');
-    if (dictCodes && dictCodes.length > 0) {
-      for (let i = 0; i < dictCodes.length; i++) {
-        const dict = dictCodes[i];
-        switch (dict.value) {
-          case 'fmXr':
-            const FmXR = await loadModel('FmXR');
-            fmXr = new FmXR(model);
-            fmXr.mountedThree(playerDom);
-            break;
-          case 'fmYy':
-            const Fm1 = await loadModel('Fm1');
-            fm1 = new Fm1(model);
-            fm1.mountedThree(playerDom);
-            break;
-          case 'gate_qd':
-            const Fm3 = await loadModel('Fm3');
-            fm3 = new Fm3(model);
-            await fm3.mountedThree();
-            break;
-          case 'fmSs':
-            const FmTwoSs = await loadModel('FmTwoSs');
-            fmTwoSs = new FmTwoSs(model);
-            await fmTwoSs.mountedThree();
-            break;
-          case 'fmtl3':
-            const FmThreeTl = await loadModel('FmThreeTl');
-            fmThreeTl = new FmThreeTl(model);
-            await fmThreeTl.mountedThree();
-            break;
-          case 'fmSs3':
-            const Fm2 = await loadModel('Fm2');
-            fm2 = new Fm2(model);
-            await fm2.mountedThree();
-            break;
-          case 'fm_fc_hjg':
-            const FmDcHJG = await loadModel('FmDcHJG');
-            fmWindowHjg = new FmDcHJG(model);
-            await fmWindowHjg.mountedThree();
-            break;
-          case 'fm_fc':
-            const FmDc = await loadModel('FmDc');
-            fmWindow = new FmDc(model);
-            await fmWindow.mountedThree();
-            break;
-          case 'fm_fc_zhq': //fmWindowZhq
-            const FmDcZHQ = await loadModel('FmDcZHQ');
-            fmWindowZhq = new FmDcZHQ(model);
-            await fmWindowZhq.mountedThree();
-            break;
-          case 'fmHsw3':
-            const FmHsw3 = await loadModel('FmHsw3');
-            fmHsw3 = new FmHsw3(model);
-            await fmHsw3.mountedThree();
-            break;
-          case 'fmYjXr':
-            const FmYjXr = await loadModel('FmYjXr');
-            fmYjXr = new FmYjXr(model);
-            await fmYjXr.mountedThree();
-            break;
-          case 'fmYj':
-            const FmYj = await loadModel('FmYj');
-            fmYj = new FmYj(model);
-            await fmYj.mountedThree();
-            break;
-          case 'fmSp1':
-            const FmSp1 = await loadModel('FmSp1');
-            fmSp1 = new FmSp1(model);
-            await fmSp1.mountedThree();
-            break;
-        }
-      }
-      resolve(null);
-    } else {
-      const Fm3 = await loadModel('Fm3');
-      fm3 = new Fm3(model);
-      fm3.mountedThree(playerDom);
-      const FmTwoSs = await loadModel('FmTwoSs');
-      fmTwoSs = new FmTwoSs(model);
-      fmTwoSs.mountedThree(playerDom);
-      const Fm2 = await loadModel('Fm2');
-      fm2 = new Fm2(model);
-      fm2.mountedThree(playerDom);
-      // 三道门
-      const FmThreeTl = await loadModel('FmThreeTl');
-      fmThreeTl = new FmThreeTl(model);
-      if (fmThreeTl) fmThreeTl.mountedThree(playerDom);
-      const FmXR = await loadModel('FmXR');
-      fmXr = new FmXR(model);
-      fmXr.mountedThree(playerDom);
-      // 液压风门
-      const Fm1 = await loadModel('Fm1');
-      fm1 = new Fm1(model);
-      fm1.mountedThree(playerDom);
-      resolve(null);
-    }
-
-    model.animate();
-    // startAnimation();
-  });
-};
-
-export const destroy = () => {
-  if (model) {
-    model.isRender = false;
-    if (fm1) fm1.destroy();
-    if (fm2) fm2.destroy();
-    if (fm3) fm3.destroy();
-    if (fmXr) fmXr.destroy();
-    if (fmTwoSs) fmTwoSs.destroy();
-    if (fmWindowHjg) fmWindowHjg.destroy();
-    if (fmWindowZhq) fmWindowZhq.destroy();
-    if (fmWindow) fmWindow.destroy();
-    if (fmThreeTl) fmThreeTl.destroy();
-    if (fmHsw3) fmHsw3.destroy();
-    if (fmYjXr) fmYjXr.destroy();
-    if (fmYj) fmYj.destroy();
-    if (fmSp1) fmSp1.destroy();
-    fm1 = null;
-    fm2 = null;
-    fm3 = null;
-    fmXr = null;
-    fmWindow = null;
-    fmWindowHjg = null;
-    fmWindowZhq = null;
-    fmThreeTl = null;
-    fmTwoSs = null;
-    fmHsw3 = null;
-    fmYjXr = null;
-    fmYj = null;
-    fmSp1 = null;
-    group = null;
-    model.mixers = [];
-    model.destroy();
-  }
-  model = null;
-};

+ 124 - 147
src/views/vent/monitorManager/airDoor/components/door-content-r.vue

@@ -1,45 +1,67 @@
 <template>
   <div class="door-content-r">
     <div class="content-r-btn">
-      <a-button preIcon="ant-design:pause-circle-outlined" type="primary" @click="handlerOpenOrClose">同步开启</a-button>
+      <a-button preIcon="ant-design:pause-circle-outlined" type="primary"
+        @click="handlerOpenOrClose('open')">同步开启</a-button>
       <a-button preIcon="ant-design:play-circle-outlined" type="primary" style="margin: 0px 10px"
-        @click="handlerOpenOrClose">同步关闭</a-button>
+        @click="handlerOpenOrClose('close')">同步关闭</a-button>
       <a-button preIcon="ant-design:clock-circle-outlined" type="primary" @click="handlerTimeSet">定时设置</a-button>
     </div>
     <div class="content-r-container">
-      <div class="content-r-box" v-for="(item, index) in infoData" :key="index">
+      <div class="content-r-box" v-for="(item, index) in infoDatas" :key="index">
         <div class="box-title">
           <div class="title-text">{{ item.strinstallpos }}</div>
           <div class="title-detail" @click="handlerDetail(item.deviceID)">详情</div>
         </div>
         <div class="box-content">
           <!-- 二三维信息 -->
-          <component ref="modelRef" :loading="loading" :is="modelComponent" />
+          <gateDualSVG v-if="index == 0" ref="modelRef0"></gateDualSVG>
+          <gateDualSVG1 v-if="index == 1" ref="modelRef1"></gateDualSVG1>
+          <gateDualSVG2 v-if="index == 2" ref="modelRef2"></gateDualSVG2>
+          <gateDualSVG3 v-if="index == 3" ref="modelRef3"></gateDualSVG3>
+          <gateDualSVG4 v-if="index == 4" ref="modelRef4"></gateDualSVG4>
+          <gateDualSVG5 v-if="index == 5" ref="modelRef5"></gateDualSVG5>
+          <gateDualSVG6 v-if="index == 6" ref="modelRef6"></gateDualSVG6>
+          <gateDualSVG7 v-if="index == 7" ref="modelRef7"></gateDualSVG7>
+          <gateDualSVG8 v-if="index == 8" ref="modelRef8"></gateDualSVG8>
         </div>
         <img src="@/assets/images/camera.png" alt="" @click="handlerCamera(item, index)" />
       </div>
     </div>
     <!-- 同步开启/关闭弹窗 -->
-    <syncModal :visible="visible" @handleCancel="handleCancel"></syncModal>
+    <syncModal :visible="visible" @handleCancel="handleCancel" @handleOk="handleOk"></syncModal>
     <!-- 定时设置弹窗 -->
-    <timeSetModal :visibleTime="visibleTime" @handleCancelTime="handleCancelTime"></timeSetModal>
+    <timeSetModal :visibleTime="visibleTime" @handleCancelTime="handleCancelTime" @handleOk="handleOkTime">
+    </timeSetModal>
+    <!--30s延时提示弹窗-->
+    <tipModal :visible="visibletip" @handleCancel="handleCancelTip"></tipModal>
     <!-- 摄像头信息 -->
-    <Modal :visible="modalVisible" :destroyOnClose="true" @cancel="handleCancelCamera">
+    <Modals :visible="modalVisible" :destroyOnClose="true" @cancel="handleCancelCamera">
       <CameraModal :cameraData="cameraData"></CameraModal>
-    </Modal>
+    </Modals>
   </div>
 </template>
 
 <script setup lang="ts">
-import { reactive, ref, inject, watch } from 'vue';
+import { reactive, ref, inject, watch, onMounted, h } from 'vue';
 import syncModal from './syncModal.vue';
 import timeSetModal from './timeSetModal.vue';
 import CameraModal from './cameraModal.vue';
-import Modal from './Modal.vue';
+import Modals from './Modal.vue';
+import tipModal from './tipModal.vue'
+import gateDualSVG from './gateDualSVG.vue'
+import gateDualSVG1 from './gateDualSVG1.vue'
+import gateDualSVG2 from './gateDualSVG2.vue'
+import gateDualSVG3 from './gateDualSVG3.vue'
+import gateDualSVG4 from './gateDualSVG4.vue'
+import gateDualSVG5 from './gateDualSVG5.vue'
+import gateDualSVG6 from './gateDualSVG6.vue'
+import gateDualSVG7 from './gateDualSVG7.vue'
+import gateDualSVG8 from './gateDualSVG8.vue'
 import { useRouter } from 'vue-router';
-import { useGlobSetting } from '/@/hooks/setting';
-import { chartsColumns, getModelComponent } from '../airdoor.data';
-import { computePlay, play } from '../../gateMonitor/gate.threejs';
+import { devicecontrol, insertSyncRule, GetSyncRule } from '../airdoor.api'
+import { useMessage } from '/@/hooks/web/useMessage';
+
 let props = defineProps({
   infoData: {
     type: Array,
@@ -47,55 +69,89 @@ let props = defineProps({
       return [];
     },
   },
+  visibleTs30: {
+    type: Boolean,
+    default: false
+  }
 });
 
-const { sysOrgCode } = useGlobSetting();
+const { createMessage } = useMessage();
 const globalConfig = inject<any>('globalConfig');
 let router = useRouter();
+let infoDatas = ref<any[]>([])
 //同步开启/关闭弹窗-控制显示与隐藏
 let visible = ref(false);
+let visibleStatus = ref('')
 //设置定时弹窗-控制显示与影藏
 let visibleTime = ref(false);
+let Ids = ref('')
 //摄像头-控制显示与隐藏
 let modalVisible = ref(false);
 let cameraData = reactive({})
-//模型加载状态
-const loading = ref(false);
 /** 模型对应的组件,根据实际情况分为二维三维 */
-const modelComponent = getModelComponent(globalConfig.is2DModel, sysOrgCode);
-const modelRef = ref();
-
-/** 开关门动画调用 */
-let isFrontOpenRunning = false; //开关门动作是否在进行
-// let isFrontCloseRunning = false; //开关门动作是否在进行
-let isRearOpenRunning = false; //开关门动作是否在进行
-// let isRearCloseRunning = false; //开关门动作是否在进行
-let isMidOpenRunning = false; //中间门动作是否在进行
-// let isMidCloseRunning = false; //中间门动作是否在进行
-// 0 关闭 1 正在打开 2 打开 3正在关闭
-let frontDeviceState = 0; //记录设备状态,为了与下一次监测数据做比较
-let rearDeviceState = 0; //记录设备状态,为了与下一次监测数据做比较
-let midDeviceState = 0; //记录设备状态,为了与下一次监测数据做比较
-const frontDoorIsOpen = ref(false); //前门是否开启
-const backDoorIsOpen = ref(false); //后门是否开启
-const midDoorIsOpen = ref(false); //中间门是否开启
+const modelRef0 = ref(null);
+const modelRef1 = ref(null);
+const modelRef2 = ref(null);
+const modelRef3 = ref(null);
+const modelRef4 = ref(null);
+const modelRef5 = ref(null);
+const modelRef6 = ref(null);
+const modelRef7 = ref(null);
+const modelRef8 = ref(null);
+const visibletip = ref(false)
 
 
-//同步开启/关闭
-function handlerOpenOrClose() {
+//同步开启/关闭--弹窗
+function handlerOpenOrClose(data) {
   visible.value = true;
+  visibleStatus.value = data
 }
+//确定
+async function handleOk(param) {
+  let deviceStr = infoDatas.value.map(v => v.deviceID).join(',')
+  let paramcode = visibleStatus.value == 'open' ? 'sameTimeOpen' : 'sameTimeClose'
+  let res = await devicecontrol({ deviceids: deviceStr, paramcode: paramcode, password: param.pass || globalConfig?.simulatedPassword })
+  if (res) {
+    visible.value = param.visib
+    visibleStatus.value = ''
+  }
+}
+//取消
 function handleCancel(param) {
   visible.value = param;
+  visibleStatus.value = ''
 }
 
 //定时设置
-function handlerTimeSet() {
+async function handlerTimeSet() {
   visibleTime.value = true;
+  let res = await GetSyncRule({})
+  Ids.value = res[0]['id'] || ''
+  console.log(res, '读取规则')
 }
+//确定
+async function handleOkTime(param) {
+  console.log(param, '定时参数---')
+  let start_time = `${param.formState.hourS}:${param.formState.minuteS}:${param.formState.secondS}`
+  let end_time = `${param.formState.hourE}:${param.formState.minuteE}:${param.formState.secondE}`
+  let enabled = param.formState.checked ? '1' : '0'
+  let res = await insertSyncRule({ startTime: start_time, endTime: end_time, enabled: enabled, id: Ids.value, password: param.formState.passWord || globalConfig?.simulatedPassword })
+  console.log(res, '设置定时---')
+  if (res) {
+    visibleTime.value = param.visib
+    Ids.value = ''
+    createMessage.success('设置定时成功!');
+  }
+
+}
+//取消
 function handleCancelTime(param) {
   visibleTime.value = param;
 }
+//关闭定时弹窗
+function handleCancelTip(param) {
+  visibletip.value = param
+}
 //详情跳转
 function handlerDetail(id) {
   router.push(`/monitorChannel/monitor-gate?id=${id}&deviceType=gate`);
@@ -109,126 +165,47 @@ function handleCancelCamera(param) {
   modalVisible.value = param;
 }
 
-function playWindowAnimation(data, maxarea = 90, isFirst = false) {
-  computePlay(data, maxarea, isFirst);
-}
-function monitorAnimation(selectData) {
-  console.log(selectData, 'selectD---')
-  const timeScale = 0.005;
-  // 带风窗 风窗动画
-  if (selectData['gateStyle'] && selectData['gateStyle'].includes('fm_fc')) playWindowAnimation(selectData);
 
-  if (selectData.frontGateOpen == '1' && selectData.frontGateClose == '0' && !isFrontOpenRunning) {
-    isFrontOpenRunning = true;
-    if (frontDeviceState != 1) {
-      // import.meta.env.VITE_GLOB_IS_SIMULATE ? play(1, timeScale) : play(1);
-      play(1, timeScale);
-      frontDeviceState = 1;
-      frontDoorIsOpen.value = false;
-      backDoorIsOpen.value = true;
-    }
+function monitorAnimation(selectData, index) {
+  if (index == 0) {
+    modelRef0.value[0]?.animate?.(selectData.frontGateOpen == '1', selectData.midGateOpen == '1', selectData.rearGateOpen == '1');
+  } else if (index == 1) {
+    modelRef1.value[0]?.animate?.(selectData.frontGateOpen == '1', selectData.midGateOpen == '1', selectData.rearGateOpen == '1');
+  } else if (index == 2) {
+    modelRef2.value[0]?.animate?.(selectData.frontGateOpen == '1', selectData.midGateOpen == '1', selectData.rearGateOpen == '1');
+  } else if (index == 3) {
+    modelRef3.value[0]?.animate?.(selectData.frontGateOpen == '1', selectData.midGateOpen == '1', selectData.rearGateOpen == '1');
+  } else if (index == 4) {
+    modelRef4.value[0]?.animate?.(selectData.frontGateOpen == '1', selectData.midGateOpen == '1', selectData.rearGateOpen == '1');
+  } else if (index == 5) {
+    modelRef5.value[0]?.animate?.(selectData.frontGateOpen == '1', selectData.midGateOpen == '1', selectData.rearGateOpen == '1');
+  }else if (index == 6) {
+    modelRef6.value[0]?.animate?.(selectData.frontGateOpen == '1', selectData.midGateOpen == '1', selectData.rearGateOpen == '1');
+  }else if (index == 7) {
+    modelRef7.value[0]?.animate?.(selectData.frontGateOpen == '1', selectData.midGateOpen == '1', selectData.rearGateOpen == '1');
+  }else if (index == 8) {
+    modelRef8.value[0]?.animate?.(selectData.frontGateOpen == '1', selectData.midGateOpen == '1', selectData.rearGateOpen == '1');
   }
-
-  if (selectData.frontGateOpen == '0' && selectData.frontGateClose == '0' && !isFrontOpenRunning) {
-    isFrontOpenRunning = true;
-    if (frontDeviceState != 1) {
-      // import.meta.env.VITE_GLOB_IS_SIMULATE ? play(1, timeScale) : play(1);
-      play(1, timeScale);
-      frontDeviceState = 1;
-      frontDoorIsOpen.value = false;
-      backDoorIsOpen.value = true;
-    }
-  }
-
-  if (selectData.frontGateClose == '1' && selectData.frontGateOpen == '0' && isFrontOpenRunning) {
-    isFrontOpenRunning = false;
-    if (frontDeviceState != 0) {
-      // import.meta.env.VITE_GLOB_IS_SIMULATE ? play(2, timeScale) : play(2);
-      play(2, timeScale);
-      frontDeviceState = 0;
-      frontDoorIsOpen.value = false;
-      // backDoorIsOpen.value = false
-    }
-  }
-  if (selectData.rearGateOpen == '1' && selectData.rearGateClose == '0' && !isRearOpenRunning) {
-    isRearOpenRunning = true;
-
-    if (rearDeviceState != 1) {
-      // import.meta.env.VITE_GLOB_IS_SIMULATE ? play(3, timeScale) : play(3);
-      play(3, timeScale);
-      rearDeviceState = 1;
-      backDoorIsOpen.value = false;
-      frontDoorIsOpen.value = true;
-    }
-  }
-  if (selectData.rearGateOpen == '0' && selectData.rearGateClose == '0' && !isRearOpenRunning) {
-    isRearOpenRunning = true;
-
-    if (rearDeviceState != 1) {
-      // import.meta.env.VITE_GLOB_IS_SIMULATE ? play(3, timeScale) : play(3);
-      play(3, timeScale);
-      rearDeviceState = 1;
-      backDoorIsOpen.value = false;
-      frontDoorIsOpen.value = true;
-    }
-  }
-
-  if (selectData.rearGateClose == '1' && selectData.rearGateOpen == '0' && isRearOpenRunning) {
-    isRearOpenRunning = false;
-    if (rearDeviceState != 0) {
-      // import.meta.env.VITE_GLOB_IS_SIMULATE ? play(4, timeScale) : play(4);
-      play(4, timeScale);
-      rearDeviceState = 0;
-      backDoorIsOpen.value = false;
-    }
-  }
-
-  if (selectData.midGateOpen == '1' && selectData.midGateClose == '0' && !isMidOpenRunning) {
-    isMidOpenRunning = true;
-
-    if (midDeviceState != 1) {
-      // import.meta.env.VITE_GLOB_IS_SIMULATE ? play(3, timeScale) : play(3);
-      play(8, timeScale);
-      midDeviceState = 1;
-      backDoorIsOpen.value = false;
-      frontDoorIsOpen.value = true;
-    }
-  }
-
-  if (selectData.midGateOpen == '0' && selectData.midGateClose == '0' && !isMidOpenRunning) {
-    isMidOpenRunning = true;
-
-    if (midDeviceState != 1) {
-      // import.meta.env.VITE_GLOB_IS_SIMULATE ? play(3, timeScale) : play(3);
-      play(8, timeScale);
-      midDeviceState = 1;
-      backDoorIsOpen.value = false;
-      frontDoorIsOpen.value = true;
-    }
-  }
-
-  if (selectData.midGateClose == '1' && selectData.midGateOpen == '0' && isMidOpenRunning) {
-    isMidOpenRunning = false;
-    if (midDeviceState != 0) {
-      // import.meta.env.VITE_GLOB_IS_SIMULATE ? play(4, timeScale) : play(4);
-      play(9, timeScale);
-      midDeviceState = 0;
-      backDoorIsOpen.value = false;
-    }
-  }
-
-  modelRef.value?.animate?.(selectData.frontGateOpen == '1', selectData.midGateOpen == '1', selectData.rearGateOpen == '1');
 }
 
+
 watch(() => props.infoData, (newV, oldV) => {
   console.log(newV, 'new---')
+  infoDatas.value = newV
   if (newV.length) {
-    newV.forEach((el: any) => {
-      el = Object.assign(el, el.readData)
-      monitorAnimation(el);
-    })
+    setTimeout(() => {
+      newV.forEach((el: any, index: number) => {
+        el = Object.assign(el, el.readData)
+        monitorAnimation(el, index);
+      })
+    }, 1000)
+
   }
 })
+watch(() => props.visibleTs30, (newV, oldV) => {
+  console.log(newV,'gaunbi')
+  visibletip.value = newV
+})
 </script>
 
 <style lang="less" scoped>

+ 0 - 26
src/views/vent/monitorManager/airDoor/components/entryThree.vue

@@ -1,26 +0,0 @@
-<template>
-  <div class="bg" style="width: 100%; height: 100%; display: flex; justify-content: center; align-items: center; overflow: hidden">
-    <a-spin :spinning="loading" />
-    <div id="deviceDetail" class="device-detail">
-      <div id="deviceCard" class="device-card" style="z-index: -1; position: absolute">
-        <div class="title">KJ-980-F矿用本安型监控分站</div>
-        <div class="detail-box">
-          <div class="left-box"></div>
-          <div class="right-box">
-            <div><span class="detail-title">规格型号:</span> <span>KJ-980-F</span></div>
-            <div
-              ><span class="detail-title">技术参数:</span>
-              <span
-                >380V,电机功率22kW,50Hz,B级绝缘,额定电流42.2A,效率90.5%,能效等级3,接法角型,2940r/min,轴承6311/CM 6211/CM,功率因数0.89</span
-              >
-            </div>
-          </div>
-        </div>
-      </div>
-    </div>
-    <div id="damper3D" style="width: 100%; height: 100%; position: absolute; overflow: hidden"></div>
-  </div>
-</template>
-<script lang="ts" setup>
-  defineProps<{ loading: boolean }>();
-</script>

Dosya farkı çok büyük olduğundan ihmal edildi
+ 588 - 0
src/views/vent/monitorManager/airDoor/components/gateDualSVG1.vue


Dosya farkı çok büyük olduğundan ihmal edildi
+ 588 - 0
src/views/vent/monitorManager/airDoor/components/gateDualSVG2.vue


Dosya farkı çok büyük olduğundan ihmal edildi
+ 588 - 0
src/views/vent/monitorManager/airDoor/components/gateDualSVG3.vue


Dosya farkı çok büyük olduğundan ihmal edildi
+ 588 - 0
src/views/vent/monitorManager/airDoor/components/gateDualSVG4.vue


Dosya farkı çok büyük olduğundan ihmal edildi
+ 588 - 0
src/views/vent/monitorManager/airDoor/components/gateDualSVG5.vue


Dosya farkı çok büyük olduğundan ihmal edildi
+ 588 - 0
src/views/vent/monitorManager/airDoor/components/gateDualSVG6.vue


Dosya farkı çok büyük olduğundan ihmal edildi
+ 588 - 0
src/views/vent/monitorManager/airDoor/components/gateDualSVG7.vue


Dosya farkı çok büyük olduğundan ihmal edildi
+ 588 - 0
src/views/vent/monitorManager/airDoor/components/gateDualSVG8.vue


+ 9 - 7
src/views/vent/monitorManager/airDoor/components/syncModal.vue

@@ -1,12 +1,13 @@
 <template>
   <div class="sync-modal">
-    <a-modal v-model:visible="Visible" width="450px" :title="Title" centered destroyOnClose  @ok="handleOk" @cancel="$emit('handleCancel',false)">
+    <a-modal v-model:visible="Visible" width="450px" :title="Title" centered destroyOnClose @ok="handleOk"
+      @cancel="$emit('handleCancel', false)">
       <p>您正在执行 “开启/关闭” 全部风门的操作,请输入密码执行。</p>
       <a-form :model="formState" name="basic" :label-col="{ span: 6 }" :wrapper-col="{ span: 18 }" autocomplete="off">
-        <a-form-item label="输入密码">
-          <a-input style="width:220px" v-model:value="formState.passWord" />
+        <a-form-item label="输入密码" name="passWord" :rules="[{ required: true, message: '请输入密码!' }]">
+          <a-input-password style="width:220px" v-model:value="formState.passWord" />
         </a-form-item>
-      
+
       </a-form>
     </a-modal>
   </div>
@@ -30,9 +31,10 @@ let Visible = ref(false)
 let formState = reactive({
   passWord: ''
 })
+let $emit = defineEmits(['handleOk'])
 //确定
-function handleOk(){
-
+function handleOk() {
+  $emit('handleOk', { pass: formState.passWord, visib: false })
 }
 
 
@@ -42,7 +44,7 @@ watchEffect(() => {
 </script>
 
 <style lang="less" scoped>
-p{
+p {
   margin: 20px 40px;
 }
 </style>

+ 17 - 92
src/views/vent/monitorManager/airDoor/components/timeSetModal.vue

@@ -3,7 +3,7 @@
     <a-modal v-model:visible="Visible" width="550px" :title="Title" centered destroyOnClose @ok="handleOk"
       @cancel="$emit('handleCancelTime', false)">
 
-      <a-form :model="formState" name="basic" :label-col="{ span: 6 }" :wrapper-col="{ span: 18 }" autocomplete="off">
+      <a-form :model="formState" name="basic" :label-col="{ span: 4 }" :wrapper-col="{ span: 20 }" autocomplete="off">
         <a-form-item label="开启时间">
           <a-select ref="select" v-model:value="formState.hourS" style="width:130px" placeholder="请选择...">
             <a-select-option v-for="(item, index) in hourOption" :key="index" :value="item.value">{{ item.label
@@ -15,6 +15,11 @@
             }}</a-select-option>
           </a-select>
           <div class="unit">分</div>
+          <a-select ref="select" v-model:value="formState.secondS" style="width:130px" placeholder="请选择...">
+            <a-select-option v-for="(item, index) in minuteOption" :key="index" :value="item.value">{{ item.label
+            }}</a-select-option>
+          </a-select>
+          <div class="unit">秒</div>
         </a-form-item>
         <a-form-item label="关闭时间">
           <a-select ref="select" v-model:value="formState.hourE" style="width:130px" placeholder="请选择...">
@@ -27,12 +32,17 @@
             }}</a-select-option>
           </a-select>
           <div class="unit">分</div>
+          <a-select ref="select" v-model:value="formState.secondE" style="width:130px" placeholder="请选择...">
+            <a-select-option v-for="(item, index) in minuteOption" :key="index" :value="item.value">{{ item.label
+            }}</a-select-option>
+          </a-select>
+          <div class="unit">秒</div>
         </a-form-item>
         <a-form-item label="启动定时">
           <a-switch v-model:checked="formState.checked" />
         </a-form-item>
         <a-form-item label="输入密码">
-          <a-input v-model:value="formState.passWord" placeholder="请输入" style="width: 240px" />
+           <a-input-password style="width:240px"  placeholder="请输入" v-model:value="formState.passWord" />
         </a-form-item>
       </a-form>
     </a-modal>
@@ -41,6 +51,7 @@
 
 <script setup lang="ts">
 import { ref, reactive, watchEffect } from 'vue'
+import { hourOption, minuteOption } from '../airdoor.data'
 
 let props = defineProps({
   visibleTime: {
@@ -57,104 +68,18 @@ let Visible = ref(false)
 let formState = reactive({
   hourS: '',
   minuteS: '',
+  secondS: '',
   hourE: '',
   minuteE: '',
+  secondE: '',
   checked: true,
   passWord: ''
 })
-let hourOption = ref<any[]>([
-  { label: '00', value: 0 },
-  { label: '01', value: 1 },
-  { label: '02', value: 2 },
-  { label: '03', value: 3 },
-  { label: '04', value: 4 },
-  { label: '05', value: 5 },
-  { label: '06', value: 6 },
-  { label: '07', value: 7 },
-  { label: '08', value: 8 },
-  { label: '09', value: 9 },
-  { label: '10', value: 10 },
-  { label: '11', value: 11 },
-  { label: '12', value: 12 },
-  { label: '13', value: 13 },
-  { label: '14', value: 14 },
-  { label: '15', value: 15 },
-  { label: '16', value: 16 },
-  { label: '17', value: 17 },
-  { label: '18', value: 18 },
-  { label: '19', value: 19 },
-  { label: '20', value: 20 },
-  { label: '21', value: 21 },
-  { label: '22', value: 22 },
-  { label: '23', value: 23 },
-])
-let minuteOption = ref<any[]>([
-  { label: '00', value: 0 },
-  { label: '01', value: 1 },
-  { label: '02', value: 2 },
-  { label: '03', value: 3 },
-  { label: '04', value: 4 },
-  { label: '05', value: 5 },
-  { label: '06', value: 6 },
-  { label: '07', value: 7 },
-  { label: '08', value: 8 },
-  { label: '09', value: 9 },
-  { label: '10', value: 10 },
-  { label: '11', value: 11 },
-  { label: '12', value: 12 },
-  { label: '13', value: 13 },
-  { label: '14', value: 14 },
-  { label: '15', value: 15 },
-  { label: '16', value: 16 },
-  { label: '17', value: 17 },
-  { label: '18', value: 18 },
-  { label: '19', value: 19 },
-  { label: '20', value: 20 },
-  { label: '21', value: 21 },
-  { label: '22', value: 22 },
-  { label: '23', value: 23 },
-  { label: '24', value: 24 },
-  { label: '25', value: 25 },
-  { label: '26', value: 26 },
-  { label: '27', value: 27 },
-  { label: '28', value: 28 },
-  { label: '29', value: 29 },
-  { label: '30', value: 30 },
-  { label: '31', value: 31 },
-  { label: '32', value: 32 },
-  { label: '33', value: 33 },
-  { label: '34', value: 34 },
-  { label: '35', value: 35 },
-  { label: '36', value: 36 },
-  { label: '37', value: 37 },
-  { label: '38', value: 38 },
-  { label: '39', value: 39 },
-  { label: '40', value: 40 },
-  { label: '41', value: 41 },
-  { label: '42', value: 42 },
-  { label: '43', value: 43 },
-  { label: '44', value: 44 },
-  { label: '45', value: 45 },
-  { label: '46', value: 46 },
-  { label: '47', value: 47 },
-  { label: '48', value: 48 },
-  { label: '49', value: 49 },
-  { label: '50', value: 50 },
-  { label: '51', value: 51 },
-  { label: '52', value: 52 },
-  { label: '53', value: 53 },
-  { label: '54', value: 54 },
-  { label: '55', value: 55 },
-  { label: '56', value: 56 },
-  { label: '57', value: 57 },
-  { label: '58', value: 58 },
-  { label: '59', value: 59 },
-
-])
+let $emit = defineEmits(['handleOk'])
 
 //确定
 function handleOk() {
-
+  $emit('handleOk', { formState: formState, visib: false })
 }
 
 watchEffect(() => {

+ 59 - 0
src/views/vent/monitorManager/airDoor/components/tipModal.vue

@@ -0,0 +1,59 @@
+<template>
+  <div class="sync-modal">
+    <a-modal v-model:visible="Visible" width="450px" :title="Title" centered destroyOnClose
+      @ok="$emit('handleCancel', false)" @cancel="$emit('handleCancel', false)">
+
+      <p>
+        <exclamation-circle-outlined style="font-size: 16px;color:darkorange"  />
+        还有{{ timeout }}秒执行全部风门“开启/关闭”操作,请注意风门安全!
+      </p>
+    </a-modal>
+  </div>
+</template>
+
+<script setup lang="ts">
+import { ref, reactive, watchEffect, onMounted } from 'vue'
+import {
+  ExclamationCircleOutlined
+} from '@ant-design/icons-vue';
+let props = defineProps({
+  visible: {
+    type: Boolean,
+    default: false
+  },
+  Title: {
+    type: String,
+    default: '操作确认'
+  }
+})
+
+let timeout = ref(30)
+let Visible = ref(false)
+let $emit = defineEmits(['handleCancel'])
+
+//倒数计时30s
+function timeInit() {
+  let timer = setInterval(() => {
+    if (timeout.value > 0) {
+      timeout.value--
+    } else {
+      timer = undefined
+      clearInterval(timer)
+      $emit('handleCancel', false)
+    }
+  }, 1000)
+}
+
+watchEffect(() => {
+  Visible.value = props.visible
+})
+onMounted(() => {
+  timeInit()
+})
+</script>
+
+<style lang="less" scoped>
+p {
+  margin: 20px 40px;
+}
+</style>

+ 29 - 2
src/views/vent/monitorManager/airDoor/index.vue

@@ -6,7 +6,7 @@
         <doorMenuL :menuData="menuData"></doorMenuL>
       </div>
       <div class="container-right">
-        <doorContentR :infoData="menuData"></doorContentR>
+        <doorContentR :infoData="menuData" :visibleTs30="visibleTs30"></doorContentR>
       </div>
     </div>
   </div>
@@ -17,19 +17,46 @@ import { ref, onMounted } from 'vue'
 import customHeader from '/@/components/vent/customHeader.vue';
 import doorMenuL from './components/door-menu-l.vue'
 import doorContentR from './components/door-content-r.vue'
-import { getDevice } from './airdoor.api'
+import { getDevice, upcoming } from './airdoor.api'
 
 let menuData = ref<any[]>([])
+//控制定时设置提示弹窗显示/隐藏
+let visibleTs30 = ref(false)
 
+
+// https获取监测数据
+let timer: null | NodeJS.Timeout = null;
+function getMonitor(flag?) {
+  timer = setTimeout(
+    async () => {
+      //获取左侧菜单数据
+      await getMenuList()
+      await upcomingList()
+      getMonitor(false);
+    },
+    flag ? 0 : 5000
+  );
+}
 //左侧数据
 async function getMenuList() {
   let res = await getDevice({ devicetype: "gate", pagetype: "normal" })
   console.log(res, 'menuList')
   menuData.value = res.msgTxt[0].datalist || []
 }
+async function upcomingList() {
+   visibleTs30.value = true
+  // let res = await upcoming({})
+  // console.log(res, '定时30秒')
+  // if (res.length) {
+  //   visibleTs30.value = true
+  // } else {
+  //   visibleTs30.value = false
+  // }
+}
 
 onMounted(() => {
   getMenuList()
+  getMonitor()
 })
 
 </script>

+ 12 - 12
src/views/vent/monitorManager/footageMonitor/components/moduleCommon.vue

@@ -121,17 +121,17 @@ async function getCurveGraphDataList() {
   }
 }
 
-async function getMenuList() {
-  let res = await list({ devicekind: 'footageGas' })
-  menuList.value = res.records.map(el => {
-    return {
-      label: el.strname,
-      value: el.id,
-    }
-  }) || []
-  devID.value = menuList.value[0].value
-  devLabel.value = menuList.value[0].label
-}
+// async function getMenuList() {
+//   let res = await list({ devicekind: 'footageGas' })
+//   menuList.value = res.records.map(el => {
+//     return {
+//       label: el.strname,
+//       value: el.id,
+//     }
+//   }) || []
+//   devID.value = menuList.value[0].value
+//   devLabel.value = menuList.value[0].label
+// }
 function changeMenu(param) {
   devID.value = param.id
   getCurveGraphDataList()
@@ -186,7 +186,7 @@ function changeTime(param) {
 
 onMounted(async () => {
   timer = null
-  await getMenuList()
+  // await getMenuList()
   await getMonitor(true)
 });
 onUnmounted(() => {

+ 4 - 3
src/views/vent/monitorManager/footageMonitor/footage.api.ts

@@ -3,9 +3,8 @@ import { Modal } from 'ant-design-vue';
 
 enum Api {
   list = '/safety/ventanalyDeviceInfo/list',
- 
-   getCurveGraphData = '/safety/fteGasReg/getCurveGraphData',
-  
+  getCurveGraphData = '/safety/fteGasReg/getCurveGraphData',
+  baseList = '/safety/ventanalyManageSystem/list',
 
 }
 
@@ -20,3 +19,5 @@ export const list = (params) => defHttp.get({ url: Api.list, params });
  * @param params
  */
 export const getCurveGraphData = (params) => defHttp.post({ url: Api.getCurveGraphData, params });
+
+export const getTableList = (params) => defHttp.get({ url: Api.baseList, params });

+ 53 - 20
src/views/vent/monitorManager/footageMonitor/index.vue

@@ -1,39 +1,72 @@
 <template>
   <div class="footage-box">
-    <customHeader>进尺与瓦斯涌出分析</customHeader>
+    <customHeader :fieldNames="{ label: 'systemname', value: 'id', options: 'children' }" :options='options'
+      @change="getSelectRow" :optionValue="optionValue">进尺与瓦斯涌出分析</customHeader>
     <div class="box-container">
-      <ModuleCommon ></ModuleCommon>
+      <ModuleCommon></ModuleCommon>
     </div>
   </div>
 </template>
 
 <script setup lang="ts">
-import { onBeforeMount, ref, onMounted, onUnmounted, nextTick,provide } from 'vue';
-
+import { onBeforeMount, ref, onMounted, onUnmounted, nextTick, provide } from 'vue';
 import customHeader from '/@/components/vent/customHeader.vue';
 import ModuleCommon from './components/moduleCommon.vue';
+import { getTableList, list } from './footage.api'
+
+let options = ref()
+let optionValue = ref('')
+let menuList = ref<any[]>([])
+let devID = ref('')
+let devLabel = ref('')
+
+
+async function getSysDataSource() {
+  let res = await list({ devicekind: 'footageGas' })
+  options.value = res.records.map(el => {
+    return {
+      label: el.strname,
+      value: el.id,
+    }
+  }) || []
+   if (!optionValue.value) {
+      optionValue.value = options.value[0]['value']
+    }
+  // devID.value = menuList.value[0].value
+  // devLabel.value = menuList.value[0].label
+
+  // const res = await getTableList({ strtype: 'sys_surface_juejin', pagetype: 'normal' });
+  // if (!options.value && res) {
+  //   // 初始时选择第一条数据
+  //   options.value = res.records || [];
+  //   if (!optionValue.value) {
+  //     optionValue.value = options.value[0]['id']
+  //     getMenuList()
+  //   }
+  // }
+};
+
+// 切换检测数据
+async function getSelectRow(deviceID) {
+  // const currentData = dataSource.value.find((item: any) => {
+  //   return item.deviceID == deviceID
+  // })
+  // if (currentData) {
+  //   optionValue.value = currentData['deviceID']
+  //   Object.assign(selectData, currentData)
+  //   await getDeviceList()
+  // }
+}
 
-
-
-
-
-
-
-
-
-
-
-
-
-
-onUnmounted(() => {});
-
+onMounted(async () => {
+  // optionValue.value = currentRoute.value['query']['id']
+  await getSysDataSource()
+})
 </script>
 <style lang="less" scoped>
 @import '/@/design/theme.less';
 @ventSpace: zxm;
 
-
 .footage-box {
   position: relative;
   width: 100%;

Bu fark içinde çok fazla dosya değişikliği olduğu için bazı dosyalar gösterilmiyor