From 8acb8730bd2ac07b9c47f2f0ee857aa6c018f7ad Mon Sep 17 00:00:00 2001 From: lijiahang Date: Tue, 20 Feb 2024 13:42:19 +0800 Subject: [PATCH] =?UTF-8?q?:sparkles:=20=E5=9C=A8=E7=BA=BF=E7=BC=96?= =?UTF-8?q?=E8=BE=91=E6=96=87=E4=BB=B6.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/components/view/editor/index.vue | 12 ++ .../components/sftp/sftp-chmod-modal.vue | 2 +- .../components/sftp/sftp-editor-header.vue | 122 ++++++++++++++++++ .../terminal/components/sftp/sftp-editor.vue | 38 ++++++ .../terminal/components/sftp/sftp-table.vue | 14 +- .../terminal/components/sftp/sftp-view.vue | 73 +++++++++-- 6 files changed, 245 insertions(+), 16 deletions(-) create mode 100644 orion-ops-ui/src/views/host/terminal/components/sftp/sftp-editor-header.vue create mode 100644 orion-ops-ui/src/views/host/terminal/components/sftp/sftp-editor.vue diff --git a/orion-ops-ui/src/components/view/editor/index.vue b/orion-ops-ui/src/components/view/editor/index.vue index 8d629092..c5cddfb5 100644 --- a/orion-ops-ui/src/components/view/editor/index.vue +++ b/orion-ops-ui/src/components/view/editor/index.vue @@ -93,6 +93,18 @@ emits('editor-mounted', editor); }; + // 获取值 + const getValue = () => { + return editor?.getValue(); + }; + + // 设置值 + const setValue = (value: string) => { + editor?.setValue(value); + }; + + defineExpose({ getValue, setValue }); + // 监听主题变更 watch(() => appStore.theme, (v) => { if (editor && props.theme === true) { diff --git a/orion-ops-ui/src/views/host/terminal/components/sftp/sftp-chmod-modal.vue b/orion-ops-ui/src/views/host/terminal/components/sftp/sftp-chmod-modal.vue index 547f33ee..9d0a98a2 100644 --- a/orion-ops-ui/src/views/host/terminal/components/sftp/sftp-chmod-modal.vue +++ b/orion-ops-ui/src/views/host/terminal/components/sftp/sftp-chmod-modal.vue @@ -50,8 +50,8 @@ import useVisible from '@/hooks/visible'; import { nextTick, ref } from 'vue'; import { useTerminalStore } from '@/store'; - import SftpSession from '../../handler/sftp-session'; import { permission10toString } from '@/utils/file'; + import SftpSession from '../../handler/sftp-session'; const { visible, setVisible } = useVisible(); const { sessionManager } = useTerminalStore(); diff --git a/orion-ops-ui/src/views/host/terminal/components/sftp/sftp-editor-header.vue b/orion-ops-ui/src/views/host/terminal/components/sftp/sftp-editor-header.vue new file mode 100644 index 00000000..77cd5bb5 --- /dev/null +++ b/orion-ops-ui/src/views/host/terminal/components/sftp/sftp-editor-header.vue @@ -0,0 +1,122 @@ + + + + + + + diff --git a/orion-ops-ui/src/views/host/terminal/components/sftp/sftp-editor.vue b/orion-ops-ui/src/views/host/terminal/components/sftp/sftp-editor.vue new file mode 100644 index 00000000..43b0bb42 --- /dev/null +++ b/orion-ops-ui/src/views/host/terminal/components/sftp/sftp-editor.vue @@ -0,0 +1,38 @@ + + + + + + + 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 c0d2fe26..7261f039 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 emits = defineEmits(['update:selectedFiles', 'loadFile']); + const emits = defineEmits(['update:selectedFiles', 'loadFile', 'editFile']); const openSftpMoveModal = inject(openSftpMoveModalKey) as (sessionId: string, path: string) => void; const openSftpChmodModal = inject(openSftpChmodModalKey) as (sessionId: string, path: string, permission: number) => void; @@ -202,11 +202,12 @@ }; // 是否可编辑 - const canEditable = (attr: string) => { + const canEditable = (sizeByte: number, attr: string) => { const typeValue = formatFileType(attr).value; - // 非文件夹和链接文件可以编辑 + // 非文件夹和链接文件 并且文件大小小于 2MB 可以编辑 return FILE_TYPE.DIRECTORY.value !== typeValue - && FILE_TYPE.LINK_FILE.value !== typeValue; + && FILE_TYPE.LINK_FILE.value !== typeValue + && sizeByte <= 2 * 1024 * 1024; }; // 点击文件名称 @@ -221,7 +222,8 @@ // 编辑文件 const editFile = (record: TableData) => { - // TODO + emits('editFile', record.name, record.path); + props.session?.getContent(record.path); }; // 删除文件 diff --git a/orion-ops-ui/src/views/host/terminal/components/sftp/sftp-view.vue b/orion-ops-ui/src/views/host/terminal/components/sftp/sftp-view.vue index 48b0d589..5e1faca7 100644 --- a/orion-ops-ui/src/views/host/terminal/components/sftp/sftp-view.vue +++ b/orion-ops-ui/src/views/host/terminal/components/sftp/sftp-view.vue @@ -3,7 +3,7 @@ + :disabled="!editorView"> -