From 185f0fdb95ee2cfea834d8df185e9eb6de614bf5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=80=97=E5=AD=90?= Date: Wed, 1 Jan 2025 17:32:59 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E6=96=87=E4=BB=B6=E7=AE=A1=E7=90=86?= =?UTF-8?q?=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- web/src/store/modules/file/index.ts | 17 +++++++++++++++++ web/src/store/modules/index.ts | 1 + web/src/views/file/IndexView.vue | 16 +++++++++++----- web/src/views/file/ListTable.vue | 13 +------------ web/src/views/website/IndexView.vue | 20 ++++++++++++++++++-- 5 files changed, 48 insertions(+), 19 deletions(-) create mode 100644 web/src/store/modules/file/index.ts diff --git a/web/src/store/modules/file/index.ts b/web/src/store/modules/file/index.ts new file mode 100644 index 00000000..ca701673 --- /dev/null +++ b/web/src/store/modules/file/index.ts @@ -0,0 +1,17 @@ +export interface File { + path: string +} + +export const useFileStore = defineStore('file', { + state: (): File => { + return { + path: '/' + } + }, + actions: { + set(info: File) { + this.path = info.path + } + }, + persist: true +}) diff --git a/web/src/store/modules/index.ts b/web/src/store/modules/index.ts index bc4baca1..303f4fbc 100644 --- a/web/src/store/modules/index.ts +++ b/web/src/store/modules/index.ts @@ -1,3 +1,4 @@ +export * from './file' export * from './permission' export * from './tab' export * from './theme' diff --git a/web/src/views/file/IndexView.vue b/web/src/views/file/IndexView.vue index a3cedb40..38f604f9 100644 --- a/web/src/views/file/IndexView.vue +++ b/web/src/views/file/IndexView.vue @@ -3,6 +3,7 @@ defineOptions({ name: 'file-index' }) +import { useFileStore } from '@/store' import CompressModal from '@/views/file/CompressModal.vue' import ListTable from '@/views/file/ListTable.vue' import PathInput from '@/views/file/PathInput.vue' @@ -10,7 +11,8 @@ import PermissionModal from '@/views/file/PermissionModal.vue' import ToolBar from '@/views/file/ToolBar.vue' import type { Marked } from '@/views/file/types' -const path = ref('/') +const fileStore = useFileStore() + const selected = ref([]) const marked = ref([]) const markedType = ref('copy') @@ -22,9 +24,9 @@ const permission = ref(false) - - diff --git a/web/src/views/website/IndexView.vue b/web/src/views/website/IndexView.vue index 31af99ec..0f019117 100644 --- a/web/src/views/website/IndexView.vue +++ b/web/src/views/website/IndexView.vue @@ -12,15 +12,18 @@ import { NInput, NPopconfirm, NSpace, - NSwitch + NSwitch, + NTag } from 'naive-ui' import { useI18n } from 'vue-i18n' import dashboard from '@/api/panel/dashboard' import website from '@/api/panel/website' +import { useFileStore } from '@/store' import { generateRandomString, isNullOrUndef, renderIcon } from '@/utils' import type { Website } from './types' +const fileStore = useFileStore() const { t } = useI18n() const router = useRouter() const selectedRowKeys = ref([]) @@ -53,7 +56,20 @@ const columns: any = [ key: 'path', minWidth: 200, resizable: true, - ellipsis: { tooltip: true } + render(row: any) { + return h( + NTag, + { + class: 'cursor-pointer hover:opacity-60', + type: 'info', + onClick: () => { + fileStore.path = row.path + router.push({ name: 'file-index' }) + } + }, + { default: () => row.path } + ) + } }, { title: 'HTTPS',