From d0d825e09ffdb95e9c4edcc44eeff08c4b2a9c23 Mon Sep 17 00:00:00 2001
From: luohairen <3399054449@qq.com>
Date: 星期四, 07 十一月 2024 15:53:22 +0800
Subject: [PATCH] 完成教师端,考试列表展示

---
 src/views/meet/index.vue |  117 ++++++++++++++++++++++++++++++++++------------------------
 1 files changed, 69 insertions(+), 48 deletions(-)

diff --git a/src/views/meet/index.vue b/src/views/meet/index.vue
index 35a13e0..6fef657 100644
--- a/src/views/meet/index.vue
+++ b/src/views/meet/index.vue
@@ -9,7 +9,7 @@
           <el-row :gutter="5">
             <el-col :span="12">
               <el-input placeholder="鎼滅储瀛﹀憳" size="small" clearable @input="getStudentList" @clear="getStudentList"
-                v-model="searchForm.keyword" />
+                        v-model="searchForm.keyword"/>
             </el-col>
             <el-col :span="2">
               <el-button type="primary" size="small" @click="getStudentList">鎼滅储</el-button>
@@ -26,8 +26,8 @@
                 <el-dropdown trigger="click" @command="handleCommand">
                   <i class="el-icon-more-outline" id="more"></i>
                   <el-dropdown-menu slot="dropdown">
-                    <el-dropdown-item :command="{ command: 'openCamera', id: scope.row.id }">鎵撳紑鎽勫儚澶�</el-dropdown-item>
-                    <el-dropdown-item :command="{ command: 'mute', id: scope.row.id }">闈欓煶</el-dropdown-item>
+                    <el-dropdown-item :command="{ command: 'openCamera', id: scope.row.id }">鎵撳紑/鍏抽棴鎽勫儚澶�</el-dropdown-item>
+                    <el-dropdown-item :command="{ command: 'mute', id: scope.row.id }">闈欓煶/鍙栨秷闈欓煶</el-dropdown-item>
                     <el-dropdown-item :command="{ command: 'kickOut', id: scope.row.id }">韪㈠嚭</el-dropdown-item>
                   </el-dropdown-menu>
                 </el-dropdown>
@@ -42,6 +42,7 @@
             </el-table-column>
           </el-table>
           <el-button class="link-left" type="primary" size="small" @click="muteEveryone">鍏ㄤ綋闈欓煶</el-button>
+          <el-button class="link-left" type="primary" size="small" @click="videoEveryone">鍏ㄤ綋鍏抽棴鎽勫儚澶�</el-button>
         </el-row>
       </div>
     </div>
@@ -50,8 +51,10 @@
 
 <script>
 import { getStudentList } from '@/api/meet'
+import Cookies from 'js-cookie'
+
 export default {
-  data() {
+  data () {
     return {
       ws: null,
       jitsiApi: null,
@@ -71,77 +74,92 @@
       showStudentList: []
     }
   },
-  beforeDestroy() {
+  beforeDestroy () {
     if (this.ws) {
-      this.ws.close();
+      this.ws.close()
     }
   },
   methods: {
-    muteEveryone() {
-      this.jitsiApi.executeCommand('muteEveryone', 'video');
+    muteEveryone () {
+      this.jitsiApi.executeCommand('muteEveryone', 'audio')
+      const h = this.$createElement;
+
+      this.$notify({
+        title: '鎻愮ず',
+        message: h('i', { style: 'color: teal'}, '宸插叏浣撶闊�')
+      });
     },
-    handleCommand(command) {
+    videoEveryone () {
+      this.jitsiApi.executeCommand('muteEveryone', 'video')
+      const h = this.$createElement;
+
+      this.$notify({
+        title: '鎻愮ず',
+        message: h('i', { style: 'color: teal'}, '宸插叧闂叏浣撹棰�')
+      });
+    },
+    handleCommand (command) {
       this.sendMessage(JSON.stringify(command))
     },
-    initWebSocket() {
-      this.ws = new WebSocket('ws://127.0.0.1:8000/websocket/' + 1);
-      let ws = this.ws;
+    initWebSocket () {
+      this.ws = new WebSocket('wss://www.kgmeet.com:18080/websocket/' + JSON.parse(Cookies.get('adminUserInfo')).id)
+      let ws = this.ws
       ws.onopen = () => {
-        console.log('WebSocket 杩炴帴鎴愬姛');
+        console.log('WebSocket 杩炴帴鎴愬姛')
         // 鍙戦�佸績璺虫暟鎹�
-        ws.send('ping');
-      };
+        ws.send('ping')
+      }
       ws.onmessage = (event) => {
-        console.log('鏀跺埌鏈嶅姟鍣ㄦ秷鎭�:', event.data);
+        console.log('鏀跺埌鏈嶅姟鍣ㄦ秷鎭�:', event.data)
         // 澶勭悊鏈嶅姟鍣ㄥ彂鏉ョ殑娑堟伅
-      };
+      }
       ws.onerror = (error) => {
-        console.error('WebSocket 杩炴帴鍑洪敊:', error);
-      };
+        console.error('WebSocket 杩炴帴鍑洪敊:', error)
+      }
       ws.onclose = () => {
-        console.log('WebSocket 杩炴帴宸插叧闂�');
+        console.log('WebSocket 杩炴帴宸插叧闂�')
         // 鍙互鍦ㄨ繖閲屽皾璇曢噸鏂拌繛鎺�
-      };
+      }
 
       // 缁勪欢閿�姣佹椂鏂紑 WebSocket 杩炴帴
       this.$once('hook:beforeDestroy', () => {
-        ws.close();
-      });
+        ws.close()
+      })
     },
-    sendMessage(message) {
+    sendMessage (message) {
       if (this.ws.readyState === WebSocket.OPEN) {
-        this.ws.send(message);
+        this.ws.send(message)
       } else {
-        console.error('WebSocket 杩炴帴鏈墦寮�');
+        console.error('WebSocket 杩炴帴鏈墦寮�')
       }
     },
-    hiddenStudent() {
+    hiddenStudent () {
       this.showStudent = !this.showStudent
     },
-    changeJitsiWindowSize(width, height) {
+    changeJitsiWindowSize (width, height) {
       this.jitsiApi.resizeLargeVideo(width, height)
     },
-    getShowText() {
+    getShowText () {
       if (this.showStudent) {
         return '闅愯棌'
       } else {
         return '鏄剧ず'
       }
     },
-    getStatus(status) {
+    getStatus (status) {
       if (status === 1) {
         return '鍦ㄧ嚎'
       } else if (status === 0) {
         return '绂荤嚎'
       }
     },
-    handleTabChange(tab) {
+    handleTabChange (tab) {
       let status = parseInt(tab.name)
       this.showStudentList = this.studentList.filter(student => {
         return student.onlineStatus === status
       })
     },
-    getStudentList() {
+    getStudentList () {
       let params = {
         keyword: this.searchForm.keyword
       }
@@ -152,7 +170,7 @@
         })
       })
     },
-    getRoomInfo() {
+    getRoomInfo () {
       this.jitsiApi.getRoomsInfo().then(rooms => {
         rooms.rooms.forEach(room => {
           // 鎴块棿鐨刬d鏄竴涓瓙鍩熷悕锛屼笖@绗﹀墠鐨勪細璁悕绉版槸缁忚繃URL缂栫爜鐨�
@@ -182,7 +200,7 @@
       })
     }
   },
-  mounted() {
+  mounted () {
     this.height = window.innerHeight
     this.meetId = this.$route.query.meetId
     this.getStudentList()
@@ -215,14 +233,9 @@
           'camera',
           // 鑱婂ぉ
           'chat',
-          // 'closedcaptions',
           // 鍏变韩
           'desktop',
           'download',
-          // 'embedmeeting',
-          // 'etherpad',
-          // 'feedback',
-          // 'filmstrip',
           'fullscreen',
           'hangup',
           // 'help',
@@ -232,11 +245,7 @@
           'livestreaming',
           'microphone',
           'noisesuppression',
-          // 'participants-pane',
-          // 'profile',
-          // 'raisehand',
           'recording',
-          // 'security',
           'select-background',
           'settings',
           'shareaudio',
@@ -245,8 +254,18 @@
           'stats',
           'tileview',
           'toggle-camera',
-          // 'videoquality',
-          'whiteboard'
+          'whiteboard',
+
+          // 'closedcaptions',
+          // 'embedmeeting',
+          // 'etherpad',
+          // 'feedback',
+          // 'filmstrip',
+          'participants-pane',
+          // 'profile',
+          'raisehand',
+          // 'security',
+          'videoquality',
         ],
         whiteboard: {
           enabled: true
@@ -259,15 +278,17 @@
     this.jitsiApi.addListener('readyToClose', () => {
       window.close()
     })
+    // 鍒濆鍖�
+    this.initWebSocket()
     // 姣忎笁绉掓洿瀛﹀憳鍦ㄧ嚎鐘舵��
     this.intervalId = setInterval(() => {
       this.getRoomInfo()
+      // 鍙戦�佸績璺虫暟鎹�
+      this.ws.send('ping')
     }, 2500)
 
-    // 鍒濆鍖�
-    this.initWebSocket();
   },
-  beforeDestroy() {
+  beforeDestroy () {
     // 娓呴櫎瀹氭椂鍣紝閬垮厤鍐呭瓨娉勬紡
     if (this.intervalId) {
       clearInterval(this.intervalId)

--
Gitblit v1.8.0