轻量ERP管理系统

一个基于 Node.js + Express + PostgreSQL 与 Vue 3 + Vite + TypeScript 的轻量级企业资源规划系统,覆盖商品、入库、出库、退货、库存与操作日志等核心业务场景。


轻量ERP管理系统

1. 项目背景与目标

1.1 项目背景

  • 中小企业数字化需求:中小企业在库存管理、进销存管理方面存在信息化程度低、手工记录易错、数据不实时等问题
  • 现有解决方案痛点
    • 大型 ERP 系统功能复杂、成本高昂、部署维护困难
    • 开源方案往往缺乏持续维护或文档不完善
    • 轻量级方案功能单一,难以满足实际业务需求

1.2 建设目标

  • 提供开箱即用的轻量级 ERP 解决方案
  • 支持商品管理、入库出库、库存跟踪等核心功能
  • 提供友好的 Web 界面和移动端支持
  • 支持本地化部署,数据完全可控
  • 具备良好的可扩展性和可维护性

2. 项目应用场景

2.1 库存管理场景

  • 商品入库验收、质检、上架全流程管理
  • 实时库存查询、库存预警、库存盘点
  • 多仓库管理、仓库调拨

2.2 进销存管理

  • 销售出库、领用出库、退货管理
  • 供应商管理、采购订单跟踪
  • 价格管理、成本核算

2.3 数据分析与决策

  • 库存周转率分析
  • 商品销售趋势分析
  • 异常出入库预警
  • 操作日志审计

2.4 适用对象

  • 小型制造企业库存管理
  • 零售门店进销存管理
  • 电商仓库管理
  • 办公用品管理

3. 核心功能概述

3.1 基础功能

  • 用户认证:支持用户登录、会话管理、角色权限控制
  • 商品管理:商品信息维护、分类管理、规格管理
  • 库存管理:实时库存查询、库存汇总、库存预警
  • 入库管理:入库单创建、扫码入库、入库记录查询
  • 出库管理:出库单创建、扫码出库、出库记录查询
  • 退货管理:退货单创建、退货审批、退货记录查询

3.2 高级功能

  • 序列号管理:支持商品序列号唯一性校验
  • 价格控制:支持低于成本价出库预警
  • 扫码功能:支持扫码枪快速出入库
  • 数据导出:支持 Excel 格式数据导出
  • 操作日志:完整记录用户操作行为

3.3 系统管理

  • 用户管理:用户增删改查、角色分配
  • 权限管理:基于角色的权限控制(RBAC)
  • 系统设置:系统参数配置、数据备份恢复
  • 日志查询:操作日志、异常日志查询

4. 主要技术栈

轻量ERP管理系统4.1 后端技术

  • 运行环境:Node.js >= 18
  • Web 框架:Express 5.x
  • 数据库:PostgreSQL 15+
  • 查询构建器:Knex.js 3.x
  • 认证方案:JWT + HttpOnly Cookie + 会话持久化
  • 日志系统:Winston 3.x(文件日志、数据库审计日志)
  • 密码加密:bcrypt + pbkdf2
  • API 文档:Swagger/OpenAPI 3.x

4.2 前端技术

  • 框架:Vue 3.5+
  • 构建工具:Vite 7.x
  • 语言:TypeScript 5.x
  • 路由:Vue Router 4.x
  • HTTP 客户端:Axios 1.x
  • 状态管理:Vue 3 Composition API
  • UI 设计:自定义组件(支持明暗主题切换)

4.3 部署与运维

  • 进程管理:PM2
  • 反向代理:Nginx
  • 容器化:Docker + Docker Compose
  • 数据库初始化:SQL 脚本自动初始化
  • 数据备份:自动化备份脚本

4.4 开发工具

  • 版本控制:Git
  • 代码规范:TypeScript
  • 包管理器:npm

5. 系统界面预览

5.1 登录页面

轻量ERP管理系统5.2 首页仪表盘

轻量ERP管理系统5.3 商品管理页面

轻量ERP管理系统5.4 库存管理页面

轻量ERP管理系统5.5 入库管理页面

轻量ERP管理系统


6. 项目使用指南

6.1 环境要求

开发环境

  • 操作系统:Windows 11 / Linux (Ubuntu 20.04+) / macOS
  • Node.js:>= 18.0.0
  • Docker:20.10+(用于 PostgreSQL 容器)
  • Docker Compose:2.0+
  • 内存:>= 4GB
  • 磁盘空间:>= 10GB

生产环境

  • 操作系统:Linux (Ubuntu 20.04+ 推荐)
  • Node.js:>= 18.0.0
  • PostgreSQL:15+
  • Nginx:1.18+ (作为反向代理)
  • PM2:最新版本 (进程管理)
  • 内存:>= 4GB
  • 磁盘空间:>= 20GB

6.2 启动步骤

方式一:Docker Compose 快速启动(推荐)

这是最简单的方式,适合快速体验和开发环境。

cd mini-erp

# 2. 启动 PostgreSQL 容器(首次会自动初始化数据库)
docker-compose up -d

# 3. 等待数据库初始化完成(约 5-10 秒)
# 可以通过以下命令检查容器状态
docker-compose ps

# 4. 安装后端依赖
cd backend
npm install

# 5. 启动后端服务
npm start

# 6. 安装前端依赖
cd ../frontend
npm install

# 7. 启动前端开发服务
npm run dev

数据库自动初始化说明:

  • PostgreSQL 容器首次启动时会自动执行 scripts/init-db.sql
  • 自动创建所有表结构(8个表)
  • 自动创建默认管理员账号(admin / admin123)
  • 自动导入示例数据(12个商品、10条入库、2条出库)
  • 后续启动不再执行初始化,数据会持久化保存

方式二:使用现有数据库

如果您已经有运行中的 PostgreSQL 数据库:

# 1. 克隆项目并安装依赖
git clone https://github.com/your-org/mini-erp.git
cd mini-erp/backend
npm install

# 2. 配置环境变量
cp ../.env.example .env
# 编辑 .env 文件,设置数据库连接信息:
# DB_CLIENT=pg
# PG_URL=postgres://user:password@host:5432/dbname

# 3. 手动执行初始化脚本
psql -U your_user -d your_db -f scripts/init-db.sql

# 4. 启动后端服务
npm start

# 5. 启动前端服务
cd ../frontend
npm install
npm run dev

方式三:生产环境部署

详细的生产环境部署指南请参考:生产环境部署指南.md

6.3 访问地址

开发环境

生产环境

6.4 默认账号说明

⚠️ 安全警告:以下为开发环境默认账号,生产环境部署后请立即修改!

角色 用户名 默认密码 说明
管理员 admin admin123 数据库初始化时自动创建

修改默认密码:

  1. 登录系统后进入「我的账户」
  2. 点击「修改密码」
  3. 输入旧密码和新密码确认

7. 典型使用流程

7.1 用户登录流程

  1. 打开浏览器访问系统地址
  2. 输入用户名和密码
  3. 点击「登录」按钮
  4. 系统验证成功后跳转到首页

7.2 商品管理流程

  1. 进入「商品管理」页面
  2. 点击「新增商品」
  3. 填写商品信息:
    • 商品编码(必填,唯一)
    • 商品名称(必填)
    • 规格(可选)
    • 分类(可选)
  4. 点击「保存」完成商品创建

7.3 入库操作流程

  1. 进入「入库管理」页面
  2. 点击「新增入库」
  3. 选择或扫描商品编码
  4. 填写入库信息:
    • 入库数量
    • 单价
    • 序列号(可选,支持扫码)
  5. 点击「提交」完成入库
  6. 系统自动更新库存数量

7.4 出库操作流程

  1. 进入「出库管理」页面
  2. 点击「新增出库」
  3. 选择或扫描商品编码
  4. 系统自动显示可用库存
  5. 填写出库信息:
    • 出库数量
    • 出库原因
    • 关联入库单(可选)
  6. 点击「提交」完成出库
  7. 系统自动扣减库存

7.5 库存查询流程

  1. 进入「库存管理」页面
  2. 查看实时库存汇总
  3. 可按商品分类、名称筛选
  4. 点击商品可查看详细的入库出库历史
  5. 支持 Excel 导出库存报表

7.6 扫码出入库流程

  1. 确保扫码枪已连接并正常工作
  2. 进入入库/出库页面
  3. 将光标定位到商品编码输入框
  4. 使用扫码枪扫描商品条码
  5. 系统自动填充商品信息
  6. 填写数量等其他信息
  7. 提交完成出入库

附录

A. 目录结构

mini-erp/
├── backend/                 # 后端服务
│   ├── src/                # 源代码
│   │   ├── routes/         # 业务路由
│   │   ├── utils/          # 工具函数
│   │   ├── middlewares/    # 中间件
│   │   ├── repositories/   # 数据访问层
│   │   ├── config/         # 配置文件
│   │   ├── server.js       # 服务入口
│   │   ├── database.js     # 数据库连接
│   │   ├── auth.js         # 认证逻辑
│   │   └── session.js      # 会话管理
│   ├── logs/               # 日志文件
│   ├── uploads/            # 上传文件
│   ├── knexfile.js         # Knex 配置
│   └── package.json
├── frontend/               # 前端应用
│   ├── src/                # 源代码
│   │   ├── pages/          # 页面组件
│   │   ├── components/     # 公共组件
│   │   ├── api/            # API 客户端
│   │   ├── utils/          # 工具函数
│   │   ├── composables/    # 组合式 API
│   │   ├── router.ts       # 路由配置
│   │   └── main.ts         # 应用入口
│   ├── public/             # 静态资源
│   │   ├── favicon.svg     # 网站图标
│   │   └── logo.png        # 应用图标
│   ├── vite.config.ts      # Vite 配置
│   └── package.json
├── scripts/                # 脚本工具
│   ├── init-db.sql         # 数据库初始化脚本
│   ├── seed-data.sql       # 示例数据(已合并到 init-db.sql)
│   ├── bump-version.js     # 版本发布脚本
│   └── clean-port.ps1      # Windows 端口清理脚本
├── Docs/                   # 文档目录
│   ├── README.md           # 项目介绍(本文件)
│   └── 生产环境部署指南.md
├── docker-compose.yml      # Docker 编排配置
├── nginx.conf.example      # Nginx 配置示例
├── ecosystem.config.js     # PM2 配置
├── .env.example            # 环境变量模板
├── QUICKSTART.md           # 快速启动指南
└── README.md               # 项目说明

B. 数据库初始化说明

系统使用 SQL 脚本自动初始化数据库,无需手动运行迁移命令。

初始化脚本位置: scripts/init-db.sql

自动创建的内容:

  1. 数据库表结构(8个表)
    • goods(商品表)
    • inbound(入库表)
    • outbound(出库表)
    • returns(退货表)
    • users(用户表)
    • sessions(会话表)
    • logs(操作日志表)
    • inventory(库存视图)
  2. 默认账号
    • 用户名:admin
    • 密码:admin123
    • 角色:管理员
  3. 示例数据
    • 12个商品
    • 10条入库记录
    • 2条出库记录

重新初始化数据库:

# 停止并删除所有数据
docker-compose down -v

# 重新启动(自动初始化)
docker-compose up -d

C. 常见问题

Q1: 忘记管理员密码怎么办?
A: 方式一:登录系统后在「我的账户」中修改
方式二:执行 scripts/init-db.sql 中的管理员 INSERT 语句重置密码

Q2: 如何备份数据?
A: 使用 pg_dump 导出数据库,或参考生产环境部署指南中的备份章节

Q3: 扫码枪不工作怎么办?
A: 确保扫码枪已正确连接,输入框处于聚焦状态,尝试手动输入扫码枪内容测试

Q4: 如何更换端口?
A: 修改 .env 文件中的 PORT 配置项(后端)或 vite.config.ts 中的 server.port 配置项(前端)

Q5: 首次启动需要运行 migrate 命令吗?
A: 不需要。系统使用 SQL 脚本自动初始化,Docker 启动时会自动执行

Q6: 生产环境部署需要注意什么?
A: 请务必修改默认密码、配置 HTTPS、设置防火墙规则、定期备份数据


源码下载:

暂无优惠 永久钻石免费

已有20人支付

闲鱼下单充值购买
新觅源码库 » 轻量ERP管理系统