-
+ {isCreateUser !== 'batch' ?
账号:
{
});
}}
/>
-
+
: null}
角色:
- {isCreateUser ?
+ {isCreateUser === 'add' ?
密码:
{
}}
/>
: null}
-
+ {isCreateUser !== 'batch' ?
用户名称:
{
});
}}
/>
+
: null}
+
+ 届:
+ {
+ const regex = /^[0-9]*$/;
+ if (regex.test(e.target.value)) {
+ setAddUserFrom({
+ ...addUserFrom,
+ year: e.target.value
+ });
+ }
+ }}
+ />
+
+
+ 学科:
+
{
}}>
+ }}>{isCreateUser === 'add' ? '添加' : '修改'}
@@ -442,7 +543,6 @@ const User: React.FC = () => {
DeleteUser(selectedRowKeys).then(res => {
if (res.code === 200) {
setDeleteUserPawModal(false)
- setSelectedRowKeys([])
message.success('删除成功!')
getUserList()
}
diff --git a/src/page/Meeting/index.module.scss b/src/page/Meeting/index.module.scss
index a05e87b..262c256 100644
--- a/src/page/Meeting/index.module.scss
+++ b/src/page/Meeting/index.module.scss
@@ -811,7 +811,7 @@
}
}
- >div:nth-child(1) {
+ .meetingContentFooterPopoverDel {
background-color: #FF5219;
&:hover {
@@ -823,7 +823,7 @@
}
}
- >div:nth-child(2) {
+ .meetingContentFooterPopoverDefault {
background-color: #31353A;
&:hover {
@@ -835,7 +835,7 @@
}
}
- >div:nth-child(3) {
+ .meetingContentFooterPopoverCancel {
background-color: #101418;
&:hover {
diff --git a/src/page/Meeting/index.tsx b/src/page/Meeting/index.tsx
index 622275d..0249ada 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('申请太频繁了,请稍后重试!');
}
@@ -2177,11 +2228,11 @@ const Meeting: React.FC = () => {
okText="结束"
cancelText="取消"
>
- 全员结束会议
+ 全员结束会议
: null}
- leaveChannel()}>仅自己离开
- { setOpen(false) }}>取消
+ leaveChannel()}>仅自己离开
+ { setOpen(false) }}>取消
}
title=""
@@ -2200,12 +2251,12 @@ const Meeting: React.FC = () => {