ソースを参照

布局修改 加 页面加点 修改原有渲染方法

LiuShu_0203 2 ヶ月 前
コミット
5b819ce1d1
1 ファイル変更110 行追加81 行削除
  1. 110 81
      src/App.vue

+ 110 - 81
src/App.vue

@@ -69,7 +69,7 @@
                     </div>
                 </div>
                 <div class="Freezer_boxs">
-                    <div v-if="thawData.length === 3" class="Freezer_left">
+                    <div v-if="numlist === 3" class="Freezer_left">
                         <div v-for="(item, index) in thawData" :key="index" class="Freezer_left_databoxs">
                             <div v-for="(items, indexs) in item.list" :key="indexs" class="Freezer_left_databox">
                                 <div class="Freezer_left_databox_title">{{ items.name ? items.name : '' }}</div>
@@ -90,49 +90,77 @@
                             </div>
                         </div>
                     </div>
-                    <div v-if="thawData.length === 2" class="Freezer_left2">
-                        <div v-for="(item, index) in thawData" :key="index" class="Freezer_left_databoxs2">
-                            <div class="row">
+                    <div v-if="numlist === 2" class="Freezer_left2">
+                        <div class="Freezer_left_databoxs2">
+                            <div v-if="thawData && thawData.one && thawData.one.length > 0" class="row">
                                 <div
-                                    v-for="(items, indexs) in item.list.slice(0, 2)"
+                                    v-for="(items, indexs) in thawData.one"
                                     :key="indexs"
                                     class="Freezer_left_databox2 half-width"
                                 >
                                     <div class="Freezer_left_databox_title2">{{ items.name ? items.name : '' }}</div>
                                     <div class="Freezer_left_databoxs_listboxs2">
-                                        <div class="Freezer_left_databoxs_list2">
-                                            压力
+                                        <div v-for="(j, i) in items.data" :key="i" class="Freezer_left_databoxs_list2">
+                                            {{ j.param ? j.param : '' }}
                                             <div class="Freezer_left_databoxs_lists2">
-                                                {{ items.pressure ? items.pressure.toFixed(2) : '' }} Pa
+                                                {{ j.value ? j.value.toFixed(2) : '' }} {{ j.unit ? j.unit : '' }}
                                             </div>
                                         </div>
-                                        <div class="Freezer_left_databoxs_list2">
-                                            温度:
+                                    </div>
+                                </div>
+                            </div>
+                            <div v-if="thawData && thawData.two" class="row">
+                                <div class="Freezer_left_databox2 full-width">
+                                    <div class="Freezer_left_databox_title2">
+                                        {{ thawData.two.name ? thawData.two.name : '' }}
+                                    </div>
+                                    <div class="Freezer_left_databoxs_listboxs2">
+                                        <div
+                                            v-for="(j, i) in thawData.two.data"
+                                            :key="i"
+                                            class="Freezer_left_databoxs_list2"
+                                        >
+                                            {{ j.param ? j.param : '' }}:
                                             <div class="Freezer_left_databoxs_lists2">
-                                                {{ items.temperature ? items.temperature.toFixed(2) : '' }} ℃
+                                                {{ j.value ? j.value.toFixed(2) : '' }} {{ j.unit ? j.unit : '' }}
                                             </div>
                                         </div>
                                     </div>
                                 </div>
                             </div>
-                            <div class="row">
+                        </div>
+                        <div class="Freezer_left_databoxs2">
+                            <div v-if="thawData && thawData.three.length > 0" class="row">
                                 <div
-                                    v-for="(items, indexs) in item.list.slice(2)"
+                                    v-for="(items, indexs) in thawData.three"
                                     :key="indexs"
-                                    class="Freezer_left_databox2 full-width"
+                                    class="Freezer_left_databox2 half-width"
                                 >
                                     <div class="Freezer_left_databox_title2">{{ items.name ? items.name : '' }}</div>
                                     <div class="Freezer_left_databoxs_listboxs2">
-                                        <div class="Freezer_left_databoxs_list2">
-                                            压力
+                                        <div v-for="(j, i) in items.data" :key="i" class="Freezer_left_databoxs_list2">
+                                            {{ j.param ? j.param : '' }}
                                             <div class="Freezer_left_databoxs_lists2">
-                                                {{ items.pressure ? items.pressure.toFixed(2) : '' }} Pa
+                                                {{ j.value ? j.value.toFixed(2) : '' }} {{ j.unit ? j.unit : '' }}
                                             </div>
                                         </div>
-                                        <div class="Freezer_left_databoxs_list2">
-                                            温度:
+                                    </div>
+                                </div>
+                            </div>
+                            <div v-if="thawData && thawData.four" class="row">
+                                <div class="Freezer_left_databox2 full-width">
+                                    <div class="Freezer_left_databox_title2">
+                                        {{ thawData.four.name ? thawData.four.name : '' }}
+                                    </div>
+                                    <div class="Freezer_left_databoxs_listboxs2">
+                                        <div
+                                            v-for="(j, i) in thawData.four.data"
+                                            :key="i"
+                                            class="Freezer_left_databoxs_list2"
+                                        >
+                                            {{ j.param ? j.param : '' }}:
                                             <div class="Freezer_left_databoxs_lists2">
-                                                {{ items.temperature ? items.temperature.toFixed(2) : '' }} ℃
+                                                {{ j.value ? j.value.toFixed(2) : '' }} {{ j.unit ? j.unit : '' }}
                                             </div>
                                         </div>
                                     </div>
@@ -145,17 +173,9 @@
                             <div v-for="(item, index) in coalgasData" :key="index" class="Freezer_middle_topdataboxs">
                                 <div class="Freezer_middle_topdataboxs_title">{{ item.name ? item.name : '' }}</div>
                                 <div class="Freezer_middle_topdataboxs_listboxs">
-                                    <div class="Freezer_middle_topdataboxs_list">
-                                        压力:
-                                        <div>{{ item.pressure ? item.pressure.toFixed(3) : '' }} pa</div>
-                                    </div>
-                                    <div class="Freezer_middle_topdataboxs_list">
-                                        温度:
-                                        <div>{{ item.temperature ? item.temperature.toFixed(3) : '' }} ℃</div>
-                                    </div>
-                                    <div class="Freezer_middle_topdataboxs_list">
-                                        流量:
-                                        <div>{{ item.flow ? item.flow.toFixed(3) : '' }} ℃</div>
+                                    <div v-for="(j, i) in item.data" :key="i" class="Freezer_middle_topdataboxs_list">
+                                        {{ j.param ? j.param : '' }}:
+                                        <div>{{ j.value ? j.value.toFixed(3) : '' }} {{ j.unit ? j.unit : '' }}</div>
                                     </div>
                                 </div>
                             </div>
@@ -164,17 +184,9 @@
                             <div v-for="(item, index) in coalgasData" :key="index" class="Freezer_middle_topdataboxs2">
                                 <div class="Freezer_middle_topdataboxs_title2">{{ item.name ? item.name : '' }}</div>
                                 <div class="Freezer_middle_topdataboxs_listboxs2">
-                                    <div class="Freezer_middle_topdataboxs_list2">
-                                        压力:
-                                        <div>{{ item.pressure ? item.pressure.toFixed(3) : '' }} pa</div>
-                                    </div>
-                                    <div class="Freezer_middle_topdataboxs_list2">
-                                        温度:
-                                        <div>{{ item.temperature ? item.temperature.toFixed(3) : '' }} ℃</div>
-                                    </div>
-                                    <div class="Freezer_middle_topdataboxs_list2">
-                                        流量:
-                                        <div>{{ item.flow ? item.flow.toFixed(3) : '' }} ℃</div>
+                                    <div v-for="(j, i) in item.data" :key="i" class="Freezer_middle_topdataboxs_list2">
+                                        {{ j.param ? j.param : '' }}:
+                                        <div>{{ j.value ? j.value.toFixed(3) : '' }} {{ j.unit ? j.unit : '' }}</div>
                                     </div>
                                 </div>
                             </div>
@@ -227,11 +239,11 @@
                                 <div class="Freezer_middle_belowdataboxs_title">运行状态</div>
                                 <div class="Freezer_middle_belowdataboxs_list">
                                     <div>
-                                        <img src="@/assets/imgs/leaveunused.png" alt="" />
+                                        <img :src="runStatuslist === 1 ? leaveunused : runInsulation" alt="" />
                                         <div>闲置</div>
                                     </div>
                                     <div>
-                                        <img src="@/assets/imgs/runinsulation.png" alt="" />
+                                        <img :src="runStatuslist === 0 ? leaveUnused : runInsulation" alt="" />
                                         <div>运行</div>
                                     </div>
                                 </div>
@@ -284,7 +296,7 @@
                     </div>
                     <div v-else-if="ThawingtemperatureData.length === 2" class="Freezer_right2">
                         <div v-for="(item, index) in ThawingtemperatureData" :key="index" class="Freezer_right_list2">
-                            <div class="Freezer_right_listtitle2">{{ item.name ? item.name : '' }}温度</div>
+                            <div class="Freezer_right_listtitle2">{{ item.name ? item.name : '' }}</div>
                             <div class="Freezer_right_listdata2">
                                 <div class="Freezer_right_listdata_left2">
                                     <div :id="'charts' + index" class="chart-container2"></div>
@@ -327,6 +339,8 @@ import * as echarts from 'echarts';
 import useMqtt from '@/utils/useMqtt';
 import moment from 'moment';
 import { listData, selectIotlist, carThawTimeInfolist } from '@/api/MqttTopic';
+import runInsulation from '@/assets/imgs/runinsulation.png';
+import leaveUnused from '@/assets/imgs/leaveunused.png';
 const { startMqtt, unsubscribeTopic, unsubscribes } = useMqtt();
 // import Imgstobase64 from '@/components/Imgstobase64.vue';
 const mqttTopics = ref<any>(['warn', 'jd_info']);
@@ -342,7 +356,8 @@ const selectTab = (item: any, index: number) => {
     unsubscribes();
     // 清空数据
     coalgasData.value = [];
-    thawData.value = [];
+    thawData.value = {};
+    numlist.value = null;
     ThawingtemperatureData.value = [];
     // 添加当前选中的 topic
     mqttTopics.value = ['warn', 'jd_info', item.topic];
@@ -364,7 +379,7 @@ const alarmdata = ref<any>([]);
 const falogTitle = ref<string>('');
 
 const handleResize = () => handleScreenAuto();
-const interval = ref<number | null>(null);
+const interval = ref<any>(null);
 
 const showAlam = (item: any) => {
     selectIotlist(item.id)
@@ -399,12 +414,14 @@ onMounted(() => {
 const coalgasData = ref<any>([]);
 
 const vehicleData = ref<any>([]);
+const runStatuslist = ref<any>(0);
 
 const runningstate = ref<string>('运行中');
 
 const ThawingtemperatureData = ref<any>([]);
 
-const thawData = ref<any>([]);
+const thawData = ref<any>({});
+const numlist = ref<any>(null);
 
 const pauseCarousel = () => {
     const container = document.querySelector('.alarm_statustitle_container');
@@ -946,6 +963,9 @@ const carThawTimeInfo = () => {
 const addd = (data: any) => {
     let matched = false; // 用来标记是否找到匹配项
     const list = [];
+    console.log(data, 'res.data');
+    runStatuslist.value = data[0].runStatus;
+    console.log(runStatuslist.value, 'res.data');
     data.forEach((item: any) => {
         if (item.warehouseId === Number(morenlist.value)) {
             list.push(item);
@@ -978,6 +998,7 @@ const addd = (data: any) => {
                         runTime: null
                     }
                 ],
+                runStatus: 0,
                 warehouseId: null
             }
         ];
@@ -1010,6 +1031,7 @@ const handleMqttMessage = (topic: string, message: any) => {
     } else if (topic === 'jd_info') {
         try {
             const data = JSON.parse(message.toString());
+            console.log(data, 'datadatadata');
             addd(data);
         } catch (error) {
             console.error('解析消息失败:', error);
@@ -1018,34 +1040,38 @@ const handleMqttMessage = (topic: string, message: any) => {
         try {
             const data = JSON.parse(message.toString());
             coalgasData.value = data.top;
-            // console.log(data, 'data');
+            ThawingtemperatureData.value = data.right;
+            if (ThawingtemperatureData.value.length > 0) {
+                ThawingtemperatureData.value.forEach((item: any, index: any) => {
+                    initChart(item, index, ThawingtemperatureData.value.length);
+                });
+            }
+            numlist.value = data.num;
+            thawData.value = data.left;
 
-            thawData.value = data.buttom.map((buttomItem: any) => {
-                // 处理 middleVo
-                const middleVoList = buttomItem.middleVo.flatMap((middleVo: any) => [middleVo.fan, ...middleVo.home]);
+            // thawData.value = data.buttom.map((buttomItem: any) => {
+            //     // 处理 middleVo
+            //     const middleVoList = buttomItem.middleVo.flatMap((middleVo: any) => [middleVo.fan, ...middleVo.home]);
 
-                // 检查是否有 middleVos
-                let middleVosList = [];
-                if (buttomItem.middleVos && Array.isArray(buttomItem.middleVos)) {
-                    // 处理 middleVos
-                    middleVosList = buttomItem.middleVos.flatMap((middleVos: any) => [
-                        middleVos.fan,
-                        ...middleVos.home
-                    ]);
-                }
+            //     // 检查是否有 middleVos
+            //     let middleVosList = [];
+            //     if (buttomItem.middleVos && Array.isArray(buttomItem.middleVos)) {
+            //         // 处理 middleVos
+            //         middleVosList = buttomItem.middleVos.flatMap((middleVos: any) => [
+            //             middleVos.fan,
+            //             ...middleVos.home
+            //         ]);
+            //     }
 
-                // 合并 middleVo 和 middleVos 的结果
-                const flattenedList = [...middleVoList, ...middleVosList];
+            //     // 合并 middleVo 和 middleVos 的结果
+            //     const flattenedList = [...middleVoList, ...middleVosList];
 
-                return { list: flattenedList };
-            });
-            ThawingtemperatureData.value = data.buttom.map((item: any) => {
-                return item.state;
-            });
-            // console.log('ThawingtemperatureData', ThawingtemperatureData.value);
-            ThawingtemperatureData.value.forEach((item: any, index: any) => {
-                initChart(item, index, ThawingtemperatureData.value.length);
-            });
+            //     return { list: flattenedList };
+            // });
+            // ThawingtemperatureData.value = data.buttom.map((item: any) => {
+            //     return item.state;
+            // });
+            // // console.log('ThawingtemperatureData', ThawingtemperatureData.value);
         } catch (error) {
             console.error('解析消息失败:', error);
         }
@@ -1352,8 +1378,8 @@ body {
                         }
                         .Freezer_left_databoxs_listboxs2 {
                             width: 100%;
-                            height: 6rem;
-                            padding-top: 1.5rem;
+                            height: 10rem;
+                            // padding-top: 1.5rem;
                             .Freezer_left_databoxs_list2 {
                                 display: flex;
                                 width: 100%;
@@ -1363,7 +1389,7 @@ body {
                                 height: 2.9rem;
                                 line-height: 2.9rem;
                                 .Freezer_left_databoxs_lists2 {
-                                    width: 10rem;
+                                    width: 7rem;
                                     height: 100%;
                                     text-align: center;
                                     color: #41ffbf;
@@ -1391,19 +1417,22 @@ body {
                         }
                         .Freezer_left_databoxs_listboxs2 {
                             width: 100%;
-                            height: 6rem;
-                            padding-top: 3.3rem;
+                            height: 10rem;
+                            padding-top: 0.5rem;
                             display: flex;
+                            flex-wrap: wrap; /* 允许换行 */
+                            justify-content: space-between; /* 让两列均匀分布 */
                             .Freezer_left_databoxs_list2 {
                                 display: flex;
-                                width: 100%;
-                                font-size: 1rem;
+                                width: 50%;
+                                font-size: 0.9rem;
                                 padding-left: 0.9rem;
                                 margin: 0.5rem 0;
                                 height: 2.9rem;
                                 line-height: 2.9rem;
+                                box-sizing: border-box;
                                 .Freezer_left_databoxs_lists2 {
-                                    width: 10rem;
+                                    width: 7rem;
                                     height: 100%;
                                     text-align: center;
                                     color: #41ffbf;
@@ -1498,7 +1527,7 @@ body {
                             flex-wrap: wrap;
                             .Freezer_middle_topdataboxs_list2 {
                                 width: 50%;
-                                padding: 0% 10%;
+                                padding: 0% 6%;
                                 height: 3.6rem;
                                 line-height: 3.6rem;
                                 font-size: 1rem;