diff --git a/packages/frontend/src/components/LayoutRenderer.vue b/packages/frontend/src/components/LayoutRenderer.vue index cdb6376..3600482 100644 --- a/packages/frontend/src/components/LayoutRenderer.vue +++ b/packages/frontend/src/components/LayoutRenderer.vue @@ -155,11 +155,11 @@ const componentProps = computed(() => { // WorkspaceConnectionList 需要转发 connect-request 等事件 return { class: 'pane-content', - // 绑定内部处理器以转发事件 (修正为 kebab-case) + // 绑定内部处理器以转发事件 (除了 request-add-connection) onConnectRequest: (id: number) => emit('connect-request', id), onOpenNewSession: (id: number) => emit('open-new-session', id), - onRequestAddConnection: () => emit('request-add-connection'), - onRequestEditConnection: (conn: any) => emit('request-edit-connection', conn), // 使用 any 避免类型问题 + // onRequestAddConnection: () => { ... }, // 移除,将在模板中处理 + onRequestEditConnection: (conn: any) => emit('request-edit-connection', conn), }; case 'commandHistory': case 'quickCommands': @@ -234,7 +234,10 @@ const handlePaneResize = (eventData: { panes: Array<{ size: number; [key: string @save-editor-tab="emit('saveEditorTab', $event)" @connect-request="emit('connect-request', $event)" @open-new-session="emit('open-new-session', $event)" - @request-add-connection="emit('request-add-connection')" + @request-add-connection="() => { // 添加日志 + console.log(`[LayoutRenderer ${props.layoutNode.id}] Received recursive 'request-add-connection', emitting upwards.`); + emit('request-add-connection'); + }" @request-edit-connection="emit('request-edit-connection', $event)" /> @@ -297,7 +300,22 @@ const handlePaneResize = (eventData: { panes: Array<{ size: number; [key: string
diff --git a/packages/frontend/src/components/TerminalTabBar.vue b/packages/frontend/src/components/TerminalTabBar.vue index 967c487..b9e18f2 100644 --- a/packages/frontend/src/components/TerminalTabBar.vue +++ b/packages/frontend/src/components/TerminalTabBar.vue @@ -27,7 +27,12 @@ const props = defineProps({ }); // 定义事件 -const emit = defineEmits(['activate-session', 'close-session', 'open-layout-configurator']); // 添加新事件 +const emit = defineEmits([ + 'activate-session', + 'close-session', + 'open-layout-configurator', + 'request-add-connection-from-popup' // 新增:声明从弹窗发出的添加请求事件 +]); const activateSession = (sessionId: string) => { if (sessionId !== props.activeSessionId) { @@ -57,6 +62,13 @@ const handlePopupConnect = (connectionId: number) => { showConnectionListPopup.value = false; // 关闭弹出窗口 }; +// 新增:处理从弹窗内部发出的添加连接请求 +const handleRequestAddFromPopup = () => { + console.log('[TabBar] Received request-add-connection from popup component.'); + showConnectionListPopup.value = false; // 关闭弹窗 + emit('request-add-connection-from-popup'); // 向上发出事件 +}; + // --- 新增:布局菜单处理 --- const toggleLayoutMenu = () => { console.log('Toggling layout menu visibility. Current state:', showLayoutMenu.value); // 添加日志 @@ -151,6 +163,7 @@ const handleTogglePane = (paneName: PaneName) => {
diff --git a/packages/frontend/src/components/WorkspaceConnectionList.vue b/packages/frontend/src/components/WorkspaceConnectionList.vue index 4e9e156..54c4539 100644 --- a/packages/frontend/src/components/WorkspaceConnectionList.vue +++ b/packages/frontend/src/components/WorkspaceConnectionList.vue @@ -197,7 +197,13 @@ const handleOpenInNewTab = (connectionId: number) => { :placeholder="t('workspaceConnectionList.searchPlaceholder')" class="search-input" /> - + diff --git a/packages/frontend/src/views/WorkspaceView.vue b/packages/frontend/src/views/WorkspaceView.vue index 0168c80..9d3da8f 100644 --- a/packages/frontend/src/views/WorkspaceView.vue +++ b/packages/frontend/src/views/WorkspaceView.vue @@ -64,8 +64,9 @@ onBeforeUnmount(() => { sessionStore.cleanupAllSessions(); }); -// --- 本地方法 (仅处理 UI 状态) --- + // --- 本地方法 (仅处理 UI 状态) --- const handleRequestAddConnection = () => { + console.log('[WorkspaceView] handleRequestAddConnection 被调用!'); // 添加日志确认事件到达 connectionToEdit.value = null; showAddEditForm.value = true; }; @@ -249,6 +250,7 @@ onBeforeUnmount(() => { @activate-session="sessionStore.activateSession" @close-session="sessionStore.closeSession" @open-layout-configurator="handleOpenLayoutConfigurator" + @request-add-connection-from-popup="handleRequestAddConnection" />