|
@@ -24,8 +24,8 @@ import {
|
|
|
getMapList,
|
|
|
queryEquipStatistics,
|
|
|
queryDeviceTimeManage,
|
|
|
+ queryProjectEquipType,
|
|
|
} from '@/services/sagacare_service/environment';
|
|
|
-
|
|
|
import {
|
|
|
changeCurtain,
|
|
|
changeAir,
|
|
@@ -54,7 +54,7 @@ const Environment: React.FC = () => {
|
|
|
|
|
|
const [showModal, setShowModal] = useState<boolean>(false);
|
|
|
const [showSpace, setShowSpace] = useState<API.MapInfo>({}); //当前弹框选中的空间
|
|
|
- const [navigatorList, setNavigatorList] = useState<navigatorItem[]>([
|
|
|
+ const initNavigatorList = [
|
|
|
{
|
|
|
name: '全部设备',
|
|
|
id: 'all',
|
|
@@ -87,7 +87,8 @@ const Environment: React.FC = () => {
|
|
|
color: '#E89E32',
|
|
|
colorStr: '232, 158, 50,',
|
|
|
},
|
|
|
- ]);
|
|
|
+ ];
|
|
|
+ const [navigatorList, setNavigatorList] = useState<any[]>([]);
|
|
|
const [scale, setScale] = useState<number>(0.8);
|
|
|
const [maxScale, setMaxScale] = useState<number>(1);
|
|
|
const [transXInit, setTransXInit] = useState<number>(0);
|
|
@@ -99,7 +100,7 @@ const Environment: React.FC = () => {
|
|
|
const [equipMapList, setEquipMapList] = useState<any[]>([]);
|
|
|
const [timeMapList, setTimeMapList] = useState<any[]>([]);
|
|
|
|
|
|
- const [selNav, setSelNav] = useState<navigatorItem>(navigatorList[0]);
|
|
|
+ const [selNav, setSelNav] = useState<navigatorItem>(initNavigatorList[0]);
|
|
|
const [selFloorId, setSelFloorId] = useState<string>();
|
|
|
const [mapCombineList, setMapCombineList] = useState<any[]>([]);
|
|
|
const [loading, setLoading] = useState<boolean>(false);
|
|
@@ -122,6 +123,7 @@ const Environment: React.FC = () => {
|
|
|
//根据设备状态返回不同的 颜色
|
|
|
const getColorOpacity = (value: any, type?: string): string => {
|
|
|
let colorStr = '';
|
|
|
+ // console.log('getColorOpacity-selNav', selNav, navigatorList);
|
|
|
if (selNav.id == 'all') {
|
|
|
//全部设备时 colorStr赋值
|
|
|
var filterRes = navigatorList.filter(function (item) {
|
|
@@ -286,7 +288,7 @@ const Environment: React.FC = () => {
|
|
|
[mapListCopy],
|
|
|
);
|
|
|
|
|
|
- const queryDeviceManage = () => {
|
|
|
+ const queryDeviceManage = (equiptTypeArr: any) => {
|
|
|
//setLoading(true);
|
|
|
return queryEquipStatistics({
|
|
|
floorId: selFloorId,
|
|
@@ -297,15 +299,15 @@ const Environment: React.FC = () => {
|
|
|
//if (!setTimer.current) return;
|
|
|
var statistics = res.data.statistics || [];
|
|
|
//赋值 运行中的设备数量
|
|
|
- navigatorList.forEach(function (nItem) {
|
|
|
+
|
|
|
+ equiptTypeArr.forEach(function (nItem) {
|
|
|
var fres = statistics.filter((sItem: statistics) => {
|
|
|
return sItem.equipType == nItem.id;
|
|
|
});
|
|
|
nItem.num = (fres[0] || {}).runCount;
|
|
|
});
|
|
|
-
|
|
|
- setNavigatorList(navigatorList);
|
|
|
-
|
|
|
+ //console.log('queryDeviceManage333-arr', equiptTypeArr);
|
|
|
+ setNavigatorList(equiptTypeArr);
|
|
|
//设备空间信息
|
|
|
var spaceList = res.data.spaceList || [];
|
|
|
spaceList.forEach((item: any) => {
|
|
@@ -342,19 +344,49 @@ const Environment: React.FC = () => {
|
|
|
return 'next';
|
|
|
})
|
|
|
.catch(() => {
|
|
|
+ setNavigatorList(equiptTypeArr);
|
|
|
// setLoading(false);
|
|
|
});
|
|
|
};
|
|
|
+
|
|
|
let setTimer1 = useRef();
|
|
|
let setTimer2 = useRef();
|
|
|
- function getDeviceStatus() {
|
|
|
- queryDeviceManage().then((res) => {
|
|
|
+
|
|
|
+ function getDeviceStatus(equiptTypeArr: any) {
|
|
|
+ queryDeviceManage(equiptTypeArr).then((res) => {
|
|
|
clearTimeout(setTimer1.current);
|
|
|
setTimer1.current = setTimeout(() => {
|
|
|
- getDeviceStatus();
|
|
|
+ getDeviceStatus(equiptTypeArr);
|
|
|
}, 8000);
|
|
|
});
|
|
|
}
|
|
|
+
|
|
|
+ function getProjectEquipType() {
|
|
|
+ // 项目拥有的设备
|
|
|
+ return queryProjectEquipType().then((res) => {
|
|
|
+ const resData = res.data || [];
|
|
|
+ let arr: any = [];
|
|
|
+ initNavigatorList.map((item: any, idx: any) => {
|
|
|
+ if (idx === 0) {
|
|
|
+ arr.push(item);
|
|
|
+ return;
|
|
|
+ } // 第一个为全部设备,不参与对比
|
|
|
+ let hasEquip = false; // 没有此设备
|
|
|
+ resData.map((resItem: any) => {
|
|
|
+ if (item.id === resItem) {
|
|
|
+ hasEquip = true;
|
|
|
+ }
|
|
|
+ });
|
|
|
+ if (hasEquip) {
|
|
|
+ arr.push(item);
|
|
|
+ }
|
|
|
+ });
|
|
|
+ //console.log('setNavigatorList-arr1111', arr);
|
|
|
+ //setNavigatorList(arr);
|
|
|
+ return arr;
|
|
|
+ });
|
|
|
+ }
|
|
|
+
|
|
|
function getSpaceHasPerson(sfId: any) {
|
|
|
//获取有人无人
|
|
|
querySpaceAdjustList(sfId).then((res) => {
|
|
@@ -367,34 +399,23 @@ const Environment: React.FC = () => {
|
|
|
}
|
|
|
//获取设备状态 设备种类
|
|
|
useEffect(() => {
|
|
|
- if (selFloorId) {
|
|
|
- getDeviceStatus();
|
|
|
- getSpaceHasPerson(selFloorId);
|
|
|
-
|
|
|
- // queryDeviceManage(); //第一次执行
|
|
|
- // if (setTimer.current) {
|
|
|
- // clearInterval(setTimer.current);
|
|
|
- // setTimer.current = null;
|
|
|
- // }
|
|
|
- // //循环调接口
|
|
|
- // setTimer.current = setInterval(() => {
|
|
|
- // queryDeviceManage();
|
|
|
- // }, 3000);
|
|
|
- }
|
|
|
+ (async function () {
|
|
|
+ var equiptTypeArr = await getProjectEquipType();
|
|
|
+ //console.log('getProjectEquipType222-equiptTypeArr', equiptTypeArr);
|
|
|
+ if (selFloorId) {
|
|
|
+ getDeviceStatus(equiptTypeArr);
|
|
|
+ getSpaceHasPerson(selFloorId);
|
|
|
+ }
|
|
|
+ })();
|
|
|
|
|
|
return () => {
|
|
|
//clearInterval(setTimer.current);
|
|
|
+ console.log('clearTimeout-clear');
|
|
|
clearTimeout(setTimer1.current);
|
|
|
clearTimeout(setTimer2.current);
|
|
|
};
|
|
|
}, [selFloorId]);
|
|
|
|
|
|
- // useEffect(() => {
|
|
|
- // if (selFloorId) {
|
|
|
- // querySpaceAdjustList(selFloorId);
|
|
|
- // }
|
|
|
- // }, [selFloorId]);
|
|
|
-
|
|
|
//获取时间列表 spaceTimeList
|
|
|
useEffect(() => {
|
|
|
if (selFloorId) {
|
|
@@ -427,32 +448,32 @@ const Environment: React.FC = () => {
|
|
|
return ele.id == spaceId;
|
|
|
});
|
|
|
var filterSpace3 = hasPersonList.filter((ele) => {
|
|
|
- return ele.id == spaceId;
|
|
|
+ return ele.spaceId == spaceId;
|
|
|
});
|
|
|
var combine = Object.assign({}, filterSpace3[0], filterSpace2[0], mitem, filterSpace1[0]);
|
|
|
|
|
|
combineList.push(combine);
|
|
|
});
|
|
|
setMapCombineList(combineList);
|
|
|
- console.log('combine');
|
|
|
}, [equipMapList, mapList, timeMapList, hasPersonList]);
|
|
|
|
|
|
let firtTime: number = 0;
|
|
|
let lastTime: number = 0;
|
|
|
return (
|
|
|
- <>
|
|
|
+ <div className={styles.sagawrap}>
|
|
|
<PageHeader title={<FormattedMessage id="menu.equipment" />} action={<SearchInput />} />
|
|
|
<TopNavigator
|
|
|
navigatorList={navigatorList}
|
|
|
type={'equipment'}
|
|
|
navigatorChange={navigatorChange}
|
|
|
action={
|
|
|
- <TopNavRight
|
|
|
- selNavObj={selNav}
|
|
|
- navigatorList={navigatorList}
|
|
|
- mapList={mapCombineList}
|
|
|
- queryDeviceManage={queryDeviceManage}
|
|
|
- ></TopNavRight>
|
|
|
+ navigatorList.length > 0 && (
|
|
|
+ <TopNavRight
|
|
|
+ selNavObj={selNav}
|
|
|
+ navigatorList={navigatorList}
|
|
|
+ mapList={mapCombineList}
|
|
|
+ ></TopNavRight>
|
|
|
+ )
|
|
|
}
|
|
|
changeFloorId={changeFloorId}
|
|
|
selParamObj={selNav}
|
|
@@ -611,8 +632,7 @@ const Environment: React.FC = () => {
|
|
|
</div>
|
|
|
)}
|
|
|
{(selNav.id == 'airConditioner' || selNav.id == 'light') &&
|
|
|
- item.isPassengerPass &&
|
|
|
- false &&
|
|
|
+ item.runStatus === 1 &&
|
|
|
item.canClick && (
|
|
|
<div
|
|
|
className={mapstyles.hasPerson}
|
|
@@ -633,8 +653,7 @@ const Environment: React.FC = () => {
|
|
|
</div>
|
|
|
)}
|
|
|
{(selNav.id == 'airConditioner' || selNav.id == 'light') &&
|
|
|
- false &&
|
|
|
- item.isPassengerPass == false &&
|
|
|
+ item.runStatus === 0 &&
|
|
|
item.canClick && (
|
|
|
<div
|
|
|
className={mapstyles.hasPerson}
|
|
@@ -728,7 +747,7 @@ const Environment: React.FC = () => {
|
|
|
}}
|
|
|
></DeviceModal>
|
|
|
)}
|
|
|
- </>
|
|
|
+ </div>
|
|
|
);
|
|
|
};
|
|
|
|