From ac6bbef6786c74e7a86852b1b8bff7f23e8592d8 Mon Sep 17 00:00:00 2001
From: lohir <3399054449@qq.com>
Date: 星期四, 17 十月 2024 09:59:23 +0800
Subject: [PATCH] 缺考的人无法查看试卷
---
src/views/meet/index.vue | 133 ++++++++++++++++++++++++++++++++++++++++++--
1 files changed, 127 insertions(+), 6 deletions(-)
diff --git a/src/views/meet/index.vue b/src/views/meet/index.vue
index cc2941d..24ff712 100644
--- a/src/views/meet/index.vue
+++ b/src/views/meet/index.vue
@@ -5,15 +5,25 @@
</template>
<script setup>
-import { ref, onMounted } from 'vue';
+import {ref, watch, onMounted} from 'vue';
+import {useRoute} from 'vue-router';
+import useWebScoket from "@/hooks/useWebScoket.js";
+import {storeToRefs} from 'pinia';
+import {useUserStore} from '@/store/index.js';
+
+const route = useRoute();
const meet = ref(null);
+
+const userStore = useUserStore();
+const {userInfo} = storeToRefs(userStore);
+const {meetName, id, userName, userCode} = route.query;
let jitsiApi = null;
onMounted(() => {
const width = window.innerWidth;
const height = window.innerHeight;
- const domain = 'ycl.easyblog.vip:8443';
+ const domain = 'ycl.easyblog.vip:8443/' + id;
const options = {
- roomName: 'test',
+ roomName: meetName,
width: width,
height: height,
parentNode: meet.value,
@@ -22,24 +32,135 @@
prejoinConfig: {
enabled: false
},
+ //绂佺敤閭
+ gravatar: {
+ disabled: true
+ },
+ // 鎺у埗椤堕儴鏍囬浼氳淇℃伅鏍囩鐨勫彲瑙佹�у拰琛屼负銆�
+ // 濡傛灉鏍囩鐨� ID 涓嶅湪涓婅堪涓や釜鏁扮粍涓殑浠讳綍涓�涓腑锛屽垯瀹冨湪鏍囬涓婃牴鏈笉鍙銆�
+ conferenceInfo: {
+ // 杩欎簺鏍囩涓嶄細涓庡伐鍏风涓�璧烽殣钘忋��
+ alwaysVisible: ['recording'],
+ // 杩欎簺鏍囩灏嗕笌宸ュ叿绠辨寜閽竴璧疯嚜鍔ㄩ殣钘忋��
+ autoHide: [
+ // 'raised-hands-count',
+ 'subject',
+ 'conference-timer',
+ 'participants-count',
+ 'e2ee',
+ 'video-quality',
+ 'insecure-room',
+ 'highlight-moment',
+ 'top-panel-toggle',
+ ]
+ },
+ ModeratorIndicator: true,
+ startSilent: true,
+ //绂佺敤鏀瑰悕
+ readOnlyName: true,
+ //鍙備細鑰呭悕鍗�
+ remoteVideoMenu: {
+ disabled: false,
+ disableKick: true,
+ disableGrantModerator: true,
+ disabledDemote: false
+ },
+ // 鑷畾涔夋寜閽�
+ toolbarButtons: [
+ // 鎽勫儚澶�
+ 'camera',
+ // 鑱婂ぉ
+ 'chat',
+ // 鍏变韩
+ 'desktop',
+ 'download',
+ 'fullscreen',
+ 'hangup',
+ 'highlight',
+ 'linktosalesforce',
+ 'livestreaming',
+ 'microphone',
+ 'noisesuppression',
+ 'raisehand',
+ 'recording',
+ 'select-background',
+ 'settings',
+ 'shareaudio',
+ 'sharedvideo',
+ 'shortcuts',
+ 'stats',
+ 'tileview',
+ 'toggle-camera',
+ // 'closedcaptions',
+ // 'embedmeeting',
+ // 'etherpad',
+ // 'feedback',
+ // 'filmstrip',
+ // 'help',
+ // 'invite',
+ // 'participants-pane',
+ // 'profile',
+ // 'security',
+ 'videoquality',
+ 'whiteboard'
+ ],
+ // 绂佺敤閭�璇�
+ disableInviteFunctions: true,
+ //绂佺敤鍏ㄩ儴闈欓煶
+ disableRemoteMute: true,
+ //涓绘寔浜洪�夐」
+ participantsPane: {
+ enabled: false,
+ hideMoreActionsButton: true,
+ hideModeratorSettingsTab: true,
+ hideMuteAllButton: true,
+ },
+ //鍙栨秷閫�鍑洪〉闈�
+ enableClosePage: false,
whiteboard: {
enabled: true
}
},
- toolbarButtons: ['whiteboard']
+
+ userInfo: {
+ displayName: userName
+ }
};
jitsiApi = new JitsiMeetExternalAPI(domain, options);
jitsiInit();
+
+ // 杩炴帴webscoket
+ connect();
});
const jitsiInit = () => {
jitsiApi.addListener('readyToClose', () => {
-
+ window.close()
});
}
+const {status, message, error, connect, disconnect, sendMessage} = useWebScoket({
+ url: 'ws://127.0.0.1:8000/websocket/' + userInfo._rawValue.id,
+ heartBeatData: 'ping'
+});
+
+watch(
+ () => message.value,
+ (msg) => {
+ console.log('msg', msg.commend);
+ if (msg.commend === 'kickOut') {
+ jitsiApi.executeCommand('hangup');
+ }
+ if (msg.commend === 'mute') {
+ jitsiApi.executeCommand('toggleAudio');
+ }
+ if (msg.commend === 'openCamera') {
+ jitsiApi.executeCommand('toggleVideo');
+ }
+ }
+);
</script>
-<style lang="scss" scoped></style>
\ No newline at end of file
+<style lang="scss" scoped></style>
--
Gitblit v1.8.0