From 9693f3d329316a3d847bad734a19338db96722be Mon Sep 17 00:00:00 2001 From: Lan Date: Sat, 23 Nov 2024 16:39:42 +0800 Subject: [PATCH] =?UTF-8?q?feat:=E5=90=8E=E5=8F=B0=E8=AE=BE=E7=BD=AE?= =?UTF-8?q?=E9=A1=B5=E9=9D=A2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/components/retrievew/FileDetailsModal.vue | 10 +- src/components/retrievew/HistoryDrawer.vue | 30 +- src/composables/useSystemConfig.ts | 0 src/layout/AdminLayout/AdminLayout.vue | 239 ++++++ src/router/index.ts | 27 +- src/stores/adminStore.ts | 11 + src/stores/counter.ts | 12 - src/utils/api.ts | 5 +- src/views/LoginView.vue | 219 +++++ src/views/ManageView.vue | 2 +- src/views/RetrievewFileView.vue | 495 ++++++++++-- src/views/SendFileView.vue | 8 +- src/views/manage/DashboardView.vue | 257 ++++++ src/views/manage/FileManageView.vue | 369 +++++++++ src/views/manage/SystemSettingsView.vue | 750 ++++++++++++++++++ 15 files changed, 2313 insertions(+), 121 deletions(-) create mode 100644 src/composables/useSystemConfig.ts create mode 100644 src/layout/AdminLayout/AdminLayout.vue create mode 100644 src/stores/adminStore.ts delete mode 100644 src/stores/counter.ts create mode 100644 src/views/LoginView.vue create mode 100644 src/views/manage/DashboardView.vue create mode 100644 src/views/manage/FileManageView.vue create mode 100644 src/views/manage/SystemSettingsView.vue diff --git a/src/components/retrievew/FileDetailsModal.vue b/src/components/retrievew/FileDetailsModal.vue index aa03ab9..7890116 100644 --- a/src/components/retrievew/FileDetailsModal.vue +++ b/src/components/retrievew/FileDetailsModal.vue @@ -19,18 +19,19 @@ -
-

+

{{ record.filename }}

-

{{ record.size }}

+

{{ record.size }}

-
@@ -45,7 +46,6 @@
-
- +

diff --git a/src/composables/useSystemConfig.ts b/src/composables/useSystemConfig.ts new file mode 100644 index 0000000..e69de29 diff --git a/src/layout/AdminLayout/AdminLayout.vue b/src/layout/AdminLayout/AdminLayout.vue new file mode 100644 index 0000000..a9b4040 --- /dev/null +++ b/src/layout/AdminLayout/AdminLayout.vue @@ -0,0 +1,239 @@ + + + + + diff --git a/src/router/index.ts b/src/router/index.ts index d08c0b1..57f9108 100644 --- a/src/router/index.ts +++ b/src/router/index.ts @@ -14,9 +14,32 @@ const router = createRouter({ component: () => import('@/views/SendFileView.vue') }, { - path: '/manage', + path: '/admin', name: 'Manage', - component: () => import('@/views/ManageView.vue') + component: () => import('@/layout/AdminLayout/AdminLayout.vue'), + redirect: '/admin/dashboard', + children: [ + { + path: '/admin/dashboard', + name: 'Dashboard', + component: () => import('@/views/manage/DashboardView.vue') + }, + { + path: '/admin/files', + name: 'FileManage', + component: () => import('@/views/manage/FileManageView.vue') + }, + { + path: '/admin/settings', + name: 'Settings', + component: () => import('@/views/manage/SystemSettingsView.vue') + } + ] + }, + { + path: '/login', + name: 'Login', + component: () => import('@/views/LoginView.vue') } ] }) diff --git a/src/stores/adminStore.ts b/src/stores/adminStore.ts new file mode 100644 index 0000000..9986d22 --- /dev/null +++ b/src/stores/adminStore.ts @@ -0,0 +1,11 @@ +import { defineStore } from 'pinia' +import { ref } from 'vue' + +export const useAdminData = defineStore('adminData', () => { + const adminPassword = ref(localStorage.getItem('adminPassword') || '') + function updateAdminPwd(pwd: string) { + adminPassword.value = pwd + localStorage.setItem('token', pwd) + } + return { adminPassword, updateAdminPwd } +}) diff --git a/src/stores/counter.ts b/src/stores/counter.ts deleted file mode 100644 index b6757ba..0000000 --- a/src/stores/counter.ts +++ /dev/null @@ -1,12 +0,0 @@ -import { ref, computed } from 'vue' -import { defineStore } from 'pinia' - -export const useCounterStore = defineStore('counter', () => { - const count = ref(0) - const doubleCount = computed(() => count.value * 2) - function increment() { - count.value++ - } - - return { count, doubleCount, increment } -}) diff --git a/src/utils/api.ts b/src/utils/api.ts index bbad035..85c879c 100644 --- a/src/utils/api.ts +++ b/src/utils/api.ts @@ -1,4 +1,5 @@ import axios from 'axios' +import { useRouter } from 'vue-router' // 从环境变量中获取 API 基础 URL const baseURL = @@ -38,7 +39,6 @@ api.interceptors.request.use( return Promise.reject(error) } ) - // 响应拦截器 api.interceptors.response.use( (response) => { @@ -49,8 +49,9 @@ api.interceptors.response.use( if (error.response) { switch (error.response.status) { case 401: - // 未授权,可能需要重新登录 console.error('未授权,请重新登录') + localStorage.clear() + window.location.href = '/login' break case 403: // 禁止访问 diff --git a/src/views/LoginView.vue b/src/views/LoginView.vue new file mode 100644 index 0000000..4192b3c --- /dev/null +++ b/src/views/LoginView.vue @@ -0,0 +1,219 @@ + + + + + diff --git a/src/views/ManageView.vue b/src/views/ManageView.vue index 812762b..52eec51 100644 --- a/src/views/ManageView.vue +++ b/src/views/ManageView.vue @@ -631,7 +631,7 @@ - diff --git a/src/views/SendFileView.vue b/src/views/SendFileView.vue index d3f7b0d..f543119 100644 --- a/src/views/SendFileView.vue +++ b/src/views/SendFileView.vue @@ -662,9 +662,13 @@ const handleSubmit = async () => { } else { throw new Error('服务器响应异常') } - } catch (error) { + } catch (error: any) { console.error('发送失败:', error) - alertStore.showAlert('发送失败,请稍后重试', 'error') + if (error.response.data.detail) { + alertStore.showAlert(error.response.data.detail, 'error') + } else { + alertStore.showAlert('发送失败,请稍后重试', 'error') + } } finally { // 确保无论成功还是失败,最后都重置进度条 uploadProgress.value = 0 diff --git a/src/views/manage/DashboardView.vue b/src/views/manage/DashboardView.vue new file mode 100644 index 0000000..9f5f9fb --- /dev/null +++ b/src/views/manage/DashboardView.vue @@ -0,0 +1,257 @@ + + + diff --git a/src/views/manage/FileManageView.vue b/src/views/manage/FileManageView.vue new file mode 100644 index 0000000..a118031 --- /dev/null +++ b/src/views/manage/FileManageView.vue @@ -0,0 +1,369 @@ + + + diff --git a/src/views/manage/SystemSettingsView.vue b/src/views/manage/SystemSettingsView.vue new file mode 100644 index 0000000..b6aa6bd --- /dev/null +++ b/src/views/manage/SystemSettingsView.vue @@ -0,0 +1,750 @@ + + + +