企业在健康、安全和环境(EHS)管理上的重视程度日益增加,特别是在提高合规性、减少事故和隐患的发生上。EHS 系统正是帮助企业建立起有效管理机制的工具,它不仅仅是一个记录和追踪的系统,更是实现安全生产、健康保护和环境合规的核心平台。
本篇文章将为你介绍如何开发一套完整的 EHS 管理系统,包括系统功能、模块设计、业务流程、开发技巧以及代码示例。我们将重点关注 EHS 系统的核心模块,包括隐患排查、事故管理、设备管理、健康管理、培训管理等。
本文你将了解
- 为什么要做 EHS 系统?关键价值
- EHS 系统包含哪些模块
- 技术与架构建议(高层架构图)
- 各模块功能、业务流程、开发技巧
- 样例数据库表与 SQL
- 后端 API(Node.js + Express)关键代码片段
- 前端(React)关键 UI/交互片段
- 实现效果与上线建议
- FAQ
注:本文示例所用方案模板:简道云EHS 健康安全环境管理系统,给大家示例的是一些通用的功能和模块,都是支持自定义修改的,你可以根据自己的需求修改里面的功能。
一、为什么要做 EHS 系统?关键价值
EHS 系统是提升企业管理效率、增强安全合规性的重要工具。为什么要做 EHS 系统?
- 降低风险与事故:通过有效管理隐患、事故和设备,减少安全事故发生率,保护员工生命安全。
- 合规性保障:确保企业遵守当地的环境保护和安全生产法规,避免因违规而面临的处罚。
- 数据追踪与审计:通过系统化的数据追踪,形成隐患、事故和整改闭环,确保合规审计的可执行性。
- 提高效率:自动化隐患排查、事故报告、设备管理等流程,提高工作效率,减少人工操作失误。
- 绩效考核:通过 KPI 指标,支持公司安全管理的目标考核,激励员工积极参与安全工作。
二、EHS 系统包含哪些模块
EHS 系统的核心功能模块一般包括:
- 基础信息管理:管理公司、部门、岗位、员工等基础数据。
- 隐患排查与整改:隐患的上报、整改、闭环管理。
- 风险管控:风险评估、控制措施和复评管理。
- 事故管理:事故报告、调查、责任认定及纠正措施。
- 设备管理:设备台账、保养、点检、维保记录管理。
- 危废品管理:危废台账、储存、转运、处置记录。
- 健康管理:员工体检记录、职业健康档案。
- 培训管理:培训课程、签到、考勤、考试、证书管理。
- 绩效管理:基于 EHS 指标进行绩效考核。
- EHS 统计看板:多维度展示 EHS 指标和趋势,帮助管理层决策。
三、技术与架构建议(高层架构图)
EHS 系统需要具备高效、稳定的架构设计,以下是推荐的高层架构:
css
[用户浏览器 React SPA] <--HTTPS--> [API Gateway / Nginx] --> [Auth Service (JWT/OAuth2)]
--> [EHS Core Service (Express)]
--> [Device Service]
--> [Reporting Service]
--> [DB: PostgreSQL]
--> [Search: Elasticsearch]
--> [Queue: RabbitMQ]
--> [Storage: S3]
技术栈建议:
- 前端:React + Ant Design,使用单页应用(SPA)架构,提供用户友好的交互界面。
- 后端:Node.js + Express 或 NestJS,提供 RESTful API 服务。
- 数据库:PostgreSQL 或 MySQL,支持数据表关系和大规模数据存储。
- 搜索引擎:Elasticsearch,用于隐患排查和事故管理的全文搜索。
- 消息队列:RabbitMQ,用于通知和告警功能。
- 存储:Amazon S3,用于存储附件和报告文件。
架构要点:
- 安全性:使用 OAuth2 或 JWT 实现认证与授权。
- 数据隔离:支持多部门/多区域数据隔离,保证不同区域的管理者只能访问相关数据。
- 高可用性:通过负载均衡、数据库冗余和服务容错提高系统的可靠性。
四、各模块功能、业务流程、开发技巧
4.1 基础信息管理
功能:管理公司、部门、员工、岗位等基础数据。
业务流程:
- HR 部门输入员工信息。
- 系统自动分配岗位,关联 EHS 权限。
开发技巧:
- 使用 JSONB 数据类型存储扩展字段(如员工的健康记录)。
- 建立通用的角色管理模型,支持不同的访问权限。
4.2 隐患排查与整改
功能:隐患的上报、整改和闭环管理。
业务流程:
- 隐患上报 → 指派责任人 → 整改 → 验收 → 闭环。
开发技巧:
- 生成动态表单支持不同隐患类型(如设备故障、环境污染等)。
- 自动化通知(邮件、短信)和提醒机制。
4.3 风险管控
功能:风险评估、控制措施和复评管理。
业务流程:
- 风险识别 → 风险评估 → 制定控制措施 → 定期复评。
开发技巧:
- 使用矩阵图展示风险等级,计算公式可以基于风险的概率和影响。
4.4 事故管理
功能:事故报告、调查、责任认定、纠正措施。
业务流程:
- 事故发生 → 上报 → 调查 → 责任认定 → 纠正措施。
开发技巧:
- 支持事故的照片和视频上传,存储到文件服务器(如 S3)。
- 支持事故调查的多阶段流程,包括初步调查和深度分析。
4.5 设备管理
功能:设备台账、点检、维修记录。
业务流程:
- 设备入库 → 设备点检 → 维保记录。
开发技巧:
- 使用二维码或 RFID 标签追踪设备位置与状态。
- 点检和维保计划可自动化生成,并通过系统通知责任人。
4.6 健康管理
功能:员工体检记录、职业健康档案。
业务流程:
- 定期体检 → 录入结果 → 健康档案生成。
开发技巧:
- 对体检结果使用加密存储,保护员工隐私。
- 提供健康风险预警,支持员工个性化健康管理。
4.7 培训管理
功能:培训课程、签到、考试、证书管理。
业务流程:
- 培训计划 → 通知员工 → 签到 → 考试 → 颁发证书。
开发技巧:
- 课程与岗位关联,系统自动推送相关培训课程。
- 支持培训资料的在线浏览和下载,避免纸质文档丢失。
4.8 绩效管理
功能:基于 EHS 指标进行绩效考核。
业务流程:
- 设置 EHS 指标 → 记录绩效 → 定期考核。
开发技巧:
- 支持指标的自动计算(如隐患整改率、事故发生率)。
- 将绩效与员工的奖金、晋升挂钩,激励安全意识。
五、样例数据库表与 SQL
sql
-- 基础信息表
CREATE TABLE dept (
id SERIAL PRIMARY KEY,
name VARCHAR(200) NOT NULL,
parent_id INT REFERENCES dept(id),
created_at TIMESTAMP DEFAULT now()
);
CREATE TABLE employee (
id SERIAL PRIMARY KEY,
emp_no VARCHAR(50),
name VARCHAR(100),
dept_id INT REFERENCES dept(id),
role VARCHAR(50),
mobile VARCHAR(30),
email VARCHAR(200),
extra JSONB
);
-- 隐患排查表
CREATE TABLE hazard (
id SERIAL PRIMARY KEY,
title VARCHAR(255),
description TEXT,
location VARCHAR(255),
reporter_id INT REFERENCES employee(id),
assignee_id INT REFERENCES employee(id),
severity INT,
status VARCHAR(30),
attachments JSONB,
created_at TIMESTAMP DEFAULT now(),
updated_at TIMESTAMP DEFAULT now()
);
-- 事故管理表
CREATE TABLE accident (
id SERIAL PRIMARY KEY,
title VARCHAR(255),
occur_time TIMESTAMP,
location VARCHAR(255),
involved_people JSONB,
severity INT,
report TEXT,
attachments JSONB,
status VARCHAR(30),
created_by INT REFERENCES employee(id)
);
六、后端 API(Node.js + Express)关键代码片段
server.js
js
const express = require('express');
const bodyParser = require('body-parser');
const app = express();
app.use(bodyParser.json());
// 路由管理
const hazardRouter = require('./routes/hazard');
app.use('/api/hazard', hazardRouter);
// 启动服务器
app.listen(3000, () => console.log('EHS API running on port 3000'));
routes/hazard.js
js
const express = require('express');
const router = express.Router();
const db = require('../db'); // PostgreSQL 客户端
// 隐患上报
router.post('/', async (req, res) => {
const { title, description, location, reporter_id, severity } = req.body;
try {
const result = await db.query(
'INSERT INTO hazard(title, description, location, reporter_id, severity, status, created_at) VALUES ($1, $2, $3, $4, $5, $6, now()) RETURNING *',
[title, description, location, reporter_id, severity, 'reported']
);
res.json(result.rows[0]);
} catch (err) {
res.status(500).send('Error creating hazard report');
}
});
module.exports = router;
七、前端(React)关键 UI/交互片段
HazardReport.js
jsx
import React, { useState } from 'react';
import axios from 'axios';
function HazardReport() {
const [title, setTitle] = useState('');
const [description, setDescription] = useState('');
const [location, setLocation] = useState('');
const [severity, setSeverity] = useState(1);
const submit = async () => {
const payload = { title, description, location, reporter_id: 1, severity };
try {
const res = await axios.post('/api/hazard', payload);
alert('隐患报告已提交,ID: ' + res.data.id);
} catch (err) {
alert('提交失败,请重试');
}
};
return (
<div>
<h3>隐患上报</h3>
<input
type="text"
value={title}
onChange={e => setTitle(e.target.value)}
placeholder="隐患标题"
/>
<textarea
value={description}
onChange={e => setDescription(e.target.value)}
placeholder="隐患描述"
/>
<input
type="text"
value={location}
onChange={e => setLocation(e.target.value)}
placeholder="隐患位置"
/>
<button onClick={submit}>提交上报</button>
</div>
);
}
export default HazardReport;
八、实现效果与上线建议
上线建议
- 分阶段交付:首先交付核心模块(隐患排查、事故管理),后续可以逐步增加设备管理、健康管理等模块。
- 数据迁移:从现有的 Excel 或手动记录中提取数据,进行迁移至 EHS 系统。
- 定期优化:通过用户反馈和数据分析,优化系统流程,提升用户体验。
九、FAQ
FAQ 1:EHS 系统如何保障数据安全?
EHS 系统涉及大量敏感数据,如员工健康记录、事故报告等。为了保障数据安全,建议对所有敏感数据进行加密存储,并确保权限管理严格按角色和部门划分。对于访问控制,可以采用基于角色的权限控制(RBAC),使得每个用户只能访问他们有权限查看的模块和数据。除此之外,所有数据操作都应做审计记录,确保每一项操作都可以追踪。
FAQ 2:隐患整改无法及时闭环该如何处理?
隐患整改的闭环问题,通常是由于责任不明确或整改流程不清晰导致的。为确保整改能够及时闭环,EHS 系统应当确保每条隐患有明确责任人,且系统自动提醒责任人处理进度。同时,可以通过系统设置整改时限,逾期未整改的隐患自动提醒上级管理人员。闭环的最终验证应该由独立人员进行,避免责任人自己完成整改后直接关闭任务。
FAQ 3:如何评估 EHS 系统的实施效果?
EHS 系统实施后的效果评估应该从几个维度进行:一是隐患上报和整改的闭环率,二是事故发生率是否下降,三是员工参与度和培训覆盖率的提高。通过这些关键指标,可以评估系统在提升安全性、合规性以及员工积极性的效果。如果指标达成预期目标,则证明系统是有效的。