为小工厂量身打造:本地部署的物料管理系统带缺料计算

一、前言:被 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,双击即用)


七、后续计划

目前还是单机版,下一步考虑:

  1. 局域网多机协作:一台电脑当主机,其他电脑通过 IP 连接,数据仍存本地

  2. 手机端看板:H5 页面,老板出差也能看库存和订单状态

  3. 标签打印:对接仓库的条码打印机,入库直接打标签

如果你也在做制造业相关的工具,或者对 Tauri 桌面应用开发感兴趣,欢迎评论区交流。

相关推荐
__zRainy__1 小时前
解决pnpm v10+不自动构建
前端·pnpm·工程化
猫猫不是喵喵.2 小时前
Vue3 Props 属性
前端·javascript·vue.js
硬件工艺分享君2 小时前
基站射频PCB与核心网PCB有何区别?3大设计差异详解
科技·制造·pcb工艺·新能源
老白说数智化升级2 小时前
从一次改善到持续进化,AI如何沉淀制造现场的运营知识?
大数据·人工智能·制造
醉城夜风~3 小时前
CSS元素显示模式(display)
前端·css
AI大模型-小华4 小时前
Codex 三方充值快速入门指南
java·前端·数据库·chatgpt·ai编程·codex·chatgpt pro
做前端的娜娜子6 小时前
同一链接实现 PC Web 与移动 H5 自适应
前端·掘金·金石计划
小帅不太帅6 小时前
架构没变、规模没变,DeepSeek V4 Flash 正式版凭什么暴涨 47 分?
前端·aigc·deepseek