import { role } from '@/config/role'; import styles from '@/page/Meeting/UserListWindow/index.module.scss' import ImageUrl from '@/utils/package/imageUrl'; import { EllipsisOutlined, ExclamationCircleFilled, SearchOutlined } from '@ant-design/icons'; import { Button, Input, Modal, Popover } from 'antd'; import Avatar from '@/components/Avatar'; import { useEffect, useState, useRef } from "react"; import { storage } from '@/utils'; import { GetRoomUser } from '@/api/Meeting'; import { setKeyOpenChildWindow } from '@/utils/package/public'; import EquipmentManagement from '@/components/EquipmentManagement'; const { confirm } = Modal; const UserListWindow: React.FC = () => { const [userSearchValue, setUserSearchValue] = useState('') const [user, setUser] = useState({}); const [roomUserList, setRoomUserList] = useState([]) const equipmentManagementRef = useRef(); const channel = new BroadcastChannel('meeting_channel'); const userInfo = JSON.parse(storage.getItem('user') as string) useEffect(() => { setUser(userInfo) getRoomUser() channel.onmessage = function (event) { const { type, roomUserList, showDriverList } = event.data; switch (type) { case 'roomUserList': setRoomUserList(roomUserList) break; case 'showDriverList': equipmentManagementRef.current.setData(showDriverList) break; } } }, []); // 获取房间用户 const getRoomUser = async (): Promise => { const data = JSON.parse(storage.getItem('stateInfo') as string) GetRoomUser(data.channelId).then(res => { if (res.code === 200) { res.data.forEach((item: any) => { item.isShow = true; item.isRoom = true; item.isAdmin = role.ID.includes(item.roleId) || item.isRoomManager }) setRoomUserList(res.data) } }) } return ( <>
成员列表 { window.electron.closeChildWindow('userListWindow') setKeyOpenChildWindow('userListWindow', false) }} />
} value={userSearchValue} onChange={(e) => { setUserSearchValue(e.target.value) const newRoomUserList = [...roomUserList] newRoomUserList.forEach(row => { if (e.target.value) { if (row.userName.indexOf(e.target.value) !== -1) { row.isShow = true; } else { row.isShow = false; } } else { row.isShow = true; } }); setRoomUserList(newRoomUserList) }} />
{roomUserList.map((item: any, index: number) => { return ( item.isShow && item.isRoom ?
{item.userName}{item.uid === user.uid ? '(我)' : ''} {role.ID.includes(item.roleId) || item.isRoomManager ? {role.ID.includes(item.roleId) ? '管理员' : '发言人'} : null}
{role.ID.includes(item.roleId) || item.isRoomManager ?
{ channel.postMessage({ type: 'userListWindowPostOpenMicr', userListWindowPostOpenMicr: { enableMicr: !item.enableMicr, uid: item.uid } }); }} title={item.enableMicr ? '静音' : '解除静音'} />
: null} {role.ID.includes(item.roleId) || item.isRoomManager ?
{ channel.postMessage({ type: 'userListWindowPostOpenCamera', userListWindowPostOpenCamera: { enableCamera: !item.enableCamera, uid: item.uid } }); }} title={item.enableCamera ? '关闭视频' : '开启视频'} />
: null} {item.uid !== user.uid && role.ID.includes(user.roleId) ?
}>
: null} {item.uid !== user.uid && !role.ID.includes(item.roleId) ?
{ if (item.isRoomManager) { channel.postMessage({ type: 'userListWindowDeleteRoomManager', userListWindowDeleteRoomManager: { uid: item.uid } }); } else { channel.postMessage({ type: 'userListWindowPostRoomManager', userListWindowPostRoomManager: { uid: item.uid } }); } }}> {!item.isRoomManager ? : }
: null}
: null ) } )}
{ channel.postMessage({ type: 'userListWindowAllPostOpenMicr' }); }}>全员静音
{ channel.postMessage({ type: 'userListWindowEquipmentManagement', userListWindowEquipmentManagement: { uid } }); }} setDriver={(data: any) => { channel.postMessage({ type: 'userListWindowSetEquipmentManagement', userListWindowSetEquipmentManagement: data }); }} /> ) } export default UserListWindow