anxiaoxia 3 years ago
parent
commit
91317bdc9c

+ 18 - 0
config/proxy.ts

@@ -25,6 +25,24 @@ export default {
       changeOrigin: true,
       //   pathRewrite: { '^/': '' },
     },
+    '/api2/': {
+      // 要代理的地址
+      target: 'http://192.168.0.14:52010/',
+      // 配置了这个可以从 http 代理到 https
+      // 依赖 origin 的功能可能需要这个,比如 cookie
+      changeOrigin: true,
+      pathRewrite: { '^/api2': '' },
+    },
+    '/api3/': {
+      // 要代理的地址
+      //target: 'http://api.sagacloud.cn/',
+      target: 'http://192.168.0.65:52015/',
+
+      // 配置了这个可以从 http 代理到 https
+      // 依赖 origin 的功能可能需要这个,比如 cookie
+      changeOrigin: true,
+      pathRewrite: { '^/api3': '' },
+    },
   },
   test: {
     '/api/': {

+ 6 - 5
src/components/SearchInput/index.tsx

@@ -1,7 +1,7 @@
 import React, { useEffect, useState } from 'react';
 import styles from './index.less';
 import { Select } from 'antd';
-import useMapList from '@/hooks/useMapList';
+import { mapListData } from '@/hooks/useMapList';
 import { SearchOutlined } from '@ant-design/icons';
 
 type mapResType = {
@@ -14,23 +14,24 @@ type SearchInputProps = {
   onSearch: (s: string) => void;
 };
 const SearchInput: React.FC<SearchInputProps> = ({ onSearch }) => {
-  const mapList = useMapList();
   const [resData, setResData] = useState<mapResType[]>([]);
   const [value, setValue] = useState<any>();
 
   const handleSearch = (value: string) => {
     //debugger;
+    console.log('search', mapListData);
+
     if (value) {
       let data: mapResType[] = [];
-      mapList.map((item, index) => {
-        if (item.localName.indexOf(value) > -1) {
+      mapListData.map((item, index) => {
+        if ((item.localName || '').indexOf(value) > -1) {
           data.push({
             text: item.localName,
             value: item.localName,
           });
         }
-        setResData(data);
       });
+      setResData(data);
     } else {
       setResData([]);
     }

+ 28 - 12
src/components/map/index.tsx

@@ -1,18 +1,30 @@
 import React, { useState, useEffect } from 'react';
 import mapstyles from '@/assets/css/map.less';
-import useMapList from '@/hooks/useMapList';
+import { useMapList } from '@/hooks/useMapList';
+import { useModel } from 'umi';
 
 import cx from 'classnames';
 import Icon from '@/tenants-ui/Icon';
+import { map } from 'lodash';
 
 type MapProps = {
   type: string;
   searchText: string;
+  selFloorId: string;
   render: (item: API.MapInfo, index: number) => React.ReactNode;
 };
 
-const Map: React.FC<MapProps> = ({ type, searchText, render }) => {
-  const mapList = useMapList();
+const Map: React.FC<MapProps> = ({ type, searchText, selFloorId, render }) => {
+  //const { mapList } = useMapList(selFloorId);
+
+  // const [mapList] = useState<API.MapInfo[]>(mapListData);
+
+  //   const { mapList, getMapListData } = useModel('map', (model) => ({
+  //     mapList: model.mapList,
+  //     getMapListData: model.getMapListData,
+  //   }));
+
+  const { mapList, getMapListData } = useModel('map');
 
   const [startPageX, setStartPageX] = useState<number>(0);
   const [startPageY, setStartPageY] = useState<number>(0);
@@ -21,8 +33,12 @@ const Map: React.FC<MapProps> = ({ type, searchText, render }) => {
   const [translateY, setTranslateY] = useState<number>(0);
   const [mscale, setMscale] = useState<number>(1);
   const [canMove, setCanMove] = useState<boolean>(false);
-  //   let mapWidth:number = 3000,
-  //     mapHeight:number = 1200;
+
+  useEffect(() => {
+    getMapListData(selFloorId);
+  }, [selFloorId]);
+  //   let mapWidth: number = 3000,
+  //     mapHeight: number = 1200;
 
   const mouseDownEvent = (event: React.MouseEvent) => {
     // startPageX = event.pageX;
@@ -64,17 +80,17 @@ const Map: React.FC<MapProps> = ({ type, searchText, render }) => {
   };
 
   useEffect(() => {
-    debugger;
+    //debugger;
     console.log('searchText', searchText);
     if (searchText) {
       let left: any = 0,
         top: any = 0;
-      mapList.map((item, index) => {
-        if (item.localName == searchText) {
-          left = -(item.left || 0);
-          top = -(item.top || 0);
-        }
-      });
+      //   mapList.map((item, index) => {
+      //     if (item.localName == searchText) {
+      //       left = -(item.left || 0);
+      //       top = -(item.top || 0);
+      //     }
+      //   });
       // debugger;
       setTranslateX(left);
       setTranslateY(top);

+ 64 - 0
src/components/topNavigator/index.less

@@ -0,0 +1,64 @@
+.label {
+  color: #c4c4c4;
+}
+.topnavigator {
+  box-sizing: border-box;
+  //   display: flex;
+  height: 68px;
+  margin-top: 23px;
+  background: #fff;
+  .floor {
+    display: flex;
+    align-items: center;
+    float: left;
+    //justify-content: center;
+    width: 120px;
+    height: 100%;
+    border-right: 1px solid rgba(196, 196, 196, 0.4);
+  }
+  .navigator {
+    display: flex;
+    float: left;
+    height: 100%;
+    .navItem {
+      display: flex;
+      flex-direction: column;
+      align-items: center;
+      justify-content: center;
+      width: 50px;
+      height: 100%;
+      margin: 0 20px;
+      font-size: 12px;
+      border-bottom: 3px solid transparent;
+      cursor: pointer;
+      .text {
+        margin-top: 7px;
+        color: #000;
+        text-align: center;
+      }
+    }
+  }
+  .right {
+    display: flex;
+    flex-direction: column;
+    justify-content: center;
+    float: right;
+    width: 220px;
+    height: 100%;
+    white-space: nowrap;
+    .firstLine {
+      font-weight: 500;
+      line-height: 20px;
+    }
+    .value {
+      // color: #e5574f;
+      font-size: 28px;
+    }
+    .unit {
+      // color: #e5574f;
+    }
+    .text {
+      color: #c4c4c4;
+    }
+  }
+}

+ 167 - 0
src/components/topNavigator/index.tsx

@@ -0,0 +1,167 @@
+import React, { useState, useEffect, useCallback } from 'react';
+import styles from './index.less';
+import cx from 'classnames';
+import { Select } from 'antd';
+
+import type { navigatorItem } from '@/pages/Environment/index';
+import { getBuildingList, getFloorList } from '@/services/ant-design-pro/environment';
+
+export type topNavigatorProps = {
+  navigatorList?: navigatorItem[];
+  type: string;
+  navigatorChange?: (item: navigatorItem) => void;
+  // action?: React.ReactElement<topNavRightProps>[];
+  action?: React.ReactNode;
+  changeFloorId?: (data: string) => void;
+};
+type floorItem = {
+  value: string;
+  [key: string]: any;
+};
+type buildItem = {
+  value: string;
+  [key: string]: any;
+};
+const TopNavigator: React.FC<topNavigatorProps> = ({
+  navigatorList = [],
+  type,
+  navigatorChange,
+  action,
+  changeFloorId,
+}) => {
+  const [buildList, setBuildList] = useState<buildItem[]>([]);
+  const [currentBuild, setCurrentBuild] = useState<any>();
+
+  const [floorList, setFloorList] = useState<floorItem[]>([]);
+  const [currentFloor, setCurrentFloor] = useState<string>();
+  const [selParamObj, setSelParamObj] = useState(navigatorList[0]);
+
+  useEffect(() => {
+    //console.log('TopNavigator----getBuildingList');
+    //请求建筑的接口
+    getBuildingList({
+      criteria: {
+        projectId: 'Pj1101080259',
+      },
+    }).then((res) => {
+      //debugger;
+      var resData = res.content || [];
+      setBuildList(
+        (resData || []).map((item) => {
+          return { label: item.localName, value: item.id };
+        }),
+      );
+      //debugger;
+      setCurrentBuild((resData[0] || {}).id); //设置第一个值
+    });
+  }, []);
+
+  useEffect(() => {
+    if (currentBuild) {
+      getFloorList({
+        criteria: {
+          projectId: 'Pj1101080259',
+          buildId: currentBuild,
+          //buildingId: 'Bd1101080259317347f00d0811ebb06b1d2749356f83',
+        },
+      }).then((res) => {
+        //请求楼层的接口
+        //debugger;
+        var resData = res.content || [];
+        setFloorList(
+          (resData || []).map((item) => {
+            return { label: item.localName, value: item.id };
+          }),
+        );
+        setCurrentFloor((resData[0] || {}).id); //设置第一个值
+        changeFloorId && changeFloorId((resData[0] || {}).id);
+      });
+    }
+  }, [currentBuild]);
+
+  const changBuildHandle = useCallback((val) => {
+    //console.log('select-onChange', val);
+    //debugger;
+    setCurrentBuild(val);
+  }, []);
+  const changFloorHandle = useCallback((val) => {
+    //console.log('select-onChange', val);
+    //debugger;
+    setCurrentFloor(val);
+    console.log('changeFloorId', changeFloorId);
+    changeFloorId && changeFloorId(val);
+  }, []);
+
+  //当前切换导航条时
+  const itemClick = (item: navigatorItem) => {
+    setSelParamObj(item);
+    console.log('itemclick', item);
+    navigatorChange && navigatorChange(item);
+  };
+
+  console.log('top渲染');
+
+  return (
+    <div className={styles.topnavigator}>
+      <div className={styles.floor}>
+        <Select
+          options={buildList}
+          placeholder="楼栋"
+          value={currentBuild}
+          onChange={changBuildHandle}
+          size="large"
+          dropdownMatchSelectWidth={true}
+          style={{ width: '100%' }}
+          bordered={false}
+          //   labelInValue={true}
+          // fieldNames={{ label: 'name', value: 'id' }}
+        />
+      </div>
+      <div className={styles.floor}>
+        <Select
+          options={floorList}
+          placeholder="楼层"
+          value={currentFloor}
+          onChange={changFloorHandle}
+          size="large"
+          dropdownMatchSelectWidth={true}
+          style={{ width: '100%' }}
+          bordered={false}
+        />
+      </div>
+      <div className={styles.navigator}>
+        {navigatorList.map((item, index) => {
+          return (
+            <div
+              className={cx(styles.navItem, { [styles.sel]: item.id === selParamObj.id })}
+              style={{
+                borderBottom:
+                  item.id === selParamObj.id ? `3px solid  ${item.color}` : '3px solid #ffffff',
+              }}
+              key={'nav' + index}
+              onClick={() => {
+                itemClick(item);
+              }}
+            >
+              <img src={item.src} style={{ height: 20 }}></img>
+              <div className={styles.text}>{item.name}</div>
+            </div>
+          );
+        })}
+      </div>
+      {type === 'enviroment' && (
+        <div className={styles.right}>
+          <div className={styles.firstLine} style={{ color: selParamObj.color }}>
+            <span className={styles.value}>{selParamObj.num}</span>{' '}
+            <span className={styles.unit}>{selParamObj.unit}</span>
+          </div>
+          <div className={styles.text}>当前楼层平均{selParamObj.name}</div>
+        </div>
+      )}
+      {type === 'equipment' && action}
+      {type === 'runtime' && action}
+    </div>
+  );
+};
+
+export default TopNavigator;

+ 16 - 9
src/hooks/useMapList.ts

@@ -1,19 +1,26 @@
 import { useState, useEffect } from 'react';
 import { getMapList } from '@/services/ant-design-pro/environment';
 
-export default function () {
+let mapListData: any = [];
+
+function useMapList(selFloorId: string) {
   const [mapList, setMapList] = useState<API.MapInfo[]>([]);
 
+  console.log(mapListData, 'mapListData');
+
+  //当selFloorId 改变时调用
   useEffect(() => {
-    //debugger;
-    getMapList({ floorId: 'Fl11010802593241ec348ecb4148806b9034c8957454', projectId: '' }).then(
-      (res) => {
-        debugger;
+    if (selFloorId) {
+      debugger;
+      getMapList({ floorId: selFloorId, projectId: '' }).then((res) => {
         var data: API.MapInfo[] = (res.data || {}).spaceList || [];
+        mapListData = data;
         setMapList(data);
-      },
-    );
-  }, []);
+      });
+    }
+  }, [selFloorId]);
 
-  return mapList;
+  return { mapList };
 }
+
+export { useMapList, mapListData };

+ 7 - 7
src/hooks/useMenuList.ts

@@ -8,13 +8,13 @@ export default function () {
   const [menuList, setMenuList] = useState<menutype[]>();
   useEffect(() => {
     //debugger;
-    setTimeout(() => {
-      setMenuList([
-        { name: '环境信息', id: 'environment' },
-        { name: '设备管理', id: 'equipment' },
-        { name: '运行时间', id: 'runtime' },
-      ]);
-    }, 0);
+    //  setTimeout(() => {
+    setMenuList([
+      { name: '环境信息', id: 'environment' },
+      { name: '设备管理', id: 'equipment' },
+      { name: '运行时间', id: 'runtime' },
+    ]);
+    //  }, 0);
   }, []);
 
   return { menuList };

+ 1 - 1
src/models/controller.ts

@@ -2,11 +2,11 @@ import React, { useState, useCallback } from 'react';
 
 export default function () {
   const [menuVisible, setMenuVisible] = useState<boolean>(false);
+
   const closeMenu: () => void = () => {
     setMenuVisible(false);
   };
   const toggleMenu: () => void = () => {
-    //debugger;
     setMenuVisible(!menuVisible);
   };
   return {

+ 21 - 0
src/models/map.ts

@@ -0,0 +1,21 @@
+import React, { useState, useCallback } from 'react';
+import { getMapList } from '@/services/ant-design-pro/environment';
+
+export default function () {
+  const [mapList, setMapList] = useState<API.MapInfo[]>([]);
+
+  const getMapListData = useCallback((selFloorId) => {
+    if (selFloorId) {
+      debugger;
+      getMapList({ floorId: selFloorId, projectId: '' }).then((res) => {
+        var data: API.MapInfo[] = (res.data || {}).spaceList || [];
+        setMapList(data);
+      });
+    }
+  }, []);
+
+  return {
+    mapList,
+    getMapListData,
+  };
+}

+ 23 - 8
src/pages/Environment/components/topNavigator/index.tsx

@@ -9,9 +9,10 @@ import { getBuildingList, getFloorList } from '@/services/ant-design-pro/environ
 export type topNavigatorProps = {
   navigatorList?: navigatorItem[];
   type: string;
-  navigatorChange?(item: navigatorItem): void;
+  navigatorChange?: (item: navigatorItem) => void;
   // action?: React.ReactElement<topNavRightProps>[];
   action?: React.ReactNode;
+  changeFloorId?: (data: string) => void;
 };
 type floorItem = {
   value: string;
@@ -26,23 +27,28 @@ const TopNavigator: React.FC<topNavigatorProps> = ({
   type,
   navigatorChange,
   action,
+  changeFloorId,
 }) => {
   const [buildList, setBuildList] = useState<buildItem[]>([]);
   const [currentBuild, setCurrentBuild] = useState<any>();
 
   const [floorList, setFloorList] = useState<floorItem[]>([]);
   const [currentFloor, setCurrentFloor] = useState<string>();
-
   const [selParamObj, setSelParamObj] = useState(navigatorList[0]);
 
   useEffect(() => {
     //console.log('TopNavigator----getBuildingList');
     //请求建筑的接口
-    getBuildingList({}).then((res) => {
-      var resData = res.data || [];
+    getBuildingList({
+      criteria: {
+        projectId: 'Pj1101080259',
+      },
+    }).then((res) => {
+      //debugger;
+      var resData = res.content || [];
       setBuildList(
         (resData || []).map((item) => {
-          return { label: item.name, value: item.id };
+          return { label: item.localName, value: item.id };
         }),
       );
       //debugger;
@@ -52,16 +58,23 @@ const TopNavigator: React.FC<topNavigatorProps> = ({
 
   useEffect(() => {
     if (currentBuild) {
-      getFloorList({ buildId: currentBuild }).then((res) => {
+      getFloorList({
+        criteria: {
+          projectId: 'Pj1101080259',
+          buildId: currentBuild,
+          //buildingId: 'Bd1101080259317347f00d0811ebb06b1d2749356f83',
+        },
+      }).then((res) => {
         //请求楼层的接口
         //debugger;
-        var resData = res.data || [];
+        var resData = res.content || [];
         setFloorList(
           (resData || []).map((item) => {
-            return { label: item.name, value: item.id };
+            return { label: item.localName, value: item.id };
           }),
         );
         setCurrentFloor((resData[0] || {}).id); //设置第一个值
+        changeFloorId && changeFloorId((resData[0] || {}).id);
       });
     }
   }, [currentBuild]);
@@ -75,6 +88,8 @@ const TopNavigator: React.FC<topNavigatorProps> = ({
     //console.log('select-onChange', val);
     //debugger;
     setCurrentFloor(val);
+    console.log('changeFloorId', changeFloorId);
+    changeFloorId && changeFloorId(val);
   }, []);
 
   //当前切换导航条时

+ 10 - 3
src/pages/Environment/index.tsx

@@ -3,7 +3,7 @@ import { FormattedMessage } from 'umi';
 import PageHeader from '@/components/PageHeader';
 import Map from '@/components/map';
 import SearchInput from '@/components/SearchInput';
-import TopNavigator from './components/topNavigator';
+import TopNavigator from '@/components/topNavigator';
 import ChartModal from './components/chartModal';
 
 import { equipImageMap } from '@/config/image.js';
@@ -29,8 +29,8 @@ const Environment: React.FC = () => {
   const { envir_temperature, envir_wet, envir_co2, envir_pm25, envir_jiaquan } = equipImageMap;
 
   const [searchText, setSearchText] = useState<string>();
-
   const [showChart, setShowChart] = useState(false);
+  const [selFloorId, setSelFloorId] = useState<string>();
   const [navigatorList] = useState<navigatorItem[]>([
     {
       name: '温度',
@@ -89,6 +89,11 @@ const Environment: React.FC = () => {
     },
   ]);
   const [selNav, setSelNav] = useState<navigatorItem>(navigatorList[0]);
+  const changeFloorId = (data: string) => {
+    debugger;
+    setSelFloorId(data);
+  };
+  //导航切换时
   const navigatorChange = (item: navigatorItem) => {
     if (item.id == 'Tdb') {
     }
@@ -135,10 +140,12 @@ const Environment: React.FC = () => {
           //   />
         }
       />
+
       <TopNavigator
         navigatorList={navigatorList}
         type={'enviroment'}
         navigatorChange={navigatorChange}
+        changeFloorId={changeFloorId}
       ></TopNavigator>
       <div className={styles.maptop}>
         <div className={styles.right}>
@@ -158,10 +165,10 @@ const Environment: React.FC = () => {
           })}
         </div>
       </div>
-
       <Map
         type={'enviroment'}
         searchText={searchText}
+        selFloorId={selFloorId}
         render={(item: API.MapInfo, index: number) => {
           return (
             <div

+ 8 - 1
src/pages/Equipment/index.tsx

@@ -4,7 +4,7 @@ import { FormattedMessage } from 'umi';
 import SearchInput from '@/components/SearchInput';
 import PageHeader from '@/components/PageHeader';
 import Map from '@/components/map';
-import TopNavigator from '../Environment/components/topNavigator';
+import TopNavigator from '@/components/topNavigator';
 import TopNavRight from './components/topNavRight';
 import DeviceModal from './components/deviceModal';
 
@@ -66,6 +66,11 @@ const Environment: React.FC = () => {
   //     });
   //   }, []);
   const [selNav, setSelNav] = useState<navigatorItem>(navigatorList[0]);
+  const [selFloorId, setSelFloorId] = useState<string>();
+  const changeFloorId = (data: string) => {
+    debugger;
+    setSelFloorId(data);
+  };
   const navigatorChange = (item: navigatorItem) => {
     //debugger;
     if (item.id == 'all') {
@@ -119,6 +124,7 @@ const Environment: React.FC = () => {
         type={'equipment'}
         navigatorChange={navigatorChange}
         action={<TopNavRight selNavObj={selNav} navigatorList={navigatorList}></TopNavRight>}
+        changeFloorId={changeFloorId}
       ></TopNavigator>
       <div className={styles.maptop}>
         {selNav.id !== 'all' && (
@@ -149,6 +155,7 @@ const Environment: React.FC = () => {
       </div>
       <Map
         searchText={searchText}
+        selFloorId={selFloorId}
         type={'equipment'}
         render={(item, index) => {
           return (

+ 4 - 2
src/pages/Runtime/components/topNavRight/index.tsx

@@ -7,9 +7,10 @@ import moment from 'moment';
 
 export type TopNavRightProps = {
   runtimeNav: any;
+  changeTime: (time: any) => void;
 };
 
-const TopNavRight: React.FC<TopNavRightProps> = ({ runtimeNav }) => {
+const TopNavRight: React.FC<TopNavRightProps> = ({ runtimeNav, changeTime }) => {
   const dateFormat = 'YYYY/MM/DD';
   return (
     <>
@@ -34,11 +35,12 @@ const TopNavRight: React.FC<TopNavRightProps> = ({ runtimeNav }) => {
         <div className={styles.date}>
           <DatePicker
             bordered={false}
-            defaultValue={moment('2015/01/01', dateFormat)}
+            defaultValue={moment()}
             format={dateFormat}
             allowClear={false}
             inputReadOnly={true}
             autoFocus={true}
+            onChange={changeTime}
           />
         </div>
       </div>

+ 50 - 19
src/pages/Runtime/index.tsx

@@ -1,20 +1,19 @@
 import React, { useState, useEffect, useCallback } from 'react';
 import PageHeader from '@/components/PageHeader';
 import Map from '@/components/map';
-import TopNavigator from '../Environment/components/topNavigator';
+import TopNavigator from '@/components/topNavigator';
 import RunNavRight from './components/topNavRight';
 import { FormattedMessage, history } from 'umi';
-import { Input } from 'antd';
 import styles from './index.less';
 import mapstyles from '@/assets/css/map.less';
 import Icon from '@/tenants-ui/Icon';
 import SearchInput from '@/components/SearchInput';
+import moment from 'moment';
 
-//import { equipImageMap } from '@/config/image.js';
-//import { getMapList } from '@/services/ant-design-pro/environment';
+import { queryDeviceTimeManage } from '@/services/ant-design-pro/environment';
 
 type runtimeNavType = {
-  normalRun: number;
+  normalRun: any;
   overtimeWork: number;
   overtimeBook: number;
 };
@@ -23,24 +22,54 @@ const Runtime: React.FC = () => {
   // const { maptemp6 } = equipImageMap;
 
   const [searchText, setSearchText] = useState<string>();
-  const [runtimeNav] = useState<runtimeNavType>({
-    normalRun: 22,
-    overtimeWork: 22,
-    overtimeBook: 22,
-  });
+  const [runtimeNav, setRuntimeNav] = useState<runtimeNavType>({});
   //const [mapList, setMapList] = useState<API.MapInfo[]>([]);
-
+  const [selFloorId, setSelFloorId] = useState<string>();
+  const [selTime, setSelTime] = useState<string>(moment().format('YYYYMMDD'));
+  const changeFloorId = (data: string) => {
+    debugger;
+    setSelFloorId(data);
+  };
   const checkRecord = () => {
     history.push('/runtime/recordList');
     console.log('showR');
   };
-  //   useEffect(() => {
-  //     getMapList({ floorId: 'sffsdfdsfdf', floorNumber: 22 }).then(function (res) {
-  //       var data: API.MapInfo[] = res.data || [];
-  //       data.forEach((item, index) => {});
-  //       setMapList(data);
-  //     });
-  //   }, []);
+  const changeTime = (time) => {
+    debugger;
+    var timeStr = time.format('YYYYDMMDD');
+    setSelTime(timeStr);
+  };
+  useEffect(() => {
+    if (selFloorId && selTime) {
+      debugger;
+      queryDeviceTimeManage({
+        //floorId: selFloorId,
+        floorId: 'Fl11010802593241ec348ecb4148806b9034c8957454',
+        date: selTime,
+        //date: 20220212,
+      }).then(function (res) {
+        debugger;
+        var resdata = res || {};
+        setRuntimeNav({
+          normalRun: resdata.workTimeNum,
+          overtimeWork: resdata.overTimeNum,
+          overtimeBook: resdata.meetTimeNum,
+        });
+        var resList = res.content || [];
+        resList.forEach((item) => {
+          item.runTimeStatus = 'normalRun';
+          if (item.hasOwnProperty('meetTime')) {
+            debugger;
+            item.runTimeStatus = 'overtimeBook';
+          }
+          if (item.hasOwnProperty('overTimeStartTime')) {
+            debugger;
+            item.runTimeStatus = 'overtimeWork';
+          }
+        });
+      });
+    }
+  }, [selFloorId, selTime]);
   return (
     <>
       <PageHeader
@@ -61,7 +90,8 @@ const Runtime: React.FC = () => {
       />
       <TopNavigator
         type={'runtime'}
-        action={<RunNavRight runtimeNav={runtimeNav}></RunNavRight>}
+        action={<RunNavRight runtimeNav={runtimeNav} changeTime={changeTime}></RunNavRight>}
+        changeFloorId={changeFloorId}
       ></TopNavigator>
       <div className={styles.maptop}>
         <div className={styles.right}></div>
@@ -85,6 +115,7 @@ const Runtime: React.FC = () => {
             </div> */}
       <Map
         searchText={searchText}
+        selFloorId={selFloorId}
         type={'runtime'}
         render={(item, index) => {
           return (

+ 16 - 3
src/services/ant-design-pro/environment.ts

@@ -12,8 +12,8 @@ export async function getMapList(body: any, options?: { [key: string]: any }) {
   });
 }
 export async function getBuildingList(body: any, options?: { [key: string]: any }) {
-  // debugger;
-  return request<API.BuildFloorList>('/api/environment/Building', {
+  //debugger;
+  return request<API.BuildFloorList>('/api2/object/building/query', {
     method: 'POST',
     headers: {
       'Content-Type': 'application/json',
@@ -24,7 +24,7 @@ export async function getBuildingList(body: any, options?: { [key: string]: any
 }
 export async function getFloorList(body: any, options?: { [key: string]: any }) {
   // debugger;
-  return request<API.BuildFloorList>('/api/environment/Floor', {
+  return request<API.BuildFloorList>('/api2/object/floor/query', {
     method: 'POST',
     headers: {
       'Content-Type': 'application/json',
@@ -33,3 +33,16 @@ export async function getFloorList(body: any, options?: { [key: string]: any })
     data: body,
   });
 }
+export async function queryDeviceTimeManage(params: any, options?: { [key: string]: any }) {
+  // debugger;
+  return request<API.DeviceTimeType>(
+    '/api3/duoduo-service/setup-service/deviceManage/queryDeviceTimeManage',
+    {
+      method: 'GET',
+      params: {
+        ...params,
+      },
+      ...(options || {}),
+    },
+  );
+}

+ 9 - 1
src/services/ant-design-pro/typings.d.ts

@@ -123,9 +123,17 @@ declare namespace API {
   type BuildFloorItem = {
     name: string;
     id: string;
+    localName: string;
+    [key: string]: any;
   };
   type BuildFloorList = {
-    data?: BuildFloorItem[];
+    content?: BuildFloorItem[];
+    result?: string;
+    count?: number;
+  };
+  type DeviceTimeType = {
+    content?: any[];
     result?: string;
+    [key: string]: any;
   };
 }