aps-agent/aps-frontend/pages/personnel-shift.html

65 lines
2.8 KiB
HTML

<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>人员班次匹配 - 智能排产系统</title>
<link rel="stylesheet" href="../css/common.css">
</head>
<body>
<div id="app">
<header class="header" id="header"></header>
<div class="body">
<aside class="sidebar" id="sidebar"></aside>
<main class="main">
<h1 class="page-title">人员班次匹配</h1>
<div class="toolbar">
<button class="btn btn-primary" onclick="checkMatch()">匹配校验</button>
</div>
<div class="row">
<div class="col-6">
<div class="card">
<div class="card-header">班组与技能</div>
<div class="card-body table-wrap">
<table id="teamTable"><thead><tr><th>班组</th><th>车间</th><th>人数</th><th>技能等级</th></tr></thead><tbody></tbody></table>
</div>
</div>
</div>
<div class="col-6">
<div class="card">
<div class="card-header">班次排班匹配结果</div>
<div class="card-body table-wrap">
<table id="matchTable"><thead><tr><th>产线</th><th>日期</th><th>班次</th><th>班组</th><th>状态</th></tr></thead><tbody></tbody></table>
</div>
</div>
</div>
</div>
</main>
</div>
</div>
<script src="../js/data.js"></script>
<script src="../js/common.js"></script>
<script>
initPage('personnel-shift');
function render() {
document.querySelector('#teamTable tbody').innerHTML = apsData.teams.map(t => {
const ws = findById(apsData.workshops, t.workshopId);
return `<tr><td>${t.name}</td><td>${ws ? ws.name : '-'}</td><td>${t.memberCount}</td><td>${t.skillLevel}</td></tr>`;
}).join('') || '<tr><td colspan="4" class="text-center text-muted">无数据</td></tr>';
}
function checkMatch() {
const tbody = document.querySelector('#matchTable tbody');
const entries = apsData.shiftCalendar.filter(sc => sc.isWorking).slice(0, 50);
tbody.innerHTML = entries.map(sc => {
const line = findById(apsData.lines, sc.lineId);
const shift = findById(apsData.shifts, sc.shiftId);
const team = findById(apsData.teams, sc.teamId);
const ok = team && team.memberCount >= (sc.maxWorkers || 1);
return `<tr><td>${line ? line.name : '-'}</td><td>${sc.date}</td><td>${shift ? shift.name : '-'}</td><td>${team ? team.name : '-'}</td><td>${ok ? '<span class="badge badge-success">匹配</span>' : '<span class="badge badge-warning">人员不足</span>'}</td></tr>`;
}).join('') || '<tr><td colspan="5" class="text-center text-muted">无数据</td></tr>';
}
render();
</script>
</body>
</html>