65 lines
2.8 KiB
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>
|