瀏覽代碼

✨ feat(classroom): 优化人员管理功能

- 将"学生管理"重命名为"人员管理",更准确反映功能范围
- 添加权限控制,教师无法对自己执行静音和移出操作
- 引入useAuth钩子获取当前用户信息用于权限判断
yourname 5 月之前
父節點
當前提交
6e4199322a
共有 1 個文件被更改,包括 18 次插入12 次删除
  1. 18 12
      src/client/mobile/components/Classroom/TeacherStudentManagementButton.tsx

+ 18 - 12
src/client/mobile/components/Classroom/TeacherStudentManagementButton.tsx

@@ -22,8 +22,10 @@ import {
 } from '@/client/components/ui/dialog';
 import { IMToggleMuteButton } from './IMToggleMuteButton';
 import { RTCToggleMuteButton } from './RTCToggleMuteButton';
+import { useAuth } from '../../hooks/AuthProvider';
 
 export const TeacherStudentManagementButton: React.FC = () => {
+  const { user } = useAuth();
   const { students, kickStudent, onlineCount, pvCount } = useClassroomContext();
   const [showPanel, setShowPanel] = useState(false);
   const [confirmDialog, setConfirmDialog] = useState<{
@@ -79,7 +81,7 @@ export const TeacherStudentManagementButton: React.FC = () => {
         <Button
           type="button"
           className="p-2 rounded-full bg-blue-500 text-white relative"
-          title={`学生管理 (${students.length})`}
+          title={`人员管理 (${students.length})`}
           size="icon"
           variant="ghost"
         >
@@ -96,7 +98,7 @@ export const TeacherStudentManagementButton: React.FC = () => {
         <DialogHeader>
           <DialogTitle className="flex items-center">
             <UserGroupIcon className="w-4 h-4 mr-2 text-blue-500" />
-            学生管理 ({students.length})
+            人员管理 ({students.length})
           </DialogTitle>
         </DialogHeader>
         
@@ -123,16 +125,20 @@ export const TeacherStudentManagementButton: React.FC = () => {
                     <div key={student.id} className="flex items-center justify-between p-2 border rounded text-sm">
                       <span>{student.name}</span>
                       <div className="flex gap-1 flex-wrap">
-                       <RTCToggleMuteButton userId={student.id} userName={student.name} />
-                       <IMToggleMuteButton userId={student.id} userName={student.name} />
-                       <Button
-                         onClick={() => openConfirmDialog('kick', student.id, student.name)}
-                         variant="outline"
-                         size="sm"
-                         className="text-xs bg-red-100 text-red-700 hover:bg-red-200 border-red-300"
-                       >
-                         移出
-                       </Button>
+                       {Number(student.id) !== user?.id && (
+                        <>
+                          <RTCToggleMuteButton userId={student.id} userName={student.name} />
+                          <IMToggleMuteButton userId={student.id} userName={student.name} />
+                          <Button
+                            onClick={() => openConfirmDialog('kick', student.id, student.name)}
+                            variant="outline"
+                            size="sm"
+                            className="text-xs bg-red-100 text-red-700 hover:bg-red-200 border-red-300"
+                          >
+                            移出
+                          </Button>
+                       </>
+                      )}
                       </div>
                     </div>
                   ))}