diff --git a/src/components/Common/BlueRect/index.jsx b/src/components/Common/BlueRect/index.jsx new file mode 100644 index 0000000..3b176dd --- /dev/null +++ b/src/components/Common/BlueRect/index.jsx @@ -0,0 +1,26 @@ +import cls from "./index.module.css"; + +function BlueRect(props) { + const title = props.title || "DEFAULT"; + const value = props.value || "0℃"; + return ( +
+ + {title} + + + {value} + +
+ ); +} + +export default BlueRect; diff --git a/src/components/Common/BlueRect/index.module.css b/src/components/Common/BlueRect/index.module.css new file mode 100644 index 0000000..8523b09 --- /dev/null +++ b/src/components/Common/BlueRect/index.module.css @@ -0,0 +1,268 @@ +.blueRect { + display: inline-block; + width: 106px; + height: 68px; + position: absolute; + top: 0; + left: 0; + padding: 6px 0; + display: flex; + flex-direction: column; + align-items: center; + color: #fff; + background: #0a426820; + border-radius: 4px; +} + +.blueRect::before { + content: ""; + display: inline-block; + position: absolute; + top: 0; + left: 0; + width: 100%; + height: 3px; + background: linear-gradient( + to right, + transparent 0%, + transparent 50%, + #24aebb 100% + ); + border-radius: 3px; +} + +.blueRect::after { + content: ""; + display: inline-block; + position: absolute; + bottom: 0; + left: 0; + width: 100%; + height: 3px; + background: linear-gradient( + to right, + #24aebb 0%, + transparent 50%, + transparent 100% + ); + border-radius: 3px; +} + +/** left **/ + +.TE271 { + top: 160px; + left: 80px; +} +.TE272 { + top: 254px; /* +94px */ + left: 80px; +} +.TE273 { + top: 348px; /* +94px */ + left: 80px; +} +.TE274 { + top: 442px; + left: 80px; +} +.TE279 { + top: 536px; + left: 80px; +} +.TE275 { + top: 160px; + left: 216px; +} +.TE276 { + top: 254px; + left: 216px; /* +136px */ +} +.TE277 { + top: 348px; /* +94px */ + left: 216px; /* +136px */ +} +.TE278 { + top: 442px; /* +94px */ + left: 216px; /* +136px */ +} +.TE280 { + top: 536px; /* +94px */ + left: 216px; /* +136px */ +} + +/** center top **/ +.TE227 { + top: 128px; + left: 616px; +} +.TE229 { + top: 128px; + left: 736px; /* +120px */ +} +.TE231 { + top: 128px; + left: 856px; +} +.TE233 { + top: 128px; + left: 976px; +} +.TE235 { + top: 128px; + left: 1096px; +} +.TE237 { + top: 128px; + left: 1216px; +} +.TE239 { + top: 128px; + left: 1336px; +} +.TE241 { + top: 128px; + left: 1456px; +} + +/** center bottom **/ +.TE228 { + top: 620px; + left: 588px; +} +.TE230 { + top: 620px; + left: 710px; +} +.TE232 { + top: 620px; + left: 830px; +} +.TE234 { + top: 620px; + left: 950px; +} +.TE236 { + top: 620px; + left: 1070px; +} +.TE238 { + top: 620px; + left: 1190px; +} +.TE240 { + top: 620px; + left: 1310px; +} +.TE242 { + top: 620px; + left: 1430px; +} + +/** center middle **/ +.TE201 { + top: 390px; + left: 450px; +} +.TE202 { + top: 390px; + left: 580px; +} +.TE203 { + top: 390px; + left: 710px; +} +.TE204 { + top: 390px; + left: 840px; +} +.TE205 { + top: 390px; + left: 970px; +} +.TE206 { + top: 390px; + left: 1100px; +} +.TE207 { + top: 340px; + left: 1260px; +} +.TE208 { + top: 390px; + left: 1260px; +} +.TE209 { + top: 480px; + left: 1260px; +} +.TE210 { + top: 390px; + left: 1390px; +} +.TE211 { + top: 390px; + left: 1530px; +} +.TE212 { + top: 390px; + left: 1660px; +} +.TE213 { + top: 390px; + left: 1790px; +} + +/** right **/ +.TE214 { + top: 160px; + left: 2000px; +} +.TE215 { + top: 265px; + left: 2020px; +} +.TE216 { + top: 400px; + left: 2030px; +} +.TE217 { + top: 535px; + left: 2050px; +} +.TE218 { + top: 670px; + left: 2080px; +} +.TE219 { + top: 160px; + left: 2120px; +} +.TE220 { + top: 265px; + left: 2140px; +} +.TE221 { + top: 400px; + left: 2150px; +} +.TE222 { + top: 535px; + left: 2170px; +} +.TE223 { + top: 670px; + left: 2200px; +} +.TE224 { + top: 265px; + left: 2240px; +} +.TE225 { + top: 400px; + left: 2310px; +} +.TE226 { + top: 535px; + left: 2280px; +} diff --git a/src/components/Common/TemperatureTop/index.jsx b/src/components/Common/TemperatureTop/index.jsx new file mode 100644 index 0000000..7b76589 --- /dev/null +++ b/src/components/Common/TemperatureTop/index.jsx @@ -0,0 +1,26 @@ +import BlueRect from "../BlueRect"; +import { useSelector } from "react-redux"; + +function TemperatureTop(props) { + const tempTop = useSelector((state) => state.temperature.top); + + return ( +
+ {Object.keys(tempTop).map((d) => ( + + ))} +
+ ); +} + +export default TemperatureTop; diff --git a/src/components/Modules/KilnInner/Center/index.jsx b/src/components/Modules/KilnInner/Center/index.jsx index 1ac9dd4..731ccf6 100644 --- a/src/components/Modules/KilnInner/Center/index.jsx +++ b/src/components/Modules/KilnInner/Center/index.jsx @@ -1,68 +1,72 @@ -import { useState } from 'react'; -import cls from './index.module.css'; -import Chart2 from '../../../Common/TimeFireDir'; -import VideoContainer from './VideoContainer'; +import { useState } from "react"; +import cls from "./index.module.css"; +import Chart2 from "../../../Common/TimeFireDir"; +import VideoContainer from "./VideoContainer"; +import TemperatureTop from "../../../Common/TemperatureTop"; function KilnCenter() { - const [floor, setFloor] = useState(0); + const [floor, setFloor] = useState(0); - function onFloorUpdate(flr) { - setFloor(flr); - } + function onFloorUpdate(flr) { + setFloor(flr); + } - return ( -
- {/* 时间火向数据 */} -
- -
+ return ( +
+ {/* 时间火向数据 */} +
+ +
- {/* menu */} -
-
onFloorUpdate(1)} - > - 一层 -
-
onFloorUpdate(2)} - > - 二层 -
-
+ {/* menu */} +
+
onFloorUpdate(1)} + > + 一层 +
+
onFloorUpdate(2)} + > + 二层 +
+
- {/* video */} - + {/* 覆盖层温度信息 */} + - {/*
*/} + {/* video */} + - {/* left side */} - {/*
*/} + + {/* left side */} + {/*
*/} -
- ); + + ); } export default KilnCenter; diff --git a/src/components/Modules/KilnInner/Center/videoComponents/EnterToFloor1.jsx b/src/components/Modules/KilnInner/Center/videoComponents/EnterToFloor1.jsx index 69eb7aa..059100e 100644 --- a/src/components/Modules/KilnInner/Center/videoComponents/EnterToFloor1.jsx +++ b/src/components/Modules/KilnInner/Center/videoComponents/EnterToFloor1.jsx @@ -70,7 +70,7 @@ function EnterToFloorOne(props) { > )} - + > */} )} diff --git a/src/store/features/gasSlice.js b/src/store/features/gasSlice.js index 3dc84c3..4de6b96 100644 --- a/src/store/features/gasSlice.js +++ b/src/store/features/gasSlice.js @@ -59,4 +59,9 @@ const gasSlice = createSlice({ }); export default gasSlice.reducer; -export const { setHistory, setRuntime } = gasSlice.actions; +export const { + setGasIHistory, + setGasIIHistory, + setGasIRuntime, + setGasIIRuntime, +} = gasSlice.actions; diff --git a/src/store/features/temperatureSlice.js b/src/store/features/temperatureSlice.js new file mode 100644 index 0000000..d806353 --- /dev/null +++ b/src/store/features/temperatureSlice.js @@ -0,0 +1,130 @@ +import { createSlice } from "@reduxjs/toolkit"; + +export const initialState = { + top: { + TE201: "0℃", + TE202: "0℃", + TE203: "0℃", + TE204: "0℃", + TE205: "0℃", + TE206: "0℃", + TE207: "0℃", + TE208: "0℃", + TE209: "0℃", + TE210: "0℃", + TE211: "0℃", + TE212: "0℃", + TE213: "0℃", + TE214: "0℃", + TE215: "0℃", + TE216: "0℃", + TE217: "0℃", + TE218: "0℃", + TE219: "0℃", + TE220: "0℃", + TE221: "0℃", + TE222: "0℃", + TE223: "0℃", + TE224: "0℃", + TE225: "0℃", + TE226: "0℃", + TE227: "0℃", + TE228: "0℃", + TE229: "0℃", + TE230: "0℃", + TE231: "0℃", + TE232: "0℃", + TE233: "0℃", + TE234: "0℃", + TE235: "0℃", + TE236: "0℃", + TE237: "0℃", + TE238: "0℃", + TE239: "0℃", + TE240: "0℃", + TE241: "0℃", + TE242: "0℃", + TE271: "0℃", + TE272: "0℃", + TE273: "0℃", + TE274: "0℃", + TE275: "0℃", + TE276: "0℃", + TE277: "0℃", + TE278: "0℃", + TE279: "0℃", + TE280: "0℃", + }, + bottom: { + PE401: "0℃", + PE402: "0℃", + PE403: "0℃", + TE301: "0℃", + TE302: "0℃", + TE303: "0℃", + TE304: "0℃", + TE305: "0℃", + TE306: "0℃", + TE307: "0℃", + TE308: "0℃", + TE309: "0℃", + TE310: "0℃", + TE311: "0℃", + TE312: "0℃", + TE313: "0℃", + TE314: "0℃", + TE315: "0℃", + TE316: "0℃", + TE317: "0℃", + TE318: "0℃", + TE319: "0℃", + TE320: "0℃", + TE321: "0℃", + TE322: "0℃", + TE323: "0℃", + TE324: "0℃", + TE325: "0℃", + TE326: "0℃", + TE327: "0℃", + TE328: "0℃", + TE329: "0℃", + TE330: "0℃", + TE331: "0℃", + TE332: "0℃", + TE333: "0℃", + TE334: "0℃", + TE335: "0℃", + TE336: "0℃", + TE337: "0℃", + TE338: "0℃", + TE339: "0℃", + TE340: "0℃", + TE341: "0℃", + TE342: "0℃", + TE343: "0℃", + TE344: "0℃", + TE345: "0℃", + TE346: "0℃", + TE347: "0℃", + TE348: "0℃", + TE401: "0℃", + TE402: "0℃", + TE403: "0℃", + }, +}; + +const temperatureSlice = createSlice({ + name: "temperature", + initialState, + reducers: { + setTopTemp: (state, action) => { + state["top"] = action.payload; + }, + setBottomTemp: (state, action) => { + state["bottom"] = action.payload; + }, + }, +}); + +export default temperatureSlice.reducer; +export const { setTopTemp, setBottomTemp } = temperatureSlice.actions; diff --git a/src/store/index.js b/src/store/index.js index 23dff4c..de93964 100644 --- a/src/store/index.js +++ b/src/store/index.js @@ -4,6 +4,7 @@ import fireReducer from "./features/fireSlice"; import fanFrequenceReducer from "./features/fanFrequenceSlice"; import combustionAirReducer from "./features/combustionAirSlice"; import gasReducer from "./features/gasSlice"; +import temperatureReducer from "./features/temperatureSlice"; export const store = configureStore({ reducer: { @@ -17,5 +18,7 @@ export const store = configureStore({ natGas: gasReducer, // 助燃风流量 combustionAir: combustionAirReducer, + // 温度 + temperature: temperatureReducer, }, }); diff --git a/src/utils/index.js b/src/utils/index.js index f3718eb..d6b69d8 100644 --- a/src/utils/index.js +++ b/src/utils/index.js @@ -80,6 +80,22 @@ export class WsClient { // 风机运行频率 历史 暂无 break; } + case "TopTempInfo": { + // 碹顶温度列表 + store.dispatch({ + type: "temperature/setTopTemp", + payload: serializedData.data.topTempInfo, + }); + break; + } + case "BottomTempInfo": { + // 碹底温度列表 + store.dispatch({ + type: "temperature/setBottomTemp", + payload: serializedData.data.bottomTempInfo, + }); + break; + } default: { console.log("websocket message: [unknown] ---> ", e.data); }