diff --git a/FileShare-Services/Services/FileLibrary/FileLibraryContracts.cs b/FileShare-Services/Services/FileLibrary/FileLibraryContracts.cs index 118ba65..e71150c 100644 --- a/FileShare-Services/Services/FileLibrary/FileLibraryContracts.cs +++ b/FileShare-Services/Services/FileLibrary/FileLibraryContracts.cs @@ -141,7 +141,7 @@ namespace FileShare_Services.Services.FileLibrary [property: JsonPropertyName("rootId")] int RootId = 0, [property: JsonPropertyName("path")] string? Path = null, [property: JsonPropertyName("page")] int Page = 1, - [property: JsonPropertyName("pageSize")] int PageSize = 48, + [property: JsonPropertyName("pageSize")] int PageSize = 10, [property: JsonPropertyName("mediaType")] string? MediaType = null, [property: JsonPropertyName("sortBy")] string? SortBy = "name", [property: JsonPropertyName("sortDirection")] string? SortDirection = "asc"); diff --git a/FileShare-Services/Services/FileLibrary/FileLibraryService.cs b/FileShare-Services/Services/FileLibrary/FileLibraryService.cs index b78ca8b..fdae511 100644 --- a/FileShare-Services/Services/FileLibrary/FileLibraryService.cs +++ b/FileShare-Services/Services/FileLibrary/FileLibraryService.cs @@ -463,7 +463,7 @@ namespace FileShare_Services.Services.FileLibrary : query.OrderByDescending(file => file.CreatedAt); return await query - .Take(Math.Clamp(count, 1, 48)) + .Take(Math.Clamp(count, 1, 10)) .Select(file => ToFileDto(file)) .ToListAsync(cancellationToken); } diff --git a/FileShare-Web-VUE/src/assets/main.css b/FileShare-Web-VUE/src/assets/main.css index da09d47..20b6218 100644 --- a/FileShare-Web-VUE/src/assets/main.css +++ b/FileShare-Web-VUE/src/assets/main.css @@ -479,6 +479,18 @@ a { margin-top: 12px; } +.player-host { + min-width: 0; +} + +.file-grid .player-host { + grid-column: 1 / -1; +} + +.player-host .player-panel { + margin-top: 0; +} + .player-title { align-items: flex-start; } diff --git a/FileShare-Web-VUE/src/components/ClientPage.vue b/FileShare-Web-VUE/src/components/ClientPage.vue index 438cbca..6b044ed 100644 --- a/FileShare-Web-VUE/src/components/ClientPage.vue +++ b/FileShare-Web-VUE/src/components/ClientPage.vue @@ -1,8 +1,24 @@ + + diff --git a/FileShare-Web-VUE/src/components/client/BrowseToolbar.vue b/FileShare-Web-VUE/src/components/client/BrowseToolbar.vue new file mode 100644 index 0000000..1da8afd --- /dev/null +++ b/FileShare-Web-VUE/src/components/client/BrowseToolbar.vue @@ -0,0 +1,53 @@ + + + diff --git a/FileShare-Web-VUE/src/components/client/ClientHeader.vue b/FileShare-Web-VUE/src/components/client/ClientHeader.vue new file mode 100644 index 0000000..fb77788 --- /dev/null +++ b/FileShare-Web-VUE/src/components/client/ClientHeader.vue @@ -0,0 +1,54 @@ + + + diff --git a/FileShare-Web-VUE/src/components/client/ClientMediaPlayer.vue b/FileShare-Web-VUE/src/components/client/ClientMediaPlayer.vue new file mode 100644 index 0000000..9d202bc --- /dev/null +++ b/FileShare-Web-VUE/src/components/client/ClientMediaPlayer.vue @@ -0,0 +1,118 @@ + + + diff --git a/FileShare-Web-VUE/src/components/client/FileCard.vue b/FileShare-Web-VUE/src/components/client/FileCard.vue new file mode 100644 index 0000000..988d13a --- /dev/null +++ b/FileShare-Web-VUE/src/components/client/FileCard.vue @@ -0,0 +1,40 @@ + + + diff --git a/FileShare-Web-VUE/src/components/client/FileListItem.vue b/FileShare-Web-VUE/src/components/client/FileListItem.vue new file mode 100644 index 0000000..01cb6a5 --- /dev/null +++ b/FileShare-Web-VUE/src/components/client/FileListItem.vue @@ -0,0 +1,42 @@ + + + diff --git a/FileShare-Web-VUE/src/components/client/MobilePager.vue b/FileShare-Web-VUE/src/components/client/MobilePager.vue new file mode 100644 index 0000000..a8947fc --- /dev/null +++ b/FileShare-Web-VUE/src/components/client/MobilePager.vue @@ -0,0 +1,19 @@ + + + diff --git a/FileShare-Web-VUE/src/components/client/RootPicker.vue b/FileShare-Web-VUE/src/components/client/RootPicker.vue new file mode 100644 index 0000000..9433ee5 --- /dev/null +++ b/FileShare-Web-VUE/src/components/client/RootPicker.vue @@ -0,0 +1,28 @@ + + + diff --git a/FileShare-Web-VUE/src/components/client/RootTabs.vue b/FileShare-Web-VUE/src/components/client/RootTabs.vue new file mode 100644 index 0000000..fb799aa --- /dev/null +++ b/FileShare-Web-VUE/src/components/client/RootTabs.vue @@ -0,0 +1,29 @@ + + + diff --git a/FileShare-Web-VUE/src/components/client/SelectedMediaPlayerHost.vue b/FileShare-Web-VUE/src/components/client/SelectedMediaPlayerHost.vue new file mode 100644 index 0000000..0008259 --- /dev/null +++ b/FileShare-Web-VUE/src/components/client/SelectedMediaPlayerHost.vue @@ -0,0 +1,65 @@ + + + diff --git a/FileShare-Web-VUE/src/components/client/ViewToggle.vue b/FileShare-Web-VUE/src/components/client/ViewToggle.vue new file mode 100644 index 0000000..48af910 --- /dev/null +++ b/FileShare-Web-VUE/src/components/client/ViewToggle.vue @@ -0,0 +1,16 @@ + + + diff --git a/FileShare-Web-VUE/src/utils/formatters.ts b/FileShare-Web-VUE/src/utils/formatters.ts new file mode 100644 index 0000000..3e978f0 --- /dev/null +++ b/FileShare-Web-VUE/src/utils/formatters.ts @@ -0,0 +1,29 @@ +import type { FileRecordDto } from '../api' + +export function formatSize(bytes: number) { + if (bytes < 1024) return `${bytes} B` + const units = ['KB', 'MB', 'GB', 'TB'] + let value = bytes / 1024 + let index = 0 + while (value >= 1024 && index < units.length - 1) { + value /= 1024 + index += 1 + } + return `${value.toFixed(value >= 10 ? 1 : 2)} ${units[index]}` +} + +export function formatDuration(seconds: number | null) { + if (!seconds) return '' + const m = Math.floor(seconds / 60) + const s = Math.floor(seconds % 60) + return `${m}:${s.toString().padStart(2, '0')}` +} + +export function formatDate(value: string | null) { + if (!value) return '' + return new Date(value).toLocaleString() +} + +export function formatCreatedTime(file: FileRecordDto) { + return file.fileCreationTimeUtc ? `创建 ${formatDate(file.fileCreationTimeUtc)}` : '' +}