feat 查看监控多设备互相影响bug修复

Co-authored-by: Copilot <copilot@github.com>
This commit is contained in:
Ironsp
2026-06-02 08:22:08 +08:00
parent 624cfb4d0a
commit 98c53dce04

View File

@@ -406,7 +406,7 @@ const handleSee = async (row?: any) => {
monitorVideoUrl.value = videosStore.hisUrl || ''; monitorVideoUrl.value = videosStore.hisUrl || '';
if (!monitorVideoUrl.value) { if (!monitorVideoUrl.value) {
proxy?.$modal.msgWarning('该设备未登录或无法获取直播地址,已停止播放旧画面'); //proxy?.$modal.msgWarning('该设备未登录或无法获取直播地址,已停止播放旧画面');
initVideoResizeObserver(); initVideoResizeObserver();
return; return;
} }
@@ -414,6 +414,7 @@ const handleSee = async (row?: any) => {
// 等待 DOM 更新后初始化 Hls // 等待 DOM 更新后初始化 Hls
await nextTick(); await nextTick();
initHls(); initHls();
// 等待视频加载完成后初始化 ResizeObserver以便能正确获取视频尺寸
initVideoResizeObserver(); initVideoResizeObserver();
// 如果有 drawArea直接使用它显示矩形区域不允许点击绘制 // 如果有 drawArea直接使用它显示矩形区域不允许点击绘制
@@ -499,14 +500,14 @@ const displayDrawArea = (drawArea: any, video: HTMLVideoElement) => {
console.log('[查看监控] 已加载已有报警区域', payload.value); console.log('[查看监控] 已加载已有报警区域', payload.value);
}; };
// 在窗口调整大小时更新绘制区域位置和大小
const updateDrawAreaOnResize = () => { const updateDrawAreaOnResize = () => {
const drawArea = currentDrawArea.value; const drawArea = currentDrawArea.value;
const video = monitorVideoRef.value; const video = monitorVideoRef.value;
if (!drawArea || !video || video.videoWidth <= 0 || video.videoHeight <= 0) return; if (!drawArea || !video || video.videoWidth <= 0 || video.videoHeight <= 0) return;
displayDrawArea(drawArea, video); displayDrawArea(drawArea, video);
}; };
// 初始化 ResizeObserver 监听视频元素尺寸变化,以便在窗口调整大小时更新绘制区域位置和大小
const initVideoResizeObserver = () => { const initVideoResizeObserver = () => {
if (!window.ResizeObserver || videoResizeObserver.value) return; if (!window.ResizeObserver || videoResizeObserver.value) return;
const video = monitorVideoRef.value; const video = monitorVideoRef.value;
@@ -516,7 +517,7 @@ const initVideoResizeObserver = () => {
}); });
videoResizeObserver.value.observe(video); videoResizeObserver.value.observe(video);
}; };
// 销毁 ResizeObserver
const destroyVideoResizeObserver = () => { const destroyVideoResizeObserver = () => {
if (videoResizeObserver.value) { if (videoResizeObserver.value) {
videoResizeObserver.value.disconnect(); videoResizeObserver.value.disconnect();