fix: 환자 편집 버튼 기능 수정
- 환자 편집 버튼 클릭 이벤트 핸들러 추가 - 편집 모드에서 환자 정보 불러오기 구현 - 마일리지 정보 표시 (현재 잔액, 총 적립, 총 사용) - 환자 정보 수정 API 연동 (PUT 메소드) - API에 마일리지 정보 포함하도록 수정 - 모달 닫힐 때 폼 초기화 처리 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
parent
ee15d8e45e
commit
3f96b286d3
6
app.py
6
app.py
@ -79,7 +79,8 @@ def get_patients():
|
|||||||
with get_db() as conn:
|
with get_db() as conn:
|
||||||
cursor = conn.cursor()
|
cursor = conn.cursor()
|
||||||
cursor.execute("""
|
cursor.execute("""
|
||||||
SELECT patient_id, name, phone, gender, birth_date, notes
|
SELECT patient_id, name, phone, gender, birth_date, notes,
|
||||||
|
mileage_balance, total_mileage_earned, total_mileage_used
|
||||||
FROM patients
|
FROM patients
|
||||||
WHERE is_active = 1
|
WHERE is_active = 1
|
||||||
ORDER BY created_at DESC
|
ORDER BY created_at DESC
|
||||||
@ -96,7 +97,8 @@ def get_patient(patient_id):
|
|||||||
with get_db() as conn:
|
with get_db() as conn:
|
||||||
cursor = conn.cursor()
|
cursor = conn.cursor()
|
||||||
cursor.execute("""
|
cursor.execute("""
|
||||||
SELECT patient_id, name, phone, jumin_no, gender, birth_date, address, notes
|
SELECT patient_id, name, phone, jumin_no, gender, birth_date, address, notes,
|
||||||
|
mileage_balance, total_mileage_earned, total_mileage_used
|
||||||
FROM patients
|
FROM patients
|
||||||
WHERE patient_id = ? AND is_active = 1
|
WHERE patient_id = ? AND is_active = 1
|
||||||
""", (patient_id,))
|
""", (patient_id,))
|
||||||
|
|||||||
@ -185,13 +185,55 @@ $(document).ready(function() {
|
|||||||
const patientName = $(this).data('name');
|
const patientName = $(this).data('name');
|
||||||
viewPatientCompounds(patientId, patientName);
|
viewPatientCompounds(patientId, patientName);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
// 편집 버튼 이벤트
|
||||||
|
$('.edit-patient').on('click', function() {
|
||||||
|
const patientId = $(this).data('id');
|
||||||
|
editPatient(patientId);
|
||||||
|
});
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
// 환자 등록
|
// 환자 정보 편집
|
||||||
|
function editPatient(patientId) {
|
||||||
|
$.get(`/api/patients/${patientId}`, function(response) {
|
||||||
|
if (response.success && response.data) {
|
||||||
|
const patient = response.data;
|
||||||
|
|
||||||
|
// 모달 제목 변경
|
||||||
|
$('#patientModal .modal-title').text('환자 정보 수정');
|
||||||
|
|
||||||
|
// 폼에 데이터 채우기
|
||||||
|
$('#patientName').val(patient.name);
|
||||||
|
$('#patientPhone').val(patient.phone);
|
||||||
|
$('#patientJumin').val(patient.jumin_no);
|
||||||
|
$('#patientGender').val(patient.gender);
|
||||||
|
$('#patientBirth').val(patient.birth_date);
|
||||||
|
$('#patientAddress').val(patient.address);
|
||||||
|
$('#patientNotes').val(patient.notes);
|
||||||
|
|
||||||
|
// 마일리지 섹션 표시 및 데이터 채우기
|
||||||
|
$('#mileageSection').show();
|
||||||
|
$('#patientMileageBalance').val(patient.mileage_balance || 0);
|
||||||
|
$('#patientMileageEarned').val(patient.total_mileage_earned || 0);
|
||||||
|
$('#patientMileageUsed').val(patient.total_mileage_used || 0);
|
||||||
|
|
||||||
|
// 저장 버튼에 patient_id 저장
|
||||||
|
$('#savePatientBtn').data('patient-id', patientId);
|
||||||
|
|
||||||
|
// 모달 표시
|
||||||
|
$('#patientModal').modal('show');
|
||||||
|
}
|
||||||
|
}).fail(function() {
|
||||||
|
alert('환자 정보를 불러오는데 실패했습니다.');
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
// 환자 등록/수정
|
||||||
$('#savePatientBtn').on('click', function() {
|
$('#savePatientBtn').on('click', function() {
|
||||||
|
const patientId = $(this).data('patient-id'); // 편집 모드인지 확인
|
||||||
const patientData = {
|
const patientData = {
|
||||||
name: $('#patientName').val(),
|
name: $('#patientName').val(),
|
||||||
phone: $('#patientPhone').val(),
|
phone: $('#patientPhone').val(),
|
||||||
@ -202,25 +244,39 @@ $(document).ready(function() {
|
|||||||
notes: $('#patientNotes').val()
|
notes: $('#patientNotes').val()
|
||||||
};
|
};
|
||||||
|
|
||||||
|
// 편집 모드인 경우 PUT, 새 등록인 경우 POST
|
||||||
|
const url = patientId ? `/api/patients/${patientId}` : '/api/patients';
|
||||||
|
const method = patientId ? 'PUT' : 'POST';
|
||||||
|
|
||||||
$.ajax({
|
$.ajax({
|
||||||
url: '/api/patients',
|
url: url,
|
||||||
method: 'POST',
|
method: method,
|
||||||
contentType: 'application/json',
|
contentType: 'application/json',
|
||||||
data: JSON.stringify(patientData),
|
data: JSON.stringify(patientData),
|
||||||
success: function(response) {
|
success: function(response) {
|
||||||
if (response.success) {
|
if (response.success) {
|
||||||
alert('환자가 등록되었습니다.');
|
alert(patientId ? '환자 정보가 수정되었습니다.' : '환자가 등록되었습니다.');
|
||||||
$('#patientModal').modal('hide');
|
$('#patientModal').modal('hide');
|
||||||
$('#patientForm')[0].reset();
|
$('#patientForm')[0].reset();
|
||||||
|
$('#mileageSection').hide(); // 마일리지 섹션 숨기기
|
||||||
|
$('#savePatientBtn').removeData('patient-id'); // patient-id 데이터 제거
|
||||||
loadPatients();
|
loadPatients();
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
error: function(xhr) {
|
error: function(xhr) {
|
||||||
alert('오류: ' + xhr.responseJSON.error);
|
alert('오류: ' + (xhr.responseJSON?.error || '알 수 없는 오류'));
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
|
// 환자 모달이 닫힐 때 초기화
|
||||||
|
$('#patientModal').on('hidden.bs.modal', function() {
|
||||||
|
$('#patientForm')[0].reset();
|
||||||
|
$('#mileageSection').hide();
|
||||||
|
$('#savePatientBtn').removeData('patient-id');
|
||||||
|
$('#patientModal .modal-title').text('환자 등록'); // 제목을 기본값으로 복원
|
||||||
|
});
|
||||||
|
|
||||||
// 환자 처방 내역 조회
|
// 환자 처방 내역 조회
|
||||||
function viewPatientCompounds(patientId, patientName) {
|
function viewPatientCompounds(patientId, patientName) {
|
||||||
// 환자 정보 가져오기
|
// 환자 정보 가져오기
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user