一、前言:被 Excel 逼疯的厂二代
上个月回老家,被我爸拉去他的贴片厂帮忙。一进门就听见采购和仓管在吵架------三个人的 Excel 表格对不上,月底盘亏了两千多个电阻,查了一通宵没查出谁录错了。
这不是个例。很多中小型电子厂(10~50人)的物料管理现状是:
-
📎 采购一个表、仓库一个表、财务一个表,互不联通
-
📎 客户临时改单,BOM 全乱,靠老师傅拍脑袋算缺料
-
📎 去年电脑中毒,三年的进销存全没了,差点哭出来
-
📎 花几万块上 ERP,结果 80% 功能用不上,物料模块还难用得要死
我爸问我:"你不是搞程序的吗,能不能写个简单点的?"
我说行,但有个前提:不上云、不租服务器、数据必须存在本地。小工厂老板对"数据上云"有天然的恐惧------万一你公司倒闭了,我数据找谁要?
于是就有了这个工具。

百度网盘链接:
https://pan.baidu.com/s/1pjklbeCb59L1ulBprvzVHA?pwd=5tw7 提取码: 5tw7
二、技术选型:为什么选 Tauri,而不是 Electron?
一开始我考虑的是 Electron,毕竟成熟。但仔细一想,小工厂的电脑配置都很一般,Electron 打包出来动辄 100MB+,启动慢、内存占用高,pass。
最后选了 Tauri:
表格
| 维度 | Tauri | Electron |
|---|---|---|
| 包体积 | 5MB 左右 | 100MB+ |
| 内存占用 | 低(Rust 后端) | 高(完整 Chromium) |
| 前端技术栈 | HTML/JS/CSS,完全复用 | 同上 |
| 本地文件访问 | 通过 Rust 命令直接读写 | 需要 IPC 或 Node 层 |
| 数据安全 | 前端代码可加密,防提取 | 源码相对容易暴露 |
前端部分我直接用原生 HTML + SheetJS(xlsx 库),没有上 React/Vue------因为这是一个工具型应用,不是交互复杂的 SPA,原生 DOM 渲染表格反而更轻更快。
数据存储方案:本地 JSON 文件 + localStorage 缓存 。每次操作后自动 debounce 写入,同时保留一份 data.json 在应用目录,支持手动导出备份。
三、系统架构与核心功能
整个系统围绕电子制造业的实际流程设计,覆盖 8 个核心模块:
1. 物料主数据
支持 Excel 批量导入,自动识别表头。编码相同则更新覆盖,适合从旧系统迁移。
2. 产品管理 + BOM
一个产品可关联 N 种物料,自动计算 BOM 总成本。支持按产品筛选 BOM,也支持一键导出标准格式的 Excel。
3. 库存管理
入库、出库、手动调整,库存低于安全值自动标红预警。所有变动留痕,可追溯。

4. 生产计划
新建计划 → 自动扣减 BOM 物料库存 → 完成入库。状态流转:待开始 → 进行中 → 已完成。
5. 采购需求(MRP 轻量版)
根据进行中/待开始的生产计划,自动汇总物料需求,减去当前库存,给出建议采购量。这是厂里用得最爽的功能------以前采购员算 2 小时,现在点一下刷新就有了。

6. 采购订单
从需求计划一键生成采购单,支持审批流(待审批 → 已审批 → 已下单 → 已完成)。完成时自动入库。
7. 销售订单
跟踪客户订单、发货状态、开票、回款。小工厂最头疼的"钱货两清"问题,至少有个地方记着了。
8. 仪表盘
库存不足预警、待发货订单、进行中采购、待回款金额------老板早上打开电脑,一眼看完厂里状况。
四、几个技术实现细节
1. Excel 双向互通
用 SheetJS 做导入导出,所有模块都支持:
-
导入:按约定列顺序读取,第 1 行自动识别为表头跳过
-
导出 :直接生成
.xlsx文件下载,格式规范,可直接发给供应商或财务
2. 数据版本与冲突检测
因为是单机文件存储,我加了一个简单的 _version 字段。如果用户手动复制了 data.json 到另一台电脑,再导回来,版本号不匹配会提示冲突,避免覆盖。
3. Tauri 本地文件读写
通过 Rust 的 fs 命令直接操作应用目录下的 data.json,前端用 invoke 调用。这比浏览器里的 File System Access API 稳定得多,不受浏览器权限策略限制。
rust
// Rust 端简化示例
#[tauri::command]
fn write_data(content: String, app_handle: AppHandle) -> Result<(), String> {
let path = app_handle.path().app_data_dir().map_err(|e| e.to_string())?;
std::fs::write(path.join("data.json"), content).map_err(|e| e.to_string())
}
4. 前端加密
Tauri 支持 withGlobalTauri 和前端资源加密,打包后源码不会直接暴露在 resources 里,一定程度上防止白嫖提取。
五、实际运行效果
目前在我爸厂里已经跑了一个月,数据规模:
-
物料种类:400+
-
产品数量:60+
-
BOM 条目:3,000+
-
库存记录:400+
整个 data.json 大小约 1.8MB,localStorage 缓存毫无压力,打开速度秒开。
采购员现在每天第一件事是打开仪表盘看缺料,而不是打开三个 Excel 对账。
六、下载与试用
如果你也是小工厂、小作坊,或者你家里有个厂正在被 Excel 折磨,可以下载试用。
下载地址:
百度网盘链接:
https://pan.baidu.com/s/1pjklbeCb59L1ulBprvzVHA?pwd=5tw7 提取码: 5tw7
使用环境: Windows 10/11(Tauri 打包的
.exe,双击即用)
七、后续计划
目前还是单机版,下一步考虑:
局域网多机协作:一台电脑当主机,其他电脑通过 IP 连接,数据仍存本地
手机端看板:H5 页面,老板出差也能看库存和订单状态
标签打印:对接仓库的条码打印机,入库直接打标签
如果你也在做制造业相关的工具,或者对 Tauri 桌面应用开发感兴趣,欢迎评论区交流。