|
|
@@ -3,39 +3,55 @@
|
|
|
<!-- 加载状态 -->
|
|
|
<div v-if="loading" class="loading">加载中...</div>
|
|
|
|
|
|
- <!-- 固定监测数据展示 -->
|
|
|
- <div v-else class="record-list">
|
|
|
- <div class="record-item">
|
|
|
- <span class="label">CO(ppm)</span>
|
|
|
- <span class="value">{{ monitorData.coVal || '--' }}</span>
|
|
|
+ <!-- 内容区域 -->
|
|
|
+ <div v-else class="content-wrapper">
|
|
|
+ <!-- 固定监测数据展示 -->
|
|
|
+ <div class="record-list">
|
|
|
+ <div class="record-item">
|
|
|
+ <div class="label">CO(ppm)</div>
|
|
|
+ <div class="value">{{ monitorData.coVal || '--' }}</div>
|
|
|
+ </div>
|
|
|
+ <div class="record-item">
|
|
|
+ <div class="label">CO₂(%)</div>
|
|
|
+ <div class="value">{{ monitorData.co2Val || '--' }}</div>
|
|
|
+ </div>
|
|
|
+ <div class="record-item">
|
|
|
+ <div class="label">CH₄(%)</div>
|
|
|
+ <div class="value">{{ monitorData.ch4Val || '--' }}</div>
|
|
|
+ </div>
|
|
|
+ <div class="record-item">
|
|
|
+ <div class="label">C₂H₂(ppm)</div>
|
|
|
+ <div class="value">{{ monitorData.c2h2Val || '--' }}</div>
|
|
|
+ </div>
|
|
|
+ <div class="record-item">
|
|
|
+ <div class="label">C₂H₄(ppm)</div>
|
|
|
+ <div class="value">{{ monitorData.c2h4Val || '--' }}</div>
|
|
|
+ </div>
|
|
|
+ <div class="record-item">
|
|
|
+ <div class="label">O₂(%)</div>
|
|
|
+ <div class="value">{{ monitorData.o2Val || '--' }}</div>
|
|
|
+ </div>
|
|
|
+ <div class="record-item">
|
|
|
+ <div class="label">温度(℃)</div>
|
|
|
+ <div class="value">{{ monitorData.temperature || '--' }}</div>
|
|
|
+ </div>
|
|
|
+ <div class="record-item">
|
|
|
+ <div class="label">压差(Pa)</div>
|
|
|
+ <div class="value">{{ monitorData.sourcePressure || '--' }}</div>
|
|
|
+ </div>
|
|
|
</div>
|
|
|
- <div class="record-item">
|
|
|
- <span class="label">CO₂(%)</span>
|
|
|
- <span class="value">{{ monitorData.co2Val || '--' }}</span>
|
|
|
- </div>
|
|
|
- <div class="record-item">
|
|
|
- <span class="label">CH₄(%)</span>
|
|
|
- <span class="value">{{ monitorData.ch4Val || '--' }}</span>
|
|
|
- </div>
|
|
|
- <div class="record-item">
|
|
|
- <span class="label">C₂H₂(ppm)</span>
|
|
|
- <span class="value">{{ monitorData.c2h2Val || '--' }}</span>
|
|
|
- </div>
|
|
|
- <div class="record-item">
|
|
|
- <span class="label">C₂H₄(ppm)</span>
|
|
|
- <span class="value">{{ monitorData.c2h4Val || '--' }}</span>
|
|
|
- </div>
|
|
|
- <div class="record-item">
|
|
|
- <span class="label">O₂(%)</span>
|
|
|
- <span class="value">{{ monitorData.o2Val || '--' }}</span>
|
|
|
- </div>
|
|
|
- <div class="record-item">
|
|
|
- <span class="label">温度(℃)</span>
|
|
|
- <span class="value">{{ monitorData.temperature || '--' }}</span>
|
|
|
- </div>
|
|
|
- <div class="record-item">
|
|
|
- <span class="label">压差(Pa)</span>
|
|
|
- <span class="value">{{ monitorData.sourcePressure || '--' }}</span>
|
|
|
+
|
|
|
+ <!-- 爆炸三角形图表 -->
|
|
|
+ <div class="chart-section">
|
|
|
+ <div class="chart-title">爆炸三角形</div>
|
|
|
+ <div class="chart-box">
|
|
|
+ <BlastDelta
|
|
|
+ :posMonitor="monitorData"
|
|
|
+ :canvas-size="{ width: 420, height: 149 }"
|
|
|
+ :legendStyle="{ left: '50%', top: '10px' }"
|
|
|
+ text-color="#000"
|
|
|
+ />
|
|
|
+ </div>
|
|
|
</div>
|
|
|
</div>
|
|
|
</div>
|
|
|
@@ -45,6 +61,7 @@
|
|
|
import { ref, onMounted, onUnmounted } from 'vue';
|
|
|
import { getGoafData } from '../cad.api';
|
|
|
import { message } from 'ant-design-vue';
|
|
|
+import BlastDelta from '/@/components/Configurable/preset/BlastDelta.vue';
|
|
|
|
|
|
interface Props {
|
|
|
data: Record<string, any>;
|
|
|
@@ -67,6 +84,7 @@ const monitorData = ref({
|
|
|
o2Val: '',
|
|
|
sourcePressure: '',
|
|
|
temperature: '',
|
|
|
+ btTriBlast: '',
|
|
|
});
|
|
|
|
|
|
// 获取数据方法(抽取出来复用)
|
|
|
@@ -95,6 +113,7 @@ const fetchData = async () => {
|
|
|
o2Val: data.o2Val,
|
|
|
sourcePressure: data.sourcePressure,
|
|
|
temperature: data.temperature,
|
|
|
+ btTriBlast: data.btTriBlast,
|
|
|
};
|
|
|
} catch (err) {
|
|
|
message.error(`获取监测数据失败:${(err as Error).message}`);
|
|
|
@@ -127,11 +146,19 @@ onUnmounted(() => {
|
|
|
<style scoped>
|
|
|
.goaf-popup-container {
|
|
|
font-family: sans-serif;
|
|
|
- width: 700px;
|
|
|
- max-height: 500px;
|
|
|
+ width: 500px;
|
|
|
+ max-height: 600px;
|
|
|
border-radius: 8px;
|
|
|
- padding: 12px;
|
|
|
+ padding-top: 10px;
|
|
|
+ /* background: #fff; */
|
|
|
}
|
|
|
+
|
|
|
+/* .content-wrapper {
|
|
|
+ display: flex;
|
|
|
+ flex-direction: column;
|
|
|
+ gap: 15px;
|
|
|
+} */
|
|
|
+
|
|
|
.loading {
|
|
|
color: #000;
|
|
|
font-size: 14px;
|
|
|
@@ -142,47 +169,75 @@ onUnmounted(() => {
|
|
|
.record-list {
|
|
|
width: 100%;
|
|
|
display: grid;
|
|
|
- grid-template-columns: repeat(2, 1fr);
|
|
|
+ grid-template-columns: repeat(4, 1fr);
|
|
|
+ gap: 10px;
|
|
|
+ background-color: #dceefb;
|
|
|
+ padding: 10px;
|
|
|
+ border-radius: 4px;
|
|
|
}
|
|
|
|
|
|
.record-item {
|
|
|
+ height: 80px;
|
|
|
display: flex;
|
|
|
+ flex-direction: column;
|
|
|
justify-content: space-between;
|
|
|
align-items: center;
|
|
|
padding: 0;
|
|
|
box-sizing: border-box;
|
|
|
- min-height: 50px;
|
|
|
+ min-height: 60px;
|
|
|
+ background-image: url(/src/assets/images/sealedGoaf/board-bg-details.png);
|
|
|
+ background-repeat: no-repeat;
|
|
|
+ background-size: 100% 100%;
|
|
|
}
|
|
|
|
|
|
|
|
|
.label {
|
|
|
- flex-shrink: 0; /* 防止标签被挤压 */
|
|
|
+ height: 30px;
|
|
|
+ width: 100%;
|
|
|
+ flex-shrink: 0;
|
|
|
font-size: 14px;
|
|
|
- width: 160px;
|
|
|
- height: 100%;
|
|
|
- color: #53657a;
|
|
|
- background-color: #f5f5f5;
|
|
|
- padding-left: 10px;
|
|
|
- text-align: left;
|
|
|
- font-weight: 700;
|
|
|
+ color: #000;
|
|
|
+ text-align: center;
|
|
|
display: flex;
|
|
|
align-items: center;
|
|
|
- border: 1px solid #ddd;
|
|
|
+ justify-content: center;
|
|
|
}
|
|
|
|
|
|
.value {
|
|
|
- width:100%;
|
|
|
- height: 100%;
|
|
|
- font-size: 13px;
|
|
|
- color: #000;
|
|
|
- background-color: #f5f5f5;
|
|
|
- padding-right: 8px;
|
|
|
- word-break: break-all; /* 超长内容换行,避免溢出 */
|
|
|
- border: 1px solid #ddd;
|
|
|
+ width: 100%;
|
|
|
+ height: 50px;
|
|
|
+ font-size: 16px;
|
|
|
+ color: #2b6ff0;
|
|
|
+ word-break: break-all;
|
|
|
border-left: none;
|
|
|
display: flex;
|
|
|
align-items: center;
|
|
|
- padding-left: 10px;
|
|
|
+ justify-content: center;
|
|
|
+}
|
|
|
+
|
|
|
+/* 图表区域样式 */
|
|
|
+.chart-section {
|
|
|
+ margin-top: 10px;
|
|
|
+ border-radius: 4px;
|
|
|
+ padding: 4px 10px;
|
|
|
+ background: #dceefb;
|
|
|
+}
|
|
|
+
|
|
|
+.chart-title {
|
|
|
+ font-size: 14px;
|
|
|
+ color: #000;
|
|
|
+ text-align: left;
|
|
|
+}
|
|
|
+
|
|
|
+.chart-box {
|
|
|
+ width: 100%;
|
|
|
+ height: 200px;
|
|
|
+ border-radius: 4px;
|
|
|
+ overflow: hidden;
|
|
|
+}
|
|
|
+:deep(.legend-label) {
|
|
|
+ font-size: 15px;
|
|
|
+ color: #000;
|
|
|
}
|
|
|
|
|
|
.no-data {
|
|
|
@@ -190,6 +245,6 @@ onUnmounted(() => {
|
|
|
font-size: 12px;
|
|
|
text-align: center;
|
|
|
padding: 10px 0;
|
|
|
- grid-column: 1 / 4; /* 无数据时跨三列居中 */
|
|
|
+ grid-column: 1 / 4;
|
|
|
}
|
|
|
-</style>
|
|
|
+</style>
|