From 45a4e834dd6f4f0922ce200f36f8955e32797b3f Mon Sep 17 00:00:00 2001 From: Mplan Date: Thu, 23 Jul 2026 23:32:44 +0800 Subject: [PATCH 1/8] feat(admin): rebuild console with sidebar navigation --- src/views/admin/AdminView.vue | 143 ++++++++++++++++++++++------------ 1 file changed, 94 insertions(+), 49 deletions(-) diff --git a/src/views/admin/AdminView.vue b/src/views/admin/AdminView.vue index 742873a..4930802 100644 --- a/src/views/admin/AdminView.vue +++ b/src/views/admin/AdminView.vue @@ -79,13 +79,14 @@ const statusMeta = { } satisfies Record const tabs = [ - { key: 'dashboard', label: '数据看板' }, - { key: 'review', label: '内容审核' }, - { key: 'users', label: '用户管理' }, - { key: 'images', label: '图片管理' }, -] satisfies Array<{ key: AdminTab; label: string }> + { key: 'dashboard', label: '数据看板', code: '01', description: '运行概览与内容分布' }, + { key: 'review', label: '内容审核', code: '02', description: '处理待审核上传' }, + { key: 'users', label: '用户管理', code: '03', description: '角色与账号状态' }, + { key: 'images', label: '图片管理', code: '04', description: '内容状态与可见性' }, +] satisfies Array<{ key: AdminTab; label: string; code: string; description: string }> const pendingImages = computed(() => images.value.filter(item => item.status === 'pending')) +const activeTabMeta = computed(() => tabs.find(tab => tab.key === activeTab.value) ?? tabs[0]) const filteredImages = computed(() => { if (imageFilter.value === 'all') return images.value return images.value.filter(item => item.status === imageFilter.value) @@ -408,63 +409,106 @@ onMounted(loadAdminData)