From 6fb7020836f53fd72714e819b292a9cd48d262dd Mon Sep 17 00:00:00 2001 From: yj <1336058017@qq.com> Date: Wed, 16 Oct 2024 14:53:14 +0800 Subject: [PATCH] =?UTF-8?q?=E8=AE=BE=E5=A4=87=E7=AE=A1=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/components/EquipmentManagement/index.tsx | 38 +++++++++++++------- src/page/Meeting/ChatBigWindow/index.tsx | 30 +++++++++++----- src/page/Meeting/ShareScreenWindow/index.tsx | 4 +-- src/page/Meeting/UserListWindow/index.tsx | 32 +++++++++++------ src/page/Meeting/index.tsx | 30 +++++++++------- 5 files changed, 87 insertions(+), 47 deletions(-) diff --git a/src/components/EquipmentManagement/index.tsx b/src/components/EquipmentManagement/index.tsx index 53c3c46..af17d93 100644 --- a/src/components/EquipmentManagement/index.tsx +++ b/src/components/EquipmentManagement/index.tsx @@ -3,14 +3,21 @@ import { getKeyOpenChildWindow } from '@/utils/package/public'; import { onInvoke } from '@/utils/package/signalr'; import { Button, Modal, Select, Slider, message } from 'antd'; import { useState, useImperativeHandle, forwardRef } from "react"; -const EquipmentManagement = forwardRef((_props: any, ref: any) => { +const EquipmentManagement = forwardRef((props: any, ref: any) => { useImperativeHandle(ref, () => ({ changeModal: async (uid: string, userName: string) => { setCallerUid(uid) setDeviceInfo({}) - await onInvoke('getDrivers', { - uid - }) + let isOpen = await getKeyOpenChildWindow('shareScreenWindow') + if (isOpen) { + if (props.getDriver) { + props.getDriver(uid) + } + } else { + await onInvoke('getDrivers', { + uid + }) + } setUserName(userName) setEquipmentManagementModal(true) }, @@ -23,11 +30,6 @@ const EquipmentManagement = forwardRef((_props: any, ref: any) => { const [deviceInfo, setDeviceInfo] = useState({}) const [userName, setUserName] = useState({}) const handleWindowsChange = async (): Promise => { - const isOpen = await getKeyOpenChildWindow('shareScreenWindow') - if (isOpen) { - window.electron.mainWindowHide() - window.electron.setViewStatus('hide') - } setEquipmentManagementModal(false) } return ( @@ -92,10 +94,20 @@ const EquipmentManagement = forwardRef((_props: any, ref: any) => {
diff --git a/src/page/Meeting/ChatBigWindow/index.tsx b/src/page/Meeting/ChatBigWindow/index.tsx index c33f626..7dd53b2 100644 --- a/src/page/Meeting/ChatBigWindow/index.tsx +++ b/src/page/Meeting/ChatBigWindow/index.tsx @@ -1,6 +1,6 @@ import styles from '@/page/Meeting/ChatBigWindow/index.module.scss' import ImageUrl from '@/utils/package/imageUrl'; -import { useEffect, useState } from "react"; +import { useEffect, useState, useRef } from "react"; import { storage } from '@/utils'; import { setKeyOpenChildWindow } from '@/utils/package/public'; import { Button, Input, Modal, Popover } from 'antd'; @@ -9,6 +9,7 @@ import { GetRoomUserItem } from '@/api/Meeting'; import Avatar from '@/components/Avatar'; import dayjs from 'dayjs'; import { ExclamationCircleFilled } from '@ant-design/icons'; +import EquipmentManagement from '@/components/EquipmentManagement'; const { confirm } = Modal; const ChatBigWindow: React.FC = () => { const [inputValue, setInputValue] = useState('') @@ -21,13 +22,14 @@ const ChatBigWindow: React.FC = () => { '听不到', '我要发言', ]) + const equipmentManagementRef = useRef(); const userInfo = JSON.parse(storage.getItem('user') as string) const stateInfo = JSON.parse(storage.getItem('stateInfo') as string) const channel = new BroadcastChannel('meeting_channel'); useEffect(() => { setUser(userInfo) channel.onmessage = function (event) { - const { type, chatList } = event.data; + const { type, chatList, showDriverList } = event.data; switch (type) { case 'chatList': setChatLists(chatList) @@ -38,6 +40,9 @@ const ChatBigWindow: React.FC = () => { } }, 100) break; + case 'showDriverList': + equipmentManagementRef.current.setData(showDriverList) + break; } } }, []); @@ -160,13 +165,7 @@ const ChatBigWindow: React.FC = () => { className='m-ant-btn' size={'small'} onClick={() => { - channel.postMessage({ - type: 'chatBigWindowEquipmentManagement', - chatBigWindowEquipmentManagement: { - uid: roomUserItem.uid, - userName: roomUserItem.userName - } - }); + equipmentManagementRef.current.changeModal(item.uid, item.userName) }} >设备管理 : null} {roomUserItem.uid !== user.uid ?
+ { + channel.postMessage({ + type: 'userListWindowEquipmentManagement', + userListWindowEquipmentManagement: { + uid + } + }); + }} setDriver={(data: any) => { + channel.postMessage({ + type: 'userListWindowSetEquipmentManagement', + userListWindowSetEquipmentManagement: data + }); + }} /> ) } diff --git a/src/page/Meeting/ShareScreenWindow/index.tsx b/src/page/Meeting/ShareScreenWindow/index.tsx index c4a08d1..8e8aa13 100644 --- a/src/page/Meeting/ShareScreenWindow/index.tsx +++ b/src/page/Meeting/ShareScreenWindow/index.tsx @@ -147,7 +147,7 @@ const ShareScreenWindow: React.FC = () => { if (!chatBigWindow) { window.electron.createChildWindow({ url: location.origin + `/#/chatBigWindow`, - width: 440, + width: 540, height: 640, key: 'chatBigWindow', }) @@ -159,7 +159,7 @@ const ShareScreenWindow: React.FC = () => { if (!userListWindow) { window.electron.createChildWindow({ url: location.origin + `/#/userListWindow`, - width: 340, + width: 440, height: 540, key: 'userListWindow', }) diff --git a/src/page/Meeting/UserListWindow/index.tsx b/src/page/Meeting/UserListWindow/index.tsx index 8bcd214..bb7f958 100644 --- a/src/page/Meeting/UserListWindow/index.tsx +++ b/src/page/Meeting/UserListWindow/index.tsx @@ -4,27 +4,32 @@ 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 } from "react"; +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 } = event.data; + const { type, roomUserList, showDriverList } = event.data; switch (type) { case 'roomUserList': setRoomUserList(roomUserList) break; + case 'showDriverList': + equipmentManagementRef.current.setData(showDriverList) + break; } } }, []); @@ -143,15 +148,7 @@ const UserListWindow: React.FC = () => { style={{ width: '100%' }} size={'small'} onClick={() => { - channel.postMessage({ - type: 'shareScreenWindowEquipmentManagement', - shareScreenWindowEquipmentManagement: { - uid: item.uid, - userName: item.userName, - } - }); - window.electron.closeChildWindow('userListWindow') - setKeyOpenChildWindow('userListWindow', false) + equipmentManagementRef.current.changeModal(item.uid, item.userName) }} >设备管理