# 检定证书管理系统 **Repository Path**: ydbso/calibration_system ## Basic Information - **Project Name**: 检定证书管理系统 - **Description**: 检定证书管理系统 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-02-24 - **Last Updated**: 2026-02-26 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 检定证书管理系统 一套完整的计量器具检定工作流程管理系统,支持电子汽车衡等设备的检定、证书生成管理。 ## 系统概述 本系统面向计量检测机构,提供从客户管理、设备台账、标准器管理到检定任务执行的完整业务流程,最终生成符合国家规范的检定证书。 ## 技术架构 ### 前端 - **框架**: React 19 + React Router 6 - **UI组件**: Ant Design 6 - **构建工具**: Vite 4 - **HTTP客户端**: Axios - **日期处理**: Day.js ### 后端 - **框架**: Express.js 5 - **数据库**: MySQL(使用 [mysql2](https://www.npmjs.com/package/mysql2) 驱动) - **认证**: JWT (jsonwebtoken) - **文档生成**: docxtemplater + pizzip (Word) - **文件上传**: multer - **安全**: bcryptjs ## 项目结构 ``` . ├── client/ # 前端项目 │ ├── src/ │ │ ├── api/ # API接口封装 │ │ ├── components/ # 公共组件 │ │ ├── pages/ # 页面组件 │ │ │ ├── Customers/ # 客户管理 │ │ │ ├── Devices/ # 设备台账 │ │ │ ├── Standards/ # 标准器管理 │ │ │ ├── Tasks/ # 检定任务 │ │ │ ├── Templates/ # 模板管理 │ │ │ └── Dashboard/ # 首页仪表板 │ │ ├── router/ # 路由配置 │ │ ├── App.jsx │ │ └── main.jsx │ ├── package.json │ └── vite.config.js │ ├── server/ # 后端项目 │ ├── app.js # 应用入口 │ ├── config/ │ │ └── database.js # 数据库配置 │ ├── controllers/ # 业务控制器 │ │ ├── authController.js │ │ ├── customerController.js │ │ ├── deviceController.js │ │ ├── standardController.js │ │ ├── taskController.js │ │ └── templateController.js │ ├── middleware/ │ │ └── auth.js # JWT认证中间件 │ ├── models/ # 数据模型 │ │ ├── index.js # BaseModel基类 │ │ ├── User.js │ │ ├── Customer.js │ │ ├── Device.js │ │ ├── Standard.js │ │ ├── Task.js │ │ └── Template.js │ ├── routes/ # 路由定义 │ │ ├── auth.js │ │ ├── customers.js │ │ ├── devices.js │ │ ├── standards.js │ │ ├── tasks.js │ │ └── templates.js │ ├── services/ # 业务服务层 │ │ ├── certificateService.js # 证书编号生成 │ │ └── documentService.js # 文档生成服务 │ ├── utils/ # 工具函数 │ └── scripts/ # 脚本工具 │ └── template.docx # 默认Word模板文件 ``` ## 核心功能模块 ### 1. 客户管理 - 客户信息增删改查 - 客户关联设备查询 - 联系信息维护 ### 2. 设备台账 - 计量器具基础信息管理 - 设备分类(衡器、砝码、压力表等) - 检定到期提醒(30天内到期、已过期) - 设备与客户的关联 ### 3. 标准器管理 - 标准器台账维护 - 有效期管理 - 测量范围和准确度记录 - 在检状态管理 ### 4. 模板管理 - Word证书模板上传 - 模板分类管理(汽车衡、天平等) - 模板启停控制 ### 5. 检定任务 - 任务创建与分配 - 检定数据录入 - 表头信息(证书编号、送检单位、器具信息等) - 标准器选择 - 置零准确度测试 - 称量测试(加载/卸载) - 除皮准确度测试 - 除皮后称量测试 - 重复性测试 - 偏载测试 - 鉴别阈测试 - 工作流管理:草稿 → 待审核 → 已通过 - 证书生成 - 文件下载 ### 6. 证书编号管理 - 自动生成证书编号 - 格式:`{前缀}{年份}{序号}`,如 JL2025001 - 按类别独立计数(A-衡器类、B-砝码类、Y-压力表类) - 年度自动重置 - 数据库行锁保证并发安全 ### 7. 仪表板 - 客户数量统计 - 设备数量统计 - 检定任务统计 - 到期设备提醒列表 ## 数据库设计 ### 核心表结构 ```sql -- 用户表 users (id, username, password, real_name, role, status) -- 客户表 customers (id, name, address, contact_person, contact_phone) -- 设备表 devices (id, customer_id, device_name, device_model, serial_no, manufacturer, category, max_capacity, scale_interval, accuracy_class, license_no, last_verification_date, next_verification_date, status) -- 标准器表 standards (id, name, measurement_range, accuracy, cert_no, validity_date, status) -- 检定任务表 verification_tasks (id, certificate_no, customer_id, device_id, verifier_id, verification_date, validity_date, conclusion, status, task_data, created_at) -- 任务与标准器关联表 task_standards (id, task_id, standard_id) -- 证书编号规则表 certificate_rules (id, category, prefix, current_year, current_seq, seq_length, suffix) -- 模板管理表 templates (id, name, category, file_type, file_path, description, is_builtin, status) ``` ## API接口设计 ### 认证接口 - `POST /api/auth/login` - 用户登录 - `GET /api/auth/profile` - 获取当前用户信息 ### 客户管理 - `GET /api/customers` - 客户列表 - `POST /api/customers` - 创建客户 - `PUT /api/customers/:id` - 更新客户 - `DELETE /api/customers/:id` - 删除客户 ### 设备管理 - `GET /api/devices` - 设备列表 - `POST /api/devices` - 创建设备 - `GET /api/devices/expiring/list` - 即将到期设备 - `GET /api/devices/expired/list` - 已过期设备 ### 标准器管理 - `GET /api/standards` - 标准器列表 - `GET /api/standards/active/list` - 在用标准器 - `POST /api/standards` - 创建标准器 ### 检定任务 - `GET /api/tasks` - 任务列表 - `POST /api/tasks` - 创建任务 - `GET /api/tasks/:id` - 任务详情 - `POST /api/tasks/:id/data` - 保存检定数据 - `POST /api/tasks/:id/submit` - 提交审核 - `POST /api/tasks/:id/approve` - 审核通过 - `POST /api/tasks/:id/generate` - 生成证书和记录 - `GET /api/tasks/:id/download` - 下载文档 ### 模板管理 - `GET /api/templates` - 模板列表 - `POST /api/templates/upload` - 上传模板 ## 文档生成说明 ### 检定证书(Word) 使用 docxtemplater 库基于 Word 模板生成,采用**固定行占位符**模式: | 数据项 | 占位符示例 | |--------|-----------| | 表头信息 | `{证书编号}`, `{送检单位}`, `{器具名称}` | | 标准器列表 | `{标准器_序号_1}`, `{标准器_名称_1}` ...(固定5行) | | 置零准确度 | `{置零_L0}`, `{置零_I0}`, `{置零_E0}` | | 称量数据 | `{称量_载荷_1}`, `{称量_示值_加载_1}` ...(固定5行) | | 重复性数据 | `{重复性_次数_1}`, `{重复性_载荷_1}` ...(固定3行) | | 偏载数据 | `{偏载_位置_1}`, `{偏载_载荷_1}` ...(固定10行) | | 鉴别阈数据 | `{鉴别阈_载荷_1}`, `{鉴别阈_示值_1}` ...(固定3行) | ## 快速启动 ### 环境要求 - Node.js >= 18 - MySQL >= 8.0 ### 后端启动 ```bash cd server npm install npm start # 生产模式 npm run dev # 开发模式(nodemon) ``` ### 前端启动 ```bash cd client npm install npm run dev # 开发服务器 npm run build # 生产构建 ``` ### 数据库配置 编辑 `server/config/database.js`: ```javascript const dbConfig = { host: '127.0.0.1', port: 3306, user: 'root', password: 'your_password', database: 'calibration_system' }; ``` ### 环境变量(前端) 创建 `client/.env`: ``` VITE_API_URL=http://localhost:3001/api ``` ## 业务规范 ### 检定依据 - 电子汽车衡检定依据 JJG 539-2016《数字指示秤》 ### 证书编号规则 - 前缀 + 年份 + 3位序号 - 类别区分:A=衡器类、B=砝码类、Y=压力表类 ### 检定项目 1. 置零准确度 2. 称量测试(含加载和卸载) 3. 除皮准确度 4. 除皮后的称量测试 5. 重复性测试 6. 偏载测试 7. 鉴别阈测试 ## 开发说明 ### 前端开发 - 所有 API 请求封装在 `client/src/api/index.js` - 页面组件位于 `client/src/pages/` 目录 - 路由配置在 `client/src/router/index.jsx` - 使用 Ant Design 组件库,中文 locale 已配置 ### 后端开发 - 控制器处理 HTTP 请求,位于 `server/controllers/` - 模型层使用 BaseModel 基类,支持基础 CRUD - 业务逻辑封装在 Service 层 - JWT 认证中间件保护需要登录的接口 ### 代码规范 - 统一使用 async/await 处理异步 - API 响应格式:`{ code, success, message, data }` - 数据库操作使用参数化查询防注入 ## 安全特性 - JWT 身份认证 - 密码 bcrypt 加密存储 - SQL 注入防护(参数化查询) - CORS 跨域配置 ## 浏览器兼容性 - Chrome/Edge 最新版 - Firefox 最新版 - Safari 最新版