请先登录

去登录

实时库存总金额/总数量

{{ canViewInvReportFinancial ? '¥' + formatNumber(totalCurrentAmount) : '—' }}

{{ formatNumber(totalCurrentQuantity) }} 个

📦

本月入库/出库数量

入库:{{ formatNumber(totalMonthIn) }} 个

出库:{{ formatNumber(totalMonthOut) }} 个

📊
{{ monthMiscWindowHint }}

库存异常看板

更新时间:{{ anomalySummary.generatedAt || '-' }}
对账差异
{{ anomalySummary.summary.reconciliationDiffs || 0 }}
负库存
{{ anomalySummary.summary.negativeInventory || 0 }}
SN数量不一致
{{ anomalySummary.summary.snQuantityMismatches || 0 }}
无库存销量
{{ formatNumber(anomalySummary.summary.outOfStockSalesQuantity || 0) }}
产品ID产品(型号/品牌)订单出库流水出库差异
{{ row.productId }} {{ row.displayName || row.productName || row.model || '—' }} {{ formatNumber(row.orderOut) }} {{ formatNumber(row.inventoryLogOut) }} {{ formatNumber(row.diff) }}

库存-订单-流水差异(基础)

共 {{ reconciliationRows.length }} 条
口径:订单出库合计 vs 库存流水出库合计(当前月份)
产品ID产品(型号/品牌)订单出库流水出库差值
{{ row.productId }} {{ row.displayName || row.model || '—' }} {{ formatNumber(row.orderOut) }} {{ formatNumber(row.inventoryLogOut) }} {{ formatNumber(row.diff) }}
加载报表中…
序号 产品分类 商品名称 库存成本价 实时库存 {{ day }}日 SN
台账
操作
数量 金额 操作
{{ (reportCurrentPage - 1) * reportPageSize + index + 1 }} {{ item.categoryName || '未分类' }}
{{ item.productName }}
{{ formatNumber(Math.max(0, item.currentQuantity || 0)) }} ¥{{ formatNumber(Math.max(0, item.currentAmount || 0)) }}
{{ totalReportCount + index + 1 }}
{{ generateProductNumber(newRow) }}
{{ newRow.productName || '(点击选中,Enter 或双击编辑)' }}
{{ formatNumber(newRow.initialQuantity || 0) }} ¥{{ formatNumber((newRow.initialQuantity || 0) * (newRow.costPrice || 0)) }}
显示 {{ (reportCurrentPage - 1) * reportPageSize + 1 }} - {{ Math.min(reportCurrentPage * reportPageSize, totalReportCount) }} 条,共 {{ totalReportCount }} 条
当前筛选:{{ showOnlyInStock ? '仅看有库存' : '显示全部' }} · 共 {{ totalReportCount }} 条
{{ group.name }} {{ group.items.length }} 项{{ canViewInvReportFinancial ? ' · ¥' + formatNumber(group.totalAmount) : '' }}
{{ item.productName || item.productModel || item.model || '-' }}
商品编号
{{ generateProductNumber(item) || '-' }}
报表月份
{{ selectedYearMonth || '-' }}
成本价
{{ canViewInvReportFinancial ? '¥' + formatNumber(item.costPrice) : '—' }}
期初数量
{{ formatNumber(item.initialQuantity) }}
期初金额
{{ canViewInvReportFinancial ? '¥' + formatNumber(item.initialAmount) : '—' }}
本期入库
{{ formatNumber(item.monthIn) }}
入库金额
{{ canViewInvReportFinancial ? '¥' + formatNumber(item.monthInAmount) : '—' }}
本期出库
{{ formatNumber(item.monthOut) }}
出库金额
{{ canViewInvReportFinancial ? '¥' + formatNumber(item.monthOutAmount) : '—' }}
实时数量
{{ formatNumber(Math.max(0, item.currentQuantity || 0)) }}
实时金额
{{ canViewInvReportFinancial ? '¥' + formatNumber(Math.max(0, item.currentAmount || 0)) : '—' }}
当前为移动端卡片视图,已展示库存核心字段;按日期逐日编辑入/出库请在桌面端使用表格。

本月无库存销售笔数

{{ formatNumber(outOfStockStats.totalRecords) }} 条

本月无库存销量合计

{{ formatNumber(outOfStockStats.totalQuantity) }} 个

涉及产品数

{{ formatNumber(outOfStockStats.productCount) }} 个

视图:
日期范围:
加载中…
序号 日期 订单号 产品分类 产品型号 无库存销量 客服
{{ (outOfStockPage - 1) * outOfStockPageSize + idx + 1 }} {{ row.date }} #{{ row.orderId }} {{ row.categoryName || '—' }} {{ row.productModel || '—' }} {{ formatNumber(row.quantity) }} {{ row.customerServiceName || '—' }}
暂无无库存销售记录
序号 产品分类 产品型号 无库存销量合计 订单笔数 最早销售日期 最晚销售日期
{{ (outOfStockPage - 1) * outOfStockPageSize + idx + 1 }} {{ row.categoryName || '—' }} {{ row.productModel || '—' }} {{ formatNumber(row.totalQuantity) }} {{ row.orderCount }} {{ row.firstDate || '—' }} {{ row.lastDate || '—' }}
暂无无库存销售记录
暂无无库存销售记录
序号
{{ (outOfStockPage - 1) * outOfStockPageSize + idx + 1 }}
日期
{{ row.date }}
分类
{{ row.categoryName || '—' }}
无库存销量
{{ formatNumber(row.quantity) }}
客服
{{ row.customerServiceName || '—' }}
序号
{{ (outOfStockPage - 1) * outOfStockPageSize + idx + 1 }}
分类
{{ row.categoryName || '—' }}
销量合计
{{ formatNumber(row.totalQuantity) }}
订单笔数
{{ row.orderCount }}
最早销售
{{ row.firstDate || '—' }}
最晚销售
{{ row.lastDate || '—' }}
显示 {{ (outOfStockPage - 1) * outOfStockPageSize + 1 }} - {{ Math.min(outOfStockPage * outOfStockPageSize, outOfStockTotal) }} 条,共 {{ outOfStockTotal }} 条

实时库存总金额/总数量

{{ canViewInvReportFinancial ? '¥' + formatNumber(totalCurrentAmount) : '—' }}

{{ formatNumber(totalCurrentQuantity) }} 个

📦

本月入库/出库数量

入库:{{ formatNumber(totalMonthIn) }} 个

出库:{{ formatNumber(totalMonthOut) }} 个

📊

产品管理 (共 {{ filteredProductsForList.length }} 个产品) {{ productListSourceLabel }}

✓ {{ importResultMessage }}
分类 品牌 产品名称 采购价格 淘宝价格 京东价格 库存 其他 操作
加载中…
📦暂无产品数据
加载中…
暂无产品数据
{{ p.model }}
分类
{{ getCategoryName(p) || '—' }}
品牌
{{ p.brand || '其他' }}
库存
{{ getProductStock(p.id) }}
备注
{{ p.notes || '-' }}
只读
显示 {{ (currentPage - 1) * pageSize + 1 }} - {{ Math.min(currentPage * pageSize, totalProductCount) }} 条,共 {{ totalProductCount }} 条

分类管理 (共 {{ categories.length }} 个分类)

ID分类名称过剩预警产品数量操作
#{{ cat.id }} {{ cat.name }} {{ (cat.overstockWarningEnabled === 0 || cat.overstockWarningEnabled === false) ? '关闭' : '开启' }} {{ getCategoryProductCount(cat.id) }}
🏷️暂无分类数据
暂无分类数据
{{ cat.name }}
分类ID
#{{ cat.id }}
过剩预警
{{ (cat.overstockWarningEnabled === 0 || cat.overstockWarningEnabled === false) ? '关闭' : '开启' }}
产品数量
{{ getCategoryProductCount(cat.id) }}

入库工作台 WMS 采购入库

采购登记 → 待质检/待确认 → 确认后写入库存、SN 台账与成本历史

  1. 1 采购登记 导入 / 建单
  2. 2 待入库确认 本页待办
  3. 3 已入库 库存+SN+成本
待入库单量 {{ inboundWorkbenchKpis.orderCount }}
明细分录行 {{ inboundWorkbenchKpis.lineRows }}
待入总件数 {{ formatNumber(inboundWorkbenchKpis.pieces) }}
采购待入金额(明细合计) ¥{{ formatNumber(inboundWorkbenchKpis.amount) }}
已绑定 SN 条数 {{ formatNumber(inboundWorkbenchKpis.sns) }}

操作说明与校验

  • 手动入库:有「库存 · 入库单」权限或财务/管理员时,工具栏可打开弹窗,直接向实时库存增加数量,与采购确认入库相互独立。产品从未维护 SN 台账时仅填数量即可(POST /api/inventory/in);已维护 SN 台账时须一次填齐 SN(每行一个、不可重复),且SN 行数须与入库数量一致POST /api/inventory/manual-in-with-sn,另需 sn:write 或财务/管理员)。
  • 采购 Excel 导入、全量采购导出与 SN 导出入口已集中在本页;「库存管理」工具栏中仅保留「入库管理」快捷跳转,避免重复入口。
  • 「确认入库」将按采购单价与数量更新库存,并落 SN 至台账;若存在手工锁定成本,系统会提示选择保留或按加权覆盖。
  • 一行一 SN 导入时,合并明细的数量与 SN 条数须一致;系统会拦截重复 SN 及与其他待入库单冲突的 SN。
  • 无「确认」权限的账号可浏览待办,操作列显示为只读。

待确认入库采购单

以下为状态为「待入库」的采购单,确认前可随时导出 SN 行清单核对。

加载待办列表中…

当前没有待入库采购单

从 Excel 导入采购明细后,新单会出现在此列表。也可使用企业已有流程在别处建单后回到此处确认入库。

单号 供应商 状态 汇总 备注 创建 操作
#{{ order.id }} {{ order.supplierName || '—' }} {{ labelPurchaseStatus(order.status) }} {{ order.lineCount != null ? order.lineCount : '—' }} 行 · {{ formatNumber(order.totalQuantity != null ? order.totalQuantity : 0) }} 件 · {{ formatNumber(order.snCount != null ? order.snCount : 0) }} SN · ¥{{ formatNumber(order.totalLineAmount != null ? order.totalLineAmount : 0) }} {{ order.notes || '—' }}
{{ order.createdByUsername || '—' }}
{{ order.createdAt || '—' }}
只读

平价管理 总价值不变,重新分摊多产品库存成本

名称原成本单价数量调整后成本单价原总价调整后总价操作
{{ row.keyword || '输入产品名称自动检索...' }}
{{ p.productName }}
成本 ¥{{ formatNumber(p.costPrice) }} · 库存 {{ formatNumber(p.quantity) }}
{{ formatNumber((getPriceAdjustPreview(row) && getPriceAdjustPreview(row).oldCostPrice) || 0) }} {{ formatNumber((getPriceAdjustPreview(row) && getPriceAdjustPreview(row).quantity) || 0) }}
{{ row.newCostPrice === '' || row.newCostPrice == null ? '' : row.newCostPrice }}
{{ formatNumber((getPriceAdjustPreview(row) && getPriceAdjustPreview(row).oldTotal) || 0) }} {{ formatNumber((getPriceAdjustPreview(row) && getPriceAdjustPreview(row).newTotal) || 0) }}
合计 {{ formatNumber(priceAdjustTotals.totalBefore) }} {{ formatNumber(priceAdjustTotals.totalAfter) }} 差额 {{ formatNumber(priceAdjustTotals.totalDiff) }}

最近平价记录

加载中…
暂无平价记录

点击任意一行查看该次平价的各产品明细

ID操作人备注原总价调整后总价差额时间
#{{ h.id }} {{ h.createdByUsername || '-' }} {{ h.note || '-' }} {{ formatNumber(h.totalBefore) }} {{ formatNumber(h.totalAfter) }} {{ formatNumber(h.totalDiff) }} {{ h.createdAt || '-' }}

补录 SN

{{ toastMessage }}