From 01e3aabbfc96d2eb91116eae2d09a379c89ee76e Mon Sep 17 00:00:00 2001 From: zjc <1034206993@qq.com> Date: Wed, 26 Feb 2025 22:18:09 +0800 Subject: [PATCH] =?UTF-8?q?feat=EF=BC=9A=E5=AE=8C=E5=96=84=E5=8A=9F?= =?UTF-8?q?=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/api/scenic.js | 9 + src/assets/images/all.png | Bin 0 -> 8188 bytes src/auto-import.d.ts | 1 + src/components/CoreVideo/allList.vue | 220 ++++++++++++++++++++++++ src/components/CoreVideo/index.vue | 85 ++++++--- src/components/VideoDialog/index.vue | 19 +- src/views/monitor/components/box-2.vue | 149 ++++++++++++---- src/views/scenic/components/big-map.vue | 54 +++--- src/views/traffic/components/box-2.vue | 27 ++- 9 files changed, 456 insertions(+), 108 deletions(-) create mode 100644 src/assets/images/all.png create mode 100644 src/components/CoreVideo/allList.vue diff --git a/src/api/scenic.js b/src/api/scenic.js index e322ecf..185067a 100644 --- a/src/api/scenic.js +++ b/src/api/scenic.js @@ -8,3 +8,12 @@ export function getGpsListApi(data) { params: data }) } + +// GPS状态列表 +export function getGpsStatusListApi(data) { + return request({ + url: '/fjtcc-api/api/largeScreen/spot/gpsStatusList', + method: 'get', + params: data + }) +} diff --git a/src/assets/images/all.png b/src/assets/images/all.png new file mode 100644 index 0000000000000000000000000000000000000000..63ef0046f51eaa26ab9e4a1c4e8ac53d580a7c9d GIT binary patch literal 8188 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 iT0nRjR@CfqDf?e}sl;PoU0OE)0000 +
+ + + +
    +
  • +
    取消关注
    + +

    + {{ item.cameraName || item.cameraIndexCode }} +

    +
  • +
+ +
+
+ + + + + + diff --git a/src/components/CoreVideo/index.vue b/src/components/CoreVideo/index.vue index f4e8dee..05fb309 100644 --- a/src/components/CoreVideo/index.vue +++ b/src/components/CoreVideo/index.vue @@ -1,20 +1,20 @@ @@ -99,6 +124,7 @@ background-color: transparent !important; } .core-video { + position: relative; margin: vw(8); width: vw(300); border-radius: vw(2); @@ -114,6 +140,17 @@ font-weight: 800; color: #fff; } + .btn-all { + cursor: pointer; + position: absolute; + right: vw(0); + top: vw(0); + z-index: 999; + width: vw(60); + height: vw(24); + background-image: url('@/assets/images/all.png'); + background-size: 100% 100%; + } .list { overflow-y: auto; @@ -147,10 +184,12 @@ padding: vw(10); background-size: 100% 100%; &-unfollow { + cursor: pointer; display: none; position: absolute; - right: vw(8); - top: vw(8); + right: vw(4); + top: vw(4); + z-index: 99; width: vw(64); height: vh(24); text-align: center; diff --git a/src/components/VideoDialog/index.vue b/src/components/VideoDialog/index.vue index d616fec..64a41d4 100644 --- a/src/components/VideoDialog/index.vue +++ b/src/components/VideoDialog/index.vue @@ -12,14 +12,8 @@ -
-
聚焦 @@ -50,16 +44,16 @@ import { ElMessage } from 'element-plus' import { postVideoControlApi } from '@/api/monitor' - import { mode, baseUrl, proBaseUrl } from '@/utils/config' const Z00M_IN = 'ZOOM_IN' // 焦距变大 const Z00M_OUT = 'ZOOM_OUT' // 焦距变小 - const ACTION = '0' const UP = 'UP' // 上转 const DOWN = 'DOWN' // 下转 const LEFT = 'LEFT' // 左转 const RIGHT = 'RIGHT' // 右转 const STOP = 'STOP' // 停止操作 + let ACTION = '0' + let command = ref('') const props = defineProps({ src: { @@ -96,26 +90,27 @@ ACTION = '1' } else { ACTION = '0' + command.value = e } await postVideoControlApi({ - command: e, + command: command.value, action: ACTION, cameraIndexCode: props.cameraIndexCode }) + if (e == STOP) { + command.value = '' + } ElMessage({ message: '操作成功', type: 'success' }) } const handleClose = () => { - // webRtcServer.disconnect() hlsRef.destroy() hlsRef = null modelValue.value = false } const init = () => { - // webRtcServer = new WebRtcStreamer('bigVideo', `${mode == 'dev' ? baseUrl : proBaseUrl}/webrtc`) - // webRtcServer.connect(props.src) hlsRef = new Hls({ enableWorker: false, // 禁用 Worker 来避免额外的线程 enableSoftwareAES: true, // 使用软件解码器以避免硬件解码的额外请求 diff --git a/src/views/monitor/components/box-2.vue b/src/views/monitor/components/box-2.vue index f5e9f14..202594c 100644 --- a/src/views/monitor/components/box-2.vue +++ b/src/views/monitor/components/box-2.vue @@ -50,7 +50,7 @@ class="video-item" v-for="(item, index) in videoList" :key="index" - @click="handleItemVideo(item.hlsUrl, 100)" + @click="handleItemVideo(item.hlsUrl, 100, item.cameraIndexCode)" >
- +

{{ item.cameraName || item.cameraIndexCode }} @@ -84,8 +84,9 @@