diff --git a/frontend/src/components/FileSystem/components/Sidebar.vue b/frontend/src/components/FileSystem/components/Sidebar.vue index b04244e..710e980 100644 --- a/frontend/src/components/FileSystem/components/Sidebar.vue +++ b/frontend/src/components/FileSystem/components/Sidebar.vue @@ -19,26 +19,49 @@ 内存 ··· - -
+ - {{ p.name }} - {{ sysInfo(p.id)?.diskUsage || '-' }} - {{ sysInfo(p.id)?.cpuUsage || '-' }} - {{ sysInfo(p.id)?.memUsage || '-' }} - ··· - -
+
+ {{ p.name }} + {{ sysInfo(p.id)?.diskUsage || '-' }} + {{ sysInfo(p.id)?.cpuUsage || '-' }} + {{ sysInfo(p.id)?.memUsage || '-' }} + ··· + +
+ + @@ -268,6 +291,7 @@ function toggleSettings(e: MouseEvent) { return } moreOpenId.value = null + srvCtxMenuIndex.value = -1 const btn = (e.target as HTMLElement).closest('.settings-btn') if (!btn) return settingsPanelStyle.value = calcPopupStyle(btn) @@ -281,6 +305,7 @@ function toggleMore(p: { id: string; name: string }, e: MouseEvent) { return } settingsOpen.value = false + srvCtxMenuIndex.value = -1 moreOpenId.value = p.id moreProfile.value = p const target = (e.target as HTMLElement).closest('.more-btn') as HTMLElement @@ -611,6 +636,18 @@ function handleDelete(p: { id: string; name: string }) { // 删除的是活跃服务器时连接已回落本地,补发切换让视图加载本地根目录 if (wasActive) emit('serverSelect', 'local-default') } + +// 服务器项右键菜单(与行内「...」菜单互斥:一方展开强制收起另一方) +const srvCtxMenuIndex = ref(-1) + +function onSrvCtxVisible(index: number, visible: boolean) { + srvCtxMenuIndex.value = visible ? index : -1 + if (visible) { + moreOpenId.value = null + moreProfile.value = null + settingsOpen.value = false + } +}