diff --git a/src/page/Meeting/index.tsx b/src/page/Meeting/index.tsx index 622275d..b064c9b 100644 --- a/src/page/Meeting/index.tsx +++ b/src/page/Meeting/index.tsx @@ -160,6 +160,7 @@ const Meeting: React.FC = () => { const [noViewChatList, setNoViewChatList] = useState(0) const [currentLookUserAccount, setCurrentLookUserAccount] = useState('') const [recorder, setRecorder] = useState('') + const [_currentRequestSpeakType, setCurrentRequestSpeakType] = useState<'video' | 'audio' | ''>('') const [_mediaStream, setMediaStream] = useState('') const [isShare, setIsShare] = useState(null) const [isSharePopConfirm, setIsSharePopConfirm] = useState(false) @@ -413,13 +414,23 @@ const Meeting: React.FC = () => { } } else { if (item.user.uid === userInfo.uid) { - if (!item.user.isRoomManage) { + if (!item.user.isRoomManager) { await agora.allLeaveChannelEx() } message.success(`管理员${item.user.isRoomManager ? '设置' : '取消'}您为发言人`) await agora.updateChannelMediaOptions(item.user.isRoomManager) - await postOpenMicrApi(item.user.isRoomManager, userInfo.uid, false) - await postOpenCameraApi(item.user.isRoomManager, userInfo.uid) + setCurrentRequestSpeakType(res => { + if (res === 'video') { + postOpenCameraApi(item.user.isRoomManager, userInfo.uid) + } else if (res === 'audio') { + postOpenMicrApi(item.user.isRoomManager, userInfo.uid, false) + } else { + postOpenMicrApi(item.user.isRoomManager, userInfo.uid, false) + postOpenCameraApi(item.user.isRoomManager, userInfo.uid) + } + return '' + }) + await stopScreenCapture() } else { message.success(`管理员${item.user.isRoomManager ? '设置' : '取消'}${item.user.userName}为发言人`) @@ -602,6 +613,7 @@ const Meeting: React.FC = () => { if (isClicked) { timer = setTimeout(() => { setIsClicked(false); + setCurrentRequestSpeakType('') }, 10000); } @@ -999,6 +1011,25 @@ const Meeting: React.FC = () => { } // 操作按钮 const changeStatusList = async (row: any, itemIndex: number, rowIndex: number): Promise => { + function requestSpeak() { + confirm({ + title: '提示', + icon: , + content: `该操作需向管理员申请权限`, + centered: true, + okText: '申请', + cancelText: '取消', + async onOk() { + GetApplySpeak(state.channelId).then(res => { + if (res.code === 200) { + message.success('申请发言成功') + } + }) + }, + onCancel() { + } + }) + } const footerListTemplate = [...footerList] setFooterListIndex({ itemIndex, @@ -1046,13 +1077,37 @@ const Meeting: React.FC = () => { await postOpenMicr(false, user.uid) break; case '解除静音': - await postOpenMicr(true, user.uid) + await getUserRoomInfo().then(async (res) => { + if (res) { + await postOpenMicr(true, user.uid) + } else { + if (!isClicked) { + setCurrentRequestSpeakType('audio') + setIsClicked(true); + requestSpeak() + } else { + message.error('申请太频繁了,请稍后重试!'); + } + } + }) break; case '关闭视频': await postOpenCamera(false, user.uid) break; case '开启视频': - await postOpenCamera(true, user.uid) + await getUserRoomInfo().then(async (res) => { + if (res) { + await postOpenCamera(true, user.uid) + } else { + if (!isClicked) { + setCurrentRequestSpeakType('video') + setIsClicked(true); + requestSpeak() + } else { + message.error('申请太频繁了,请稍后重试!'); + } + } + }) break; case '设置': stupWizardRef.current.changeModal() @@ -1141,11 +1196,7 @@ const Meeting: React.FC = () => { case '申请发言': if (!isClicked) { setIsClicked(true); - GetApplySpeak(state.channelId).then(res => { - if (res.code === 200) { - message.success('申请发言成功') - } - }) + requestSpeak() } else { message.error('申请太频繁了,请稍后重试!'); } @@ -2200,12 +2251,12 @@ const Meeting: React.FC = () => { case '申请发言': - if (!role.ID.includes(user.roleId)) { - return
changeStatusList(row, itemIndex, rowIndex)} key={rowIndex}> - - {row.title} -
- } + // if (!role.ID.includes(user.roleId)) { + // return
changeStatusList(row, itemIndex, rowIndex)} key={rowIndex}> + // + // {row.title} + //
+ // } return null case '结束发言': if (!role.ID.includes(user.roleId)) {