diff --git a/tkpurchase/web/partner-portal.html b/tkpurchase/web/partner-portal.html index a63ec9f..ca26f8e 100644 --- a/tkpurchase/web/partner-portal.html +++ b/tkpurchase/web/partner-portal.html @@ -81,8 +81,8 @@ - - + + diff --git a/tkpurchase/web/static/js/tkpurchase-partner-portal.js b/tkpurchase/web/static/js/tkpurchase-partner-portal.js index fdcf38a..c63becb 100644 --- a/tkpurchase/web/static/js/tkpurchase-partner-portal.js +++ b/tkpurchase/web/static/js/tkpurchase-partner-portal.js @@ -53,58 +53,11 @@ async function renderScheduleCards() { const requestCardsEl = document.getElementById('requestCards'); const workRequestFormEl = document.getElementById('workRequestForm'); + const today = new Date().toISOString().substring(0, 10); + if (!portalSchedules.length) { container.innerHTML = ''; - // 신청 건 표시 - if (portalRequests.length) { - requestCardsEl.classList.remove('hidden'); - requestCardsEl.innerHTML = portalRequests.map(r => { - const isRejected = r.status === 'rejected'; - const statusBg = isRejected ? 'bg-red-50 border-red-200' : 'bg-amber-50 border-amber-200'; - const statusIcon = isRejected ? 'fa-times-circle text-red-400' : 'fa-clock text-amber-400'; - const statusText = isRejected ? '반려됨' : '승인 대기 중'; - const statusTextClass = isRejected ? 'text-red-600' : 'text-amber-600'; - return `
-
-
-

${escapeHtml(r.workplace_name || '작업장 미지정')}

- - ${statusText} - -
-
${escapeHtml(r.work_description || '')}
-
- ${formatDate(r.start_date)} - 예상 ${r.expected_workers || 0}명 -
-
-
`; - }).join(''); - // 반려 건만 있으면 재신청 폼도 표시 - const hasOnlyRejected = portalRequests.every(r => r.status === 'rejected'); - if (hasOnlyRejected) { - workRequestFormEl.classList.remove('hidden'); - workRequestFormEl.querySelector('p').textContent = '반려된 신청 건이 있습니다. 필요시 재신청해주세요.'; - } else { - workRequestFormEl.classList.add('hidden'); - } - } else { - requestCardsEl.classList.add('hidden'); - workRequestFormEl.classList.remove('hidden'); - workRequestFormEl.querySelector('p').textContent = '등록된 작업 일정이 없습니다. 작업이 필요하시면 아래에서 신청해주세요.'; - } - // 기본 날짜 설정 - const today = new Date().toISOString().substring(0, 10); - const reqDate = document.getElementById('reqStartDate'); - if (reqDate && !reqDate.value) reqDate.value = today; - return; - } - - // 오늘 일정 있으면 기존 카드 렌더 - requestCardsEl.classList.add('hidden'); - workRequestFormEl.classList.add('hidden'); - - const today = new Date().toISOString().substring(0, 10); + } else { container.innerHTML = portalSchedules.map(s => { const checkin = portalCheckins[s.id]; @@ -200,6 +153,51 @@ async function renderScheduleCards() { ` : ''} `; }).join(''); + } + + // 신청 건 표시 (항상) + if (portalRequests.length) { + requestCardsEl.classList.remove('hidden'); + requestCardsEl.innerHTML = portalRequests.map(r => { + const isRejected = r.status === 'rejected'; + const statusBg = isRejected ? 'bg-red-50 border-red-200' : 'bg-amber-50 border-amber-200'; + const statusIcon = isRejected ? 'fa-times-circle text-red-400' : 'fa-clock text-amber-400'; + const statusText = isRejected ? '반려됨' : '승인 대기 중'; + const statusTextClass = isRejected ? 'text-red-600' : 'text-amber-600'; + return `
+
+
+

${escapeHtml(r.workplace_name || '작업장 미지정')}

+ + ${statusText} + +
+
${escapeHtml(r.work_description || '')}
+
+ ${formatDate(r.start_date)} + 예상 ${r.expected_workers || 0}명 +
+
+
`; + }).join(''); + } else { + requestCardsEl.classList.add('hidden'); + } + + // 작업 신청 폼 항상 표시 + workRequestFormEl.classList.remove('hidden'); + const hasOnlyRejected = portalRequests.length > 0 && portalRequests.every(r => r.status === 'rejected'); + if (portalSchedules.length) { + workRequestFormEl.querySelector('p').textContent = '추가 작업이 필요하시면 신청해주세요.'; + } else if (hasOnlyRejected) { + workRequestFormEl.querySelector('p').textContent = '반려된 신청 건이 있습니다. 필요시 재신청해주세요.'; + } else { + workRequestFormEl.querySelector('p').textContent = '등록된 작업 일정이 없습니다. 작업이 필요하시면 아래에서 신청해주세요.'; + } + + // 기본 날짜 설정 + const reqDate = document.getElementById('reqStartDate'); + if (reqDate && !reqDate.value) reqDate.value = today; } async function showCheckoutForm(checkinId, scheduleId) {