提交 bca6ff51 作者: 梁启东

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

......@@ -6,44 +6,20 @@
<div class="header__column status">状态</div>
<div class="header__column flex2">操作</div>
</div>
<div
class="timed-task-main"
v-loading="loading"
element-loading-background="rgba(0, 0, 0, 0.8)"
>
<div
class="row"
:class="{ single: i % 2 != 0 }"
v-for="(item, i) in taskListAll"
:key="item.id"
>
<div class="timed-task-main" v-loading="loading" element-loading-background="rgba(0, 0, 0, 0.8)">
<div class="row" :class="{ single: i % 2 != 0 }" v-for="(item, i) in taskListAll" :key="item.id">
<div class="row__column flex2">
<el-tooltip
class="item"
effect="dark"
:content="item.name"
placement="top-start"
>
<el-tooltip class="item" effect="dark" :content="item.name" placement="top-start">
<span class="f12">{{ item.name }}</span>
</el-tooltip>
</div>
<div class="row__column flex2 col-2">
<el-tooltip
class="item"
effect="dark"
:content="item.taskStartTime"
placement="top-start"
>
<el-tooltip class="item" effect="dark" :content="item.taskStartTime" placement="top-start">
<span class="f9">{{ item.taskStartTime }}</span>
</el-tooltip>
</div>
<div class="row__column status" style="color: rgb(255, 189, 54)">
<el-tooltip
class="item"
effect="dark"
:content="item.status"
placement="top-start"
>
<el-tooltip class="item" effect="dark" :content="item.status" placement="top-start">
<span class="f12">{{ item.status }}</span>
</el-tooltip>
</div>
......@@ -55,17 +31,14 @@
<i class="el-icon-date" @click="onOpenPlan(item)"></i>
</el-tooltip>
<el-tooltip content="编辑" placement="top" v>
<i
class="el-icon-edit"
@click="onOpenEdit(item)"
v-if="item.status !== '执行中' && item.status !== '已完成'"
></i>
<i class="el-icon-edit" @click="onOpenEdit(item)" v-if="item.status !== '执行中' && item.status !== '已完成'"></i>
</el-tooltip>
<!-- <el-tooltip content="开关" placement="top">
<i class="el-icon-turn-off"></i>
</el-tooltip> -->
<el-tooltip content="删除" placement="top">
<i v-if="item.status !== '执行中' && item.status !== '已完成'" class="el-icon-delete" @click="onDelAirway(item)"></i>
<i v-if="item.status !== '执行中' && item.status !== '已完成'" class="el-icon-delete"
@click="onDelAirway(item)"></i>
</el-tooltip>
</div>
</div>
......@@ -74,18 +47,9 @@
<div class="task-add__btn" @click="showFlightPlan = true">创建定时任务</div>
</div>-->
<FlightPlan
v-if="showFlightPlan"
:taskId="selectedTask.id"
:taskList="taskListAll"
@close="showFlightPlan = false"
>
<FlightPlan v-if="showFlightPlan" :taskId="selectedTask.id" :taskList="taskListAll" @close="showFlightPlan = false">
</FlightPlan>
<FlightEdit
v-if="showFlightEdit"
:task="selectedTask"
@close="showFlightEdit = false"
></FlightEdit>
<FlightEdit v-if="showFlightEdit" :task="selectedTask" @close="showFlightEdit = false"></FlightEdit>
</div>
</template>
......@@ -140,6 +104,24 @@ export default {
this.getTaskList();
},
},
showFlightEdit: {
handler(val) {
if (!val && !this.showFlightPlan) {
this.changeflyLogStatus(false)
}else{
this.changeflyLogStatus(true)
}
}
},
showFlightPlan: {
handler(val) {
if (!val&&!this.showFlightEdit) {
this.changeflyLogStatus(false)
} else {
this.changeflyLogStatus(true)
}
}
}
},
created() {
this.timeHandle = setInterval(() => {
......@@ -155,6 +137,13 @@ export default {
"createAirwayEntities",
"clearAirwayEntities",
]),
// 改变飞行日志弹框状态
changeflyLogStatus(falg) {
this.$store.commit("MMCFlightControlCenter/setState", {
key: "flyLogStatus",
value: falg,
});
},
/**
* 更新任务列表
*/
......@@ -224,13 +213,17 @@ export default {
onOpenPlan(item) {
this.selectedTask = item;
this.showFlightPlan = true;
this.showFlightEdit = false;
this.changeflyLogStatus(false)
},
/**
* 打开飞行编辑
*/
onOpenEdit(item) {
this.selectedTask = item;
this.showFlightPlan = false;
this.showFlightEdit = true;
this.changeflyLogStatus(false)
},
},
};
......
<template>
<ControlRight
ref="controlRight"
isHangar
@switchCallback="showHangar = false; showMonitor = false;"
>
<div
slot="hangar"
class="control-item"
:class="showHangar ? 'active' : ''"
@click="onSwitchShow('showHangar')"
>
<ControlRight ref="controlRight" isHangar @switchCallback="showHangar = false; showMonitor = false;">
<div slot="hangar" class="control-item" :class="showHangar ? 'active' : ''" @click="onSwitchShow('showHangar')">
<img src="./assets/images/hangar.svg" />
<span class="dib">机库</span>
</div>
......@@ -21,25 +12,16 @@
<span class="dialog-header__close" @click="showHangar = false;">关闭</span>
</div>
<div class="hangar-ctrl-list">
<div
class="hangar-ctrl-item"
v-for="(item, i) in ctrlList"
:key="i"
@click="onClickCMD(i)"
>
<div class="hangar-ctrl-item" v-for="(item, i) in ctrlList" :key="i" @click="onClickCMD(i)">
<SymbolIcon v-if="item.icon" :icon="item.icon" class="hangar-ctrl-item__icon" />
<img v-else :src="item.img" class="hangar-ctrl-item__icon" />
<div class="hangar-ctrl-item__title">{{item.label}}</div>
<div class="hangar-ctrl-item__title">{{ item.label }}</div>
</div>
</div>
</div>
<Logger class="logger" @exit="showLogger = false" v-if="showLogger"></Logger>
<HangarMonitor
:uavMsg="uavRealTimeData.msg"
:weatherStation="hangarRealTimeData.weatherStation"
:hangarData="hangarRealTimeData"
v-if="showMonitor"
></HangarMonitor>
<HangarMonitor :uavMsg="uavRealTimeData.msg" :weatherStation="hangarRealTimeData.weatherStation"
:hangarData="hangarRealTimeData" v-if="showMonitor"></HangarMonitor>
</div>
</ControlRight>
</template>
......@@ -120,11 +102,21 @@ export default {
};
},
computed: {
...mapState("MMCFlightControlCenter", ["showAirwayEdit"]),
...mapState("MMCFlightControlCenter", ["showAirwayEdit", "flyLogStatus"]),
...mapState("MMCFlightControlCenter/uav", ["uavRealTimeData"]),
...mapState("MMCFlightControlCenter/hangar", ["hangarRealTimeData"]),
},
watch: {
flyLogStatus: {
handler(val) {
if (val) {
this.showLogger = false
} else {
this.showLogger = true
}
},
immediate: true,
},
// 打开航线编辑时关闭所有窗口
showAirwayEdit(newVal) {
if (newVal) {
......@@ -150,7 +142,7 @@ export default {
* 切换展示
*/
async onSwitchShow(key) {
if(!await this.isTakeOver()){
if (!await this.isTakeOver()) {
this.$message.warning("请先接管设备");
return;
}
......@@ -163,7 +155,7 @@ export default {
* @param {number} i this.ctrlList被点击元素的索引
*/
async onClickCMD(i) {
if(!await this.isTakeOver()){
if (!await this.isTakeOver()) {
this.$message.warning("请先接管设备");
return;
}
......@@ -221,8 +213,7 @@ export default {
justify-content: space-between;
height: 32px;
.hangar-ctrl-header__title {
}
.hangar-ctrl-header__title {}
.hangar-ctrl-header__close {
font-size: 14px;
......@@ -234,6 +225,7 @@ export default {
align-items: center;
}
}
.hangar-ctrl-list {
box-sizing: border-box;
padding: 8px 16px 14px;
......
......@@ -85,6 +85,9 @@ export default {
},
"manualControlStatus": {
handler(val) {
if (val) {
this.$message.success("手动模式已开启");
}
this.$store.commit("MMCFlightControlCenter/joystick/setState", {
key: "manualControlStatus",
value: val,
......@@ -185,8 +188,11 @@ export default {
this.$message.warning("请先接管设备");
return;
}
this.$message.success("切换手动模式中请稍后!");
this.$store.dispatch("MMCFlightControlCenter/uav/modeManual", {
callback: (isOk) => {
if (isOk) { }
isOk && (this.controlType = 1);
},
});
......
......@@ -110,10 +110,11 @@
<script>
import dayjs from "dayjs";
import { mapState } from "vuex";
import { mapState, mapActions } from "vuex";
import TakeOverRecords from "./components/takeOverRecords";
import { System } from "../../../../../../api";
export default {
name: "ControlTop",
components: {
......@@ -339,6 +340,7 @@ export default {
clearInterval(this.timeWeather);
},
methods: {
...mapActions("MMCFlightControlCenter/hangar", ["isTakeOver"]),
updateTime() {
this.date = dayjs().format("YYYY/MM/DD");
this.time = dayjs().format("HH:mm:ss");
......@@ -391,11 +393,8 @@ export default {
*/
async onModeChange(data, flag) {
// 查看是否有权限接管无人机
let res = await this.$store.dispatch(
"MMCFlightControlCenter/uav/isTakeOver"
);
// 判断当前状态 true为一接管
if (res == false) {
if (!(await this.isTakeOver())) {
this.$message.warning("请先接管设备");
return;
}
if (this.flightMode == "离线状态") {
......
......@@ -101,6 +101,14 @@ export default {
};
},
watch: {
'scene': {
handler(newVal) {
if(newVal){
this.reset()
}
},
},
userInfo: {
immediate: true,
handler() {
......@@ -217,12 +225,12 @@ export default {
}
// 连接ws监听接管请求数据
let url = Control_API.getWebsocketUrl();
const socket = new WebSocket(url);
let url = this.url.wsUrl
let token = this.$store.state.MMCFlightControlCenter.token
const socket = new WebSocket(`${url}?token=${token}`);
this.ws = socket;
socket.onopen = function () {
console.log("Connected to WebSocket server");
};
socket.onmessage = (event) => {
......@@ -254,7 +262,7 @@ export default {
} else {
this.$message.warning("操作失败");
}
} catch (e) {}
} catch (e) { }
})
.catch(async () => {
await Control_API.updateControlUav({
......@@ -308,7 +316,33 @@ export default {
beforeDestroy() {
this.ws.close();
},
methods: {},
methods: {
reset() {
let cesiumEl = document.querySelector(".cesium-viewer");
// 判断cesium的父元素是否是layer-container来确定当前是否已经切换, 未切换就退出
if(cesiumEl.parentElement.id === 'layer-container'){
return;
}
let cesiumParentEl = document.querySelector("#layer-container");
let uavParentEl = document.querySelector("#playerUavParent");
let uavEl = document.querySelector("#playerUav");
let innerParentEl = document.querySelector("#playInnerParent");
let innerEl = document.querySelector("#playInner");
let outParentEl = document.querySelector("#playOutParent");
let outEl = document.querySelector("#playerOuter");
cesiumParentEl.innerHTML = "";
uavParentEl.innerHTML = "";
innerParentEl.innerHTML = "";
outParentEl.innerHTML = "";
cesiumParentEl.append(cesiumEl);
uavParentEl.append(uavEl);
innerParentEl.append(innerEl);
outParentEl.append(outEl);
},
},
};
</script>
......@@ -361,15 +395,18 @@ export default {
color: #fff;
}
}
.el-dialog__body {
color: #fff;
}
}
* {
/* 滚动条整体样式 */
&::-webkit-scrollbar {
width: 4px; /* 滚动条宽度 */
width: 4px;
/* 滚动条宽度 */
}
//滚动条轨道
......@@ -387,6 +424,7 @@ export default {
background: #222222;
border-radius: 10px 10px 0px 0px;
border: 0;
.hd {
box-sizing: border-box;
padding-left: 0px;
......@@ -408,6 +446,7 @@ export default {
z-index: 1;
background: #222222;
border-radius: 10px 10px 10px 10px;
.dialog-header {
box-sizing: border-box;
padding-left: 32px;
......@@ -438,14 +477,12 @@ export default {
align-items: center;
font-size: 20px;
font-family: YouSheBiaoTiHei;
background-image: -webkit-linear-gradient(
right,
background-image: -webkit-linear-gradient(right,
#e3aa77,
#f5cda9,
#f9ecd3,
#fcdbb1,
#edb07a
);
#edb07a);
-webkit-background-clip: text;
-webkit-text-fill-color: transparent;
letter-spacing: 0;
......@@ -545,6 +582,7 @@ export default {
}
.el-input-number {
.el-input-number__decrease,
.el-input-number__increase {
bottom: 1px;
......@@ -572,6 +610,7 @@ export default {
.popper__arrow::after {
border-bottom-color: #161d2d;
}
// 所有下拉选择框样式
&.el-select-dropdown {
border: none;
......@@ -584,18 +623,17 @@ export default {
.option.hover,
.option:hover {
background-image: linear-gradient(
90deg,
background-image: linear-gradient(90deg,
rgba(44, 135, 176, 0.7) 0%,
rgba(26, 100, 139, 0.37) 51%,
rgba(7, 61, 98, 0.7) 100%
);
rgba(7, 61, 98, 0.7) 100%);
font-family: MicrosoftYaHei;
font-size: 12px;
color: #00f5ff;
letter-spacing: 0;
font-weight: 400;
}
.el-select-dropdown__item {
color: #fff;
......@@ -649,6 +687,7 @@ export default {
&:not(.is-disabled):hover {
background: #4b4b4b;
}
&:not(.is-disabled):focus {
background: #4b4b4b;
}
......@@ -670,6 +709,7 @@ export default {
.el-popper {
background: #222222;
}
// 日期选择器组件
&.el-time-range-picker,
&.el-date-range-picker,
......@@ -756,6 +796,7 @@ export default {
.el-pagination {
text-align: center;
.el-pager li {
background: transparent !important;
}
......
......@@ -7,6 +7,7 @@ import { Utils } from "../lib/cesium";
export default {
namespaced: true,
state: {
flyLogStatus: false, //飞行日志状态
devMode: false, //开发模式, 使用开发环境接口
token: "", //登录token
TenantId: "", //租户id
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论