123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217 |
- import React, { useEffect, useState } from 'react';
- import * as datav from '@jiaminghi/data-view-react';
- import styles from './sliderData.less';
- import { connect } from '@@/plugin-dva/exports';
- // import { JSONPath } from 'jsonpath-plus';
- interface propsData {
- data: any;
- MQTTMessage: any;
- }
- /**
- * 底部轮播
- * @constructor
- */
- const SliderData: React.FC<propsData> = (props) => {
- // const { data, MQTTMessage } = props;
- const { data } = props;
- const [voltage, setVoltage] = useState({ ua: 0 });
- const [current, setCurrent] = useState({ ia: 0 });
- const [activePower, setActivePower] = useState({ active_power: 0 });
- const [controlData, setControlData] = useState({
- power: data.power ? data.power : 0,
- mode: data.mode,
- set_temp: data.set_temp,
- temperature: data.temperature,
- humidity: data.humidity,
- air_quality: data.air_quality,
- co2: data.co2,
- });
- // 回头删掉
- useEffect(() => {
- setCurrent({ ia: 0 });
- setVoltage({ ua: 0 });
- setActivePower({ active_power: 0 });
- setControlData({
- power: data.power ? data.power : 0,
- mode: data.mode,
- set_temp: data.set_temp,
- temperature: data.temperature,
- humidity: data.humidity,
- air_quality: data.air_quality,
- co2: data.co2,
- });
- }, []);
- // useEffect(() => {
- // // 电
- // if (
- // MQTTMessage.message?.DeviceCode === 'DT645-4G' &&
- // MQTTMessage.message?.SubDeviceId !== '' &&
- // data.electric_id !== '' &&
- // MQTTMessage.message?.SubDeviceId === data.electric_id
- // ) {
- // // 电压
- // if (Object.keys(MQTTMessage.message.Data)[0] === 'voltage') {
- // setVoltage({ ua: JSONPath({ json: MQTTMessage.message.Data, path: '$.voltage.ua' })[0] });
- // }
- // // 电流
- // if (Object.keys(MQTTMessage.message.Data)[0] === 'current') {
- // setCurrent({ ia: JSONPath({ json: MQTTMessage.message.Data, path: '$.current.ia' })[0] });
- // }
- // // 用电量
- // if (Object.keys(MQTTMessage.message.Data)[0] === 'power') {
- // setActivePower({
- // active_power: JSONPath({
- // json: MQTTMessage.message.Data,
- // path: '$.power.active_power',
- // })[0],
- // });
- // }
- // }
- //
- // //温湿度等
- // if (
- // MQTTMessage.message?.DeviceCode === data.device_id &&
- // MQTTMessage.message?.SubDeviceId === ''
- // ) {
- // setControlData({
- // power: JSONPath({ json: MQTTMessage.message.Data, path: '$.status.power' })[0],
- // mode: JSONPath({ json: MQTTMessage.message.Data, path: '$.status.mode' })[0],
- // set_temp: JSONPath({ json: MQTTMessage.message.Data, path: '$.status.set_temp' })[0],
- // temperature: JSONPath({ json: MQTTMessage.message.Data, path: '$.status.temperature' })[0],
- // humidity: JSONPath({ json: MQTTMessage.message.Data, path: '$.status.humidity' })[0],
- // air_quality: JSONPath({ json: MQTTMessage.message.Data, path: '$.status.air_quality' })[0],
- // co2: JSONPath({ json: MQTTMessage.message.Data, path: '$.status.co2' })[0],
- // });
- // }
- // }, [MQTTMessage.message?.DeviceCode && MQTTMessage.message?.SubDeviceId]);
- const handleCo2Grade = (co2: number) => {
- if (co2 >= 0 && co2 < 800) {
- return '#90c456';
- }
- if (co2 >= 800 && co2 < 1600) {
- return '#eceb3b';
- }
- if (co2 >= 1600) {
- return '#e4151b';
- }
- return '';
- };
- const handlePm25Grade = (pm25: number) => {
- if (pm25 >= 0 && pm25 <= 50) {
- return '#90c456';
- }
- if (pm25 > 50 && pm25 < 150) {
- return '#eceb3b';
- }
- if (pm25 >= 150) {
- return '#e4151b';
- }
- return '';
- };
- return (
- <div>
- <datav.BorderBox12
- className={styles.decoration_bottom_border}
- style={{ width: '550px', height: '280px' }}
- >
- <div className={styles.home_detail}>
- <div className={styles.detail_left}>
- <div className={styles.detail_left_left}>
- <div className={styles.decoration_on} />
- <div className={styles.home_name}>{data?.home_name ? data?.home_name : '我的家'}</div>
- </div>
- <div className={styles.detail_left_right}>
- <table className={styles.detail_item}>
- <tbody>
- <tr>
- <td className={styles.detail_item_title}>管理员</td>
- <td className={styles.detail_item_value}>{data?.admin}</td>
- </tr>
- <tr>
- <td className={styles.detail_item_title}>是否在线</td>
- <td
- className={styles.detail_item_value}
- // style={{ color: `${data?.is_online ? '#90c456' : '#e4151b'}` }}
- style={{ color: '#90c456' }}
- >
- {/*{data?.is_online ? '在线' : '离线'}*/}
- 在线
- </td>
- </tr>
- <tr>
- <td className={styles.detail_item_title}>运行状态</td>
- <td className={styles.detail_item_value} style={{ color: '#ffb026' }}>
- {{ 0: '关', 1: '开' }[controlData.power]}
- </td>
- </tr>
- <tr>
- <td className={styles.detail_item_title}>模式</td>
- <td className={styles.detail_item_value}>
- {{ 0: '制冷', 1: '制热', 2: '除湿', 3: '送风', 4: '加湿' }[controlData?.mode]}
- </td>
- </tr>
- </tbody>
- </table>
- </div>
- </div>
- <div className={styles.detail_right}>
- <div className={styles.detail_right_top}>
- <div className={styles.detail_right_top_content}>
- <div className={styles.content_title}>设定温度</div>
- <div className={styles.content_value}>{controlData?.set_temp}°C</div>
- </div>
- <div className={styles.detail_right_top_content}>
- <div className={styles.content_title}>室内温度</div>
- <div className={styles.content_value}>{controlData?.temperature}°C</div>
- </div>
- <div className={styles.detail_right_top_content}>
- <div className={styles.content_title}>湿度</div>
- <div className={styles.content_value}>{controlData?.humidity}%rh</div>
- </div>
- <div className={styles.detail_right_top_content}>
- <div className={styles.content_title}>PM25</div>
- <div
- className={styles.content_value}
- style={{ color: handlePm25Grade(controlData?.air_quality) }}
- >
- {controlData?.air_quality}μg/m³
- </div>
- </div>
- <div className={styles.detail_right_top_content}>
- <div className={styles.content_title}>CO2</div>
- <div
- className={styles.content_value}
- style={{ color: handleCo2Grade(controlData?.co2) }}
- >
- {controlData?.co2}
- </div>
- </div>
- <div className={styles.detail_right_top_content}>
- <div className={styles.content_title}>用电量</div>
- <div className={styles.content_value}>{activePower?.active_power}kwh</div>
- </div>
- <div className={styles.detail_right_top_content}>
- <div className={styles.content_title}>电压</div>
- <div className={styles.content_value}>{voltage?.ua}V</div>
- </div>
- <div className={styles.detail_right_top_content}>
- <div className={styles.content_title}>电流</div>
- <div className={styles.content_value}>{current?.ia}A</div>
- </div>
- </div>
- </div>
- </div>
- </datav.BorderBox12>
- </div>
- );
- };
- export default connect(({ MQTTMessage }: any) => ({
- MQTTMessage,
- }))(SliderData);
|