diff --git a/orion-ops-ui/src/store/modules/terminal/index.ts b/orion-ops-ui/src/store/modules/terminal/index.ts index efd2de3c..ff0a2ee9 100644 --- a/orion-ops-ui/src/store/modules/terminal/index.ts +++ b/orion-ops-ui/src/store/modules/terminal/index.ts @@ -22,6 +22,7 @@ import { PanelSessionType, TerminalTabs } from '@/views/host/terminal/types/term import TerminalTabManager from '@/views/host/terminal/handler/terminal-tab-manager'; import TerminalSessionManager from '@/views/host/terminal/handler/terminal-session-manager'; import TerminalPanelManager from '@/views/host/terminal/handler/terminal-panel-manager'; +import SftpTransferManager from '@/views/host/terminal/handler/sftp-transfer-manager'; // 终端偏好项 export const TerminalPreferenceItem = { @@ -66,7 +67,8 @@ export default defineStore('terminal', { hosts: {} as AuthorizedHostQueryResponse, tabManager: new TerminalTabManager(TerminalTabs.NEW_CONNECTION), panelManager: new TerminalPanelManager(), - sessionManager: new TerminalSessionManager() + sessionManager: new TerminalSessionManager(), + transferManager: new SftpTransferManager(), }), actions: { diff --git a/orion-ops-ui/src/store/modules/terminal/types.ts b/orion-ops-ui/src/store/modules/terminal/types.ts index 87950e3c..75a23c75 100644 --- a/orion-ops-ui/src/store/modules/terminal/types.ts +++ b/orion-ops-ui/src/store/modules/terminal/types.ts @@ -1,4 +1,4 @@ -import type { ITerminalPanelManager, ITerminalSessionManager, ITerminalTabManager } from '@/views/host/terminal/types/terminal.type'; +import type { ITerminalPanelManager, ITerminalSessionManager, ITerminalTabManager,ISftpTransferManager } from '@/views/host/terminal/types/terminal.type'; import type { AuthorizedHostQueryResponse } from '@/api/asset/asset-authorized-data'; import type { TerminalTheme } from '@/api/asset/host-terminal'; @@ -8,6 +8,7 @@ export interface TerminalState { tabManager: ITerminalTabManager; panelManager: ITerminalPanelManager; sessionManager: ITerminalSessionManager; + transferManager: ISftpTransferManager; } // 终端配置 diff --git a/orion-ops-ui/src/views/host/terminal/components/layout/right-sidebar.vue b/orion-ops-ui/src/views/host/terminal/components/layout/right-sidebar.vue index 4a8e942f..297940f2 100644 --- a/orion-ops-ui/src/views/host/terminal/components/layout/right-sidebar.vue +++ b/orion-ops-ui/src/views/host/terminal/components/layout/right-sidebar.vue @@ -10,6 +10,8 @@ position="left" /> + + @@ -25,12 +27,12 @@ import { ref } from 'vue'; import IconActions from './icon-actions.vue'; import CommandSnippetListDrawer from '../../../command-snippet/components/command-snippet-list-drawer.vue'; - - const emits = defineEmits(['openTransfer']); + import TransferDrawer from '@/views/host/terminal/components/transfer/transfer-drawer.vue'; const { getAndCheckCurrentSshSession } = useTerminalStore(); const snippetRef = ref(); + const transferRef = ref(); // 顶部操作 const topActions = [ @@ -44,7 +46,7 @@ iconStyle: { transform: 'rotate(90deg)' }, - click: () => emits('openTransfer') + click: () => transferRef.value.open() }, ]; diff --git a/orion-ops-ui/src/views/host/terminal/components/sftp/sftp-table-header.vue b/orion-ops-ui/src/views/host/terminal/components/sftp/sftp-table-header.vue index a19585d4..12198476 100644 --- a/orion-ops-ui/src/views/host/terminal/components/sftp/sftp-table-header.vue +++ b/orion-ops-ui/src/views/host/terminal/components/sftp/sftp-table-header.vue @@ -150,7 +150,7 @@ arrow-class="terminal-tooltip-content" content="上传"> + @click="openSftpUploadModal"> @@ -182,7 +182,7 @@ import type { ISftpSession } from '../../types/terminal.type'; import { inject, nextTick, ref, watch } from 'vue'; import { getParentPath, getPathAnalysis } from '@/utils/file'; - import { openSftpCreateModalKey } from '../../types/terminal.const'; + import { openSftpCreateModalKey, openSftpUploadModalKey } from '../../types/terminal.const'; const props = defineProps<{ currentPath: string; @@ -200,6 +200,8 @@ const openSftpCreateModal = inject(openSftpCreateModalKey) as (sessionId: string, path: string, isTouch: boolean) => void; + const openSftpUploadModal = inject(openSftpUploadModalKey) as () => void; + // 监听路径变化 watch(() => props.currentPath, (path) => { if (path) { @@ -264,12 +266,6 @@ } }; - // 上传文件 - const uploadFile = () => { - // TODO openModal("props.currentPath") - console.log(props.currentPath); - }; - // 下载文件 const downloadFile = () => { // TODO diff --git a/orion-ops-ui/src/views/host/terminal/components/sftp/sftp-upload-modal.vue b/orion-ops-ui/src/views/host/terminal/components/sftp/sftp-upload-modal.vue index 63aff283..8d9df00d 100644 --- a/orion-ops-ui/src/views/host/terminal/components/sftp/sftp-upload-modal.vue +++ b/orion-ops-ui/src/views/host/terminal/components/sftp/sftp-upload-modal.vue @@ -1,14 +1,19 @@ - - -