feat(training): 안전교육 실시 페이지 수정/삭제 기능 추가

대기 목록·완료 이력 양쪽에 수정/삭제 버튼 추가.
교육 기록 삭제 시 트랜잭션으로 출입 신청 상태를 approved로 복원.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
Hyungi Ahn
2026-03-13 20:31:29 +09:00
parent e236883c64
commit 3e50639914
5 changed files with 249 additions and 0 deletions

View File

@@ -133,6 +133,84 @@
</div>
</div>
<!-- 출입 신청 수정 모달 -->
<div id="editRequestModal" class="hidden modal-overlay" onclick="if(event.target===this)closeEditRequestModal()">
<div class="modal-content p-6" style="max-width: 32rem;">
<div class="flex justify-between items-center mb-4">
<h3 class="text-lg font-semibold">출입 신청 수정</h3>
<button onclick="closeEditRequestModal()" class="text-gray-400 hover:text-gray-600"><i class="fas fa-times"></i></button>
</div>
<form id="editRequestForm">
<input type="hidden" id="editRequestId">
<div class="grid grid-cols-2 gap-3">
<div>
<label class="block text-xs font-medium text-gray-600 mb-1">업체 <span class="text-red-400">*</span></label>
<input type="text" id="editReqCompany" class="input-field w-full px-3 py-2 rounded-lg text-sm" required>
</div>
<div>
<label class="block text-xs font-medium text-gray-600 mb-1">인원 <span class="text-red-400">*</span></label>
<input type="number" id="editReqCount" class="input-field w-full px-3 py-2 rounded-lg text-sm" min="1" required>
</div>
<div>
<label class="block text-xs font-medium text-gray-600 mb-1">방문일 <span class="text-red-400">*</span></label>
<input type="date" id="editReqDate" class="input-field w-full px-3 py-2 rounded-lg text-sm" required>
</div>
<div>
<label class="block text-xs font-medium text-gray-600 mb-1">방문시간 <span class="text-red-400">*</span></label>
<input type="time" id="editReqTime" class="input-field w-full px-3 py-2 rounded-lg text-sm" required>
</div>
<div class="col-span-2">
<label class="block text-xs font-medium text-gray-600 mb-1">비고</label>
<textarea id="editReqNotes" class="input-field w-full px-3 py-2 rounded-lg text-sm" rows="2"></textarea>
</div>
</div>
<div class="flex justify-end mt-4 gap-2">
<button type="button" onclick="closeEditRequestModal()" class="px-4 py-2 border rounded-lg text-sm hover:bg-gray-50">취소</button>
<button type="submit" class="px-4 py-2 bg-blue-600 text-white rounded-lg text-sm hover:bg-blue-700">
<i class="fas fa-save mr-1"></i>저장
</button>
</div>
</form>
</div>
</div>
<!-- 교육 기록 수정 모달 -->
<div id="editTrainingModal" class="hidden modal-overlay" onclick="if(event.target===this)closeEditTrainingModal()">
<div class="modal-content p-6" style="max-width: 32rem;">
<div class="flex justify-between items-center mb-4">
<h3 class="text-lg font-semibold">교육 기록 수정</h3>
<button onclick="closeEditTrainingModal()" class="text-gray-400 hover:text-gray-600"><i class="fas fa-times"></i></button>
</div>
<form id="editTrainingForm">
<input type="hidden" id="editTrainingId">
<div class="grid grid-cols-2 gap-3">
<div>
<label class="block text-xs font-medium text-gray-600 mb-1">교육일 <span class="text-red-400">*</span></label>
<input type="date" id="editTrainDate" class="input-field w-full px-3 py-2 rounded-lg text-sm" required>
</div>
<div>
<label class="block text-xs font-medium text-gray-600 mb-1">시작시간 <span class="text-red-400">*</span></label>
<input type="time" id="editTrainStartTime" class="input-field w-full px-3 py-2 rounded-lg text-sm" required>
</div>
<div>
<label class="block text-xs font-medium text-gray-600 mb-1">종료시간</label>
<input type="time" id="editTrainEndTime" class="input-field w-full px-3 py-2 rounded-lg text-sm">
</div>
<div class="col-span-2">
<label class="block text-xs font-medium text-gray-600 mb-1">교육 내용</label>
<textarea id="editTrainTopics" class="input-field w-full px-3 py-2 rounded-lg text-sm" rows="3"></textarea>
</div>
</div>
<div class="flex justify-end mt-4 gap-2">
<button type="button" onclick="closeEditTrainingModal()" class="px-4 py-2 border rounded-lg text-sm hover:bg-gray-50">취소</button>
<button type="submit" class="px-4 py-2 bg-blue-600 text-white rounded-lg text-sm hover:bg-blue-700">
<i class="fas fa-save mr-1"></i>저장
</button>
</div>
</form>
</div>
</div>
<script src="/static/js/tksafety-core.js?v=3"></script>
<script src="/static/js/tksafety-training.js"></script>
<script>initTrainingPage();</script>