fix(monthly-comparison): 미검토→검토완료 뱃지 + 확인버튼 제거
- admin_checked=1: "미검토" → "검토완료" 뱃지(파란색)로 변경 - "✓검토" 별도 뱃지 제거 - "확인 완료/문제 있음" 하단 버튼 항상 숨김 (관리자 페이지에서 불필요) - 새 상태 뱃지 CSS: admin_checked, review_sent, change_request Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -210,7 +210,10 @@
|
||||
padding: 2px 8px; border-radius: 10px;
|
||||
}
|
||||
.mc-worker-status-badge.confirmed { background: #dcfce7; color: #166534; }
|
||||
.mc-worker-status-badge.admin_checked { background: #dbeafe; color: #1e40af; }
|
||||
.mc-worker-status-badge.pending { background: #fef3c7; color: #92400e; }
|
||||
.mc-worker-status-badge.review_sent { background: #e0e7ff; color: #3730a3; }
|
||||
.mc-worker-status-badge.change_request { background: #fff7ed; color: #c2410c; }
|
||||
.mc-worker-status-badge.rejected { background: #fef2f2; color: #991b1b; }
|
||||
.mc-worker-reject-reason {
|
||||
font-size: 0.7rem; color: #991b1b;
|
||||
|
||||
@@ -293,43 +293,31 @@ function renderConfirmationStatus(conf) {
|
||||
const statusEl = document.getElementById('confirmedStatus');
|
||||
const badge = document.getElementById('statusBadge');
|
||||
|
||||
// 관리자 페이지: 확인/문제 버튼 항상 숨김 (작업자는 my-monthly-confirm에서 처리)
|
||||
actions.classList.add('hidden');
|
||||
|
||||
if (!conf) {
|
||||
// detail 모드(관리자가 타인의 기록 조회)에서는 버튼 숨김
|
||||
if (currentMode === 'detail') {
|
||||
actions.classList.add('hidden');
|
||||
} else {
|
||||
actions.classList.remove('hidden');
|
||||
}
|
||||
statusEl.classList.add('hidden');
|
||||
badge.textContent = '';
|
||||
return;
|
||||
}
|
||||
|
||||
badge.textContent = { pending: '미확인', confirmed: '확인완료', rejected: '반려' }[conf.status] || '';
|
||||
badge.className = `mc-status-badge ${conf.status}`;
|
||||
var displayStatus = (conf.status === 'pending' && conf.admin_checked) ? 'admin_checked' : conf.status;
|
||||
var labels = { pending: '미검토', admin_checked: '검토완료', review_sent: '확인요청', confirmed: '확인완료', change_request: '수정요청', rejected: '반려' };
|
||||
badge.textContent = labels[displayStatus] || '';
|
||||
badge.className = 'mc-status-badge ' + displayStatus;
|
||||
|
||||
if (currentMode === 'detail') {
|
||||
// 관리자 상세 뷰: 확인/반려 버튼 숨기고 상태만 표시
|
||||
actions.classList.add('hidden');
|
||||
if (conf.status !== 'pending') {
|
||||
statusEl.classList.remove('hidden');
|
||||
const statusLabel = { confirmed: '확인 완료', rejected: '반려' }[conf.status] || '';
|
||||
const dt = conf.confirmed_at ? new Date(conf.confirmed_at).toLocaleString('ko') : '';
|
||||
const reason = conf.reject_reason ? ` (사유: ${conf.reject_reason})` : '';
|
||||
document.getElementById('confirmedText').textContent = `${dt} ${statusLabel}${reason}`;
|
||||
} else {
|
||||
statusEl.classList.add('hidden');
|
||||
}
|
||||
} else if (conf.status === 'confirmed') {
|
||||
actions.classList.add('hidden');
|
||||
if (conf.status === 'confirmed') {
|
||||
statusEl.classList.remove('hidden');
|
||||
const dt = conf.confirmed_at ? new Date(conf.confirmed_at).toLocaleString('ko') : '';
|
||||
document.getElementById('confirmedText').textContent = `${dt} 확인 완료`;
|
||||
var dt = conf.confirmed_at ? new Date(conf.confirmed_at).toLocaleString('ko') : '';
|
||||
document.getElementById('confirmedText').textContent = dt + ' 확인 완료';
|
||||
} else if (conf.status === 'rejected') {
|
||||
// 재확인 가능
|
||||
actions.classList.remove('hidden');
|
||||
statusEl.classList.add('hidden');
|
||||
statusEl.classList.remove('hidden');
|
||||
document.getElementById('confirmedText').textContent = '반려: ' + (conf.reject_reason || '-');
|
||||
} else if (conf.status === 'change_request') {
|
||||
statusEl.classList.remove('hidden');
|
||||
document.getElementById('confirmedText').textContent = '수정요청 접수됨';
|
||||
} else {
|
||||
actions.classList.remove('hidden');
|
||||
statusEl.classList.add('hidden');
|
||||
}
|
||||
}
|
||||
@@ -381,9 +369,10 @@ function renderWorkerList(workers) {
|
||||
}
|
||||
|
||||
el.innerHTML = filtered.map(w => {
|
||||
const statusLabels = { confirmed: '확인완료', pending: '미검토', review_sent: '확인요청', change_request: '수정요청', rejected: '반려' };
|
||||
const statusBadge = `<span class="mc-worker-status-badge ${w.status}">${statusLabels[w.status] || ''}</span>`;
|
||||
const checkedBadge = w.admin_checked ? ' <span style="color:#10b981;font-size:0.7rem;">✓검토</span>' : '';
|
||||
// admin_checked면 "미검토" → "검토완료"로 표시
|
||||
var displayStatus = (w.status === 'pending' && w.admin_checked) ? 'admin_checked' : w.status;
|
||||
const statusLabels = { confirmed: '확인완료', pending: '미검토', admin_checked: '검토완료', review_sent: '확인요청', change_request: '수정요청', rejected: '반려' };
|
||||
const statusBadge = `<span class="mc-worker-status-badge ${displayStatus}">${statusLabels[displayStatus] || ''}</span>`;
|
||||
const mismatchBadge = w.mismatch_count > 0
|
||||
? `<span class="mc-worker-mismatch">⚠️ 불일치${w.mismatch_count}</span>` : '';
|
||||
const rejectReason = w.status === 'rejected' && w.reject_reason
|
||||
@@ -394,7 +383,7 @@ function renderWorkerList(workers) {
|
||||
<div class="mc-worker-card" onclick="viewWorkerDetail(${w.user_id})">
|
||||
<div style="display:flex;justify-content:space-between;align-items:center">
|
||||
<div>
|
||||
<div class="mc-worker-name">${escHtml(w.worker_name)}${checkedBadge} ${mismatchBadge}</div>
|
||||
<div class="mc-worker-name">${escHtml(w.worker_name)} ${mismatchBadge}</div>
|
||||
<div class="mc-worker-dept">${escHtml(w.department_name)} · ${escHtml(w.job_type)}</div>
|
||||
</div>
|
||||
<i class="fas fa-chevron-right text-gray-300"></i>
|
||||
|
||||
@@ -164,7 +164,7 @@
|
||||
|
||||
<script src="/static/js/tkfb-core.js?v=2026033108"></script>
|
||||
<script src="/js/api-base.js?v=2026031701"></script>
|
||||
<script src="/js/monthly-comparison.js?v=2026040104"></script>
|
||||
<script src="/js/monthly-comparison.js?v=2026040105"></script>
|
||||
<script>initAuth();</script>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
Reference in New Issue
Block a user