一、立项背景和目标
一家注塑、焊接工艺的制造工厂,原本靠纸质单据和口头传达管理生产:工单靠喊、报工靠记、
库存靠记忆,数据对不上、进度看不见。目标是让现场工人用手机扫一下就能完成报工,
让管理层随时看到真实进度,把「接单 → 排产 → 生产报工 → 入库 → 调拨 → 发货」
整条链子收进一个系统。
二、系统构成
· 微信小程序:现场操作端(扫码报工、排产、调拨、模具管理)
· 网页后台:管理决策端(账户、工单、看板、报表、车间大屏)
三、核心功能
1. 扫码报工(核心):每个工单生成二维码,工人扫码后只填「本次生产总数 + 次品数」,
系统自动计算「本次新增 = 本次总数 − 上次累计」和「合格数 = 新增 − 次品」,
合格数自动入库,并按 BOM 自动扣减物料。
2. 工单管理:待生产 → 已排产 → 生产中 → 已完成 状态流转,首次报工自动转生产中,
支持批量下单、批量排产、批量完结。
3. 库存库位化:仓库 → 区 → 档 → 位置 四级树形结构,支持按库位调拨,
待处理数量标记,所有入库/调拨/报损/盘点均可退回并留痕。
4. 调拨流程:发起 → 仓管唯一确认 → 总仓减/发货仓加,超 30 分钟未确认自动提醒并每 30 分钟重复。
5. 模具台账:位置、维修状态、上机下机、关联产品与设备。
6. 权限体系:厂长 / 车间主管 / 仓库管理员 / 工人 / 送货员 五角色,
模块级 + 操作级双层权限控制。
7. 车间大屏:实时产量、合格率、工单进度,兼容老旧电视浏览器。
四、业务流程路径
厂长建工单 → 主管排产并绑定机台 → 工人扫码报工(自动入库 + 扣料)
→ 主管或厂长手动完结 → 仓管发起并确认调拨 → 发货仓发货
一、整体架构与设计思路
· 后端:Node.js + Express,数据层用 Node 内置 SQLite(同步 API),
单文件数据库,WAL 模式 + 关键表索引优化,适应工厂没有专职运维的现实。
· 网页端:Vue3 + Element Plus + ECharts,构建产物由后端直接托管,只需部署一个服务。
· 现场端:原生微信小程序(不是 uni-app),换取更好的真机兼容性。
· 部署:Docker 部署在企业自有服务器(群晖 NAS),数据卷持久化,
数据留在厂内不上云,每日自动备份。
二、我负责的部分
独立完成全流程:需求梳理 → 功能设计 → 开发 → 测试 → 部署上线 → 迭代。
约 1 周上线核心闭环,之后按车间实际使用反馈持续迭代。
三、遇到的难点和解决
1. 报工数据口径容易出错:工人习惯照抄设备累计数,若按「本次填报数」累加会重复计算。
解决:改成「每次上报累计总值」,系统用「本次 − 上次」算出真实新增,并保留上一次总量字段。
2. 微信原生 button 文字垂直居中在真机上不可靠,用 flex 居中两次反馈仍未解决。
解决:弃用 flex,改用「行高 = 按钮高度」的物理居中方案,
并清理 7 个页面 10 处破坏居中的样式覆盖。
3. 车间大屏要显示在老旧电视上,浏览器版本低。
解决:大屏页独立开发,纯 ES5 语法、不依赖框架,按 1920×1080 设计稿等比缩放。
4. 部署到内网 NAS 时文件覆盖不生效。
解决:打包前统一更新所有文件的修改时间戳,确保解压时能覆盖旧文件。
5. 批量调拨接口报错:SQL 占位符数量与列数不匹配(22 个占位符对 21 列)。
解决:对齐列数,并补充接口层校验。