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');