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 @@ + + + +