From 27f520d303a214e475e66cfc53fed666f75f47c0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EA=B9=80=EB=B3=B4=EA=B3=A4?= Date: Thu, 5 Mar 2026 17:23:14 +0900 Subject: [PATCH] =?UTF-8?q?feat:=20[approval]=20=EA=B8=B0=EC=95=88?= =?UTF-8?q?=ED=95=A8=20=ED=8E=98=EC=9D=B4=EC=A7=80=20=EC=82=AC=EC=9D=B4?= =?UTF-8?q?=EC=A6=88=20=EC=84=A0=ED=83=9D,=20=EC=B2=B4=ED=81=AC=EB=B0=95?= =?UTF-8?q?=EC=8A=A4=20=EC=84=A0=ED=83=9D=EC=82=AD=EC=A0=9C=20=EA=B8=B0?= =?UTF-8?q?=EB=8A=A5=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 페이지당 표시 건수 선택 (15/50/100/200/500, 기본 15) - 첫 번째 열 체크박스 추가 (전체선택/개별선택) - 선택삭제 버튼 및 bulk-delete API 엔드포인트 추가 --- .../Api/Admin/ApprovalApiController.php | 44 ++++++++ resources/views/approvals/drafts.blade.php | 104 +++++++++++++++++- routes/api.php | 3 + 3 files changed, 147 insertions(+), 4 deletions(-) diff --git a/app/Http/Controllers/Api/Admin/ApprovalApiController.php b/app/Http/Controllers/Api/Admin/ApprovalApiController.php index cdb31ce9..5dcccd36 100644 --- a/app/Http/Controllers/Api/Admin/ApprovalApiController.php +++ b/app/Http/Controllers/Api/Admin/ApprovalApiController.php @@ -210,6 +210,50 @@ public function forceDestroy(int $id): JsonResponse } } + /** + * 선택삭제 (기안자 본인 문서만) + */ + public function bulkDestroy(Request $request): JsonResponse + { + $ids = $request->input('ids', []); + if (empty($ids) || ! is_array($ids)) { + return response()->json([ + 'success' => false, + 'message' => '삭제할 문서를 선택하세요.', + ], 400); + } + + $user = auth()->user(); + $deleted = 0; + $failed = 0; + + foreach ($ids as $id) { + try { + $approval = $this->service->getApproval($id); + if ($approval->isDeletableBy($user)) { + $this->service->deleteApproval($id, $user); + $deleted++; + } else { + $failed++; + } + } catch (\Throwable) { + $failed++; + } + } + + $message = "{$deleted}건 삭제 완료"; + if ($failed > 0) { + $message .= " ({$failed}건 삭제 불가)"; + } + + return response()->json([ + 'success' => true, + 'message' => $message, + 'deleted' => $deleted, + 'failed' => $failed, + ]); + } + // ========================================================================= // 워크플로우 // ========================================================================= diff --git a/resources/views/approvals/drafts.blade.php b/resources/views/approvals/drafts.blade.php index fd811937..97c61d72 100644 --- a/resources/views/approvals/drafts.blade.php +++ b/resources/views/approvals/drafts.blade.php @@ -41,6 +41,26 @@ class="w-full px-4 py-2 border border-gray-300 rounded-lg focus:outline-none foc + +
+
+ +
+
+ 페이지당 + + +
+
+
@@ -393,6 +413,7 @@ class="toss-input-sm" style="padding-left: 32px;"> @push('scripts')