riku
2025-05-30 d58b7ec5be59dfe384e27b1e0b42d76998593619
src/views/historymode/HistoryMode.vue
@@ -4,17 +4,17 @@
      <SearchBar
        v-show="status == 0"
        :search-time="searchTime"
        :loading="loading"
        :loading="loading || thirdPartyLoading"
        @search="onSearch"
      ></SearchBar>
      <TrajectoryState v-show="status != 0" :status="status"></TrajectoryState>
      <el-button
      <!-- <el-button
        type="primary"
        class="p-events-auto el-button-custom"
        @click="handleClick"
      >
        分析
      </el-button>
      </el-button> -->
    </el-row>
    <el-row class="m-t-2">
      <FactorRadio
@@ -74,6 +74,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';
@@ -108,7 +109,10 @@
      // 轨迹动画状态
      status: 0,
      // 是否页面已跳转
      isUnmounted: false
      isUnmounted: false,
      // 第三方数据获取是否尝试
      isFetchThirdParty: false,
      thirdPartyLoading: false
    };
  },
  watch: {
@@ -236,9 +240,33 @@
          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;
      dataAnalysisApi.pollutionTrace(missionCode).then((res) => {