From 3daf8eebf8c0d5b4561f38e21c50818c8f6768b7 Mon Sep 17 00:00:00 2001 From: riku <risaku@163.com> Date: 星期三, 23 七月 2025 17:23:08 +0800 Subject: [PATCH] 2025.7.23 动态溯源模块封版,发布 --- src/views/sourcetrace/SourceTrace.vue | 104 ++++++++++++++++++++++++++++++++------------------- 1 files changed, 65 insertions(+), 39 deletions(-) diff --git a/src/views/sourcetrace/SourceTrace.vue b/src/views/sourcetrace/SourceTrace.vue index a00879a..2ef9353 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,7 +194,11 @@ 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) { b3 = selectedSceneTypes.value.indexOf(NO_SCENE) != -1; @@ -242,7 +252,7 @@ function dealMsg(data) { const { type, content } = websocketMsgParser.parseMsg(data); const obj = reactive(JSON.parse(content)); - if (obj[0].deviceCode == props.deviceCode) { + if (obj.deviceCode == props.deviceCode) { obj._type = type; dealObj(obj); } @@ -282,17 +292,19 @@ 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); + 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 + }); + selectedFactorTypes.value.push(value.factorId); + } } + // 绛涢�夊満鏅被鍨� if (objData.pollutedSource.sceneList.length == 0) { // 鑻ユ病鏈夋壘鍒伴闄╂簮鏃讹紝灏嗚鍒嗙被璁惧畾涓簄ull @@ -339,23 +351,27 @@ } 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) => { + 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 +497,23 @@ ); 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 + '' + } + ]); + } + // 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