This commit is contained in:
yj 2024-08-19 15:18:36 +08:00
parent c7edf8986b
commit 81df5af9fc
2 changed files with 85 additions and 64 deletions

View File

@ -39,6 +39,12 @@ export const GetRoomUser = (roomNum: string) =>
method: 'get' method: 'get'
}) })
export const GetRoomUserItem = (roomNum: string, uid: string) =>
request({
url: `/room/user/${uid}?roomNum=${roomNum}`,
method: 'get'
})
export const PostMuteAll = (data: any) => { export const PostMuteAll = (data: any) => {
return request({ return request({

View File

@ -8,7 +8,7 @@ import { SearchOutlined, EllipsisOutlined } from '@ant-design/icons';
import { useLocation, useNavigate } from 'react-router-dom'; import { useLocation, useNavigate } from 'react-router-dom';
import { thumbImageBufferToBase64 } from '@/utils/package/base64' import { thumbImageBufferToBase64 } from '@/utils/package/base64'
import { storage } from '@/utils'; import { storage } from '@/utils';
import { GetRoomUser, PostOpenMicr, PostOpenCamera, GetLeaveAll, PostRoomManager, DeleteRoomManager, GetRoomKickout, GetShowUser, PostShowUser, GetJoin, GetLeave, PostMuteAll } from '@/api/Meeting'; import { GetRoomUser, PostOpenMicr, PostOpenCamera, GetLeaveAll, PostRoomManager, DeleteRoomManager, GetRoomKickout, GetShowUser, PostShowUser, GetJoin, GetLeave, PostMuteAll, GetRoomUserItem } from '@/api/Meeting';
import ImageUrl from '@/utils/package/ImageUrl' import ImageUrl from '@/utils/package/ImageUrl'
import agora from '@/utils/package/agora' import agora from '@/utils/package/agora'
import { onInvoke, onSignalr, offSignalr, onStart } from '@/utils/package/signalr'; import { onInvoke, onSignalr, offSignalr, onStart } from '@/utils/package/signalr';
@ -128,6 +128,7 @@ const Meeting: React.FC = () => {
'听不到', '听不到',
'我要发言', '我要发言',
]) ])
const [roomUserItem, setRoomUserItem] = useState<any>(null)
let userInfo = JSON.parse(storage.getItem('user') as string) let userInfo = JSON.parse(storage.getItem('user') as string)
const msgTips = '您不是管理员或发言人,无法开启此功能!' const msgTips = '您不是管理员或发言人,无法开启此功能!'
useEffect(() => { useEffect(() => {
@ -758,7 +759,7 @@ const Meeting: React.FC = () => {
msg: msg, msg: msg,
}) })
setChatList((newChatList: any) => [...newChatList, { setChatList((newChatList: any) => [...newChatList, {
uid: state.uid, uid: user.uid,
userName: user.userName, userName: user.userName,
message: msg, message: msg,
}]) }])
@ -1251,69 +1252,83 @@ const Meeting: React.FC = () => {
{chatList.map((item: any, index: number) => {chatList.map((item: any, index: number) =>
<div <div
key={index} key={index}
className={`${item.uid !== state.uid ? styles.meetingUserChatContentLeft : styles.meetingUserChatContentRight} drag`}> className={`${item.uid !== user.uid ? styles.meetingUserChatContentLeft : styles.meetingUserChatContentRight} drag`}>
{user.roleId === '1' ? <Popover
{user.roleId === '1' ? <Popover placement="bottom" title={''} content={ placement="bottom"
<div className={styles.meetingContentSwiperCardPopover}> title={''}
{item.isRoomManager || item.roleId === '1' ? <Button onOpenChange={(e: boolean) => {
type="primary" if (e) {
className='m-ant-btn' GetRoomUserItem(state.channelId, item.uid).then((res: any) => {
size={'small'} if (res.code === 200) {
onClick={(event) => { console.log(res);
event.stopPropagation(); setRoomUserItem(res.data)
setAllUserLook(item)
}}
>Ta</Button> : null}
{item.uid !== user.uid ? <Button
type="primary"
className='m-ant-btn'
size={'small'}
onClick={(event) => {
event.stopPropagation();
GetRoomKickout(state.channelId, item.uid)
}}
></Button> : null}
{item.uid !== user.uid ? <Button
type="primary"
className='m-ant-btn'
size={'small'}
onClick={(event) => {
event.stopPropagation();
if (item.isRoomManager) {
DeleteRoomManager({
roomId: state.roomId,
roomNum: state.channelId,
userId: item.uid
})
} else {
PostRoomManager({
roomId: state.roomId,
roomNum: state.channelId,
userId: item.uid
})
} }
}} })
>{item.isRoomManager ? '取消房间发言人' : '设为发言人'}</Button> : null} } else {
{item.isRoomManager ? <Button setRoomUserItem(null)
type="primary" }
className='m-ant-btn' }}
size={'small'} content={
onClick={(event) => { roomUserItem ? <div className={styles.meetingContentSwiperCardPopover}>
event.stopPropagation(); {roomUserItem.isRoomManager || roomUserItem.roleId === '1' ? <Button
postOpenMicr(!item.enableMicr, item.uid) type="primary"
}} className='m-ant-btn'
>{item.enableMicr ? '静音' : '解除静音'}</Button> : null} size={'small'}
{item.isRoomManager ? <Button onClick={(event) => {
type="primary" event.stopPropagation();
className='m-ant-btn' setAllUserLook(roomUserItem)
size={'small'} }}
onClick={(event) => { >Ta</Button> : null}
event.stopPropagation(); {roomUserItem.uid !== user.uid ? <Button
postOpenCamera(!item.enableCamera, item.uid) type="primary"
}} className='m-ant-btn'
>{item.enableCamera ? '关闭视频' : '打开视频'}</Button> : null} size={'small'}
</div> onClick={(event) => {
}> event.stopPropagation();
GetRoomKickout(state.channelId, roomUserItem.uid)
}}
></Button> : null}
{roomUserItem.uid !== user.uid ? <Button
type="primary"
className='m-ant-btn'
size={'small'}
onClick={(event) => {
event.stopPropagation();
if (roomUserItem.isRoomManager) {
DeleteRoomManager({
roomId: state.roomId,
roomNum: state.channelId,
userId: roomUserItem.uid
})
} else {
PostRoomManager({
roomId: state.roomId,
roomNum: state.channelId,
userId: roomUserItem.uid
})
}
}}
>{roomUserItem.isRoomManager ? '取消房间发言人' : '设为发言人'}</Button> : null}
{roomUserItem.isRoomManager ? <Button
type="primary"
className='m-ant-btn'
size={'small'}
onClick={(event) => {
event.stopPropagation();
postOpenMicr(!roomUserItem.enableMicr, roomUserItem.uid)
}}
>{roomUserItem.enableMicr ? '静音' : '解除静音'}</Button> : null}
{roomUserItem.isRoomManager ? <Button
type="primary"
className='m-ant-btn'
size={'small'}
onClick={(event) => {
event.stopPropagation();
postOpenCamera(!roomUserItem.enableCamera, roomUserItem.uid)
}}
>{roomUserItem.enableCamera ? '关闭视频' : '打开视频'}</Button> : null}
</div> : <div style={{ color: 'white' }}></div>
}>
<div> <div>
<div><Avatar name={item.userName} /></div> <div><Avatar name={item.userName} /></div>
<span>{item.userName}</span> <span>{item.userName}</span>