From 7861eef05b8aed7feab3a8aecebc27ce4b6fb302 Mon Sep 17 00:00:00 2001 From: sb Date: Sat, 4 Jul 2026 12:10:06 +0900 Subject: [PATCH] =?UTF-8?q?feat(admin):=20=EC=8B=A0=EA=B3=A0=20=EA=B4=80?= =?UTF-8?q?=EB=A6=AC=20=ED=99=94=EB=A9=B4=20=E2=80=94=20=EC=8B=A0=EA=B3=A0?= =?UTF-8?q?=EB=90=9C=20=EA=B8=80/=EB=8C=93=EA=B8=80=20=EB=AA=A9=EB=A1=9D?= =?UTF-8?q?=C2=B7=EB=B8=94=EB=9D=BC=EC=9D=B8=EB=93=9C=C2=B7=EC=8B=A0?= =?UTF-8?q?=EA=B3=A0=20=EB=AC=B4=EC=8B=9C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - /admin/reports 라우트 + 사이드바 메뉴 + 헤더 타이틀 - boardApi.reports()/dismissReport() 추가(기존 block/unblock 재사용) - 글 보기·블라인드(사유)·해제·신고 무시 액션 Co-Authored-By: Claude Opus 4.8 --- src/api/boardApi.js | 8 + src/components/layout/AppHeader.vue | 1 + src/components/layout/AppSidebar.vue | 5 + src/router/index.js | 6 + src/views/admin/ReportAdminView.vue | 332 +++++++++++++++++++++++++++ 5 files changed, 352 insertions(+) create mode 100644 src/views/admin/ReportAdminView.vue diff --git a/src/api/boardApi.js b/src/api/boardApi.js index 65cd1a2..21beebe 100644 --- a/src/api/boardApi.js +++ b/src/api/boardApi.js @@ -76,6 +76,14 @@ export const boardApi = { unblockComment(commentId) { return http.post(`/board/comments/${commentId}/unblock`) }, + // 신고 관리 (관리자) — 신고된 글/댓글 목록 + reports() { + return http.get('/board/reports') + }, + // 신고 무시 (관리자) — 블라인드 없이 신고 기록만 초기화 + dismissReport(targetType, targetId) { + return http.post('/board/reports/dismiss', { targetType, targetId }) + }, block(id, reason) { return http.post(`/board/posts/${id}/block`, { reason }) }, diff --git a/src/components/layout/AppHeader.vue b/src/components/layout/AppHeader.vue index cf7568e..cd9bc29 100644 --- a/src/components/layout/AppHeader.vue +++ b/src/components/layout/AppHeader.vue @@ -28,6 +28,7 @@ const TITLES = { users: '회원 관리', 'admin-tags': '태그 관리(관리자)', 'admin-default-categories': '기본 분류 설정', + 'admin-reports': '신고 관리', settings: '설정', 'settings-account': '계정정보', 'settings-account-edit': '가입정보 변경', diff --git a/src/components/layout/AppSidebar.vue b/src/components/layout/AppSidebar.vue index 4d2dbba..67d36f7 100644 --- a/src/components/layout/AppSidebar.vue +++ b/src/components/layout/AppSidebar.vue @@ -25,6 +25,7 @@ const icons = { board: '', users: '', sliders: '', + flag: '', } @@ -106,6 +107,10 @@ const icons = { 기본 분류 설정 + + + 신고 관리 + diff --git a/src/router/index.js b/src/router/index.js index 95e30e3..e665040 100644 --- a/src/router/index.js +++ b/src/router/index.js @@ -104,6 +104,12 @@ const router = createRouter({ component: () => import('../views/admin/DefaultCategoryView.vue'), meta: { requiresAuth: true, requiresAdmin: true }, }, + { + path: '/admin/reports', + name: 'admin-reports', + component: () => import('../views/admin/ReportAdminView.vue'), + meta: { requiresAuth: true, requiresAdmin: true }, + }, { // 구 가계부 대시보드 → 내역으로 (대시보드 정보는 홈/통계로 이전) path: '/account', diff --git a/src/views/admin/ReportAdminView.vue b/src/views/admin/ReportAdminView.vue new file mode 100644 index 0000000..67bd59a --- /dev/null +++ b/src/views/admin/ReportAdminView.vue @@ -0,0 +1,332 @@ + + + + +