# 下单小票打印
**Repository Path**: livesleep/print-order
## Basic Information
- **Project Name**: 下单小票打印
- **Description**: 简单的订单CRUD搭配打印功能
- **Primary Language**: JavaScript
- **License**: MIT
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 0
- **Created**: 2025-10-27
- **Last Updated**: 2025-10-27
## Categories & Tags
**Categories**: Uncategorized
**Tags**: Vue, JavaScript
## README
# 订单打印管理系统
## 📋 项目概述
订单打印管理系统是一个专为中小企业设计的轻量级订单管理和打印解决方案,提供直观的订单管理界面、实时打印预览以及历史打印记录查询功能。系统采用前后端分离架构,支持订单的创建、编辑、打印和历史记录查询等核心业务流程。
## 🚀 功能特性
### 核心功能
- **订单管理**:创建、编辑、删除和查询订单信息
- **客户信息管理**:存储和管理客户姓名、联系电话等信息
- **商品明细管理**:支持多商品订单,自动计算小计和总计金额
- **打印预览功能**:在打印前预览订单完整内容,避免打印错误
- **打印记录查询**:查看所有历史打印记录,并支持预览详情
- **用户认证系统**:提供登录功能,保护系统安全
### 技术优势
- **响应式设计**:适配各种设备屏幕,提供良好的移动端体验
- **实时数据更新**:订单状态实时同步,确保数据准确性
- **优雅的UI**:采用Element Plus组件库,提供现代化的用户界面
- **前后端分离**:前端Vue.js + 后端Node.js,架构清晰,易于维护
## 🛠️ 技术栈
### 前端技术
- **Vue.js 3**:渐进式JavaScript框架
- **Element Plus**:Vue 3组件库,提供丰富的UI组件
- **Vite**:现代前端构建工具,提供快速的开发体验
- **Axios**:HTTP客户端,用于与后端API通信
### 后端技术
- **Node.js**:JavaScript运行环境
- **Express**:Web应用框架
- **MySQL**:关系型数据库
- **dotenv**:环境变量管理
## 📁 项目结构
```
print/
├── backend/ # 后端代码
│ ├── db.js # 数据库配置和连接
│ ├── index.js # 后端入口文件
│ ├── middlewares/ # 中间件
│ ├── routes/ # 路由定义
│ └── package.json # 后端依赖
├── frontend/ # 前端代码
│ ├── src/ # 源代码
│ │ ├── components/ # 组件
│ │ ├── hooks/ # 自定义Hooks
│ │ ├── services/ # API服务
│ │ ├── views/ # 页面视图
│ │ └── main.js # 前端入口文件
│ └── package.json # 前端依赖
└── .gitignore # Git忽略文件
```
## 🔌 系统架构
```svg
```
## 📋 数据库设计
### orders表
| 字段名 | 数据类型 | 约束 | 描述 |
| :--- | :--- | :--- | :--- |
| `id` | `INT` | `PRIMARY KEY AUTO_INCREMENT` | 订单ID |
| `order_no` | `VARCHAR(50)` | `NOT NULL UNIQUE` | 订单编号 |
| `customer_name` | `VARCHAR(100)` | `NOT NULL` | 客户姓名 |
| `customer_phone` | `VARCHAR(20)` | | 客户电话 |
| `total_amount` | `DECIMAL(10,2)` | `NOT NULL` | 订单总金额 |
| `order_time` | `DATETIME` | `NOT NULL DEFAULT CURRENT_TIMESTAMP` | 下单时间 |
| `print_status` | `TINYINT` | `DEFAULT 0` | 打印状态(0:未打印, 1:已打印) |
| `items` | `JSON` | `NOT NULL` | 商品明细 |
### print_records表
| 字段名 | 数据类型 | 约束 | 描述 |
| :--- | :--- | :--- | :--- |
| `id` | `INT` | `PRIMARY KEY AUTO_INCREMENT` | 记录ID |
| `order_id` | `INT` | `NOT NULL, FOREIGN KEY` | 关联的订单ID |
| `print_time` | `DATETIME` | `NOT NULL DEFAULT CURRENT_TIMESTAMP` | 打印时间 |
| `printer_info` | `VARCHAR(200)` | | 打印机信息 |
| `print_status` | `VARCHAR(20)` | `DEFAULT 'pending'` | 打印状态 |
### users表
| 字段名 | 数据类型 | 约束 | 描述 |
| :--- | :--- | :--- | :--- |
| `id` | `INT` | `PRIMARY KEY AUTO_INCREMENT` | 用户ID |
| `username` | `VARCHAR(50)` | `NOT NULL UNIQUE` | 用户名 |
| `password` | `VARCHAR(100)` | `NOT NULL` | 密码 |
| `created_at` | `DATETIME` | `NOT NULL DEFAULT CURRENT_TIMESTAMP` | 创建时间 |
## 🚦 快速开始
### 环境要求
- Node.js 14.x 或更高版本
- MySQL 5.7 或更高版本
### 安装步骤
#### 1. 克隆项目
```bash
git clone [项目仓库地址]
cd print
```
#### 2. 配置后端
```bash
# 进入后端目录
cd backend
# 安装依赖
npm install
# 配置环境变量
# 创建 .env 文件并配置以下内容
# DB_HOST=localhost
# DB_USER=root
# DB_PASSWORD=your_password
# DB_NAME=print_system
# PORT=3000
# 启动后端服务
node index.js
```
#### 3. 配置前端
```bash
# 进入前端目录
cd ../frontend
# 安装依赖
npm install
# 启动前端服务
npm run dev
```
#### 4. 访问系统
打开浏览器,访问 http://localhost:5173/
## 📸 系统截图
### 登录页面
```svg
```
### 订单列表页面
```svg
```
### 打印预览页面
```svg
```
## 📝 使用说明
### 登录系统
1. 打开系统登录页面
2. 输入用户名和密码(默认账号:admin,密码:123456)
3. 点击登录按钮进入系统
### 管理订单
1. 在订单列表页面可以查看所有订单信息
2. 使用搜索框可以按订单编号或客户姓名搜索订单
3. 点击"新增"按钮创建新订单
4. 点击订单操作列的"预览"按钮查看订单详情
### 打印订单
1. 在订单预览页面确认订单信息无误
2. 点击"打印"按钮调用浏览器打印功能
3. 在打印对话框中选择打印机并确认打印
### 查询打印记录
1. 导航到打印记录页面
2. 查看所有历史打印记录
3. 点击记录操作列的"预览"按钮可以再次查看订单详情
## 🛡️ 安全注意事项
- 系统默认使用简单的账号密码认证,请在生产环境中加强安全措施
- 建议修改默认的管理员账号密码
- 生产环境中应配置HTTPS协议
- 定期备份数据库,防止数据丢失
## 📦 部署说明
### 前端部署
```bash
# 进入前端目录
cd frontend
# 构建生产版本
npm run build
# 将dist目录部署到Web服务器
# 如Nginx、Apache等
```
### 后端部署
```bash
# 进入后端目录
cd backend
# 安装PM2进行进程管理
npm install -g pm2
# 启动后端服务
pm start
```
## 🔧 常见问题
### 无法连接数据库
- 检查数据库连接配置是否正确
- 确认MySQL服务是否正在运行
- 验证数据库用户权限是否足够
### 前端无法访问后端API
- 检查后端服务是否正常启动
- 确认前端代理配置是否正确
- 检查跨域设置是否允许
### 打印功能不工作
- 确认浏览器是否支持打印API
- 检查打印机是否已正确连接
- 验证打印样式是否正确配置
## 📄 许可证
[MIT License](LICENSE)
## 🤝 贡献指南
1. Fork 本仓库
2. 创建你的特性分支 (`git checkout -b feature/amazing-feature`)
3. 提交你的更改 (`git commit -m 'Add some amazing feature'`)
4. 推送到分支 (`git push origin feature/amazing-feature`)
5. 打开一个 Pull Request
## 💡 开发建议
- 遵循代码风格规范,保持代码整洁
- 编写单元测试,确保代码质量
- 及时更新文档,保持文档与代码同步
- 使用版本控制管理代码变更
## 📧 联系我们
如有任何问题或建议,请联系项目维护者。