diff --git a/web/src/lib/components/Header.svelte b/web/src/lib/components/Header.svelte new file mode 100644 index 0000000..76c2371 --- /dev/null +++ b/web/src/lib/components/Header.svelte @@ -0,0 +1,15 @@ + + +
+

bili-sync 管理页

+
+ +
+
+ diff --git a/web/src/routes/+page.svelte b/web/src/routes/+page.svelte index 9192e64..ab3b008 100644 --- a/web/src/routes/+page.svelte +++ b/web/src/routes/+page.svelte @@ -5,6 +5,7 @@ import VideoItem from '$lib/components/VideoItem.svelte'; import { listVideos, getVideoSources } from '$lib/api'; import type { VideoInfo, VideoSourcesResponse } from '$lib/types'; + import Header from '$lib/components/Header.svelte'; // API Token 管理 let apiToken: string = localStorage.getItem('auth_token') || ''; @@ -105,8 +106,13 @@ // 点击侧边栏项时更新 activeCategory 和全局选中模型 id function selectModel(category: keyof VideoSourcesResponse, id: number) { + // 如果当前已选中的模型和点击的一致,则取消筛选 + if (selectedModel && selectedModel.category === category && selectedModel.id === id) { + selectedModel = null; + } else { + selectedModel = { category, id }; + } activeCategory = category; - selectedModel = { category, id }; currentPage = 0; videoCollapseSignal = !videoCollapseSignal; fetchVideos(); @@ -118,64 +124,62 @@ bili-sync 管理页 -
- -
- -
- - + + +
+
+ +
+
+ {#each videos as video} + + {/each} +
+
+ + 第 {currentPage + 1} 页,共 {Math.ceil(total / pageSize)} 页 + +
+
+
+