|
@@ -11,43 +11,46 @@ export default ({ spaceId }) => {
|
|
|
const [isMore, setIsMore] = useState(false);
|
|
|
const [isOpen, setIsOpen] = useState(false); // 12 开, 10关
|
|
|
const [lampArr, setLampArr] = useState([]);
|
|
|
- let startTime = null;
|
|
|
- let endTime = null;
|
|
|
- const startLightsStatusTimer = useRef(null);
|
|
|
- const getLamp = () => {
|
|
|
- getLampHttp(spaceId).then((res) => {
|
|
|
- if (res.result != 'success') return;
|
|
|
- const arr = res.content;
|
|
|
- if (arr.length > 1) {
|
|
|
- setIsMore(true);
|
|
|
- let totalIsOpen = false;
|
|
|
- arr.forEach((item) => {
|
|
|
- if (item.runStatus) {
|
|
|
- totalIsOpen = true;
|
|
|
- }
|
|
|
- });
|
|
|
- setIsOpen(totalIsOpen);
|
|
|
- } else {
|
|
|
- arr.forEach((item) => {
|
|
|
- if (item.runStatus) {
|
|
|
- setIsOpen(true);
|
|
|
- } else {
|
|
|
- setIsOpen(false);
|
|
|
- }
|
|
|
- });
|
|
|
- }
|
|
|
+ let startLightsStatusTimer = useRef(null);
|
|
|
+ let waitSetResultFlag = useRef(false); // 等待开关接口
|
|
|
+ const getLamp = useCallback(() => {
|
|
|
+ getLampHttp(spaceId).then(
|
|
|
+ (res) => {
|
|
|
+ clearTimeout(startLightsStatusTimer);
|
|
|
+ startLightsStatusTimer = setTimeout(() => {
|
|
|
+ getLamp(); // 灯设备状态
|
|
|
+ }, 3000);
|
|
|
+ if (res.result != 'success' && waitSetResultFlag.current) return;
|
|
|
+ const arr = res.content;
|
|
|
+ if (arr.length > 1) {
|
|
|
+ setIsMore(true);
|
|
|
+ let totalIsOpen = false;
|
|
|
+ arr.forEach((item) => {
|
|
|
+ if (item.runStatus) {
|
|
|
+ totalIsOpen = true;
|
|
|
+ }
|
|
|
+ });
|
|
|
+ setIsOpen(totalIsOpen);
|
|
|
+ } else {
|
|
|
+ arr.forEach((item) => {
|
|
|
+ if (item.runStatus) {
|
|
|
+ setIsOpen(true);
|
|
|
+ } else {
|
|
|
+ setIsOpen(false);
|
|
|
+ }
|
|
|
+ });
|
|
|
+ }
|
|
|
|
|
|
- setLampArr(arr);
|
|
|
- });
|
|
|
- };
|
|
|
+ setLampArr(arr);
|
|
|
+ },
|
|
|
+ (e) => {},
|
|
|
+ );
|
|
|
+ }, [waitSetResultFlag]);
|
|
|
|
|
|
useEffect(() => {
|
|
|
getLamp();
|
|
|
- startLightsStatusTimer.current = setInterval(() => {
|
|
|
- getLamp(); // 灯设备状态
|
|
|
- }, 1000);
|
|
|
return () => {
|
|
|
- clearInterval(startLightsStatusTimer.current);
|
|
|
+ clearTimeout(startLightsStatusTimer);
|
|
|
};
|
|
|
}, []);
|
|
|
|
|
@@ -59,15 +62,28 @@ export default ({ spaceId }) => {
|
|
|
let paramsArr = [];
|
|
|
if (type == 'total') {
|
|
|
lampArr.forEach((item) => {
|
|
|
+ item.runStatus = val;
|
|
|
paramsArr.push({
|
|
|
id: item.id,
|
|
|
switch: val,
|
|
|
});
|
|
|
});
|
|
|
} else {
|
|
|
+ lampArr.forEach((item) => {
|
|
|
+ if (item.id == id) {
|
|
|
+ item.runStatus = val;
|
|
|
+ }
|
|
|
+ });
|
|
|
paramsArr.push({ id: id, switch: val });
|
|
|
}
|
|
|
- setallLamps(paramsArr, getLamp);
|
|
|
+ lampArr.forEach((item) => {
|
|
|
+ if (item.runStatus) {
|
|
|
+ setIsOpen(item.runStatus); // 总开关
|
|
|
+ }
|
|
|
+ });
|
|
|
+ waitSetResultFlag.current = true;
|
|
|
+ setLampArr([...lampArr]);
|
|
|
+ setallLamps(paramsArr, getLamp, waitSetResultFlag);
|
|
|
};
|
|
|
return (
|
|
|
<div className={commonStyles.box}>
|