楼宇能效监测控制系统
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 

1047 lines
30 KiB

<template>
<div class="monitor" v-loading="loading">
<div class="monitor-top">
<img
class="title-left"
src="../../../assets/images/title-left.png"
alt=""
/>
<img
class="title-center"
src="../../../assets/images/title-center.png"
alt=""
/>
<img
class="title-right"
src="../../../assets/images/title-right.png"
alt=""
/>
<div class="sys-title">铭汉高效冷源站管理系统</div>
<!-- logo -->
<img src="../../../assets/images/logo-3.png" class="sys-logo" alt="" />
<div class="nowTime">{{ formattedDate }}</div>
<div class="monitor-time">已监测时长:{{ dayData }}天</div>
<img
class="icon_warning"
src="../../../assets/images/warning.png"
title="报警记录"
@click="goWarning"
v-if="isShowWarning"
alt=""
/>
<img
class="icon_home"
src="../../../assets/images/icon_home.png"
title="首页"
@click="goSys"
alt=""
/>
<img
class="back-icon"
src="../../../assets/images/back-icon.png"
title="返回"
@click="goBack"
alt=""
/>
</div>
<div class="host-detail">
<div class="detail-top">
<div class="detail-top-left">
<img
class="host-img1"
src="../../../assets/images/host-img3.png"
alt=""
v-if="isMagnetic === 'true'"
/>
<img
class="host-img1"
src="../../../assets/images/host-img4.png"
alt=""
v-else
/>
<div class="host-name">{{ deviceName }}</div>
<!-- 冷凝器蒸发器压力-->
<div class="outIn">
<!-- <div class="outIn-li in1">
<svg-icon slot="prefix" icon-class="arrow" class="arrow" />
<div class="kpa">冷凝器压力:{{ condenserPre }}kpa</div>
</div>
<div class="outIn-li out1">
<svg-icon slot="prefix" icon-class="arrow" class="arrow" />
<div class="kpa">蒸发器压力:{{ evaporatorPre }}kpa</div>
</div> -->
<!-- <div class="outIn-li in2">
<svg-icon slot="prefix" icon-class="arrow" class="arrow" />
<div class="kpa">566.6kpa</div>
</div>
<div class="outIn-li out2">
<svg-icon slot="prefix" icon-class="arrow" class="arrow" />
<div class="kpa">566.6kpa</div>
</div> -->
</div>
<!-- 运行状态 -->
<img
src="../../../assets/images/fan-img.png"
:class="{
moveClass: hostListClass('1'),
fanBlade: isMagnetic === 'true',
leftFan: isMagnetic === 'false',
}"
alt=""
/>
<!-- 启停状态 -->
<div class="startClass" v-if="hostListClass('2')"></div>
<!-- 冷冻冷却水流信号 -->
<div class="water-flow3">
<div class="water-flow-li">
<span>冷却水流:</span>
<span v-if="hostListClass('21')">接通</span>
<span v-else>断开</span>
<span
class="break"
:class="{ connect: hostListClass('21') }"
></span>
</div>
<div class="water-flow-li">
<span>冷冻水流:</span>
<span v-if="hostListClass('20')">接通</span>
<span v-else>断开</span>
<span
class="break"
:class="{ connect: hostListClass('20') }"
></span>
</div>
</div>
<!-- 负载 -->
<LoadData class="loadData" :hostData="hostData"></LoadData>
</div>
<div class="detail-top-right">
<!-- 温度 -->
<host-chart :temArray="temArray"></host-chart>
</div>
</div>
<div class="detail-bottom">
<div class="hostStatus">
<div class="hostStatus-li">
<span>手自动切换:</span>
<span class="automaticData">{{ automaticObj.showValue }}</span>
</div>
<div class="hostStatus-li">
<span>本地远程状态:</span>
<span class="dotData">{{ localObj.showValue }}</span>
</div>
<div class="hostStatus-li">
<span>故障状态:</span>
<span class="goodData" v-if="badObj.showValue === '未故障'">{{
badObj.showValue
}}</span>
<span class="badData" v-else>{{ badObj.showValue }}</span>
</div>
<div class="hostStatus-li">
<span>运行累计时间:</span>
<span class="timeData">{{ timeObj.showValue }}小时</span>
</div>
</div>
<div class="detail-data hostparams">
<div class="detail-data-top">
<title-img></title-img>
<div class="details-title">主机参数</div>
<title-img></title-img>
</div>
<div class="detail-data-bottom">
<div
class="detail-data-li"
v-for="(item, index) in rightHostData"
:key="index"
>
<div class="rightDot">
<div class="leftDot">
<span>{{ item.otherName }}:</span>
<span class="dotData">{{ item.curValue }}</span>
<span>{{ item.unit }}</span>
</div>
</div>
</div>
</div>
<line-square
class="line1"
:horizontalLength="720"
:verticalLength="440"
:overlap="15"
></line-square>
</div>
<div class="detail-data compressor">
<div class="detail-data-top">
<title-img></title-img>
<div class="details-title">压缩机参数</div>
<title-img></title-img>
</div>
<div class="detail-data-bottom">
<div
class="detail-data-li"
v-for="(item, index) in compressorData"
:key="index + 1"
>
<div class="rightDot">
<div class="leftDot">
<span>{{ item.otherName }}:</span>
<span class="dotData">{{ item.curValue }}</span>
<span>{{ item.unit }}</span>
</div>
</div>
</div>
</div>
<line-square
class="line1"
:horizontalLength="720"
:verticalLength="440"
:overlap="15"
></line-square>
</div>
</div>
</div>
</div>
</template>
<script>
import {
hostDetailsData,
hostTemData,
runTime,
} from "@/api/centerairC/sysMonitor";
import { alarmRecordList } from "@/api/alarm/alarmRecord";
import { cpmList } from "@/api/device/gather";
import LoadData from "./components/loadData.vue";
import hostChart from "./components/hostChart.vue";
import titleImg from "./components/titleImg.vue";
import lineSquare from "./components/lineSquare.vue";
import { format } from "@/utils/datetime";
import { getDay } from "@/utils/datetime";
export default {
name: "sysControl",
components: { LoadData, hostChart, titleImg, lineSquare },
data() {
return {
loading: false,
currentDate: new Date(),
nowTimer: null,
deviceName: "", //主机名称
hostData: [], //主机参数
condenserPre: "", //冷凝器压力
evaporatorPre: "", //蒸发器压力
rightHostData: [], //右
automaticObj: {}, //手自动状态
localObj: {}, //本地远程状态
badObj: {}, //故障状态
timeObj: {}, //累计运行时间
compressorData: [], //压缩机参数
temArray: [], //冷冻冷却水温度
isMagnetic: false,
isShowWarning: false, //是否有报警
dayData: "", //监测天数
};
},
computed: {
formattedDate() {
const year = this.currentDate.getFullYear();
const month = String(this.currentDate.getMonth() + 1).padStart(2, "0");
const day = String(this.currentDate.getDate()).padStart(2, "0");
const hours = String(this.currentDate.getHours()).padStart(2, "0");
const minutes = String(this.currentDate.getMinutes()).padStart(2, "0");
const seconds = String(this.currentDate.getSeconds()).padStart(2, "0");
const weekDays = [
"星期日",
"星期一",
"星期二",
"星期三",
"星期四",
"星期五",
"星期六",
];
const weekDay = weekDays[this.currentDate.getDay()];
return `${year}${month}${day}${hours}:${minutes}:${seconds} ${weekDay}`;
},
},
created() {},
mounted() {
this.getHostDetailsData();
this.getAlarnStatus();
this.getDayData();
// 在组件挂载后尝试进入全屏
setTimeout(() => {
this.requestFullscreen();
}, 100); // 延迟 100 毫秒执行全屏操作
},
beforeDestroy() {
// 组件销毁前清除定时器
if (this.nowTimer) {
clearInterval(this.nowTimer);
}
},
methods: {
// 全屏操作
requestFullscreen() {
const element = document.documentElement;
console.log("全屏了吗");
if (element.requestFullscreen) {
element.requestFullscreen();
} else if (element.mozRequestFullScreen) {
// Firefox
element.mozRequestFullScreen();
} else if (element.webkitRequestFullscreen) {
// Chrome, Safari and Opera
element.webkitRequestFullscreen();
} else if (element.msRequestFullscreen) {
// IE/Edge
element.msRequestFullscreen();
}
},
// 退出全屏
exitFullscreen() {
if (document.exitFullscreen) {
document.exitFullscreen();
} else if (document.mozCancelFullScreen) {
// Firefox
document.mozCancelFullScreen();
} else if (document.webkitExitFullscreen) {
// Chrome, Safari and Opera
document.webkitExitFullscreen();
} else if (document.msExitFullscreen) {
// IE/Edge
document.msExitFullscreen();
}
},
// 进入系统首页
goSys() {
this.exitFullscreen();
this.$router.push("/");
},
// 返回上一页
goBack() {
this.$router.back();
},
// 监测天数
getDayData() {
runTime().then((res) => {
if (res.code == 200) {
this.dayData = res.data.runTime;
}
});
},
getHostDetailsData() {
//判断当前的url是否有传参
// 获取查询字符串
const search = window.location.search;
// 判断是否有查询参数
const hasQueryParams = search.length > 1;
if (hasQueryParams) {
console.log("当前 URL 有传参");
// 解析查询字符串
const queryParams = {};
const params = search.slice(1).split("&");
params.forEach((param) => {
const [key, value] = param.split("=");
queryParams[key] = decodeURIComponent(value);
});
console.log("传递的参数:", queryParams);
// 获取特定参数
const deviceLedgerId = queryParams.hostId;
this.deviceName = queryParams.hostName;
this.isMagnetic = queryParams.isMagnetic;
console.log("是否是磁悬浮主机", this.isMagnetic);
// 请求主机参数、压缩机参数
this.getHostParams(deviceLedgerId);
// 请求采集位点
this.getCollect(deviceLedgerId);
} else {
}
},
// 主机参数、压缩机参数
getHostParams(id) {
hostDetailsData({ deviceLedgerId: id }).then((res) => {
console.log("主机参数返回", res);
if (res.code == 200) {
let data = res.rows;
data.forEach((item) => {
if (item.mtType === "0") {
// 主机参数
this.hostData = item.list;
// 主机参数分开两列
this.leftHostData = [];
this.rightHostData = [];
this.hostData.forEach((item) => {
// 右边主机参数 温度12
if (item.paramType === "12") {
this.rightHostData.push(item);
}
//左边主机参数 根据不同的 paramType 处理 showValue
if (item.paramType === "6") {
// 运行状态
item.showValue =
Number(item.curValue) === 0 ? "自动" : "手动";
this.automaticObj = item;
} else if (item.paramType === "5") {
// 故障状态
item.showValue =
Number(item.curValue) === 0 ? "未故障" : "故障";
this.badObj = item;
} else if (item.paramType === "22") {
// 本地远程
item.showValue =
Number(item.curValue) === 0 ? "本地" : "远程";
this.localObj = item;
} else if (item.paramType === "26") {
// 累计运行时间
item.showValue = item.curValue;
this.timeObj = item;
}
});
}
if (item.mtType === "9") {
// 压缩机参数
this.compressorData = item.list;
// 遍历数组
for (let i = 0; i < this.compressorData.length; i++) {
const item = this.compressorData[i];
if (item.paramType === '1' && Number(item.curValue) === 0) {
item.curValue = "停止";
console.log("压缩机停止了啊是0···················")
}else if (item.paramType === '1' && Number(item.curValue) === 1){
item.curValue = "运行";
}
}
}
});
}
});
},
// 采集参数列表
getCollect(id) {
let data = {
pageNum: 1,
pageSize: 10000,
deviceLedgerId: id,
};
cpmList(data).then((res) => {
console.log("采集位点返回", res);
if (res.code == 200) {
// 过滤掉结果,只保留冷冻冷却进出水温度
let data = res.rows;
let newDataArray = []; // 用于存储符合条件的对象的新数组
data.forEach((item) => {
if (
item.otherName.includes("冷冻回水温度") ||
item.otherName.includes("冷冻供水温度") ||
item.otherName.includes("冷却回水温度") ||
item.otherName.includes("冷却供水温度") ||
item.otherName.includes("负载")
) {
let dataItem = {
name: item.otherName,
value: item.id,
};
newDataArray.push(dataItem);
}
});
console.log("处理后的数组···", newDataArray);
// 请求温度
this.getTemData(newDataArray);
}
});
},
// 冷冻冷却进出水温度图表数据
getTemData(array) {
const start = new Date(new Date().setHours(0, 0, 0, 0));
const end = new Date(new Date().setHours(23, 59, 59, 59));
let data = {
timeType: "min",
startTime: format(start),
endTime: format(end),
pageNum: 0,
pageSize: 10,
searchParams: array,
systemType: "0",
};
hostTemData(data).then((res) => {
console.log("进出水温度返回值", res);
if (res.code == 200 && res.data.length > 0) {
this.temArray = res.data;
}
});
},
hostListClass(paramType) {
for (let i = 0; i < this.hostData.length; i++) {
const item = this.hostData[i];
if (item.paramType === paramType && Number(item.curValue) !== 0) {
return true;
}
}
// 否则
return false;
},
// 报警列表
getAlarnStatus() {
let data = {
pageNum: 1,
pageSize: 10,
status: "0",
};
let timeArr = [getDay(0), getDay(0)];
alarmRecordList(this.addDateRange(data, timeArr)).then((res) => {
if (res.code == 200 && res.rows.length > 0) {
this.isShowWarning = true;
} else {
this.isShowWarning = false;
}
});
},
goWarning() {
this.exitFullscreen();
this.$router.push("/alarm/alarmRecord");
},
},
};
</script>
<style lang="scss" scoped>
.monitor {
width: 100%;
min-height: 100vh;
background-color: black;
color: #fff;
.monitor-top {
width: 100%;
display: flex;
flex-direction: row;
align-items: flex-start;
justify-content: space-between;
flex-wrap: nowrap;
padding: 0.1rem 0.2rem;
position: relative;
.title-left {
width: 3.41rem;
height: 0.8rem;
}
.title-center {
width: 9.46rem;
height: 0.69rem;
}
.title-right {
width: 5.04rem;
height: 0.61rem;
}
.sys-title {
position: absolute;
top: 40%;
left: 50%;
transform: translate(-50%, -50%);
font-size: 0.28rem;
color: #ffffff;
font-weight: bold;
z-index: 100;
}
.nowTime {
position: absolute;
top: 0.3rem;
right: 0.6rem;
font-size: 0.18rem;
color: #ffffff;
font-weight: bold;
z-index: 100;
}
.sys-logo {
width: 1.8rem;
height: 0.5rem;
position: absolute;
top: 0.26rem;
left: 0.8rem;
z-index: 10;
}
.monitor-time {
position: absolute;
top: 0.44rem;
left: 4.2rem;
z-index: 10;
font-size: 0.18rem;
color: #ffffff;
font-weight: bold;
}
.icon_warning {
position: absolute;
top: 0.33rem;
right: 4.4rem;
z-index: 10;
width: 0.3rem;
height: 0.27rem;
margin: 0 0.25rem 0 0.27rem;
cursor: pointer;
/* 添加闪烁动画 */
animation: blink 1s infinite;
}
@keyframes blink {
100% {
opacity: 1;
}
50% {
opacity: 0;
}
}
.icon_home {
position: absolute;
top: 0.33rem;
right: 4rem;
z-index: 10;
width: 0.3rem;
height: 0.27rem;
margin: 0 0.2rem 0 0.27rem;
cursor: pointer;
}
.back-icon {
position: absolute;
top: 0.33rem;
right: 3.7rem;
z-index: 10;
width: 0.3rem;
height: 0.27rem;
cursor: pointer;
}
}
.host-detail {
padding: 0.2rem;
width: 100%;
display: flex;
flex-direction: column;
.detail-top {
width: 100%;
display: flex;
flex-direction: row;
align-items: center;
justify-content: space-between;
.detail-top-left {
width: 7rem;
height: 4.4rem;
// background-color: aquamarine;
position: relative;
.host-img1 {
width: 4.88rem;
height: 3.97rem;
margin: 0.2rem 0 0 0.2rem;
}
.outIn {
position: absolute;
left: 4.8rem;
top: 1rem;
display: flex;
flex-direction: column;
.outIn-li {
display: flex;
flex-direction: row;
align-items: center;
width: 2rem;
height: 1rem;
font-weight: bold;
// background-color: #e2aeae;
.arrow {
font-size: 0.3rem;
z-index: 10;
}
.kpa {
font-size: 0.18rem;
z-index: 10;
}
}
.in1 {
position: absolute;
top: 1.3rem;
left: 0.2rem;
color: rgb(123, 212, 247);
}
.out1 {
position: absolute;
top: 1.6rem;
left: 0.18rem;
color: rgb(38, 122, 218);
.arrow {
transform: scaleX(-1);
}
}
.in2 {
position: absolute;
top: 1.9rem;
left: -0.4rem;
color: rgb(235, 120, 206);
}
.out2 {
position: absolute;
top: 2.2rem;
left: -0.4rem;
color: rgb(240, 56, 95);
.arrow {
transform: scaleX(-1);
}
}
}
/* 定义灯闪烁的动画 */
@keyframes blink {
0% {
opacity: 1;
}
50% {
opacity: 0.7;
}
100% {
opacity: 1;
}
}
.startClass {
z-index: 10;
position: absolute;
top: 2.9rem;
left: 3.4rem;
width: 0.18rem;
height: 0.18rem;
border-radius: 50%;
animation: blink 1s infinite;
background-color: #38fc52 !important;
}
.water-flow3 {
z-index: 10;
position: absolute;
top: 3.6rem;
left: 1.2rem;
.water-flow-li {
margin-bottom: 0.04rem;
color: #46f1e3;
font-size: 0.18rem;
display: flex;
flex-direction: row;
align-items: center;
span {
background-color: rgba(0, 255, 255, 0.2);
border-radius: 0.1rem;
padding: 0.01rem 0.03rem;
}
.break {
margin-left: 0.07rem;
display: inline-block;
width: 0.18rem;
height: 0.18rem;
border-radius: 50%;
border: 1px solid #46f1e3;
background-color: transparent !important;
}
.connect {
animation: blink 1s infinite;
background-color: #38fc52 !important;
}
}
}
/* 定义 host 动画关键帧 */
@keyframes host {
0% {
/* 修改初始旋转角度 */
transform: translateX(-50%) rotateX(15deg) rotateZ(0deg);
}
100% {
/* 修改结束旋转角度 */
transform: translateX(-50%) rotateX(15deg) rotateZ(360deg);
}
}
.fanBlade {
z-index: 10;
position: absolute;
top: 2.55rem;
left: 4.65rem;
width: 0.5rem;
height: 0.5rem;
transform-style: preserve-3d;
transform: translateX(-50%) rotateX(15deg) rotateZ(20deg)
rotateY(40deg);
}
.leftFan {
z-index: 10;
position: absolute;
top: 2.55rem;
left: 0.53rem;
width: 0.5rem;
height: 0.5rem;
transform-style: preserve-3d;
transform: translateX(-50%) rotateX(0deg) rotateZ(0deg) rotateY(-0deg);
}
.moveClass {
animation: host 2s linear infinite;
}
.host-name {
z-index: 10;
position: absolute;
top: 1.55rem;
left: 1.8rem;
color: #3520f8;
font-weight: bold;
font-size: 0.18rem;
}
.loadData {
z-index: 10;
position: absolute;
top: 0.2rem;
right: 0rem;
}
}
.detail-top-right {
width: calc(100% - 7.25rem);
height: 4.4rem;
// background-color: rgb(127, 172, 255);
}
}
.detail-bottom {
height: 5rem;
margin-top: 0.3rem;
margin-left: 0.25rem;
display: flex;
flex-direction: row;
justify-content: space-between;
.hostStatus {
display: flex;
flex-direction: column;
justify-content: flex-end;
width: 3rem;
margin-bottom: 1.5rem;
.hostStatus-li {
background-color: #25455a;
color: #c0dffc;
font-size: 0.18rem;
margin-bottom: 0.1rem;
padding: 0.1rem;
letter-spacing: 0.02rem;
display: flex;
flex-direction: row;
align-items: flex-start;
}
}
.detail-data {
display: flex;
flex-direction: column;
// width: 4rem;
position: relative;
.detail-data-top {
display: flex;
flex-direction: row;
align-items: center;
justify-content: center;
color: #c0dffc;
font-weight: bold;
font-size: 0.18rem;
width: 100%;
text-align: center;
z-index: 10;
.details-title {
margin: 0 0.15rem;
}
}
.detail-data-bottom {
width: 100%;
padding: 0.1rem 0.3rem;
z-index: 0;
display: flex;
flex-direction: row;
flex-wrap: wrap;
align-items: flex-start;
justify-content: flex-start;
.detail-data-li {
// width: 100%;
margin-right: 0.1rem;
position: relative;
color: #c0dffc;
font-family: Arial, sans-serif;
letter-spacing: 0.02rem;
font-size: 0.18rem;
position: relative;
margin-bottom: 0.2rem;
border-left: 0.01rem solid #217df5;
border-right: 0.01rem solid #217df5;
background-image: radial-gradient(
circle at left top,
#217df5 0.01rem,
transparent 0.01rem
),
radial-gradient(
circle at right top,
#217df5 0.01rem,
transparent 0.01rem
),
radial-gradient(
circle at left bottom,
#217df5 0.01rem,
transparent 0.01rem
),
radial-gradient(
circle at right bottom,
#217df5 0.01rem,
transparent 0.01rem
);
background-repeat: no-repeat;
background-position: left top, right top, left bottom, right bottom;
}
.detail-data-li::before,
.detail-data-li::after {
content: "";
position: absolute;
left: 0;
right: 0;
height: 0.01rem;
background-image: linear-gradient(
to right,
#217df5 0%,
rgba(41, 128, 185, 0) 50%,
#217df5 100%
);
}
.detail-data-li::before {
top: 0;
}
.detail-data-li::after {
bottom: 0;
}
.rightDot {
position: relative;
width: 100%;
height: 100%;
}
.leftDot {
position: relative;
width: 100%;
height: 100%;
padding: 0.04rem 0.1rem;
display: flex;
flex-direction: row;
align-items: center;
justify-content: space-between;
}
.rightDot::before {
content: "";
position: absolute;
top: -0.03rem;
right: -0.03rem;
width: 0.06rem;
height: 0.06rem;
background-color: #217df5;
box-shadow: 0 0 0.1rem 0.02rem rgba(33, 125, 245, 0.9);
background-image: radial-gradient(
circle at 30% 30%,
rgba(255, 255, 255, 0.8) 0%,
rgba(255, 255, 255, 0) 70%
);
border-radius: 50%;
z-index: 10;
}
.rightDot::after {
content: "";
position: absolute;
bottom: -0.03rem;
right: -0.03rem;
width: 0.06rem;
height: 0.06rem;
background-color: #217df5;
box-shadow: 0 0 0.1rem 0.02rem rgba(33, 125, 245, 0.9);
background-image: radial-gradient(
circle at 30% 30%,
rgba(255, 255, 255, 0.8) 0%,
rgba(255, 255, 255, 0) 70%
);
border-radius: 50%;
z-index: 10;
}
.leftDot::before {
content: "";
position: absolute;
top: -0.03rem;
left: -0.03rem;
width: 0.06rem;
height: 0.06rem;
background-color: #217df5;
border-radius: 50%;
z-index: 10;
box-shadow: 0 0 0.1rem 0.02rem rgba(33, 125, 245, 0.9);
background-image: radial-gradient(
circle at 30% 30%,
rgba(255, 255, 255, 0.8) 0%,
rgba(255, 255, 255, 0) 70%
);
}
.leftDot::after {
content: "";
position: absolute;
bottom: -0.03rem;
left: -0.03rem;
width: 0.06rem;
height: 0.06rem;
background-color: #217df5;
z-index: 10;
box-shadow: 0 0 0.1rem 0.02rem rgba(33, 125, 245, 0.9);
background-image: radial-gradient(
circle at 30% 30%,
rgba(255, 255, 255, 0.8) 0%,
rgba(255, 255, 255, 0) 70%
);
border-radius: 50%;
}
}
.line1 {
position: absolute;
top: 0rem;
}
}
.hostparams {
width: 7.6rem;
.detail-data-bottom {
padding-left: 0.5rem;
.detail-data-li {
width: 3.2rem;
}
}
}
.compressor {
width: 7.6rem;
.detail-data-bottom {
padding-left: 0.75rem;
.detail-data-li {
width: 3rem;
}
}
}
.dotData {
font-weight: bold;
margin: 0 0.06rem;
color: #3b80ff;
display: flex;
align-items: center;
}
.goodData {
font-weight: bold;
margin: 0 0.06rem;
color: #3df574;
}
.badData {
font-weight: bold;
margin: 0 0.06rem;
color: #cf3607;
}
.automaticData {
font-weight: bold;
margin: 0 0.06rem;
color: #da7b10;
}
.timeData {
font-weight: bold;
margin: 0 0.06rem;
color: #1df3e8;
}
}
}
}
</style>