From 9fd29a2958ae42015845c79949e511e4138ced57 Mon Sep 17 00:00:00 2001 From: stkevintan Date: Fri, 5 Dec 2025 23:42:24 +0800 Subject: [PATCH] enhance the file browser --- src/components/FileBrowser.vue | 46 ++++--- src/components/filebrowser/FileList.vue | 18 ++- src/components/filebrowser/FileNavigator.vue | 7 +- src/components/filebrowser/FileToolbar.vue | 5 +- src/views/reorganize/FileBrowserView.vue | 127 +++++++++++++------ 5 files changed, 132 insertions(+), 71 deletions(-) diff --git a/src/components/FileBrowser.vue b/src/components/FileBrowser.vue index b9612e58..d51b148b 100644 --- a/src/components/FileBrowser.vue +++ b/src/components/FileBrowser.vue @@ -5,6 +5,11 @@ import FileNavigator from './filebrowser/FileNavigator.vue' import type { EndPoints, FileItem, StorageConf } from '@/api/types' import { storageIconDict } from '@/api/constants' +// LocalStorage keys +const SORT_KEY = 'fileBrowser.sort' +const SHOW_TREE_KEY = 'fileBrowser.showDirTree' +const NAV_WIDTH_KEY = 'fileBrowser.navigatorWidth' + // 输入参数 const props = defineProps({ storages: Array as PropType, @@ -119,22 +124,33 @@ const fileIcons = { // 加载次数 const loading = ref(0) -// 当前存储 -const activeStorage = ref('local') + // 刷新 const refreshPending = ref(false) -// 排序 -const sort = ref('name') +// 排序 - 从localStorage恢复 +const sort = ref(localStorage.getItem(SORT_KEY) || 'name') -// 是否显示目录树 -const showDirTree = ref(false) +// 是否显示目录树 - 从localStorage恢复 +const showDirTree = ref(localStorage.getItem(SHOW_TREE_KEY) === 'true') -// 拖动分隔条相关 -const navigatorWidth = ref(280) // 初始宽度 +// 拖动分隔条相关 - 从localStorage恢复宽度 +const navigatorWidth = ref(parseInt(localStorage.getItem(NAV_WIDTH_KEY) || '280')) const isDragging = ref(false) const dragStartX = ref(0) const dragStartWidth = ref(0) +watch(sort, (val) => { + localStorage.setItem(SORT_KEY, val) +}) + +watch(showDirTree, (val) => { + localStorage.setItem(SHOW_TREE_KEY, String(val)) +}) + +watch(navigatorWidth, (val) => { + localStorage.setItem(NAV_WIDTH_KEY, String(val)) +}) + // 计算属性 const storagesArray = computed(() => { return props.storages?.map(item => ({ @@ -144,15 +160,15 @@ const storagesArray = computed(() => { })) }) + // 方法 -function loadingChanged(loading: number) { - if (loading) loading++ - else if (loading > 0) loading-- +function loadingChanged(isLoading: number) { + if (isLoading) loading.value++ + else if (loading.value > 0) loading.value-- } // 存储切换 async function storageChanged(storage: string) { - activeStorage.value = storage emit('pathchanged', { storage: storage, path: '/', fileid: 'root' }) } @@ -235,12 +251,11 @@ function stopDrag() {