From c9bbb19e13fa6d0fec21b98ab23f01501b7d6d82 Mon Sep 17 00:00:00 2001 From: zhaojisen <1301338853@qq.com> Date: Wed, 20 Nov 2024 17:50:14 +0800 Subject: [PATCH] =?UTF-8?q?perf=EF=BC=9AImplementation=20of=20the=20defaul?= =?UTF-8?q?t=20tab=20bar?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../components/fileManage/index.vue | 61 +++++++++++++++++-- ui/src/components/pamFileList/index.vue | 49 ++++++++++++--- ui/src/hooks/useTerminal.ts | 4 ++ ui/src/store/modules/fileManage.ts | 9 ++- ui/src/views/Connection/index.vue | 9 ++- 5 files changed, 112 insertions(+), 20 deletions(-) diff --git a/ui/src/components/pamFileList/components/fileManage/index.vue b/ui/src/components/pamFileList/components/fileManage/index.vue index c8180883..4ed66e19 100644 --- a/ui/src/components/pamFileList/components/fileManage/index.vue +++ b/ui/src/components/pamFileList/components/fileManage/index.vue @@ -62,10 +62,21 @@ + @@ -74,11 +85,12 @@ import { Folder } from '@vicons/tabler'; import { NButton, NFlex, NIcon, NText } from 'naive-ui'; import { ArrowBackIosFilled, ArrowForwardIosFilled } from '@vicons/material'; -import { ref } from 'vue'; +import { useMessage } from 'naive-ui'; +import { h, ref, nextTick } from 'vue'; import { useFileManageStore } from '@/store/modules/fileManage.ts'; import type { RowData } from '@/components/pamFileList/index.vue'; -import type { DataTableColumns, UploadFileInfo } from 'naive-ui'; +import type { DataTableColumns, UploadFileInfo, DropdownOption } from 'naive-ui'; const props = withDefaults( defineProps<{ @@ -89,8 +101,12 @@ const props = withDefaults( } ); +const message = useMessage(); const fileManageStore = useFileManageStore(); +const x = ref(0); +const y = ref(0); +const showDropdown = ref(false); const isShowUploadList = ref(false); const fileList = ref([ { @@ -100,6 +116,41 @@ const fileList = ref([ type: 'text/plain' } ]); - - +const options: DropdownOption[] = [ + { + label: '编辑', + key: 'edit' + }, + { + label: () => h('span', { style: { color: 'red' } }, '删除'), + key: 'delete' + } +]; + +const onClickoutside = () => { + showDropdown.value = false; +}; + +const handleSelect = () => { + showDropdown.value = false; +}; + +const rowProps = (row: RowData) => { + return { + onContextmenu: (e: MouseEvent) => { + message.info(JSON.stringify(row, null, 2)); + + e.preventDefault(); + + showDropdown.value = false; + + nextTick().then(() => { + showDropdown.value = true; + x.value = e.clientX; + y.value = e.clientY; + }); + } + }; +}; + diff --git a/ui/src/components/pamFileList/index.vue b/ui/src/components/pamFileList/index.vue index f0e8cbd0..981a2abe 100644 --- a/ui/src/components/pamFileList/index.vue +++ b/ui/src/components/pamFileList/index.vue @@ -1,8 +1,8 @@