From 08ffcf9d7ffafaa82d8de7f9b5fcfdb49e9c3688 Mon Sep 17 00:00:00 2001
From: riku <risaku@163.com>
Date: 星期三, 05 十一月 2025 17:33:54 +0800
Subject: [PATCH] 动态溯源 1. 修复CO因子文本没有正常显示的问题;
---
src/views/sourcetrace/SourceTrace.vue | 186 ++++++++++++++++++++++++++++++++--------------
1 files changed, 128 insertions(+), 58 deletions(-)
diff --git a/src/views/sourcetrace/SourceTrace.vue b/src/views/sourcetrace/SourceTrace.vue
index 87768df..5c738de 100644
--- a/src/views/sourcetrace/SourceTrace.vue
+++ b/src/views/sourcetrace/SourceTrace.vue
@@ -7,7 +7,7 @@
"
>
<el-col span="2" class="flex-col">
- <el-row justify="end">
+ <el-row :justify="direction == 'left' ? 'end' : 'start'">
<CardButton
:direction="direction"
name="鍔ㄦ�佹函婧�"
@@ -41,8 +41,8 @@
<SourceTraceFilter
v-model:data-slice="selectedMsgTypes"
v-model:factor-type="selectedFactorTypes"
- :factor-options="factorOptions"
v-model:scene-type="selectedSceneTypes"
+ :factor-options="factorOptions"
:scene-options="sceneOptions"
></SourceTraceFilter>
<!-- <el-divider direction="vertical"></el-divider> -->
@@ -55,7 +55,11 @@
</el-space>
</div>
</el-row>
- <el-scrollbar ref="scrollbarRef" class="scrollbar">
+ <el-scrollbar
+ ref="scrollbarRef"
+ class="scrollbar"
+ v-loading="loading"
+ >
<TransitionGroup name="list">
<div
v-for="item in filterStreams"
@@ -154,6 +158,8 @@
const selectedSceneTypes = ref([]);
const sceneOptions = ref([]);
+const loading = ref(false);
+
function handleDisplayChange() {
show.value = !show.value;
if (
@@ -188,9 +194,16 @@
case '1':
case '3':
// 鍒ゆ柇鐩戞祴鍥犲瓙绫诲瀷鏄惁閫変腑
- b2 = selectedFactorTypes.value.indexOf(v.pollutedData.factorId) != -1;
+ for (const key in v.pollutedData.statisticMap) {
+ const value = v.pollutedData.statisticMap[key];
+ b2 = b2 || selectedFactorTypes.value.indexOf(value.factorId) != -1;
+ }
+
// 鍒ゆ柇鍦烘櫙绫诲瀷鏄惁閫変腑
- if (v.pollutedSource.sceneList.length == 0) {
+ if (
+ v.pollutedSource == undefined ||
+ v.pollutedSource.sceneList.length == 0
+ ) {
b3 = selectedSceneTypes.value.indexOf(NO_SCENE) != -1;
} else {
b3 =
@@ -219,15 +232,44 @@
type3: 0
};
streams.value.forEach((v) => {
+ let b2, b3;
+ // 鍒ゆ柇鐩戞祴鍥犲瓙绫诲瀷鏄惁閫変腑
+ for (const key in v.pollutedData.statisticMap) {
+ const value = v.pollutedData.statisticMap[key];
+ b2 = b2 || selectedFactorTypes.value.indexOf(value.factorId) != -1;
+ }
+
+ // 鍒ゆ柇鍦烘櫙绫诲瀷鏄惁閫変腑
+ if (
+ v.pollutedSource == undefined ||
+ v.pollutedSource.sceneList.length == 0
+ ) {
+ b3 = selectedSceneTypes.value.indexOf(NO_SCENE) != -1;
+ } else {
+ b3 =
+ v.pollutedSource.sceneList.findIndex(
+ (v) => selectedSceneTypes.value.indexOf(v.typeId) != -1
+ ) != -1;
+ }
switch (v._type) {
case '1':
- count.type1++;
+ if (b2 && b3) {
+ count.type1++;
+ }
break;
case '2':
- count.type2++;
+ b3 =
+ v.sortedSceneList.findIndex(
+ (v) => selectedSceneTypes.value.indexOf(v.first.typeId) != -1
+ ) != -1;
+ if (b3) {
+ count.type2++;
+ }
break;
case '3':
- count.type3++;
+ if (b2 && b3) {
+ count.type3++;
+ }
break;
}
});
@@ -282,37 +324,43 @@
case '1':
case '3':
// 绛涢�夌洃娴嬪洜瀛愮被鍨�
- if (
- factorOptions.value.findIndex(
- (v) => v.value == objData.pollutedData.factorId
- ) == -1
- ) {
- factorOptions.value.push({
- label: objData.pollutedData.factorName,
- value: objData.pollutedData.factorId
- });
- selectedFactorTypes.value.push(objData.pollutedData.factorId);
- }
- // 绛涢�夊満鏅被鍨�
- if (objData.pollutedSource.sceneList.length == 0) {
- // 鑻ユ病鏈夋壘鍒伴闄╂簮鏃讹紝灏嗚鍒嗙被璁惧畾涓簄ull
- if (sceneOptions.value.findIndex((v) => v.value == NO_SCENE) == -1) {
- sceneOptions.value.push({
- label: '鏈煡',
- value: NO_SCENE
+ for (const key in objData.pollutedData.statisticMap) {
+ const value = objData.pollutedData.statisticMap[key];
+ if (
+ factorOptions.value.findIndex((v) => v.value == value.factorId) == -1
+ ) {
+ factorOptions.value.push({
+ label: value.factorName,
+ value: value.factorId
});
- selectedSceneTypes.value.push(NO_SCENE);
+ selectedFactorTypes.value.push(value.factorId);
}
- } else {
- objData.pollutedSource.sceneList.forEach((s) => {
- if (sceneOptions.value.findIndex((v) => v.value == s.typeId) == -1) {
+ }
+
+ // 绛涢�夊満鏅被鍨�
+ if (objData.pollutedSource != undefined) {
+ if (objData.pollutedSource.sceneList.length == 0) {
+ // 鑻ユ病鏈夋壘鍒伴闄╂簮鏃讹紝灏嗚鍒嗙被璁惧畾涓簄ull
+ if (sceneOptions.value.findIndex((v) => v.value == NO_SCENE) == -1) {
sceneOptions.value.push({
- label: s.type,
- value: s.typeId
+ label: '鏈煡',
+ value: NO_SCENE
});
- selectedSceneTypes.value.push(s.typeId);
+ selectedSceneTypes.value.push(NO_SCENE);
}
- });
+ } else {
+ objData.pollutedSource.sceneList.forEach((s) => {
+ if (
+ sceneOptions.value.findIndex((v) => v.value == s.typeId) == -1
+ ) {
+ sceneOptions.value.push({
+ label: s.type,
+ value: s.typeId
+ });
+ selectedSceneTypes.value.push(s.typeId);
+ }
+ });
+ }
}
// case '2':
// break;
@@ -339,23 +387,31 @@
}
function fetchPollutionTraceHistory() {
- dataAnalysisApi.fetchPollutionTraceHistory(props.missionCode).then((res) => {
- const objList = JSON.parse(res.data);
- objList.forEach((obj) => {
- obj._type = obj.msgType + '';
- if (obj._type == '1') {
- obj.showMore = false;
- show.value = true;
- parseChartData(obj);
- } else if (obj._type == '2') {
- obj._timestr = timeFormatter(obj.time);
- } else if (obj._type == '3') {
- parseChartData(obj);
- }
- optionsFilte(obj);
- });
- streams.value = objList;
- });
+ loading.value = true;
+ dataAnalysisApi
+ .fetchPollutionTraceHistory(props.missionCode)
+ .then((res) => {
+ factorOptions.value = [];
+ selectedFactorTypes.value = [];
+ sceneOptions.value = [];
+ selectedSceneTypes.value = [];
+ const objList = JSON.parse(res.data);
+ objList.forEach((obj) => {
+ obj._type = obj.msgType + '';
+ if (obj._type == '1') {
+ obj.showMore = false;
+ show.value = true;
+ parseChartData(obj);
+ } else if (obj._type == '2') {
+ obj._timestr = timeFormatter(obj.time);
+ } else if (obj._type == '3') {
+ parseChartData(obj);
+ }
+ optionsFilte(obj);
+ });
+ streams.value = objList;
+ })
+ .finally(() => (loading.value = false));
}
onMounted(() => {
@@ -481,13 +537,27 @@
);
const factorDatas = new FactorDatas();
factorDatas.setData(obj.pollutedData.historyDataList, 0, () => {
- obj._chartOptions = factorDataParser.parseData(factorDatas, [
- {
- label: obj.pollutedData.factorName,
- name: obj.pollutedData.factorName,
- value: obj.pollutedData.factorId + ''
- }
- ]);
+ for (const key in obj.pollutedData.statisticMap) {
+ const value = obj.pollutedData.statisticMap[key];
+ value._chartOptions = factorDataParser.parseData(
+ factorDatas,
+ [
+ {
+ label: value.factorName,
+ name: value.factorName,
+ value: value.factorId + ''
+ }
+ ],
+ false
+ );
+ }
+ // obj._chartOptions = factorDataParser.parseData(factorDatas, [
+ // {
+ // label: obj.pollutedData.factorName,
+ // name: obj.pollutedData.factorName,
+ // value: obj.pollutedData.factorId + ''
+ // }
+ // ]);
// console.log('鎶樼嚎鍥撅細', obj._chartOptions);
});
}
--
Gitblit v1.9.3