diff --git a/src/api/admin/banners.ts b/src/api/admin/banners.ts
index 1929d81..5d51e66 100644
--- a/src/api/admin/banners.ts
+++ b/src/api/admin/banners.ts
@@ -1,7 +1,7 @@
import { http } from '@/utils/http'
import type { ApiBody, Paginated } from '@/api/types'
-export type BannerType = 'course' | 'activity' | 'custom'
+export type BannerType = 'course' | 'activity' | 'news' | 'custom'
export interface BannerRow {
id: number
@@ -11,6 +11,8 @@ export interface BannerRow {
course_title?: string | null
activity_id?: number | null
activity_title?: string | null
+ news_id?: number | null
+ news_title?: string | null
title?: string | null
cover_url?: string | null
content_html?: string | null
diff --git a/src/components/PageTitle.vue b/src/components/PageTitle.vue
new file mode 100644
index 0000000..c7f5db3
--- /dev/null
+++ b/src/components/PageTitle.vue
@@ -0,0 +1,24 @@
+
+
+
+ {{ title }}
+
diff --git a/src/components/RemotePagedSelect.vue b/src/components/RemotePagedSelect.vue
new file mode 100644
index 0000000..791f137
--- /dev/null
+++ b/src/components/RemotePagedSelect.vue
@@ -0,0 +1,122 @@
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/router/index.ts b/src/router/index.ts
index 590d11a..3cd2946 100644
--- a/src/router/index.ts
+++ b/src/router/index.ts
@@ -17,6 +17,11 @@ const router = createRouter({
],
})
+router.afterEach((to) => {
+ const title = typeof to.meta.title === 'string' ? to.meta.title : ''
+ document.title = title ? `${title} - S-lake高校雷达网` : 'S-lake高校雷达网'
+})
+
router.beforeEach(async (to, _from, next) => {
const auth = useAuthStore()
diff --git a/src/views/assets/banners/index.vue b/src/views/assets/banners/index.vue
index a79aec1..f0783bb 100644
--- a/src/views/assets/banners/index.vue
+++ b/src/views/assets/banners/index.vue
@@ -1,4 +1,9 @@