index.jsx 2.3KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263
  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 { useFullScreen } from './hook';
  9. import DateCommponetsLeft from './DateCommponetsLeft';
  10. import DateCommponetsBottomRight from './DateCommponetsBottomRight';
  11. import DateCommponetsBottomLeft from './DateCommponetsBottomLeft';
  12. import Styles from './style.less';
  13. import SquareBox from '@/components/ScreenBox/SquareBox';
  14. import ScreenHeader from '@/components/ScreenBox/ScreenHeader';
  15. export default (props) => {
  16. const screenRef = useRef();
  17. const [height, setHeight] = useState('auto');
  18. const { isFullScreen, toggleFullScreen } = useFullScreen(screenRef);
  19. useEffect(() => {
  20. const container = document.querySelector('main.ant-layout-content');
  21. const header = container.querySelector('.ant-pro-page-container-warp');
  22. setHeight(`${container.offsetHeight - header.offsetHeight}px`);
  23. }, []);
  24. return (
  25. <PageHeaderWrapper
  26. extra={
  27. <Button icon={<FullscreenOutlined />} onClick={toggleFullScreen}>
  28. 全屏
  29. </Button>
  30. }
  31. >
  32. <div
  33. className={classNames(Styles['screen-page'], Styles['pd-lr-40'], {
  34. [Styles['full-screen']]: isFullScreen,
  35. })}
  36. style={{ height }}
  37. ref={screenRef}
  38. >
  39. <div className={Styles['grail-layout']}>
  40. <div className={Styles['grail-header']}>
  41. <ScreenHeader weather="多云 21-28 °C" />
  42. </div>
  43. <div className={classNames(Styles['grail-container'], Styles['mg-tp-40'])}>
  44. <div className={Styles['grail-left']}>
  45. <SquareBox>asdfasdf</SquareBox>
  46. </div>
  47. <div className={classNames(Styles['grail-content'], Styles['pd-lr-40'])}>
  48. <DateCommponetsLeft />
  49. </div>
  50. <div className={Styles['grail-right']}>
  51. <SquareBox>asdfasdf</SquareBox>
  52. </div>
  53. </div>
  54. <div className={classNames(Styles['grail-footer'], Styles['mg-tp-40'])}></div>
  55. </div>
  56. </div>
  57. </PageHeaderWrapper>
  58. );
  59. };