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 @@
+
+
+
+
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)} 页
+
+
+
+
+