开单 · 拆单 · 采购 · 收货 · 备货 · 配送 · 签收 · 入账

从开单到入账
一条数据链走完全程

销售订单与集采开单双链路,一张订单按商品供货商自动拆给多家供应商; 客户、供货商、商品全部从 ERP 基础资料同步,只读不新增; 开单不指定采购价 —— 价格在送货时确认,核验、拍照、补录三条路都能录; 配送单不用人守着电脑点打印:司机一保存订单,办公室那台针式打印机自己把三联单做出来 —— 开单后约 10 秒出纸。

7 步全流程状态机 1 : N 按供货商拆单 送货时 确认采购单价 5 个商品别名 扫码 一码到底 · 拍照收货 远程 自动出三联单 3 端协同(工作台 / 司机 / 业务)
为什么需要它

生鲜批发的三件难事,交给状态机与同步机制

单据散在微信群、采购要分头找供货商、客户商品两头维护 —— 这是分销业务最耗人的三件事。

单据进度靠人记

开单、拆单、采购、收货、备货、配送、签收、入账 —— 8 个环节都由系统串起来,订单状态自动推进,谁都能看到卡在哪一环;有效明细没到齐,配送与签收会被闸门拦住。

采购要分头找供货商

一张订单里的商品分属不同供货商,系统按「商品 → 供货商」自动分组拆单,每个供货商一张采购入库单,收货、对账都能按供货商闭环。价格也不用提前问遍:开单不指定采购价,送货时按送货单逐行确认。

主数据两头维护

客户、供货商、商品都由 ERP 同步过来,本系统只读、不新增不删除,从根上避免两边各维护一份档案而分叉。

核心能力

九项能力,覆盖一张订单的完整生命周期

双链路开单

销售订单面向单个客户开单;集采开单一次收一整批货,再按客户拆成多张销售订单。两条链路共用同一套收货、备货、配送、签收与入账动作。

按商品供货商拆单(1 : N)

拆单即按商品的采购供货商分组:一单多供、一家一张采购单;同一家供货商的商品自动合到一张单里,直接对应 ERP 采购入库单。分组完成后把这家供货商的采购明细一键分享出去(链接 / 二维码 / 订单图片),到货前先对齐品项与数量。

ERP 基础资料同步

客户、供货商、商品全部来自 ERP;可按关键字检索、分页浏览、一键同步。开单时的客户一律从同步结果里下拉选择,不会写出 ERP 里不存在的客户。

商品 5 个别名

同一商品在不同客户、不同单据上有不同叫法,一个商品可维护 5 个别名;开单与拍照识别时,别名会自动归位到主品,库存与财务口径始终统一。

拍照开单 + 语音录入

拍一张客户单据的照片,识别出客户、商品、数量与备注并自动生成订单明细;开单界面的手机号、地址、备注等字段支持语音录入。手机上「拍照 / 从相册选图」两条路都通,管理后台还能直接把图片拖进开单卡片。

一码到底:扫码定位单据

销售单、集采单、收货单都带二维码,手机扫一下就打开对应单据 —— 系统自动认单据类型、按当前岗位的页签权限决定落到哪个界面:库管扫销售单直达备货页并高亮那一单,司机和文员扫同一张看到的是订单详情。没有权限的岗位会得到明确提示,而不是一个打不开的空白页。

远程自动打印三联单

司机保存订单即自动入打印队列,办公室电脑上的打印代理定时来取,按模板排成 241×140mm 整页、直接驱动针式打印机出三联复写单 —— 不用人守着点打印,服务器也不开任何入站端口。模板可以复制一份再改,改完预览满意才启用。

全流程追溯与 ERP 对账

从订单往下可以一路追到收货单、采购入库单、销售出库单与财务单号;入账结果会返写回原单,文员对账时一眼看到单号对应关系。

采购单价:送货时确认

开单只定品项与数量,不指定采购价 —— 价格是送货时才定的。库管核验到货时逐行录价(留空不强制);拍送货单能识别出单价,带出来还能手工改;漏掉的单价文员在入账页补录,入账不因缺价被拦(按商品报价兜底)。

业务流程

两条链路,同样的八步

左边是散单(单个客户开单),右边是集采(整批收货后按客户拆单)。两条链路的状态机完全一致,只是起点与拆单方向不同。

收货闸门:订单的有效明细(排除已取消项)必须全部标记到货,才允许「开始配送」与「确认签收」;未核验到货的收货单不会进入采购入账队列。
采购单价口径:开单不指定采购价 —— 价格是送货时确认的。库管核验时逐行录价(留空不强制)、拍照识别的单价可手工改;漏掉的由文员在入账页补录。缺价不拦入账,按商品报价兜底写入。
现场作业

一张码走全程:现场的人不用记单号

仓库和路上没人对着屏幕翻列表。所有单据都带一枚二维码,扫一下就打开对应单据 —— 系统自动认出这是什么单、你是哪个岗位,直接落到你要用的那个界面;拍一张供货商的送货单,系统自己找到那张还没收完的收货单等你核对。

扫码键就在手边上

手机端右下角常驻一枚「扫码」悬浮键,单手持机拇指就能按到,顶栏也有同样的入口。实时取景(https 下)或「拍照识别 / 从相册选图」都能读码,读出来自动打开那张单据。

自动认单据类型

本系统的码直接带类型(#doc= 深链);只有单号的码(SO- / SH- / JC- 开头)也能按前缀自动判类型、去库里找到这张单。认得出的直接打开,认不出的原样摆出来供复制 —— 绝不乱跳。

谁扫开什么,按岗位落点

同一张码,不同岗位落到不同的界面:库管扫销售单直接进备货页并高亮那一单,司机和文员扫同一张看到的是订单详情。没有权限的岗位会得到明确提示。

拍送货单,自动找收货单

库管不用先翻到那家供货商:拍一张送货单,识别出的商品名按供货商聚合打分,认得出就直接进那张收货单的核对页,认不出才让人点一下是哪家的货。识别出的单价一并带出来,核对时可以逐行改;送货单原件照常留档,随时能调出来对价。

岗位端扫销售单扫集采单扫收货单拍供货商送货单
库管端备货页 · 定位到那一单集采批次详情收货单详情自动找收货单 → 核对收货
文员端订单详情集采批次详情收货单详情—
司机端订单详情集采批次详情收货单详情—
管理后台点单据详情里的「本单二维码」调出大图,另一台手机扫这张码就能打开同一张单据;深链同样按岗位路由
单据链路

本系统单号 ↔ ERP 单号,一对一还是一对多?

规则很简单:业务单据之间大多一对一;一对多集中在写入 ERP 那一步——集采链路的销售出库单(按客户逐单写入)与采购入库单(按供货商拆单)都是一对多。

销售订单链路 销售单号 SO-YYYYMMDD-序号 收货单号 拆单即建,按客户汇总 ERP 采购入库单 ① 供货商 A 的商品 ERP 采购入库单 ② 供货商 B 的商品 ERP 销售出库单 签收后逐单写入 1 : 1 1 : N 1 : 1(销售单直接对应一张销售出库单) 采购 · 分享给供货商 集采开单链路 集采单号 JC-YYYYMMDD-序号 销售单号 ① 客户 A 销售单号 ② 客户 B 收货单号 整批一单(采购侧) ERP 销售出库单 签收后逐单写入 ERP 采购入库单 每张供货商各一张 财务单号返写 回写原单可追溯 1 : N(按客户拆单) 1 : 1(整批收货) 各 1 : 1 集采单号 → ERP 销售出库单 = 1 : N 1 : N(按供货商拆单) 集采链路在拆单后按供货商采购:一家供货商一份采购明细,分享出去后整批商品只做一次收货(销售单按客户拆分);入账时按收货单里各供货商的明细,分别生成采购入库单。 集采单号与 ERP 单号都是一对多:销售侧按客户拆成 N 张销售单号、每张各写一张销售出库单;采购侧经整批收货单按供货商分别生成采购入库单。
链路单据关系对应关系说明
销售订单销售单号 → 收货单号一对一订单拆单时即建立收货单,明细与订单一致
销售订单收货单号 → ERP 采购入库单号一对多按商品的采购供货商拆单,从多家供货商分别采购
销售订单销售单号 → ERP 销售出库单号一对一客户签收后写入,一张订单对应一张出库单
集采订单集采单号 → 收货单号一对一整批收货只用一张收货单
集采订单收货单号 → ERP 采购入库单号一对多同样按商品供货商拆单
集采订单集采单号 → 销售单号一对多按客户拆出多张销售订单,共用同一张收货单
集采订单集采生成的销售单号 → ERP 销售出库单号一对一拆出的每张销售订单各自写入一张出库单
集采订单集采单号 → ERP 销售出库单号一对多销售侧逐单写入的结果:一张集采单对应多张出库单
商品主数据

一个商品,5 个别名,一位主供货商

客户嘴里的「五花肉」「精品五花」「五花肉片」在系统里是同一个主品。别名归位后,库存、采购与财务口径才不会各说各话。

基础资料 → 商品(只读同步 + 本系统补充) ERP 同步 2,778 条
主品:精品五花肉 (编码 1030.12 · 单位 斤)
别名 1
五花肉
别名 2
精品五花
别名 3
五花肉片
别名 4
—
别名 5
—
供货商类型报价
李俊亮 主供货商 默认采购来源 ¥ 18.60 / 斤
鑫达冷冻 备选 主供货商缺货时启用 ¥ 19.20 / 斤
商品参考价(ERP) 未设报价时的兜底 ¥ 18.00 / 斤

5 个别名,随手就能维护

商品列表里 5 个别名直接内联编辑,改完自动保存;别名只存在本系统,不回写 ERP,不会污染客户的主数据。

主供货商 + 备选 + 报价

ERP 的商品档案里没有供货商关系,所以由本系统补充:主供货商决定拆单归属,备选用于缺货替补;报价是采购金额的参考与缺价兜底 —— 真正的采购单价在送货时按送货单确认(核验 / 拍照 / 入账前补录),没填的自动回落这里。

只读、可检索、可分页

客户 / 供货商 / 商品三块只做查询、同步与分页浏览,不提供增删改;还能一键筛出「还没设采购供货商」的商品,把主数据补齐这件事变成一张待办清单。

拍照开单

拍一张单据照片,明细自己长出来

司机在客户现场、业务员在门店,拍下客户手写或打印的进货单,系统识别客户、商品、数量与备注,匹配主品与别名后生成订单明细。

1

识别:把照片变成结构化明细

识别客户名与每一行的商品名、数量、单位、备注;客户名会自动对上 ERP 同步的客户,陌生的名字做临时候选兜底,不阻断开单。

2

匹配:先主品,后 5 个别名

按名称相似度匹配主品,再逐个比对商品的 5 个别名;命中别名时,明细记别名、商品仍挂主品,库存与财务口径不受影响。

3

兜底:未匹配自动预填检索词

没匹配上的行,系统取其名称的最后几个汉字(如「精品白玉菇」→「白玉菇」)填进该行搜索框,下拉直接是筛好的候选商品,选中即归位。

4

语音:能说就不用打字

商品搜索框、客户名、备注、电话、地址等字段都带麦克风按钮,长按说完自动追加;手机端需在 https 或本机环境下授权麦克风。

新 · 远程打印

司机一保存订单,办公室那台针式打印机自己出三联单

以前司机在群里喊一句「单子帮我打一下」,办公室的人再翻订单、点打印、跑过去撕纸。现在司机保存订单的那一刻,单子就自动排进打印队列,装在办公室电脑上的打印代理每 10 秒来取一次:服务端把整张单据排好版(241×140mm 整页),代理只负责转成 PDF 交给打印机 —— 开单后约 10 秒出纸,三联复写,撕下来就能带走。

第 1 步

开单保存即入队

司机点「保存」的那一刻订单就排进打印队列,不用等配送、更不用谁去点。同一张单只排一次,重打要人手动点,不会重复出纸。

第 2 步

办公室电脑来取

代理每 10 秒向服务器要一次待打印的单,带访问密钥认身份。是它主动来拿,所以服务器不用开任何入站端口、也不需要公网 IP。

第 3 步

服务端按模板排版

单头、明细、合计(含大写)、签字栏由服务器渲染成 241×140mm 整页;行数超一页自动分页,每页补空行撑满,末页才出合计与签字。

第 4 步

出纸并回写结果

代理转成 PDF 交针式打印机,打完把「已打印 / 失败」连原因一起回写。失败的单在看板上标红,可以单张重打。

办公室电脑关机、断网也不会丢单:队列存在服务器上,代理重新连上会把没打的单一起补出来。手机 App 与工作台都不用改,打印是后台的事。
三联复写 · 第一联 存根
送 货 单
华兴贸易有限公司 · 客户联
客户:永辉超市(城南店) 单号:SO-20261017-0118 地址:城南大道 128 号 B1 收货口 日期:2026-10-17 电话:138****6612 司机:张伟
序品名规格单位数量单价金额
1精品五花肉散装斤4018.60744.00
2去骨牛腩2kg/袋袋692.00552.00
3冻鸡中翅1kg/袋袋1229.50354.00
4——————
5——————
合计(大写):壹仟陆佰伍拾元整 收货人司机
第 1 / 1 页

版式由模板决定:抬头、栏宽、明细行数、签字栏都在系统设置里改,改完可以先预览(不落库)再启用。行数不够一页时自动补空行,超一页自动分页并在页脚标「承上页」。

系统模板保留一份,复制了再改

内置那份「系统默认 · 三联送货单」不可删、可改内容但不能换 id,永远能回退;想大改就复制一份副本,副本可改名、改纸宽纸高、改正文。列表里改的是哪一份、当前启用的是哪一份,一眼看清。

模板就是一张 HTML,规则写明白

一页内容 + 顶部一行 <!--rows:17--> 声明每页几行;{{#last}} 里的合计与签字只在末页出现,{{^last}} 里的本页小计留在中间页。改坏了预览一眼就能看出来。

出纸情况看得见

看板上有待打印、今日已打、失败三档,还能按司机汇总今天出了几张。每张单的状态、重打次数、失败原因都留着,出问题不用猜是网络、模板还是打印机。

App 下载

三个岗位 App,扫码装到手机上

司机在外面跑,文员和库管在店里,手上都不方便输网址。我们把三个岗位的网页各自封装成 Android 安装包:桌面有图标、打开直达本岗位工作台、拍照走系统相机,App 内就能改服务器地址;右下角常驻「扫码」键,扫单据二维码直接打开那张单。三个 App 各认各的岗位 —— 装哪个就只能登哪个岗位的账号,手递手给员工不会开错端。

Android 版司机端

  • 一次安装,点图标即用 —— 桌面快捷方式直接进入本店司机工作台,不用再输 IP 地址。
  • 拍照开单 —— 点「拍照」直接调系统相机拍摄客户单据,也能从相册选图,识别结果自动填进订单明细。
  • 扫码看单据 —— 右下角「扫码」键扫销售单 / 收货单上的二维码,直接打开那张单;扫到只有单号的码也能自动认出来。
  • 配送队列随身带 —— 待配送、配送中、已完成的单子按状态分组,客户地址与电话一点即拨。
  • 地址可改,装着不白装 —— 换服务器、换门店时在 App 内长按返回键出设置菜单改地址,不用卸载重装。
  • 与网页端同一套数据 —— App 只是司机端页面的外壳,订单状态、收货核验、签收结果和网页端完全同步。

安装方式:手机浏览器扫码下载 APK → 点开安装 → 系统提示「未知来源」时选择允许即可(内部使用的自签名安装包,不在应用商店上架)。 装好后第一次打开默认连到店内服务器,如需更换地址,在 App 里长按返回键打开设置菜单。

用手机扫这个码下载
电脑上直接点二维码也能下载
wb-driver-1.7.apk
版本 1.7 · 0.1 MB · 需要 Android 7.0 及以上

Android 版文员端

  • 开单就在手机上 —— 销售订单 / 集采开单:客户下拉检索、商品带别名识别,拍照识表自动填明细。
  • 订单状态跟进 —— 待拆单、待收货、待备货、配送中一眼看完,改单与取消不用再回电脑。
  • 一码到底 —— 扫销售单 / 集采单 / 收货单上的二维码直接打开对应单据;出库单右上角那枚码就是给现场互扫用的。
  • 入账到财务系统 —— 签收完成的单子按队列写进 ERP,缺的采购单价入账前补录,财务单号返写回原单,随时追溯。
  • 只认文员账号 —— 司机 / 库管的账号登不进来,各岗位的 App 各管各的,权限不会串。

安装方式与司机端相同:扫码下载 APK → 允许「未知来源」→ 安装。 App 只是文员端页面的外壳,业务页面更新后无需重装;换服务器地址长按返回键。

用手机扫这个码下载
电脑上直接点二维码也能下载
wb-clerk-1.7.apk
版本 1.7 · 0.1 MB · 需要 Android 7.0 及以上

Android 版库管端

  • 收货核验在货架边 —— 按供货商逐家核验到货,标记未到、部分到货与取消明细;采购单价逐行可录可改(留空不强制),顺手就能记。
  • 扫码 + 拍照收货 —— 拍一张供货商送货单自动找到那张未收齐的收货单,识别的单价带出来还能改;扫销售单二维码直接落到备货页并高亮那一单。
  • 合单备货 —— 按订单合单、齐套检查,备齐自动转「待配送」,不用来回对单。
  • 到货闸门自动拦 —— 明细没到齐就发不了车,系统替你把关,不靠记性。
  • 只认库管账号 —— 司机 / 文员的账号登不进来,各岗位的 App 各管各的,权限不会串。

安装方式与司机端相同:扫码下载 APK → 允许「未知来源」→ 安装。 App 只是库管端页面的外壳,业务页面更新后无需重装;换服务器地址长按返回键。

用手机扫这个码下载
电脑上直接点二维码也能下载
wb-keeper-1.7.apk
版本 1.7 · 0.1 MB · 需要 Android 7.0 及以上
下载中心

下载中心:打印代理装一台,手机 App 扫码装

打印代理只需要在办公室那台连着针式打印机的电脑上装一台,Mac 与 Windows 各有安装包;司机、文员、库管的手机 App 在上面的「App 下载」里扫码安装。所有安装包都从这台服务器下载,不经过应用商店,也不依赖外网。
下面是另一个产品「店面语音开单」的 Android App —— 对着手机说话直接开单、连蓝牙小票机出票,账号与数据都独立,需在运营平台单独开通:点这里注册,自动送 7 天试用,不用付款也不用审核。

macOS 版 · 远程打印

推荐 .dmg

给 Mac 用,Apple 芯片与 Intel 都可以。内嵌 Node 运行时,拖进「应用程序」双击即用,不用另装环境。

远程打印.dmg v1.8.0 · 49.3 MB

dmg 打不开?下载 zip 版(42.4 MB),解压后直接双击「远程打印.app」。

  1. 1双击 dmg,把「远程打印」拖进「应用程序」。
  2. 2第一次打开若提示「无法验证开发者」:右键 → 打开 → 再点一次打开,之后就不问了(未签名应用的一次性操作)。
  3. 3浏览器打开面板 → 右上角「设置」→ 填服务器地址与访问密钥 → 点「检测」选中打印机 → 保存。

配置与数据存在 ~/Library/Application Support/远程打印/,程序本体可以随时覆盖升级,不用重新配置。

Windows 版 · 远程打印

64 位 Win10 / 11

给办公室那台 Windows 电脑用。内嵌 Node 和启动脚本,解压后双击「安装.bat」,不需要装 Node.js。

远程打印-Windows.zip v1.8.0 · 37.6 MB

包里带 安装.bat / 启动.bat / 停止.bat / 卸载.bat 和图文说明,装完桌面会有快捷方式。

  1. 1把 zip 解压到一个固定位置(别在压缩包里直接双击运行)。
  2. 2双击「安装.bat」:复制到用户目录、建桌面快捷方式、可选开机自启、自动下载 SumatraPDF。
  3. 3双击桌面快捷方式启动,面板里填服务器地址与访问密钥、选打印机,保存即生效。

配置与数据存在 %LOCALAPPDATA%\远程打印\;渲染 PDF 用系统自带 Edge,不用另装浏览器内核。卸载走「卸载.bat」,会问要不要连数据一起删。

另一个产品 · 店面语音开单(语音开单 + 蓝牙小票机)

Android 版 · 店面语音开单

独立产品

给菜摊、档口用:点一下说话念一句「白菜三斤两块五」,自动拆成商品、数量、单价,确认后直连蓝牙小票机出票。账号、商品词库、小票模板都在手机上,和上面的生鲜批发配送不共用数据,需要在运营平台单独开通。

店面语音开单.apk 1.2.8 · 3.2 MB
  1. 1手机扫码(或点按钮)下载 APK,允许「未知来源」后安装,需要 Android 7.0 及以上。
  2. 2打开 App,用手机号 + 验证码注册/登录,新号自动送 7 天试用;摊位名会打在小票抬头。
  3. 3设置里配对蓝牙小票打印机(58mm),点一下麦克风说话、说完再点完成,就能开单出票。
  4. 4到期前在 App 里输卡密(vt-XXXX-XXXX)续费,或提交付款凭证由运营开通。

语音识别在服务端完成,手机不用填任何密钥;识别出来的品名会跟词库对一遍,对不上的当场改。词库、常用商品、小票版式都在 App 内的设置里维护。

用手机扫这个码下载
不知道该装哪个?打印代理只装在「办公室那台连着针式打印机的电脑」上,一台就够,其他电脑不用装。装完在设置里填的服务器地址,就是这台服务器的局域网地址(例:http://192.168.1.5/wb/),和手机连同一个 Wi-Fi 即可;具体地址与访问密钥在系统设置 → 远程打印里能直接复制。
角色与权限

四类角色,各管一段,状态看得见

司机开单与配送、文员开单与对账追溯、库管收货与配货、管理员全权。所有人都基于同一套订单状态协作,不需要互相打听进度。

司

司机

在客户现场就能开单,自己的货自己送

  • 开销售订单
  • 开集采订单(拍照集采)
  • 配送与客户签收
  • 查看自己的配送队列
文

文员

开单、跟单、对账,还是基础资料的维护者

  • 开销售订单
  • 开集采订单(拍照集采)
  • 订单状态跟进与全流程追溯
  • 入账前补录采购单价
  • 与 ERP 对账、核对入账结果
  • 维护基础资料(同步 ERP 档案、商品别名与供货商报价)
库

库管

按供货商收货,按订单配货

  • 按供货商收货与到货核验
  • 收货时确认采购单价(可不填)
  • 合单备货、齐套检查
  • 缺货标记与明细修正
  • 库存查询与商品检索
管

管理员

全部权限,主数据与系统设置的守门人

  • 全部业务动作(开单 / 收货 / 备货 / 配送 / 入账)
  • 基础资料与商品别名、供货商报价
  • ERP 连接、单据前缀、入账规则等系统设置
  • 用户与角色管理、订单作废

功能权限矩阵

功能司机文员库管管理员
开销售订单✓✓—✓
开集采订单(拍照集采)✓✓—✓
改单 / 明细修正✓—部分✓
订单状态跟进与全流程追溯✓✓✓✓
按供货商收货 / 到货核验——✓✓
收货时录 / 改采购单价(不强制)——✓✓
入账前补录采购单价—✓—✓
合单备货——✓✓
配送与签收✓——✓
入账到 ERP(出库 / 入库单)—✓—✓
与 ERP 对账、核对入账结果—✓—✓
基础资料 / 商品别名与供货商报价—✓—✓
系统设置 / 用户与角色———✓
订单作废———✓

说明:客户 / 供货商 / 商品为 ERP 同步的只读档案,不提供增删改,只能同步与查询;商品别名与供货商报价只存本系统、不回写 ERP,文员与管理员都可以维护。库管的「部分改单」指收货环节的到货数量、取消明细与采购单价;采购单价开单不指定、送货时确认,缺价由文员在入账前补录,不拦入账。

技术架构

三端一个后端,最终落到 ERP

前端是零外部依赖的单文件页面,打开即用;后端只做状态存取与 ERP 桥接,把单据真正写进财务系统。

前端 · 三端 个人工作台 桌面后台 · 全角色 司机端 App 移动 · 开单配送 业务端 App 移动 · 收货备货对账 后端 · 接口层 业务接口 · 状态机 · 整库同步(乐观锁) 订单 / 收货 / 备货 / 配送 / 签收 / 入账 的读写与校验 · 登录与角色鉴权 本地库(SQLite) 订单 / 收货 / 库存 / 主数据缓存 / 财务映射 多端同步同一个状态源,改完即见 ERP 桥接 基础资料同步 · 采购入库 / 销售出库 批量写入 · 单号回写可追溯 办公室一台电脑 · 主动来取 远程打印代理(Windows / macOS,装一台) 每 10 秒拉取待打队列(Bearer 密钥)→ 转 PDF → 针式打印机出三联单 → 回写结果 服务端不开入站端口、不需要公网 IP;断电重连后自动补打
前端形态单文件页面,无外部依赖与 CDN;桌面与手机浏览器直接打开,适合仓库、车上、门店等弱网环境
三端划分个人工作台承载全部功能与后台设置;司机端聚焦开单与配送;业务端聚焦收货、备货与对账
数据存储服务端 SQLite 统一存业务状态,多端读写同一份数据,带版本号避免互相覆盖
ERP 对接基础资料按需同步;单据通过数据库存储过程批量写入,写入结果与单号回写原单
远程打印拉取式:办公室电脑上的代理定时来取队列,服务端只输出排好版的整页;不开入站端口、不需要公网 IP,代理离线期间的订单会补打
安全与稳健角色鉴权(服务端校验角色可访问的端)、入账前自检、存储过程异常可直接在页面上自测排查;打印接口用 Bearer 密钥鉴权,单张单只出一次纸
常见问题

上线前后最常被问到的几件事

客户、供货商、商品都从 ERP 同步,本系统只读,不能新增或删除 —— 这样两边不会各维护一份档案。系统里额外补充两类信息:商品的 5 个别名、商品与供货商之间的报价关系,这两项只存本系统,不回写 ERP。
拆单时按商品的采购供货商自动分组:同一家供货商的商品合成一张采购单,不同供货商各出一张,落到 ERP 就是多张采购入库单。分组之后每家供货商各有一份采购明细,可以直接分享给对方(链接 / 二维码 / 订单图片)先对齐品项,收货也按供货商逐家核验,谁的货到了谁的账先走。
普通订单面对一个客户、走一次收货;集采是整批发货,只做一次收货,然后按客户拆成多张销售订单,每张销售订单再各自写入一张销售出库单。集采单与它的销售订单之间是一对多。
不能。有效明细(不含已取消项)必须全部标记为已到货,系统才放行「开始配送」与「确认签收」,并且会明确提示还差哪几项。未核验的收货单也不会进入采购入账队列。
不用。开单只定品项与数量 —— 采购价是送货时才确认的。库管收货核验时逐行录入或修改(留空不强制);拍送货单识别出的单价直接带出来,还能手工改。万一漏了,文员在入账页能看到「待确认单价」的提示并补录;一直没填的按商品报价兜底写入,入账不会被拦。
三端页面都适配手机,司机端与业务端就是为手机设计的。语音录入用浏览器原生能力,Chrome / Edge / Safari 可用;麦克风需要 https 或本机地址才被浏览器允许,局域网 IP 走 http 会被拒绝,此时按钮会给出中文提示,不影响手工输入。
能。入账成功后会 ERP 单号返写回原单,订单详情里可以直接看到对应的采购入库单号与销售出库单号;文员对账就是对着这些单号核。写入失败时页面会给出原因,并支持把待入账的候选单据重新推一次。
装在办公室任意一台连着针式打印机、平时开着的电脑上,Mac 或 Windows 都行,一台就够。它是主动去服务器要单,所以服务器不用开入站端口、不用公网 IP、也不用做端口映射;反过来外网也访问不到这台电脑。装好之后在「系统设置 → 远程打印」里把订单拉取地址、结果回写地址和访问密钥拷进代理的设置页,点保存就生效。
针式打印机(24 针,如 Epson LQ 系列)配三联复写纸,走系统打印队列即可,不需要另装打印控件。代理把整页渲染成 PDF 交给系统打印,页面按 241×140mm 排,正好对上三联单的纸张宽度;普通 A4 激光打印机也能打,只是没有复写效果。纸型与每页行数都在模板里改。
内置那份「系统默认 · 三联送货单」永远在:内容可以改,但不能删、也不能换 id,随时能改回来。想大改就复制一份副本,副本可改名、改纸宽纸高、改正文;改完先点「预览这一份」看效果(预览只渲染不落库),满意再保存启用。印出来的每页都带页码,多页时标「承上页」,不会散。

从第一张开单,到最后一次对账

开单、拆单、采购、收货、备货、配送、签收、入账 —— 八步都在同一个系统里留下痕迹,谁做了什么、货到了哪、钱对上了没有,翻一眼就知道。三联送货单也不用谁专门跑去打,司机保存订单,办公室那台打印机自己就走纸。

登录工作台 再看一遍业务流程 下载打印代理 角色与权限矩阵
双链路开单销售 + 集采
按供货商拆单1 : N
采购单价送货时确认
商品别名5 个 / 商品
远程打印拉取式 · 不开端口
协同角色4 类 · 3 端