diff --git a/app/Http/Controllers/Juil/PlanningController.php b/app/Http/Controllers/Juil/PlanningController.php index 97baaf3d..7de5f8db 100644 --- a/app/Http/Controllers/Juil/PlanningController.php +++ b/app/Http/Controllers/Juil/PlanningController.php @@ -48,6 +48,15 @@ public function constructionPmis(Request $request): View|Response return view('juil.construction-pmis'); } + public function bimViewer(Request $request): View|Response + { + if ($request->header('HX-Request')) { + return response('', 200)->header('HX-Redirect', route('juil.construction-pmis.bim-viewer')); + } + + return view('juil.bim-viewer'); + } + 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 new file mode 100644 index 00000000..c8f22db4 --- /dev/null +++ b/resources/views/juil/bim-viewer.blade.php @@ -0,0 +1,551 @@ +@extends('layouts.app') + +@section('title', 'BIM 뷰어') + +@section('content') +
+@endsection + +@push('scripts') + + + + +@include('partials.react-cdn') + +@endpush diff --git a/resources/views/juil/construction-pmis.blade.php b/resources/views/juil/construction-pmis.blade.php index 04b5088c..91ab51e2 100644 --- a/resources/views/juil/construction-pmis.blade.php +++ b/resources/views/juil/construction-pmis.blade.php @@ -20,7 +20,9 @@ ════════════════════════════════════════════════ */ const PMIS_MENUS = [ - { icon: 'ri-building-2-line', label: 'BIM 관리', id: 'bim' }, + { 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-file-list-3-line', label: '품질관리', id: 'quality' }, { icon: 'ri-shield-check-line', label: '안전관리', id: 'safety' }, @@ -29,6 +31,7 @@ function PmisSidebar({ onOpenProfile }) { const [profile, setProfile] = useState(null); + const [expandedMenu, setExpandedMenu] = useState(null); useEffect(() => { fetch('/juil/construction-pmis/profile', { headers: { 'Accept': 'application/json' } }) @@ -73,16 +76,28 @@ className="absolute top-3 right-3 p-1 rounded-lg text-gray-400 hover:text-gray-6 {/* 네비게이션 메뉴 */}
{PMIS_MENUS.map(menu => ( - +
+ + {expandedMenu === menu.id && menu.children && ( +
+ {menu.children.map(child => ( + + {child.label} + + ))} +
+ )} +
))}
diff --git a/routes/web.php b/routes/web.php index ff8a2947..d73a1035 100644 --- a/routes/web.php +++ b/routes/web.php @@ -1728,6 +1728,7 @@ Route::get('/construction-pmis/weather', [PlanningController::class, 'pmisWeather'])->name('construction-pmis.weather'); Route::get('/construction-pmis/profile', [PlanningController::class, 'pmisProfile'])->name('construction-pmis.profile'); 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::prefix('construction-photos')->name('construction-photos.')->group(function () {