docs(design): 提示条图标换清晰变体 i-info/i-alert(h.01 发丝点改实心圆)

小尺寸下 lucide info/alert 的 h.01 点状路径细如没画完;新增点为 r1.1 实心圆的
i-info/i-alert(sprite 两端同步),替换 index 示例、出入库桌面/移动提示条、
移动卡片 foot 信息图标(i-ic24/i-ic42/i-ic69 原图标保留供他处沿用)

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01JJ1g8XV1YhhmHRzhwWEW7o
This commit is contained in:
wangjia
2026-07-04 09:51:52 +08:00
parent 0a2f407868
commit 4d82d37495
7 changed files with 15 additions and 15 deletions
+2 -2
View File
@@ -393,8 +393,8 @@
</tbody></table></div>
</div></div>
<div class="pcard"><div class="pcard-h"><h3>提示条</h3><span class="tk">.notice info/danger(草稿恢复 / 驳回)</span></div><div class="pcard-b" style="display:block">
<div class="notice info"><svg viewBox="0 0 24 24"><use href="#i-ic24"/></svg><div>检测到未提交的入库单草稿(06-21 11:20),是否恢复?</div><div class="nb"><span class="lk">恢复</span><span class="lk" style="color:var(--muted)">放弃</span></div></div>
<div class="notice danger" style="margin-bottom:0"><svg viewBox="0 0 24 24"><use href="#i-ic69"/></svg><div>单据被驳回:单价高于近期采购价,请核实后重报。</div></div>
<div class="notice info"><svg viewBox="0 0 24 24"><use href="#i-info"/></svg><div>检测到未提交的入库单草稿(06-21 11:20),是否恢复?</div><div class="nb"><span class="lk">恢复</span><span class="lk" style="color:var(--muted)">放弃</span></div></div>
<div class="notice danger" style="margin-bottom:0"><svg viewBox="0 0 24 24"><use href="#i-alert"/></svg><div>单据被驳回:单价高于近期采购价,请核实后重报。</div></div>
</div></div>
<div class="pcard"><div class="pcard-h"><h3>单据明细行(商品 / 系列规格分列)</h3><span class="tk">.lines .lr · .lcell .ln/.lcode/.lser/.lspec</span></div><div class="pcard-b" style="display:block">
<div class="lines" style="max-width:480px"><div class="lh" style="grid-template-columns:1fr 124px 40px 64px 78px"><span>商品 · 编码</span><span>系列 / 规格</span><span style="text-align:right">数量</span><span style="text-align:right">单价</span><span style="text-align:right">金额</span></div>
File diff suppressed because one or more lines are too long
@@ -94,7 +94,7 @@ function render(){
<div class="mc-right"><div style="display:flex;gap:5px">${icoB(o.status)}${o.ret?icoB(o.ret):''}${o.pending?icoB('待定价'):''}</div><span class="mc-amt">${o.amount}</span></div>
<div class="mc-chev"><svg viewBox="0 0 24 24"><use href="#i-chevron-right"/></svg></div>
</div>
<div class="mc-foot"><svg width="13" height="13" viewBox="0 0 24 24" stroke-width="1.9" style="color:var(--muted)"><use href="#i-ic24"/></svg>${o.date} · 经手人 ${o.by}${o.auditor?' · 审核 '+o.auditor:''}</div>
<div class="mc-foot"><svg width="13" height="13" viewBox="0 0 24 24" stroke-width="1.9" style="color:var(--muted)"><use href="#i-info"/></svg>${o.date} · 经手人 ${o.by}${o.auditor?' · 审核 '+o.auditor:''}</div>
</a>`).join('');
}
function setSt(s){ state.status=s; render(); }
@@ -153,7 +153,7 @@ function openOrder(no){ const o=ORDERS.find(x=>x.no===no);
}
/* ---- 确认进价(对齐桌面 ovConfirm,简化为 sheet ---- */
function openConfirm(no){ const o=ORDERS.find(x=>x.no===no); const pend=(o.lines||[]).filter(l=>l.pend);
openSheet('确认进价', `<div class="notice info" style="margin-bottom:14px"><svg viewBox="0 0 24 24"><use href="#i-ic42"/></svg><div>调货「先卖后定价」:填写真实进价后,系统前向补齐库存成本、已出库成本快照,并按差额补一条应付流水——不反审核、不影响售价 / 应收。</div></div>`
openSheet('确认进价', `<div class="notice info" style="margin-bottom:14px"><svg viewBox="0 0 24 24"><use href="#i-info"/></svg><div>调货「先卖后定价」:填写真实进价后,系统前向补齐库存成本、已出库成本快照,并按差额补一条应付流水——不反审核、不影响售价 / 应收。</div></div>`
+pend.map(l=>`<div class="m-field"><label>${l.n} · 数量 ${l.q}</label><input class="m-input" type="number" inputmode="decimal" placeholder="真实进价 0.00"></div>`).join('')
+`<div style="display:flex;gap:10px;margin-top:16px"><div class="btn ghost" style="flex:1;justify-content:center" onclick="closeSheet()">取消</div><div class="btn primary" style="flex:2;justify-content:center" onclick="mToast('进价已确认,已前向补齐成本并补应付差额 ✓');closeSheet()">确认并补差额</div></div>`);
}
@@ -165,7 +165,7 @@ function setRetQty(i,v,max){ retStage[i]=Math.min(Math.max(1,Math.floor(+v||0)),
function stageAllRet(){ const o=ORDERS.find(x=>x.no===retNo); (o.lines||[]).forEach((l,i)=>retStage[i]=l.q); drawReturn(); }
function drawReturnSummary(){ const el=document.getElementById('retSum'); if(!el)return; const keys=Object.keys(retStage); const qty=keys.reduce((s,k)=>s+(+retStage[k]||0),0); el.textContent=keys.length?`已退单 ${keys.length} 项 · 从库存移除 ${qty}`:'未选择退单明细'; }
function drawReturn(){ const o=ORDERS.find(x=>x.no===retNo);
openSheet('退单', `<div class="notice info" style="margin-bottom:14px"><svg viewBox="0 0 24 24"><use href="#i-ic42"/></svg><div>提交后,退单明细对应的库存将「从库存删除」。退单明细不会删除,以红色「已退单」标注,且不可撤销。</div></div>`
openSheet('退单', `<div class="notice info" style="margin-bottom:14px"><svg viewBox="0 0 24 24"><use href="#i-info"/></svg><div>提交后,退单明细对应的库存将「从库存删除」。退单明细不会删除,以红色「已退单」标注,且不可撤销。</div></div>`
+(o.lines||[]).map((l,i)=>{ const st=retStage[i]!=null;
return `<div style="display:flex;align-items:center;gap:12px;margin-bottom:12px"><label style="display:flex;align-items:center;gap:9px;flex:1;cursor:pointer"><input type="checkbox" ${st?'checked':''} onchange="toggleRet(${i},${l.q})"><span><div style="font-weight:600;color:var(--heading);font-size:var(--fs-body)">${l.n}</div><div style="color:var(--faint);font-size:var(--fs-xs)">${l.s} · 数量 ${l.q}</div></span></label><input class="m-input" style="width:104px" type="number" min="1" max="${l.q}" value="${st?retStage[i]:''}" ${st?'':'disabled'} placeholder="退货数量" oninput="setRetQty(${i},this.value,${l.q})"></div>`; }).join('')
+`<div style="display:flex;align-items:center;gap:10px;margin-top:8px"><div class="btn ghost sm" onclick="stageAllRet()">全部退单</div><span id="retSum" style="font-size:var(--fs-sm);color:var(--muted)">未选择退单明细</span></div>
@@ -93,7 +93,7 @@ function render(){
<div class="mc-right"><div style="display:flex;gap:5px">${icoB(o.status)}${o.ret?icoB(o.ret):''}${o.pending?icoB('待定价'):''}</div><span class="mc-amt">${o.amount}</span></div>
<div class="mc-chev"><svg viewBox="0 0 24 24"><use href="#i-chevron-right"/></svg></div>
</div>
<div class="mc-foot"><svg width="13" height="13" viewBox="0 0 24 24" stroke-width="1.9" style="color:var(--muted)"><use href="#i-ic24"/></svg>${o.date} · 经手人 ${o.by}${o.auditor?' · 审核 '+o.auditor:''}</div>
<div class="mc-foot"><svg width="13" height="13" viewBox="0 0 24 24" stroke-width="1.9" style="color:var(--muted)"><use href="#i-info"/></svg>${o.date} · 经手人 ${o.by}${o.auditor?' · 审核 '+o.auditor:''}</div>
</a>`).join('');
}
function setSt(s){ state.status=s; render(); }
@@ -153,7 +153,7 @@ function openOrder(no){ const o=ORDERS.find(x=>x.no===no);
}
/* ---- 确认售价(对齐桌面 ovConfirmSale,简化为 sheet ---- */
function openConfirm(no){ const o=ORDERS.find(x=>x.no===no); const pend=(o.lines||[]).filter(l=>l.pend);
openSheet('确认售价', `<div class="notice info" style="margin-bottom:14px"><svg viewBox="0 0 24 24"><use href="#i-ic42"/></svg><div>「先卖后定价」:填写真实售价后,系统按售价×数量结算应收并补应收流水——不反审核、不影响成本 / 应付。</div></div>`
openSheet('确认售价', `<div class="notice info" style="margin-bottom:14px"><svg viewBox="0 0 24 24"><use href="#i-info"/></svg><div>「先卖后定价」:填写真实售价后,系统按售价×数量结算应收并补应收流水——不反审核、不影响成本 / 应付。</div></div>`
+pend.map(l=>`<div class="m-field"><label>${l.n} · 数量 ${l.q}</label><input class="m-input" type="number" inputmode="decimal" placeholder="真实售价 0.00"></div>`).join('')
+`<div style="display:flex;gap:10px;margin-top:16px"><div class="btn ghost" style="flex:1;justify-content:center" onclick="closeSheet()">取消</div><div class="btn primary" style="flex:2;justify-content:center" onclick="mToast('售价已确认,已按售价×数量结算应收并补应收流水 ✓');closeSheet()">确认并补应收</div></div>`);
}
@@ -165,7 +165,7 @@ function setRetQty(i,v,max){ retStage[i]=Math.min(Math.max(1,Math.floor(+v||0)),
function stageAllRet(){ const o=ORDERS.find(x=>x.no===retNo); (o.lines||[]).forEach((l,i)=>retStage[i]=l.q); drawReturn(); }
function drawReturnSummary(){ const el=document.getElementById('retSum'); if(!el)return; const keys=Object.keys(retStage); const qty=keys.reduce((s,k)=>s+(+retStage[k]||0),0); el.textContent=keys.length?`已退单 ${keys.length} 项 · 退回库存 +${qty}`:'未选择退单明细'; }
function drawReturn(){ const o=ORDERS.find(x=>x.no===retNo);
openSheet('退单', `<div class="notice info" style="margin-bottom:14px"><svg viewBox="0 0 24 24"><use href="#i-ic42"/></svg><div>提交后,退单明细的数量将「加回库存」。退单明细不会删除,以红色「已退单」标注,且不可撤销。</div></div>`
openSheet('退单', `<div class="notice info" style="margin-bottom:14px"><svg viewBox="0 0 24 24"><use href="#i-info"/></svg><div>提交后,退单明细的数量将「加回库存」。退单明细不会删除,以红色「已退单」标注,且不可撤销。</div></div>`
+(o.lines||[]).map((l,i)=>{ const st=retStage[i]!=null;
return `<div style="display:flex;align-items:center;gap:12px;margin-bottom:12px"><label style="display:flex;align-items:center;gap:9px;flex:1;cursor:pointer"><input type="checkbox" ${st?'checked':''} onchange="toggleRet(${i},${l.q})"><span><div style="font-weight:600;color:var(--heading);font-size:var(--fs-body)">${l.n}</div><div style="color:var(--faint);font-size:var(--fs-xs)">${l.s} · 数量 ${l.q}</div></span></label><input class="m-input" style="width:104px" type="number" min="1" max="${l.q}" value="${st?retStage[i]:''}" ${st?'':'disabled'} placeholder="退货数量" oninput="setRetQty(${i},this.value,${l.q})"></div>`; }).join('')
+`<div style="display:flex;align-items:center;gap:10px;margin-top:8px"><div class="btn ghost sm" onclick="stageAllRet()">全部退单</div><span id="retSum" style="font-size:var(--fs-sm);color:var(--muted)">未选择退单明细</span></div>
@@ -82,7 +82,7 @@
<div class="overlay" id="ovReturn"><div class="modal">
<div class="modal-head"><h3>退单</h3><svg class="x" viewBox="0 0 24 24" stroke-width="2" onclick="closeOverlay('ovReturn')"><use href="#i-close"/></svg></div>
<div class="modal-body">
<div class="notice info" style="margin-bottom:14px"><svg viewBox="0 0 24 24"><use href="#i-ic42"/></svg><div id="returnNoticeText"></div></div>
<div class="notice info" style="margin-bottom:14px"><svg viewBox="0 0 24 24"><use href="#i-info"/></svg><div id="returnNoticeText"></div></div>
<div id="returnRows"></div>
</div>
<div class="modal-foot"><div class="btn ghost sm" style="margin-right:auto" onclick="stageAllReturn()">全部退单</div><span id="returnSummary" style="align-self:center;font-size:var(--fs-sm);color:var(--muted);margin-right:12px">未选择退单明细</span><div class="btn ghost" onclick="closeOverlay('ovReturn')">取消</div><div class="btn danger" onclick="submitReturn()">提交退单</div></div>
@@ -90,7 +90,7 @@
<div class="overlay" id="ovConfirm"><div class="modal">
<div class="modal-head"><h3>确认进价</h3><svg class="x" viewBox="0 0 24 24" stroke-width="2" onclick="closeOverlay('ovConfirm')"><use href="#i-close"/></svg></div>
<div class="modal-body">
<div class="notice info" style="margin-bottom:14px"><svg viewBox="0 0 24 24"><use href="#i-ic42"/></svg><div>调货「先卖后定价」:填写真实进价后,系统前向补齐库存成本、已出库成本快照,并按差额补一条应付流水——不反审核、不影响售价 / 应收。</div></div>
<div class="notice info" style="margin-bottom:14px"><svg viewBox="0 0 24 24"><use href="#i-info"/></svg><div>调货「先卖后定价」:填写真实进价后,系统前向补齐库存成本、已出库成本快照,并按差额补一条应付流水——不反审核、不影响售价 / 应收。</div></div>
<div id="confirmRows"></div>
</div>
<div class="modal-foot"><div class="btn ghost" onclick="closeOverlay('ovConfirm')">取消</div><div class="btn primary" onclick="saveConfirmCost()">确认并补差额</div></div>
@@ -111,7 +111,7 @@
<div class="overlay" id="ovReturn"><div class="modal">
<div class="modal-head"><h3>退单</h3><svg class="x" viewBox="0 0 24 24" stroke-width="2" onclick="closeOverlay('ovReturn')"><use href="#i-close"/></svg></div>
<div class="modal-body">
<div class="notice info" style="margin-bottom:14px"><svg viewBox="0 0 24 24"><use href="#i-ic42"/></svg><div id="returnNoticeText"></div></div>
<div class="notice info" style="margin-bottom:14px"><svg viewBox="0 0 24 24"><use href="#i-info"/></svg><div id="returnNoticeText"></div></div>
<div id="returnRows"></div>
</div>
<div class="modal-foot"><div class="btn ghost sm" style="margin-right:auto" onclick="stageAllReturn()">全部退单</div><span id="returnSummary" style="align-self:center;font-size:var(--fs-sm);color:var(--muted);margin-right:12px">未选择退单明细</span><div class="btn ghost" onclick="closeOverlay('ovReturn')">取消</div><div class="btn danger" onclick="submitReturn()">提交退单</div></div>
@@ -119,7 +119,7 @@
<div class="overlay" id="ovConfirmSale"><div class="modal">
<div class="modal-head"><h3>确认售价</h3><svg class="x" viewBox="0 0 24 24" stroke-width="2" onclick="closeOverlay('ovConfirmSale')"><use href="#i-close"/></svg></div>
<div class="modal-body">
<div class="notice info" style="margin-bottom:14px"><svg viewBox="0 0 24 24"><use href="#i-ic42"/></svg><div>「先出后定价」:填写真实售价后,系统据此结算应收(售价 × 数量)并补一条应收流水——不影响成本 / 库存,不反审核。</div></div>
<div class="notice info" style="margin-bottom:14px"><svg viewBox="0 0 24 24"><use href="#i-info"/></svg><div>「先出后定价」:填写真实售价后,系统据此结算应收(售价 × 数量)并补一条应收流水——不影响成本 / 库存,不反审核。</div></div>
<div id="confirmSaleRows"></div>
</div>
<div class="modal-foot"><div class="btn ghost" onclick="closeOverlay('ovConfirmSale')">取消</div><div class="btn primary" onclick="saveConfirmSale()">确认并补应收</div></div>
File diff suppressed because one or more lines are too long