From e40ff8c931fe2726c000d1b54f5ab20542c6a93b Mon Sep 17 00:00:00 2001 From: yj <1336058017@qq.com> Date: Tue, 10 Sep 2024 10:11:54 +0800 Subject: [PATCH] =?UTF-8?q?=E8=AE=BE=E5=A4=87=E7=AE=A1=E7=90=86=E5=88=9D?= =?UTF-8?q?=E5=A7=8B=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../EquipmentManagement/index.module.scss | 19 +++++++ src/components/EquipmentManagement/index.tsx | 52 +++++++++++++++++++ src/page/Meeting/index.tsx | 21 ++++++-- src/utils/package/signalr.ts | 15 ++++++ 4 files changed, 104 insertions(+), 3 deletions(-) create mode 100644 src/components/EquipmentManagement/index.module.scss create mode 100644 src/components/EquipmentManagement/index.tsx diff --git a/src/components/EquipmentManagement/index.module.scss b/src/components/EquipmentManagement/index.module.scss new file mode 100644 index 0000000..81c70fe --- /dev/null +++ b/src/components/EquipmentManagement/index.module.scss @@ -0,0 +1,19 @@ +.equipmentManagement { + >div:nth-child(1) { + >div { + display: flex; + align-items: center; + + >span { + color: #EEEEEE; + font-size: 16px; + margin-right: 10px; + } + } + } + + >div:nth-child(2) { + display: flex; + justify-content: center; + } +} \ No newline at end of file diff --git a/src/components/EquipmentManagement/index.tsx b/src/components/EquipmentManagement/index.tsx new file mode 100644 index 0000000..645ae7a --- /dev/null +++ b/src/components/EquipmentManagement/index.tsx @@ -0,0 +1,52 @@ +import styles from '@/components/EquipmentManagement/index.module.scss' +import { Button, Modal } from 'antd'; +import { useState, useImperativeHandle, forwardRef } from "react"; +// import { agora } from '@/utils/package/agora'; +const EquipmentManagement = forwardRef((_props: any, ref: any) => { + useImperativeHandle(ref, () => ({ + changeModal: () => { + setEquipmentManagementModal(true) + } + })) + const [equipmentManagementModal, setEquipmentManagementModal] = useState(false) + return ( + <> + { + setEquipmentManagementModal(false) + }}> +
+
+
+ 摄像头 + +
+
+ 麦克风 + +
+
+ 扬声器 + +
+
+
+ + +
+
+
+ + ) +}) + +export default EquipmentManagement \ No newline at end of file diff --git a/src/page/Meeting/index.tsx b/src/page/Meeting/index.tsx index 5afc3c9..f7eb862 100644 --- a/src/page/Meeting/index.tsx +++ b/src/page/Meeting/index.tsx @@ -18,6 +18,7 @@ import { VideoSourceType, VideoStreamType } from 'agora-electron-sdk'; import Avatar from '@/components/Avatar'; import SharedFilesModel from '@/components/SharedFilesModel'; import StupWizard from '@/components/StupWizard'; +import EquipmentManagement from '@/components/EquipmentManagement'; import UserVideo from '@/components/UserVideo'; const { confirm } = Modal; const { exec } = require('child_process'); @@ -30,6 +31,7 @@ const Meeting: React.FC = () => { const sharedFilesModelRef = useRef(); const invitingPersonnelRef = useRef(); const stupWizardRef = useRef(); + const equipmentManagementRef = useRef(); const [isClicked, setIsClicked] = useState(false); const [statusList, setStatusList] = useState({ userList: false, @@ -453,6 +455,14 @@ const Meeting: React.FC = () => { } } break; + // 设备列表 + case 'DriverList': + console.log(item); + break; + // 设置设备 + case 'SetDriver': + console.log(item); + break; } }) return () => { @@ -1119,6 +1129,10 @@ const Meeting: React.FC = () => { } }, 0); } + // 设备管理 + const equipmentManagement = (uid: string, userName: string): void => { + equipmentManagementRef.current.changeModal() + } // 开关麦克风 const postOpenMicr = async (enableMicr: boolean, uid: string, isAll: boolean = false): Promise => { await getUserRoomInfo().then(async (res) => { @@ -1501,7 +1515,7 @@ const Meeting: React.FC = () => { className='m-ant-btn' size={'small'} onClick={() => { - + equipmentManagement(item.uid, item.userName) }} >设备管理 : null} @@ -1683,7 +1697,7 @@ const Meeting: React.FC = () => { style={{ marginTop: '10px', width: '100%' }} size={'small'} onClick={() => { - + equipmentManagement(item.uid, item.userName) }} >设备管理 @@ -1823,7 +1837,7 @@ const Meeting: React.FC = () => { className='m-ant-btn' size={'small'} onClick={() => { - + equipmentManagement(roomUserItem.uid, roomUserItem.userName) }} >设备管理 : null} :
用户不在房间内
@@ -2095,6 +2109,7 @@ const Meeting: React.FC = () => { + ) } diff --git a/src/utils/package/signalr.ts b/src/utils/package/signalr.ts index a32b692..95e99d2 100644 --- a/src/utils/package/signalr.ts +++ b/src/utils/package/signalr.ts @@ -160,6 +160,19 @@ export const onSignalr = (callBack: Function) => { watchUids }) }); + // 设备列表 + connection.on("DriverList", () => { + callBack({ + key: 'DriverList' + }) + }); + // 设置设备 + connection.on("SetDriver", (driver:string) => { + callBack({ + key: 'SetDriver', + driver + }) + }); } } export const offSignalr = () => { @@ -178,6 +191,8 @@ export const offSignalr = () => { connection.off('ManagerRefresh'); connection.off('ApplyToSpeak'); connection.off('Watch'); + connection.off('DriverList'); + connection.off('SetDriver'); } } export const onInvoke = async (str: string, data: any) => {