From 15c5e70dd90a0389d70b3d855977dfd9070588fc Mon Sep 17 00:00:00 2001
From: web <candymxq888@outlook.com>
Date: 星期二, 03 六月 2025 09:48:55 +0800
Subject: [PATCH] fix:修改金川视频播放,弹窗方式

---
 src/components/VideoPlayer/VideoPlayer.vue |   37 +++++++++++++++++++++++++------------
 1 files changed, 25 insertions(+), 12 deletions(-)

diff --git a/src/components/VideoPlayer/VideoPlayer.vue b/src/components/VideoPlayer/VideoPlayer.vue
index 084aca4..82e1f2d 100644
--- a/src/components/VideoPlayer/VideoPlayer.vue
+++ b/src/components/VideoPlayer/VideoPlayer.vue
@@ -4,7 +4,6 @@
 		<div class="playerBtn">
             <el-icon class="icon" v-if="showPlay" @click="handlePlayer"><VideoPlay /></el-icon>
             <el-icon class="icon" v-if="showPause" @click="hanlePause"><VideoPause /></el-icon>
-            <el-icon class="icon is-loading" v-if="showLoading"><Loading /></el-icon>
 		</div>
 	</div>
 </template>
@@ -27,22 +26,22 @@
 
 const videoRef = ref(null);
 const videojsb = ref();
-const showPlay = ref(true);
+const isPlay = ref(false);
+const showPlay = ref(false);
 const showPause = ref(false);
-const showLoading = ref(false);
 let timer = null;
+let timerOut = null;
 
 //通知设备上传媒体流,做节流,防止过度点击
 const handlePlayer = debounce(function() {
     showPlay.value = false;
-    showLoading.value = true;
     // 获取播放地址
     getVideoMedia(props.item.deviceId, props.item.channelId).then(res => {
         videojsb.value.play(res.data.url);
+        isPlay.value = true;
     }).catch(() => {
+        isPlay.value = false;
         showPlay.value = true;
-    }).finally(() => {
-        showLoading.value = false;
     })
     // 挂定时任务,2分钟获取一次直播流数据,防止客户关闭页面,如果2分钟未获取,后端断开链接
     if(timer) clearInterval(timer)
@@ -53,22 +52,35 @@
 }, 2000, true)
 
 const hanlePause = () => {
+    isPlay.value = false;
     showPause.value = false;
     showPlay.value = true;
     clearInterval(timer)
+    clearTimeout(timerOut);
     stopVideoMedia(props.item.deviceId, props.item.channelId).then(() => {
         console.log('关闭成功')
     })
 }
 
 const handleEnter = () => {
-    if(props.item.deviceId && props.item.channelId && !showPlay.value && !showLoading.value) {
-        showPause.value = true;
+    if(props.item.deviceId && props.item.channelId) {
+        if(isPlay.value) {
+            if(timerOut) clearTimeout(timerOut);
+            showPause.value = true;
+            // 延时2秒隐藏暂停按钮
+            timerOut = setTimeout(() => {
+                showPause.value = false;
+            }, 3000)
+        } else {
+            showPlay.value = true;
+        }
     }
 }
 
 const handleLeave = () => {
+    if(timerOut) clearTimeout(timerOut);
     showPause.value = false;
+    showPlay.value = false;
 }
 
 // 实例化dom节点
@@ -87,7 +99,7 @@
             // debug: true,
             supportDblclickFullscreen: false,
             operateBtns: {
-                fullscreen: true,
+                fullscreen: false,
                 play: false,
                 audio: true,
                 recorder: false,
@@ -128,6 +140,7 @@
         videojsb.value.destroy();
     }
     if(timer) clearInterval(timer)
+    if(timerOut) clearTimeout(timerOut)
 })
 
 
@@ -160,8 +173,8 @@
 			font-size: 3rem;
 		}
 	}
-	:deep(.jessibuca-controls) {
-		background-color: transparent;
-	}
+    .mask{
+        position: absolute;
+    }
 }
 </style>

--
Gitblit v1.9.3