AirConditioner.js 1.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859
  1. import PageContent from '@/components/PageContent';
  2. import PageTitle from '@/components/PageTitle';
  3. import { queryIotList } from '@/services/HardwareController';
  4. import { useParams, useRequest } from '@umijs/max';
  5. import { Spin } from 'antd';
  6. import styles from './index.less';
  7. const Work = (props) => {
  8. const { projectId } = useParams();
  9. const { data, loading } = useRequest(queryIotList, {
  10. defaultParams: [projectId],
  11. });
  12. const getIconStatus = (status) => {
  13. if (status == 1) return '';
  14. if (status == 2) return styles.offline;
  15. if (status == 3) return styles.error;
  16. };
  17. return (
  18. <PageContent>
  19. <PageTitle>空调控制</PageTitle>
  20. <div className={`card-box ${styles.top}`}>
  21. <div className={styles.left}>
  22. <img
  23. className={styles.img}
  24. src={require('@/assets/air-conditioner.png')}
  25. />
  26. <div>
  27. <div className={styles.number}>{data?.pagination?.total}</div>
  28. 空调数量
  29. </div>
  30. </div>
  31. <div className={styles.right}>
  32. <div className={styles.row}>
  33. <i className={styles.icon}></i> 在线:{data?.online_count}
  34. </div>
  35. <div className={styles.row}>
  36. <i className={`${styles.icon} ${styles.error}`}></i> 故障:{data?.fault_count}
  37. </div>
  38. <div className={styles.row}>
  39. <i className={`${styles.icon} ${styles.offline}`}></i> 离线:{data?.offline_count}
  40. </div>
  41. </div>
  42. </div>
  43. <Spin spinning={loading}>
  44. {data?.list?.map((item) => (
  45. <div key={item.id} className={`card-box ${styles.item}`}>
  46. <i className={`${styles.icon} ${getIconStatus(item.status)}`}></i>{' '}
  47. {item.name}
  48. </div>
  49. ))}
  50. </Spin>
  51. </PageContent>
  52. );
  53. };
  54. export default Work;