diff --git a/app/Http/Controllers/Sales/AdminProspectController.php b/app/Http/Controllers/Sales/AdminProspectController.php index db107976..1f8e9bd8 100644 --- a/app/Http/Controllers/Sales/AdminProspectController.php +++ b/app/Http/Controllers/Sales/AdminProspectController.php @@ -323,6 +323,30 @@ public function updateHqStatus(int $id, Request $request) ]); } + /** + * 계약일 변경 + */ + public function updateContractedDate(int $id, Request $request) + { + $this->checkAdminAccess(); + + $request->validate([ + 'contracted_at' => 'nullable|date', + ]); + + $prospect = TenantProspect::findOrFail($id); + $management = SalesTenantManagement::findOrCreateByProspect($prospect->id); + + $management->update([ + 'contracted_at' => $request->input('contracted_at') ?: null, + ]); + + return response()->json([ + 'success' => true, + 'contracted_at' => $management->contracted_at?->format('Y-m-d'), + ]); + } + /** * 인계일 수동 변경 */ diff --git a/resources/views/sales/admin-prospects/index.blade.php b/resources/views/sales/admin-prospects/index.blade.php index 1b266491..676f0aa3 100644 --- a/resources/views/sales/admin-prospects/index.blade.php +++ b/resources/views/sales/admin-prospects/index.blade.php @@ -350,6 +350,35 @@ function confirmDelete() { }); } +// 계약일 저장 +function saveContractedDate(prospectId, date, inputEl) { + fetch(`/sales/admin-prospects/${prospectId}/contracted-date`, { + method: 'POST', + headers: { + 'Content-Type': 'application/json', + 'X-CSRF-TOKEN': document.querySelector('meta[name="csrf-token"]').content, + 'Accept': 'application/json' + }, + body: JSON.stringify({ contracted_at: date || null }) + }) + .then(response => response.json()) + .then(result => { + if (result.success && inputEl) { + if (date) { + inputEl.className = 'w-28 h-7 text-xs px-1 border-2 border-blue-400 rounded cursor-pointer hover:border-blue-400 focus:outline-none focus:border-blue-500 text-blue-600 font-medium bg-blue-50'; + } else { + inputEl.className = 'w-28 h-7 text-xs px-1 border-2 border-gray-300 rounded cursor-pointer hover:border-blue-400 focus:outline-none focus:border-blue-500 text-gray-500 bg-gray-50'; + } + } else if (!result.success) { + alert(result.message || '계약일 저장에 실패했습니다.'); + } + }) + .catch(error => { + console.error('Error:', error); + alert('계약일 저장 중 오류가 발생했습니다.'); + }); +} + // 인계일 저장 function saveHandoverDate(prospectId, date) { if (!date) return; diff --git a/resources/views/sales/admin-prospects/partials/content.blade.php b/resources/views/sales/admin-prospects/partials/content.blade.php index f77e196e..6ce24e5c 100644 --- a/resources/views/sales/admin-prospects/partials/content.blade.php +++ b/resources/views/sales/admin-prospects/partials/content.blade.php @@ -148,8 +148,11 @@ class="w-full px-3 py-2 border border-gray-300 rounded-lg focus:outline-none foc $disabledClass = $commissionDisabled ? 'opacity-40 cursor-not-allowed bg-gray-100' : ''; @endphp {{-- 계약일 --}} -