index.jsx 2.8KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970
  1. import React, { useCallback, useEffect, useRef, useState } from 'react';
  2. import { history, Link } from 'umi';
  3. import classNames from 'classnames';
  4. // import { getPersonList, exportPersonList } from '@/services/person';
  5. import { PageHeaderWrapper } from '@ant-design/pro-layout';
  6. import { FullscreenOutlined } from '@ant-design/icons';
  7. import { Button } from 'antd';
  8. import ScreenHeader from '@/components/ScreenBox/ScreenHeader';
  9. import GeoMap from '@/components/GeoMap';
  10. import { useFullScreen } from './hook';
  11. import DateCommponetsLeft from './DateCommponetsLeft';
  12. import DateCommponetsBottomRight from './DateCommponetsBottomRight';
  13. import DateCommponetsBottomLeft from './DateCommponetsBottomLeft';
  14. import Styles from './style.less';
  15. import StatisCard from '@/components/ScreenBox/StatisCard';
  16. export default (props) => {
  17. const screenRef = useRef();
  18. const [height, setHeight] = useState('auto');
  19. const { isFullScreen, toggleFullScreen } = useFullScreen(screenRef);
  20. useEffect(() => {
  21. const container = document.querySelector('main.ant-layout-content');
  22. const header = container.querySelector('.ant-pro-page-container-warp');
  23. setHeight(`${container.offsetHeight - header.offsetHeight}px`);
  24. }, []);
  25. return (
  26. <PageHeaderWrapper
  27. extra={
  28. <Button icon={<FullscreenOutlined />} onClick={toggleFullScreen}>
  29. 全屏
  30. </Button>
  31. }
  32. >
  33. <div
  34. className={classNames(Styles['screen-page'], Styles['pd-lr-40'], {
  35. [Styles['full-screen']]: isFullScreen,
  36. })}
  37. style={{ height }}
  38. ref={screenRef}
  39. >
  40. <div className={Styles['grail-layout']}>
  41. <div className={Styles['grail-header']}>
  42. <ScreenHeader weather="多云 21-28 °C" />
  43. </div>
  44. <div className={classNames(Styles['grail-container'], Styles['pd-tp-40'])}>
  45. <div className={Styles['grail-left']}>
  46. <DateCommponetsLeft />
  47. </div>
  48. <div className={classNames(Styles['grail-content'], Styles['pd-lr-40'])}>
  49. <div className={Styles['statis-container']}>
  50. <StatisCard color="#23E8AE" icon="icon1" value={2346} title="农机总数(台)" />
  51. <StatisCard color="#0BDAFF" icon="icon2" value={528} title="农机使用数(台)" />
  52. <StatisCard color="#F5CC5C" icon="icon3" value={168} title="总预约数(台)" />
  53. <StatisCard color="#C579FF" icon="icon4" value={1568} title="总服务数(台)" />
  54. </div>
  55. <GeoMap></GeoMap>
  56. </div>
  57. <div className={Styles['grail-right']}>
  58. <DateCommponetsBottomRight />
  59. </div>
  60. </div>
  61. <div className={classNames(Styles['grail-footer'], Styles['pd-tp-40'])}></div>
  62. </div>
  63. </div>
  64. </PageHeaderWrapper>
  65. );
  66. };