diff --git a/src/views/meeting/meeting-room/meeting-room-monitor.vue b/src/views/meeting/meeting-room/meeting-room-monitor.vue
index 4a3289a..da5576d 100644
--- a/src/views/meeting/meeting-room/meeting-room-monitor.vue
+++ b/src/views/meeting/meeting-room/meeting-room-monitor.vue
@@ -15,7 +15,17 @@
-
+
+
+
@@ -30,7 +40,7 @@
- {{ u.userName || `用户 ${u.uid}` }}
+ {{ shortIdToNameMap.get(Number(u.uid)) || `用户 ${u.uid}` }}
@@ -43,12 +53,14 @@
import type { IAgoraRTCRemoteUser } from 'agora-rtc-sdk-ng';
import IconMdiWifi from '~icons/mdi/wifi';
import IconMdiVideo from '~icons/mdi/video';
+ import IconMdiLoading from '~icons/mdi/loading';
+ import { ElIcon, ElMessageBox, ElMessage as Toast } from 'element-plus';
import { computed, onMounted, onUnmounted, ref, watchEffect } from 'vue';
import { useRoute, useRouter } from 'vue-router';
- import { ElMessageBox, ElMessage as Toast } from 'element-plus';
- import type { OnJoinRoomData, ServerToClientEvents } from './types';
+ import type { ServerToClientEvents } from './types';
import { useAgoraMeeting } from './useAgoraMeeting';
import { destroyMeetingSocket, useMeetingSocket, useWebSocket } from './websocket';
+ import { getStudentDetailsAxios } from '@/api/meeting';
const route = useRoute();
const router = useRouter();
@@ -74,10 +86,8 @@
/** 老师短 UID */
const teacherUid = ref(0);
- /** 监控端是否发布本地音视频(默认不发布) */
- const isPublishLocalTracks = ref(false);
- /** 是否禁用本地音视频轨道 */
- const disableLocalTracks = computed(() => !isPublishLocalTracks.value);
+ /** 监控端永远禁用本地音视频轨道(只订阅不发布) */
+ const disableLocalTracks = computed(() => true);
const meeting = useAgoraMeeting(
courseRoomId,
@@ -115,6 +125,24 @@
const roomEndTimestamp = ref(null);
/** 是否正在弹出续期窗口 */
const isRenewPrompting = ref(false);
+ /** 是否已加入房间 */
+ const isRoomJoined = ref(false);
+
+ /** 学生长 ID 到姓名的映射 */
+ const studentNameMap = ref