import React, { useState, useEffect, useCallback, useRef } from 'react'; import PageHeader from '@/sgcomponents/PageHeader'; import Map from '@/sgcomponents/map'; import TopNavigator from '@/sgcomponents/topNavigator'; import RunNavRight from './components/topNavRight'; import { FormattedMessage, history, useModel } from 'umi'; import { Spin } from 'antd'; import { Popover } from 'antd'; import styles from './index.less'; import mapstyles from '@/assets/css/map.less'; import Icon from '@/tenants-ui/SgIcon'; import SearchInput from '@/sgcomponents/SearchInput'; import moment from 'moment'; import cx from 'classnames'; import { getMapList, queryDeviceTimeManage } from '@/services/sgservice/environment'; type runtimeNavType = { normalRun: any; overtimeWork: number; meetingBook: number; }; const Runtime: React.FC = () => { // const { maptemp6 } = equipImageMap; const { changeLastFloorId } = useModel('buildFloor'); const { searchSpace } = useModel('searchInfo'); const { getSpaceFunc } = useModel('spaceFunc'); const [loading, setLoading] = useState(false); const [runtimeNav, setRuntimeNav] = useState({}); const [mapList, setMapList] = useState([]); const [mapSize, setMapSize] = useState({}); const [mapCombineList, setMapCombineList] = useState([]); const [selFloorId, setSelFloorId] = useState(); const [selTime, setSelTime] = useState(moment().format('YYYYMMDD')); const [spaceTimeList, setSpaceTimeList] = useState([]); //楼层切换的回调 const changeFloorId = (data: string) => { setSelFloorId(data); }; const checkRecord = () => { history.push('/runtime/recordList'); console.log('showR'); }; //时间切换的回调 const changeTime = (time) => { var timeStr = time.format('YYYYMMDD'); setSelTime(timeStr); }; //获取地图 mapList useEffect(() => { if (selFloorId) { changeLastFloorId(selFloorId); setLoading(true); getMapList({ floorId: selFloorId, //floorId: 'Fl11010802593241ec348ecb4148806b9034c8957454', projectId: '', }) .then((res) => { setLoading(false); var data: API.MapInfo[] = (res.data || {}).spaceList || []; var mapSize = { width: (res.data || {}).width, height: (res.data || {}).height, }; setMapSize(mapSize); setMapList(data); }) .catch(() => { setLoading(false); }); } else { setMapList([]); } }, [selFloorId]); const getDeviceTime = () => { queryDeviceTimeManage({ floorId: selFloorId, //floorId: 'Fl11010802593241ec348ecb4148806b9034c8957454', date: selTime, }) .then(function (res) { //setLoading(false); var resdata = res || {}; setRuntimeNav({ normalRun: resdata.workTimeNum, overtimeWork: resdata.overTimeNum, meetingBook: resdata.meetTimeNum, }); var resList = res.content || []; resList.forEach((ritem) => { ritem.runTimeStatus = 'normalRun'; //正常工作 var timeList = []; if (ritem.hasOwnProperty('workTimeStartTime')) { var timeStrArr = [ritem.workTimeStartTime, ritem.workTimeEndTime]; timeList.push(timeStrArr); } if (ritem.hasOwnProperty('meetTime')) { ritem.runTimeStatus = 'meetingBook'; //会议预约 ritem.meetTime.forEach((meetitem) => { var timeStrArr = [meetitem.meetTimeStartTime, meetitem.meetTimeEndTime]; timeList.push(timeStrArr); }); } if (ritem.hasOwnProperty('overTimeStartTime')) { var timeStrArr = [ritem.overTimeStartTime, ritem.overTimeEndTime]; timeList.push(timeStrArr); ritem.runTimeStatus = 'overtimeWork'; //加班 } ritem.showTimeList = timeList; //console.log('timeList', timeList); ritem.showTimeStr = timeList.length > 0 ? timeList[0][0] + '-' + (timeList[timeList.length - 1][1] > timeList[0][1] ? timeList[timeList.length - 1][1] : timeList[0][1]) : ''; }); setSpaceTimeList(resList); }) .catch(() => { //setLoading(false); }); }; let setTimer = useRef(null); //获取时间列表 spaceTimeList useEffect(() => { if (selFloorId && selTime) { //setLoading(true); getDeviceTime(); //第一次执行 if (setTimer.current) { clearInterval(setTimer.current); setTimer.current = null; } //循环调接口 setTimer.current = setInterval(() => { getDeviceTime(); }, 10000); return () => { clearInterval(setTimer.current); }; } }, [selFloorId, selTime]); useEffect(() => { //mapList,spaceTimeList 这两个数据的结合 //console.log('dfsd-------'); // if (mapList && mapList.length > 0 && spaceTimeList && spaceTimeList.length > 0) { var combineList: any = []; mapList.map(function (mitem) { var spaceId = mitem.spaceId; var filterSpace = spaceTimeList.filter((ele) => { return ele.id == spaceId; }); var combine = Object.assign({}, mitem, filterSpace[0]); combineList.push(combine); }); setMapCombineList(combineList); // } }, [mapList, spaceTimeList]); return ( <> } action={ //
//
// // 查看加班记录 //
//
} /> } changeFloorId={changeFloorId} >
{/*
*/} {/*
08:00-23:00
Jozy Zone
*/} { return (
{/* {(item.timeList || []).map(function (titem: string, tindex: number) { return {titem},; })} */} {item.showTimeList && item.showTimeList.length > 1 && (
工作时间:
{item.showTimeList[0][0]}-{item.showTimeList[0][1]}
{item.runTimeStatus == 'overtimeWork' ? '加班时间' : '会议时间'}:
{(item.showTimeList || []).map((timeItem, index) => { if (index > 0) { return (
{timeItem[0]}-{timeItem[1]}
); } })}
} trigger="hover" style={{ color: 'none' }} > {item.showTimeStr} )} {item.showTimeList && item.showTimeList.length == 1 && ( {item.showTimeStr} )}
{item.localName}
); }} >
); }; export default Runtime;