diff --git a/components.d.ts b/components.d.ts
index 5b09001..fca6a51 100644
--- a/components.d.ts
+++ b/components.d.ts
@@ -8,6 +8,7 @@ export {}
declare module 'vue' {
export interface GlobalComponents {
AppAvatar: typeof import('./src/components/common/AppAvatar.vue')['default']
+ AppDrawer: typeof import('./src/components/common/AppDrawer.vue')['default']
AppEmpty: typeof import('./src/components/common/AppEmpty.vue')['default']
AppFooter: typeof import('./src/components/AppFooter.vue')['default']
AppLoading: typeof import('./src/components/common/AppLoading.vue')['default']
@@ -15,6 +16,7 @@ declare module 'vue' {
AppNavBar: typeof import('./src/components/common/AppNavBar.vue')['default']
AppTabBar: typeof import('./src/components/common/AppTabBar.vue')['default']
CallWindow: typeof import('./src/components/call/CallWindow.vue')['default']
+ GlobalCallProvider: typeof import('./src/components/call/GlobalCallProvider.vue')['default']
GroupCallBanner: typeof import('./src/components/call/GroupCallBanner.vue')['default']
GroupCallIncoming: typeof import('./src/components/call/GroupCallIncoming.vue')['default']
GroupCallModal: typeof import('./src/components/call/GroupCallModal.vue')['default']
@@ -28,6 +30,7 @@ declare module 'vue' {
MomentCommentInput: typeof import('./src/components/moment/MomentCommentInput.vue')['default']
MomentCommentList: typeof import('./src/components/moment/MomentCommentList.vue')['default']
MomentNotificationPanel: typeof import('./src/components/moment/MomentNotificationPanel.vue')['default']
+ PlusMenu: typeof import('./src/components/common/PlusMenu.vue')['default']
SelectContactsModal: typeof import('./src/components/chat/SelectContactsModal.vue')['default']
UserInfoCard: typeof import('./src/components/common/UserInfoCard.vue')['default']
UserMomentsModal: typeof import('./src/components/moment/UserMomentsModal.vue')['default']
diff --git a/src/App.vue b/src/App.vue
index 202ea71..3417c02 100644
--- a/src/App.vue
+++ b/src/App.vue
@@ -3,11 +3,13 @@ import { onLaunch, onShow } from '@dcloudio/uni-app'
import { useTheme } from '@/composables/useTheme'
import { useAuthStore, useConversationStore } from '@/stores'
import { wsManager } from '@/api/websocket'
+import { useGroupWebRTC } from '@/composables/useGroupWebRTC'
import type { ChatMessage } from '@/types/api'
const { initTheme } = useTheme()
const authStore = useAuthStore()
const conversationStore = useConversationStore()
+const groupWebRTC = useGroupWebRTC()
// 全局消息处理器
function handleGlobalMessage(message: ChatMessage) {
@@ -28,6 +30,8 @@ async function initWebSocket() {
await wsManager.connect(userId)
// 注册全局消息处理器
wsManager.onMessage(handleGlobalMessage)
+ // 初始化群通话信令监听器
+ groupWebRTC.initListener()
console.log('✅ WebSocket 全局初始化成功')
} catch (error) {
console.error('WebSocket 初始化失败:', error)
diff --git a/src/components/call/CallWindow.vue b/src/components/call/CallWindow.vue
index dd5388f..6711f0d 100644
--- a/src/components/call/CallWindow.vue
+++ b/src/components/call/CallWindow.vue
@@ -1,27 +1,36 @@
-
-
-
- {{ formatDuration(call.duration) }}
-
+
+
+
+
+ {{ formatDuration(call.duration) }}
-
-
@@ -86,15 +86,32 @@ function handleJoin() {
-
diff --git a/src/components/call/GroupCallIncoming.vue b/src/components/call/GroupCallIncoming.vue
index d1c76a4..404732c 100644
--- a/src/components/call/GroupCallIncoming.vue
+++ b/src/components/call/GroupCallIncoming.vue
@@ -1,30 +1,33 @@
-
+
+
-
-
+
+
-
+
+
@@ -44,7 +47,11 @@
-
+
+
拒绝
@@ -52,11 +59,10 @@
-
+
+
接听
@@ -84,12 +90,9 @@ function handleReject() {
-
diff --git a/src/components/call/GroupCallModal.vue b/src/components/call/GroupCallModal.vue
index 4e413c1..a965586 100644
--- a/src/components/call/GroupCallModal.vue
+++ b/src/components/call/GroupCallModal.vue
@@ -1,47 +1,46 @@
-
-
+
+
+
+
+
+
-
+
-
-
- {{ isAllSelected ? '取消全选' : '全选' }}
-
+
+
+
+
-
+
未找到成员
@@ -52,21 +51,21 @@
class="member-item"
@click="toggleSelection(member.id || member.user_id || '')"
>
-
-
+
-
+
-
-
+
-
diff --git a/src/components/call/GroupCallWindow.vue b/src/components/call/GroupCallWindow.vue
index 450033b..1f737a6 100644
--- a/src/components/call/GroupCallWindow.vue
+++ b/src/components/call/GroupCallWindow.vue
@@ -4,153 +4,154 @@
class="call-window"
:class="{ minimized: callState.minimized }"
>
-
-