From 9912130da1bf4e42038cb1fcabc9cff5370a1a15 Mon Sep 17 00:00:00 2001 From: lijiahang Date: Tue, 20 Feb 2024 18:02:13 +0800 Subject: [PATCH] =?UTF-8?q?:construction:=20=E5=8F=AF=E9=85=8D=E7=BD=AE?= =?UTF-8?q?=E9=A2=84=E8=A7=88=E9=98=88=E5=80=BC.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../preference/model/TerminalPreferenceModel.java | 3 +++ .../strategy/TerminalPreferenceStrategy.java | 1 + orion-ops-ui/.env.development | 1 + orion-ops-ui/.env.production | 1 + orion-ops-ui/src/env.d.ts | 1 + .../host/terminal/components/sftp/sftp-table.vue | 6 ++++-- .../terminal/components/sftp/types/table.columns.ts | 2 ++ .../host/terminal/handler/ssh-session-handler.ts | 13 ++++++++++++- .../src/views/host/terminal/types/terminal.const.ts | 4 ++++ .../src/views/host/terminal/types/terminal.type.ts | 2 ++ 10 files changed, 31 insertions(+), 3 deletions(-) diff --git a/orion-ops-module-infra/orion-ops-module-infra-service/src/main/java/com/orion/ops/module/infra/handler/preference/model/TerminalPreferenceModel.java b/orion-ops-module-infra/orion-ops-module-infra-service/src/main/java/com/orion/ops/module/infra/handler/preference/model/TerminalPreferenceModel.java index 5dfbbf13..6b321065 100644 --- a/orion-ops-module-infra/orion-ops-module-infra-service/src/main/java/com/orion/ops/module/infra/handler/preference/model/TerminalPreferenceModel.java +++ b/orion-ops-module-infra/orion-ops-module-infra-service/src/main/java/com/orion/ops/module/infra/handler/preference/model/TerminalPreferenceModel.java @@ -207,6 +207,9 @@ public class TerminalPreferenceModel implements PreferenceModel { @Schema(description = "命令编辑器") private Boolean commandEditor; + @Schema(description = "打开 SFTP") + private Boolean openSftp; + @Schema(description = "清空") private Boolean clear; diff --git a/orion-ops-module-infra/orion-ops-module-infra-service/src/main/java/com/orion/ops/module/infra/handler/preference/strategy/TerminalPreferenceStrategy.java b/orion-ops-module-infra/orion-ops-module-infra-service/src/main/java/com/orion/ops/module/infra/handler/preference/strategy/TerminalPreferenceStrategy.java index 1a287570..b05aeda9 100644 --- a/orion-ops-module-infra/orion-ops-module-infra-service/src/main/java/com/orion/ops/module/infra/handler/preference/strategy/TerminalPreferenceStrategy.java +++ b/orion-ops-module-infra/orion-ops-module-infra-service/src/main/java/com/orion/ops/module/infra/handler/preference/strategy/TerminalPreferenceStrategy.java @@ -100,6 +100,7 @@ public class TerminalPreferenceStrategy implements IPreferenceStrategy; @@ -204,10 +206,10 @@ // 是否可编辑 const canEditable = (sizeByte: number, attr: string) => { const typeValue = formatFileType(attr).value; - // 非文件夹和链接文件 并且文件大小小于 2MB 可以编辑 + // 非文件夹和链接文件 并且文件小于 配置大小(MB) 可以编辑 return FILE_TYPE.DIRECTORY.value !== typeValue && FILE_TYPE.LINK_FILE.value !== typeValue - && sizeByte <= 2 * 1024 * 1024; + && sizeByte <= previewSize * 1024 * 1024; }; // 点击文件名称 diff --git a/orion-ops-ui/src/views/host/terminal/components/sftp/types/table.columns.ts b/orion-ops-ui/src/views/host/terminal/components/sftp/types/table.columns.ts index 0fc5f2dc..f86a6536 100644 --- a/orion-ops-ui/src/views/host/terminal/components/sftp/types/table.columns.ts +++ b/orion-ops-ui/src/views/host/terminal/components/sftp/types/table.columns.ts @@ -19,6 +19,7 @@ const columns = [ title: '大小', dataIndex: 'sizeByte', slotName: 'size', + ellipsis: true, sortable: { sortDirections: ['ascend', 'descend'], }, @@ -26,6 +27,7 @@ const columns = [ title: '属性', dataIndex: 'attr', slotName: 'attr', + ellipsis: true, }, { title: '修改时间', dataIndex: 'modifyTime', diff --git a/orion-ops-ui/src/views/host/terminal/handler/ssh-session-handler.ts b/orion-ops-ui/src/views/host/terminal/handler/ssh-session-handler.ts index c339e50e..d2949680 100644 --- a/orion-ops-ui/src/views/host/terminal/handler/ssh-session-handler.ts +++ b/orion-ops-ui/src/views/host/terminal/handler/ssh-session-handler.ts @@ -4,7 +4,7 @@ import type { Terminal } from 'xterm'; import useCopy from '@/hooks/copy'; import html2canvas from 'html2canvas'; import { useTerminalStore, useUserStore } from '@/store'; -import { TerminalShortcutItems } from '../types/terminal.const'; +import { PanelSessionType, TerminalShortcutItems } from '../types/terminal.const'; import { saveAs } from 'file-saver'; import { Message } from '@arco-design/web-vue'; import { dateFormat } from '@/utils'; @@ -76,6 +76,7 @@ export default class SshSessionHandler implements ISshSessionHandler { case 'interrupt': case 'enter': case 'commandEditor': + case 'openSftp': case 'checkAppendMissing': return this.session.canWrite; case 'disconnect': @@ -194,6 +195,16 @@ export default class SshSessionHandler implements ISshSessionHandler { this.domRef.editorModal?.open('', ''); } + // 打开 sftp + openSftp() { + const terminalStore = useTerminalStore(); + const host = terminalStore.hosts.hostList + .find(s => s.id === this.session.hostId); + if (host) { + terminalStore.openSession(host, PanelSessionType.SFTP); + } + } + // ctrl + c interrupt() { this.inst.paste(String.fromCharCode(3)); diff --git a/orion-ops-ui/src/views/host/terminal/types/terminal.const.ts b/orion-ops-ui/src/views/host/terminal/types/terminal.const.ts index f1754778..f94d55f9 100644 --- a/orion-ops-ui/src/views/host/terminal/types/terminal.const.ts +++ b/orion-ops-ui/src/views/host/terminal/types/terminal.const.ts @@ -159,6 +159,10 @@ export const ActionBarItems = [ item: 'commandEditor', icon: 'icon-code-square', content: '命令编辑器', + }, { + item: 'openSftp', + icon: 'icon-folder', + content: '打开 SFTP', }, { item: 'clear', icon: 'icon-delete', diff --git a/orion-ops-ui/src/views/host/terminal/types/terminal.type.ts b/orion-ops-ui/src/views/host/terminal/types/terminal.type.ts index 6f3efe1c..b49425e9 100644 --- a/orion-ops-ui/src/views/host/terminal/types/terminal.type.ts +++ b/orion-ops-ui/src/views/host/terminal/types/terminal.type.ts @@ -288,6 +288,8 @@ export interface ISshSessionHandler { fontSizeSubtract: () => void; // 打开命令编辑器 commandEditor: () => void; + // 打开 sftp + openSftp: () => void; // 中断 interrupt: () => void; // 回车