From fc640407d9f927ed73617ee601284ca0bc367a5d Mon Sep 17 00:00:00 2001 From: YGXB_net Date: Fri, 19 Jun 2026 17:36:50 +0800 Subject: [PATCH] =?UTF-8?q?feat(admin):=20=E5=AE=9E=E7=8E=B0=E7=AE=A1?= =?UTF-8?q?=E7=90=86=E5=91=98=E7=99=BB=E5=BD=95=E8=AE=A4=E8=AF=81=E5=92=8C?= =?UTF-8?q?=E9=A1=B5=E9=9D=A2=E6=9D=83=E9=99=90=E6=8E=A7=E5=88=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 添加管理员密码验证登录功能 - 实现登录状态管理和用户界面显示 - 集成权限检查确保页面访问安全 - 添加登录/登出流程处理 - 重构AdminView组件结构和样式 - 集成Element Plus图标和UI组件 - 添加设置页面路由配置 - 优化Token管理页面折叠表单设计 - 移除旧的响应式布局相关代码 - 更新应用标题动态渲染逻辑 --- web/components.d.ts | 3 + web/src/App.vue | 12 -- web/src/main.ts | 24 ++-- web/src/router/index.ts | 8 ++ web/src/stores/counter.ts | 4 - web/src/views/AdminView.vue | 159 +++++++++++++++++++---- web/src/views/HomeView.vue | 130 +++++-------------- web/src/views/admin/SettingsView.vue | 11 ++ web/src/views/admin/TokenDetailView.vue | 37 +----- web/src/views/admin/TokenManageView.vue | 166 ++++++------------------ 10 files changed, 246 insertions(+), 308 deletions(-) create mode 100644 web/src/views/admin/SettingsView.vue diff --git a/web/components.d.ts b/web/components.d.ts index ebbc46f..13f301f 100644 --- a/web/components.d.ts +++ b/web/components.d.ts @@ -13,7 +13,10 @@ declare module 'vue' { export interface GlobalComponents { AddDataDialog: typeof import('./src/components/AddDataDialog.vue')['default'] ElButton: typeof import('element-plus/es')['ElButton'] + ElCollapse: typeof import('element-plus/es')['ElCollapse'] + ElCollapseItem: typeof import('element-plus/es')['ElCollapseItem'] ElDialog: typeof import('element-plus/es')['ElDialog'] + ElDivider: typeof import('element-plus/es')['ElDivider'] ElDropdown: typeof import('element-plus/es')['ElDropdown'] ElDropdownItem: typeof import('element-plus/es')['ElDropdownItem'] ElDropdownMenu: typeof import('element-plus/es')['ElDropdownMenu'] diff --git a/web/src/App.vue b/web/src/App.vue index 9c1bfe1..3ae82cf 100644 --- a/web/src/App.vue +++ b/web/src/App.vue @@ -57,16 +57,4 @@ html, body { color: var(--el-text-color-primary); margin: 20px 0 16px; } - -/* 响应式 */ -@media (max-width: 768px) { - .content-card { - padding: 16px; - border-radius: 0; - } - - .hide-on-mobile { - display: none; - } -} \ No newline at end of file diff --git a/web/src/main.ts b/web/src/main.ts index d9ab945..557b650 100644 --- a/web/src/main.ts +++ b/web/src/main.ts @@ -1,21 +1,29 @@ import {createApp} from 'vue' import {createPinia} from 'pinia' import persistedState from 'pinia-plugin-persistedstate'; - import App from './App.vue' import router from './router' import ElementPlus from 'element-plus' import 'element-plus/dist/index.css' import './assets/main.css' +const pinia = createPinia() +pinia.use(persistedState) + const app = createApp(App) - -if (import.meta.env.DEV) { - document.title = '抖音数据去重 - dev' -} - -app.use(createPinia().use(persistedState)) +app.use(pinia) app.use(router) app.use(ElementPlus) - app.mount('#app') + + +router.beforeEach((to, from) => { + var postfix: string = '' + if (import.meta.env.DEV) { + postfix = '-dev' + } + + if (to.meta.title) { + document.title = to.meta.title + postfix + } +}) \ No newline at end of file diff --git a/web/src/router/index.ts b/web/src/router/index.ts index 17d1237..559b3f3 100644 --- a/web/src/router/index.ts +++ b/web/src/router/index.ts @@ -4,17 +4,20 @@ import TokenManageView from '@/views/admin/TokenManageView.vue' import TokenDetailView from '@/views/admin/TokenDetailView.vue' import AdminView from '@/views/AdminView.vue' import HomeView from '@/views/HomeView.vue' +import SettingsView from '@/views/admin/SettingsView.vue' const routes = [ { path: '/', name: "Home", component: HomeView, + meta: {title: "抖音数据去重",} }, { path: '/haha', name: "Admin", component: AdminView, + meta: {title: "抖音数据去重 | 管理后台",}, children: [ { path: '', @@ -26,6 +29,11 @@ const routes = [ name: "TokenDetail", component: TokenDetailView }, + { + path: "settings", + name: "AdminSettings", + component: SettingsView, + } ], }, diff --git a/web/src/stores/counter.ts b/web/src/stores/counter.ts index 0f4fc5e..858b08a 100644 --- a/web/src/stores/counter.ts +++ b/web/src/stores/counter.ts @@ -2,13 +2,9 @@ import {ref} from 'vue' import {defineStore} from 'pinia' export const useCounterStore = defineStore('counter', () => { - const homeToken = ref("") - const token = ref("") - const isAdmin = ref(false) - return {token, isAdmin} }, { persist: true diff --git a/web/src/views/AdminView.vue b/web/src/views/AdminView.vue index 30f5e6d..926888b 100644 --- a/web/src/views/AdminView.vue +++ b/web/src/views/AdminView.vue @@ -1,28 +1,49 @@ @@ -30,27 +51,42 @@ const logout = () => {
- +
- - 管理员 + + + + + + + + {{ _userName }}