fix: 组配记录页 & 包装历史页字段与显示逻辑对齐对应任务页
- ratio-scale/03-verify-history: 表头/状态文案/行展示(按单份拆分)对齐01-packing-tasks - clean-veg-packaging-labeler/03-history: 表头/行展示(按单份拆分)/术语(贴标→包装)对齐01-orders - 两个历史页均去掉操作列,移除重新打印按钮 Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 4.6
parent
c0ae45d3c3
commit
63940f4c49
@@ -3,7 +3,7 @@
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="viewport" content="width=1024, initial-scale=1.0">
|
||||
<title>净菜贴标秤 - 贴标历史 | 蚁熊智能餐养平台</title>
|
||||
<title>净菜包装秤 - 包装历史 | 蚁熊智能餐养平台</title>
|
||||
<style>
|
||||
* { margin: 0; padding: 0; box-sizing: border-box; }
|
||||
body {
|
||||
@@ -107,11 +107,11 @@
|
||||
.task-card__status { margin-left: auto; }
|
||||
|
||||
/* 表格头(7列) */
|
||||
.item-table__head { display: grid; grid-template-columns: 1fr 0.7fr 0.55fr 0.5fr 0.6fr 0.55fr 50px; gap: 6px; padding: 5px 14px; background: rgba(0,0,0,0.2); font-size: 10px; color: rgba(255,255,255,0.4); font-weight: 500; }
|
||||
.item-table__head { display: grid; grid-template-columns: 1fr 0.5fr 0.45fr 0.25fr 0.4fr 0.4fr 50px; gap: 6px; padding: 5px 14px; background: rgba(0,0,0,0.2); font-size: 10px; color: rgba(255,255,255,0.4); font-weight: 500; }
|
||||
.item-table__body { display: flex; flex-direction: column; }
|
||||
|
||||
/* 行 */
|
||||
.item-parent-row { display: grid; grid-template-columns: 1fr 0.7fr 0.55fr 0.5fr 0.6fr 0.55fr 50px; gap: 6px; padding: 8px 14px; border-top: 1px solid rgba(255,255,255,0.04); align-items: center; background: rgba(74,144,217,0.06); }
|
||||
.item-parent-row { display: grid; grid-template-columns: 1fr 0.5fr 0.45fr 0.25fr 0.4fr 0.4fr 50px; gap: 6px; padding: 6px 14px; border-top: 1px solid rgba(255,255,255,0.04); align-items: center; background: rgba(74,144,217,0.06); }
|
||||
.parent-name { display: flex; align-items: center; gap: 8px; }
|
||||
.parent-icon { width: 28px; height: 28px; border-radius: 6px; display: flex; align-items: center; justify-content: center; font-size: 14px; background: rgba(114,46,209,0.15); flex-shrink: 0; }
|
||||
.parent-name__text { font-size: 12px; font-weight: 600; color: #fff; }
|
||||
@@ -127,6 +127,7 @@
|
||||
.order-type-tag--external { background: rgba(250,140,22,0.15); color: #fa8c16; }
|
||||
.status-tag { display: inline-block; padding: 2px 6px; border-radius: 4px; font-size: 10px; }
|
||||
.status-tag--done { background: rgba(82,196,26,0.15); color: #52c41a; }
|
||||
.status-tag--wait { background: rgba(250,173,22,0.15); color: #faad16; }
|
||||
|
||||
/* 底栏 */
|
||||
.table-footer { display: flex; align-items: center; justify-content: center; padding: 8px 20px; font-size: 11px; color: rgba(255,255,255,0.35); border-top: 1px solid rgba(255,255,255,0.04); flex-shrink: 0; }
|
||||
@@ -147,7 +148,7 @@
|
||||
<!-- 顶部导航 -->
|
||||
<div class="top-bar">
|
||||
<a class="back-btn" id="backBtn" href="javascript:void(0)">◀ 返回</a>
|
||||
<span class="page-title">贴标历史</span>
|
||||
<span class="page-title">包装历史</span>
|
||||
<div class="top-bar__user">
|
||||
<div class="top-bar__avatar" id="topAvatar">--</div>
|
||||
<span id="topUser">--</span>
|
||||
@@ -189,7 +190,7 @@
|
||||
<div class="stats-row">
|
||||
<div class="stat-chip">
|
||||
<div class="stat-chip__icon stat-chip__icon--blue">📋</div>
|
||||
<div><div class="stat-chip__value" id="statTotal">0</div><div class="stat-chip__label" id="statTotalLabel">今日贴标订单数</div></div>
|
||||
<div><div class="stat-chip__value" id="statTotal">0</div><div class="stat-chip__label" id="statTotalLabel">今日包装订单数</div></div>
|
||||
</div>
|
||||
<div class="stat-chip">
|
||||
<div class="stat-chip__icon stat-chip__icon--green">📦</div>
|
||||
@@ -201,7 +202,7 @@
|
||||
</div>
|
||||
<div class="stat-chip">
|
||||
<div class="stat-chip__icon stat-chip__icon--red">📦</div>
|
||||
<div><div class="stat-chip__value" id="statWeight">0</div><div class="stat-chip__label">贴标总重量(g)</div></div>
|
||||
<div><div class="stat-chip__value" id="statWeight">0</div><div class="stat-chip__label">包装总重量(g)</div></div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -210,7 +211,7 @@
|
||||
<div class="table-scroll" id="taskListContainer"></div>
|
||||
<div class="empty-state" id="emptyState">
|
||||
<div class="empty-state__icon">📭</div>
|
||||
<div>暂无贴标记录</div>
|
||||
<div>暂无包装记录</div>
|
||||
</div>
|
||||
<div class="table-footer" id="tableFooter">共 0 条记录</div>
|
||||
</div>
|
||||
@@ -242,7 +243,7 @@
|
||||
var TODAY = '2026-06-25';
|
||||
var WEEKDAYS = ['周日', '周一', '周二', '周三', '周四', '周五', '周六'];
|
||||
|
||||
/* 贴标历史数据(已贴标完成的订单) */
|
||||
/* 包装历史数据(已包装完成的订单) */
|
||||
var RECORDS = [
|
||||
{
|
||||
orderNo: 'PO-20260625-001', orderType: 'internal', completeTime: '2026-06-25 11:15', operator: '刘九',
|
||||
@@ -383,10 +384,10 @@
|
||||
var monday = getMonday();
|
||||
var mondayStr = dateStr(monday);
|
||||
records = RECORDS.filter(function(r) { return r.completeTime.substring(0, 10) >= mondayStr; });
|
||||
totalLabel = '本周贴标订单数';
|
||||
totalLabel = '本周包装订单数';
|
||||
} else {
|
||||
records = RECORDS.filter(function(r) { return r.completeTime.substring(0, 10) === selectedDate; });
|
||||
totalLabel = (selectedDate === TODAY) ? '今日贴标订单数' : (selectedDate.substring(5).replace('-', '/') + ' 贴标订单数');
|
||||
totalLabel = (selectedDate === TODAY) ? '今日包装订单数' : (selectedDate.substring(5).replace('-', '/') + ' 包装订单数');
|
||||
}
|
||||
var total = records.length;
|
||||
var totalWeight = 0;
|
||||
@@ -480,15 +481,15 @@
|
||||
header.innerHTML =
|
||||
'<span class="task-card__order-info"><span class="task-card__order-info__label">订单号:</span><span class="task-card__order-info__value">' + order.orderNo + '</span></span>' +
|
||||
'<span class="order-type-tag ' + orderTypeCls + '">' + orderTypeLabel + '</span>' +
|
||||
'<span class="task-card__arrival">⏰ 贴标完成时间:<span class="task-card__arrival__time">' + order.completeTime + '</span></span>' +
|
||||
'<span class="task-card__arrival">⏰ 包装完成时间:<span class="task-card__arrival__time">' + order.completeTime + '</span></span>' +
|
||||
'<span class="task-card__operator">👤 操作人:<span class="task-card__operator__name">' + order.operator + '</span></span>' +
|
||||
'<span class="task-card__status"><span class="status-badge status-badge--done">已贴标</span></span>';
|
||||
'<span class="task-card__status"><span class="status-badge status-badge--done">已包装</span></span>';
|
||||
taskCard.appendChild(header);
|
||||
|
||||
/* 表格头 */
|
||||
var tableHead = document.createElement('div');
|
||||
tableHead.className = 'item-table__head';
|
||||
tableHead.innerHTML = '<div>名称</div><div style="text-align:center">净菜/餐品</div><div style="text-align:center">包装规格</div><div style="text-align:center">打包份数</div><div style="text-align:right">所需总重</div><div style="text-align:right">已称</div><div style="text-align:center">状态</div>';
|
||||
tableHead.innerHTML = '<div>名称</div><div style="text-align:center">净菜/餐品</div><div style="text-align:center">包装规格</div><div style="text-align:center">份数</div><div style="text-align:right">应称重量</div><div style="text-align:right">已称重量</div><div style="text-align:center">状态</div>';
|
||||
taskCard.appendChild(tableHead);
|
||||
|
||||
/* 表格体 */
|
||||
@@ -496,24 +497,27 @@
|
||||
tableBody.className = 'item-table__body';
|
||||
|
||||
order.mealPacks.forEach(function(pack) {
|
||||
var totalNeed = 0;
|
||||
var totalWeighed = 0;
|
||||
pack.ingredients.forEach(function(ing) {
|
||||
totalNeed += ing.weightPerPack * pack.packSize;
|
||||
totalWeighed += ing.weighed;
|
||||
});
|
||||
var ingWeight = pack.ingredients[0] ? pack.ingredients[0].weightPerPack : 0;
|
||||
/* 从包装规格中提取应称重量(如"500g"→500) */
|
||||
var specMatch = pack.packSpec && pack.packSpec.match(/(\d+)g/);
|
||||
var dueWeight = specMatch ? parseInt(specMatch[1]) : ingWeight;
|
||||
|
||||
var parentRow = document.createElement('div');
|
||||
parentRow.className = 'item-parent-row';
|
||||
parentRow.innerHTML =
|
||||
'<div class="parent-name"><div class="parent-icon">📦</div><span class="parent-name__text">' + pack.packName + '</span></div>' +
|
||||
'<div style="text-align:center;font-size:11px;color:' + (pack.type === '餐品净菜包' ? '#faad16' : '#4a90d9') + '">' + pack.type + '</div>' +
|
||||
'<div style="text-align:center;font-size:11px;color:rgba(255,255,255,0.55)">' + (pack.packSpec || '—') + '</div>' +
|
||||
'<div style="text-align:center"><span class="pack-size-tag">' + pack.packSize + '</span></div>' +
|
||||
'<div class="parent-weight parent-weight--done">' + totalNeed + ' g</div>' +
|
||||
'<div class="parent-weight parent-weight--done">' + totalWeighed + ' g</div>' +
|
||||
'<div style="text-align:center"><span class="status-tag status-tag--done">已打印</span></div>';
|
||||
tableBody.appendChild(parentRow);
|
||||
/* 按单份拆分,每份一行 */
|
||||
for (var p = 0; p < pack.packSize; p++) {
|
||||
var statusCell = '<div style="text-align:center"><span class="status-tag status-tag--done">已打印</span></div>';
|
||||
|
||||
var parentRow = document.createElement('div');
|
||||
parentRow.className = 'item-parent-row';
|
||||
parentRow.innerHTML =
|
||||
'<div class="parent-name"><div class="parent-icon">📦</div><span class="parent-name__text">' + pack.packName + ' <span style="font-size:10px;color:rgba(255,255,255,0.4)">第' + (p + 1) + '份/' + pack.packSize + '份</span></span></div>' +
|
||||
'<div style="text-align:center;font-size:11px;color:' + (pack.type === '餐品净菜包' ? '#faad16' : '#4a90d9') + '">' + pack.type + '</div>' +
|
||||
'<div style="text-align:center;font-size:11px;color:rgba(255,255,255,0.55)">' + (pack.packSpec || '—') + '</div>' +
|
||||
'<div style="text-align:center;font-size:11px;color:rgba(255,255,255,0.55)">1</div>' +
|
||||
'<div class="parent-weight parent-weight--done">' + dueWeight + ' g</div>' +
|
||||
'<div class="parent-weight parent-weight--done">' + dueWeight + ' g</div>' +
|
||||
statusCell;
|
||||
tableBody.appendChild(parentRow);
|
||||
}
|
||||
});
|
||||
|
||||
taskCard.appendChild(tableBody);
|
||||
@@ -532,6 +536,11 @@
|
||||
document.getElementById('tableFooter').textContent = footerText;
|
||||
}
|
||||
|
||||
/* 重新打印 */
|
||||
function handleReprint(orderNo, packName, portion) {
|
||||
showToast('重新打印: ' + orderNo + ' ' + packName + ' 第' + portion + '份', 2000);
|
||||
}
|
||||
|
||||
/* Toast */
|
||||
function showToast(msg, duration) {
|
||||
var el = document.getElementById('toast');
|
||||
|
||||
@@ -1,5 +1,14 @@
|
||||
# 净菜贴标秤 CHANGELOG
|
||||
|
||||
## 2026-06-26 | 包装历史页字段与显示逻辑对齐
|
||||
|
||||
### 修改
|
||||
- `03-history.html` — 术语统一:贴标→包装(页面标题/统计标签/空状态/卡片头部/注释)
|
||||
- `03-history.html` — 表头与包装任务页(01)统一:打包份数→份数、所需总重→应称重量、已称→已称重量
|
||||
- `03-history.html` — 行展示改为按单份拆分("第N份/M份"),与01页已完成Tab一致
|
||||
- `03-history.html` — grid 列宽对齐01页(`1fr 0.5fr 0.45fr 0.25fr 0.4fr 0.4fr 50px`)
|
||||
- `03-history.html` — 新增 `handleReprint` 函数,状态列只显示"已打印"标签
|
||||
|
||||
## 2026-06-25 | 初版创建
|
||||
|
||||
### 新增页面
|
||||
|
||||
@@ -203,14 +203,14 @@
|
||||
|
||||
/* 表格头(6列) */
|
||||
.item-table__head {
|
||||
display: grid; grid-template-columns: 1fr 0.6fr 0.5fr 0.6fr 0.6fr 70px; gap: 8px;
|
||||
display: grid; grid-template-columns: 1fr 0.55fr 0.35fr 0.55fr 0.55fr 50px; gap: 6px;
|
||||
padding: 6px 16px; background: rgba(0,0,0,0.2); font-size: 11px; color: rgba(255,255,255,0.4); font-weight: 500;
|
||||
}
|
||||
.item-table__body { display: flex; flex-direction: column; }
|
||||
|
||||
/* 餐品净菜包主行 */
|
||||
.item-parent-row {
|
||||
display: grid; grid-template-columns: 1fr 0.6fr 0.5fr 0.6fr 0.6fr 70px; gap: 8px;
|
||||
display: grid; grid-template-columns: 1fr 0.55fr 0.35fr 0.55fr 0.55fr 50px; gap: 6px;
|
||||
padding: 10px 16px; border-top: 1px solid rgba(255,255,255,0.04); align-items: center;
|
||||
background: rgba(74,144,217,0.06); margin-bottom: 4px; border-radius: 6px;
|
||||
}
|
||||
@@ -231,6 +231,7 @@
|
||||
background: rgba(255,255,255,0.06); color: rgba(255,255,255,0.55); font-weight: 500;
|
||||
}
|
||||
.parent-weight { font-size: 12px; color: rgba(255,255,255,0.6); text-align: right; }
|
||||
.parent-weight--done { color: #52c41a; font-weight: 600; }
|
||||
|
||||
/* 食材子行 */
|
||||
.item-child-row {
|
||||
@@ -385,7 +386,7 @@
|
||||
// 组配记录数据(与组配任务页01数据结构一致,全部为已组配状态)
|
||||
var RECORDS = [
|
||||
{
|
||||
orderNo: 'PO-20260616-001', orderType: 'internal', completeTime: '2026-06-16 10:20',
|
||||
orderNo: 'PO-20260616-001', orderType: 'internal', completeTime: '2026-06-16 10:20', taskNo: 'T-001',
|
||||
mealPacks: [
|
||||
{ type: '餐品净菜包', packName: '宫保鸡丁套餐', packSize: 3, packSpec: '大份800g', ingredients: [
|
||||
{ name: '土豆丝', icon: '🥔', weightPerPack: 300, weighed: 900 },
|
||||
@@ -403,7 +404,7 @@
|
||||
]
|
||||
},
|
||||
{
|
||||
orderNo: 'PO-20260616-002', orderType: 'external', completeTime: '2026-06-16 11:00',
|
||||
orderNo: 'PO-20260616-002', orderType: 'external', completeTime: '2026-06-16 11:00', taskNo: 'T-002',
|
||||
mealPacks: [
|
||||
{ type: '餐品净菜包', packName: '鱼香肉丝套餐', packSize: 2, packSpec: '大份800g', ingredients: [
|
||||
{ name: '白菜丝', icon: '🥬', weightPerPack: 400, weighed: 800 },
|
||||
@@ -428,7 +429,7 @@
|
||||
]
|
||||
},
|
||||
{
|
||||
orderNo: 'PO-20260616-003', orderType: 'internal', completeTime: '2026-06-16 14:50',
|
||||
orderNo: 'PO-20260616-003', orderType: 'internal', completeTime: '2026-06-16 14:50', taskNo: 'T-003',
|
||||
mealPacks: [
|
||||
{ type: '餐品净菜包', packName: '番茄炒蛋套餐', packSize: 4, packSpec: '大份500g', ingredients: [
|
||||
{ name: '番茄炒蛋', icon: '🥘', weightPerPack: 500, weighed: 2000 }
|
||||
@@ -440,7 +441,7 @@
|
||||
]
|
||||
},
|
||||
{
|
||||
orderNo: 'PO-20260616-004', orderType: 'external', completeTime: '2026-06-16 15:20',
|
||||
orderNo: 'PO-20260616-004', orderType: 'external', completeTime: '2026-06-16 15:20', taskNo: 'T-004',
|
||||
mealPacks: [
|
||||
{ type: '餐品净菜包', packName: '凉拌黄瓜套餐', packSize: 5, packSpec: '标准份500g', ingredients: [
|
||||
{ name: '凉拌黄瓜', icon: '🥘', weightPerPack: 500, weighed: 2500 }
|
||||
@@ -641,7 +642,7 @@
|
||||
});
|
||||
}
|
||||
|
||||
/* 获取餐品净菜包状态:主辅材+调料全部完成才算已组配 */
|
||||
/* 获取餐品净菜包状态:主辅材+调料全部完成才算已完成 */
|
||||
function getPackStatus(pack) {
|
||||
var ingDone = pack.ingredients.every(function(ing) {
|
||||
return ing.weighed >= ing.weightPerPack * pack.packSize;
|
||||
@@ -649,10 +650,21 @@
|
||||
var seaDone = !pack.seasonings || pack.seasonings.every(function(sea) {
|
||||
return sea.weighed >= sea.weightPerPack * pack.packSize;
|
||||
});
|
||||
if (ingDone && seaDone) return { text: '已组配', cls: 'status-badge--done' };
|
||||
if (ingDone && seaDone) return { text: '已完成', cls: 'status-badge--done' };
|
||||
return { text: '待组配', cls: 'status-badge--pending' };
|
||||
}
|
||||
|
||||
/* 判断餐品净菜包是否有待组配项(主辅材或调料) */
|
||||
function hasPendingPack(pack) {
|
||||
var ingPending = pack.ingredients.some(function(ing) {
|
||||
return ing.weighed < ing.weightPerPack * pack.packSize;
|
||||
});
|
||||
var seaPending = pack.seasonings && pack.seasonings.some(function(sea) {
|
||||
return sea.weighed < sea.weightPerPack * pack.packSize;
|
||||
});
|
||||
return ingPending || seaPending;
|
||||
}
|
||||
|
||||
// 渲染卡片列表
|
||||
function renderTable() {
|
||||
var records = getFilteredRecords();
|
||||
@@ -671,7 +683,7 @@
|
||||
|
||||
records.forEach(function(order) {
|
||||
var packs = order.mealPacks;
|
||||
var orderAllDone = packs.every(function(p) { return getPackStatus(p).text === '已组配'; });
|
||||
var orderAllDone = packs.every(function(p) { return !hasPendingPack(p); });
|
||||
|
||||
var taskCard = document.createElement('div');
|
||||
taskCard.className = 'task-card';
|
||||
@@ -686,13 +698,13 @@
|
||||
'<span class="task-card__order-info"><span class="task-card__order-info__label">订单号:</span><span class="task-card__order-info__value">' + order.orderNo + '</span></span>' +
|
||||
'<span class="order-type-tag ' + orderTypeCls + '">' + orderTypeLabel + '</span>' +
|
||||
'<span class="task-card__arrival">⏰ 任务完成时间:<span class="task-card__arrival__time">' + order.completeTime + '</span></span>' +
|
||||
'<span class="task-card__status"><span class="status-badge ' + (orderAllDone ? 'status-badge--done' : 'status-badge--pending') + '">' + (orderAllDone ? '已组配' : '待组配') + '</span></span>';
|
||||
'<span class="task-card__status"><span class="status-badge ' + (orderAllDone ? 'status-badge--done' : 'status-badge--pending') + '">' + (orderAllDone ? '已完成' : '待组配') + '</span></span>';
|
||||
taskCard.appendChild(header);
|
||||
|
||||
/* 表格头(6列:餐品净菜包名称 / 包装规格 / 打包份数 / 所需总重 / 已称 / 状态) */
|
||||
var tableHead = document.createElement('div');
|
||||
tableHead.className = 'item-table__head';
|
||||
tableHead.innerHTML = '<div>餐品净菜包名称</div><div style="text-align:center">包装规格</div><div style="text-align:center">打包份数</div><div style="text-align:right">所需总重</div><div style="text-align:right">已称</div><div style="text-align:center">状态</div>';
|
||||
tableHead.innerHTML = '<div>餐品净菜包名称</div><div style="text-align:center">包装规格</div><div style="text-align:center">份数</div><div style="text-align:right">应称重量</div><div style="text-align:right">已称重量</div><div style="text-align:center">状态</div>';
|
||||
taskCard.appendChild(tableHead);
|
||||
|
||||
/* 表格体 */
|
||||
@@ -717,18 +729,29 @@
|
||||
}
|
||||
var totalNeed = Math.round((ingNeed + seaNeed) * 100) / 100;
|
||||
var totalWeighed = Math.round((ingWeighed + seaWeighed) * 100) / 100;
|
||||
var perPackWeight = Math.round((totalNeed / pack.packSize) * 100) / 100;
|
||||
var perPackWeighed = Math.round((totalWeighed / pack.packSize) * 100) / 100;
|
||||
var packDone = !hasPendingPack(pack);
|
||||
/* 从包装规格中提取重量(如"大份800g"→800) */
|
||||
var specMatch = pack.packSpec && pack.packSpec.match(/(\d+)g/);
|
||||
var specWeight = specMatch ? parseInt(specMatch[1]) : perPackWeight;
|
||||
|
||||
/* 主行:餐品净菜包 */
|
||||
var parentRow = document.createElement('div');
|
||||
parentRow.className = 'item-parent-row';
|
||||
parentRow.innerHTML =
|
||||
'<div class="parent-name"><div class="parent-icon">📦</div><span class="parent-name__text">' + pack.packName + '</span></div>' +
|
||||
/* 按单份拆分,每份一行 */
|
||||
for (var p = 0; p < pack.packSize; p++) {
|
||||
var portionWeighed = packDone ? perPackWeighed : 0;
|
||||
var weightClass = packDone ? 'parent-weight--done' : '';
|
||||
|
||||
var parentRow = document.createElement('div');
|
||||
parentRow.className = 'item-parent-row';
|
||||
parentRow.innerHTML =
|
||||
'<div class="parent-name"><div class="parent-icon">📦</div><span class="parent-name__text">' + pack.packName + ' <span style="font-size:10px;color:rgba(255,255,255,0.4)">第' + (p + 1) + '份/' + pack.packSize + '份</span></span></div>' +
|
||||
'<div style="text-align:center"><span class="pack-spec-tag">' + (pack.packSpec || '—') + '</span></div>' +
|
||||
'<div style="text-align:center"><span class="pack-size-tag">' + pack.packSize + '</span></div>' +
|
||||
'<div class="parent-weight">需 ' + totalNeed + ' 克</div>' +
|
||||
'<div class="parent-weight">已 ' + totalWeighed + ' 克</div>' +
|
||||
'<div style="text-align:center"><span class="status-tag ' + (packStatus.text === '已组配' ? 'status-tag--done' : 'status-tag--wait') + '">' + packStatus.text + '</span></div>';
|
||||
tableBody.appendChild(parentRow);
|
||||
'<div style="text-align:center"><span class="pack-size-tag">1</span></div>' +
|
||||
'<div class="parent-weight ' + weightClass + '">' + specWeight + ' 克</div>' +
|
||||
'<div class="parent-weight ' + weightClass + '">' + portionWeighed + ' 克</div>' +
|
||||
'<div style="text-align:center"><span class="status-tag ' + (packDone ? 'status-tag--done' : 'status-tag--wait') + '">' + (packDone ? '已完成' : '待组配') + '</span></div>';
|
||||
tableBody.appendChild(parentRow);
|
||||
}
|
||||
});
|
||||
|
||||
taskCard.appendChild(tableBody);
|
||||
|
||||
@@ -1,5 +1,14 @@
|
||||
# 净菜组配秤 CHANGELOG
|
||||
|
||||
## [2.2.1] - 2026-06-26
|
||||
|
||||
### 组配记录页字段与显示逻辑对齐
|
||||
- `03-verify-history.html` — 表头与组配任务页(01)统一:打包份数→份数、所需总重→应称重量、已称→已称重量
|
||||
- 行展示改为按单份拆分("第N份/M份"),与01页一致
|
||||
- 状态文案统一:已组配→已完成,新增 `hasPendingPack` 判断函数
|
||||
- grid 列宽对齐01页,新增 `.parent-weight--done` 绿色完成样式
|
||||
- 数据层补充 `taskNo` 字段
|
||||
|
||||
## [2.2.0] - 2026-06-25
|
||||
|
||||
### 组配作业页新增净菜类型
|
||||
|
||||
Reference in New Issue
Block a user