/* ===== 위험성평가 모듈 ===== */ const PRODUCT_TYPES = ['PKG', 'VESSEL', 'HX', 'SKID']; const STATUS_LABELS = { draft: '작성중', in_progress: '진행중', completed: '완료' }; const STATUS_BADGE = { draft: 'badge-gray', in_progress: 'badge-amber', completed: 'badge-green' }; const TYPE_LABELS = { regular: '정기', adhoc: '수시' }; const MITIGATION_STATUS = { planned: '계획', in_progress: '진행중', completed: '완료' }; function riskLevelClass(score) { if (!score) return ''; if (score <= 4) return 'badge-risk-low'; if (score <= 9) return 'badge-risk-moderate'; if (score <= 15) return 'badge-risk-substantial'; return 'badge-risk-high'; } function riskLevelLabel(score) { if (!score) return '-'; if (score <= 4) return '저'; if (score <= 9) return '보통'; if (score <= 15) return '상당'; return '높음'; } // ==================== 프로젝트 목록 페이지 ==================== async function initRiskProjectsPage() { if (!initAuth()) return; await loadProjects(); } async function loadProjects() { try { const params = new URLSearchParams(); const typeFilter = document.getElementById('filterType')?.value; const yearFilter = document.getElementById('filterYear')?.value; const productFilter = document.getElementById('filterProduct')?.value; const statusFilter = document.getElementById('filterStatus')?.value; if (typeFilter) params.set('assessment_type', typeFilter); if (yearFilter) params.set('year', yearFilter); if (productFilter) params.set('product_type', productFilter); if (statusFilter) params.set('status', statusFilter); const res = await api('/risk/projects?' + params.toString()); const { projects } = res.data; renderProjectTable(projects); } catch (err) { console.error(err); showToast('프로젝트 목록을 불러올 수 없습니다', 'error'); } } function renderProjectTable(projects) { const tbody = document.getElementById('projectTableBody'); if (!tbody) return; if (!projects.length) { tbody.innerHTML = '
| No | 분류 | 원인(작업) | 유해·위험요인 | 관련법규 | 현재 안전조치 | 가능성 | 중대성 | 위험성 | 대책No | 세부내용 | 작업 |
|---|