From f4d63d4b999a9c76e9a6659f87bf57a94978c5f1 Mon Sep 17 00:00:00 2001 From: lijiahang Date: Wed, 21 Feb 2024 16:32:29 +0800 Subject: [PATCH] =?UTF-8?q?:hammer:=20=E6=96=87=E4=BB=B6=E4=B8=8A=E4=BC=A0?= =?UTF-8?q?.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../terminal/model/response/SftpFileVO.java | 5 +- .../host/terminal/session/SftpSession.java | 3 +- orion-ops-ui/src/utils/file.ts | 20 +++ .../terminal/components/sftp/sftp-table.vue | 6 +- .../components/sftp/sftp-upload-modal.vue | 15 ++- .../components/sftp/types/table.columns.ts | 6 +- .../components/transfer/transfer-drawer.vue | 119 +++++++++++++++++- .../terminal/handler/sftp-transfer-manager.ts | 6 +- .../host/terminal/types/terminal.const.ts | 14 +++ .../host/terminal/types/terminal.type.ts | 16 ++- 10 files changed, 180 insertions(+), 30 deletions(-) diff --git a/orion-ops-module-asset/orion-ops-module-asset-service/src/main/java/com/orion/ops/module/asset/handler/host/terminal/model/response/SftpFileVO.java b/orion-ops-module-asset/orion-ops-module-asset-service/src/main/java/com/orion/ops/module/asset/handler/host/terminal/model/response/SftpFileVO.java index 994a6f9c..574dc67a 100644 --- a/orion-ops-module-asset/orion-ops-module-asset-service/src/main/java/com/orion/ops/module/asset/handler/host/terminal/model/response/SftpFileVO.java +++ b/orion-ops-module-asset/orion-ops-module-asset-service/src/main/java/com/orion/ops/module/asset/handler/host/terminal/model/response/SftpFileVO.java @@ -31,11 +31,8 @@ public class SftpFileVO { @Schema(description = "文件后缀") private String suffix; - @Schema(description = "文件大小") - private String size; - @Schema(description = "文件大小(byte)") - private Long sizeByte; + private Long size; @Schema(description = "属性") private String attr; diff --git a/orion-ops-module-asset/orion-ops-module-asset-service/src/main/java/com/orion/ops/module/asset/handler/host/terminal/session/SftpSession.java b/orion-ops-module-asset/orion-ops-module-asset-service/src/main/java/com/orion/ops/module/asset/handler/host/terminal/session/SftpSession.java index 4148dbfd..26615c6e 100644 --- a/orion-ops-module-asset/orion-ops-module-asset-service/src/main/java/com/orion/ops/module/asset/handler/host/terminal/session/SftpSession.java +++ b/orion-ops-module-asset/orion-ops-module-asset-service/src/main/java/com/orion/ops/module/asset/handler/host/terminal/session/SftpSession.java @@ -157,8 +157,7 @@ public class SftpSession extends TerminalSession implements ISftpSession { file.setName(sftpFile.getName()); file.setPath(sftpFile.getPath()); file.setSuffix(Files1.getSuffix(sftpFile.getName())); - file.setSize(Files1.getSize(sftpFile.getSize())); - file.setSizeByte(sftpFile.getSize()); + file.setSize(sftpFile.getSize()); file.setPermission(sftpFile.getPermission()); file.setUid(sftpFile.getUid()); file.setGid(sftpFile.getGid()); diff --git a/orion-ops-ui/src/utils/file.ts b/orion-ops-ui/src/utils/file.ts index 4005a3f1..d2718e51 100644 --- a/orion-ops-ui/src/utils/file.ts +++ b/orion-ops-ui/src/utils/file.ts @@ -135,4 +135,24 @@ export function permission10toString(permission: number) { return res; } +// 获取文件大小 +export function getFileSize(size: number, scale: number = 2) { + let result; + let unit; + if (size >= 1024 * 1024 * 1024) { + result = (size / (1024 * 1024 * 1024)).toFixed(scale); + unit = 'GB'; + } else if (size >= 1024 * 1024) { + result = (size / (1024 * 1024)).toFixed(scale); + unit = 'MB'; + } else if (size >= 1024) { + result = (size / 1024).toFixed(scale); + unit = 'KB'; + } else { + result = size; + unit = 'B'; + } + return `${result} ${unit}`; +} + export default null; diff --git a/orion-ops-ui/src/views/host/terminal/components/sftp/sftp-table.vue b/orion-ops-ui/src/views/host/terminal/components/sftp/sftp-table.vue index 5361f314..6ca73ad5 100644 --- a/orion-ops-ui/src/views/host/terminal/components/sftp/sftp-table.vue +++ b/orion-ops-ui/src/views/host/terminal/components/sftp/sftp-table.vue @@ -68,7 +68,7 @@ - { + const canEditable = (size: number, attr: string) => { const typeValue = formatFileType(attr).value; // 非文件夹和链接文件 并且文件小于 配置大小(MB) 可以编辑 return FILE_TYPE.DIRECTORY.value !== typeValue && FILE_TYPE.LINK_FILE.value !== typeValue - && sizeByte <= previewSize * 1024 * 1024; + && size <= previewSize * 1024 * 1024; }; // 点击文件名称 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 8d9df00d..14d89dd2 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 @@ -76,11 +76,11 @@ diff --git a/orion-ops-ui/src/views/host/terminal/handler/sftp-transfer-manager.ts b/orion-ops-ui/src/views/host/terminal/handler/sftp-transfer-manager.ts index 02e6055e..6e4596a4 100644 --- a/orion-ops-ui/src/views/host/terminal/handler/sftp-transfer-manager.ts +++ b/orion-ops-ui/src/views/host/terminal/handler/sftp-transfer-manager.ts @@ -1,16 +1,16 @@ -import type { ISftpTransferManager, SftpUploadItem } from '../types/terminal.type'; +import type { ISftpTransferManager, SftpTransferItem } from '../types/terminal.type'; // sftp 传输管理器实现 export default class SftpTransferManager implements ISftpTransferManager { - transferList: Array; + transferList: Array; constructor() { this.transferList = []; } // 添加上传文件 - addUpload(items: Array): void { + addUpload(items: Array): void { this.transferList.push(...items); } 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 957c5ca8..c492d544 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 @@ -285,6 +285,20 @@ export const TerminalShortcutItems: Array = [ }, ]; +// 传输状态 +export const TransferStatus = { + WAITING: 'waiting', + TRANSFERRING: 'normal', + SUCCESS: 'success', + ERROR: 'danger', +}; + +// 传输类型 +export const TransferType = { + UPLOAD: 'upload', + DOWNLOAD: 'download' +}; + // 打开 sshSettingModal key export const openSshSettingModalKey = Symbol(); 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 f1c2dde0..ee2061b7 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 @@ -358,8 +358,7 @@ export interface SftpFile { name: string; path: string; suffix: string; - size: string; - sizeByte: number; + size: number; attr: string; isDir: boolean; permission: number; @@ -370,14 +369,19 @@ export interface SftpFile { // sftp 传输管理器定义 export interface ISftpTransferManager { - transferList: Array; + transferList: Array; // 添加上传文件 - addUpload: (items: Array) => void; + addUpload: (items: Array) => void; } // sftp 上传文件项 -export interface SftpUploadItem { +export interface SftpTransferItem { + type: string; hostId: number; - targetPath: string; + name: string; + parentPath: string; + currentSize: number, + totalSize: number; + status: string; file: File; }