Files
2026-04-18 06:18:58 +09:00

60 lines
3.4 KiB
HTML

<!DOCTYPE html><html lang="ko"><head><meta charset="UTF-8"><meta name="viewport" content="width=device-width,initial-scale=1"><title>제조사 대시보드</title><link rel="stylesheet" href="/css/style.css"></head>
<body>
<nav class="nav"><span class="nav-brand">⚡ EV AS — 제조사</span><div id="navUser"></div></nav>
<div class="layout">
<div class="sidebar">
<div class="sidebar-section">메뉴</div>
<a href="/pages/manufacturer/dashboard.html" class="active">📋 개선항목 목록</a>
</div>
<div class="main">
<h2 style="font-size:18px;font-weight:700;color:var(--navy);margin-bottom:18px">배정된 개선항목</h2>
<div class="stats" id="stats"></div>
<div class="card">
<div style="display:flex;gap:10px;margin-bottom:14px;flex-wrap:wrap;">
<select id="fStatus" style="width:auto">
<option value="">전체</option>
<option value="registered">등록</option><option value="reviewing">검토중</option>
<option value="developing">개발중</option><option value="deployed">배포완료</option>
<option value="done">완료</option>
</select>
<button class="btn btn-outline btn-sm" onclick="load()">검색</button>
</div>
<div class="tbl-wrap"><table>
<thead><tr><th>#</th><th>제목</th><th>분류</th><th>우선순위</th><th>연결AS</th><th>상태</th><th>SW배포목표일</th><th>등록일</th></tr></thead>
<tbody id="tbody"></tbody>
</table></div>
<div id="empty" class="alert alert-info" style="display:none">배정된 개선항목이 없습니다.</div>
</div>
</div>
</div>
<script src="/js/api.js"></script><script src="/js/auth.js"></script>
<script>
Auth.require(['manufacturer']); Auth.renderNav(document.getElementById('navUser'));
const CAT={sw:'SW',hw:'HW',ui:'UI',firmware:'펌웨어',other:'기타'};
const PRI={urgent:'🔴 긴급',high:'🟠 높음',normal:'🟡 보통',low:'🟢 낮음'};
async function load() {
const imps = await API.get('/improvements?status='+document.getElementById('fStatus').value);
const counts = {registered:0,reviewing:0,developing:0,deployed:0,done:0};
imps.forEach(i => { if (counts[i.status]!==undefined) counts[i.status]++; });
document.getElementById('stats').innerHTML = `
<div class="stat"><div class="stat-num">${imps.length}</div><div class="stat-label">전체</div></div>
<div class="stat warn"><div class="stat-num">${counts.registered+counts.reviewing}</div><div class="stat-label">검토 필요</div></div>
<div class="stat warn"><div class="stat-num">${counts.developing}</div><div class="stat-label">개발중</div></div>
<div class="stat good"><div class="stat-num">${counts.deployed+counts.done}</div><div class="stat-label">완료/배포</div></div>`;
document.getElementById('empty').style.display = imps.length ? 'none' : 'block';
document.getElementById('tbody').innerHTML = imps.map(i=>`
<tr onclick="location.href='/pages/manufacturer/improvement.html?id=${i.id}'">
<td>#${i.id}</td>
<td><strong>${i.title}</strong></td>
<td>${CAT[i.category]||i.category}</td>
<td>${PRI[i.priority]||i.priority}</td>
<td><span class="badge s-pending">${i.report_count}건</span></td>
<td>${Auth.statusBadge(i.status)}</td>
<td>${i.sw_deploy_target||'-'}</td>
<td>${Auth.fmtDt(i.created_at)}</td>
</tr>`).join('');
}
load();
</script></body></html>