|
@@ -1,7 +1,7 @@
|
|
|
<template>
|
|
|
<div class="camera-container">
|
|
|
<div class="left-area">
|
|
|
- <cameraTree :selected="selected" :list="listArr" :draggable="true" @delete-node="onDeltet" @on-click="onClick">
|
|
|
+ <cameraTree :selected="selected" :list="listArr" :draggable="true" @detail-node="onDetail" @on-click="onClick">
|
|
|
<template #icon="{ item }">
|
|
|
<template v-if="item.isFolder">
|
|
|
<SvgIcon v-if="item.expanded" size="18" name="file-open" />
|
|
@@ -41,8 +41,9 @@
|
|
|
</template>
|
|
|
<script lang="ts" setup>
|
|
|
import { onMounted, onUnmounted, ref, reactive, nextTick } from 'vue';
|
|
|
+import { useRouter } from 'vue-router';
|
|
|
import { Pagination, Empty } from 'ant-design-vue';
|
|
|
-import { list, cameraAddr, getCameraDevKind } from './camera.api'
|
|
|
+import { list, cameraAddr, getCameraDevKind, getDevice, getVentanalyCamera } from './camera.api'
|
|
|
import Player, { I18N } from 'xgplayer';
|
|
|
import ZH from 'xgplayer/es/lang/zh-cn'
|
|
|
import HlsPlugin from 'xgplayer-hls';
|
|
@@ -60,13 +61,14 @@ let selected = reactive<any>({
|
|
|
isFolder: false,
|
|
|
});
|
|
|
//tree菜单列表
|
|
|
-let listArr = ref<any[]>([]);
|
|
|
+let listArr = reactive<any[]>([]);
|
|
|
let searchParam = reactive({
|
|
|
devKind: '',
|
|
|
strType: '',
|
|
|
})
|
|
|
|
|
|
I18N.use(ZH)
|
|
|
+let router = useRouter(); //路由
|
|
|
const pageSize = 8
|
|
|
const current = ref(1)
|
|
|
const total = ref(0)
|
|
@@ -77,45 +79,129 @@ let addrList = ref<{ name: string, addr: string }[]>([])
|
|
|
async function getCameraDevKindList() {
|
|
|
let res = await getCameraDevKind()
|
|
|
if (res.length != 0) {
|
|
|
+ listArr.length = 0
|
|
|
+ listArr.push({
|
|
|
+ pid: 'root',
|
|
|
+ isFolder: true,
|
|
|
+ expanded: true,
|
|
|
+ title: '全部',
|
|
|
+ id: 0,
|
|
|
+ children: []
|
|
|
+ })
|
|
|
res.forEach(el => {
|
|
|
- el.pid = 'root'
|
|
|
- el.isFolder = true
|
|
|
- el.title = el.itemText
|
|
|
+ el.pid = 0
|
|
|
+ el.isFolder = true,
|
|
|
+ el.expanded = false,
|
|
|
+ el.title = el.itemText
|
|
|
el.id = el.subDictId
|
|
|
- el.children.forEach(v => {
|
|
|
- v.pid = v.dictId
|
|
|
- v.isFolder = false
|
|
|
- v.title = v.itemText
|
|
|
- })
|
|
|
+ el.children = []
|
|
|
+ listArr[0].children.push(el)
|
|
|
})
|
|
|
- listArr.value = res
|
|
|
- selected.id = listArr['value'][0].id;
|
|
|
- selected.pid = listArr['value'][0].pid;
|
|
|
- selected.title = listArr['value'][0].title;
|
|
|
- selected.isFolder = listArr['value'][0].isFolder;
|
|
|
+ selected.id = listArr[0].id;
|
|
|
+ selected.pid = listArr[0].pid;
|
|
|
+ selected.title = listArr[0].title;
|
|
|
+ selected.isFolder = listArr[0].isFolder;
|
|
|
}
|
|
|
}
|
|
|
|
|
|
|
|
|
//点击目录
|
|
|
-function onClick(node) {
|
|
|
+async function onClick(node) {
|
|
|
+ console.log(node, 'node--------------')
|
|
|
+ selected.id = node.id;
|
|
|
+ selected.pid = node.pid;
|
|
|
+ selected.title = node.title;
|
|
|
+ selected.isFolder = node.isFolder;
|
|
|
if (node.pid != 'root') {
|
|
|
- console.log(node, 'node--------------')
|
|
|
- selected.id = node.id;
|
|
|
- selected.pid = node.pid;
|
|
|
- selected.title = node.title;
|
|
|
- selected.isFolder = node.isFolder;
|
|
|
- searchParam.devKind = listArr.value.filter(v => v.id == node.pid)[0]['itemValue']
|
|
|
- searchParam.strType = node.itemValue
|
|
|
+ if (node.isFolder) {
|
|
|
+ let res = await getDevice({ devicetype: node.itemValue })
|
|
|
+ if (res.msgTxt.length != 0) {
|
|
|
+ res.msgTxt[0].datalist.forEach(el => {
|
|
|
+ el.pid = node.id
|
|
|
+ el.isFolder = false
|
|
|
+ el.title = el.strinstallpos
|
|
|
+ el.id = el.deviceID
|
|
|
+ })
|
|
|
+ listArr[0].children.forEach(v => {
|
|
|
+ if (v.id == node.id) {
|
|
|
+ v.children = res.msgTxt[0].datalist
|
|
|
+ }
|
|
|
+ })
|
|
|
+ }
|
|
|
+ searchParam.devKind = node.itemValue
|
|
|
+ searchParam.strType = ''
|
|
|
+ getVideoAddrs()
|
|
|
+ } else {
|
|
|
+ getVideoAddrsSon(node.deviceID)
|
|
|
+ }
|
|
|
+
|
|
|
+ } else {
|
|
|
+ searchParam.devKind = ''
|
|
|
+ searchParam.strType = ''
|
|
|
getVideoAddrs()
|
|
|
}
|
|
|
|
|
|
};
|
|
|
|
|
|
+//点击详情跳转
|
|
|
+function onDetail(node) {
|
|
|
+ console.log(node, '详情-------------')
|
|
|
+ switch (node.deviceType) {
|
|
|
+ case 'gate_qd':
|
|
|
+ router.push('/monitorChannel/monitor-gate?id=' + node.deviceID)
|
|
|
+ break;
|
|
|
+ case 'pump_over':
|
|
|
+ router.push('/monitorChannel/gasPump-home?id=' + node.deviceID)
|
|
|
+ break;
|
|
|
+ case 'pump_under':
|
|
|
+ router.push('/monitorChannel/gasPump-home?id=' + node.deviceID)
|
|
|
+ break;
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
async function getVideoAddrs() {
|
|
|
clearCamera();
|
|
|
playerList.value = []
|
|
|
let res = await list({ ...searchParam })
|
|
|
+ console.log(res, '摄像头信息--------')
|
|
|
+ if (res.records.length != 0) {
|
|
|
+ const cameraList = <{ name: string, addr: string }[]>[]
|
|
|
+ const cameras = res.records
|
|
|
+ for (let i = 0; i < cameras.length; i++) {
|
|
|
+ const item = cameras[i];
|
|
|
+
|
|
|
+ if (item['devicekind'] === 'toHKRtsp') {
|
|
|
+ // 从海康平台接口获取视频流
|
|
|
+ try {
|
|
|
+ const data = await cameraAddr({ cameraCode: item['addr'] });
|
|
|
+ if (data && data['url']) {
|
|
|
+ cameraList.push({ name: item['name'], addr: data['url'] });
|
|
|
+ }
|
|
|
+ // cameraList.push({
|
|
|
+ // name: item['name'],
|
|
|
+ // // addr: 'http://219.151.31.38/liveplay-kk.rtxapp.com/live/program/live/hnwshd/4000000/mnf.m3u8'
|
|
|
+ // addr: 'https://demo.unified-streaming.com/k8s/features/stable/video/tears-of-steel/tears-of-steel.mp4/.m3u8',
|
|
|
+ // });
|
|
|
+ } catch (error) {
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ } else {
|
|
|
+ if (item['addr'].includes('0.0.0.0')) {
|
|
|
+ item['addr'] = item['addr'].replace('0.0.0.0', window.location.hostname)
|
|
|
+ }
|
|
|
+ cameraList.push({ name: item['name'], addr: item['addr'] });
|
|
|
+ }
|
|
|
+ }
|
|
|
+ addrList.value = cameraList
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
+async function getVideoAddrsSon(Id) {
|
|
|
+ clearCamera();
|
|
|
+ playerList.value = []
|
|
|
+ let res = await getVentanalyCamera({ deviceid: Id })
|
|
|
+ console.log(res, 'xin---------------')
|
|
|
if (res.records.length != 0) {
|
|
|
const cameraList = <{ name: string, addr: string }[]>[]
|
|
|
const cameras = res.records
|