From 306ef09707d6bcf9ffa67de55f86ab6f4362deee Mon Sep 17 00:00:00 2001 From: riku <risaku@163.com> Date: 星期五, 18 七月 2025 10:04:01 +0800 Subject: [PATCH] 2025.7.18 动态溯源-测试版本 --- src/views/sourcetrace/component/PollutedExceptionItem.vue | 117 +++++++++++++++++++++++++++++++++------------------------- 1 files changed, 67 insertions(+), 50 deletions(-) diff --git a/src/views/sourcetrace/component/PollutedExceptionItem.vue b/src/views/sourcetrace/component/PollutedExceptionItem.vue index 9351fb8..2482d6c 100644 --- a/src/views/sourcetrace/component/PollutedExceptionItem.vue +++ b/src/views/sourcetrace/component/PollutedExceptionItem.vue @@ -11,10 +11,12 @@ <template #content> <el-scrollbar class="clue-card"> <el-row justify="space-between" align="bottom"> - <el-text type="warning" size="large"> 鍏稿瀷鍒囩墖 </el-text> + <el-text type="warning" style="font-weight: 600" size="large"> + 婧簮鍒囩墖 + </el-text> <el-link - type="primary" + type="info" :underline="true" @click="showMarksAndPolygon(item)" > @@ -23,7 +25,7 @@ </el-link> </el-row> <div> - <el-text type="primary"> + <el-text type="info"> <el-icon><Timer /></el-icon> {{ '鍒囩墖鏃舵锛�' + @@ -34,56 +36,67 @@ </el-text> </div> <div> - <el-text type="primary"> + <el-text type="info"> <el-icon><MapLocation /></el-icon> - {{ '椋庨櫓鍖哄煙锛�' + item.pollutedArea.address }} + {{ + '椋庨櫓鍖哄煙锛�' + + (item.pollutedArea.address ? item.pollutedArea.address : '') + }} </el-text> </div> <!-- <div> - <el-text type="primary"> + <el-text type="info"> 婧簮璺濈锛歿{ formatDistanceType(item.pollutedArea.distanceType) }} </el-text> </div> --> <div> - <el-text type="primary"> + <el-text type="info"> <el-icon><Bell /></el-icon> 寮傚父绫诲瀷锛歿{ item.pollutedData.exception }} </el-text> </div> - <el-row style="border-top: 1px solid white"> - <el-col :span="6"> - <el-statistic - title="绐佸彉鍥犲瓙" - :value="item.pollutedData.factorName" - /> - </el-col> - <el-col :span="6"> - <el-statistic - v-if="item.pollutedData.exceptionType == 4" - title="鍙樺寲骞呭害" - :value="formatPercentage(item.pollutedData.avgPer)" - /> - <el-statistic - v-else-if="item.pollutedData.exceptionType == 9" - title="鍙樺寲閫熺巼" - :value="formatChangeRate(item.pollutedData.avgRate)" - suffix="" - /> - </el-col> - <el-col :span="6"> - <el-statistic title="鍙戠敓娆℃暟" :value="item.pollutedData.times" /> - </el-col> - <el-col :span="6"> - <el-statistic - title="骞冲潎椋庨��" - :value="item.pollutedData.windSpeed" - suffix="m/s" - /> - </el-col> - </el-row> + <div v-for="s in item.pollutedData.statisticMap" :key="s.factorId"> + <el-row style="border-top: 1px solid white"> + <el-col :span="6"> + <el-statistic title="绐佸彉鍥犲瓙" :value="s.factorName" /> + </el-col> + <el-col :span="6"> + <el-statistic + v-if="item.pollutedData.exceptionType == 4" + title="鍙樺寲骞呭害" + :value="formatPercentage(s.avgPer)" + /> + <el-statistic + v-else-if="item.pollutedData.exceptionType == 9" + title="鍙樺寲閫熺巼" + :value="formatChangeRate(s.avgRate)" + suffix="" + /> + </el-col> + <el-col :span="6"> + <el-statistic title="鍙戠敓娆℃暟" :value="item.pollutedData.times" /> + </el-col> + <el-col :span="6"> + <el-statistic + title="骞冲潎椋庨��" + :value="item.pollutedData.windSpeed" + :precision="1" + suffix="m/s" + /> + </el-col> + </el-row> + <RealTimeLineChart + v-for="(item1, index1) in s._chartOptions" + :key="index1" + :model-value="item1" + chart-height="80px" + :y-min-interval="20" + :exception-index-arr="exceptionIndexArr" + ></RealTimeLineChart> + </div> <el-row justify="space-between"> <!-- <el-link - type="primary" + type="info" underline @click="showMarksAndPolygon(item)" > @@ -96,17 +109,10 @@ </el-link> --> </el-row> <!-- <div style="width: 320px; height: 80px"> --> - <RealTimeLineChart - v-for="(item1, index1) in item._chartOptions" - :key="index1" - :model-value="item1" - chart-height="80px" - :y-min-interval="20" - ></RealTimeLineChart> <!-- </div> --> <div class="border-dashed"> <el-icon color="#ffbc58" size="20"><WarningFilled /></el-icon> - <el-text type="primary" tag="b"> + <el-text type="info" tag="b"> {{ item.pollutedSource.conclusion }} </el-text> </div> @@ -121,11 +127,22 @@ </CardDialog> --> </template> <script setup> -import { ref } from 'vue'; +import { ref, computed } from 'vue'; const props = defineProps({ modelValue: Boolean, item: Object +}); + +const exceptionIndexArr = computed(() => { + const indexArr = []; + props.item.pollutedData.dataVoList.forEach((e) => { + const i = props.item.pollutedData.historyDataList.findIndex( + (v) => v.time == e.time + ); + indexArr.push([i - 1 < 0 ? 0 : i - 1, i]); + }); + return indexArr; }); const emits = defineEmits(['showMarksAndPolygon', 'update:modelValue']); @@ -159,7 +176,7 @@ } </script> <style scoped> -:deep(.el-statistic) { +/* :deep(.el-statistic) { --el-statistic-title-color: rgb(215, 215, 215); --el-statistic-content-color: white; } @@ -170,7 +187,7 @@ :deep(.el-link) { --el-link-text-color: #23dad1; -} +} */ .scrollbar { min-width: 300px; -- Gitblit v1.9.3