riku
2025-05-30 d58b7ec5be59dfe384e27b1e0b42d76998593619
动态溯源功能(待完成)
已修改7个文件
61 ■■■■ 文件已修改
src/api/index.js 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/api/thirdPartyDataApi.js 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/components/search/SearchBar.vue 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/constant/scene-types/options-jingan.js 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/router/index.js 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/historymode/HistoryMode.vue 38 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/realtimemode/RealtimeMode.vue 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/api/index.js
@@ -1,7 +1,7 @@
import axios from 'axios';
import { ElMessage } from 'element-plus';
const debug = true;
const debug = false;
let ip1 = 'http://47.100.191.150:9029/';
let ws = `47.100.191.150:9030`;
src/api/thirdPartyDataApi.js
@@ -35,10 +35,10 @@
    }
    if (!label) return;
    let params = `label=${label}&deviceType=${deviceType}&deviceCode=${deviceCode}`;
    params += startTime ? `&startTime=${startTime}` : '';
    return $http
      .get(`air/thirdParty/data/fetch/latest?${params}`)
      .get(`air/thirdParty/data/fetch/latest`, {
        params: { label, deviceType, deviceCode, startTime }
      })
      .then((res) => res.data);
  }
};
src/components/search/SearchBar.vue
@@ -65,6 +65,8 @@
    mission(nV, oV) {
      if (nV != oV) {
        this.onInit(() => {
          setTimeout(() => {
            // 延时赋值,因为deviceType和deviceCode也有默认初始值
          this.formSearch.timeArray = [
            new Date(nV.startTime),
            new Date(nV.endTime)
@@ -72,13 +74,11 @@
          this.dateRange = [new Date(nV.startTime), new Date(nV.endTime)];
          this.formSearch.deviceType = nV.deviceType;
          this.formSearch.deviceCode = nV.deviceCode;
          // 代表首次进入界面,此时自动执行首个任务的数据查询操作
          if (oV == undefined) {
            setTimeout(() => {
              this.handleClick();
            }, 500);
          }
          }, 500);
        });
      }
    }
src/constant/scene-types/options-jingan.js
@@ -89,5 +89,9 @@
  {
    label: '市控点',
    value: '20'
  },
  {
    label: '小微站',
    value: '21'
  }
];
src/router/index.js
@@ -6,7 +6,7 @@
  routes: [
    {
      path: '/',
      redirect: '/index/underwaymix'
      redirect: '/login'
    },
    // 登陆页面
    {
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,8 +240,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;
src/views/realtimemode/RealtimeMode.vue
@@ -48,7 +48,8 @@
// const mapAnimation = new MapAnimation();
// 调试模式
const mode = 'debug';
// const mode = 'debug';
const mode = 'product';
export default {
  components: { DashBoard, RealTimeTrend, DeviceChange, SourceTrace },