提交 62655bd7 作者: 翁进城

fix: 无人机视频操作接管判断

上级 c11855fd
...@@ -2,20 +2,20 @@ ...@@ -2,20 +2,20 @@
<!-- 清流融合 --> <!-- 清流融合 -->
<div id="uavPlayerWrap" class="player" :class="big" v-interact> <div id="uavPlayerWrap" class="player" :class="big" v-interact>
<div ref="video" class="video-wrap" @dblclick="screen"> <div ref="video" class="video-wrap" @dblclick="screen">
<div class="cpt_video" @click="lensControl" v-if="showPlayer"> <div class="cpt_video" @click.stop="lensControl" v-if="showPlayer">
<Obstacle v-if="!isStatus"></Obstacle> <Obstacle v-if="!isStatus"></Obstacle>
<div class="video"> <div class="video">
<div class="name" v-clipboard:copy="vUrl.vUrl">{{ uav.name }}</div> <div class="name" v-clipboard:copy="vUrl.vUrl">{{ uav.name }}</div>
<!-- <div class="type" v-if="networkType">{{ networkType }}</div> --> <!-- <div class="type" v-if="networkType">{{ networkType }}</div> -->
<!-- <div class="types">{{ streamName }}</div> --> <!-- <div class="types">{{ streamName }}</div> -->
<div v-show="!isStatus" class="close" @click="close()">关闭</div> <div v-show="!isStatus" class="close" @click.stop="close()">关闭</div>
</div> </div>
<!-- <videoModelChange <!-- <videoModelChange
:data="data" :data="data"
v-if="streamSelect == 'QINGLIU' && !isStatus" v-if="streamSelect == 'QINGLIU' && !isStatus"
class="cp pa cf modelStyle" class="cp pa cf modelStyle"
@click="VideoModelChange" @click.stop="VideoModelChange"
:uavRealTimeData="uavRealTimeData" :uavRealTimeData="uavRealTimeData"
:NXdata="NXdata" :NXdata="NXdata"
></videoModelChange>--> ></videoModelChange>-->
...@@ -125,7 +125,7 @@ ...@@ -125,7 +125,7 @@
</div> </div>
<div style="display: flex"> <div style="display: flex">
<div class="icon-box"></div> <div class="icon-box"></div>
<div class="cf ml20 mr10 c70d cp" @click="showInfo = false">关闭</div> <div class="cf ml20 mr10 c70d cp" @click.stop="showInfo = false">关闭</div>
</div> </div>
</div> </div>
<div class="content"> <div class="content">
...@@ -239,11 +239,11 @@ ...@@ -239,11 +239,11 @@
</div> </div>
</div> </div>
<div class="iconBG" v-if="isStatus"> <div class="iconBG" v-if="isStatus">
<div class="infop" @click="getInfo" alt /> <div class="infop" @click.stop="getInfo" alt />
<div <div
:class="type == 4 ? 'right17' : 'right23'" :class="type == 4 ? 'right17' : 'right23'"
class="reset iconfont icon-gengxin" class="reset iconfont icon-gengxin"
@click="reset" @click.stop="reset"
/> />
</div> </div>
<div class="bottom-menu"> <div class="bottom-menu">
...@@ -257,13 +257,13 @@ ...@@ -257,13 +257,13 @@
<img <img
class="menu-item" class="menu-item"
src="./assets/images/info.png" src="./assets/images/info.png"
@click="getInfo" @click.stop="getInfo"
style="transform: scale(1.4)" style="transform: scale(1.4)"
alt alt
/> />
</el-tooltip> </el-tooltip>
<el-tooltip content="是否启动瞄准镜" placement="bottom" v-if="!isStatus"> <el-tooltip content="是否启动瞄准镜" placement="bottom" v-if="!isStatus">
<img class="menu-item" src="./assets/images/center.png" @click="showCenterFn" alt /> <img class="menu-item" src="./assets/images/center.png" @click.stop="showCenterFn" alt />
</el-tooltip> </el-tooltip>
<el-tooltip <el-tooltip
v-if="!isStatus" v-if="!isStatus"
...@@ -301,44 +301,44 @@ ...@@ -301,44 +301,44 @@
></el-option> ></el-option>
</el-select> </el-select>
</div> </div>
<div class="pointer iconfont icon-gengxin menu-item" @click="reset"></div> <div class="pointer iconfont icon-gengxin menu-item" @click.stop="reset"></div>
<!-- FPV切换 --> <!-- FPV切换 -->
<el-tooltip content="模式切换" placement="bottom"> <el-tooltip content="模式切换" placement="bottom">
<div <div
v-if="streamSelect.toUpperCase() !== 'QINGLIU'" v-if="streamSelect.toUpperCase() !== 'QINGLIU'"
class="iconfont icon-moshiqiehuan modelStyle menu-item" class="iconfont icon-moshiqiehuan modelStyle menu-item"
@click="change" @click.stop="change"
></div> ></div>
</el-tooltip> </el-tooltip>
<div class="pointer iconfont icon-quanping menu-item" @click="screen" v-if="!isStatus"></div> <div class="pointer iconfont icon-quanping menu-item" @click.stop="screen" v-if="!isStatus"></div>
</div> </div>
</div> </div>
<div class="right-menu"> <div class="right-menu">
<template v-if="uav.network === 2"> <template v-if="uav.network === 2">
<el-tooltip content="拍照" placement="bottom"> <el-tooltip content="拍照" placement="bottom">
<div class="menu-item plate" @click="photojz"> <div class="menu-item plate" @click.stop="photojz">
<img src="./assets/images/ai.png" /> <img src="./assets/images/ai.png" />
</div> </div>
</el-tooltip> </el-tooltip>
<el-tooltip v-if="!screenRecordingStatus" content="开始录像" placement="bottom"> <el-tooltip v-if="!screenRecordingStatus" content="开始录像" placement="bottom">
<div class="record menu-item" @click="getRecord"> <div class="record menu-item" @click.stop="getRecord">
<img src="./assets/images/record.png" /> <img src="./assets/images/record.png" />
</div> </div>
</el-tooltip> </el-tooltip>
<el-tooltip v-else content="停止录像" placement="bottom"> <el-tooltip v-else content="停止录像" placement="bottom">
<div class="record menu-item" @click="getRecord"> <div class="record menu-item" @click.stop="getRecord">
<img src="./assets/images/stop.png" /> <img src="./assets/images/stop.png" />
</div> </div>
</el-tooltip> </el-tooltip>
</template> </template>
<el-tooltip content="截图" placement="bottom"> <el-tooltip content="截图" placement="bottom">
<div class="photojz menu-item" @click="photo"> <div class="photojz menu-item" @click.stop="photo">
<img src="./assets/images/photojz.svg" /> <img src="./assets/images/photojz.svg" />
</div> </div>
</el-tooltip> </el-tooltip>
<AiList ref="aiList" @screenShot="onAiScreenShot"></AiList> <AiList ref="aiList" @screenShot="onAiScreenShot"></AiList>
<div class="menu-item" @click="startLinePoint" content="航点动作"> <div class="menu-item" @click.stop="startLinePoint" content="航点动作">
<img src="./assets/images/point_small.svg" /> <img src="./assets/images/point_small.svg" />
</div> </div>
</div> </div>
...@@ -364,7 +364,7 @@ import { to_moveMount } from "../../../../utils/to_moveMount.js"; ...@@ -364,7 +364,7 @@ import { to_moveMount } from "../../../../utils/to_moveMount.js";
import Obstacle from "./components/obstacle"; import Obstacle from "./components/obstacle";
import PointList from "./components/pointList"; import PointList from "./components/pointList";
import videoModelChange from "./components/videoModelChange"; import videoModelChange from "./components/videoModelChange";
import { mapState } from "vuex"; import { mapState, mapActions } from "vuex";
import AiList from "./components/aiList"; import AiList from "./components/aiList";
export default { export default {
...@@ -655,6 +655,22 @@ export default { ...@@ -655,6 +655,22 @@ export default {
clearInterval(this.aiTimeHandle); clearInterval(this.aiTimeHandle);
}, },
methods: { methods: {
...mapActions("MMCFlightControlCenter/uav", ["isTakeOver"]),
isTakeOverHangar() {
return this.$store.dispatch("MMCFlightControlCenter/hangar/isTakeOver");
},
async isTake(show=true) {
// 判断是否已接管
let isTakeOver = this.isTakeOver;
if (this.isHangar) {
isTakeOver = this.isTakeOverHangar;
}
if (!(await isTakeOver())) {
show && this.$message.warning("请先接管设备");
return false;
}
return true;
},
startLinePoint() { startLinePoint() {
let gps = {}; let gps = {};
if (this.uavRealTimeData) { if (this.uavRealTimeData) {
...@@ -755,6 +771,9 @@ export default { ...@@ -755,6 +771,9 @@ export default {
* 录像 * 录像
*/ */
async getRecord() { async getRecord() {
if (!(await this.isTake())) {
return;
}
if (this.healthData.NX.code !== "0x2110000") { if (this.healthData.NX.code !== "0x2110000") {
return this.$message.error("录像失败,NX通信异常!"); return this.$message.error("录像失败,NX通信异常!");
} }
...@@ -784,6 +803,9 @@ export default { ...@@ -784,6 +803,9 @@ export default {
* 拍照 * 拍照
*/ */
async photojz() { async photojz() {
if (!(await this.isTake())) {
return;
}
if (this.healthData.NX.code !== "0x2110000") { if (this.healthData.NX.code !== "0x2110000") {
return this.$message.error("拍照失败,NX通信异常!"); return this.$message.error("拍照失败,NX通信异常!");
} }
...@@ -799,6 +821,9 @@ export default { ...@@ -799,6 +821,9 @@ export default {
}); });
}, },
async photo() { async photo() {
if (!(await this.isTake())) {
return;
}
let blob = this.$refs.player.screenShot(); let blob = this.$refs.player.screenShot();
if (blob) { if (blob) {
console.log(blob, window.URL.createObjectURL(blob)); console.log(blob, window.URL.createObjectURL(blob));
...@@ -854,6 +879,9 @@ export default { ...@@ -854,6 +879,9 @@ export default {
* 挂载镜头控制 * 挂载镜头控制
*/ */
async lensControl(el) { async lensControl(el) {
if (!(await this.isTake(false))) {
return;
}
// let mountData =this.$store.state.device.move_data // let mountData =this.$store.state.device.move_data
let { mountData } = this; let { mountData } = this;
// if mountStatus =1 代表启用 屏幕指点功能 // if mountStatus =1 代表启用 屏幕指点功能
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论