From 5283487f7eb3fb2e8d35f88434135c234a8cce43 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EA=B9=80=EB=B3=B4=EA=B3=A4?= Date: Thu, 26 Feb 2026 22:20:48 +0900 Subject: [PATCH] =?UTF-8?q?feat:=20[attendance]=20=EA=B7=BC=ED=83=9C?= =?UTF-8?q?=ED=98=84=ED=99=A9/=EA=B7=BC=ED=83=9C=EA=B4=80=EB=A6=AC=20?= =?UTF-8?q?=EB=A9=94=EB=89=B4=20=EB=B6=84=EB=A6=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 근태현황(/hr/attendances): 조회 전용 (목록/캘린더/요약) - 근태관리(/hr/attendances/manage): CRUD + 승인 관리 - table-manage.blade.php: 관리용 테이블 (체크박스/수정/삭제) - table.blade.php: 조회용 테이블 (GPS 포함, CRUD 제거) - API 컨트롤러 view 파라미터로 테이블 분기 --- .../Api/Admin/HR/AttendanceController.php | 6 +- .../Controllers/HR/AttendanceController.php | 24 +- .../views/hr/attendances/index.blade.php | 671 +-------------- .../views/hr/attendances/manage.blade.php | 811 ++++++++++++++++++ .../partials/table-manage.blade.php | 133 +++ .../hr/attendances/partials/table.blade.php | 41 +- routes/web.php | 1 + 7 files changed, 978 insertions(+), 709 deletions(-) create mode 100644 resources/views/hr/attendances/manage.blade.php create mode 100644 resources/views/hr/attendances/partials/table-manage.blade.php diff --git a/app/Http/Controllers/Api/Admin/HR/AttendanceController.php b/app/Http/Controllers/Api/Admin/HR/AttendanceController.php index 83f85d02..b7d68c42 100644 --- a/app/Http/Controllers/Api/Admin/HR/AttendanceController.php +++ b/app/Http/Controllers/Api/Admin/HR/AttendanceController.php @@ -27,7 +27,11 @@ public function index(Request $request): JsonResponse|Response ); if ($request->header('HX-Request')) { - return response(view('hr.attendances.partials.table', compact('attendances'))); + $viewName = $request->input('view') === 'manage' + ? 'hr.attendances.partials.table-manage' + : 'hr.attendances.partials.table'; + + return response(view($viewName, compact('attendances'))); } return response()->json([ diff --git a/app/Http/Controllers/HR/AttendanceController.php b/app/Http/Controllers/HR/AttendanceController.php index dfb7fd37..d1e6ff76 100644 --- a/app/Http/Controllers/HR/AttendanceController.php +++ b/app/Http/Controllers/HR/AttendanceController.php @@ -6,6 +6,8 @@ use App\Models\HR\Attendance; use App\Services\HR\AttendanceService; use Illuminate\Contracts\View\View; +use Illuminate\Http\Request; +use Illuminate\Http\Response; class AttendanceController extends Controller { @@ -14,17 +16,35 @@ public function __construct( ) {} /** - * 근태현황 목록 페이지 + * 근태현황 목록 페이지 (조회 전용) */ public function index(): View { $stats = $this->attendanceService->getMonthlyStats(); $departments = $this->attendanceService->getDepartments(); - $employees = $this->attendanceService->getActiveEmployees(); $statusMap = Attendance::STATUS_MAP; return view('hr.attendances.index', [ 'stats' => $stats, + 'departments' => $departments, + 'statusMap' => $statusMap, + ]); + } + + /** + * 근태관리 페이지 (등록/수정/삭제/승인) + */ + public function manage(Request $request): View|Response + { + if ($request->header('HX-Request')) { + return response('', 200)->header('HX-Redirect', route('hr.attendances.manage')); + } + + $departments = $this->attendanceService->getDepartments(); + $employees = $this->attendanceService->getActiveEmployees(); + $statusMap = Attendance::STATUS_MAP; + + return view('hr.attendances.manage', [ 'departments' => $departments, 'employees' => $employees, 'statusMap' => $statusMap, diff --git a/resources/views/hr/attendances/index.blade.php b/resources/views/hr/attendances/index.blade.php index 7cb0b6d5..a76b4114 100644 --- a/resources/views/hr/attendances/index.blade.php +++ b/resources/views/hr/attendances/index.blade.php @@ -22,13 +22,6 @@
- -
@@ -60,10 +46,6 @@ class="px-4 py-2.5 text-sm font-medium border-b-2 transition-colors border-trans class="px-4 py-2.5 text-sm font-medium border-b-2 transition-colors border-transparent text-gray-500 hover:text-gray-700"> 요약 - {{-- 통계 카드 (HTMX 갱신 대상) --}} @@ -83,7 +65,7 @@ class="px-4 py-2.5 text-sm font-medium border-b-2 transition-colors border-trans {{-- 목록 탭 --}}
- {{-- 필터 + 일괄 삭제 --}} + {{-- 필터 --}}
@@ -127,7 +109,7 @@ class="w-full px-3 py-2 border border-gray-300 rounded-lg text-sm focus:ring-2 f value="{{ request('date_to', now()->toDateString()) }}" class="w-full px-3 py-2 border border-gray-300 rounded-lg text-sm focus:ring-2 focus:ring-blue-500 focus:border-blue-500">
-
+
-
@@ -178,262 +157,10 @@ class="min-h-[200px]">
- - {{-- 승인 탭 --}} - -{{-- 근태 등록/수정 모달 --}} - - -{{-- 일괄 등록 모달 --}} - - -{{-- 승인 신청 모달 --}} - - -{{-- GPS 설정 모달 --}} +{{-- GPS 정보 모달 --}}