|
@@ -1,10 +1,10 @@
|
|
|
-import React, { useState, useEffect, useRef } from 'react';
|
|
|
+import React, { useState, useEffect, useRef, useCallback } from 'react';
|
|
|
import { message } from 'antd';
|
|
|
import styles from './index.less';
|
|
|
import commonStyles from '../common.less';
|
|
|
-import { equipImageMap } from '@/config/image.js';
|
|
|
+import { equipImageMap } from '@/config/sagacare_image.js';
|
|
|
import AnSwitch from '../anSwitch';
|
|
|
-import { getFeedbackDocumentsHttp, changeAirHttp } from '@/services/ant-design-pro/equipment';
|
|
|
+import { getFeedbackDocumentsHttp, changeAirHttp } from '@/services/sagacare_service/equipment';
|
|
|
|
|
|
export default ({ spaceId, projectId }) => {
|
|
|
const {
|
|
@@ -19,9 +19,13 @@ export default ({ spaceId, projectId }) => {
|
|
|
wind_down,
|
|
|
} = equipImageMap;
|
|
|
const hasAir = true;
|
|
|
- const [isOpen, setIsOpen] = useState(true);
|
|
|
+ let isNowAirStatus = useRef('');
|
|
|
+ let firstLoading = useRef(true);
|
|
|
+ let [isOpen, setIsOpen] = useState(false);
|
|
|
+ let [isLoading, setIsLoading] = useState(false);
|
|
|
const [imgSrc, setImgSrc] = useState(null);
|
|
|
let timer = useRef(null);
|
|
|
+ let airLoadingTimer = useRef(null);
|
|
|
const [spaceStatus, setStatusText] = useState('null');
|
|
|
const airExpend = [
|
|
|
{
|
|
@@ -59,30 +63,61 @@ export default ({ spaceId, projectId }) => {
|
|
|
};
|
|
|
|
|
|
function timerGetAirInfo(timeLong) {
|
|
|
- clearInterval(timer.current);
|
|
|
- timer.current = setInterval(() => {
|
|
|
+ clearTimeout(timer.current);
|
|
|
+ timer.current = setTimeout(() => {
|
|
|
getAirInfo(); // 获取空调状态
|
|
|
}, timeLong);
|
|
|
}
|
|
|
|
|
|
function changeSwitch(val) {
|
|
|
- const itemIdSum = val ? 12 : 10; // 10关闭 12开启
|
|
|
- clearInterval(timer.current);
|
|
|
- changeAir(itemIdSum);
|
|
|
+ if (!isLoading) {
|
|
|
+ setIsLoading(true);
|
|
|
+ changeIsLoading(val);
|
|
|
+ const itemIdSum = val ? 12 : 10; // 10关闭 12开启¬
|
|
|
+ changeAir(itemIdSum);
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
- const getAirInfo = () => {
|
|
|
+ const changeIsLoading = (val) => {
|
|
|
+ let countTimer = 0;
|
|
|
+ airLoadingTimer.current = setInterval(() => {
|
|
|
+ if (countTimer >= 30 || isNowAirStatus === val) {
|
|
|
+ setIsOpen(val); // 开关
|
|
|
+ setIsLoading(false);
|
|
|
+ clearInterval(airLoadingTimer.current);
|
|
|
+ } else {
|
|
|
+ countTimer++;
|
|
|
+ }
|
|
|
+ }, 1000);
|
|
|
+ };
|
|
|
+
|
|
|
+ const getAirInfo = useCallback(() => {
|
|
|
const paramsObj = {
|
|
|
objectId: spaceId,
|
|
|
projectId: projectId,
|
|
|
};
|
|
|
- getFeedbackDocumentsHttp(paramsObj).then((res) => {
|
|
|
- const val = res.icon == 7 ? false : true;
|
|
|
- setIsOpen(val); // 开关
|
|
|
- setStatusText(res.spaceStatus); // 状态文案
|
|
|
- statusImg(res.icon); // icon
|
|
|
- });
|
|
|
- };
|
|
|
+ getFeedbackDocumentsHttp(paramsObj)
|
|
|
+ .then((res) => {
|
|
|
+ const val = res.icon == 7 ? false : true;
|
|
|
+ if (firstLoading) {
|
|
|
+ isNowAirStatus = val;
|
|
|
+ setIsOpen(val); // 开关
|
|
|
+ setIsLoading(false);
|
|
|
+ } else {
|
|
|
+ isNowAirStatus = val;
|
|
|
+ }
|
|
|
+ firstLoading = false;
|
|
|
+ // setFirstLoading(false)
|
|
|
+ timerGetAirInfo(1000);
|
|
|
+ setStatusText(res.spaceStatus); // 状态文案
|
|
|
+ statusImg(res.icon); // icon
|
|
|
+ })
|
|
|
+ .catch(() => {
|
|
|
+ timerGetAirInfo(1000);
|
|
|
+ firstLoading = false;
|
|
|
+ // setIsLoading(false);
|
|
|
+ });
|
|
|
+ }, []);
|
|
|
|
|
|
const changeAir = (itemId) => {
|
|
|
const paramsObj = {
|
|
@@ -92,20 +127,20 @@ export default ({ spaceId, projectId }) => {
|
|
|
};
|
|
|
changeAirHttp(paramsObj).then((res) => {
|
|
|
if (res.result == 'success') {
|
|
|
- message.success('指令下发成功');
|
|
|
- getAirInfo();
|
|
|
- timerGetAirInfo(3000);
|
|
|
+ // message.success('指令下发成功');
|
|
|
+ // getAirInfo();
|
|
|
+ // timerGetAirInfo(2000);
|
|
|
} else {
|
|
|
- message.error('操作失败,请重试');
|
|
|
+ // message.error('操作失败,请重试');
|
|
|
}
|
|
|
});
|
|
|
};
|
|
|
|
|
|
useEffect(() => {
|
|
|
getAirInfo(); // 获取空调状态
|
|
|
- timerGetAirInfo(3000);
|
|
|
+ timerGetAirInfo(2000);
|
|
|
return () => {
|
|
|
- clearInterval(timer.current);
|
|
|
+ clearTimeout(timer.current);
|
|
|
};
|
|
|
}, []);
|
|
|
|
|
@@ -162,7 +197,8 @@ export default ({ spaceId, projectId }) => {
|
|
|
}}
|
|
|
className={commonStyles.eqBtn}
|
|
|
>
|
|
|
- <AnSwitch isOpen={isOpen} />
|
|
|
+ <AnSwitch isOpen={isOpen} isAir={true} isLoading={isLoading} />
|
|
|
+ {/*<Switch loading isOpen />*/}
|
|
|
</div>
|
|
|
</div>
|
|
|
</div>
|