diff --git a/src/pages/movement-supervision.vue b/src/pages/movement-supervision.vue index 8608605..42cbd89 100644 --- a/src/pages/movement-supervision.vue +++ b/src/pages/movement-supervision.vue @@ -6,6 +6,7 @@ import { isNil } from 'lodash-es'; import { computed, onMounted, onUnmounted, provide, ref, type ShallowRef, shallowRef, watch } from 'vue'; import { useRoute } from 'vue-router'; +import type { RobotRealtimeInfo } from '../apis/robot'; import { getSceneByGroupId, getSceneById, monitorRealSceneById, monitorSceneById } from '../apis/scene'; import expandIcon from '../assets/icons/png/expand.png'; import foldIcon from '../assets/icons/png/fold.png'; @@ -71,7 +72,7 @@ const client = shallowRef(); // 左侧边栏元素引用(用于 Ctrl/Cmd+F 聚焦搜索框) const leftSiderEl = shallowRef(); const isPlaybackControllerVisible = ref(true); -const selectedDate = ref(null); +const selectedDate = ref(); const playback = usePlaybackWebSocket(editor); @@ -85,9 +86,16 @@ watch(mode, async (newMode) => { } }); -const handleDateChange = (date: Dayjs) => { +watch(playback.sceneJson, async (newJson) => { + if (newJson) { + await editor.value?.load(newJson); + // [关键修复] 场景加载后,立即重新初始化机器人 + await editor.value?.initRobots(); + } +}); + +watch(selectedDate, (date) => { if (date) { - selectedDate.value = date; const startOfDayTimestamp = date.startOf('day').valueOf(); playback.seek(startOfDayTimestamp); // The total duration is now relative to the start of the day @@ -95,7 +103,7 @@ const handleDateChange = (date: Dayjs) => { // Set current time to the beginning of the selected day for the slider playback.currentTime.value = startOfDayTimestamp; } -}; +}); const handleSeek = (relativeTime: number) => { if (selectedDate.value) { @@ -552,9 +560,7 @@ const focusFindKeydownHandler = (event: KeyboardEvent) => { if (input) { event.preventDefault(); input.focus(); - try { - input.select?.(); - } catch {} + input.select?.(); } } } @@ -583,12 +589,7 @@ const handleGlobalKeydown = (event: KeyboardEvent) => { 保存比例 - +