From 32bb5795d116462e20b462a8f257fc9b7361ca41 Mon Sep 17 00:00:00 2001 From: pro Date: Thu, 29 Jan 2026 22:20:32 +0900 Subject: [PATCH] =?UTF-8?q?feat:=EA=B3=A0=EA=B0=9D=EA=B4=80=EB=A6=AC=20?= =?UTF-8?q?=EC=83=81=EC=84=B8/=EC=88=98=EC=A0=95=20=EB=AA=A8=EB=8B=AC?= =?UTF-8?q?=EC=B0=BD=20=EA=B5=AC=ED=98=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - TenantProspectController에 modalShow, modalEdit 메서드 추가 - prospects 라우트에 modal-show, modal-edit 엔드포인트 추가 - index.blade.php에 모달 컨테이너 및 JavaScript 추가 - partials/show-modal.blade.php, edit-modal.blade.php 신규 생성 Co-Authored-By: Claude Opus 4.5 --- .../Sales/TenantProspectController.php | 21 +++ .../views/sales/prospects/index.blade.php | 109 ++++++++++++- .../prospects/partials/edit-modal.blade.php | 109 +++++++++++++ .../prospects/partials/show-modal.blade.php | 150 ++++++++++++++++++ routes/web.php | 2 + 5 files changed, 389 insertions(+), 2 deletions(-) create mode 100644 resources/views/sales/prospects/partials/edit-modal.blade.php create mode 100644 resources/views/sales/prospects/partials/show-modal.blade.php diff --git a/app/Http/Controllers/Sales/TenantProspectController.php b/app/Http/Controllers/Sales/TenantProspectController.php index 730babef..ef907777 100644 --- a/app/Http/Controllers/Sales/TenantProspectController.php +++ b/app/Http/Controllers/Sales/TenantProspectController.php @@ -220,6 +220,27 @@ public function checkBusinessNumber(Request $request) return response()->json($result); } + /** + * 모달용 상세 정보 + */ + public function modalShow(int $id): View + { + $prospect = TenantProspect::with(['registeredBy', 'tenant', 'convertedBy']) + ->findOrFail($id); + + return view('sales.prospects.partials.show-modal', compact('prospect')); + } + + /** + * 모달용 수정 폼 + */ + public function modalEdit(int $id): View + { + $prospect = TenantProspect::findOrFail($id); + + return view('sales.prospects.partials.edit-modal', compact('prospect')); + } + /** * 첨부 이미지 삭제 (AJAX) */ diff --git a/resources/views/sales/prospects/index.blade.php b/resources/views/sales/prospects/index.blade.php index adbca542..a7b334d3 100644 --- a/resources/views/sales/prospects/index.blade.php +++ b/resources/views/sales/prospects/index.blade.php @@ -114,9 +114,9 @@ class="w-full px-4 py-2 border border-gray-300 rounded-lg focus:outline-none foc @endif - 상세 + @if(!$prospect->isConverted()) - 수정 + @if($prospect->isActive())
@@ -152,4 +152,109 @@ class="w-full px-4 py-2 border border-gray-300 rounded-lg focus:outline-none foc @endif + + + @endsection + +@push('scripts') + +@endpush diff --git a/resources/views/sales/prospects/partials/edit-modal.blade.php b/resources/views/sales/prospects/partials/edit-modal.blade.php new file mode 100644 index 00000000..35cab77e --- /dev/null +++ b/resources/views/sales/prospects/partials/edit-modal.blade.php @@ -0,0 +1,109 @@ +{{-- 고객 수정 모달 내용 --}} +
+ +
+
+

고객 정보 수정

+

{{ $prospect->company_name }} ({{ $prospect->business_number }})

+
+ +
+ + + + @csrf + @method('PUT') + + +
+ + +
+ +
+
+ + +
+
+ + +
+
+ +
+
+ + +
+
+ + +
+
+ +
+ + +
+ +
+ + @if($prospect->hasBusinessCard()) +
+ 현재 명함 + 새 이미지 업로드 시 교체됨 +
+ @endif + +
+ +
+ + +
+ + +
+

영업권 상태

+
+
상태
+
+ + {{ $prospect->status_label }} + +
+
등록일
+
{{ $prospect->registered_at->format('Y-m-d') }}
+
만료일
+
{{ $prospect->expires_at->format('Y-m-d') }}
+
등록자
+
{{ $prospect->registeredBy?->name ?? '-' }}
+
+
+ + +
+ + +
+ +
diff --git a/resources/views/sales/prospects/partials/show-modal.blade.php b/resources/views/sales/prospects/partials/show-modal.blade.php new file mode 100644 index 00000000..d2ddc987 --- /dev/null +++ b/resources/views/sales/prospects/partials/show-modal.blade.php @@ -0,0 +1,150 @@ +{{-- 고객 상세 모달 내용 --}} +
+ +
+
+

{{ $prospect->company_name }}

+

+ + {{ $prospect->status_label }} + + {{ $prospect->business_number }} +

+
+ +
+ +
+ +
+

회사 정보

+
+
+
사업자번호
+
{{ $prospect->business_number }}
+
+
+
회사명
+
{{ $prospect->company_name }}
+
+
+
대표자
+
{{ $prospect->ceo_name ?? '-' }}
+
+
+
연락처
+
{{ $prospect->contact_phone ?? '-' }}
+
+
+
이메일
+
{{ $prospect->contact_email ?? '-' }}
+
+ @if($prospect->address) +
+
주소
+
{{ $prospect->address }}
+
+ @endif +
+
+ + +
+

영업권 정보

+
+
+
등록자
+
{{ $prospect->registeredBy?->name ?? '-' }}
+
+
+
등록일
+
{{ $prospect->registered_at->format('Y-m-d H:i') }}
+
+
+
만료일
+
+ {{ $prospect->expires_at->format('Y-m-d') }} + @if($prospect->isActive()) + (D-{{ $prospect->remaining_days }}) + @endif +
+
+ @if($prospect->isConverted()) +
+
계약일
+
{{ $prospect->converted_at?->format('Y-m-d') }}
+
+
+
계약 처리자
+
{{ $prospect->convertedBy?->name ?? '-' }}
+
+ @endif +
+
+
+ + + @if($prospect->hasBusinessCard()) +
+

명함 이미지

+ + 명함 이미지 + +
+ @endif + + + @if($prospect->memo) +
+

메모

+

{{ $prospect->memo }}

+
+ @endif + + +
+ @if($prospect->isActive()) +
+

+ 영업권 유효: {{ $prospect->expires_at->format('Y-m-d') }}까지 (D-{{ $prospect->remaining_days }}) +

+
+ @elseif($prospect->isConverted()) +
+

+ 계약 완료: {{ $prospect->converted_at?->format('Y-m-d') }}에 계약되었습니다. +

+
+ @elseif($prospect->isInCooldown()) +
+

+ 재등록 대기: {{ $prospect->cooldown_ends_at->format('Y-m-d') }} 이후 재등록 가능 +

+
+ @else +
+

+ 영업권 만료: 재등록이 가능합니다. +

+
+ @endif +
+ + +
+ + @if(!$prospect->isConverted()) + + @endif +
+
diff --git a/routes/web.php b/routes/web.php index 5d4194f6..8c55b647 100644 --- a/routes/web.php +++ b/routes/web.php @@ -805,6 +805,8 @@ Route::post('prospects/{id}/convert', [\App\Http\Controllers\Sales\TenantProspectController::class, 'convert'])->name('prospects.convert'); Route::post('prospects/check-business-number', [\App\Http\Controllers\Sales\TenantProspectController::class, 'checkBusinessNumber'])->name('prospects.check-business-number'); Route::delete('prospects/{id}/attachment', [\App\Http\Controllers\Sales\TenantProspectController::class, 'deleteAttachment'])->name('prospects.delete-attachment'); + Route::get('prospects/{id}/modal-show', [\App\Http\Controllers\Sales\TenantProspectController::class, 'modalShow'])->name('prospects.modal-show'); + Route::get('prospects/{id}/modal-edit', [\App\Http\Controllers\Sales\TenantProspectController::class, 'modalEdit'])->name('prospects.modal-edit'); // 영업 시나리오 관리 Route::prefix('scenarios')->name('scenarios.')->group(function () {