// /js/manage-worker.js import { API, getAuthHeaders, ensureAuthenticated } from '/js/api-config.js'; // 인증 확인 ensureAuthenticated(); // ✅ 테이블 행 생성 function createRow(item, cols, delHandler) { const tr = document.createElement('tr'); cols.forEach(key => { const td = document.createElement('td'); td.textContent = item[key] || '-'; tr.appendChild(td); }); const delBtn = document.createElement('button'); delBtn.textContent = '삭제'; delBtn.className = 'btn-delete'; delBtn.onclick = () => delHandler(item); const td = document.createElement('td'); td.appendChild(delBtn); tr.appendChild(td); return tr; } // ✅ 작업자 등록 const workerForm = document.getElementById('workerForm'); workerForm?.addEventListener('submit', async e => { e.preventDefault(); const body = { worker_name: document.getElementById('workerName').value.trim(), position: document.getElementById('position').value.trim() }; if (!body.worker_name || !body.position) { return alert('모든 필드를 입력해주세요.'); } try { const res = await fetch(`${API}/workers`, { method: 'POST', headers: getAuthHeaders(), body: JSON.stringify(body) }); const result = await res.json(); if (res.ok && result.success) { alert('✅ 등록 완료'); workerForm.reset(); loadWorkers(); } else { alert('❌ 실패: ' + (result.error || '알 수 없는 오류')); } } catch (err) { alert('🚨 서버 오류: ' + err.message); } }); // ✅ 작업자 목록 불러오기 async function loadWorkers() { const tbody = document.getElementById('workerTableBody'); tbody.innerHTML = '불러오는 중...'; try { const res = await fetch(`${API}/workers`, { headers: getAuthHeaders() }); if (!res.ok) { throw new Error(`HTTP error! status: ${res.status}`); } const response = await res.json(); const list = response.data || response; // 새로운 API 응답 구조 지원 tbody.innerHTML = ''; if (Array.isArray(list)) { list.forEach(item => { const row = createRow(item, ['worker_id', 'worker_name', 'position'], async w => { if (!confirm('삭제하시겠습니까?')) return; try { const delRes = await fetch(`${API}/workers/${w.worker_id}`, { method: 'DELETE', headers: getAuthHeaders() }); if (delRes.ok) { alert('✅ 삭제 완료'); loadWorkers(); } else { alert('❌ 삭제 실패'); } } catch (err) { alert('🚨 삭제 중 오류: ' + err.message); } }); tbody.appendChild(row); }); } else { tbody.innerHTML = '데이터 형식 오류'; } } catch (err) { tbody.innerHTML = '로드 실패: ' + err.message + ''; } } // ✅ 초기 로딩 window.addEventListener('DOMContentLoaded', loadWorkers);