期初 / 期末报表
按日期区间统计:期初 + 本期入库 − 本期出库 = 期末;含总部与各园区
至
库存周转:平均库存 =(期初 + 期末)÷ 2;周转次数 = 本期出库 ÷ 平均库存;
周转天数 = 期间天数 ÷ 周转次数(天数越少周转越快,— 表示本期无出库)。
此处按全部出库计;按单品看领用消耗周转,请用「报表管理 → 库存周转」。
期初数量{{ n(report.totals.opening_qty || 0) }}
本期入库{{ n(report.totals.in_qty || 0) }}
本期出库{{ n(report.totals.out_qty || 0) }}
期末数量{{ n(report.totals.closing_qty || 0) }}
| 园区 | 编码 | 名称 | 单位 | 用途 | 期初数量 | 期初金额 | 本期入库 | 本期出库 | 期末数量 | 期末金额 | 平均库存 | 周转次数 | 周转天数 |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| {{ r.org_code }} | {{ r.sku_code }} | {{ r.sku_name }} | {{ r.unit }} | {{ r.purpose }} | {{ n(r.opening_qty) }} | {{ money(r.opening_amount) }} | {{ n(r.in_qty) }} | {{ n(r.out_qty) }} | {{ n(r.closing_qty) }} | {{ money(r.closing_amount) }} | {{ n(r.avg_qty) }} | {{ r.turnover }} | {{ r.turnover_days === null ? '—' : r.turnover_days }} |
| 该区间没有库存数据 | |||||||||||||
| 合计 | {{ n(report.totals.opening_qty) }} | {{ money(report.totals.opening_amount) }} | {{ n(report.totals.in_qty) }} | {{ n(report.totals.out_qty) }} | {{ n(report.totals.closing_qty) }} | {{ money(report.totals.closing_amount) }} | |||||||
按园区汇总(总部 + 各分园)
| 园区 | 名称 | 物资种类 | 期初数量 | 本期入库 | 本期出库 | 期末数量 | 期末金额 | 平均库存 | 周转次数 | 周转天数 |
|---|---|---|---|---|---|---|---|---|---|---|
| {{ b.org_code }} | {{ b.org_name }} | {{ b.sku_count }} | {{ n(b.opening_qty) }} | {{ n(b.in_qty) }} | {{ n(b.out_qty) }} | {{ n(b.closing_qty) }} | {{ money(b.closing_amount) }} | {{ n(b.avg_qty) }} | {{ b.turnover }} | {{ b.turnover_days === null ? '—' : b.turnover_days }} |
| 暂无数据 | ||||||||||
报表管理
库存 / 采购 / 调拨 / 挂账 / 对账,一处看全,可导出 Excel 供审计
物资种类{{ rptStock.totals.kinds || 0 }}
总库存{{ n(rptStock.totals.qty_total) }}
库存总额¥{{ money(rptStock.totals.amount_total) }}
在途合计{{ n((rptStock.totals.qty_po_transit||0)+(rptStock.totals.qty_tr_transit||0)) }}
| 园区 | 编码 | 名称 | 单位 | 用途 | 已有 | 采购在途 | 调拨在途 | 总库存 | 均价 | 金额 |
|---|---|---|---|---|---|---|---|---|---|---|
| {{ r.org_code }} | {{ r.sku_code }} | {{ r.sku_name }} | {{ r.unit }} | {{ r.purpose }} | {{ mq(r.qty_on_hand) }} | {{ mq(r.qty_po_transit) }} | {{ mq(r.qty_tr_transit) }} | {{ mq(r.qty_total) }} | {{ mq(r.avg_cost) }} | {{ r.amount_total == null ? '🔒' : money(r.amount_total) }} |
| {{ rptStock.masked ? '🔒 园区库存已锁定,数量暂不可见' : '没有数据' }} | ||||||||||
| 合计 | {{ mq(rptStock.totals.qty_on_hand) }} | {{ mq(rptStock.totals.qty_po_transit) }} | {{ mq(rptStock.totals.qty_tr_transit) }} | {{ mq(rptStock.totals.qty_total) }} | {{ rptStock.totals.amount_total == null ? '🔒' : '¥' + money(rptStock.totals.amount_total) }} | |||||
至
周转次数 = 出库量 ÷ 平均库存;周转天数 = 期间天数 ÷ 周转次数;年化 = 周转次数 × 365 ÷ 期间天数。
平均库存 =(期初 + 期末)÷ 2。默认口径「领用」,调拨与报废不算消耗;要含损耗选「领用 + 报废」。
平均库存{{ n(rptTurnover.totals.avg_qty) }}
出库数量{{ n(rptTurnover.totals.out_qty) }}
综合周转次数{{ rptTurnover.totals.turnover || 0 }}
综合周转天数{{ rptTurnover.totals.turnover_days == null ? '—' : rptTurnover.totals.turnover_days }}
统计区间 {{ rptTurnover.date_from }} 至 {{ rptTurnover.date_to }}({{ rptTurnover.days }} 天)·
口径:{{ rptTurnover.basis_label || '领用出库' }} ·
纳入 {{ rptTurnover.totals.skus || 0 }} 个单品
本期无出库 {{ rptTurnover.totals.no_out }} 个
| 状态 | 园区 | 编码 | 名称 | 单位 | 期初 | 期末 | 平均库存 | 出库量 | 出库金额 | 周转次数 | 周转天数 | 年化次数 | 最后领用 | 呆滞天数 |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 无出库正常 | {{ r.org_code }} | {{ r.sku_code }} | {{ r.sku_name }} | {{ r.unit }} | {{ n(r.opening_qty) }} | {{ n(r.closing_qty) }} | {{ n(r.avg_qty) }} | {{ n(r.out_qty) }} | {{ money(r.out_amount) }} | {{ r.turnover }} | {{ r.turnover_days == null ? '—' : r.turnover_days }} | {{ r.annual_turnover }} | {{ r.last_issue_at ? String(r.last_issue_at).slice(0,10) : '—' }} | {{ r.idle_days == null ? '—' : r.idle_days }} |
| {{ rptTurnover.masked ? '🔒 园区库存已锁定,周转数据暂不可见(解锁后可查看)' : '该条件下没有可统计的单品' }} | ||||||||||||||
至
采购单数{{ rptPurchase.totals.count || 0 }}
订购金额¥{{ money(rptPurchase.totals.total_amount) }}
实收金额¥{{ money(rptPurchase.totals.received_amount) }}
实收数量{{ n(rptPurchase.totals.received_qty) }}
| 单号 | 模式 | 收货园区 | 状态 | 供应商 | 订购数量 | 订购金额 | 实收数量 | 实收金额 | 制单 | 时间 |
|---|---|---|---|---|---|---|---|---|---|---|
| {{ r.po_no }} | {{ r.mode_label }} | {{ r.org_code }} | {{ r.status_label }} | {{ r.supplier_name || '—' }} | {{ n(r.plan_qty) }} | {{ money(r.total_amount) }} | {{ n(r.received_qty) }} | {{ money(r.received_amount) }} | {{ r.creator }} | {{ dt(r.created_at) }} |
| 该条件下没有采购单 | ||||||||||
| 合计 | {{ n(rptPurchase.totals.plan_qty) }} | ¥{{ money(rptPurchase.totals.total_amount) }} | {{ n(rptPurchase.totals.received_qty) }} | ¥{{ money(rptPurchase.totals.received_amount) }} | ||||||
至
调拨单数{{ rptTransfer.totals.count || 0 }}
在途单数{{ rptTransfer.totals.in_transit || 0 }}
调拨数量{{ n(rptTransfer.totals.total_qty) }}
调拨金额¥{{ money(rptTransfer.totals.total_amount) }}
| 调拨单号 | 来源 | 发出方 | 接收方 | 状态 | 数量 | 金额 | 发出时间 | 签收时间 |
|---|---|---|---|---|---|---|---|---|
| {{ r.tr_no }} | {{ r.src }} | {{ r.from_code }} | {{ r.to_code }} | {{ r.status_label }} | {{ n(r.total_qty) }} | {{ money(r.total_amount) }} | {{ r.sent_at ? dt(r.sent_at) : '—' }} | {{ r.received_at ? dt(r.received_at) : '—' }} |
| 该条件下没有调拨单 | ||||||||
| 合计 | {{ n(rptTransfer.totals.total_qty) }} | ¥{{ money(rptTransfer.totals.total_amount) }} | ||||||
至
挂账口径:无采购单的「临时入库」(其他入库),逐笔列示;已红冲的仍保留在列表里,状态标为「已红冲」,便于审计追溯。
挂账笔数{{ rptPending.totals.live_count || 0 }}
挂账金额¥{{ money(rptPending.totals.live_amount) }}
挂账数量{{ n(rptPending.totals.live_qty) }}
已红冲笔数{{ rptPending.totals.reversed_count || 0 }}
| 入库时间 | 园区 | 编码 | 名称 | 单位 | 数量 | 单价 | 金额 | 单据号 | 状态 | 操作人 | 备注 |
|---|---|---|---|---|---|---|---|---|---|---|---|
| {{ dt(r.operated_at) }} | {{ r.org_code }} | {{ r.sku_code }} | {{ r.sku_name }} | {{ r.unit }} | {{ n(r.qty) }} | {{ n(r.unit_cost) }} | {{ money(r.amount) }} | {{ r.doc_no || '—' }} | {{ r.reversed ? '已红冲' : '挂账中' }} | {{ r.operator }} | {{ r.note || '' }} |
| 该条件下没有临时入库记录 | |||||||||||
| 合计 | {{ n(rptPending.totals.qty) }} | ¥{{ money(rptPending.totals.amount) }} | |||||||||
核对时间 {{ dt(recon.checked_at) }}
核对行数{{ recon.masked ? '—' : (recon.summary.rows || 0) }}
差异行数{{ recon.masked ? '—' : (recon.summary.diff_rows || 0) }}
库存总量{{ recon.masked ? '已锁定' : n(recon.summary.stock_qty) }}
库存总额{{ recon.masked ? '已锁定' : '¥' + money(recon.summary.stock_amount) }}
🔒 {{ lockedOrgList }} 库存已锁定,对账数据暂不可见;盘点完成或解锁后可查看。
三方口径一致:汇总账、批次账、流水全部对上(共核对 {{ recon.summary.rows }} 行)。
发现 {{ recon.summary.diff_rows }} 行差异。缺批次 → 先补批次;缺汇总行 → 走盘点校正;
数量/金额差异 → 核对错单后红冲,或盘点调平。
校验规则:汇总账数量 = Σ批次剩余量;汇总账金额 = Σ(批次剩余量 × 单价);
流水累计 = 汇总账。三者任一不等即标差异。
| 状态 | 园区 | 编码 | 名称 | 单位 | 汇总数量 | 批次数量 | 流水数量 | 数量差异 | 汇总金额 | 批次金额 | 流水金额 | 金额差异 |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| {{ r.status }} | {{ r.org_code }} | {{ r.sku_code }} | {{ r.sku_name }} | {{ r.unit }} | {{ n(r.stock_qty) }} | {{ n(r.batch_qty) }} | {{ n(r.ledger_qty) }} | {{ n(r.qty_gap) }} | {{ money(r.stock_amount) }} | {{ money(r.batch_amount) }} | {{ money(r.ledger_amount) }} | {{ money(r.amount_gap) }} |
| {{ reconFilter.onlyDiff ? '没有差异,三方账全部平衡' : '没有可核对的数据' }} | ||||||||||||
库存总览
总库存 = 已有 + 采购在途 + 调拨在途
物资种类{{ stockKpi.kinds }}
库存总量{{ stockKpi.masked ? '已锁定' : n(stockKpi.qty) }}
库存总额{{ stockKpi.masked ? '已锁定' : '¥' + money(stockKpi.amount) }}
预警条数{{ alerts.length }}
综合周转次数{{ stockKpi.masked ? '—' : stockKpi.turnover }}
🔒 {{ lockedOrgList }} 库存已锁定(盘点中):数量与金额仅超级管理员可见,锁定期间禁止出入库
周转口径:领用出库(不含调拨 / 报废)· 统计区间 {{ turnoverPeriod.from }} ~ {{ turnoverPeriod.to }}(近 {{ turnoverPeriod.days }} 天)
· 本期无领用 {{ stockKpi.noOut }} 个
| 园区 | 编码 | 名称 | 单位 | 用途 | 已有 | 采购在途 | 调拨在途 | 总库存 | 均价 | 金额 | 最后变动 | 周转次数 | 周转天数 | 批次 |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| {{ r.org_code }} | {{ r.sku_code }} | {{ r.sku_name }} 缺 | {{ r.unit }} | {{ r.purpose }} | {{ mq(r.qty_on_hand) }} | {{ mq(r.qty_po_transit) }} | {{ mq(r.qty_tr_transit) }} | {{ mq(r.qty_total) }} | {{ mq(r.avg_cost) }} | {{ r.amount_total == null ? '🔒' : money(r.amount_total) }} | {{ dt(r.last_move_at) }} | {{ r.turnover == null ? '—' : r.turnover }} | {{ r.turnover_days == null ? '—' : r.turnover_days }} | |
| 没有数据 | ||||||||||||||
库存预警
按总库存口径,在途充足不误报
| 类型 | 园区 | 编码 | 名称 | 总库存 | 安全线 | 上限 | 日均 | 覆盖天数 | 建议补货 | 紧急度 | 单位 |
|---|---|---|---|---|---|---|---|---|---|---|---|
| {{ alertLabel(a.alert_type) }} | {{ a.org_code }} | {{ a.sku_code }} | {{ a.sku_name }} | {{ mq(a.qty_total) }} | {{ n(a.safety_qty) }} | {{ n(a.max_qty) }} | {{ n(a.daily_avg) }} | {{ a.cover_days == null ? '—' : a.cover_days }} | {{ n(a.suggest_qty) }} | {{ a.urgency }}— | {{ a.unit }} |
| 当前没有预警 | |||||||||||
临期批次
剩余天数 ≤ 物资的效期预警天数(默认 30 天)| 状态 | 园区 | 编码 | 名称 | 批号 | 剩余数量 | 有效期 | 剩余天数 |
|---|---|---|---|---|---|---|---|
| {{ e.days_left<0?'已过期':'临期' }} | {{ e.org_code }} | {{ e.sku_code }} | {{ e.sku_name }} | {{ e.batch_no }} | {{ mq(e.qty_left) }}{{ e.qty_left == null ? '' : e.unit }} | {{ e.expire_date }} | {{ e.days_left }} |
| 没有临期物资 | |||||||
阈值设置:某园某物资单独的安全库存 / 最高库存 / 呆滞天数(留空则用物资默认值)。
物资主数据
总部统一维护;编码按用途自动续号,可批量导入或单个新建
| 编码 | 名称 | 规格 | 单位 | 用途 | 供应商 | 参考单价 | 安全库存 | 最高库存 | 状态 | 操作 |
|---|---|---|---|---|---|---|---|---|---|---|
| {{ s.code }} | {{ s.name }} | {{ s.spec || '—' }} | {{ s.unit }} | {{ s.purpose }} | {{ s.supplier_name || '—' }} | {{ n(s.ref_price) }} | {{ n(s.safety_qty) }} | {{ n(s.max_qty) }} | {{ s.status==='ENABLED'?'启用':'停用' }} | |
| 没有物资 | ||||||||||
调拨申请
提交后等总部审核,审核通过自动生成调拨
| 单号 | 园区 | 状态 | 用途 | 申请量 | 确认量 | 金额 | 申请人 | 提交时间 | 操作 |
|---|---|---|---|---|---|---|---|---|---|
| {{ r.req_no }} | {{ r.org_code }} | {{ statusLabel(r.status) }} | {{ r.purpose || '—' }} 急 | {{ n(r.total_qty) }} | {{ n(r.items.reduce((s,i)=>s+(i.qty_confirmed||0),0)) }} | {{ money(r.total_amount) }} | {{ r.creator }} | {{ dt(r.created_at) }} | |
| 还没有申请单,点右上角「新建申请」 | |||||||||
调拨审核
可改数量,改动留痕;确认即发出调拨
| 单号 | 园区 | 状态 | 用途 | 申请量 | 金额 | 申请人 | 提交时间 | 操作 |
|---|---|---|---|---|---|---|---|---|
| {{ r.req_no }} | {{ r.org_code }} | {{ statusLabel(r.status) }} | {{ r.purpose || '—' }} 急 | {{ n(r.total_qty) }} | {{ money(r.total_amount) }} | {{ r.creator }} | {{ dt(r.created_at) }} | |
| 没有待办 | ||||||||
采购管理
总部集采 / 园区零星;下单即计入采购在途
补货建议
近 90 天领用 + 可用库存 + 安全库存 · 目标覆盖 {{ advice.cover_days || adviceFilter.cover_days }} 天
建议条数{{ advice.totals.count || 0 }}
断货 / 紧急{{ advice.totals.urgent || 0 }}
建议采购量{{ n(advice.totals.suggest_qty) }}
预计金额¥{{ money(advice.totals.suggest_amount) }}
| 紧急度 | 范围 | 编码 | 名称 | 单位 | 日均 | 可用 | 覆盖天数 | 建议量 | 参考单价 | 预计金额 | |
|---|---|---|---|---|---|---|---|---|---|---|---|
| {{ r.urgency }} | {{ r.org_code || '—' }} | {{ r.sku_code }} | {{ r.sku_name }} | {{ r.unit }} | {{ n(r.daily_avg) }} | {{ n(r.available) }} | {{ r.cover_days == null ? '—' : r.cover_days }} | {{ n(r.suggest_qty) }} | {{ n(r.ref_price) }} | {{ money(r.suggest_amount) }} | |
| 当前不需要补货 | |||||||||||
建议量 = 日均消耗 × 目标覆盖天数 + 安全库存 − 可用量(已有 + 采购在途 + 调拨在途);
近 90 天没有领用时回退为「安全库存 − 可用量」。集采口径 = 各分园建议合计 − 总部可用量。
| 单号 | 模式 | 收货归属 | 状态 | 供应商 | 订购数量 | 到货进度 | 订单金额 | 实收金额 | 制单 | 时间 | 操作 |
|---|---|---|---|---|---|---|---|---|---|---|---|
| {{ p.po_no }} | {{ p.order_type || (p.mode==='CENTRAL'?'集采':'零星') }} | {{ p.receiving_label || p.org_code }} | {{ p.status_label }} | {{ p.supplier_summary || p.supplier_name || '—' }} | {{ n(p.total_qty) }} | {{ n(p.received_qty||0) }} / {{ n(p.plan_qty||0) }} | {{ money(p.total_amount) }} | {{ money(p.received_amount || 0) }} | {{ p.creator }} | {{ dt(p.created_at) }} | |
| 还没有采购单 | |||||||||||
待收货
分园收货模式:总部集采由总部收、分园调拨/零星采购由对应分园收;签收后转入收货方库存
| 单号 | 收货归属 | 状态 | 数量 | 总金额 | 明细 | 发出时间 | 操作 |
|---|---|---|---|---|---|---|---|
| {{ r.req_no }} | {{ r.receiving_label || (r.order_type + '·' + r.org_code + '收货') }} | 调拨在途 | {{ n(r.total_qty) }} | {{ money(r.total_amount) }} | {{ it.sku_name }} × {{ n(it.qty_confirmed) }}{{ it.unit }}(¥{{ money(it.amount) }}) | {{ dt(r.created_at) }} | |
| 没有在途单据 | |||||||
总部直拨(主动调拨给本园)暂无
| 调拨单号 | 收货归属 | 状态 | 数量 | 总金额 | 明细 | 发出时间 | 操作 |
|---|---|---|---|---|---|---|---|
| {{ t.tr_no }} | {{ t.receiving_label || ('分园调拨·' + t.to_code + '收货') }} | 调拨在途 | {{ n(t.total_qty) }} | {{ money(t.total_amount) }} | {{ it.sku_name }} × {{ n(it.qty) }}{{ it.unit }}(¥{{ money(it.amount) }}) | {{ dt(t.sent_at) }} | |
| 没有总部直拨在途单据 | |||||||
物资领用出库
老师来领东西时记账,扣本园库存
物资名称数量领用人
现有库存
每行都可填不同领用人,一张单可给多位老师同时记账;一张单也可混合多个用途的物资(下拉里会显示每个物资自身用途)。
出库按批次先进先出自动扣减,库存不足会拦下并提示可用数量。
最近领用单
出库后自动生成单号(LY…),可随时重打
| 单号 | 时间 | 园区 | 部门 | 用途 | 数量 | 金额 | 归还 | 制单 | 操作 |
|---|---|---|---|---|---|---|---|---|---|
| {{ d.io_no }} 刚生成 | {{ dt(d.created_at) }} | {{ d.org_code }} | {{ d.department || '—' }} | {{ d.purpose || '综合' }} | {{ n(d.total_qty) }} | {{ money(d.total_amount) }} | {{ d.return_status }} {{ n(d.returned_qty) }}/{{ n(d.total_qty) }} | {{ d.creator }} | |
| 还没有领用单 | |||||||||
最近归还单
归还自动生成 GH 单号,与原领用单双向关联,支持部分归还
| 归还单号 | 原领用单 | 时间 | 园区 | 部门 | 归还数量 | 金额 | 经办 | 操作 |
|---|---|---|---|---|---|---|---|---|
| {{ r.gh_no }} | {{ r.io_no }} | {{ dt(r.created_at) }} | {{ r.org_code }} | {{ r.department || '—' }} | {{ n(r.total_qty) }} | {{ money(r.total_amount) }} | {{ r.creator }} | |
| 还没有归还单 | ||||||||
库存盘点
锁定库存 → 下发盘点单 → 打印手填 → 回传电子版 → 录入盈亏
库存锁定
锁定后非超管看不到数量、禁止出入库;盘点提交或取消后自动解锁
{{ l.org_code }} {{ l.org_name }}
{{ l.locked ? '已锁定' : '未锁定' }}
仅总部后勤主管 / 超级管理员可锁定。锁定期间除超级管理员外,所有账号看不到库存数量,也不能出入库。
锁定会同时冻结该园区的入库 / 领用 / 报废 / 调拨 / 红冲;盘点提交或取消后自动解锁。
盘点计划
账面在下发瞬间冻结;盈亏 = 实盘 − 冻结账面| 计划号 | 园区 | 状态 | 说明 | 已盘/总行 | 盘盈 | 盘亏 | 差异金额 | 下发人 | 时间 | 操作 |
|---|---|---|---|---|---|---|---|---|---|---|
| {{ p.plan_no }} | {{ p.org_code }} 锁 | {{ p.status==='OPEN'?'进行中':(p.status==='DONE'?'已完成':'已取消') }} | {{ p.note || '—' }} | {{ p.counted_rows }}/{{ p.total_rows }} | {{ p.gain_qty > 0 ? n(p.gain_qty) : '—' }} | {{ p.loss_qty > 0 ? n(p.loss_qty) : '—' }} | {{ p.status==='DONE' ? '¥' + money(p.net_amount) : '—' }} | {{ p.creator }} | {{ dt(p.created_at) }} | |
| 还没有盘点计划 | ||||||||||
{{ count.plan.plan_no }} · {{ count.plan.org_code }} {{ count.plan.status==='OPEN'?'进行中':'已完成' }} 账面已锁定
🔒 库存已锁定:账面数量不可见(盲盘)。点「打印盘点单」打印空白表,库管现场手填后把拍照/扫描件上传到这里,再按纸质单录入实盘数。
盘点单回传
现场手填后拍照或扫描上传(jpg / png / webp / pdf,单个 ≤10MB,最多 10 个)
PDF
还没有上传回传件
盘盈数量{{ n(count.summary.gain_qty) }}
盘亏数量{{ n(count.summary.loss_qty) }}
盘盈金额¥{{ money(count.summary.gain_amount) }}
盘亏金额¥{{ money(count.summary.loss_amount) }}
净差异¥{{ money(count.summary.net_amount) }}
| 编码 | 名称 | 规格 | 单位 | 账面 | 实盘 | 差异 | 差异金额 |
|---|---|---|---|---|---|---|---|
| {{ r.sku_code }} | {{ r.sku_name }} | {{ r.spec || '—' }} | {{ r.unit }} | {{ r.book_qty == null ? '🔒' : n(r.book_qty) }} | {{ r.counted_qty == null ? '—' : n(r.counted_qty) }} | {{ diffOf(r)===null ? '—' : n(diffOf(r)) }} | {{ r.diff_amount == null ? '—' : money(r.diff_amount) }} |
| 没有物资 | |||||||
只提交填了实盘数的行;填 0 表示实物为 0(会盘亏清零)。盈亏口径固定为「实盘 − 下发时账面」,锁定期间后期过账不影响盈亏。
库存流水
只插不删,错账走红冲
| 时间 | 园区 | 编码 | 名称 | 来源 | 数量 | 单价 | 金额 | 结存 | 单据号 | 操作人 | 备注 | 操作 |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| {{ dt(l.operated_at) }} | {{ l.org_code }} | {{ l.sku_code }} | {{ l.sku_name }} | {{ l.src }} | {{ n(l.qty_delta) }} | {{ n(l.unit_cost) }} | {{ money(l.amount) }} | {{ n(l.qty_after) }} | {{ l.ref_no || '—' }} | {{ l.operator }} | {{ l.note || '' }} | |
| 没有流水 | ||||||||||||
账号与权限
改角色/停用立即生效(下一个请求就生效)
| 账号 | 姓名 | 组织 | 角色 | 状态 | 创建时间 | 操作 |
|---|---|---|---|---|---|---|
| {{ u.username }} | {{ u.real_name }} | {{ u.org_code || '全局' }} | {{ roleName(u.role_code) }} | {{ u.status==='ACTIVE'?'启用':'停用' }} | {{ dt(u.created_at) }} |
删除有业务记录的账号会自动降级为停用(保留单据留痕)。
主数据维护
所有基础数据的唯一创建入口:园区 / 部门 / 用途 / 供应商 / 计量单位 / 物资;超级管理员可直接删除,其他账号只能停用
园区管理
新增园区后到「账号权限」建园长/后勤账号;停用前需先停用该园账号
| 编码 | 名称 | 类型 | 地址 | 联系人 | 电话 | 状态 | 操作 |
|---|---|---|---|---|---|---|---|
| {{ o.code }} | {{ o.name }} | {{ o.org_type==='HQ'?'总部':'园区' }} | {{ o.address || '—' }} | {{ o.contact || '—' }} | {{ o.phone || '—' }} | {{ o.is_active?'启用':'停用' }} |
部门管理
编码规则与人事系统一致(BM05 这种);编码留空自动续号 BMxx,填了就用填的(要和人事对齐时直接填人事的编码)
| 编码 | 园区 | 部门 | 操作 |
|---|---|---|---|
| {{ d.code || '—' }} | {{ orgNameOf(d.org_code || d.org_id) }} | {{ d.name }} | |
| 还没有部门 | |||
用途
全站下拉统一取此字典;新建物资、调拨、领用时选择
| 用途 | 操作 |
|---|---|
| {{ p.name }} | |
| 还没有用途 | |
供应商
采购单逐行选择供应商;此处统一建档
| 名称 | 联系人 | 电话 | 状态 | 操作 |
|---|---|---|---|---|
| {{ s.name }} | {{ s.contact || '—' }} | {{ s.phone || '—' }} | {{ s.is_active?'启用':'停用' }} | |
| 还没有供应商 | ||||
物资
批量导入也可在此;物资列表、导入与新建在「物资主数据」页