fix: 前端视频和控制界面分离
This commit is contained in:
@@ -1,7 +1,5 @@
|
|||||||
<script setup lang="ts">
|
<script setup lang="ts">
|
||||||
import { computed, onMounted, onUnmounted, ref, watch } from 'vue'
|
import { computed, onMounted, onUnmounted, ref, watch } from 'vue'
|
||||||
|
|
||||||
import ControlFeedback from '@/components/ControlFeedback.vue'
|
|
||||||
import { buildVideoFrameUrl, fetchVideoStatus } from '@/lib/api'
|
import { buildVideoFrameUrl, fetchVideoStatus } from '@/lib/api'
|
||||||
import type { VideoStatus } from '@/types'
|
import type { VideoStatus } from '@/types'
|
||||||
|
|
||||||
@@ -165,9 +163,6 @@ watch([currentFps, canRequestFrames], () => {
|
|||||||
<div v-else class="video-placeholder">
|
<div v-else class="video-placeholder">
|
||||||
{{ placeholderText }}
|
{{ placeholderText }}
|
||||||
</div>
|
</div>
|
||||||
<div class="video-overlay">
|
|
||||||
<ControlFeedback compact />
|
|
||||||
</div>
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="stats">
|
<div class="stats">
|
||||||
@@ -283,32 +278,6 @@ h2 {
|
|||||||
#02050d;
|
#02050d;
|
||||||
}
|
}
|
||||||
|
|
||||||
.video-overlay {
|
|
||||||
position: absolute;
|
|
||||||
inset: auto 14px 14px 14px;
|
|
||||||
pointer-events: none;
|
|
||||||
padding-top: 120px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.video-overlay :deep(.feedback-shell) {
|
|
||||||
pointer-events: auto;
|
|
||||||
padding: 14px;
|
|
||||||
border-radius: 22px;
|
|
||||||
background: linear-gradient(180deg, rgba(4, 8, 15, 0.08), rgba(4, 8, 15, 0.72));
|
|
||||||
border: 1px solid rgba(255, 255, 255, 0.08);
|
|
||||||
box-shadow: 0 18px 36px rgba(0, 0, 0, 0.24);
|
|
||||||
}
|
|
||||||
|
|
||||||
.video-overlay :deep(.command-card),
|
|
||||||
.video-overlay :deep(.feedback-card) {
|
|
||||||
background: rgba(6, 12, 22, 0.74);
|
|
||||||
border-color: rgba(255, 255, 255, 0.08);
|
|
||||||
}
|
|
||||||
|
|
||||||
.video-overlay :deep(.summary) {
|
|
||||||
display: none;
|
|
||||||
}
|
|
||||||
|
|
||||||
.stats {
|
.stats {
|
||||||
display: grid;
|
display: grid;
|
||||||
grid-template-columns: repeat(2, minmax(0, 1fr));
|
grid-template-columns: repeat(2, minmax(0, 1fr));
|
||||||
@@ -395,11 +364,6 @@ h2 {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@media (max-width: 720px) {
|
@media (max-width: 720px) {
|
||||||
.video-overlay {
|
|
||||||
inset: auto 10px 10px 10px;
|
|
||||||
padding-top: 84px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.stats {
|
.stats {
|
||||||
grid-template-columns: 1fr;
|
grid-template-columns: 1fr;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,4 +1,5 @@
|
|||||||
<script setup lang="ts">
|
<script setup lang="ts">
|
||||||
|
import ControlPanel from '@/components/ControlPanel.vue'
|
||||||
import GpsMapPanel from '@/components/GpsMapPanel.vue'
|
import GpsMapPanel from '@/components/GpsMapPanel.vue'
|
||||||
import NetworkPanel from '@/components/NetworkPanel.vue'
|
import NetworkPanel from '@/components/NetworkPanel.vue'
|
||||||
import VideoPanel from '@/components/VideoPanel.vue'
|
import VideoPanel from '@/components/VideoPanel.vue'
|
||||||
@@ -25,7 +26,11 @@ const { gps, network, video, errorMessage, headerStatus } = useMonitoringData()
|
|||||||
</section>
|
</section>
|
||||||
|
|
||||||
<main class="layout">
|
<main class="layout">
|
||||||
<VideoPanel :video="video" />
|
<section class="primary-grid">
|
||||||
|
<VideoPanel :video="video" />
|
||||||
|
<ControlPanel />
|
||||||
|
</section>
|
||||||
|
|
||||||
<GpsMapPanel :gps="gps" />
|
<GpsMapPanel :gps="gps" />
|
||||||
<NetworkPanel :network="network" />
|
<NetworkPanel :network="network" />
|
||||||
</main>
|
</main>
|
||||||
@@ -85,6 +90,19 @@ h1 {
|
|||||||
gap: 20px;
|
gap: 20px;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.primary-grid {
|
||||||
|
display: grid;
|
||||||
|
grid-template-columns: minmax(0, 1.35fr) minmax(360px, 0.95fr);
|
||||||
|
gap: 20px;
|
||||||
|
align-items: start;
|
||||||
|
}
|
||||||
|
|
||||||
|
@media (max-width: 1280px) {
|
||||||
|
.primary-grid {
|
||||||
|
grid-template-columns: 1fr;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
@media (max-width: 960px) {
|
@media (max-width: 960px) {
|
||||||
.hero {
|
.hero {
|
||||||
grid-template-columns: 1fr;
|
grid-template-columns: 1fr;
|
||||||
|
|||||||
Reference in New Issue
Block a user