书
鸿书翰 ERP
平台总览
平台盘子、待办积压、钱与风险,一屏看完;每 60 秒自动刷新一次。
已对接
接口:
/api/ops/super-admin/summary
生成于 {{ timeText(platformSummary.generatedAt) }}
刷新中…
{{ platformSummaryError }}
盘子
{{ k.value }}
{{ k.label }}
风险与提醒
{{ a.level === 'error' ? '⛔' : '⚠️' }} {{ a.text }}
平台待办(点右侧直达)
没有积压的待办,平台侧是干净的。
{{ t.label }}
{{ t.count }} 条
商家侧积压,平台不直接处理
快速入口
趋势与环比
近 14 天按天,以及「近 7 天 vs 前 7 天」的环比 —— 看的是在涨还是在跌。
已对接
接口:
/api/ops/super-admin/trends
{{ platformTrendsError }}
环比({{ platformTrends.compare.range }})
{{ row.money ? platYuan(row.cur) : row.cur }}
{{ row.label }}(前 7 天 {{ row.money ? platYuan(row.prev) : row.prev }})
{{ platDeltaText(row.deltaPct) }}
{{ trendDrillError }}
{{ trendDrill.date }} 当天明细
新增商家 {{ trendDrill.totals.newMerchants }} · 新增买家 {{ trendDrill.totals.newBuyers }} ·
订单 {{ trendDrill.totals.orders }}({{ platYuan(trendDrill.totals.gmvCents) }}) ·
卖书单 {{ trendDrill.totals.sellOrders }} · 订阅 {{ trendDrill.totals.subscriptions }}
| 类型 | 对象 | 金额/状态 |
|---|---|---|
| 新增商家 | {{ m.name }} | {{ m.status }} |
| 订单 | {{ o.orderNo }} | {{ platYuan(o.totalCents) }} · {{ o.status }} |
| 卖书单 | {{ s.sellNo }}({{ s.isbn }}) | {{ platYuan(s.quoteCents) }} · {{ s.status }} |
| 订阅 | {{ s.planCode }}(商家 {{ s.merchantId }}) | {{ platYuan(s.amountCents) }} · {{ s.paySource }} |
这一天没有明细 | ||
近 {{ platformTrends.days }} 天明细
| 日期 | 新增商家 | 新增买家 | 订单 | GMV | 卖书单 | 订阅收入 |
|---|---|---|---|---|---|---|
| {{ row.date }} | {{ row.newMerchants }} | {{ row.newBuyers }} |
{{ row.orders }}
|
{{ platYuan(row.gmvCents) }} | {{ row.sellOrders }} | {{ platYuan(row.subscriptionCents) }} |
暂无数据 | ||||||
合计:订单 {{ platformTrends.totals.orders }} · GMV {{ platYuan(platformTrends.totals.gmvCents) }} ·
新增商家 {{ platformTrends.totals.newMerchants }} · 新增买家 {{ platformTrends.totals.newBuyers }} ·
卖书单 {{ platformTrends.totals.sellOrders }} · 订阅收入 {{ platYuan(platformTrends.totals.subscriptionCents) }}
动作中心
平台侧今天该干的活:商家入驻审核、电子面单审核、上书异常、定时任务、买家封禁。
已对接
接口:
/api/ops/super-admin/actions + 各动作接口
执行中…
{{ platformActionsError }}
商家入驻待审核({{ platformActions.counts.merchantApprovals }})
| 商家 | 联系人 | 电话 | 营业执照 | 地区 | 提交时间 | 操作 |
|---|---|---|---|---|---|---|
| {{ m.name }} | {{ m.contactName || '-' }} | {{ m.contactPhone || '-' }} | {{ m.licenseNo || '-' }} | {{ (m.province || '') + (m.city || '') || '-' }} | {{ platTime(m.createdAt) }} | |
没有待审核的商家 | ||||||
电子面单待审核({{ platformActions.counts.waybillApplications }})
| 商家 | 承运商 | 网点 | 联系人 | 电话 | 提交时间 | 操作 |
|---|---|---|---|---|---|---|
| {{ w.merchantName || w.merchantId }} | {{ w.carrier }} | {{ w.branch || '-' }} | {{ w.contact || '-' }} | {{ w.phone || '-' }} | {{ platTime(w.createdAt) }} | |
没有待审核的面单申请 | ||||||
定时任务({{ platformActions.jobs.length }} 个,失败 {{ platformActions.counts.jobsFailed }})
| 任务 | 间隔 | 启用 | 上次状态 | 上次结束 | 成功/失败次数 | 操作 |
|---|---|---|---|---|---|---|
| {{ j.displayName || j.name }} {{ j.name }} |
{{ j.intervalSeconds }}s | {{ j.enabled ? '是' : '否' }} | {{ j.lastStatus || '-' }} {{ j.lastMessage || '' }} |
{{ platTime(j.lastFinishedAt) }} | {{ j.runCount }} / {{ j.failCount }} | |
没有登记的任务 | ||||||
上书任务异常({{ platformActions.counts.uploadIssues }})
| 商家 | 任务 | 类型 | 状态 | 进度 | 失败 | 创建时间 |
|---|---|---|---|---|---|---|
| {{ t.merchantName || t.merchantId }} | {{ t.name }} | {{ t.type }} | {{ t.status }} | {{ t.done }}/{{ t.total }} | {{ t.failed }} {{ t.errorMsg || '' }} |
{{ platTime(t.createdAt) }} |
没有异常的上书任务 | ||||||
上书任务是商家侧作业,平台只做可见性;需要干预时请先联系商家(不代操作)。
买家封禁 / 解封
{{ platformUserError }}
| ID | 昵称 | 手机号 | 状态 | 原因 | 余额 | 操作 |
|---|---|---|---|---|---|---|
| {{ u.id }} | {{ u.nickname || '-' }} | {{ u.phone || '-' }} | {{ u.statusText || u.status }} | {{ u.statusReason || '-' }} | {{ u.balanceText || '¥0.00' }} |
审计留痕
谁在什么时候动了什么:商家登录、平台代客登录、订单动作、交易介入,按时间倒序合成一条线。
已对接
接口:
/api/ops/super-admin/audit
{{ platformAuditError }}
时间范围
至
{{ row.action }}
{{ platTime(row.at) }}
{{ row.actor }}
· {{ row.merchantName }}
{{ row.detail }}
这一类还没有留痕
商家生命周期
一个商家一行:入驻 → 规模 → 订阅 → 资源点 → 本月结算 → 风险(档案审核 / 上书异常)。
已对接
接口:
/api/ops/super-admin/merchants
{{ platformMerchantsError }}
| 商家 | 状态 | 入驻 | 员工 | 订单 | GMV | 订阅 | 资源点 | 本月结算净额 | 风险 | 操作 |
|---|---|---|---|---|---|---|---|---|---|---|
| {{ m.name }} ID {{ m.id }} · {{ (m.province || '') + (m.city || '') }} |
{{ m.status }} | {{ platTime(m.createdAt) }} | {{ m.staffActive }} | {{ m.ordersTotal }} | {{ platYuan(m.gmvCents) }} |
{{ m.planCode }} 到期 {{ platTime(m.planExpireAt) }}
未订阅
|
{{ m.resourceBalance || 0 }} | {{ platYuan(m.settlementNetCents) }} | 档案待审 {{ m.auditsPending }} 上书异常 {{ m.uploadIssues }} 正常 | |
还没有商家 | ||||||||||
订阅与资源点
平台代开/续费/取消订阅,以及各商家资源点余额(充值走记账充值,不发生在线支付)。
已对接
接口:
/api/ops/super-admin/subscriptions
{{ platformSubsError }}
平台代开 / 续费(不扣商家资源点)
月
订阅记录({{ platformSubs.subscriptions.length }})
| ID | 商家 | 套餐 | 类型 | 状态 | 开始 | 到期 | 金额 | 来源 | 操作 |
|---|---|---|---|---|---|---|---|---|---|
| {{ s.id }} | {{ s.merchantName }} | {{ s.planCode }} | {{ s.type }} | {{ s.statusText || s.status }} 剩 {{ s.daysLeft }} 天 |
{{ platTime(s.startedAt) }} | {{ platTime(s.expireAt) }} | {{ platYuan(s.amountCents) }} | {{ s.paySource }} | |
还没有订阅记录 | |||||||||
资源点余额
| 商家 | 余额 | 最近变动 | 操作 |
|---|---|---|---|
| {{ r.merchantName }} ID {{ r.merchantId }} |
{{ r.balance || 0 }} | {{ platTime(r.lastAt) }} | |
还没有商家 | |||
商家详情{{ platformMerchantDetail ? ' · ' + platformMerchantDetail.merchant.name : '' }}
订阅流水 / 资源点流水 / 结算单 / 档案审核 / 上书异常 / 最近订单 / 登录留痕 —— 一页看完这个商家。
已对接
接口:
/api/ops/super-admin/merchants/{{ platformMerchantDetailId }}
{{ platformMerchantDetailError }}
基本信息
ID {{ platformMerchantDetail.merchant.id }} · 状态 {{ platformMerchantDetail.merchant.status }} ·
联系人 {{ platformMerchantDetail.merchant.contactName || '-' }}({{ platformMerchantDetail.merchant.contactPhone || '-' }})·
执照 {{ platformMerchantDetail.merchant.licenseNo || '-' }} ·
{{ (platformMerchantDetail.merchant.province || '') + (platformMerchantDetail.merchant.city || '') }} ·
库 {{ platformMerchantDetail.merchant.dbName }} · 在岗员工 {{ platformMerchantDetail.staffActive }} ·
入驻 {{ platTime(platformMerchantDetail.merchant.createdAt) }}
代开 / 续费订阅
月
订阅流水({{ platformMerchantDetail.subscriptions.length }})
| 套餐 | 类型 | 状态 | 开始 | 到期 | 金额 | 来源 | 备注 | 操作 |
|---|---|---|---|---|---|---|---|---|
| {{ s.planCode }} | {{ s.type }} | {{ s.status }} | {{ platTime(s.startedAt) }} | {{ platTime(s.expireAt) }} | {{ platYuan(s.amountCents) }} | {{ s.paySource }} | {{ s.remark || '-' }} | |
没有订阅记录 | ||||||||
资源点流水(最近 {{ platformMerchantDetail.resources.length }} 条)
| 时间 | 类型 | 变动 | 余额 | 关联 | 备注 |
|---|---|---|---|---|---|
| {{ platTime(r.createdAt) }} | {{ r.type }} | {{ r.amount }} | {{ r.balanceAfter }} | {{ r.relatedNo || '-' }} | {{ r.remark || '-' }} |
没有资源点流水 | |||||
结算单(最近 {{ platformMerchantDetail.settlements.length }} 期)
| 周期 | 订单数 | 毛额 | 佣金 | 净额 | 状态 | 导出时间 |
|---|---|---|---|---|---|---|
| {{ s.period }} | {{ s.orderCount }} | {{ platYuan(s.grossCents) }} | {{ platYuan(s.feeCents) }} | {{ platYuan(s.netCents) }} | {{ s.status }} | {{ platTime(s.exportedAt) }} |
还没有结算单 | ||||||
风险:档案审核({{ platformMerchantDetail.audits.length }})与上书异常({{ platformMerchantDetail.uploadIssues.length }})
| 类型 | 内容 | 状态 | 时间 |
|---|---|---|---|
| 档案{{ a.action }} | {{ a.isbn }} {{ a.title || '' }} {{ a.reason || '' }} |
{{ a.status }} | {{ platTime(a.createdAt) }} |
| 上书任务 | {{ t.name }} {{ t.errorMsg || '' }} |
{{ t.status }}({{ t.done }}/{{ t.total }},失败 {{ t.failed }}) | {{ platTime(t.createdAt) }} |
没有风险项 | |||
最近订单({{ platformMerchantDetail.orders.length }})与登录留痕({{ platformMerchantDetail.logins.length }})
| 类型 | 单号/账号 | 金额/结果 | 状态 | 时间 |
|---|---|---|---|---|
| 订单 | {{ o.orderNo }} | {{ platYuan(o.totalCents) }} | {{ o.status }} | {{ platTime(o.createdAt) }} |
| 登录 | {{ l.username }} | {{ l.success ? '成功' : '失败' }} {{ l.reason || '' }} | {{ l.ip }} | {{ platTime(l.createdAt) }} |
平台公告
发给全部商家或指定商家的站内通知;商家后台顶部横幅 + 公告页可见,下线不删记录。
已对接
接口:
/api/ops/super-admin/announcements
执行中…
{{ platformAnnouncementsError }}
发布公告
接收角色
公告列表({{ platformAnnouncements.summary.total }} · 已发布 {{ platformAnnouncements.summary.published }} · 待发布 {{ platformAnnouncements.summary.scheduled || 0 }} · 已过期 {{ platformAnnouncements.summary.expired || 0 }} · 已下线 {{ platformAnnouncements.summary.offline }})
| 标题 | 范围 / 受众 | 状态 | 已读 / 目标 | 发布人 | 发布时间 / 失效 | 内容 | 操作 |
|---|---|---|---|---|---|---|---|
| {{ a.pinned ? '📌 ' : '' }}{{ a.title }} | {{ a.scope === 'all' ? '全部商家' : (a.merchantName || ('商家 ' + a.merchantId)) }} {{ a.audienceText }} |
{{ a.statusText || a.status }} | {{ a.readCount || 0 }} / {{ a.targetCount || 0 }} | {{ a.publisher || '-' }} | {{ platTime(a.publishedAt) }} 至 {{ platTime(a.expireAt) }} |
{{ a.content }} | |
还没有公告 | |||||||
{{ curEmbed.title }}
{{ curEmbed.desc }}
已对接
页面:
/admin/#{{ curEmbed.tab }}
管理员会话与平台后台互通,操作即时落库
{{ greeting }},{{ merchantName }}
当前模块:{{ currentGroup }} · 先处理待办,再进入功能页。
待办优先
{{ m.value }}
{{ m.label }}
库存概览
{{ m.value }}{{ m.label }}
{{ dashboard.todayInbound }}
今日入库
{{ dashboard.pendingShipment }}
待发货
{{ dashboard.sellableSku || 0 }}
在架 SKU(不同 ISBN)
{{ dashboard.sellableStock || 0 }}
可售库存(册)
{{ dashboard.missingLocation || 0 }}
缺货位 / 未映射
{{ dashboard.stockUnitCount || 0 }}
库存副本
扫码入库 / 货位管理
打单发货
多平台分销同步
智能定价建议
当前价格:¥{{ pricingSuggestion.currentPriceCents / 100 }} 建议价格:¥{{ pricingSuggestion.suggestedPriceCents / 100 }}
{{ pricingSuggestion.reason }}
联仓结算({{ settlement.period }})
订单数{{ settlement.orderCount }}
交易额¥{{ settlement.grossCents / 100 }}
平台服务费¥{{ settlement.feeCents / 100 }}
净结算¥{{ settlement.netCents / 100 }}
{{ stockPageTotal }}
库存行
{{ stockPageMetrics.units }}
库存册数
{{ stockPageMetrics.skus }}
SKU 数
{{ stockPageMetrics.locations }}
货位数
{{ stockPageMetrics.low }}
库存 ≤ 2
已选全部 {{ stockPageTotal }} 条筛选结果
已选 {{ stockSelection.length }} 条(手动勾选)
| ISBN | 书名 | 货位 | 售价 | 库存 | 状态 | 操作 | |
|---|---|---|---|---|---|---|---|
| {{ row.isbn }} | {{ row.title || '-' }} | {{ row.location || '-' }} | ¥{{ ((row.priceCents || 0) / 100).toFixed(2) }} | {{ row.stockQuantity }} | {{ listingStatusText(row.status) }} |
暂无库存行,先在「商品管理」上架或从「仓库管理」入库
第 {{ stockQuery.page }} / {{ stockPageCount }} 页,共 {{ stockPageTotal }} 行
仓库作业进度
{{ fulfillmentSummary.total }}
作业单件数
{{ fulfillmentCount('picked') }}
已拣货
{{ fulfillmentCount('reviewed') }}
已复核
{{ fulfillmentCount('shipped') }}
已发货
| 订单号 | 书名 | ISBN | 货位 | SKU | 状态 | 拣货时间 | 复核时间 | 发货时间 |
|---|---|---|---|---|---|---|---|---|
| {{ r.orderNo }} | {{ r.title || '-' }} | {{ r.isbn || '-' }} | {{ r.location || '-' }} | {{ r.sku }} | {{ fulfillmentStatusText(r.status) }} | {{ r.pickedAt || '-' }} | {{ r.reviewedAt || '-' }} | {{ r.shippedAt || '-' }} |
暂无作业记录(工业手机拣货 / 复核 / 发货后产生)
实拍图入库(作业台)
指令码(扫码枪直接扫下面这几个码):
PHOTO = 拍照
SUBMIT = 提交建档
CLEAR = 清空本次
PUBLISH = 提交后提醒上架
OCR = 识别版权页(未接入)
快捷键:
F1 帮助
F2 拍照
F3 提交建档
F4 朗读当前书名
F6 跳到改价输入
1~9 选一码多书
说明:OCR(版权页识别)需要外部识别服务,本地尚未接入,扫
OCR 会明确提示而不会假装识别了。{{ photoScanInfo }}
一码多书:这个 ISBN 在本店有 {{ photoCandidates.length }} 条货品档案,选一条把品相/价格/货位带进来(数字键 1~9):
{{ ci + 1 }}
{{ c.title || '(无书名)' }}
品相 {{ conditionText(c.conditionCode) }} · {{ c.priceText }} · 货位 {{ c.location || '-' }} · 在库 {{ c.stockQuantity }}
{{ photoBook.title || '(书目未收录,仍可按 ISBN 建档)' }} {{ photoBook.author || '' }} {{ photoBook.publisher || '' }}
暂无照片
{{ cameraMessage }}
建档信息
{{ photoResult }}
改价日志(待处理 / 已处理)
待处理 {{ priceLogSummary.pending }} 条(价差合计 {{ priceLogSummary.pendingDiffText }})· 已处理 {{ priceLogSummary.handled }} 条
| 时间 | ISBN | 书名 | 原价 | 新价 | 差额 | 状态 | 操作 |
|---|---|---|---|---|---|---|---|
| {{ timeText(l.createdAt) }} | {{ l.isbn }} | {{ l.title || '-' }} | {{ l.oldPriceText }} | {{ l.newPriceText }} | {{ l.diffText }} | {{ l.statusText }} | {{ l.handledBy || '-' }} · {{ timeText(l.handledAt) }} |
还没有改价记录。
货品档案审核
{{ auditSummary.total }}
审核记录
{{ auditCount('pending') }}
待审核
{{ auditCount('approved') }}
已通过
{{ auditCount('rejected') }}
已驳回
提交一条待审建档
通过后会按上面的信息自动建货品档案;驳回只记录原因,不写入档案。
| ID | ISBN | 书名 | 状态 | 提交人 | 审核人 | 审核时间 | 原因 | 操作 |
|---|---|---|---|---|---|---|---|---|
| {{ a.id }} | {{ a.isbn }} | {{ a.title || '-' }} | {{ auditStatusText(a.status) }} | {{ a.submittedBy || '-' }} | {{ a.reviewedBy || '-' }} | {{ a.reviewedAt || '-' }} | {{ a.reason || '-' }} |
暂无审核记录
上书任务队列
{{ uploadTypeMeta.note }}
支持 CSV / TSV / TXT(UTF-8);Excel 请先「另存为 CSV」再选(不直接读 .xlsx 二进制,避免引入读包库)。
{{ uploadPayloadFileInfo }}
排队中 {{ uploadSummary.queued }} · 执行中 {{ uploadSummary.running }} · 已完成 {{ uploadSummary.done }} · 失败 {{ uploadSummary.failed }} · 已终止 {{ uploadSummary.cancelled }}
| 任务号 | 类型 | 任务 | 进度 | 状态 | 排队 / 开始 | 操作 |
|---|---|---|---|---|---|---|
| {{ k.no }} | {{ k.typeText }}(需平台通道) | {{ k.name }} | {{ k.done }} / {{ k.total }}(失败 {{ k.failed }})(跳过 {{ k.skipped }}) | {{ k.statusText }} | {{ timeText(k.queuedAt) }} {{ timeText(k.startedAt) }} |
队列里还没有任务:上面选类型(比如「单品类 · 改价」)+ ISBN + 价格 就能提交一条。
任务明细:{{ uploadDetail.task.no }} · {{ uploadDetail.task.typeText }}
{{ uploadDetail.task.name }}:共 {{ uploadDetail.task.total }} 条,成功 {{ uploadDetail.task.done }} · 失败 {{ uploadDetail.task.failed }} · 跳过 {{ uploadDetail.task.skipped }}
| ISBN | 操作 | 结果 | 说明 / 原因 |
|---|---|---|---|
| {{ it.isbn || '-' }} | {{ it.operation }} | {{ it.statusText }} | {{ it.errorMsg || '-' }} |
这条任务还没有明细。
线下回收批次
{{ recycleSummary.total }}
批次总数
{{ recycleCount('pending') }}
待验货
{{ recycleCount('verified') }}
已验货
{{ recycleCount('settled') }}
已结算
¥{{ (recycleSummary.amountCents / 100).toFixed(2) }}
累计应结
新建批次
批次列表
| 批次号 | 代理 | 日期 | 申报册数 | 实收册数 | 单价 | 应结金额 | 状态 | 操作 |
|---|---|---|---|---|---|---|---|---|
| {{ b.batchNo }} | {{ b.agent || '-' }} | {{ b.batchDate }} | {{ b.declaredCount }} | {{ b.verifiedCount === null || b.verifiedCount === undefined ? '-' : b.verifiedCount }} | ¥{{ ((b.unitPriceCents || 0) / 100).toFixed(2) }} | ¥{{ (( (b.verifiedCount === null || b.verifiedCount === undefined ? b.declaredCount : b.verifiedCount) * (b.unitPriceCents || 0)) / 100).toFixed(2) }} | {{ recycleStatusText(b.status) }} |
暂无回收批次
批次 {{ recycleDetail.batch.batchNo }} 明细
| ISBN | 书名 | 品相 | 回收价 | 价格来源 | 录入时间 |
|---|---|---|---|---|---|
| {{ it.isbn || '-' }} | {{ it.title || '-' }} | {{ conditionText(it.conditionCode) }} | ¥{{ ((it.priceCents || 0) / 100).toFixed(2) }} | {{ priceSourceText(it.priceSource) }} | {{ it.createdAt }} |
这个批次还没有录入书目
子账号
| ID | 姓名 | 手机号 | 角色 | 状态 | 备注 | 添加时间 | 操作 |
|---|---|---|---|---|---|---|---|
| {{ s.id }} | {{ s.name }} | {{ s.phone || '-' }} | {{ subRoleText(s.role) }} | {{ s.status === 'active' ? '在用' : '已停用' }} | {{ s.remark || '-' }} | {{ s.createdAt }} |
还没有子账号
资源点
{{ resourceSummary.balance }}
当前余额
{{ resourceSummary.recharged }}
累计充值
{{ resourceSummary.consumed }}
累计消耗
{{ resourceSummary.entries }}
流水条数
| 时间 | 类型 | 数量 | 变动后余额 | 备注 | 关联单号 |
|---|---|---|---|---|---|
| {{ l.createdAt }} | {{ l.type === 'recharge' ? '充值' : (l.type === 'consume' ? '扣减' : l.type) }} | {{ Number(l.amount) > 0 ? '+' : '' }}{{ l.amount }} | {{ l.balanceAfter }} | {{ l.remark || '-' }} | {{ l.relatedNo || '-' }} |
暂无资源点流水
库存流水
{{ ledgerSummary.entries }}
流水条数
{{ ledgerSummary.net }}
净增减(册)
{{ ledgerRows.length }}
当前展示
| 时间 | 类型 | ISBN | 货位 | 增减 | 变动前 | 变动后 | 成本 | 仓库 |
|---|---|---|---|---|---|---|---|---|
| {{ r.createdAt }} | {{ ledgerTypeText(r.type) }} | {{ r.isbn || '-' }} | {{ r.location || '-' }} | {{ Number(r.quantityDelta) > 0 ? '+' : '' }}{{ r.quantityDelta }} | {{ r.beforeQuantity }} | {{ r.afterQuantity }} | ¥{{ ((r.costCents || 0) / 100).toFixed(2) }} | {{ r.warehouse || '-' }} |
暂无库存流水(入库 / 出库 / 移库后产生)
货位盘点
{{ stocktakeSummary.total }}
盘点任务
{{ stocktakeSummary.pending }}
未完成
{{ stocktakeSummary.expected }}
账面册数
{{ stocktakeSummary.counted }}
实盘册数
{{ stocktakeSummary.difference }}
差异合计
| ID | 仓库 | 货位 | 账面 | 实盘 | 差异 | 状态 | 开始 | 完成 |
|---|---|---|---|---|---|---|---|---|
| {{ r.id }} | {{ r.warehouse || '-' }} | {{ r.location || '-' }} | {{ r.expectedQuantity }} | {{ r.countedQuantity === null || r.countedQuantity === undefined ? '-' : r.countedQuantity }} | {{ r.difference === null || r.difference === undefined ? '-' : r.difference }} | {{ stocktakeStatusText(r.status) }} | {{ r.startedAt || '-' }} | {{ r.completedAt || '-' }} |
暂无盘点任务(在工业手机「货位盘点」里创建后会出现在这里)
资金概览
{{ billsSummary.orderCount }}
订单总数
{{ billsSummary.paidCount }}
成交订单
¥{{ (billsSummary.grossCents / 100).toFixed(2) }}
成交金额
¥{{ (billsSummary.refundCents / 100).toFixed(2) }}
退款金额
¥{{ (billsSummary.netCents / 100).toFixed(2) }}
净收入
成交=已支付 / 已发货 / 已完成;净收入=成交金额-退款金额。联仓结算另计:¥{{ (billsSummary.settlementNetCents / 100).toFixed(2) }}。
结算单
| 结算周期 | 订单数 | 交易额 | 服务费 | 净结算 | 状态 | 生成时间 |
|---|---|---|---|---|---|---|
| {{ s.period }} | {{ s.orderCount }} | ¥{{ ((s.grossCents || 0) / 100).toFixed(2) }} | ¥{{ ((s.feeCents || 0) / 100).toFixed(2) }} | ¥{{ ((s.netCents || 0) / 100).toFixed(2) }} | {{ s.status }} | {{ s.createdAt }} |
暂无结算单
支付流水
| 支付单号 | 订单ID | 方向 | 金额 | 渠道 | 状态 | 时间 |
|---|---|---|---|---|---|---|
| {{ py.paymentNo }} | {{ py.orderId }} | {{ py.direction === 'in' ? '收款' : '退款' }} | ¥{{ ((py.amountCents || 0) / 100).toFixed(2) }} | {{ py.channel || '-' }} | {{ py.status || '-' }} | {{ py.createdAt }} |
暂无支付流水
ISBN 查询
查询中...
书名:{{ bookResult.title || '-' }}
作者:{{ bookResult.author || '-' }}
出版社:{{ bookResult.publisher || '-' }}
出版时间:{{ bookResult.publishTime || '-' }} 原价:¥{{ bookResult.price || '-' }}
分类:{{ bookResult.category || '-' }} ISBN:{{ bookLookupIsbn }}
本店库存分布({{ bookStockRows.length }} 行 / {{ bookStockUnits }} 册)
| ID | 品相 | 货位 | 售价 | 库存 | 状态 | 操作 |
|---|---|---|---|---|---|---|
| {{ row.id }} | {{ conditionText(row.conditionCode) }} | {{ row.location || '-' }} | ¥{{ ((row.priceCents || 0) / 100).toFixed(2) }} | {{ row.stockQuantity }} | {{ row.status === 'on_sale' ? '在售' : '已下架' }} |
本店还没有这个 ISBN 的货品档案
快速上架
输入 ISBN 查询书目与库存分布
书库(按 ISBN 归并)
共 {{ archivePageTotal }} 个 ISBN
| ISBN | 书名 | 货品行数 | 库存册数 | 货位数 | 价格区间 | 品相 | 操作 | ||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| {{ a.isbn }} | {{ a.title || '-' }} | {{ a.rows }} | {{ a.stock }} | {{ a.locationCount }} | ¥{{ (a.minPrice / 100).toFixed(2) }} ~ ¥{{ (a.maxPrice / 100).toFixed(2) }} | {{ a.codes || '-' }} | |||||||||||||
|
|||||||||||||||||||
加载中...
书库为空,先入库或批量导入
第 {{ archivePage }} / {{ archivePageCount }} 页,共 {{ archivePageTotal }} 个 ISBN
批量导入货品档案
点击「开始导入」后会弹出目标仓库选择框;每一行货位必须属于所选仓库。文件里的「仓库」列只作参考,以弹窗选择的仓库为准。
旧版 .xls 请先在 Excel/WPS 里另存为 .xlsx 或 CSV;Excel 里 ISBN 建议设为「文本」,避免前导 0 或科学计数法。大表按每批 500 行写入,导入过程中请勿关闭页面。
旧版 .xls 请先在 Excel/WPS 里另存为 .xlsx 或 CSV;Excel 里 ISBN 建议设为「文本」,避免前导 0 或科学计数法。大表按每批 500 行写入,导入过程中请勿关闭页面。
目标仓库「{{ importWarehouse }}」:{{ importLocationsLoading ? '正在加载库位…' : '已加载 ' + importLocations.length + ' 个库位' }}{{ importAutoCreateLocations ? '(勾选了自动创建缺失库位)' : '' }}。只允许导入该仓库下的货位;文件里的「仓库」列会被忽略。
解析出 {{ importRows.length }} 行,有效 {{ importValidCount }} 行,无效 {{ importRows.length - importValidCount }} 行。
无效行示例(前 10 条)
第 {{ r.lineNo }} 行:{{ r.reason }}({{ r.raw }})
{{ importResult }}
导出
导出的 CSV 带 BOM,Excel 直接双击打开不乱码。
| ID | 书名 | ISBN | 书况 | 价格(元) | 库存 | 货位 | 状态 | 操作 |
|---|---|---|---|---|---|---|---|---|
| {{ l.id }} | {{ l.title }} | {{ l.isbn }} | {{ l.conditionCode }} | ¥{{ (l.priceCents / 100).toFixed(2) }} | {{ l.stockQuantity }} | {{ l.location || '-' }} | {{ l.status }} |
还没有商品,先上架一本
第 {{ productQuery.page }} / {{ productPageCount }} 页,共 {{ productPageTotal }} 行
店铺订单
集中查看各平台订单,按状态筛选、批量处理备注与旗色,并完成换仓、驳回和发货。
{{ writable('order') ? '当前可操作' : '只读模式' }}
订单队列
选择订单后可使用批量动作;单笔订单可直接查看详情或发货。
至
驳回会释放占用库存;换仓只能选择当前商家的真实仓库。每个订单独立返回执行结果。
| 标记 | 订单 / 备注 | 商品 | 来源 | 金额 | 状态 | 履约 | 下单时间 | 操作 | |||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| — |
{{ o.orderNo }}
{{ o.merchantMemo || '暂无商家备注' }}
|
{{ o.title || '未填写书名' }}
|
{{ sourceText(o.source) }} | ¥{{ ((o.priceCents || 0) / 100).toFixed(2) }} | {{ orderStatusText(o.status) }} |
{{ o.merchantWarehouseName || '未指定仓库' }}
{{ o.trackingNo || '未生成运单' }}
|
{{ timeText(o.createdAt) }} |
|
|||||||||||
商品明细{{ (o.items || []).length }} 种商品
|
|||||||||||||||||||
还没有匹配的订单
调整订单状态、来源或关键词后再试,也可以直接清除当前筛选。
最近批量动作
| 时间 | 订单号 | 动作 | 操作人 | 详情 |
|---|---|---|---|---|
| {{ l.atText }} | {{ l.orderNo }} | {{ l.actionText }} | {{ l.operator || '-' }} | {{ batchLogDetail(l) }} |
第 {{ orderQuery.page }} / {{ orderPageCount }} 页 · 共 {{ filteredOrders.length }} 单
待发货单数等待安排履约{{ pendingOrders.length }}
待发册数按订单件数汇总{{ pendingUnits }}
待发货金额订单金额合计¥{{ (pendingCents / 100).toFixed(2) }}
待发货作业
核对商品与数量后可直接发货,也可以先导出或打印拣货清单。
| 订单号 | 书名 | ISBN | 品相 | 数量 | 下单时间 | 操作 |
|---|---|---|---|---|---|---|
{{ o.orderNo }} |
{{ o.title || '-' }} |
{{ o.isbn || '-' }} | {{ conditionText(o.conditionCode) }} | {{ o.itemCount || 1 }} | {{ timeText(o.createdAt) }} |
没有待发货订单
当前队列已清空,新订单进入后会出现在这里。
登录与安全
| 当前账号 | {{ currentUser ? currentUser.username : '-' }}({{ currentUser.name }} · {{ currentUser.role }}) |
| 所属商家 | {{ merchantName }}(ID {{ merchantId }}) |
| 密码规则 | 至少 8 位,必须同时包含字母和数字 |
改密码需要验原密码;改完不影响当前会话,下次登录用新密码。
本角色能做什么({{ myRoleLabel }})
| 功能域 | 权限 |
|---|---|
| {{ row.label }} | {{ row.text }} |
提示:这里只是界面提示,接口层会同样拦一道;角色调整后重新登录(或等下一次自动续期)生效。
最近登录留痕
| 时间 | 账号 | 动作 | 结果 | IP |
|---|---|---|---|---|
| {{ l.atText }} | {{ l.username || '-' }} | {{ l.actionText }} | {{ l.resultText }} | {{ l.ip || '-' }} |
暂无留痕记录 | ||||
个人账户
| unionId | {{ accountInfo.unionId }} |
| 手机号 | {{ accountInfo.phone }} |
| 专属推广码 | {{ accountInfo.referralCode }} |
| 资源码 | {{ accountInfo.resourceCode }} |
子账号管理
| 姓名 | 电话 | 角色 | 状态 | 创建时间 | 操作 |
|---|---|---|---|---|---|
| {{ s.name }} | {{ s.phone || '-' }} | {{ s.role || '-' }} | {{ s.status === 'active' ? '启用' : '停用' }} | {{ timeText(s.createdAt) }} |
还没有子账号
微信小程序授权
| 小程序名称 | AppID | 授权状态 | 授权时间 |
|---|---|---|---|
| {{ m.name }} | {{ m.appid }} | 已授权 | {{ m.authorizedAt }} |
暂无已授权小程序,先点击「去授权」
{{ resourceSummary.balance }}
资源点余额
{{ resourceSummary.consumed }}
累计消耗
{{ resourceSummary.recharged }}
累计充值
{{ resourceSummary.entries }}
流水笔数
充值 1 元 = 1000 资源点。在线支付还没接入(外部资质),现在点「立即充值」是记账充值:真写资源点流水账本,但不会发生实际支付。
| 时间 | 类型 | 数量 | 余额 | 说明 |
|---|---|---|---|---|
| {{ timeText(r.createdAt) }} | {{ r.type === 'recharge' ? '充值' : (r.type === 'consume' ? '扣减' : (r.type === 'adjust' ? '调整' : r.type)) }} | {{ Number(r.amount) > 0 ? '+' + r.amount : r.amount }} | {{ r.balanceAfter }} | {{ r.remark || r.relatedNo || '-' }} |
暂无资源点流水
回收设定(本店回收价白名单)
| ISBN | 书名 | 品相 | 回收价 | 状态 | 操作 |
|---|---|---|---|---|---|
| {{ g.isbn }} | {{ g.title || '-' }} | {{ g.conditionText }} | {{ g.priceText }} | {{ recycleEnabled ? g.statusText : '本店已停用' }} |
还没有本店回收价:可以先下载模板填好再批量导入。
增值订阅
{{ t.subscribed ? '已开通' : '未开通' }}
{{ t.name }} 到期 {{ timeText(t.current.expireAt) }}
暂无可订阅的增值服务
订阅方案
| 方案 | 价格 | 时长 | 资源点 | 说明 | 操作 |
|---|---|---|---|---|---|
| {{ p.name }} | {{ p.priceText }} | {{ p.durationDays }} 天 | {{ p.resourcePoints }} | {{ p.description || '-' }} |
暂无可用订阅方案(套餐由平台配置)
订阅记录
| 类型 | 套餐 | 期间 | 金额 | 支付来源 | 状态 | 备注 |
|---|---|---|---|---|---|---|
| {{ r.typeName }} | {{ r.planCode }} | {{ timeText(r.startedAt) }} ~ {{ timeText(r.expireAt) }} | {{ (Number(r.amountCents || 0) / 100).toFixed(2) }} 元 / {{ r.resourcePoints }} 点 | {{ r.paySource === 'resource' ? '资源点' : (r.paySource === 'manual' ? '平台代开' : (r.paySource || '-')) }} | {{ r.statusText }} | {{ r.remark || '-' }} |
暂无订阅记录
线下回收批次
{{ offlineStats.totalAmount }}
总金额(元)
{{ offlineStats.settleAmount }}
应结(元)
{{ offlineBatches.length }}
批次数
| 交易时间 | 批次号 | 商品数 | 金额(元) | 状态 |
|---|---|---|---|---|
| {{ b.time }} | {{ b.batchNo }} | {{ b.goods }} | {{ b.amount }} | {{ b.status }} |
当前日期区间没有回收批次
账单
净额:{{ billNetText }}(收入 {{ billIncomeText }} / 支出 {{ billExpenseText }})
| 类型 | 方向 | 金额 | 时间 | 关联单号 | 说明 |
|---|---|---|---|---|---|
| {{ b.typeName }} | {{ b.direction === 'in' ? '收入' : '支出' }} | {{ b.amountText }} | {{ timeText(b.at) }} | {{ b.ref || '-' }} | {{ b.memo || '-' }} |
暂无账单数据
店铺统计
说明:正式订单按当前商家归属到主店铺,其余为待接入平台店铺。
| 店铺名称 | 平台 | 订单数 | 销售额(元) | 待发货 |
|---|---|---|---|---|
| {{ s.name }} | {{ s.platform }} | {{ s.orders }} | {{ s.sales }} | {{ s.pending }} |
仓库统计
说明:当前入库与待发按主仓统计,多仓数据待接入仓库作业流水后拆分。
| 仓库名称 | SKU 数 | 今日入库 | 今日出库 | 待发订单 |
|---|---|---|---|---|
| {{ w.name }} | {{ w.sku }} | {{ w.inbound }} | {{ w.outbound }} | {{ w.pending }} |
报表中心
选数据集 → 勾维度与指标 → 查询。金额自动换算成元,底下带合计行,可导出 CSV。
只能查当前角色有权限的数据集。
维度
指标
筛选
{{ reportNote }}
趋势:{{ reportTrendChart.metricLabel }}
{{ reportTrendChart.pointCount }} 个时间点 · 当前维度「{{ reportTrendChart.dateLabel }}」
选择带「时间」标记的维度后,会在这里显示趋势图。
| {{ c.label }} |
|---|
| {{ formatReportCell(row[c.key], c) }} |
| 合计 {{ formatReportCell(reportTotals[c.key], c) }} |
这个条件下没有数据(合计也是 0)。
还没查询,先选好维度与指标再点「查询」。
明细:{{ reportDetailTitle }}
{{ reportDetailSummary }}
| {{ c.label }} |
|---|
| {{ formatReportCell(row[c.key], { kind: (c.kind === 'money' || c.kind === 'qty') ? 'metric' : 'dimension', metricKind: c.kind }) }} |
这个格子没有明细行。
数据大屏
每 5 秒更新 · 统计口径:今日 / 近 7 日 更新时间:{{ screenTime }}
{{ todayOrders.length }}
今日订单
{{ todaySales }}
今日店铺销售(元)
{{ dashboard ? dashboard.pendingShipment : 0 }}
今日待发
0.00%
垃圾书占比
近 7 日订单趋势
今日订单动态
| 订单号 | 书名 | 金额(元) | 状态 |
|---|---|---|---|
| {{ o.orderNo }} | {{ o.title }} | ¥{{ (o.priceCents / 100).toFixed(2) }} | {{ orderStatusText(o.status) }} |
今日暂无订单
| 分类 | 平台数量 | 书商数量 | 总数 |
|---|---|---|---|
| {{ s.name }} | {{ s.platformCount }} | {{ s.merchantCount }} | {{ s.totalCount }} |
{{ (dashboard && dashboard.sellableSku) || 0 }}
我的在售商品
{{ myOrders.length }}
我的订单数
{{ (myPaidCents / 100).toFixed(2) }}
我的已支付金额(元)
{{ (platformPaidCents / 100).toFixed(2) }}
平台已支付金额(元)
平台店铺
| 店铺 | 平台 | 店铺 ID | 状态 | 关联仓库 | 授权时间 | 备注 | 操作 |
|---|---|---|---|---|---|---|---|
| {{ s.name }} | {{ shopPlatformText(s.platform) }} | {{ s.shopNo || '-' }} | {{ s.status === 'active' ? '在用' : '已停用' }} | {{ s.warehouseCount }} | {{ s.authorizedAt || '-' }} | {{ s.remark || '-' }} |
还没有店铺,先添加一个
「{{ activeShop.name }}」关联的仓库
| 仓库 | 自动发布 | 关联时间 | 操作 |
|---|---|---|---|
| {{ l.warehouseName || ('仓库 #' + l.warehouseId) }} | {{ l.autoPublish ? '是' : '否' }} | {{ l.createdAt }} |
这个店铺还没有关联仓库
「{{ publishShop.name }}」按仓库上架({{ shopPlatformText(publishShop.platform) }})
勾选要上架的仓库,点「一键上架」把这些仓库里「在架且有余量」的商品全部挂到这个店铺;关联时开了「自动发布」的仓库默认已勾选。
| 选择 | 仓库 | 库位数 | 在架 ISBN | 可售库存(册) | 自动发布 |
|---|---|---|---|---|---|
| {{ l.warehouseName }} | {{ l.locationCount }} | {{ l.skuCount }} | {{ l.stockCount }} | {{ l.autoPublish ? '是' : '否' }} |
这个店铺还没有关联仓库,先点上面的「关联仓库」
{{ publishResult.message }}
| 任务号 | ISBN | 书名 | 册数 |
|---|---|---|---|
| {{ t.no }} | {{ t.isbn }} | {{ t.title || '-' }} | {{ t.stock }} |
平台公告
商品发布支持数据包批量上传;库存同步已开启。
售前/售后咨询:15006322050(微信)
商品发布与同步
上传数据包支持 CSV:ISBN,价格(元),库存,货位,一行一本。
{{ taskCounts.total }}
任务总数
{{ taskCounts.running }}
进行中
{{ taskCounts.success }}
成功
{{ taskCounts.failed }}
失败
同步任务
| 时间 | 任务 | 状态 | 说明 |
|---|---|---|---|
| {{ t.time }} | {{ t.name }} | {{ t.status === 'running' ? '进行中' : t.status === 'success' ? '成功' : '失败' }} | {{ t.msg || '-' }} |
还没有发布任务
ERP 商品中心
| ISBN | 书名 | 作者 | 出版社 | 售价 | 回收价 | 操作 |
|---|---|---|---|---|---|---|
| {{ g.isbn }} | {{ g.title }} | {{ g.author || '-' }} | {{ g.publisher || '-' }} | {{ g.saleText || '-' }} | {{ g.recycleText || '-' }} |
搜索中...
输入 ISBN 或书名搜索 ERP 商品
{{ sup.name }}
{{ sup.assigned ? '已分店铺' : '可关联' }}
仓库列表
管理仓库状态、分销资格与库存规模。不可分销仓库不会参与系统自动派单。
{{ warehouses.length }} 全部仓库
{{ warehouseSummary.active }} 启用
{{ warehouseSummary.distributable }} 可分销
{{ warehouseSummary.stock.toLocaleString('zh-CN') }} 可售库存
| 仓库 | 状态 | 库位 | 在架 ISBN | 可售库存 | 更新时间 | 操作 |
|---|---|---|---|---|---|---|
|
{{ w.name }}
{{ w.codePrefix || '无前缀' }}
{{ w.region || '未设置区域' }}
|
{{ w.status }}
{{ w.distributionStatusText || (w.distributable !== false ? '可分销' : '不可分销') }}
|
{{ Number(w.locationCount || 0).toLocaleString('zh-CN') }} | {{ Number(w.skuCount || 0).toLocaleString('zh-CN') }} | {{ Number(w.stockCount || 0).toLocaleString('zh-CN') }} | {{ w.updatedAt ? timeText(w.updatedAt) : '-' }} |
|
| {{ warehouses.length ? '没有匹配的仓库,试试其他关键词。' : '还没有仓库,先点「新建仓库」。' }} | ||||||
库位码规范为「前缀-货架号」(如 ZC-A01)。前缀让库位码在店铺内不重复;按仓库上架、派单和拣货都依赖这层归属。
库存列表
当前仓库库存按商品维度展示,库存数量实时来自商家商品库。
| ISBN | 书名 | 书况 | 价格(元) | 库存 | 货位 | 状态 |
|---|---|---|---|---|---|---|
| {{ l.isbn }} | {{ l.title }} | {{ l.conditionCode }} | ¥{{ (l.priceCents / 100).toFixed(2) }} | {{ l.stockQuantity }} | {{ l.location || '-' }} | {{ l.status }} |
还没有库存商品
第 {{ productQuery.page }} / {{ productPageCount }} 页,共 {{ productPageTotal }} 行
实拍图入库
电子面单开通申请
真实面单下单需要开放平台资质;提交后由平台审核开通| 承运商 | 网点 | 联系人 | 说明 | 状态 | 平台审核 | 提交时间 |
|---|---|---|---|---|---|---|
| {{ w.carrier }} | {{ w.branch || '-' }} | {{ w.contact || '-' }} {{ w.phone || '' }} |
{{ w.remark || '-' }} | {{ w.statusText }} |
{{ w.reviewedBy }} · {{ timeText(w.reviewedAt) }}
备注:{{ w.reviewRemark }}
-
|
{{ timeText(w.createdAt) }} |
还没有提交过面单开通申请
货品档案审核
{{ auditSummary.total }}
审核记录
{{ auditCount('pending') }}
待审核
{{ auditCount('approved') }}
已通过
{{ auditCount('rejected') }}
已驳回
这里和「企业 → 档案审核」是同一份审核队列(真接口),本页只列待审的;通过后按提交信息自动建档,驳回只记原因、不写档案。
{{ a.title || a.isbn }} {{ a.isbn }}
提交人:{{ a.submittedBy || '-' }} 提交时间:{{ a.createdAt || '-' }} {{ a.reason || '' }}
暂无待审核档案(点右上角刷新;全部记录在「企业 → 档案审核」)
条码打印
{{ b }}
{{ hotMeta.title }}
{{ hotMeta.desc }}
已对接
接口:
/api/merchants/:id/hot-items?type={{ hotMeta.type }}
共 {{ hotTotal }} 条,已显示 {{ hotItems.length }} 条
{{ s.label }}
{{ (item.title || item.isbn || '书').slice(0, 1) }}
{{ item.title || '(书目未补全)' }}
批销价 {{ money(item.priceCents) }}
首件价 {{ item.firstPriceCents ? money(item.firstPriceCents) : '—' }}
近7天销量 {{ item.weekSales === null ? '—' : item.weekSales }}
月销量 {{ item.monthSales === null ? '—' : item.monthSales }}
{{ item.warehouse }}{{ item.location ? ' · ' + item.location : '' }} · 库存 {{ item.stock }}
{{ hotLoading ? '正在加载…' : '没有符合条件的单品。换个条件或先去「货品档案」补全书目。' }}
{{ moduleMeta.title }}
{{ moduleMeta.desc }}
{{ moduleNotes[activeTab] }}
已对接
待对接后端
接口:
{{ moduleMeta.endpoint }}
共 {{ moduleRows.length }} 条
{{ moduleMeta.readonlyNote || '(只读视图)' }}
小程序渠道
接收小程序订单
开启后,本商家在有效仓库库位中、状态为在售且库存大于 0 的商品会进入小程序统一可售查询,并允许小程序下单。关闭后商品不再出现在小程序可售范围。
| {{ c.label }} | 操作 |
|---|---|
| {{ row[c.k] }} | |
|
已对接接口,暂无{{ moduleMeta.unit }}记录。
后端接口就绪后,这里展示{{ moduleMeta.unit }}列表。
|