diff --git a/src/@core/utils/formatters.ts b/src/@core/utils/formatters.ts index a8de8d7d..c393b32f 100644 --- a/src/@core/utils/formatters.ts +++ b/src/@core/utils/formatters.ts @@ -95,3 +95,17 @@ export function parseDate(dateString: string): Date { return new Date(year, month - 1, day) } + +// 文件大小格式化 +export function formatBytes(bytes: number, decimals = 2) { + if (bytes === 0) + return '0 bytes' + + const k = 1024 + const dm = decimals < 0 ? 0 : decimals + const sizes = ['bytes', 'KB', 'MB', 'GB', 'TB', 'PB', 'EB', 'ZB', 'YB'] + + const i = Math.floor(Math.log(bytes) / Math.log(k)) + + return `${parseFloat((bytes / k ** i).toFixed(dm))} ${sizes[i]}` +} diff --git a/src/api/types.ts b/src/api/types.ts index 80bce242..38b90409 100644 --- a/src/api/types.ts +++ b/src/api/types.ts @@ -897,3 +897,21 @@ export interface Rss { // 状态 0-停用,1-启用 state?: number } + +// 文件浏览接口 +export interface EndPoints { + list: any + mkdir: any + delete: any +} + +// 文件浏览项目 +export interface FileItem { + type: string + name: string + basename: string + path: string + extension: string + size: number + children: [] +} diff --git a/src/components/FileBrowser.vue b/src/components/FileBrowser.vue index cefb5f92..75a1bf94 100644 --- a/src/components/FileBrowser.vue +++ b/src/components/FileBrowser.vue @@ -1,24 +1,39 @@ - - + - - + + - - - + + + - - - - + + + - - diff --git a/src/components/filebrowser/Confirm.vue b/src/components/filebrowser/Confirm.vue deleted file mode 100644 index f7f1f580..00000000 --- a/src/components/filebrowser/Confirm.vue +++ /dev/null @@ -1,78 +0,0 @@ - - - - - - - - {{ title }} - - - - - - - Cancel - - - Yes - - - - - diff --git a/src/components/filebrowser/List.vue b/src/components/filebrowser/List.vue index c350a527..3dc0803f 100644 --- a/src/components/filebrowser/List.vue +++ b/src/components/filebrowser/List.vue @@ -1,227 +1,225 @@ - - - - + - Select a folder or a file - - + - File: {{ path }} - - - - Folders - + + + 目录 + - - mdi-folder-outline - - - - - - - + + + + + + + mdi-delete-outline - - - - - mdi-information - - - - - - - - Files - + + + + + + + 文件 + - - {{ icons[item.extension.toLowerCase()] || icons.other }} - + + + - - - {{ formatBytes(item.size) }} - + + {{ formatBytes(item.size) }} - - - + + + mdi-delete-outline - - - - - mdi-information - - - - - - - + + + + + + - No files or folders found - - + - The folder is empty - - - - - mdi-download - - - - + + + - - mdi-eye-settings-outline - - - mdi-refresh - - - + + mdi-download + + + mdi-refresh + + + diff --git a/src/components/filebrowser/Toolbar.vue b/src/components/filebrowser/Toolbar.vue index 2a7c3d08..e510b5dd 100644 --- a/src/components/filebrowser/Toolbar.vue +++ b/src/components/filebrowser/Toolbar.vue @@ -1,194 +1,163 @@ - - - - - - - mdi-arrow-down-drop-circle-outline - + + + + + + + - - + - - - - {{ item.name }} - - - - - - {{ storageObject.icon }} - - {{ storageObject.name }} - + + + + {{ item.name }} + + + + + + {{ storageObject?.name }} + - - mdi-chevron-right - - + {{ segment.name }} - + - + - - - - - - mdi-arrow-up-bold-outline - - - Up to "root" - Up to "{{ pathSegments[pathSegments.length - 2].name }}" - - - - - mdi-folder-plus-outline - - - - - - - - - - Cancel - - - Create Folder - - - - - - mdi-plus-circle - - - - + + + + + + + + + + + + + + + + + 取消 + + + 新建 + + + + + diff --git a/src/components/filebrowser/Tree.vue b/src/components/filebrowser/Tree.vue index 5edf81a4..dfc79e8b 100644 --- a/src/components/filebrowser/Tree.vue +++ b/src/components/filebrowser/Tree.vue @@ -1,116 +1,136 @@ - - + - - {{ open ? 'mdi-folder-open-outline' : 'mdi-folder-outline' }} - - - {{ icons[item.extension.toLowerCase()] || icons.other }} - + + {{ item.basename }} - - + mdi-refresh - - + + - + - - - - - - - mdi-collapse-all-outline - - - Collapse All - - - + + + + + + + diff --git a/src/components/filebrowser/Upload.vue b/src/components/filebrowser/Upload.vue deleted file mode 100644 index 5e59c9a0..00000000 --- a/src/components/filebrowser/Upload.vue +++ /dev/null @@ -1,218 +0,0 @@ - - - - - - - - Upload to: - - {{ storage }} - - {{ path }} - - - Max files count: {{ maxUploadFilesCount }} - - - Max file size: {{ formatBytes(maxUploadFileSize) }} - - - - - - - - - - - - - {{ formatBytes(file.size) }} - {{ file.type }} - - - - - mdi-close - - - - - - - - - - mdi-plus-circle - Add files - - - - - - - Cancel - - - mdi-closeClear - - - - mdi-plus-circle - Add Files - - - - Upload - - mdi-upload-outline - - - - - - {{ Math.ceil(progress) }}% - - - - - - - diff --git a/src/components/filebrowser/util.js b/src/components/filebrowser/util.js deleted file mode 100644 index f22d4762..00000000 --- a/src/components/filebrowser/util.js +++ /dev/null @@ -1,16 +0,0 @@ -export function formatBytes(bytes, decimals = 2) { - if (bytes === 0) - return '0 bytes' - - const k = 1024 - const dm = decimals < 0 ? 0 : decimals - const sizes = ['bytes', 'KB', 'MB', 'GB', 'TB', 'PB', 'EB', 'ZB', 'YB'] - - const i = Math.floor(Math.log(bytes) / Math.log(k)) - - return `${parseFloat((bytes / k ** i).toFixed(dm))} ${sizes[i]}` -} - -export default { - formatBytes, -} diff --git a/src/pages/filemanager.vue b/src/pages/filemanager.vue index 5322cbc0..8f430aa3 100644 --- a/src/pages/filemanager.vue +++ b/src/pages/filemanager.vue @@ -1,9 +1,7 @@ - - - + diff --git a/src/views/reorganize/FileBrowserView.vue b/src/views/reorganize/FileBrowserView.vue new file mode 100644 index 00000000..b5891289 --- /dev/null +++ b/src/views/reorganize/FileBrowserView.vue @@ -0,0 +1,9 @@ + + + + + + +