docs(design): 移动出入库筛选合一行(状态下拉+漏斗) + 详情字段对齐桌面 + 库存去FAB
- 搜索/状态/详细搜索/新增 合为一行:状态 pills 撤除改 m-select 下拉 (底部选项 sheet 带图标徽章,激活高亮),详细搜索改漏斗图标按钮(激活转 primary) - 详情 sheet 字段名与顺序对齐桌面抽屉:单号升为标题,补 仓库/商品数 行, 明细标签改 入库明细/出库明细,合计金额(出库+合计利润)移至明细卡之后 - 样本数据补 wh 仓库字段 - 库存屏 FAB 移除(入库建档铁律,库存不手工新增) Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01JJ1g8XV1YhhmHRzhwWEW7o
This commit is contained in:
@@ -30,7 +30,6 @@
|
||||
</div>
|
||||
</div>
|
||||
<nav class="m-tabbar" data-m-tabs data-active="inventory"></nav>
|
||||
<div class="m-fab" onclick="openCreate()"><svg viewBox="0 0 24 24"><use href="#i-plus"/></svg></div>
|
||||
<div class="toast" id="toast"></div>
|
||||
|
||||
<script src="icons.js"></script>
|
||||
|
||||
@@ -20,8 +20,10 @@
|
||||
<div class="m-top" data-m-top data-title="入库管理"></div>
|
||||
<div class="m-page has-tabs">
|
||||
<div class="m-scroll">
|
||||
<div style="display:flex;gap:10px;align-items:stretch;margin-bottom:10px">
|
||||
<div style="display:flex;gap:8px;align-items:stretch;margin-bottom:10px">
|
||||
<div class="m-search" style="flex:1;min-width:0"><svg viewBox="0 0 24 24"><use href="#i-search"/></svg><input id="q" placeholder="搜索单号 / 供应商 / 酒名" oninput="state.q=this.value;render()"></div>
|
||||
<div class="m-select" id="stSel" style="height:auto;flex:none" onclick="openStatusSheet()"><span id="stVal">全部</span><svg viewBox="0 0 24 24"><use href="#i-chevron-down"/></svg></div>
|
||||
<div class="btn ghost" id="advBtn" style="height:auto;flex:none;padding:0 12px" onclick="openAdv()" title="详细搜索"><svg viewBox="0 0 24 24"><use href="#i-ic21"/></svg></div>
|
||||
<div class="btn primary" style="height:auto;flex:none" onclick="location.href='m-stock-in.html'"><svg viewBox="0 0 24 24"><use href="#i-plus"/></svg>新增</div>
|
||||
</div>
|
||||
<div class="m-kpi" style="margin-bottom:10px">
|
||||
@@ -30,7 +32,6 @@
|
||||
<div class="k" onclick="setSt('待审核')"><div class="kl"><svg viewBox="0 0 24 24"><use href="#i-ic42"/></svg>待审核 · 点击筛选</div><div class="kv">4</div><div class="kd warn">需尽快处理</div></div>
|
||||
<div class="k" onclick="setSt('草稿')"><div class="kl"><svg viewBox="0 0 24 24"><use href="#i-ic06"/></svg>草稿 · 点击筛选</div><div class="kv">2</div><div class="kd">待提交审核</div></div>
|
||||
</div>
|
||||
<div class="m-filters" id="pills"></div>
|
||||
<div class="m-section" id="cnt">入库单</div>
|
||||
<div id="list"></div>
|
||||
</div>
|
||||
@@ -42,13 +43,13 @@
|
||||
<script src="mobile-shell.js"></script>
|
||||
<script>
|
||||
const ORDERS=[
|
||||
{no:'RK-20260620-009',party:'鼎晟调货',items:2,amount:'¥5,360',status:'已审核',ret:'部分退单',date:'2026-06-20',by:'王经理',auditor:'张主管',goods:'茅台 飞天 53°、五粮液 普五 52°',pending:1,lines:[{n:'茅台 飞天 53°',s:'500ml×6',q:1,a:'待定价',pend:true},{n:'五粮液 普五 52°',s:'500ml×6',q:1,a:'¥2,680'}]},
|
||||
{no:'RK-20260620-006',party:'鼎晟供应链',items:3,amount:'¥12,800',status:'待审核',date:'2026-06-20',by:'王经理',auditor:'',goods:'茅台 王子酒、习酒 窖藏 1988',lines:[{n:'茅台 王子酒',s:'500ml×6',q:4,a:'¥4,800'},{n:'习酒 窖藏 1988',s:'500ml×6',q:2,a:'¥4,000'},{n:'茅台 迎宾酒',s:'500ml×6',q:4,a:'¥4,000'}]},
|
||||
{no:'RK-20260620-005',party:'贵州茅台经销',items:2,amount:'¥80,400',status:'已审核',date:'2026-06-20',by:'王经理',auditor:'张主管',goods:'茅台 飞天 53°、茅台 1935',lines:[{n:'茅台 飞天 53°',s:'500ml×6',q:20,a:'¥53,600'},{n:'茅台 1935',s:'500ml×6',q:10,a:'¥26,800'}]},
|
||||
{no:'RK-20260619-004',party:'五粮液华东仓',items:2,amount:'¥33,600',status:'已审核',ret:'已退单',date:'2026-06-19',by:'李采购',auditor:'张主管',goods:'五粮液 普五 52°、五粮液 1618',lines:[{n:'五粮液 普五 52°',s:'500ml×6',q:8,a:'¥16,800'},{n:'五粮液 1618',s:'500ml×6',q:8,a:'¥16,800'}]},
|
||||
{no:'RK-20260619-003',party:'剑南春直营',items:1,amount:'¥4,380',status:'已拒绝',date:'2026-06-19',by:'李采购',auditor:'张主管',goods:'剑南春 水晶剑',lines:[{n:'剑南春 水晶剑',s:'500ml×6',q:10,a:'¥4,380'}]},
|
||||
{no:'RK-20260618-002',party:'泸州老窖仓',items:2,amount:'¥16,000',status:'已审核',date:'2026-06-18',by:'王经理',auditor:'王经理',goods:'泸州老窖 特曲、国窖 1573',lines:[{n:'泸州老窖 特曲',s:'500ml×6',q:25,a:'¥8,000'},{n:'国窖 1573',s:'500ml×6',q:8,a:'¥8,000'}]},
|
||||
{no:'RK-20260618-001',party:'洋河股份',items:2,amount:'¥14,800',status:'草稿',date:'2026-06-18',by:'王经理',auditor:'',goods:'洋河 梦之蓝 M6、洋河 海之蓝',lines:[{n:'洋河 梦之蓝 M6',s:'500ml×6',q:12,a:'¥7,440'},{n:'洋河 海之蓝',s:'500ml×6',q:16,a:'¥7,360'}]},
|
||||
{no:'RK-20260620-009',party:'鼎晟调货',wh:'主仓',items:2,amount:'¥5,360',status:'已审核',ret:'部分退单',date:'2026-06-20',by:'王经理',auditor:'张主管',goods:'茅台 飞天 53°、五粮液 普五 52°',pending:1,lines:[{n:'茅台 飞天 53°',s:'500ml×6',q:1,a:'待定价',pend:true},{n:'五粮液 普五 52°',s:'500ml×6',q:1,a:'¥2,680'}]},
|
||||
{no:'RK-20260620-006',party:'鼎晟供应链',wh:'名酒仓',items:3,amount:'¥12,800',status:'待审核',date:'2026-06-20',by:'王经理',auditor:'',goods:'茅台 王子酒、习酒 窖藏 1988',lines:[{n:'茅台 王子酒',s:'500ml×6',q:4,a:'¥4,800'},{n:'习酒 窖藏 1988',s:'500ml×6',q:2,a:'¥4,000'},{n:'茅台 迎宾酒',s:'500ml×6',q:4,a:'¥4,000'}]},
|
||||
{no:'RK-20260620-005',party:'贵州茅台经销',wh:'主仓',items:2,amount:'¥80,400',status:'已审核',date:'2026-06-20',by:'王经理',auditor:'张主管',goods:'茅台 飞天 53°、茅台 1935',lines:[{n:'茅台 飞天 53°',s:'500ml×6',q:20,a:'¥53,600'},{n:'茅台 1935',s:'500ml×6',q:10,a:'¥26,800'}]},
|
||||
{no:'RK-20260619-004',party:'五粮液华东仓',wh:'一号仓',items:2,amount:'¥33,600',status:'已审核',ret:'已退单',date:'2026-06-19',by:'李采购',auditor:'张主管',goods:'五粮液 普五 52°、五粮液 1618',lines:[{n:'五粮液 普五 52°',s:'500ml×6',q:8,a:'¥16,800'},{n:'五粮液 1618',s:'500ml×6',q:8,a:'¥16,800'}]},
|
||||
{no:'RK-20260619-003',party:'剑南春直营',wh:'主仓',items:1,amount:'¥4,380',status:'已拒绝',date:'2026-06-19',by:'李采购',auditor:'张主管',goods:'剑南春 水晶剑',lines:[{n:'剑南春 水晶剑',s:'500ml×6',q:10,a:'¥4,380'}]},
|
||||
{no:'RK-20260618-002',party:'泸州老窖仓',wh:'名酒仓',items:2,amount:'¥16,000',status:'已审核',date:'2026-06-18',by:'王经理',auditor:'王经理',goods:'泸州老窖 特曲、国窖 1573',lines:[{n:'泸州老窖 特曲',s:'500ml×6',q:25,a:'¥8,000'},{n:'国窖 1573',s:'500ml×6',q:8,a:'¥8,000'}]},
|
||||
{no:'RK-20260618-001',party:'洋河股份',wh:'主仓',items:2,amount:'¥14,800',status:'草稿',date:'2026-06-18',by:'王经理',auditor:'',goods:'洋河 梦之蓝 M6、洋河 海之蓝',lines:[{n:'洋河 梦之蓝 M6',s:'500ml×6',q:12,a:'¥7,440'},{n:'洋河 海之蓝',s:'500ml×6',q:16,a:'¥7,360'}]},
|
||||
];
|
||||
/* 状态词与桌面/后端对齐:主状态 4 词 + 退单态 2 词(return_state: partial/full) */
|
||||
const ST=['全部','草稿','待审核','已审核','已拒绝','部分退单','已退单'];
|
||||
@@ -78,8 +79,11 @@ function filtered(){ return ORDERS.filter(o=>{
|
||||
return true; }); }
|
||||
function render(){
|
||||
const n=advCount();
|
||||
document.getElementById('pills').innerHTML=ST.map(s=>`<div class="m-pill ${s===state.status?'on':''}" onclick="setSt('${s}')">${s}</div>`).join('')
|
||||
+`<div class="m-pill ${n?'on':''}" onclick="openAdv()"><svg width="13" height="13" viewBox="0 0 24 24" style="vertical-align:-2px"><use href="#i-ic21"/></svg> 详细搜索${n?' · '+n:''}</div>`;
|
||||
document.getElementById('stVal').textContent=state.status;
|
||||
document.getElementById('stSel').style.borderColor=state.status==='全部'?'':'var(--primary)';
|
||||
document.getElementById('stSel').style.color=state.status==='全部'?'':'var(--primary)';
|
||||
const ab=document.getElementById('advBtn');
|
||||
ab.classList.toggle('primary',n>0); ab.classList.toggle('ghost',n===0);
|
||||
const rows=filtered();
|
||||
document.getElementById('cnt').textContent=`入库单 · 共 ${rows.length}`;
|
||||
const L=document.getElementById('list');
|
||||
@@ -94,6 +98,10 @@ function render(){
|
||||
</a>`).join('');
|
||||
}
|
||||
function setSt(s){ state.status=s; render(); }
|
||||
/* ---- 状态下拉(底部选项 sheet) ---- */
|
||||
function openStatusSheet(){
|
||||
openSheet('状态筛选', ST.map(s=>`<div class="m-opt ${s===state.status?'sel':''}" onclick="setSt('${s}');closeSheet()">${s!=='全部'?`<span class="badge ico b-${s}"><svg class="ic"><use href="#${STICON[s]}"/></svg></span>`:''}${s}<svg class="ck" viewBox="0 0 24 24"><use href="#i-check"/></svg></div>`).join(''));
|
||||
}
|
||||
|
||||
/* ==================== 详细搜索(底部 sheet,竖排单列) ==================== */
|
||||
let advOpen=''; // 当前展开的下拉字段
|
||||
@@ -137,8 +145,9 @@ function openOrder(no){ const o=ORDERS.find(x=>x.no===no);
|
||||
const confirmBtn=(o.pending&&o.status==='已审核')?`<div class="btn primary" style="flex:1;justify-content:center" onclick="openConfirm('${o.no}')"><svg viewBox="0 0 24 24"><use href="#i-edit"/></svg>确认进价</div>`:'';
|
||||
const lns=o.lines||[];
|
||||
const lineRows=lns.map((l,i)=>`<div class="drow"${i===lns.length-1?' style="border-bottom:none"':''}><span style="color:var(--text);line-height:1.45">${l.n}<br><span style="color:var(--faint);font-size:var(--fs-xs)">${l.s} · ×${l.q}</span></span><b style="font-family:var(--font-mono)">${l.pend?biB('待定价'):l.a}</b></div>`).join('');
|
||||
openSheet('入库单详情', `<div class="drow"><span>单号</span><b style="font-family:var(--font-mono)">${o.no}</b></div><div class="drow"><span>供应商</span><b>${o.party}</b></div><div class="drow"><span>单据日期</span><b>${o.date}</b></div><div class="drow"><span>入库员</span><b>${o.by}</b></div><div class="drow"><span>审核员</span><b>${o.auditor||'—'}</b></div><div class="drow"><span>合计金额</span><b style="font-family:var(--font-mono)">${o.amount}</b></div>${pendRow}<div class="drow" style="border-bottom:none"><span>状态</span><b>${biB(o.status)}${o.ret?' '+biB(o.ret):''}</b></div>
|
||||
<div class="pe-card" style="margin-top:14px"><div class="pe-h"><span class="pe-ic"><svg viewBox="0 0 24 24"><use href="#i-ic33"/></svg></span>商品明细 · ${lns.length} 项</div><div class="pe-b" style="padding-top:2px;padding-bottom:2px">${lineRows}</div></div>
|
||||
openSheet(o.no, `<div class="drow"><span>单据日期</span><b>${o.date}</b></div><div class="drow"><span>供应商</span><b>${o.party}</b></div><div class="drow"><span>仓库</span><b>${o.wh}</b></div><div class="drow"><span>商品数</span><b>${o.items}</b></div><div class="drow"><span>入库员</span><b>${o.by}</b></div><div class="drow"><span>审核员</span><b>${o.auditor||'—'}</b></div>${pendRow}<div class="drow" style="border-bottom:none"><span>状态</span><b>${biB(o.status)}${o.ret?' '+biB(o.ret):''}</b></div>
|
||||
<div class="pe-card" style="margin-top:14px"><div class="pe-h"><span class="pe-ic"><svg viewBox="0 0 24 24"><use href="#i-ic33"/></svg></span>入库明细 · ${lns.length} 项</div><div class="pe-b" style="padding-top:2px;padding-bottom:2px">${lineRows}</div></div>
|
||||
<div class="drow" style="border-bottom:none"><span>合计金额</span><b style="font-family:var(--font-mono)">${o.amount}</b></div>
|
||||
${o.pending?'<div style="margin-top:12px;font-size:var(--fs-sm);line-height:1.6;color:var(--warn)">调货「先卖后定价」:进价待定,价格确定后点「确认进价」前向补齐成本与应付。</div>':''}
|
||||
<div style="display:flex;gap:10px;margin-top:16px">${confirmBtn}${actions(o)}</div>`);
|
||||
}
|
||||
|
||||
@@ -20,8 +20,10 @@
|
||||
<div class="m-top" data-m-top data-title="出库管理"></div>
|
||||
<div class="m-page has-tabs">
|
||||
<div class="m-scroll">
|
||||
<div style="display:flex;gap:10px;align-items:stretch;margin-bottom:10px">
|
||||
<div style="display:flex;gap:8px;align-items:stretch;margin-bottom:10px">
|
||||
<div class="m-search" style="flex:1;min-width:0"><svg viewBox="0 0 24 24"><use href="#i-search"/></svg><input id="q" placeholder="搜索单号 / 客户 / 酒名" oninput="state.q=this.value;render()"></div>
|
||||
<div class="m-select" id="stSel" style="height:auto;flex:none" onclick="openStatusSheet()"><span id="stVal">全部</span><svg viewBox="0 0 24 24"><use href="#i-chevron-down"/></svg></div>
|
||||
<div class="btn ghost" id="advBtn" style="height:auto;flex:none;padding:0 12px" onclick="openAdv()" title="详细搜索"><svg viewBox="0 0 24 24"><use href="#i-ic21"/></svg></div>
|
||||
<div class="btn primary" style="height:auto;flex:none" onclick="location.href='m-stock-out.html'"><svg viewBox="0 0 24 24"><use href="#i-plus"/></svg>新增</div>
|
||||
</div>
|
||||
<div class="m-kpi" style="margin-bottom:10px">
|
||||
@@ -30,7 +32,6 @@
|
||||
<div class="k" onclick="setSt('待审核')"><div class="kl"><svg viewBox="0 0 24 24"><use href="#i-ic42"/></svg>待审核 · 点击筛选</div><div class="kv">3</div><div class="kd warn">需尽快处理</div></div>
|
||||
<div class="k" onclick="setSt('草稿')"><div class="kl"><svg viewBox="0 0 24 24"><use href="#i-ic06"/></svg>草稿 · 点击筛选</div><div class="kv">1</div><div class="kd">待提交审核</div></div>
|
||||
</div>
|
||||
<div class="m-filters" id="pills"></div>
|
||||
<div class="m-section" id="cnt">出库单</div>
|
||||
<div id="list"></div>
|
||||
</div>
|
||||
@@ -42,12 +43,12 @@
|
||||
<script src="mobile-shell.js"></script>
|
||||
<script>
|
||||
const ORDERS=[
|
||||
{no:'CK-20260620-008',party:'城东烟酒行',items:2,amount:'¥18,600',profit:'¥3,400',status:'待审核',date:'2026-06-20',by:'王经理',auditor:'',goods:'茅台 飞天 53°、五粮液 普五 52°',lines:[{n:'茅台 飞天 53°',s:'500ml×6',q:4,a:'¥12,600'},{n:'五粮液 普五 52°',s:'500ml×6',q:3,a:'¥6,000'}]},
|
||||
{no:'CK-20260620-007',party:'宴汇大酒店',items:2,amount:'¥6,400',profit:'¥980',status:'已审核',ret:'部分退单',date:'2026-06-20',by:'李销售',auditor:'张主管',goods:'剑南春 水晶剑、洋河 海之蓝',lines:[{n:'剑南春 水晶剑',s:'500ml×6',q:4,a:'¥3,200'},{n:'洋河 海之蓝',s:'500ml×6',q:8,a:'¥3,200'}]},
|
||||
{no:'CK-20260619-006',party:'金樽会所',items:2,amount:'¥41,000',profit:'¥6,150',status:'已审核',date:'2026-06-19',by:'王经理',auditor:'张主管',goods:'茅台 飞天 53°、国窖 1573',pending:1,lines:[{n:'茅台 飞天 53°',s:'500ml×6',q:10,a:'¥28,000'},{n:'国窖 1573',s:'500ml×6',q:13,a:'待定价',pend:true}]},
|
||||
{no:'CK-20260619-005',party:'喜宴婚庆',items:2,amount:'¥9,900',profit:'¥1,480',status:'已拒绝',date:'2026-06-19',by:'李销售',auditor:'张主管',goods:'泸州老窖 特曲、汾酒 青花 20',lines:[{n:'泸州老窖 特曲',s:'500ml×6',q:10,a:'¥5,000'},{n:'汾酒 青花 20',s:'500ml×6',q:7,a:'¥4,900'}]},
|
||||
{no:'CK-20260618-004',party:'城东烟酒行',items:2,amount:'¥12,500',profit:'¥1,870',status:'已审核',ret:'已退单',date:'2026-06-18',by:'王经理',auditor:'王经理',goods:'西凤酒 旗舰版、郎酒 红花郎 15',lines:[{n:'西凤酒 旗舰版',s:'500ml×6',q:13,a:'¥6,500'},{n:'郎酒 红花郎 15',s:'500ml×6',q:10,a:'¥6,000'}]},
|
||||
{no:'CK-20260618-003',party:'金樽会所',items:1,amount:'¥8,400',profit:'¥1,260',status:'草稿',date:'2026-06-18',by:'李销售',auditor:'',goods:'汾酒 青花 20',lines:[{n:'汾酒 青花 20',s:'500ml×6',q:12,a:'¥8,400'}]},
|
||||
{no:'CK-20260620-008',party:'城东烟酒行',wh:'主仓',items:2,amount:'¥18,600',profit:'¥3,400',status:'待审核',date:'2026-06-20',by:'王经理',auditor:'',goods:'茅台 飞天 53°、五粮液 普五 52°',lines:[{n:'茅台 飞天 53°',s:'500ml×6',q:4,a:'¥12,600'},{n:'五粮液 普五 52°',s:'500ml×6',q:3,a:'¥6,000'}]},
|
||||
{no:'CK-20260620-007',party:'宴汇大酒店',wh:'名酒仓',items:2,amount:'¥6,400',profit:'¥980',status:'已审核',ret:'部分退单',date:'2026-06-20',by:'李销售',auditor:'张主管',goods:'剑南春 水晶剑、洋河 海之蓝',lines:[{n:'剑南春 水晶剑',s:'500ml×6',q:4,a:'¥3,200'},{n:'洋河 海之蓝',s:'500ml×6',q:8,a:'¥3,200'}]},
|
||||
{no:'CK-20260619-006',party:'金樽会所',wh:'主仓',items:2,amount:'¥41,000',profit:'¥6,150',status:'已审核',date:'2026-06-19',by:'王经理',auditor:'张主管',goods:'茅台 飞天 53°、国窖 1573',pending:1,lines:[{n:'茅台 飞天 53°',s:'500ml×6',q:10,a:'¥28,000'},{n:'国窖 1573',s:'500ml×6',q:13,a:'待定价',pend:true}]},
|
||||
{no:'CK-20260619-005',party:'喜宴婚庆',wh:'一号仓',items:2,amount:'¥9,900',profit:'¥1,480',status:'已拒绝',date:'2026-06-19',by:'李销售',auditor:'张主管',goods:'泸州老窖 特曲、汾酒 青花 20',lines:[{n:'泸州老窖 特曲',s:'500ml×6',q:10,a:'¥5,000'},{n:'汾酒 青花 20',s:'500ml×6',q:7,a:'¥4,900'}]},
|
||||
{no:'CK-20260618-004',party:'城东烟酒行',wh:'主仓',items:2,amount:'¥12,500',profit:'¥1,870',status:'已审核',ret:'已退单',date:'2026-06-18',by:'王经理',auditor:'王经理',goods:'西凤酒 旗舰版、郎酒 红花郎 15',lines:[{n:'西凤酒 旗舰版',s:'500ml×6',q:13,a:'¥6,500'},{n:'郎酒 红花郎 15',s:'500ml×6',q:10,a:'¥6,000'}]},
|
||||
{no:'CK-20260618-003',party:'金樽会所',wh:'名酒仓',items:1,amount:'¥8,400',profit:'¥1,260',status:'草稿',date:'2026-06-18',by:'李销售',auditor:'',goods:'汾酒 青花 20',lines:[{n:'汾酒 青花 20',s:'500ml×6',q:12,a:'¥8,400'}]},
|
||||
];
|
||||
/* 状态词与桌面/后端对齐:主状态 4 词 + 退单态 2 词(return_state: partial/full) */
|
||||
const ST=['全部','草稿','待审核','已审核','已拒绝','部分退单','已退单'];
|
||||
@@ -77,8 +78,11 @@ function filtered(){ return ORDERS.filter(o=>{
|
||||
return true; }); }
|
||||
function render(){
|
||||
const n=advCount();
|
||||
document.getElementById('pills').innerHTML=ST.map(s=>`<div class="m-pill ${s===state.status?'on':''}" onclick="setSt('${s}')">${s}</div>`).join('')
|
||||
+`<div class="m-pill ${n?'on':''}" onclick="openAdv()"><svg width="13" height="13" viewBox="0 0 24 24" style="vertical-align:-2px"><use href="#i-ic21"/></svg> 详细搜索${n?' · '+n:''}</div>`;
|
||||
document.getElementById('stVal').textContent=state.status;
|
||||
document.getElementById('stSel').style.borderColor=state.status==='全部'?'':'var(--primary)';
|
||||
document.getElementById('stSel').style.color=state.status==='全部'?'':'var(--primary)';
|
||||
const ab=document.getElementById('advBtn');
|
||||
ab.classList.toggle('primary',n>0); ab.classList.toggle('ghost',n===0);
|
||||
const rows=filtered();
|
||||
document.getElementById('cnt').textContent=`出库单 · 共 ${rows.length}`;
|
||||
const L=document.getElementById('list');
|
||||
@@ -93,6 +97,10 @@ function render(){
|
||||
</a>`).join('');
|
||||
}
|
||||
function setSt(s){ state.status=s; render(); }
|
||||
/* ---- 状态下拉(底部选项 sheet) ---- */
|
||||
function openStatusSheet(){
|
||||
openSheet('状态筛选', ST.map(s=>`<div class="m-opt ${s===state.status?'sel':''}" onclick="setSt('${s}');closeSheet()">${s!=='全部'?`<span class="badge ico b-${s}"><svg class="ic"><use href="#${STICON[s]}"/></svg></span>`:''}${s}<svg class="ck" viewBox="0 0 24 24"><use href="#i-check"/></svg></div>`).join(''));
|
||||
}
|
||||
|
||||
/* ==================== 详细搜索(底部 sheet,竖排单列) ==================== */
|
||||
let advOpen='';
|
||||
@@ -136,8 +144,10 @@ function openOrder(no){ const o=ORDERS.find(x=>x.no===no);
|
||||
const confirmBtn=(o.pending&&o.status==='已审核')?`<div class="btn primary" style="flex:1;justify-content:center" onclick="openConfirm('${o.no}')"><svg viewBox="0 0 24 24"><use href="#i-edit"/></svg>确认售价</div>`:'';
|
||||
const lns=o.lines||[];
|
||||
const lineRows=lns.map((l,i)=>`<div class="drow"${i===lns.length-1?' style="border-bottom:none"':''}><span style="color:var(--text);line-height:1.45">${l.n}<br><span style="color:var(--faint);font-size:var(--fs-xs)">${l.s} · ×${l.q}</span></span><b style="font-family:var(--font-mono)">${l.pend?biB('待定价'):l.a}</b></div>`).join('');
|
||||
openSheet('出库单详情', `<div class="drow"><span>单号</span><b style="font-family:var(--font-mono)">${o.no}</b></div><div class="drow"><span>客户</span><b>${o.party}</b></div><div class="drow"><span>单据日期</span><b>${o.date}</b></div><div class="drow"><span>出库员</span><b>${o.by}</b></div><div class="drow"><span>审核员</span><b>${o.auditor||'—'}</b></div><div class="drow"><span>合计金额</span><b style="font-family:var(--font-mono)">${o.amount}</b></div><div class="drow"><span>合计利润 · 管理员可见</span><b style="font-family:var(--font-mono);color:var(--success)">${o.profit}</b></div>${pendRow}<div class="drow" style="border-bottom:none"><span>状态</span><b>${biB(o.status)}${o.ret?' '+biB(o.ret):''}</b></div>
|
||||
<div class="pe-card" style="margin-top:14px"><div class="pe-h"><span class="pe-ic"><svg viewBox="0 0 24 24"><use href="#i-ic33"/></svg></span>商品明细 · ${lns.length} 项</div><div class="pe-b" style="padding-top:2px;padding-bottom:2px">${lineRows}</div></div>
|
||||
openSheet(o.no, `<div class="drow"><span>单据日期</span><b>${o.date}</b></div><div class="drow"><span>客户</span><b>${o.party}</b></div><div class="drow"><span>仓库</span><b>${o.wh}</b></div><div class="drow"><span>商品数</span><b>${o.items}</b></div><div class="drow"><span>出库员</span><b>${o.by}</b></div><div class="drow"><span>审核员</span><b>${o.auditor||'—'}</b></div>${pendRow}<div class="drow" style="border-bottom:none"><span>状态</span><b>${biB(o.status)}${o.ret?' '+biB(o.ret):''}</b></div>
|
||||
<div class="pe-card" style="margin-top:14px"><div class="pe-h"><span class="pe-ic"><svg viewBox="0 0 24 24"><use href="#i-ic33"/></svg></span>出库明细 · ${lns.length} 项</div><div class="pe-b" style="padding-top:2px;padding-bottom:2px">${lineRows}</div></div>
|
||||
<div class="drow"><span>合计金额</span><b style="font-family:var(--font-mono)">${o.amount}</b></div>
|
||||
<div class="drow" style="border-bottom:none"><span>合计利润 · 管理员可见</span><b style="font-family:var(--font-mono);color:var(--success)">${o.profit}</b></div>
|
||||
${o.pending?'<div style="margin-top:12px;font-size:var(--fs-sm);line-height:1.6;color:var(--warn)">「先卖后定价」:售价待定,价格确定后点「确认售价」按售价×数量结算应收。</div>':''}
|
||||
<div style="display:flex;gap:10px;margin-top:16px">${confirmBtn}${actions(o)}</div>`);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user