index.jsx 2.4KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465
  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. <DateCommponetsLeft />
  46. <div className={Styles['mg-tp-40']}>{/* 占位 */}</div>
  47. <DateCommponetsBottomLeft />
  48. </div>
  49. <div className={classNames(Styles['grail-content'], Styles['pd-lr-40'])}>
  50. <DateCommponetsLeft />
  51. </div>
  52. <div className={Styles['grail-right']}>
  53. <DateCommponetsBottomRight />
  54. </div>
  55. </div>
  56. <div className={classNames(Styles['grail-footer'], Styles['mg-tp-40'])}></div>
  57. </div>
  58. </div>
  59. </PageHeaderWrapper>
  60. );
  61. };