61 lines
24 KiB
HTML
61 lines
24 KiB
HTML
<!DOCTYPE html>
|
||
<html lang="zh-CN">
|
||
<head>
|
||
<meta charset="UTF-8">
|
||
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no">
|
||
<title>柏悦物流 PDA · 合托</title>
|
||
<link rel="icon" href="data:,">
|
||
<style>
|
||
:root { --brand:#1769e0; --brand-soft:#eaf2ff; --success:#078775; --danger:#bd3b3b; --warning:#bd6b10; --text:#243b53; --muted:#829ab1; --border:#e4eaf2; --bg:#f3f6fa; }
|
||
* { box-sizing:border-box; } body { max-width:480px; min-height:100vh; margin:0 auto; background:var(--bg); color:var(--text); font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"PingFang SC","Noto Sans SC",sans-serif; } button,input,select { font:inherit; }.hidden { display:none!important; }
|
||
.toast { position:fixed; top:70px; left:50%; z-index:300; padding:10px 20px; border-radius:8px; transform:translateX(-50%) translateY(-20px); opacity:0; color:#fff; background:#243b53; transition:all .25s; pointer-events:none; }.toast.show { transform:translateX(-50%) translateY(0); opacity:1; }.toast.success { background:var(--success); }.toast.error { background:var(--danger); }
|
||
.app-shell { min-height:100vh; padding-bottom:82px; }.page-topbar { position:sticky; top:0; z-index:10; display:flex; align-items:center; justify-content:space-between; height:60px; padding:0 12px; border-bottom:1px solid var(--border); background:#fff; box-shadow:0 2px 8px rgba(20,49,82,.05); }.page-back,.page-user { border:0; cursor:pointer; }.page-back { width:38px; height:38px; border-radius:11px; color:#334e68; background:#f1f5f9; font-size:20px; }.page-title { font-size:17px; font-weight:700; }.page-user { width:36px; height:36px; border-radius:12px; color:#155eef; background:#eaf2ff; font-size:13px; font-weight:700; }
|
||
.inbound-content { padding:14px 12px 30px; }.inbound-card { padding:15px; margin-bottom:12px; border:1px solid var(--border); border-radius:15px; background:#fff; box-shadow:0 1px 3px rgba(0,0,0,.08); }.inbound-card-head { display:flex; align-items:flex-start; justify-content:space-between; gap:10px; }.inbound-card-title { color:var(--text); font-size:15px; font-weight:700; }.inbound-card-sub { margin-top:4px; color:var(--muted); font-size:11px; line-height:1.5; }.inbound-status { flex:none; padding:5px 8px; border-radius:8px; color:var(--success); background:#e1f6f1; font-size:10px; font-weight:700; }.inbound-scan { display:flex; gap:8px; margin-top:13px; }.inbound-scan input { flex:1; min-width:0; height:44px; padding:0 12px; border:1px solid #dfe5ee; border-radius:9px; font-size:13px; }.inbound-scan button { width:46px; border:0; border-radius:9px; color:#fff; background:var(--brand); font-size:19px; cursor:pointer; }
|
||
.consolidation-message,.consolidation-selection-message { display:none; margin-top:10px; padding:10px 11px; border-radius:8px; font-size:12px; }.consolidation-message.show,.consolidation-selection-message.show { display:block; }.consolidation-message.error { color:var(--danger); background:#fff1f1; }.consolidation-message.success { color:var(--success); background:#e8f7f3; }.consolidation-selection-message.warn { color:var(--warning); background:#fff4e5; }
|
||
.consolidation-box-info { padding-bottom:10px; }.consolidation-box { padding:12px 0; border-bottom:1px solid #edf1f5; }.consolidation-box:last-child { border-bottom:0; }.consolidation-box-head { display:flex; align-items:center; justify-content:space-between; gap:8px; }.consolidation-box-mark { color:#1769e0; font-size:13px; }.consolidation-box-meta { margin-top:4px; color:#627d98; font-size:11px; }.inbound-chip { padding:4px 7px; border:0; border-radius:7px; color:#bd6b10; background:#fff4e5; font-size:10px; cursor:pointer; }.consolidation-empty { padding:16px 0; color:var(--muted); font-size:12px; text-align:center; }.consolidation-box-details.two-box-state { padding-right:1px; padding-left:1px; }
|
||
.consolidation-sku-heading { margin:16px 0 8px; color:#334e68; font-size:13px; font-weight:700; }.consolidation-sku-table-wrap { overflow-x:auto; border:1px solid var(--border); border-radius:10px; }.consolidation-sku-table { width:100%; border-collapse:collapse; table-layout:fixed; font-size:11px; }.consolidation-sku-table th { padding:10px 6px; color:#627d98; background:#f7f9fc; font-size:10px; text-align:left; white-space:nowrap; }.consolidation-sku-table td { padding:10px 6px; border-top:1px solid #edf1f5; color:#334e68; overflow-wrap:anywhere; }.consolidation-empty-cell { color:var(--muted); text-align:center; }
|
||
.consolidation-form-grid { display:grid; grid-template-columns:1fr 92px; gap:10px; margin-top:14px; }.consolidation-field span { display:block; margin-bottom:6px; color:#627d98; font-size:11px; }.consolidation-field select,.consolidation-field input { width:100%; height:42px; padding:0 10px; border:1px solid #dfe5ee; border-radius:9px; outline:0; color:#243b53; background:#fff; font-size:13px; }.consolidation-field select:disabled,.consolidation-field input:disabled { color:#94a3b8; background:#f7f9fc; }.consolidation-footer { position:fixed; right:0; bottom:0; left:0; max-width:480px; margin:auto; padding:12px; border-top:1px solid var(--border); background:#fff; }.inbound-btn { width:100%; min-height:44px; border:0; border-radius:10px; color:#fff; background:var(--brand); font-size:14px; font-weight:700; cursor:pointer; }.inbound-btn:disabled { opacity:.55; cursor:not-allowed; }
|
||
.profile-cover { height:132px; padding:16px; color:#fff; background:linear-gradient(140deg,#123b72,#1769e0); }.profile-cover .page-back { color:#fff; background:rgba(255,255,255,.14); }.profile-card { margin:-49px 12px 12px; padding:18px; border-radius:12px; background:#fff; box-shadow:0 10px 28px rgba(20,49,82,.13); text-align:center; }.profile-avatar { display:flex; align-items:center; justify-content:center; width:68px; height:68px; margin:-50px auto 10px; border:4px solid #fff; border-radius:16px; color:#155eef; background:#eaf2ff; font-size:25px; font-weight:800; }.profile-name { font-size:19px; font-weight:700; }.profile-role { margin-top:4px; color:#728196; font-size:12px; }.profile-stats { display:grid; grid-template-columns:repeat(3,1fr); margin-top:16px; padding-top:14px; border-top:1px solid #edf1f5; }.profile-stat strong { display:block; color:#163b68; font-size:17px; }.profile-stat span { color:#8a97a8; font-size:10px; }.profile-list { margin:12px; padding:2px 14px; border:1px solid #e3e8ef; border-radius:10px; background:#fff; }.profile-list-item { display:flex; gap:12px; align-items:center; padding:15px 0; border-bottom:1px solid #edf1f5; color:#334e68; font-size:13px; }.profile-list-item:last-child { border-bottom:0; }.profile-list-icon { display:flex; align-items:center; justify-content:center; width:32px; height:32px; border-radius:8px; background:#eef4ff; }.profile-list-value { margin-left:auto; color:#829ab1; font-size:12px; }.profile-logout { width:calc(100% - 24px); margin:4px 12px 24px; padding:13px; border:1px solid #fecaca; border-radius:9px; color:#dc2626; background:#fff; font-size:14px; font-weight:600; cursor:pointer; }
|
||
/* 与原合托页面一致的作业布局与两箱卡片状态。 */
|
||
.consolidation-page .app-shell { display:flex; flex-direction:column; min-height:100vh; padding-bottom:72px; }.consolidation-page .inbound-content { flex:1; width:100%; padding-bottom:28px; }.consolidation-page .page-back,.consolidation-page .page-user { width:44px; height:44px; }.consolidation-footer { position:fixed; right:0; bottom:0; left:0; z-index:4; max-width:480px; margin:auto; padding:10px 12px max(12px,env(safe-area-inset-bottom)); border-top:1px solid #e4eaf2; background:#fff; box-shadow:0 -4px 14px rgba(23,32,51,.08); }.consolidation-footer .inbound-btn { min-height:48px; }.consolidation-page .inbound-scan input { font-size:16px; }.consolidation-page .inbound-scan input:focus,.consolidation-field select:focus,.consolidation-field input:focus { outline:2px solid rgba(23,105,224,.2); border-color:#1769e0; }.consolidation-scan-card .inbound-card-head { align-items:flex-start; }.consolidation-scan-card .inbound-status { flex:none; }.consolidation-box-info { padding-bottom:14px; }.consolidation-box { padding:12px 0; border-bottom:1px solid #e5ebf3; }.consolidation-box:first-child { padding-top:2px; }.consolidation-box:last-child { padding-bottom:4px; border-bottom:0; }.consolidation-box-head { gap:10px; }.consolidation-box-mark { color:#243b53; font-size:14px; font-weight:700; }.consolidation-box-meta { color:#627d98; font-size:12px; }.consolidation-box .inbound-chip { min-width:44px; min-height:36px; }.consolidation-sku-heading { margin-top:14px; padding-top:12px; border-top:1px solid #e5ebf3; color:#243b53; font-size:13px; font-weight:700; }.consolidation-sku-table-wrap { margin-top:8px; overflow-x:auto; border:0; }.consolidation-sku-table { table-layout:auto; font-size:12px; }.consolidation-sku-table th,.consolidation-sku-table td { padding:10px 8px; border-bottom:1px solid #edf1f5; text-align:left; white-space:nowrap; }.consolidation-sku-table th { color:#627d98; background:#f8fafc; font-weight:600; }.consolidation-sku-table td { color:#243b53; }.consolidation-sku-table td:nth-child(3),.consolidation-sku-table td:nth-child(4) { text-align:right; }.consolidation-form-card { padding-bottom:14px; }.consolidation-form-grid { grid-template-columns:minmax(0,1fr) 112px; margin-top:12px; }.consolidation-field { display:flex; flex-direction:column; gap:6px; color:#627d98; font-size:12px; font-weight:600; }.consolidation-field select,.consolidation-field input { height:44px; padding:0 11px; border-color:#cfd9e7; border-radius:8px; background:#f8fafc; font-size:14px; }.consolidation-selection-message { color:#b42318; }.consolidation-selection-message.warn { background:transparent; }.consolidation-message.success { color:#087568; background:#e8f8f4; }.consolidation-message.error { color:#b42318; background:#fff1f0; } #consolidationBoxDetails.two-box-state { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:8px; padding:8px; border:1px solid #cfe0f7; border-radius:9px; background:#f6f9ff; } #consolidationBoxDetails.two-box-state .consolidation-box { min-width:0; padding:8px; border:1px solid #d9e5f5; border-radius:8px; background:#fff; } #consolidationBoxDetails.two-box-state .consolidation-box-head { flex-direction:column; align-items:flex-start; gap:6px; } #consolidationBoxDetails.two-box-state .consolidation-box .inbound-chip { align-self:flex-end; min-height:30px; }
|
||
</style>
|
||
<link rel="stylesheet" href="../domestic-overseas-theme.css">
|
||
</head>
|
||
<body>
|
||
<div class="toast" id="toast"></div>
|
||
<div class="inbound-page consolidation-page" id="consolidationPage"><div class="app-shell"><div class="page-topbar"><button class="page-back" type="button" onclick="returnToWorkbench()" aria-label="返回工作台">‹</button><div class="page-title">合托</div><button class="page-user" id="consolidationAvatar" type="button" onclick="openProfile()" aria-label="个人中心">张</button></div><div class="inbound-content"><div class="inbound-card consolidation-scan-card"><div class="inbound-card-head"><div><div class="inbound-card-title">扫描箱唛</div><div class="inbound-card-sub">扫描箱唛加入合托,目的仓需保持一致</div></div><span class="inbound-status" id="consolidationAvailableCount">4 箱</span></div><div class="inbound-scan"><input id="consolidationScanInput" placeholder="扫描或输入箱唛" autocomplete="off"><button type="button" onclick="handleConsolidationScan()" aria-label="扫描箱唛">▦</button></div><div class="consolidation-message" id="consolidationMessage" aria-live="polite"></div></div><div class="inbound-card consolidation-box-info"><div class="inbound-card-head"><div><div class="inbound-card-title">箱子信息</div><div class="inbound-card-sub">已扫描箱唛与箱内 SKU 明细</div></div></div><div id="consolidationBoxDetails"><div class="consolidation-empty">暂无箱子,请先扫描箱唛</div></div><div class="consolidation-sku-heading">SKU 列表</div><div class="consolidation-sku-table-wrap"><table class="consolidation-sku-table" id="consolidationSkuTable"><thead><tr><th>箱唛</th><th>SKU</th><th>每箱数量</th><th>可合托箱数</th></tr></thead><tbody><tr><td colspan="4" class="consolidation-empty-cell">暂无 SKU</td></tr></tbody></table></div></div><div class="inbound-card consolidation-form-card"><div class="inbound-card-head"><div><div class="inbound-card-title">合托信息</div><div class="inbound-card-sub">选择 SKU 并输入本次合托箱数</div></div></div><div class="consolidation-form-grid"><label class="consolidation-field"><span>SKU</span><select id="consolidationSkuSelect" onchange="updateConsolidationSelection()" disabled><option value="">扫描箱唛后选择 SKU</option></select></label><label class="consolidation-field"><span>箱数</span><input id="consolidationCartonCountInput" type="number" min="1" value="1" inputmode="numeric" oninput="updateConsolidationSelection()" disabled></label></div><div class="consolidation-selection-message" id="consolidationSelectionMessage" aria-live="polite"></div></div></div><div class="consolidation-footer"><button class="inbound-btn" id="submitConsolidationButton" type="button" onclick="submitConsolidation()" disabled>合托</button></div></div></div>
|
||
<div class="profile-page hidden" id="profilePage"><div class="app-shell"><div class="profile-cover"><button class="page-back" type="button" onclick="closeProfile()">‹</button></div><div class="profile-card"><div class="profile-avatar" id="profileAvatar">张</div><div class="profile-name" id="profileName">张伟</div><div class="profile-role" id="profileRole">W001 · 拣货员</div><div class="profile-stats"><div class="profile-stat"><strong>28</strong><span>今日完成</span></div><div class="profile-stat"><strong>156</strong><span>本月任务</span></div><div class="profile-stat"><strong>99.2%</strong><span>作业准确率</span></div></div></div><div class="profile-list"><div class="profile-list-item"><span class="profile-list-icon">🏢</span><span>当前仓库</span><span class="profile-list-value" id="profileWarehouse">洛杉矶仓</span></div><div class="profile-list-item"><span class="profile-list-icon">🕘</span><span>当前班次</span><span class="profile-list-value">白班 08:00–17:00</span></div><div class="profile-list-item"><span class="profile-list-icon">🔐</span><span>修改密码</span><span class="profile-list-value">›</span></div><div class="profile-list-item"><span class="profile-list-icon">⚙️</span><span>系统设置</span><span class="profile-list-value">›</span></div><div class="profile-list-item"><span class="profile-list-icon">ℹ️</span><span>版本信息</span><span class="profile-list-value">V1.0.0</span></div></div><button class="profile-logout" type="button" onclick="handleLogout()">退出登录</button></div></div>
|
||
<script>
|
||
const CONSOLIDATION_SOURCE_PALLETS = [
|
||
{ id:'TP-YW-001', destination:'义乌仓', items:[{ boxNo:'BX-030-01', order:'SO-260901-030', product:'手机壳套装', sku:'YQ-CASE-01', qty:120 },{ boxNo:'BX-030-02', order:'SO-260901-030', product:'USB-C数据线', sku:'YQ-CABLE-02', qty:80 }] },
|
||
{ id:'TP-YW-002', destination:'义乌仓', items:[{ boxNo:'BX-032-01', order:'SO-260901-032', product:'手机支架', sku:'YQ-HOLDER-03', qty:60 }] },
|
||
{ id:'TP-YW-003', destination:'义乌仓', items:[{ boxNo:'BX-033-01', order:'SO-260901-033', product:'蓝牙耳机', sku:'YQ-BUDS-08', qty:48 },{ boxNo:'BX-033-02', order:'SO-260901-033', product:'充电底座', sku:'YQ-DOCK-09', qty:36 }] },
|
||
{ id:'TP-YW-004', destination:'义乌仓', items:[{ boxNo:'BX-034-01', order:'SO-260901-034', product:'平板保护套', sku:'YQ-PAD-10', qty:50 }] },
|
||
{ id:'TP-NB-001', destination:'宁波仓', items:[{ boxNo:'BX-031-01', order:'SO-260901-031', product:'旅行包', sku:'NH-BAG-04', qty:32 }] }
|
||
];
|
||
let consolidatedPallets = [{ id:'HT-260901-001', destination:'义乌仓', sourcePallets:['TP-YW-001','TP-YW-002'], cartonCount:3, pieceCount:260, items:CONSOLIDATION_SOURCE_PALLETS.slice(0,2).flatMap(pallet=>pallet.items.map(item=>({...item,sourcePallet:pallet.id}))) }];
|
||
let currentConsolidation = null; let consolidationSelection = { sku:'', count:1 }; let currentUser = null; let toastTimer = null;
|
||
function readCurrentUser() { const params=new URLSearchParams(location.search); if(!params.get('id')) return null; return Object.fromEntries(['id','name','role','warehouse'].map(key=>[key,params.get(key)||''])); }
|
||
function buildUserParams(user) { return new URLSearchParams({ id:user.id, name:user.name, role:user.role, warehouse:user.warehouse }); }
|
||
function returnToWorkbench() { const params=buildUserParams(currentUser); params.set('resume','1'); location.href=`../pda-picking.html?${params}`; }
|
||
function handleLogout() { localStorage.removeItem('pdaCurrentUser'); location.href='../pda-picking.html'; }
|
||
function showToast(message,type='') { const toast=document.getElementById('toast'); toast.textContent=message; toast.className=`toast show ${type}`; clearTimeout(toastTimer); toastTimer=setTimeout(()=>toast.className='toast',2200); }
|
||
function allBoxes() { return CONSOLIDATION_SOURCE_PALLETS.flatMap(pallet=>pallet.items.map(item=>({...item,sourcePallet:pallet.id,destination:pallet.destination}))); }
|
||
function existingOwner(boxNo) { return consolidatedPallets.find(pallet=>pallet.items.some(item=>item.boxNo===boxNo)); }
|
||
function availableBoxes() { const selected=new Set(currentConsolidation.items.map(item=>item.boxNo)); return allBoxes().filter(item=>!selected.has(item.boxNo)&&!existingOwner(item.boxNo)); }
|
||
function setMessage(text,type) { const message=document.getElementById('consolidationMessage'); message.textContent=text; message.className=`consolidation-message show ${type}`; }
|
||
function resetView() { document.getElementById('consolidationScanInput').value=''; document.getElementById('consolidationMessage').className='consolidation-message'; document.getElementById('consolidationSelectionMessage').className='consolidation-selection-message'; }
|
||
function openConsolidation() { currentConsolidation={id:'',destination:'',items:[]}; consolidationSelection={sku:'',count:1}; resetView(); renderCurrentConsolidation(); setTimeout(()=>document.getElementById('consolidationScanInput').focus(),0); }
|
||
function handleConsolidationScan() { const input=document.getElementById('consolidationScanInput'); const boxNo=input.value.trim().toUpperCase(); if(!boxNo) return setMessage('请扫描或输入箱唛','error'); const source=allBoxes().find(item=>item.boxNo===boxNo); if(!source) return setMessage('未找到该箱唛,请核对箱唛后重试','error'); const owner=existingOwner(boxNo); if(owner) return setMessage(`该箱唛已归属合托托盘 ${owner.id},不能重复合托`,'error'); if(currentConsolidation.items.some(item=>item.boxNo===boxNo)) return setMessage('该箱唛已加入当前合托,请勿重复扫描','error'); if(currentConsolidation.destination&¤tConsolidation.destination!==source.destination) return setMessage(`目的仓不一致:当前为${currentConsolidation.destination},该箱为${source.destination}`,'error'); currentConsolidation.destination=source.destination; currentConsolidation.items.push(source); input.value=''; setMessage(`箱唛 ${source.boxNo} 已加入当前合托`,'success'); renderCurrentConsolidation(); }
|
||
function renderCurrentConsolidation() { const items=currentConsolidation.items; const available=availableBoxes(); document.getElementById('consolidationAvailableCount').textContent=`${available.length} 箱`; const details=document.getElementById('consolidationBoxDetails'); details.className=items.length===2?'two-box-state':''; details.innerHTML=items.length?items.map((item,index)=>`<div class="consolidation-box"><div class="consolidation-box-head"><strong class="consolidation-box-mark">${item.boxNo}</strong><button class="inbound-chip warn" type="button" onclick="removeConsolidationItem(${index})">移除</button></div><div class="consolidation-box-meta">${item.product} · ${item.sourcePallet} · ${item.order}</div></div>`).join(''):'<div class="consolidation-empty">暂无箱子,请先扫描箱唛</div>'; const tbody=document.querySelector('#consolidationSkuTable tbody'); tbody.innerHTML=items.length?items.map(item=>`<tr><td>${item.boxNo}</td><td>${item.sku}</td><td>${item.qty}</td><td>${available.length}</td></tr>`).join(''):'<tr><td colspan="4" class="consolidation-empty-cell">暂无 SKU</td></tr>'; const select=document.getElementById('consolidationSkuSelect'); const input=document.getElementById('consolidationCartonCountInput'); const skus=[...new Set(items.map(item=>item.sku))]; if(!skus.includes(consolidationSelection.sku)) consolidationSelection.sku=skus[0]||''; select.innerHTML=skus.length?skus.map(sku=>`<option value="${sku}">${sku}</option>`).join(''):'<option value="">扫描箱唛后选择 SKU</option>'; select.value=consolidationSelection.sku; select.disabled=!skus.length; input.disabled=!skus.length; input.value=String(Math.max(1,Number(consolidationSelection.count)||1)); document.getElementById('submitConsolidationButton').disabled=items.length<2; }
|
||
function updateConsolidationSelection() { const select=document.getElementById('consolidationSkuSelect'); const input=document.getElementById('consolidationCartonCountInput'); const message=document.getElementById('consolidationSelectionMessage'); if(!select||!input) return; consolidationSelection.sku=select.value; const requested=Number(input.value); const max=Math.max(1,availableBoxes().length); if(!Number.isInteger(requested)||requested<1) { message.textContent='请输入至少 1 箱'; message.className='consolidation-selection-message show'; return; } consolidationSelection.count=Math.min(requested,max); input.value=String(consolidationSelection.count); message.textContent=requested>max?`最多可输入 ${max} 箱`:''; message.className=requested>max?'consolidation-selection-message show':'consolidation-selection-message'; }
|
||
function removeConsolidationItem(index) { if(!currentConsolidation?.items[index]) return; currentConsolidation.items.splice(index,1); if(!currentConsolidation.items.length) currentConsolidation.destination=''; setMessage('已从当前合托移除该箱','success'); renderCurrentConsolidation(); }
|
||
function nextConsolidationId(now=new Date()) { const two=value=>String(value).padStart(2,'0'); const prefix=`HT-${String(now.getFullYear()).slice(-2)}${two(now.getMonth()+1)}${two(now.getDate())}-`; const max=consolidatedPallets.reduce((highest,pallet)=>pallet.id.startsWith(prefix)?Math.max(highest,Number.parseInt(pallet.id.slice(prefix.length),10)||0):highest,0); return `${prefix}${String(max+1).padStart(3,'0')}`; }
|
||
function submitConsolidation() { const items=currentConsolidation?.items||[]; if(items.length<2) return setMessage('至少扫描两个箱唛后才能合托','error'); const saved={id:currentConsolidation.id||nextConsolidationId(),destination:currentConsolidation.destination,sourcePallets:[...new Set(items.map(item=>item.sourcePallet))],cartonCount:items.length,pieceCount:items.reduce((sum,item)=>sum+item.qty,0),items:items.map(item=>({...item}))}; const existingIndex=consolidatedPallets.findIndex(pallet=>pallet.id===saved.id); if(existingIndex>=0) consolidatedPallets[existingIndex]=saved; else consolidatedPallets.push(saved); currentConsolidation=null; showToast(existingIndex>=0?'合托已更新':'合托已提交','success'); setTimeout(returnToWorkbench,1200); }
|
||
function updateUserUI() { const initial=currentUser.name.slice(0,1); document.getElementById('consolidationAvatar').textContent=initial; document.getElementById('profileAvatar').textContent=initial; document.getElementById('profileName').textContent=currentUser.name; document.getElementById('profileRole').textContent=`${currentUser.id} · ${currentUser.role}`; document.getElementById('profileWarehouse').textContent=currentUser.warehouse; }
|
||
function openProfile() { document.getElementById('consolidationPage').classList.add('hidden'); document.getElementById('profilePage').classList.remove('hidden'); } function closeProfile() { document.getElementById('profilePage').classList.add('hidden'); document.getElementById('consolidationPage').classList.remove('hidden'); }
|
||
document.getElementById('consolidationScanInput').addEventListener('keydown',event=>{if(event.key==='Enter')handleConsolidationScan();}); currentUser=readCurrentUser(); if(!currentUser) location.href='../pda-picking.html'; else { updateUserUI(); openConsolidation(); }
|
||
</script>
|
||
</body>
|
||
</html>
|