提交 f2adf17c 作者: lqd

Merge branch 'v4' of http://git.mmcuav.cn/root/mmc-stl-vue2 into v4

......@@ -4,3 +4,4 @@ export { default as Map } from './modules/map';
export { default as AI_API} from './modules/ai';
export { default as ViewLibrary } from './modules/viewLibrary';
export { default as TaskInfo } from './modules/taskInfo';
export { default as System } from './modules/system';
\ No newline at end of file
import request from "../request";
export default class System {
/**
* 获取天气数据
* @param {*} data
* @returns
*/
static getCoordinatesWeather(params) {
return request({
url: '/admin-api/system/weather/getCoordinatesWeather',
method: "get",
params
});
}
}
......@@ -5,7 +5,7 @@
<ControlBottom isHangar></ControlBottom>
<ControlRight></ControlRight>
<!-- 顶部信息 -->
<ControlTop></ControlTop>
<ControlTop isHangar></ControlTop>
</div>
</template>
......
......@@ -30,7 +30,7 @@ export default {
'uavRealTimeData.isFlying'(newVal, oldVal){
// 监听飞机降落然后进行任务结束的提示
if(oldVal === true && newVal === false){
this.$alert('任务结束', '提示', {
this.$alert('当前任务已结束', '提示', {
type: 'success ',
confirmButtonText: '确定',
callback: action => {
......
<!-- 飞控地图选择 -->
<template>
<div class="cpt-hwkeys">
<div class="hwkeys-wrap cp" @click="change" @mouseout="likai">
<div
:class="{
'hwkeys-item': 1,
'hwkeys-item-satellite': 1,
}"
v-for="item in tabs"
:key="item.id"
v-show="item.id == current"
@click="handle_change(item.id)"
>
<!-- <div class="typeNmae">{{ item.name }}</div> -->
</div>
<div class="map-switch">
<div class="map-switch-wrap cp" @click="change" @mouseout="likai">
<div class="map-item map-item-satellite"></div>
</div>
<div class="changeMapBox pa cp">
......@@ -34,7 +23,7 @@
<div v-for="item in tabs" :key="item.id" class="dise" @mousemove="jinru(item.id)">
<div
:class="{
'hwkeys-item': 1,
'map-item': 1,
[item.class_name]: 1,
}"
@click="handle_change(item.id)"
......@@ -61,22 +50,22 @@ export default {
{
id: 1,
name: "卫星",
class_name: "hwkeys-item-satellite",
class_name: "map-item-satellite",
},
{
id: 4,
name: "星图",
class_name: "hwkeys-item-satellite",
class_name: "map-item-satellite",
},
{
id: 2,
name: "街道",
class_name: "hwkeys-item-street",
class_name: "map-item-street",
},
{
id: 3,
name: "夜景",
class_name: "hwkeys-item-night-blue",
class_name: "map-item-night-blue",
},
],
};
......@@ -144,7 +133,7 @@ export default {
</script>
<style lang="scss" scoped>
.cpt-hwkeys {
.map-switch {
z-index: 1;
bottom: 30px;
......@@ -161,7 +150,7 @@ export default {
align-items: center;
// display: flex;
.hwkeys-item {
.map-item {
width: 30px;
height: 30px;
color: #04d5da;
......@@ -174,23 +163,23 @@ export default {
cursor: pointer;
}
.hwkeys-item-satellite {
.map-item-satellite {
background: url(./assets/images/3d.png) center no-repeat;
}
.hwkeys-item-street {
.map-item-street {
background: url(./assets/images/2d.png) center no-repeat;
}
.hwkeys-item-night-blue {
.map-item-night-blue {
background: url(./assets/images/night-blue.png) center no-repeat;
}
.hwkeys-item-3d {
.map-item-3d {
background: url(./assets/images/3d.png) center no-repeat;
}
.hwkeys-item-2d {
.map-item-2d {
background: url(./assets/images/2d.png) center no-repeat;
}
}
......@@ -203,13 +192,7 @@ export default {
transition: 0.2s;
transform: translateX(0);
&.wkeysRight {
transition: 0.3s;
transform: translateX(-12px);
right: 40px;
}
.hwkeys-wrap {
.map-switch-wrap {
position: absolute;
right: 0;
min-width: 52px;
......@@ -225,7 +208,7 @@ export default {
width: 166px;
}
.hwkeys-item {
.map-item {
width: 52px;
height: 52px;
box-sizing: border-box;
......@@ -233,30 +216,30 @@ export default {
border: 3px solid #fff;
position: relative;
&.hwkeys-item-satellite {
&.map-item-satellite {
// background: url(./assets/images/3d.png) center no-repeat;
background: url("./assets/images/ditu_icon.png") center no-repeat;
background-size: 112% 112%;
}
&.hwkeys-item-street {
&.map-item-street {
background: url(./assets/images/2d.png) center no-repeat;
}
&.hwkeys-item-night-blue {
&.map-item-night-blue {
background: url(./assets/images/night-blue.png) center no-repeat;
// background-size: 115% 115%;
}
&.hwkeys-item-3d {
&.map-item-3d {
background: url(./assets/images/3d.png) center no-repeat;
}
&.hwkeys-item-2d {
&.map-item-2d {
background: url(./assets/images/2d.png) center no-repeat;
}
&.hwkeys-item-street {
&.map-item-street {
}
.typeNmae {
......@@ -299,7 +282,7 @@ export default {
}
}
.cpt-hwkeys:hover {
.map-switch:hover {
.changeMapBox {
display: flex;
}
......
......@@ -5,16 +5,16 @@
<div>{{week}} {{time}}</div>
</div>
<div class="ct-item ct-weather">
<img class="ctw-icon" src="./assets/images/weather/icon/day/00.png" />
<img class="ctw-icon" :src="weatherIcon" />
<div class="ctw-wind">
<div class="ctww-line1">
<img src="./assets/images/wind.png" />
<div>东北风</div>
<!-- <img :src="weatherIcon" /> -->
<div>{{weather.windDirection}}</div>
</div>
<div>0.2~0.6m/s</div>
<div>{{weather.windSpeed}}m/s</div>
</div>
</div>
<div class="ct-item ct-take-off">适宜起飞</div>
<div class="ct-item ct-take-off">{{weather.flyStatus ? '适宜起飞' : '不宜起飞'}}</div>
<div class="ct-item ct-info">
<!-- 避障雷达 -->
<el-tooltip
......@@ -112,12 +112,19 @@
import dayjs from "dayjs";
import { mapState } from "vuex";
import TakeOverRecords from "./components/takeOverRecords";
import { System } from "../../../../../../api";
export default {
name: "ControlTop",
components: {
TakeOverRecords,
},
props: {
isHangar: {
type: Boolean,
default: false,
},
},
data() {
return {
date: "",
......@@ -160,10 +167,23 @@ export default {
"-4": "航向偏左",
},
showTakeOverRecords: false, // 显示接管记录
timeWeather: null,
weather: {
windSpeed: 0,
minTemp: 0,
maxTemp: 0,
windDirection: "未知",
humidity: 0,
temp: 0,
windLevel: 0,
conditionDay: "未知",
},
weatherIcon: require(`./assets/images/weather/icon/iconfont/W0.png`)
};
},
computed: {
...mapState("MMCFlightControlCenter/uav", ["uavRealTimeData"]),
...mapState("MMCFlightControlCenter/hangar", ["hangar"]),
// 网络判断 公网|专网
network() {
let { uavRealTimeData } = this;
......@@ -310,12 +330,13 @@ export default {
},
created() {
this.updateTime();
this.timeHandler = setInterval(() => {
this.updateTime();
}, 1000);
this.timeHandler = setInterval(this.updateTime, 1000);
this.getWeather();
this.timeWeather = setInterval(this.getWeather, 60000);
},
beforeDestroy() {
clearInterval(this.timeHandler);
clearInterval(this.timeWeather);
},
methods: {
updateTime() {
......@@ -413,6 +434,35 @@ export default {
});
}
},
/**
* 获取天气数据
*/
async getWeather() {
let lat;
let lon;
if (this.isHangar) {
lat = this.hangar.latitude;
lon = this.hangar.longitude;
} else {
// 无人机需要通过实时数据获取经纬度
if (this.uavRealTimeData?.locationCoordinate3D?.latitude) {
lat = this.uavRealTimeData.locationCoordinate3D.latitude;
lon = this.uavRealTimeData.locationCoordinate3D.longitude;
}
}
if (lat) {
let res = await System.getCoordinatesWeather({
lat,
lon,
});
this.weather = res.data[0];
const date = new Date();
let time = date.getHours();
this.weatherIcon = require(`./assets/images/weather/icon/iconfont/W${
time >= 18 ? this.weather.nightIcon : this.weather.dayIcon
}.png`);
}
},
},
};
</script>
......
......@@ -39,7 +39,7 @@ export default {
"uavRealTimeData.isFlying"(newVal, oldVal) {
// 监听飞机降落然后进行任务结束的提示
if (oldVal === true && newVal === false) {
this.$alert("任务结束", "提示", {
this.$alert("当前任务已结束", "提示", {
type: "success ",
confirmButtonText: "确定",
callback: (action) => { },
......
......@@ -6,6 +6,7 @@ let positions = []; // 飞机走过的点, 会一直累计, 每n秒减半一次,
setInterval(() => {
if (positions.length > 1000) {
positions = positions.filter((x, index) => index % 2 === 0);
console.log('飞行轨迹', positions);
}
}, 60000);
window.positions = () => {
......@@ -503,8 +504,12 @@ const actions = {
} else {
// const posData = UAVDataParser(state.uavRealTimeData); // 这种写法在执行rollup混淆压缩后, posData对象会变成elementUI的对象,原因未知
// 更新轨迹
let flag = positions.some(val=> val.x == UAVDataParser(state.uavRealTimeData).position.x && val.y == UAVDataParser(state.uavRealTimeData).position.y)
if (!flag) {
positions.push(UAVDataParser(state.uavRealTimeData).position);
}
// console.log(positions,"positions.x");
}
if (
state.uavRealTimeData.locationCoordinate3D.longitude !==
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论