fix:차량정비이력 저장 기능 디버깅 개선

- 유효성 검사 메시지 상세화
- 저장 중 버튼 비활성화 및 로딩 표시
- 콘솔 로그 추가하여 디버깅 용이하게

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
김보곤
2026-02-03 20:09:37 +09:00
parent 6f32dae622
commit 2a1bbcf60b

View File

@@ -163,7 +163,9 @@ function VehicleMaintenanceManagement() {
const handleAdd = () => { setModalMode('add'); setFormData({...initialFormState, vehicleId: vehicles[0]?.id || ''}); setShowModal(true); };
const handleEdit = (item) => { setModalMode('edit'); setEditingItem(item); setFormData({ ...item }); setShowModal(true); };
const handleSave = async () => {
if (!formData.description || !formData.amount) { alert('필수 항목을 입력해주세요.'); return; }
if (!formData.description) { alert('내용을 입력해주세요.'); return; }
if (!formData.amount || formData.amount === '0') { alert('금액을 입력해주세요.'); return; }
if (!formData.vehicleId) { alert('차량을 선택해주세요.'); return; }
setSaving(true);
try {
const payload = {
@@ -176,6 +178,7 @@ function VehicleMaintenanceManagement() {
vendor: formData.vendor,
memo: formData.memo
};
console.log('저장 요청:', payload);
const url = modalMode === 'add' ? '/finance/vehicle-maintenance' : `/finance/vehicle-maintenance/${editingItem.id}`;
const method = modalMode === 'add' ? 'POST' : 'PUT';
const response = await fetch(url, {
@@ -183,7 +186,9 @@ function VehicleMaintenanceManagement() {
headers: { 'Content-Type': 'application/json', 'X-CSRF-TOKEN': document.querySelector('meta[name="csrf-token"]').content },
body: JSON.stringify(payload)
});
console.log('응답 상태:', response.status);
const result = await response.json();
console.log('응답 데이터:', result);
if (result.success) {
await loadMaintenances();
setShowModal(false);
@@ -193,7 +198,7 @@ function VehicleMaintenanceManagement() {
}
} catch (error) {
console.error('저장 오류:', error);
alert('저장 중 오류가 발생했습니다.');
alert('저장 중 오류가 발생했습니다: ' + error.message);
} finally {
setSaving(false);
}
@@ -359,7 +364,7 @@ function VehicleMaintenanceManagement() {
<div className="flex gap-3 mt-6">
{modalMode === 'edit' && <button onClick={() => handleDelete(editingItem.id)} className="px-4 py-2 bg-red-600 hover:bg-red-700 text-white rounded-lg">삭제</button>}
<button onClick={() => setShowModal(false)} className="flex-1 px-4 py-2 border border-gray-300 text-gray-700 rounded-lg hover:bg-gray-50">취소</button>
<button onClick={handleSave} className="flex-1 px-4 py-2 bg-blue-600 hover:bg-blue-700 text-white rounded-lg">{modalMode === 'add' ? '등록' : '저장'}</button>
<button onClick={handleSave} disabled={saving} className="flex-1 px-4 py-2 bg-blue-600 hover:bg-blue-700 text-white rounded-lg disabled:opacity-50">{saving ? '저장 중...' : (modalMode === 'add' ? '등록' : '저장')}</button>
</div>
</div>
</div>