From c3153bb9989768db08329f4b820f9073d58ae201 Mon Sep 17 00:00:00 2001 From: Mplan Date: Thu, 23 Jul 2026 23:37:08 +0800 Subject: [PATCH] feat(admin): add focused image review workspace --- src/views/admin/AdminView.vue | 196 +++++++++++++++++++++++++++++----- 1 file changed, 170 insertions(+), 26 deletions(-) diff --git a/src/views/admin/AdminView.vue b/src/views/admin/AdminView.vue index 1025511..c3fe875 100644 --- a/src/views/admin/AdminView.vue +++ b/src/views/admin/AdminView.vue @@ -62,6 +62,7 @@ const dashboardStats = ref({ const users = ref([]) const images = ref([]) const selectedReviewIds = ref>(new Set()) +const activeReviewId = ref(null) const selectedImageIds = ref>(new Set()) const imageFilter = ref('all') const selectedImage = ref(null) @@ -86,6 +87,13 @@ const tabs = [ ] satisfies Array<{ key: AdminTab; label: string; code: string; description: string }> const pendingImages = computed(() => images.value.filter(item => item.status === 'pending')) +const activeReviewImage = computed(() => + pendingImages.value.find(item => item.id === activeReviewId.value) ?? pendingImages.value[0] ?? null, +) +const activeReviewPosition = computed(() => { + if (!activeReviewImage.value) return 0 + return pendingImages.value.findIndex(item => item.id === activeReviewImage.value?.id) + 1 +}) const activeTabMeta = computed(() => tabs.find(tab => tab.key === activeTab.value) ?? tabs[0]) const filteredImages = computed(() => { if (imageFilter.value === 'all') return images.value @@ -173,7 +181,7 @@ function formatDateTime(iso: string | null) { } function formatCoordinate(value: number | null) { - return value === null ? '未记录' : value.toFixed(2) + return value === null ? '未记录' : value.toFixed(4) } function getPercentage(value: number, total: number) { @@ -736,39 +744,175 @@ onMounted(loadAdminData) -
-
- -
-
-
-

{{ item.cloudTypeName }}

-

上传者:{{ item.username }}

-
+
+ + +
+
+
+
+
+

{{ activeReviewImage.cloudTypeName }}

+

内容编号 {{ activeReviewImage.id }}

+
+ + {{ rarityMeta[activeReviewImage.cloudTypeRarity].label }} + +
+ +
+

点击图片可查看原图与地图

+ + 查看完整详情 + +
+
+ +
+ +

上传说明

+

+ {{ activeReviewImage.description || '上传者没有填写图片说明。' }} +

-
+ + +