feat:차량일지(운행기록부) 기능 구현
- VehicleLog 모델 생성 - VehicleLogController (CRUD, 엑셀 다운로드) - 차량일지 라우트 추가 (/finance/vehicle-logs/*) - React 기반 UI (vehicle-logs.blade.php) - VehicleLogMenuSeeder (법인차량관리 > 차량일지 메뉴) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
110
database/seeders/VehicleLogMenuSeeder.php
Normal file
110
database/seeders/VehicleLogMenuSeeder.php
Normal file
@@ -0,0 +1,110 @@
|
||||
<?php
|
||||
|
||||
namespace Database\Seeders;
|
||||
|
||||
use App\Models\Commons\Menu;
|
||||
use Illuminate\Database\Seeder;
|
||||
|
||||
/**
|
||||
* 차량일지 메뉴 시더
|
||||
* - 재무관리 > 법인차량관리 하위에 차량일지 메뉴 추가
|
||||
*/
|
||||
class VehicleLogMenuSeeder extends Seeder
|
||||
{
|
||||
public function run(): void
|
||||
{
|
||||
$tenantId = 1;
|
||||
|
||||
// 법인차량관리 메뉴 찾기
|
||||
$vehicleMenu = Menu::where('tenant_id', $tenantId)
|
||||
->where('name', '법인차량관리')
|
||||
->first();
|
||||
|
||||
if (!$vehicleMenu) {
|
||||
$this->command->error('법인차량관리 메뉴를 찾을 수 없습니다.');
|
||||
return;
|
||||
}
|
||||
|
||||
// 차량일지 메뉴가 이미 있는지 확인
|
||||
$existingMenu = Menu::where('tenant_id', $tenantId)
|
||||
->where('name', '차량일지')
|
||||
->where('parent_id', $vehicleMenu->id)
|
||||
->first();
|
||||
|
||||
if ($existingMenu) {
|
||||
$this->command->info('차량일지 메뉴가 이미 존재합니다.');
|
||||
return;
|
||||
}
|
||||
|
||||
// 법인차량관리가 그룹 메뉴인지 확인
|
||||
// 그룹 메뉴가 아니면 그룹으로 변경
|
||||
if ($vehicleMenu->url) {
|
||||
// 기존 URL을 차량목록으로 변경
|
||||
$vehicleListMenu = Menu::create([
|
||||
'tenant_id' => $tenantId,
|
||||
'parent_id' => $vehicleMenu->id,
|
||||
'name' => '차량목록',
|
||||
'url' => $vehicleMenu->url,
|
||||
'icon' => 'car',
|
||||
'sort_order' => 1,
|
||||
'is_active' => true,
|
||||
]);
|
||||
$this->command->info("차량목록 하위 메뉴 생성: {$vehicleListMenu->url}");
|
||||
|
||||
// 법인차량관리를 그룹 메뉴로 변경
|
||||
$vehicleMenu->url = null;
|
||||
$vehicleMenu->save();
|
||||
$this->command->info('법인차량관리를 그룹 메뉴로 변경');
|
||||
|
||||
// 차량일지 메뉴 생성
|
||||
$vehicleLogMenu = Menu::create([
|
||||
'tenant_id' => $tenantId,
|
||||
'parent_id' => $vehicleMenu->id,
|
||||
'name' => '차량일지',
|
||||
'url' => '/finance/vehicle-logs',
|
||||
'icon' => 'file-text',
|
||||
'sort_order' => 2,
|
||||
'is_active' => true,
|
||||
]);
|
||||
$this->command->info("차량일지 메뉴 생성: {$vehicleLogMenu->url}");
|
||||
|
||||
// 차량정비 메뉴가 있으면 순서 조정
|
||||
$maintenanceMenu = Menu::where('tenant_id', $tenantId)
|
||||
->where('name', '차량정비')
|
||||
->where('parent_id', $vehicleMenu->id)
|
||||
->first();
|
||||
|
||||
if ($maintenanceMenu) {
|
||||
$maintenanceMenu->sort_order = 3;
|
||||
$maintenanceMenu->save();
|
||||
}
|
||||
} else {
|
||||
// 이미 그룹 메뉴인 경우 차량일지만 추가
|
||||
// 기존 하위 메뉴 순서 확인
|
||||
$maxSortOrder = Menu::where('parent_id', $vehicleMenu->id)
|
||||
->max('sort_order') ?? 0;
|
||||
|
||||
$vehicleLogMenu = Menu::create([
|
||||
'tenant_id' => $tenantId,
|
||||
'parent_id' => $vehicleMenu->id,
|
||||
'name' => '차량일지',
|
||||
'url' => '/finance/vehicle-logs',
|
||||
'icon' => 'file-text',
|
||||
'sort_order' => $maxSortOrder + 1,
|
||||
'is_active' => true,
|
||||
]);
|
||||
$this->command->info("차량일지 메뉴 생성: {$vehicleLogMenu->url}");
|
||||
}
|
||||
|
||||
// 결과 출력
|
||||
$this->command->info('');
|
||||
$this->command->info('=== 법인차량관리 하위 메뉴 ===');
|
||||
$children = Menu::where('parent_id', $vehicleMenu->id)
|
||||
->orderBy('sort_order')
|
||||
->get(['name', 'url', 'sort_order']);
|
||||
|
||||
foreach ($children as $child) {
|
||||
$this->command->info("{$child->sort_order}. {$child->name} ({$child->url})");
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user