This commit is contained in:
yj 2024-08-19 12:09:26 +08:00
parent d3a19c53b6
commit eee009ab9f
7 changed files with 133 additions and 23 deletions

Binary file not shown.

After

Width:  |  Height:  |  Size: 460 B

BIN
src/assets/icon45.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 395 B

View File

@ -139,7 +139,14 @@ const SharedFilesModel = forwardRef((props: any, ref: any) => {
DeleteRoomFile(selectedRowKeys).then(res => { DeleteRoomFile(selectedRowKeys).then(res => {
if (res.code === 200) { if (res.code === 200) {
message.success('删除成功!') message.success('删除成功!')
if (fileList.pageIndex === 1) {
getRoomFile() getRoomFile()
} else {
setFileList({
...fileList,
pageIndex: 1
})
}
} }
}) })
} else { } else {

View File

@ -28,8 +28,8 @@ const StupWizard = forwardRef((props: any, ref: any) => {
const [list, setList] = useState([ const [list, setList] = useState([
{ {
title: '通用', title: '通用',
icon: ImageUrl.icon39, icon: ImageUrl.icon45,
iconActive: ImageUrl.icon39Active, iconActive: ImageUrl.icon45Active,
active: true, active: true,
}, },
{ {

View File

@ -476,7 +476,6 @@
overflow-y: auto; overflow-y: auto;
padding: 20px; padding: 20px;
box-sizing: border-box; box-sizing: border-box;
border-bottom: 1px solid #23272E;
.meetingUserChatContentLeft { .meetingUserChatContentLeft {
display: flex; display: flex;
@ -542,6 +541,18 @@
} }
.meetingUserChatButton {
display: flex;
flex-shrink: 0;
flex-wrap: wrap;
padding: 10px 20px;
box-sizing: border-box;
>button {
margin: 4px 4px 0;
}
}
.meetingUserChatInput { .meetingUserChatInput {
flex-shrink: 0; flex-shrink: 0;
padding: 10px 20px; padding: 10px 20px;
@ -550,6 +561,7 @@
display: flex; display: flex;
flex-direction: column; flex-direction: column;
align-items: flex-end; align-items: flex-end;
border-top: 1px solid #23272E;
} }
} }
} }

View File

@ -122,6 +122,12 @@ const Meeting: React.FC = () => {
const [isShareUser, setIsShareUser] = useState<any>(null) const [isShareUser, setIsShareUser] = useState<any>(null)
const [currentLookUserStatus, setCurrentLookUserStatus] = useState<0 | 1 | 2 | 3 | 4>(1) const [currentLookUserStatus, setCurrentLookUserStatus] = useState<0 | 1 | 2 | 3 | 4>(1)
const [clickCurrentLookUserStatus, setClickCurrentLookUserStatus] = useState<boolean>(true) const [clickCurrentLookUserStatus, setClickCurrentLookUserStatus] = useState<boolean>(true)
const [commonlyChatList] = useState<any>([
'能听到我说话吗?',
'听得到',
'听不到',
'我要发言',
])
let userInfo = JSON.parse(storage.getItem('user') as string) let userInfo = JSON.parse(storage.getItem('user') as string)
const msgTips = '您不是管理员或发言人,无法开启此功能!' const msgTips = '您不是管理员或发言人,无法开启此功能!'
useEffect(() => { useEffect(() => {
@ -740,16 +746,17 @@ const Meeting: React.FC = () => {
} }
}; };
// 聊天发送 // 聊天发送
const sendMsg = (): void => { const sendMsg = (text?: string): void => {
if (textMsg) { let msg = text ? text : textMsg;
if (msg) {
onInvoke('sendChannelMsg', { onInvoke('sendChannelMsg', {
roomNum: state.channelId, roomNum: state.channelId,
msg: textMsg, msg: msg,
}) })
setChatList((newChatList: any) => [...newChatList, { setChatList((newChatList: any) => [...newChatList, {
uid: state.uid, uid: state.uid,
userName: user.userName, userName: user.userName,
message: textMsg, message: msg,
}]) }])
setTextMsg('') setTextMsg('')
} else { } else {
@ -980,13 +987,13 @@ const Meeting: React.FC = () => {
</div> </div>
</div> </div>
{meetingContentUser(item)} {meetingContentUser(item)}
{item.enableCamera ? null : meetingContentError(currentVideoId, item)} {item.enableCamera ? null : meetingContentError(currentVideoId, item, item.roleId === '1' || item.isRoomManager)}
{String(isShare) === item.screenShareId ? <div className={styles.meetingContentSwiperCardShare}> {String(isShare) === item.screenShareId ? <div className={styles.meetingContentSwiperCardShare}>
</div> : null} </div> : null}
{user.roleId === '1' ? <Popover placement="bottom" title={''} content={ {user.roleId === '1' ? <Popover placement="bottom" title={''} content={
<div className={styles.meetingContentSwiperCardPopover}> <div className={styles.meetingContentSwiperCardPopover}>
<Button {item.isRoomManager || user.roleId === '1' ? <Button
type="primary" type="primary"
className='m-ant-btn' className='m-ant-btn'
size={'small'} size={'small'}
@ -994,7 +1001,7 @@ const Meeting: React.FC = () => {
event.stopPropagation(); event.stopPropagation();
setAllUserLook(item) setAllUserLook(item)
}} }}
>Ta</Button> >Ta</Button> : null}
{item.uid !== user.uid ? <Button {item.uid !== user.uid ? <Button
type="primary" type="primary"
className='m-ant-btn' className='m-ant-btn'
@ -1024,8 +1031,8 @@ const Meeting: React.FC = () => {
}) })
} }
}} }}
>{item.isRoomManager ? '取消房间发言人' : '设为房间发言人'}</Button> : null} >{item.isRoomManager ? '取消房间发言人' : '设为发言人'}</Button> : null}
<Button {item.isRoomManager ? <Button
type="primary" type="primary"
className='m-ant-btn' className='m-ant-btn'
size={'small'} size={'small'}
@ -1033,8 +1040,8 @@ const Meeting: React.FC = () => {
event.stopPropagation(); event.stopPropagation();
postOpenMicr(!item.enableMicr, item.uid) postOpenMicr(!item.enableMicr, item.uid)
}} }}
>{item.enableMicr ? '静音' : '解除静音'}</Button> >{item.enableMicr ? '静音' : '解除静音'}</Button> : null}
<Button {item.isRoomManager ? <Button
type="primary" type="primary"
className='m-ant-btn' className='m-ant-btn'
size={'small'} size={'small'}
@ -1042,7 +1049,7 @@ const Meeting: React.FC = () => {
event.stopPropagation(); event.stopPropagation();
postOpenCamera(!item.enableCamera, item.uid) postOpenCamera(!item.enableCamera, item.uid)
}} }}
>{item.enableCamera ? '关闭视频' : '打开视频'}</Button> >{item.enableCamera ? '关闭视频' : '打开视频'}</Button> : null}
</div> </div>
}> }>
<div className={styles.meetingContentOperation}> <div className={styles.meetingContentOperation}>
@ -1075,7 +1082,7 @@ const Meeting: React.FC = () => {
</div>} </div>}
</div> </div>
{meetingContentUser(currentLookUserAccount, true)} {meetingContentUser(currentLookUserAccount, true)}
{currentLookUserAccount.enableCamera ? null : meetingContentError(currentVideoId, currentLookUserAccount, true)} {currentLookUserAccount.enableCamera ? null : meetingContentError(currentVideoId, currentLookUserAccount)}
</div> : null} </div> : null}
{currentLookUserStatus === 2 && currentLookUserAccount ? {currentLookUserStatus === 2 && currentLookUserAccount ?
<div className={`${styles.meetingContentSwiperCard} ${setMeetingContentSwiperCardClass()}`}> <div className={`${styles.meetingContentSwiperCard} ${setMeetingContentSwiperCardClass()}`}>
@ -1094,7 +1101,7 @@ const Meeting: React.FC = () => {
</div> </div>
</div> </div>
{meetingContentUser(currentLookUserAccount, true)} {meetingContentUser(currentLookUserAccount, true)}
{currentLookUserAccount.enableCamera ? null : meetingContentError(currentVideoId, currentLookUserAccount, true)} {currentLookUserAccount.enableCamera ? null : meetingContentError(currentVideoId, currentLookUserAccount)}
</div> : null} </div> : null}
{currentLookUserStatus === 4 && currentLookUserAccount ? {currentLookUserStatus === 4 && currentLookUserAccount ?
<div className={`${styles.meetingContentSwiperCard} ${setMeetingContentSwiperCardClass()}`}> <div className={`${styles.meetingContentSwiperCard} ${setMeetingContentSwiperCardClass()}`}>
@ -1194,7 +1201,7 @@ const Meeting: React.FC = () => {
}) })
} }
}} }}
>{item.isRoomManager ? '取消房间发言人' : '设为房间发言人'}</Button> >{item.isRoomManager ? '取消房间发言人' : '设为发言人'}</Button>
<Button <Button
type="primary" type="primary"
className='m-ant-btn' className='m-ant-btn'
@ -1239,19 +1246,99 @@ const Meeting: React.FC = () => {
<div <div
key={index} key={index}
className={`${item.uid !== state.uid ? styles.meetingUserChatContentLeft : styles.meetingUserChatContentRight} drag`}> className={`${item.uid !== state.uid ? styles.meetingUserChatContentLeft : styles.meetingUserChatContentRight} drag`}>
{user.roleId === '1' ? <Popover placement="bottom" title={''} content={
<div className={styles.meetingContentSwiperCardPopover}>
{item.isRoomManager || user.roleId === '1' ? <Button
type="primary"
className='m-ant-btn'
size={'small'}
onClick={(event) => {
event.stopPropagation();
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}
{item.isRoomManager ? <Button
type="primary"
className='m-ant-btn'
size={'small'}
onClick={(event) => {
event.stopPropagation();
postOpenMicr(!item.enableMicr, item.uid)
}}
>{item.enableMicr ? '静音' : '解除静音'}</Button> : null}
{item.isRoomManager ? <Button
type="primary"
className='m-ant-btn'
size={'small'}
onClick={(event) => {
event.stopPropagation();
postOpenCamera(!item.enableCamera, item.uid)
}}
>{item.enableCamera ? '关闭视频' : '打开视频'}</Button> : null}
</div>
}>
<div> <div>
<div><Avatar name={item.userName} /></div> <div><Avatar name={item.userName} /></div>
<span>{item.userName}</span> <span>{item.userName}</span>
</div> </div>
</Popover> : <div>
<div><Avatar name={item.userName} /></div>
<span>{item.userName}</span>
</div>}
<div>{item.message}</div> <div>{item.message}</div>
</div> </div>
)} )}
</div> </div>
<div className={`${styles.meetingUserChatButton} drag`}>
{
commonlyChatList.map((item: string, index: number) => {
return <Button
key={index}
type="primary"
className='m-ant-btn'
onClick={() => {
sendMsg(item)
}}
>{item}</Button>
})
}
</div>
<div className={`${styles.meetingUserChatInput} drag`}> <div className={`${styles.meetingUserChatInput} drag`}>
<Input.TextArea placeholder="请输入消息" value={textMsg} style={{ flexGrow: 1 }} onChange={(e) => { <Input.TextArea placeholder="请输入消息" value={textMsg} style={{ flexGrow: 1 }} onChange={(e) => {
setTextMsg(e.target.value) setTextMsg(e.target.value)
}}></Input.TextArea> }}></Input.TextArea>
<Button type="primary" className='m-ant-btn' style={{ flexShrink: 0, marginTop: '4px' }} onClick={sendMsg}></Button> <Button type="primary" className='m-ant-btn' style={{ flexShrink: 0, marginTop: '4px' }} onClick={() => sendMsg()}></Button>
</div> </div>
</div> </div>
} }
@ -1409,7 +1496,7 @@ const meetingContentError = (currentVideoId: any, item: any, bool?: boolean) =>
<> <>
<div <div
className={`${styles.meetingContentError} ${currentVideoId === item.uid ? styles.active : ''}`} className={`${styles.meetingContentError} ${currentVideoId === item.uid ? styles.active : ''}`}
style={{ left: !bool ? 'calc(50% + 2px)' : '', top: !bool ? 'calc(50% + 2px)' : '' }} style={{ left: bool ? 'calc(50% + 2px)' : '', top: bool ? 'calc(50% + 2px)' : '' }}
> >
<Avatar name={item.userName} /> <Avatar name={item.userName} />
</div> </div>

View File

@ -55,6 +55,8 @@ import icon42 from '@/assets/icon42.png'
import icon42Active from '@/assets/icon42-active.png' import icon42Active from '@/assets/icon42-active.png'
import icon43 from '@/assets/icon43.png' import icon43 from '@/assets/icon43.png'
import icon44 from '@/assets/icon44.png' import icon44 from '@/assets/icon44.png'
import icon45 from '@/assets/icon45.png'
import icon45Active from '@/assets/icon45-active.png'
export default { export default {
error, error,
icon, icon,
@ -113,4 +115,6 @@ export default {
icon42Active, icon42Active,
icon43, icon43,
icon44, icon44,
icon45,
icon45Active,
} }