无人机接入
This commit is contained in:
@@ -70,6 +70,8 @@ const resize = (e) => {
|
||||
}
|
||||
.tab{
|
||||
display: flex;
|
||||
position: relative;
|
||||
z-index: 10;
|
||||
.tab-item{
|
||||
background: linear-gradient( 180deg, rgba(46,164,240,0.26) 0%, #2EA4F0 100%);
|
||||
box-shadow: inset 0px -1px 2px 0px rgba(83,203,255,0.22);
|
||||
|
||||
@@ -20,13 +20,14 @@
|
||||
<div style="width: 100%;height: 100%;" :class="[`video-window${item}`]">
|
||||
<!-- 视频预览组件 -->
|
||||
<HikPlayerComponent
|
||||
v-if="haikang[item-1]?.codes"
|
||||
v-if="deviceType === 'CCTV' && haikang[item-1]?.codes"
|
||||
ref="videoPreview"
|
||||
:id="item"
|
||||
:cameraIndexCode="haikang[item-1]?.codes"
|
||||
:layout="haikang[item-1]?.layout"
|
||||
@close="closeVideo">
|
||||
</HikPlayerComponent>
|
||||
<FlvPlayerComponent v-if="deviceType === 'UAV' && haikang[item-1]?.codes" :id="'uav'+item" :url="haikang[item-1]?.codes"/>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@@ -37,6 +38,8 @@
|
||||
<script setup>
|
||||
import { nextTick, onUnmounted, ref } from 'vue'
|
||||
import HikPlayerComponent from '@/components/Player/HikPlayer.vue'
|
||||
import FlvPlayerComponent from '@/components/FlvPlayer/index.vue'
|
||||
import { getVideoStream, doStartOrStopUavAlgorithm } from '@/api/uav'
|
||||
|
||||
const control = ref([
|
||||
{ label: '1X1', value: 1 },
|
||||
@@ -47,6 +50,12 @@ const control = ref([
|
||||
const active = ref(4)
|
||||
const haikang = ref([])
|
||||
const videoPreview = ref(null)
|
||||
const props = defineProps({
|
||||
deviceType: {
|
||||
type: String,
|
||||
default: () => ''
|
||||
}
|
||||
})
|
||||
|
||||
// 根据选中的分屏数计算样式
|
||||
const getStyle = () => {
|
||||
@@ -82,13 +91,33 @@ const closeVideo = (data, item) => {
|
||||
}
|
||||
// 点击视频预览
|
||||
const handleNodeClick = (node) => {
|
||||
if(node.videoCode) {
|
||||
if(props.deviceType === 'CCTV' && node.videoCode) {
|
||||
let index = haikang.value.findIndex(i => !i)
|
||||
console.log(index, haikang.value, 'value')
|
||||
if(index !== -1) {
|
||||
haikang.value[index] = { codes: node.videoCode }
|
||||
}
|
||||
}
|
||||
if(props.deviceType === 'UAV' && node.droneSn) {
|
||||
toggleFly(node)
|
||||
}
|
||||
}
|
||||
const toggleFly = (data) => {
|
||||
setTimeout(() => {
|
||||
const params = {
|
||||
status: 'stop',
|
||||
sn: data.droneSn,
|
||||
enable_orc: false
|
||||
}
|
||||
getVideoStream(params).then(res => {
|
||||
if(res.success) {
|
||||
let index = haikang.value.findIndex(i => !i)
|
||||
if(index !== -1) {
|
||||
haikang.value[index] = { codes: res.result.httpUrl }
|
||||
}
|
||||
}
|
||||
})
|
||||
}, 20000)
|
||||
}
|
||||
changeGridType(4)
|
||||
defineExpose({
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
<DialogComponent @mousedown="drag" class="wall-dialog" :style="{ resize: 'both', overflow: 'auto' }" :title="title" width="1800" :draggable="true" :modal="false" @close="close">
|
||||
<div class="wall-container">
|
||||
<TreeCom ref="Tree" @handle="handle"/>
|
||||
<GridCom ref="Grid"/>
|
||||
<GridCom ref="Grid" :videoType="type"/>
|
||||
</div>
|
||||
</DialogComponent>
|
||||
</template>
|
||||
|
||||
@@ -8,7 +8,7 @@
|
||||
@node-click="handleNodeClick">
|
||||
<template v-slot="{ node, data }">
|
||||
<!-- <img src="@/assets/images/livePreview/icon-monitor.png" alt=""> -->
|
||||
<span :class="(data.status === 'offline' && treeType === 'UAV') ? 'offline': ''">{{ node.label }}</span>
|
||||
<span :class="(!data.sourceType && treeType === 'UAV') ? 'offline': ''">{{ node.label }}</span>
|
||||
</template>
|
||||
</el-tree>
|
||||
</div>
|
||||
@@ -17,7 +17,7 @@
|
||||
|
||||
<script setup>
|
||||
import { ref, reactive, onMounted } from 'vue'
|
||||
import { videoCameraFindPage, findUavPage, findEnvPage, dsVideoList } from '@/api/device.js'
|
||||
import { findVideoLevelList, findUavPage, findEnvPage, dsVideoList } from '@/api/device.js'
|
||||
|
||||
const emit = defineEmits([ 'handle' ])
|
||||
|
||||
@@ -27,11 +27,8 @@ const treeType = ref('')
|
||||
const refresh = (type) => {
|
||||
treeType.value = type
|
||||
if(type === 'CCTV') {
|
||||
const params = {
|
||||
pageNo: 1,
|
||||
pageSize: 9999
|
||||
}
|
||||
videoCameraFindPage(params).then(res => {
|
||||
const params = {}
|
||||
findVideoLevelList(params).then(res => {
|
||||
if (res.success) {
|
||||
const data = res.result.records
|
||||
const groupedData = {}
|
||||
@@ -93,14 +90,14 @@ const refresh = (type) => {
|
||||
}
|
||||
|
||||
})
|
||||
tableData.value = result
|
||||
tableData.value = res.result.records
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
}
|
||||
const handleNodeClick = (data, node) => {
|
||||
if(data.status && data.status === 'offline') {
|
||||
if(!data.sourceType) {
|
||||
return false
|
||||
}
|
||||
if(!data.children || data.children.length === 0) {
|
||||
|
||||
Reference in New Issue
Block a user