diff --git a/WebVue/src/components/basic/VideoPlayer.vue b/WebVue/src/components/basic/VideoPlayer.vue index 2475a08..9ef5355 100644 --- a/WebVue/src/components/basic/VideoPlayer.vue +++ b/WebVue/src/components/basic/VideoPlayer.vue @@ -24,6 +24,12 @@ @click.stop="toggle"> + + @@ -861,6 +867,30 @@ onBeforeUnmount(() => { cursor: pointer; } +/* 控制区收起后留在画面右下角的「显示控制区」入口 */ +.vp-restore { + position: absolute; + right: 14px; + bottom: 14px; + z-index: 3; + width: 38px; + height: 38px; + border-radius: 50%; + display: flex; + align-items: center; + justify-content: center; + font-size: 18px; + color: #fff; + background: rgba(6, 56, 62, 0.5); + border: 1px solid rgba(255, 255, 255, 0.45); + backdrop-filter: blur(6px); + opacity: 0.85; +} + +.vp-restore:active { + transform: scale(0.94); +} + /* ---------- 功能图标行 ---------- */ diff --git a/WebVue/src/views/master/DmsFileEnquiry.vue b/WebVue/src/views/master/DmsFileEnquiry.vue index 3075522..6021fce 100644 --- a/WebVue/src/views/master/DmsFileEnquiry.vue +++ b/WebVue/src/views/master/DmsFileEnquiry.vue @@ -370,21 +370,29 @@ const clearRefreshTimers = () => { const onUploadComplete = (payload: { count?: number }) => { const count = payload?.count ?? 1; const sec = 2500 + (count - 1) * 1000; + // 本次是不是视频:只有视频才需要补刷和转码提示 + const isVideo = uploadingVideo.value; // 视频场景由转码提示接管文案,等首刷完成后再切回"加载中..." - if (!uploadingVideo.value) spinTip.value = "加载中..."; + if (!isVideo) spinTip.value = "加载中..."; clearRefreshTimers(); refreshTimers.push( window.setTimeout(() => { - // 列表已经刷出来了,转码提示到此为止(后续补刷沿用默认的"加载中...") + // 列表已经刷出来了,转码提示到此为止 stopTranscodeTip(); uploadingVideo.value = false; onReSearch(); loading.value = false; }, sec), ); - refreshTimers.push(window.setTimeout(onReSearch, sec + 3000)); - refreshTimers.push(window.setTimeout(onReSearch, sec + 6000)); + + // 只有视频才补刷:封面(jpg)是服务端 ffmpeg 异步生成的,首刷时可能还没落盘; + // 每次查询服务端都会重新拼 ?v=,src 变了 才会重新请求,封面就能补上来。 + // 图片/音频/普通文件上传后文件已经就绪,一次刷新就够,多刷纯属浪费。 + if (isVideo) { + refreshTimers.push(window.setTimeout(onReSearch, sec + 3000)); + refreshTimers.push(window.setTimeout(onReSearch, sec + 6000)); + } }; /** 中断时的断点信息,弹窗里展示用 */ diff --git a/WebVue/src/views/master/PreviewVideo.vue b/WebVue/src/views/master/PreviewVideo.vue index 1b68cd8..b8f49ff 100644 --- a/WebVue/src/views/master/PreviewVideo.vue +++ b/WebVue/src/views/master/PreviewVideo.vue @@ -2,12 +2,12 @@
- +