From c8fd3e2739149c6f7d73adca9fbfabe1c1630da7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EA=B9=80=EB=B3=B4=EA=B3=A4?= Date: Thu, 12 Mar 2026 13:52:20 +0900 Subject: [PATCH] =?UTF-8?q?feat:=20[pmis]=20=EC=8B=9C=EA=B3=B5=EA=B4=80?= =?UTF-8?q?=EB=A6=AC=20=ED=95=98=EC=9C=84=EB=A9=94=EB=89=B4=206=EA=B0=9C?= =?UTF-8?q?=20=EC=B6=94=EA=B0=80=20=EB=B0=8F=20=EC=9D=B8=EC=9B=90=EA=B4=80?= =?UTF-8?q?=EB=A6=AC=20=ED=8E=98=EC=9D=B4=EC=A7=80=20=EA=B5=AC=ED=98=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 시공관리 하위메뉴: 인원관리, 장비관리, 자재관리, 공사량관리, 출면일보, 작업일보 - 인원관리 4개 탭 구현: 인원등록, 출역현황, 투입현황(업체별), 투입현황(근로자별) - PMIS 사이드바에 시공관리 children 메뉴 추가 (대시보드, BIM 뷰어 포함) - 나머지 5개 메뉴 placeholder 페이지 생성 --- .../Controllers/Juil/PlanningController.php | 56 ++ resources/views/juil/bim-viewer.blade.php | 9 +- .../views/juil/construction-pmis.blade.php | 9 +- .../juil/pmis-daily-attendance.blade.php | 117 ++++ .../views/juil/pmis-daily-report.blade.php | 117 ++++ resources/views/juil/pmis-equipment.blade.php | 117 ++++ resources/views/juil/pmis-materials.blade.php | 117 ++++ .../views/juil/pmis-work-volume.blade.php | 117 ++++ resources/views/juil/pmis-workforce.blade.php | 577 ++++++++++++++++++ routes/web.php | 8 + 10 files changed, 1242 insertions(+), 2 deletions(-) create mode 100644 resources/views/juil/pmis-daily-attendance.blade.php create mode 100644 resources/views/juil/pmis-daily-report.blade.php create mode 100644 resources/views/juil/pmis-equipment.blade.php create mode 100644 resources/views/juil/pmis-materials.blade.php create mode 100644 resources/views/juil/pmis-work-volume.blade.php create mode 100644 resources/views/juil/pmis-workforce.blade.php diff --git a/app/Http/Controllers/Juil/PlanningController.php b/app/Http/Controllers/Juil/PlanningController.php index 7de5f8db..bad52423 100644 --- a/app/Http/Controllers/Juil/PlanningController.php +++ b/app/Http/Controllers/Juil/PlanningController.php @@ -57,6 +57,62 @@ public function bimViewer(Request $request): View|Response return view('juil.bim-viewer'); } + // ── 시공관리 ── + + public function pmisWorkforce(Request $request): View|Response + { + if ($request->header('HX-Request')) { + return response('', 200)->header('HX-Redirect', route('juil.construction-pmis.workforce')); + } + + return view('juil.pmis-workforce'); + } + + public function pmisEquipment(Request $request): View|Response + { + if ($request->header('HX-Request')) { + return response('', 200)->header('HX-Redirect', route('juil.construction-pmis.equipment')); + } + + return view('juil.pmis-equipment'); + } + + public function pmisMaterials(Request $request): View|Response + { + if ($request->header('HX-Request')) { + return response('', 200)->header('HX-Redirect', route('juil.construction-pmis.materials')); + } + + return view('juil.pmis-materials'); + } + + public function pmisWorkVolume(Request $request): View|Response + { + if ($request->header('HX-Request')) { + return response('', 200)->header('HX-Redirect', route('juil.construction-pmis.work-volume')); + } + + return view('juil.pmis-work-volume'); + } + + public function pmisDailyAttendance(Request $request): View|Response + { + if ($request->header('HX-Request')) { + return response('', 200)->header('HX-Redirect', route('juil.construction-pmis.daily-attendance')); + } + + return view('juil.pmis-daily-attendance'); + } + + public function pmisDailyReport(Request $request): View|Response + { + if ($request->header('HX-Request')) { + return response('', 200)->header('HX-Redirect', route('juil.construction-pmis.daily-report')); + } + + return view('juil.pmis-daily-report'); + } + public function pmisWeather(WeatherService $weatherService): JsonResponse { $forecasts = $weatherService->getWeeklyForecast(); diff --git a/resources/views/juil/bim-viewer.blade.php b/resources/views/juil/bim-viewer.blade.php index 7f568858..7fd9cf2d 100644 --- a/resources/views/juil/bim-viewer.blade.php +++ b/resources/views/juil/bim-viewer.blade.php @@ -587,7 +587,14 @@ function BimSidebar() { }, []); const menus = [ { icon: 'ri-building-2-line', label: 'BIM 관리', active: true, children: [{ label: 'BIM 뷰어', active: true }] }, - { icon: 'ri-line-chart-line', label: '시공관리' }, + { icon: 'ri-line-chart-line', label: '시공관리', children: [ + { label: '인원관리', url: '/juil/construction-pmis/workforce' }, + { label: '장비관리', url: '/juil/construction-pmis/equipment' }, + { label: '자재관리', url: '/juil/construction-pmis/materials' }, + { label: '공사량관리', url: '/juil/construction-pmis/work-volume' }, + { label: '출면일보', url: '/juil/construction-pmis/daily-attendance' }, + { label: '작업일보', url: '/juil/construction-pmis/daily-report' }, + ]}, { icon: 'ri-file-list-3-line', label: '품질관리' }, { icon: 'ri-shield-check-line', label: '안전관리' }, { icon: 'ri-folder-line', label: '자료실' }, diff --git a/resources/views/juil/construction-pmis.blade.php b/resources/views/juil/construction-pmis.blade.php index 91ab51e2..07976e92 100644 --- a/resources/views/juil/construction-pmis.blade.php +++ b/resources/views/juil/construction-pmis.blade.php @@ -23,7 +23,14 @@ { icon: 'ri-building-2-line', label: 'BIM 관리', id: 'bim', children: [ { label: 'BIM 뷰어', url: '/juil/construction-pmis/bim-viewer' }, ]}, - { icon: 'ri-line-chart-line', label: '시공관리', id: 'construction' }, + { icon: 'ri-line-chart-line', label: '시공관리', id: 'construction', children: [ + { label: '인원관리', url: '/juil/construction-pmis/workforce' }, + { label: '장비관리', url: '/juil/construction-pmis/equipment' }, + { label: '자재관리', url: '/juil/construction-pmis/materials' }, + { label: '공사량관리', url: '/juil/construction-pmis/work-volume' }, + { label: '출면일보', url: '/juil/construction-pmis/daily-attendance' }, + { label: '작업일보', url: '/juil/construction-pmis/daily-report' }, + ]}, { icon: 'ri-file-list-3-line', label: '품질관리', id: 'quality' }, { icon: 'ri-shield-check-line', label: '안전관리', id: 'safety' }, { icon: 'ri-folder-line', label: '자료실', id: 'archive' }, diff --git a/resources/views/juil/pmis-daily-attendance.blade.php b/resources/views/juil/pmis-daily-attendance.blade.php new file mode 100644 index 00000000..0d02ebbf --- /dev/null +++ b/resources/views/juil/pmis-daily-attendance.blade.php @@ -0,0 +1,117 @@ +@extends('layouts.app') + +@section('title', '출면일보 - 건설PMIS') + +@section('content') +
+@endsection + +@push('scripts') + + +@include('partials.react-cdn') + +@endpush diff --git a/resources/views/juil/pmis-daily-report.blade.php b/resources/views/juil/pmis-daily-report.blade.php new file mode 100644 index 00000000..8ace793e --- /dev/null +++ b/resources/views/juil/pmis-daily-report.blade.php @@ -0,0 +1,117 @@ +@extends('layouts.app') + +@section('title', '작업일보 - 건설PMIS') + +@section('content') +
+@endsection + +@push('scripts') + + +@include('partials.react-cdn') + +@endpush diff --git a/resources/views/juil/pmis-equipment.blade.php b/resources/views/juil/pmis-equipment.blade.php new file mode 100644 index 00000000..336a5e24 --- /dev/null +++ b/resources/views/juil/pmis-equipment.blade.php @@ -0,0 +1,117 @@ +@extends('layouts.app') + +@section('title', '장비관리 - 건설PMIS') + +@section('content') +
+@endsection + +@push('scripts') + + +@include('partials.react-cdn') + +@endpush diff --git a/resources/views/juil/pmis-materials.blade.php b/resources/views/juil/pmis-materials.blade.php new file mode 100644 index 00000000..ef7e2185 --- /dev/null +++ b/resources/views/juil/pmis-materials.blade.php @@ -0,0 +1,117 @@ +@extends('layouts.app') + +@section('title', '자재관리 - 건설PMIS') + +@section('content') +
+@endsection + +@push('scripts') + + +@include('partials.react-cdn') + +@endpush diff --git a/resources/views/juil/pmis-work-volume.blade.php b/resources/views/juil/pmis-work-volume.blade.php new file mode 100644 index 00000000..ad8bff16 --- /dev/null +++ b/resources/views/juil/pmis-work-volume.blade.php @@ -0,0 +1,117 @@ +@extends('layouts.app') + +@section('title', '공사량관리 - 건설PMIS') + +@section('content') +
+@endsection + +@push('scripts') + + +@include('partials.react-cdn') + +@endpush diff --git a/resources/views/juil/pmis-workforce.blade.php b/resources/views/juil/pmis-workforce.blade.php new file mode 100644 index 00000000..e2c338f9 --- /dev/null +++ b/resources/views/juil/pmis-workforce.blade.php @@ -0,0 +1,577 @@ +@extends('layouts.app') + +@section('title', '인원관리 - 건설PMIS') + +@section('content') +
+@endsection + +@push('scripts') + + +@include('partials.react-cdn') + +@endpush diff --git a/routes/web.php b/routes/web.php index d73a1035..7b5295cf 100644 --- a/routes/web.php +++ b/routes/web.php @@ -1730,6 +1730,14 @@ Route::put('/construction-pmis/profile', [PlanningController::class, 'pmisProfileUpdate'])->name('construction-pmis.profile.update'); Route::get('/construction-pmis/bim-viewer', [PlanningController::class, 'bimViewer'])->name('construction-pmis.bim-viewer'); + // 시공관리 + Route::get('/construction-pmis/workforce', [PlanningController::class, 'pmisWorkforce'])->name('construction-pmis.workforce'); + Route::get('/construction-pmis/equipment', [PlanningController::class, 'pmisEquipment'])->name('construction-pmis.equipment'); + Route::get('/construction-pmis/materials', [PlanningController::class, 'pmisMaterials'])->name('construction-pmis.materials'); + Route::get('/construction-pmis/work-volume', [PlanningController::class, 'pmisWorkVolume'])->name('construction-pmis.work-volume'); + Route::get('/construction-pmis/daily-attendance', [PlanningController::class, 'pmisDailyAttendance'])->name('construction-pmis.daily-attendance'); + Route::get('/construction-pmis/daily-report', [PlanningController::class, 'pmisDailyReport'])->name('construction-pmis.daily-report'); + // 공사현장 사진대지 Route::prefix('construction-photos')->name('construction-photos.')->group(function () { Route::get('/', [ConstructionSitePhotoController::class, 'index'])->name('index');