{{ title }}
{{ subtitle }}
{{ user.real_name || user.username }} · {{ user.role_name || roleLabel(user.role_code || user.role) }}
{{ moduleGuide.title }}
{{ moduleGuide.text }}
{{ moduleGuide.formula }}
{{ step }}
采购送货运输状态每页 20 条
| 批次号 | 采购日期 | 仓库名 | 品类 | 车牌号 | 司机电话 | 数量 | 审核状态 | 审核人 | 货款 | 运输状态 | 运费付款 | 管理 |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| {{ row.batch_no }} | {{ row.purchase_date }} | {{ hasTransportData(row) ? row.warehouse_name : '' }} | {{ hasTransportData(row) ? (row.category_name || '未分类') : '' }} | {{ row.plate_no }} | {{ row.driver_phone }} | {{ Number(row.quantity || 0).toLocaleString() }} | {{ row.transport_reserved }} | {{ row.reviewer_name }} | {{ row.transport_payment }} | {{ row.transport_in_transit }} | {{ row.freight_payment }} | - |
暂无运输数据
{{ dashboardTransportRangeText }}
{{ dashboardTransportCurrentPage }} / {{ dashboardTransportPageCount }}
仓库库存品类 / 所属仓库 / 库存数量
品类
所属仓库
库存数量
{{ row.category_name || '未分类' }}
{{ row.display_warehouse_name || row.name }}
{{ Number(row.stock_qty || 0).toLocaleString() }}
暂无库存数据
仓库口径
仓库是实际库存地点;外部仓库ID和明细核算仓库通过下方平台映射归入实际仓库。
当前账号没有维护仓库权限
当前账号没有维护商户名称权限
{{ batchProfitRangeText }}
每页
{{ batchProfitCurrentPage }} / {{ batchProfitPageCount }}
{{ orderDetailRangeText }}
每页
{{ orderDetailCurrentPage }} / {{ orderDetailPageCount }}
当前账号没有录入销售数据权限
{{ financialReportConfig.title }}
{{ activeFinancialReport.period_label || `${activeFinancialReportSearch.date_start} 至 ${activeFinancialReportSearch.date_end}` }},{{ financialReportConfig.metricLabel }} {{ money(activeFinancialReport.total_value) }}{{ financialReportConfig.trendTitle }}
日期区间内每日{{ financialReportConfig.metricLabel }}{{ financialReportConfig.warehouseTitle }}
统计期间汇总{{ financialReportConfig.categoryTitle }}
按{{ financialReportConfig.metricLabel }}排序前 10 名{{ financialReportConfig.manufacturerTitle }}
{{ financialReportConfig.isProfit ? '正数盈利,负数亏损' : '销售额占比' }}{{ financialReportConfig.heatmapTitle }}
二维交叉分析
{{ financialReportConfig.title }}加载中...
请选择需要编辑的销售明细
请先在销售明细中选择需要退货的记录
{{ purchaseDeliveryRangeText }}
每页
{{ purchaseDeliveryCurrentPage }} / {{ purchaseDeliveryPageCount }}
供应商待办统计
按当前查询结果汇总未签合同和未开票批次
共 {{ purchaseDocumentSupplierPendingStats.length }} 个供应商待完善
| 供应商 | 未签合同总数 | 未开票批总数 | 未开票总金额 |
|---|---|---|---|
| 正在统计供应商待办数据... | |||
| 当前查询结果中没有未签合同或未开票批次 | |||
| {{ row.supplier_name }} | {{ Number(row.no_contract_count || 0).toLocaleString() }} | {{ Number(row.uninvoiced_batch_count || 0).toLocaleString() }} | {{ money(row.uninvoiced_amount) }} |
| 合计 | {{ Number(purchaseDocumentSupplierPendingTotal.no_contract_count || 0).toLocaleString() }} | {{ Number(purchaseDocumentSupplierPendingTotal.uninvoiced_batch_count || 0).toLocaleString() }} | {{ money(purchaseDocumentSupplierPendingTotal.uninvoiced_amount) }} |
| 批次号 | 批次状态 | 采购日期 | 到货日期 | 仓库 | 品类 | 货款总额 | 供应商 | 付款单位 | 合同状态 | 合同登记 | 发票状态 | 发票登记 | 合同等待 | 开票等待 |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 正在加载合同发票数据... | ||||||||||||||
| 暂无符合查询条件的采购批次 | ||||||||||||||
| {{ row.batch_no }} | {{ row.batch_status_name }} | {{ row.purchase_date }} | {{ row.arrival_date || '-' }} | {{ row.warehouse_name }} | {{ row.category_name }} | {{ money(row.goods_payment_total) }} | {{ row.supplier_name || '未设置供应商' }} | {{ row.payment_unit_name || '未设置付款单位' }} | {{ Number(row.has_contract) === 1 ? '已有合同' : '无合同' }} | {{ purchaseDocumentMarkerText(row, 'contract') }} | {{ Number(row.has_invoice) === 1 ? '已开票' : '未开票' }} | {{ purchaseDocumentMarkerText(row, 'invoice') }} | {{ purchaseDocumentWaitText(row, 'contract') }} | {{ purchaseDocumentWaitText(row, 'invoice') }} |
请选择需要编辑的采购送货记录
当前账号没有新增权限
请选择需要编辑的在途运输记录
{{ freightRangeText }}
每页
{{ freightCurrentPage }} / {{ freightPageCount }}
当前账号没有维护运费权限
四维库存模型
截至 {{ inventoryReport.snapshot_date || inventoryReportSearch.date_end }},库存数量 {{ Number(inventoryReport.total_stock || 0).toLocaleString() }}库存趋势
日期区间内每日的期末库存仓库库存
{{ inventoryReport.snapshot_date }} 快照品类 TOP
库存数量前 10 名厂家库存
库存占比仓库 × 品类
二维库存交叉分析
库存报表加载中...
当前账号没有初始化库存权限
{{ inventoryRangeText }}
每页
{{ inventoryCurrentPage }} / {{ inventoryPageCount }}
当前账号没有库存划拨权限
当前账号没有编辑库存划拨记录权限
当前账号没有编辑库损记录权限
| 报损日期 | 仓库 | 仓库类别 | 品类 | 报损数量 | 报损原因 | 现场照片 | 报损人 | 手机号 | 审核状态 | 审核人 | 审核时间 | 驳回原因 | 备注 | 管理 |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 正在加载报损记录... | ||||||||||||||
| 暂无符合条件的报损记录 | ||||||||||||||
| {{ row.loss_date }} | {{ row.warehouse_name }} | {{ row.warehouse_category || '-' }} | {{ row.category_name }} | {{ row.loss_qty }} | {{ row.damage_reason || '-' }} | - | {{ row.reporter_name }} {{ row.report_source_label }} |
{{ row.reporter_phone || '-' }} | {{ row.status_label }} | {{ row.reviewer_name || '-' }} | {{ row.reviewed_at || '-' }} | {{ row.reject_reason || '-' }} | {{ row.remark || '-' }} | - |
| 创建时间 | 仓库 | 用户名 | 报损人姓名 | 手机号 | 设备绑定 | 账号状态 | 管理 |
|---|---|---|---|---|---|---|---|
| 暂无云仓人员,请先选择仓库并点击“新建用户” | |||||||
| {{ row.created_at }} | {{ row.warehouse_name }} | {{ row.username }} | {{ row.reporter_name || '未填写' }} | {{ row.phone || '未填写' }} | {{ row.activation_status === 'activated' ? '已绑定' : '待绑定' }} {{ row.device_bound_at }} |
{{ Number(row.status) === 1 ? '启用' : '禁用' }} | |
当前账号没有维护品类权限
当前账号没有维护生产厂家权限
当前账号没有维护供应商权限
当前账号没有维护付款单位权限
当前账号只能查看厂家大屏通知。
导入销售数据
系统先校验整份文件:第三方仓库和商品品类必须完成映射,并按仓库、品类汇总销量检查当前库存。全部通过后才会一次性写入并执行 FIFO;任一库存不足,整份文件导入失败且不写入数据。
待重新检测:{{ pendingSalesImport.filename }}
共 {{ pendingSalesImport.rows.length }} 条数据,尚未写入任何正式数据
{{ message }}
采购历史数据导出
可导出采购送货历史 Excel;超级管理员还可以生成供新系统一键导入的整套业务数据 ZIP,导出过程不会修改采购、库存和利润数据。
整套业务数据迁移包
包含合同规定的 40 张业务表和云仓报损附件,不包含账号密码、授权、支付、AI 密钥或服务器配置。
整套迁移包仅限超级管理员导出。
- 授权编号
- {{ licenseInfo.license.license_id || '-' }}
- 产品编号
- {{ licenseInfo.product_code || '-' }}
- 签名密钥
- {{ licenseInfo.key_id || '-' }}
- 系统版本
- {{ licenseInfo.app_version || '-' }}
- 绑定域名
- {{ licenseDomainsText }}
- 安装实例ID
- {{ licenseInfo.installation_id || '-' }}
- 签名公钥
- {{ licenseInfo.public_key_installed ? '已安装' : '未安装' }}
- 最近检查
- {{ formatLicenseTime(licenseInfo.license.checked_at) }}
- 下次检查
- {{ formatLicenseTime(licenseInfo.license.next_check_at) }}
- 宽限截止
- {{ formatLicenseTime(licenseInfo.license.grace_until) }}
- 授权到期
- {{ formatLicenseTime(licenseInfo.license.license_expires_at) }}
- 安装令牌
- {{ licenseInfo.has_installation_token ? '已保存' : '未生成' }}
- 授权功能
- {{ licenseFeaturesText }}
授权验证尚未启用,请先完成授权服务器、绑定域名和公钥配置。
账面 {{ Number(stocktakeRecord.system_total_qty || 0).toLocaleString() }}
实盘 {{ Number(stocktakeRecord.counted_total_qty || 0).toLocaleString() }}
差异 {{ Number(stocktakeRecord.difference_total_qty || 0).toLocaleString() }}
| 品类 | 生产厂家 | 账面数量 | 实盘数量 | 差异 | 备注 | 操作 |
|---|---|---|---|---|---|---|
| {{ Number(item.system_qty || 0).toLocaleString() }} | {{ stocktakeDifference(item).toLocaleString() }} | |||||
| 该仓库当前无库存,可添加盘盈明细 |
符合条件 {{ Number(operationLogSummary.total || 0).toLocaleString() }} 条
成功 {{ Number(operationLogSummary.success_count || 0).toLocaleString() }}
失败 {{ Number(operationLogSummary.failed_count || 0).toLocaleString() }}
| 时间 | 操作人 | 模块 | 操作 | 目标 | 结果 | 来源 IP | 详情 |
|---|---|---|---|---|---|---|---|
| {{ row.created_at }} | {{ row.operator_name }}{{ row.operator_username }} | {{ row.module_name }} | {{ row.operation_label }}{{ row.operation }} | {{ row.target_label }} | {{ row.result_label }} | {{ row.ip_address || '-' }} |
{{ row.detail_summary || '查看详情' }}{{ row.detail_pretty }}
浏览器:{{ row.user_agent }} |
| {{ operationLogLoading ? '正在加载...' : '暂无操作日志' }} | |||||||
{{ operationLogRangeText }}
每页
{{ operationLogPage }} / {{ operationLogPageCount }}
按历史日期完整重跑 FIFO
不能只修改利润字段。重算会同步更新销售成本、利润、批次剩余数量和当前库存。
注意事项
补录批次的到货日期必须不晚于对应销售日期。系统自动执行“完整备份 → 历史 FIFO 重算 → 未匹配销售检查 → 库存与利润核对”。任何检查失败都会回滚重算数据,并保留重建前备份。
正在执行历史 FIFO 重建请勿关闭页面或重复提交,完成后会自动显示核对结果。
{{ fifoRebuildResult.ok ? '重建完成' : '重建失败,数据已回滚' }}
{{ fifoRebuildResult.message }}
| 核对项目 | 重建前 | 重建后 | 变化 |
|---|---|---|---|
| 销售成本 | {{ money((fifoRebuildResult.before || {}).cost_amount) }} | {{ money((fifoRebuildResult.after || fifoRebuildResult.attempted_after || {}).cost_amount) }} | {{ money((fifoRebuildResult.changes || {}).cost_amount) }} |
| 销售利润 | {{ money((fifoRebuildResult.before || {}).profit_amount) }} | {{ money((fifoRebuildResult.after || fifoRebuildResult.attempted_after || {}).profit_amount) }} | {{ money((fifoRebuildResult.changes || {}).profit_amount) }} |
| 当前库存数量 | {{ Number((fifoRebuildResult.before || {}).inventory_quantity || 0).toLocaleString() }} | {{ Number((fifoRebuildResult.after || fifoRebuildResult.attempted_after || {}).inventory_quantity || 0).toLocaleString() }} | {{ Number((fifoRebuildResult.changes || {}).inventory_quantity || 0).toLocaleString() }} |
| 当前库存价值 | {{ money((fifoRebuildResult.before || {}).inventory_value) }} | {{ money((fifoRebuildResult.after || fifoRebuildResult.attempted_after || {}).inventory_value) }} | {{ money((fifoRebuildResult.changes || {}).inventory_value) }} |
| 未匹配销售数量 | {{ Number((fifoRebuildResult.before || {}).unmatched_quantity || 0).toLocaleString() }} | {{ Number((fifoRebuildResult.after || fifoRebuildResult.attempted_after || {}).unmatched_quantity || 0).toLocaleString() }} | - |
失败原因
{{ failure }}
| 销售日期 | 仓库 | 品类 | 销售数量 | 已匹配 | 未匹配 |
|---|---|---|---|---|---|
| {{ row.sale_date }} | {{ row.warehouse_name }} | {{ row.category_name }} | {{ row.sales_quantity }} | {{ row.matched_quantity }} | {{ row.unmatched_quantity }} |