Browse Source

定时器

anxiaoxia 2 years ago
parent
commit
24bddcd943

+ 33 - 67
src/pages/Equipment/checLampStatus.js

@@ -1,77 +1,43 @@
-import { setallLampHttp } from '@/services/ant-design-pro/equipment';
-
-let endTime = null;
-let startTime = null;
+import { setallLampHttp, getStatusHttp } from '@/services/ant-design-pro/equipment';
+import { message } from 'antd';
 
 // 定时调用 查询指令接口
-export const checkChangeLightStatusSuccess = (paramsArr) => {
-  if (endTime - startTime >= 5000) {
-    message.error('网络故障,请重试');
-  } else {
-    setallLampHttp(paramsArr).then((res) => {
-      return judgeChangeResponeseSuccess(res);
-    });
-  }
+export const checkChangeLightStatusSuccess = (paramsArr, result, fn) => {
+  let checkParams = paramsArr;
+  checkParams.forEach((item) => {
+    item.orderSeqNum = result.orderSeqNum;
+  });
+  getStatusHttp(checkParams).then((res) => {
+    judgeChangeResponeseSuccess(res, paramsArr, fn);
+  });
 };
 
 //   检查开关指令下发状态
-export const judgeChangeResponeseSuccess = (response) => {
-  return new Promise((resolve, reject) => {
-    let result = response.content[0];
-    if (result.result === 'success') {
-      if (result.state === 200 && result.exeResult === 'success') {
-        resolve({ status: 'success', data: result });
-      } else if (result.state === 500) {
-        reject();
-      } else {
-        checkChangeLightStatusSuccess();
-        resolve({ status: 'processing', data: result });
-      }
+export const judgeChangeResponeseSuccess = (response, paramsArr, fn) => {
+  let result = response.content[0];
+  if (result.result === 'success') {
+    if (result.state === 200 && result.exeResult === 'success') {
+      console.log('成功了');
+      fn(); // 查询灯设备
+    } else if (
+      (result.state === 200 && result.exeResult === 'processing:rcvd') ||
+      (result.state === 202 && !result.exeResult)
+    ) {
+      setTimeout(() => {
+        checkChangeLightStatusSuccess(paramsArr, result, fn);
+      }, 500);
+    }else if (result.state === 200 && result.exeResult === 'fail:timeout') {
+        message.error('网络超时,请重试');
     } else {
-      reject();
-      console.log('judgeChangeResponeseSuccess-fail');
+      message.error('操作失败,请重试');
     }
-  });
+  } else {
+    message.error('操作失败,请重试');
+  }
 };
 //  开关
-export  const setallLamps = (paramsArr,fn) => {
-//   let paramsArr = [];
-//   if (type == 'total') {
-//     lampArr.forEach((item) => {
-//       paramsArr.push({
-//         id: item.id,
-//         switch: val,
-//       });
-//     });
-//   } else {
-//     paramsArr.push({ id: id, switch: val });
-//   }
-  setallLampHttp(paramsArr)
-    .then((res) => {
-      startTime = Date.now(); // 开始计时'
-      return judgeChangeResponeseSuccess(res);
-    })
-    .then(
-      (res) => {
-        switch (res.status) {
-          case 'success':
-            fn();  // 查询灯设备
-            break;
-          case 'processing':
-            // 继续查询
-            endTime = Date.now();
-            setTimeout(() => {
-              let checkParams = paramsArr;
-              checkParams.forEach((item) => {
-                item.orderSeqNum = res.data.orderSeqNum;
-              });
-              checkChangeLightStatusSuccess(paramsArr);
-            }, 20);
-            break;
-        }
-      },
-      () => {
-        message.error('操作失败,请重试');
-      },
-    );
+export const setallLamps = (paramsArr, fn) => {
+  setallLampHttp(paramsArr).then((res) => {
+    judgeChangeResponeseSuccess(res, paramsArr, fn);
+  });
 };

+ 6 - 1
src/pages/Equipment/components/deviceModal/airEq/index.jsx

@@ -86,7 +86,9 @@ export default ({ spaceId, projectId }) => {
     changeAirHttp(paramsObj).then((res) => {
       if (res.result == 'success') {
         message.success('指令下发成功');
-        setStatusText(res.spaceStatus); // 状态文案
+        setTimeout(() => {
+          getAirInfo();
+        }, 500);
       } else {
         message.error('操作失败,请重试');
       }
@@ -97,6 +99,9 @@ export default ({ spaceId, projectId }) => {
     // timer = setInterval(() => {
     getAirInfo(); // 获取空调状态
     // }, 1000);
+    // return () => {
+    //   clearInterval(timer);
+    // };
   }, []);
 
   const AirExpend = () => {

+ 10 - 2
src/pages/Equipment/components/deviceModal/curtainEq/curtainBtn.jsx

@@ -5,7 +5,15 @@ import { setEquipeHttp } from '@/services/ant-design-pro/equipment';
 
 const { curtain_close_icon_row, curtain_open_icon_row } = equipImageMap;
 
-export default ({ id, isTotal, preTime, changePreTime, changeCurtainTex, curtainArr }) => {
+export default ({
+  id,
+  isTotal,
+  preTime,
+  changePreTime,
+  changeCurtainTex,
+  curtainArr,
+  projectId,
+}) => {
   const [downFlag, setDownFlag] = useState(false);
   const [upFlag, setUpFlag] = useState(false);
   const [count, setCount] = useState();
@@ -23,7 +31,7 @@ export default ({ id, isTotal, preTime, changePreTime, changeCurtainTex, curtain
       });
     } else {
       const params = {
-        projectId: 'Pj1101080259',
+        projectId: projectId,
         objectId: id, // 设备ID/窗帘组ID
         equipmentCategory: 'CFSSES', // 设备编码 窗帘:CFSSES
         infoCode: setType, // 窗帘开设定:EquipOnSet 窗帘关设定:EquipOffSet

+ 2 - 0
src/pages/Equipment/components/deviceModal/curtainEq/index.jsx

@@ -74,6 +74,7 @@ export default ({ spaceId, projectId }) => {
                 changePreTime={changePreTime}
                 changeCurtainTex={changeCurtainTex}
                 curtainArr={curtainArr}
+                projectId={projectId}
               ></CurtainBtn>
             </div>
           )}
@@ -92,6 +93,7 @@ export default ({ spaceId, projectId }) => {
                   changePreTime={changePreTime}
                   changeCurtainTex={changeCurtainTex}
                   curtainArr={curtainArr}
+                  projectId={projectId}
                 ></CurtainBtn>
               </div>
             </div>

+ 9 - 14
src/pages/Equipment/components/deviceModal/index.jsx

@@ -7,6 +7,7 @@ import AirEq from './airEq';
 import LampEq from './lampEq';
 import CurtainEq from './curtainEq';
 import { getSpaceAdjustList } from '@/services/ant-design-pro/equipment';
+import { useRef } from 'react';
 
 export default ({ onClose, showSpace }) => {
   const projectId = 'Pj1101080259';
@@ -83,6 +84,8 @@ export default ({ onClose, showSpace }) => {
   const [spaceName, setSpaceName] = useState('');
   const [paramList, setParamList] = useState([]);
   const [timeArr, setTimeArr] = useState([]);
+  let timer = useRef(null);
+  console.log(showSpace, 'showSpace');
   function showEqCard(type) {
     let flag = false;
     showSpace.equipStatusList.forEach((item) => {
@@ -123,19 +126,6 @@ export default ({ onClose, showSpace }) => {
   };
 
   const operateTime = () => {
-    // console.log(showSpace, 'showSpace');
-    /* showSpace.meetTime = [
-      //   { meetTimeStartTime: '06:00', meetTimeEndTime: '07:00' },
-      //   { meetTimeStartTime: '08:00', meetTimeEndTime: '11:00' },
-      { meetTimeStartTime: '14:00', meetTimeEndTime: '17:00' },
-      { meetTimeStartTime: '08:30', meetTimeEndTime: '18:30' },
-      { meetTimeStartTime: '14:00', meetTimeEndTime: '17:00' },
-      //   { meetTimeStartTime: '16:00', meetTimeEndTime: '19:00' },
-      //   { meetTimeStartTime: '20:00', meetTimeEndTime: '21:00' },
-    ];
-    showSpace.workTimeStartTime = '08:30';
-    showSpace.workTimeEndTime = '18:30';
-    */
     // 使用时间
     let timeArr = [];
     if (showSpace.meetTime && showSpace.workTimeStartTime) {
@@ -213,7 +203,12 @@ export default ({ onClose, showSpace }) => {
   };
 
   useEffect(() => {
-    getData();
+    timer = setInterval(() => {
+      getData();
+    }, 1000 * 60 * 5);
+    return () => {
+      clearInterval(timer);
+    };
   }, []);
 
   return (

+ 8 - 4
src/pages/Equipment/components/deviceModal/lampEq/index.jsx

@@ -15,20 +15,25 @@ export default ({ spaceId }) => {
   let endTime = null;
   const startLightsStatusTimer = useRef(null);
   const getLamp = () => {
-    // startLightsStatusTimer.current = setInterval(() => {
     getLampHttp(spaceId).then((res) => {
       const arr = res.content;
       if (arr.length > 1) setIsMore(true);
       arr.forEach((item) => {
-        if (item.runStatus) setIsOpen(true);
+        if (item.runStatus) {
+          setIsOpen(true);
+        } else {
+          setIsOpen(false);
+        }
       });
       setLampArr(arr);
     });
-    // }, 1000);
   };
 
   useEffect(() => {
+    // startLightsStatusTimer.current = setInterval(() => {
     getLamp(); // 灯设备状态
+    // }, 1000);
+    // return clearInterval(startLightsStatusTimer.current);
   }, []);
 
   const [flagSvg, setFlagSvg] = useState(false);
@@ -48,7 +53,6 @@ export default ({ spaceId }) => {
     } else {
       paramsArr.push({ id: id, switch: val });
     }
-    debugger;
     setallLamps(paramsArr, getLamp);
   };
   /*