From 307b17ef15c73a071912a262834f2a5f68e1fa87 Mon Sep 17 00:00:00 2001 From: riku <risaku@163.com> Date: 星期四, 11 九月 2025 15:20:35 +0800 Subject: [PATCH] 完成走航季度报告自动生成 --- src/views/sourcetrace/SourceTrace.vue | 149 +++++++++++++++++++++++++++++++------------------ 1 files changed, 93 insertions(+), 56 deletions(-) diff --git a/src/views/sourcetrace/SourceTrace.vue b/src/views/sourcetrace/SourceTrace.vue index a00879a..73dcd07 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 = @@ -242,7 +255,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,37 +295,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 +358,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 +508,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