Welcome.tsx 1.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657
  1. import { PageContainer } from '@ant-design/pro-components';
  2. import { Card } from 'antd';
  3. import React, { useEffect, useState } from 'react';
  4. import styles from './Welcome.less';
  5. import StatisticIndex from '../pages/statistical/index';
  6. import { getStatisticData } from '@/services/statistic';
  7. /**
  8. * 首页
  9. * @constructor
  10. */
  11. const Welcome: React.FC = () => {
  12. const [data, setData] = useState<any>(null);
  13. // 获取数据
  14. const getData = () => {
  15. getStatisticData().then((res) => {
  16. if (res?.code === 0) {
  17. setData(res.data);
  18. }
  19. });
  20. };
  21. // 初始化
  22. useEffect(() => {
  23. getData();
  24. }, []);
  25. return (
  26. <PageContainer>
  27. <div className={styles.statistic}>
  28. <div className={styles.num_style}>
  29. <div className={styles.title}>注册用户</div>
  30. <div>
  31. <span className={styles.num}>{data?.user_count}</span>
  32. <span style={{ fontSize: '12px', marginLeft: '5px' }}>人</span>
  33. </div>
  34. <img src="/assets/user.png" alt="用户" className={styles.statistic_icon} />
  35. </div>
  36. <div className={styles.num_style}>
  37. <div className={styles.title}>设备数</div>
  38. <div>
  39. <span className={styles.num}>{data?.device_offline + data?.device_online}</span>
  40. <span style={{ fontSize: '12px', marginLeft: '5px' }}>个</span>
  41. </div>
  42. <img src="/assets/device.png" alt="设备" className={styles.statistic_icon} />
  43. </div>
  44. </div>
  45. <Card>
  46. <div className={styles.device_status}>设备状态</div>
  47. {data && <StatisticIndex data={data} />}
  48. </Card>
  49. </PageContainer>
  50. );
  51. };
  52. export default Welcome;