| | |
| | | <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 |
| | |
| | | :factor="factorDatas.factor[factorType]" |
| | | @change="handleLegendTypeChange" |
| | | ></FactorLegend> |
| | | <!-- <SourceTrace></SourceTrace> --> |
| | | </el-row> |
| | | <el-row class="historical" justify="center"> |
| | | <HistoricalTrajectory |
| | |
| | | :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> |
| | | |
| | |
| | | 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'; |
| | | |
| | |
| | | }, |
| | | data() { |
| | | return { |
| | | missionCode: undefined, |
| | | // 监测设备类型 |
| | | deviceType: TYPE0, |
| | | // 监测设备编号 |
| | |
| | | // 轨迹动画状态 |
| | | 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.drawHighlightPollution(); |
| | | this.draw(true); |
| | | // this.drawHighlightPollution(); |
| | | } |
| | | } |
| | | }, |
| | |
| | | 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) { |
| | |
| | | marks.drawMassMarks(this.factorDatas, e, (index) => { |
| | | this.handelIndexChange(index); |
| | | }); |
| | | // 调整地图视角 |
| | | mapUtil.setBound(this.factorDatas.lnglats_GD); |
| | | }, |
| | | drawSector(index) { |
| | | // 1. 绘制新扇形区域 |
| | |
| | | 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'); |
| | |
| | | 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; |
| | |
| | | left: 0; |
| | | right: 0; |
| | | } |
| | | .source-trace { |
| | | position: absolute; |
| | | right: 0; |
| | | bottom: 0px; |
| | | } |
| | | </style> |