From ec763e1cb7dca873caf4afbc0dfde047b51753d3 Mon Sep 17 00:00:00 2001
From: riku <risaku@163.com>
Date: 星期五, 17 十月 2025 17:26:54 +0800
Subject: [PATCH] 2025.10.17
---
src/views/historymode/HistoryMode.vue | 59 +++++++++++++++++++++++++++++++++++++++++++++++++++--------
1 files changed, 51 insertions(+), 8 deletions(-)
diff --git a/src/views/historymode/HistoryMode.vue b/src/views/historymode/HistoryMode.vue
index 2d2a20f..452fc0d 100644
--- a/src/views/historymode/HistoryMode.vue
+++ b/src/views/historymode/HistoryMode.vue
@@ -4,7 +4,7 @@
<SearchBar
v-show="status == 0"
:search-time="searchTime"
- :loading="loading"
+ :loading="loading || thirdPartyLoading"
@search="onSearch"
></SearchBar>
<TrajectoryState v-show="status != 0" :status="status"></TrajectoryState>
@@ -28,7 +28,6 @@
:factor="factorDatas.factor[factorType]"
@change="handleLegendTypeChange"
></FactorLegend>
- <!-- <SourceTrace></SourceTrace> -->
</el-row>
<el-row class="historical" justify="center">
<HistoricalTrajectory
@@ -53,6 +52,13 @@
:device-type="deviceType"
:device-code="deviceCode"
></DataSheet>
+ <SourceTrace
+ class="source-trace"
+ v-model:factorType="factorType"
+ direction="left"
+ mode="history"
+ :mission-code="missionCode"
+ ></SourceTrace>
</div>
</template>
@@ -74,6 +80,7 @@
import { ElMessage } from 'element-plus';
import { fetchHistoryData } from '@/utils/factor/data';
import dataAnalysisApi from '@/api/dataAnalysisApi';
+import thirdPartyDataApi from '@/api/thirdPartyDataApi';
import { mapStores } from 'pinia';
import { useSceneStore } from '@/stores/scene';
@@ -86,6 +93,7 @@
},
data() {
return {
+ missionCode: undefined,
// 鐩戞祴璁惧绫诲瀷
deviceType: TYPE0,
// 鐩戞祴璁惧缂栧彿
@@ -108,14 +116,17 @@
// 杞ㄨ抗鍔ㄧ敾鐘舵��
status: 0,
// 鏄惁椤甸潰宸茶烦杞�
- isUnmounted: false
+ isUnmounted: false,
+ // 绗笁鏂规暟鎹幏鍙栨槸鍚﹀皾璇�
+ isFetchThirdParty: false,
+ thirdPartyLoading: false
};
},
watch: {
factorType(nValue, oValue) {
if (nValue != oValue && this.status == 0) {
Layer.clear();
- this.draw();
+ this.draw(true);
// this.drawHighlightPollution();
}
}
@@ -158,13 +169,17 @@
done();
this.draw();
},
- draw() {
+ draw(notSetBound) {
// 鍒锋柊鍥句緥
const factor = this.factorDatas.factor[this.factorType];
sector.clearSector();
// this.drawRoadLine(factor);
this.drawRoadMap(factor);
this.drawMassMarks(factor);
+ // 璋冩暣鍦板浘瑙嗚
+ if (!notSetBound) {
+ mapUtil.setBound(this.factorDatas.lnglats_GD);
+ }
},
// 缁樺埗3D璧拌璺嚎鍥�
drawRoadMap(e) {
@@ -179,8 +194,6 @@
marks.drawMassMarks(this.factorDatas, e, (index) => {
this.handelIndexChange(index);
});
- // 璋冩暣鍦板浘瑙嗚
- mapUtil.setBound(this.factorDatas.lnglats_GD);
},
drawSector(index) {
// 1. 缁樺埗鏂版墖褰㈠尯鍩�
@@ -223,6 +236,7 @@
this.deviceType = deviceType;
this.deviceCode = deviceCode;
this.mission = mission;
+ this.missionCode = mission.missionCode;
let startTime, endTime;
if (timeArray && timeArray.length == 2) {
startTime = moment(timeArray[0]).format('YYYY-MM-DD HH:mm:ss');
@@ -236,8 +250,32 @@
endTime,
page,
perPage: pageSize
- }).then((res) => this.onFetchData(deviceType, res.data));
+ }).then((res) => {
+ this.onFetchData(deviceType, res.data);
+ if (
+ res.data.length == 0 &&
+ this.isFetchThirdParty != mission.missionCode
+ ) {
+ this.onThirdPartyFetch(option);
+ }
+ });
});
+ },
+ onThirdPartyFetch(option) {
+ const { mission } = option;
+ if (import.meta.env.VITE_DATA_MODE == 'jingan') {
+ this.thirdPartyLoading = true;
+ this.isFetchThirdParty = mission.missionCode;
+ // 閫氱煡鏈嶅姟绔惎鍔ㄤ换鍔¤寖鍥村唴鐨勭涓夋柟鏁版嵁鑾峰彇浠诲姟
+ thirdPartyDataApi
+ .fetchMissionData(mission.missionCode)
+ .then((res) => {
+ if (res.data) {
+ this.onSearch(option);
+ }
+ })
+ .finally(() => (this.thirdPartyLoading = false));
+ }
},
handleClick() {
const { missionCode } = this.mission;
@@ -279,4 +317,9 @@
left: 0;
right: 0;
}
+.source-trace {
+ position: absolute;
+ right: 0;
+ bottom: 0px;
+}
</style>
--
Gitblit v1.9.3