这是一个基于uni-app框架开发的企业级PDA(手持终端)制造执行系统,专为工厂仓库管理和质量检验场景设计。系统通过深度集成PDA硬件能力,实现了条码扫描、蓝牙打印、实时数据同步等核心功能,为制造业提供了完整的数字化作业解决方案。
├── 前端框架: uni-app (Vue.js 2.x)
├── 状态管理: Vuex + 本地存储双重机制
├── 硬件集成: Plus.js + Android原生能力
├── 网络通信: 双重HTTP封装(内部API + ERP集成)
├── 数据持久化: uni.storage + 消息中心追踪
├── 打印系统: CPCL指令集 + 蓝牙通信
└── 权限管理: 渐进式权限请求 + 角色控制
// 基于Android BroadcastReceiver实现硬件扫码
// 支持东大、优博讯等主流PDA厂商
Intent: com.android.server.scannerservice.broadcast
Data Key: scannerdata
防重复机制: 150ms防抖算法
// 内部MES API
$post() → this.$store.state.serverInfo.serverAPI + endpoint
// 外部ERP API
$sendPostRequest() → 直接ERP服务器调用
// 消息中心追踪
saveMessage() → 记录操作尝试
updateMessage() → 更新执行状态
// CPCL指令集支持
PAGE-WIDTH 640 → 640点宽度页面
B QR → 二维码生成指令
BOX/LINE → 图形绘制指令
// 分包传输算法(20字节/包)
// Android 11+ 权限兼容
QC/
├── LLJ/ (来料检验) - 最复杂业务流程
│ ├── 供应商来料检验
│ ├── 急料绿色通道
│ ├── 委外检验流程
│ ├── 检验员任务分配
│ └── 实验室送检集成
├── SJ/ (首检) - 生产过程首检
├── RKJ/ (入库检验) - 最终质量把关
└── XJ/ (巡检) - 定期质量巡检
// 通用状态流转
待分配 → 已分配 → 检验中 → 已完成
// 质量状态
合格 ↔ 不合格 ↔ 待处理
// 权限控制
IQCJL角色 → 检验员分配权限
普通用户 → 检验执行权限
// 虽然Warehouse目录物理不存在,但功能通过以下方式实现:
1. QC/RKJ模块 → 入库检验流程
2. Allocation模块 → 调拨入库/出库
3. BarcodePrint模块 → 条码标签打印
4. 分散在各业务模块中的仓库操作
// 标准仓库作业流程
PDA操作 → 本地验证 → MES系统 → ERP推送 → 状态反馈
// 异常处理流程
操作失败 → 消息中心记录 → 人工干预 → 重试机制
// Android广播机制
mainActivity.registerReceiver(broadcastReceiver, intentFilter)
// 支持主动扫描触发
intent.setAction("com.scan.onStartScan")
// 防重复扫描算法
repeatFlag + 150ms setTimeout
// 蓝牙连接建立
设备搜索 → 服务发现 → 特征值获取 → 数据传输
// CPCL指令生成
模板解析 → 指令生成 → 分包传输 → 状态确认
// 权限管理
Android < 11: BLUETOOTH + BLUETOOTH_ADMIN
Android >= 11: BLUETOOTH_SCAN + BLUETOOTH_CONNECT + BLUETOOTH_ADVERTISE
// 多模板支持
printTemplate() → 标准物料标签 (二维码 + 基本信息)
printTemplate2() → 包装标签 (条码 + 包装信息)
printTemplate3() → 扩展标签 (自定义字段)
// 自适应布局
长文本分行算法 → 16字符/行,最多4行
图片二值化处理 → 打印优化
// 第一层:Vuex全局状态
store.state.serverInfo → 服务器配置管理
store.mutations.updateServerAPI → 动态服务器切换
// 第二层:本地持久化
uni.setStorageSync → 用户信息持久化
uni.getStorageSync → 应用启动恢复
// 第三层:组件状态
页面级状态 → 表单数据、列表状态
// 全局权限检查
globalMixin.checkUserAuth() → 自动登录检查
// 角色权限控制
$loginInfo.account → 用户身份标识
IQCJL角色 → 高级权限功能
// 数据隔离
createUser参数 → 用户数据隔离
// 完整的业务操作追踪
saveMessage() → 记录操作尝试
updateMessage() → 更新执行状态
// 异常处理机制
ERP推送失败 → 消息中心记录 → 人工处理 → 重试机制
// 审计追踪
所有关键操作 → 完整日志记录 → 问题溯源
// 消息检查机制
3分钟间隔 → 自动检查待处理消息
TabBar红点 → 视觉提示
// 消息分类
A-审核、B-反审核、C-推送ERP等
# 主要开发工具
HBuilderX IDE → 官方推荐,集成度最高
# 备选方案
uni-app CLI → 命令行开发
# 调试工具
Chrome DevTools → H5端调试
真机调试 → App端测试
# 权限配置检查
manifest.json → 确认所需权限
# 硬件功能测试
扫码功能 → 使用实际PDA设备
打印功能 → 连接实际打印机
# 网络环境测试
内网环境 → ERP系统连接
外网环境 → 云端部署测试
// 多环境支持
测试环境: http://192.168.1.46:10055/api
正式环境: http://192.168.1.46:10054/api
本地调试: http://localhost:5184/api
// 动态切换机制
store.mutations.updateServerAPI → 运行时切换
// 列表性能优化
分页加载 → 减少初始加载时间
图片懒加载 → 降低内存占用
// 网络优化
请求合并 → 减少网络请求次数
缓存策略 → 提升响应速度
┌─────────────────────────────────────────────────────────────┐
│ PDA设备层 │
├─────────────────────────────────────────────────────────────┤
│ 条码扫描器 │ 蓝牙打印机 │ 摄像头 │ 网络模块 │ 存储模块 │
├─────────────────────────────────────────────────────────────┤
│ 硬件抽象层 │
├─────────────────────────────────────────────────────────────┤
│ Plus.js │ Android原生 │ uni-app框架 │ Vue.js引擎 │
├─────────────────────────────────────────────────────────────┤
│ 应用业务层 │
├─────────────────────────────────────────────────────────────┤
│ QC质检 │ 仓库管理 │ 调拨管理 │ 条码打印 │ 基础功能 │
├─────────────────────────────────────────────────────────────┤
│ 数据服务层 │
├─────────────────────────────────────────────────────────────┤
│ Vuex状态管理 │ 本地存储 │ HTTP请求 │ 消息中心 │
├─────────────────────────────────────────────────────────────┤
│ 后端集成层 │
├─────────────────────────────────────────────────────────────┤
│ 内部MES系统 │ 外部ERP系统 │
└─────────────────────────────────────────────────────────────┘
这个PDA制造执行系统展现了企业级应用在工业环境下的专业性和实用性。通过深度的硬件集成、可靠的系统架构、完善的业务流程和优雅的代码设计,为制造业数字化转型提供了一个完整的解决方案。
系统的核心价值在于:
1. 硬件深度集成 - 真正实现了PDA设备的原生能力调用
2. 工业级可靠性 - 完善的异常处理和容错机制
3. 业务流程标准化 - 规范的质检和仓库管理流程
4. 技术架构先进性 - 现代化的前端技术栈和设计模式
这是一个值得学习和借鉴的企业级uni-app应用案例。