Bladeren bron

弹窗灯

anxiaoxia 2 jaren geleden
bovenliggende
commit
6fd143c01b
1 gewijzigde bestanden met toevoegingen van 23 en 15 verwijderingen
  1. 23 15
      src/pages/Equipment/components/deviceModal/lampEq/index.jsx

+ 23 - 15
src/pages/Equipment/components/deviceModal/lampEq/index.jsx

@@ -12,15 +12,11 @@ export default ({ spaceId }) => {
   const [isOpen, setIsOpen] = useState(false); // 12 开, 10关
   const [lampArr, setLampArr] = useState([]);
   let startLightsStatusTimer = useRef(null);
-  let waitSetResultFlag = useRef(false); // 等待开关接口
+  //   let waitSetResultFlag = useRef(false); // 等待开关接口
   const getLamp = useCallback(() => {
     getLampHttp(spaceId).then(
       (res) => {
-        clearTimeout(startLightsStatusTimer);
-        startLightsStatusTimer = setTimeout(() => {
-          getLamp(); // 灯设备状态
-        }, 3000);
-        if (res.result != 'success' && waitSetResultFlag.current) return;
+        // if (res.result != 'success' && waitSetResultFlag.current) return;
         const arr = res.content;
         if (arr.length > 1) {
           setIsMore(true);
@@ -40,17 +36,24 @@ export default ({ spaceId }) => {
             }
           });
         }
-
         setLampArr(arr);
       },
       (e) => {},
     );
-  }, [waitSetResultFlag]);
+  }, []);
+
+  function getLampTimer() {
+    clearInterval(startLightsStatusTimer.current);
+    startLightsStatusTimer.current = setInterval(() => {
+      getLamp(); // 灯设备状态
+    }, 3000);
+  }
 
   useEffect(() => {
     getLamp();
+    getLampTimer();
     return () => {
-      clearTimeout(startLightsStatusTimer);
+      clearInterval(startLightsStatusTimer.current);
     };
   }, []);
 
@@ -59,6 +62,8 @@ export default ({ spaceId }) => {
     setFlagSvg(!flagSvg);
   }
   const changeSwitch = (val, type, id) => {
+    //  开关操作
+    clearInterval(startLightsStatusTimer.current);
     let paramsArr = [];
     if (type == 'total') {
       lampArr.forEach((item) => {
@@ -77,13 +82,16 @@ export default ({ spaceId }) => {
       paramsArr.push({ id: id, switch: val });
     }
     lampArr.forEach((item) => {
-      if (item.runStatus) {
-        setIsOpen(item.runStatus); // 总开关
-      }
+      setIsOpen(item.runStatus); // 总开关
+    });
+    // waitSetResultFlag.current = true;
+    setTimeout(() => {
+      setLampArr([...lampArr]);
+    }, 500);
+    setallLampHttp(paramsArr).then((res) => {
+      getLampTimer();
     });
-    waitSetResultFlag.current = true;
-    setLampArr([...lampArr]);
-    setallLamps(paramsArr, getLamp, waitSetResultFlag);
+    // setallLamps(paramsArr, getLamp, waitSetResultFlag);
   };
   return (
     <div className={commonStyles.box}>