<!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 href="https://cdn.bootcdn.net/ajax/libs/twitter-bootstrap/5.1.3/css/bootstrap.min.css" rel="stylesheet">
<style>
.nav-tabs { border-bottom: 2px solid #0d6efd; }
.tab-pane { padding: 20px 0; }
.progress-bar { transition: width 0.3s ease; }
input[type="number"] { max-width: 120px; }
.card { box-shadow: 0 2px 8px rgba(0,0,0,0.1); }
.table-hover tbody tr:hover { background-color: #f8f9fa; }
</style>
</head>
<body class="bg-light">
<div class="container py-4">
<!-- 产品汇总标签页 -->
<h3 class="mb-4 text-primary">生产计划总览</h3>
<nav>
<div class="nav nav-tabs" id="nav-tab" role="tablist">
<?php
$conn = new mysqli("localhost", "ytpmc", "ytpmc321", "ytpmc");
$parts = $conn->query("SELECT num, sum(sl),ht as total FROM `ordert` where ht='缠布' GROUP BY num");
$parts2 = $conn->query("SELECT num,part,sl,pbsj,zt,ht FROM `ordert` where ht='缠布'");
$first = true;
while($row = $parts->fetch_assoc()) {
// $active = $first ? 'active' : '';
echo '<button class="nav-link '.$active.'" data-bs-toggle="tab"
data-bs-target="#part'.$row['num'].'" type="button">
'.$row['num'].' <span class="badge bg-primary">'.$row['total'].'</span>
</button>';
$first = false;
}
?>
</div>
</nav>
<!-- 明细内容区域 -->
<div class="tab-content mt-3" id="nav-tabContent">
<?php
$parts2 = $conn->query("SELECT num,part,sl,pbsj,zt,ht FROM `ordert` where ht='缠布'");
$parts2->data_seek(0);
while($part = $parts2->fetch_assoc()) {
$active = $part === reset($parts2) ? 'show active' : '';
echo '<div class="tab-pane fade '.$active.'" id="part'.$part['num'].'">
<div class="card">
<div class="card-header bg-white">
<h5>'.$part['num'].' - 生产明细</h5>
</div>
<div class="card-body">
<table class="table table-hover">
<thead>
<tr>
<th>产品编号</th>
<th>需求数量</th>
<th>完成数量</th>
<th>操作</th>
</tr>
</thead>
<tbody>';
$sql = "SELECT id,part,sl,wc_sl,zt,ht FROM `ordert`
WHERE ht='缠布' AND num='{$part['num']}'";
$details = $conn->query($sql);
while($row = $details->fetch_assoc()) {
echo '<tr>
<td>'.$row['part'].'</td>
<td>'.$row['sl'].'</td>
<td>
<input type="number" class="form-control complete-input"
min="0" max="'.$row['sl'].'"
value="'.$row['wc_sl'].'"
'.($row['zt'] == 'wc' ? 'disabled' : '').'>
</td>
<td>
<button class="btn btn-sm '.($row['zt'] == 'wc' ? 'btn-success' : 'btn-primary').' save-btn"
data-num="'.$row['part'].'"
'.($row['zt'] == 'wc' ? 'disabled' : '').'>
'.($row['zt'] == 'wc' ? '已完成' : '保存').'
</button>
</td>
</tr>';
}
echo '</tbody></table></div></div></div>';
}
?>
</div>
</div>
<script src="https://cdn.bootcdn.net/ajax/libs/bootstrap/5.1.3/js/bootstrap.bundle.min.js"></script>
<script>
document.querySelectorAll('.save-btn').forEach(btn => {
btn.addEventListener('click', async function() {
const num = this.dataset.num;
const wc_sl = this.closest('tr').querySelector('.complete-input').value;
try {
const response = await fetch('update.php', {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({ num, wc_sl })
});
const result = await response.json();
if(result.success) {
alert('保存成功!');
location.reload();
} else {
alert('保存失败:' + result.message);
}
} catch(error) {
console.error('Error:', error);
}
});
});
</script>
</body>
</html>
版权属于:
wehg489
作品采用:
《
署名-非商业性使用-相同方式共享 4.0 国际 (CC BY-NC-SA 4.0)
》许可协议授权
评论 (0)