From 0700de36f5c5e9f94ce72e2932b442310790322f Mon Sep 17 00:00:00 2001 From: ctwj <908504609@qq.com> Date: Sat, 2 Aug 2025 18:06:54 +0800 Subject: [PATCH] =?UTF-8?q?update:=20=E5=90=8E=E5=8F=B0=E9=A1=B5=E9=9D=A2?= =?UTF-8?q?=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- web/components.d.ts | 1 + web/components/ErrorToast.vue | 58 ----------------- web/components/ResourceModal.vue | 31 ++++----- web/components/SuccessToast.vue | 58 ----------------- web/layouts/admin.vue | 9 ++- web/layouts/single.vue | 8 ++- web/middleware/ua-check.server.ts | 1 - web/pages/admin/add-resource.vue | 22 ++----- web/pages/admin/system-config.vue | 103 +++++++++++++----------------- web/pages/login.vue | 33 ++++------ web/pages/register.vue | 36 ++++------- 11 files changed, 99 insertions(+), 261 deletions(-) delete mode 100644 web/components/ErrorToast.vue delete mode 100644 web/components/SuccessToast.vue delete mode 100644 web/middleware/ua-check.server.ts diff --git a/web/components.d.ts b/web/components.d.ts index 83189d9..eff1fca 100644 --- a/web/components.d.ts +++ b/web/components.d.ts @@ -12,6 +12,7 @@ declare module 'vue' { NAlert: typeof import('naive-ui')['NAlert'] NButton: typeof import('naive-ui')['NButton'] NInput: typeof import('naive-ui')['NInput'] + NNotificationProvider: typeof import('naive-ui')['NNotificationProvider'] NSelect: typeof import('naive-ui')['NSelect'] NTabPane: typeof import('naive-ui')['NTabPane'] NTabs: typeof import('naive-ui')['NTabs'] diff --git a/web/components/ErrorToast.vue b/web/components/ErrorToast.vue deleted file mode 100644 index 9dcf4ce..0000000 --- a/web/components/ErrorToast.vue +++ /dev/null @@ -1,58 +0,0 @@ - - - \ No newline at end of file diff --git a/web/components/ResourceModal.vue b/web/components/ResourceModal.vue index 8e61e32..e7a3915 100644 --- a/web/components/ResourceModal.vue +++ b/web/components/ResourceModal.vue @@ -114,10 +114,6 @@ Body:

- - - - @@ -147,10 +143,9 @@ Body: import { ref, onMounted } from 'vue' import { useResourceStore } from '~/stores/resource' import { storeToRefs } from 'pinia' -import SuccessToast from './SuccessToast.vue' -import ErrorToast from './ErrorToast.vue' import { useReadyResourceApi } from '~/composables/useApi' +const notification = useNotification() const store = useResourceStore() const { categories } = storeToRefs(store) @@ -159,10 +154,6 @@ const emit = defineEmits(['close', 'save']) const loading = ref(false) const newTag = ref('') -const showSuccess = ref(false) -const showError = ref(false) -const successMsg = ref('') -const errorMsg = ref('') const tabs = [ { label: '批量添加', value: 'batch' }, @@ -226,12 +217,14 @@ const handleBatchSubmit = async () => { try { if (!batchInput.value.trim()) throw new Error('请输入资源内容') const res: any = await readyResourceApi.createReadyResourcesFromText(batchInput.value) - showSuccess.value = true - successMsg.value = `成功添加 ${res.count || 0} 个资源,资源已进入待处理列表,处理完成后会自动入库` + notification.success({ + content: `成功添加 ${res.count || 0} 个资源,资源已进入待处理列表,处理完成后会自动入库` + }) batchInput.value = '' } catch (e: any) { - showError.value = true - errorMsg.value = e.message || '批量添加失败' + notification.error({ + content: e.message || '批量添加失败' + }) } finally { loading.value = false } @@ -251,8 +244,9 @@ const handleSingleSubmit = async () => { tags: [...form.value.tags], }) } - showSuccess.value = true - successMsg.value = '资源已进入待处理列表,处理完成后会自动入库' + notification.success({ + content: '资源已进入待处理列表,处理完成后会自动入库' + }) // 清空表单 form.value.title = '' form.value.description = '' @@ -260,8 +254,9 @@ const handleSingleSubmit = async () => { form.value.tags = [] form.value.file_type = '' } catch (e: any) { - showError.value = true - errorMsg.value = e.message || '添加失败' + notification.error({ + content: e.message || '添加失败' + }) } finally { loading.value = false } diff --git a/web/components/SuccessToast.vue b/web/components/SuccessToast.vue deleted file mode 100644 index 62434d2..0000000 --- a/web/components/SuccessToast.vue +++ /dev/null @@ -1,58 +0,0 @@ - - - \ No newline at end of file diff --git a/web/layouts/admin.vue b/web/layouts/admin.vue index e9a08ab..9b24cb0 100644 --- a/web/layouts/admin.vue +++ b/web/layouts/admin.vue @@ -18,12 +18,15 @@ -
- - + + + + + +
diff --git a/web/layouts/single.vue b/web/layouts/single.vue index c833462..74076e8 100644 --- a/web/layouts/single.vue +++ b/web/layouts/single.vue @@ -1,6 +1,8 @@ @@ -17,7 +19,7 @@ body, html { background-color: #fff; } -.forbidden-layout { +.single-layout { width: 100%; height: 100vh; overflow: hidden; diff --git a/web/middleware/ua-check.server.ts b/web/middleware/ua-check.server.ts deleted file mode 100644 index 0519ecb..0000000 --- a/web/middleware/ua-check.server.ts +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/web/pages/admin/add-resource.vue b/web/pages/admin/add-resource.vue index c36b461..6ebd910 100644 --- a/web/pages/admin/add-resource.vue +++ b/web/pages/admin/add-resource.vue @@ -43,10 +43,6 @@ - - - - @@ -61,21 +57,15 @@ import { ref, onMounted } from 'vue' import { useRouter } from 'vue-router' import BatchAddResource from '~/components/BatchAddResource.vue' import SingleAddResource from '~/components/SingleAddResource.vue' -import ApiDocumentation from '~/components/ApiDocumentation.vue' -import SuccessToast from '~/components/SuccessToast.vue' -import ErrorToast from '~/components/ErrorToast.vue' const router = useRouter() -const showSuccess = ref(false) -const successMsg = ref('') -const showError = ref(false) -const errorMsg = ref('') const tabs = [ { label: '批量添加', value: 'batch' }, { label: '单个添加', value: 'single' }, ] const mode = ref('batch') +const notification = useNotification() // 检查用户权限 onMounted(() => { @@ -88,13 +78,15 @@ onMounted(() => { // 事件处理 const handleSuccess = (message: string) => { - successMsg.value = message - showSuccess.value = true + notification.success({ + content: message + }) } const handleError = (message: string) => { - errorMsg.value = message - showError.value = true + notification.error({ + content: message + }) } const handleCancel = () => { diff --git a/web/pages/admin/system-config.vue b/web/pages/admin/system-config.vue index 9b5cde1..c21f4f4 100644 --- a/web/pages/admin/system-config.vue +++ b/web/pages/admin/system-config.vue @@ -20,10 +20,10 @@
- +
-
+
@@ -37,7 +37,7 @@
-
+
@@ -62,21 +62,9 @@ />
- -
- - -
- + -
+
@@ -87,9 +75,46 @@ placeholder="© 2024 老九网盘资源数据库" />
+ + + + +
+
+

+ 维护模式 +

+

+ 开启后,普通用户无法访问系统 +

+
+
+ +
+
- +
@@ -221,47 +246,6 @@
- -
- -
- - -
- - -
-
-

- 维护模式 -

-

- 开启后,普通用户无法访问系统 -

-
-
- -
-
-
-
@@ -300,7 +284,6 @@

• 资源搜索: GET /api/public/resources/search

• 热门剧: GET /api/public/hot-dramas

• 认证方式: 在请求头中添加 X-API-Token 或在查询参数中添加 api_token

-

• Swagger文档: 查看完整API文档

diff --git a/web/pages/login.vue b/web/pages/login.vue index a320fcd..9eeeaec 100644 --- a/web/pages/login.vue +++ b/web/pages/login.vue @@ -63,19 +63,6 @@
- - - - - @@ -85,6 +72,7 @@ import { useRouter } from 'vue-router' const router = useRouter() const userStore = useUserStore() +const notification = useNotification() const form = reactive({ username: '', @@ -96,12 +84,6 @@ const errors = reactive({ password: '' }) -const showErrorToast = ref(false) -const errorToastMessage = ref('') -const showSuccessToast = ref(false) -const successToastMessage = ref('') - - const validateForm = () => { errors.username = '' @@ -129,6 +111,9 @@ const handleLogin = async () => { }) if (result.success) { + notification.success({ + content: '登录成功' + }) await router.push('/admin') } else { // 根据错误类型提供更友好的提示 @@ -144,11 +129,17 @@ const handleLogin = async () => { message = result.message } } - errorToastMessage.value = message - showErrorToast.value = true + notification.error({ + content: message + }) } } +definePageMeta({ + layout: 'single', + ssr: false +}) + // 设置页面标题 useHead({ title: '管理员登录 - 老九网盘资源数据库' diff --git a/web/pages/register.vue b/web/pages/register.vue index 8114175..bbd9bf6 100644 --- a/web/pages/register.vue +++ b/web/pages/register.vue @@ -86,20 +86,6 @@ - - - - - - @@ -109,7 +95,7 @@ import { useRouter } from 'vue-router' const router = useRouter() const userStore = useUserStore() - +const notification = useNotification() const form = reactive({ username: '', email: '', @@ -124,11 +110,6 @@ const errors = reactive({ confirmPassword: '' }) -const showErrorToast = ref(false) -const errorToastMessage = ref('') -const showSuccessToast = ref(false) -const successToastMessage = ref('') - const validateForm = () => { errors.username = '' errors.email = '' @@ -184,8 +165,9 @@ const handleRegister = async () => { }) if (result.success) { - successToastMessage.value = '注册成功!请登录' - showSuccessToast.value = true + notification.success({ + content: '注册成功!请登录' + }) setTimeout(() => { router.push('/login') }, 2000) @@ -203,11 +185,17 @@ const handleRegister = async () => { errorMessage = result.message } } - errorToastMessage.value = errorMessage - showErrorToast.value = true + notification.error({ + content: errorMessage + }) } } +definePageMeta({ + layout: 'single', + ssr: false +}) + // 设置页面标题 useHead({ title: '用户注册 - 老九网盘资源数据库'