import React, {PureComponent} from 'react'; import ReactDOM from 'react-dom/client'; import './control.css'; import axios from "axios"; export default class Control extends PureComponent { state = { temperature:0, pattern:1, windSpeed : 6, selectType : false, openVisible : false, // 运行状态数据 data:null, } componentWillMount() { this.getData(); this.interval = setInterval(() => this.getData(), 300000); } //组件销毁的时候清除定时器就行 componentWillUnmount() { clearInterval(this.interval); } // 获取数据 getData = () =>{ axios.get("/api/v1/status").then(res => { const datas = res?.data; if(datas && datas.code === 0){ this.setState({ data : datas?.data || null , temperature : datas?.data?.set_temp, openVisible : datas?.data?.power === 1, pattern:datas?.data?.mode, windSpeed: datas?.data?.fan_speed, }) } }).catch(err => { this.toast(err.message,2000); }) } // 提示框 toast = (text, time) => { let toast = document.getElementById('toast'); let toast_box = document.getElementsByClassName('toast_box')[0]; toast.innerHTML = text; toast_box.style.animation = 'show 1.5s' toast_box.style.display = 'inline-block'; setTimeout(function(){ toast_box.style.animation = 'hide 1.5s' setTimeout(function(){ toast_box.style.display = 'none'; }, 1400) }, time) } // 增加温度 add = () =>{ const { temperature } = this.state; if(temperature < 30){ axios.post("/api/v1/set_temp",{temp : temperature + 1}).then(res => { const data = res?.data; if(data && data.code === 0){ this.setState({temperature : temperature + 1}); }else { this.toast(data.message,2000); } }).catch(err => { this.toast(err.message,2000); }) }else { this.toast('最高温度30度',2000); } } // 温度减 down = () =>{ const { temperature } = this.state; if(temperature > 16){ axios.post("/api/v1/set_temp",{temp : temperature - 1}).then(res => { const data = res?.data; if(data && data.code === 0){ this.setState({ temperature : temperature - 1}) }else { this.toast(data.message,2000); } }).catch(err => { this.toast(err.message,2000); }) }else { this.toast('最低温度16度',2000); } } // 选择模式 patternSelect = item =>{ axios.post("/api/v1/mode",{mode : item}).then(res => { const data = res?.data; if(data && data.code === 0){ this.setState({ pattern : item}); } }).catch(err => { this.toast(err.message,2000); }) } // 选择风速 speedSelect = item =>{ axios.post("/api/v1/fan_speed",{speed : item}).then(res => { const data = res?.data; if(data && data.code === 0){ this.setState({ windSpeed : item}); } }).catch(err => { this.toast(err.message,2000); }) } // 睡眠模式 sleepSelect = () =>{ const { selectType } = this.state; if(selectType){ this.setState({ selectType : false}); }else { this.setState({ selectType : true}); } } // 开关 onOpen = () =>{ const { openVisible } = this.state; if(openVisible){ axios.post("/api/v1/power",{power : 2}).then(res => { const data = res?.data; if(data && data.code === 0){ this.setState({ openVisible : false }); } }).catch(err => { this.toast(err.message,2000); }) }else { axios.post("/api/v1/power",{power : 1}).then(res => { const data = res?.data; if(data && data.code === 0){ this.setState({ openVisible : true }); } }).catch(err => { this.toast(err.message,2000); }) } } render() { const { pattern , windSpeed , openVisible , data } = this.state; return (

当前温度: {data?.ambient_temp}℃

室外环境温度: {data?.outdoor_ambient_temp}℃

回风口温度: {data?.air_return_ambient_temp}℃

灯板温度: {data?.light_board_ambient_temp}℃

预计温度
{this.state.temperature}℃

模式

{this.patternSelect(1)}}>制冷
{this.patternSelect(2)}}>制热
{this.patternSelect(3)}}>除湿
{this.patternSelect(4)}}>送风
{this.patternSelect(5)}}>自动

风速

{this.speedSelect(6)}}>自动
{this.speedSelect(1)}}>一档
{this.speedSelect(2)}}>二档
{this.speedSelect(3)}}>三档
{this.speedSelect(4)}}>四档
{this.speedSelect(5)}}>五档
{/*
睡眠模式
*/} { openVisible ? 开关 : 开关 }
{/* 提示框 */}

); } } ReactDOM.createRoot(document.getElementById("root")).render();