很多制造业、化工、能源企业都知道,EHS(Environment、Health、Safety)系统能帮公司统一管理环境保护、职业健康和安全生产。但在实际落地中,“事故管理”往往是企业最迫切需要数字化的板块之一。 原因很简单:
而事故管理板块的核心价值,就是让事故事件从发生到关闭的全生命周期都有记录、有跟踪、有分析。
本文你将了解
在一套标准的 EHS 系统中,事故管理板块主要负责:


css
[事故发生]
↓
[员工提交事故登记表]
↓
[部门经理审核 → 退回修改 或 分配责任人]
↓
[责任人整改并提交整改报告]
↓
[安全主管复核]
↓
[关闭事故/存档]bash
┌──────────────────┐
│ 前端(Vue3) │
│ - 登记表单 │
│ - 看板可视化 │
│ - 数据分析图表 │
└─────────┬────────┘
│ REST API
┌─────────▼────────┐
│ 后端(Node.js) │
│ - API 接口层 │
│ - 业务逻辑层 │
│ - 权限认证 JWT │
└─────────┬────────┘
│ SQL
┌─────────▼────────┐
│ 数据库(MySQL) │
│ - accident │
│ - users │
│ - dept │
└──────────────────┘以下示例是一个简化版,可运行的事故管理模块代码,包含前端(Vue3)、后端(Node.js Express)、数据库(MySQL)三部分。
javascript
/* === 数据库 SQL === */
-- 创建用户表
CREATE TABLE users (
id INT PRIMARY KEY AUTO_INCREMENT,
name VARCHAR(50),
role ENUM('employee','manager','supervisor')
);
-- 创建事故表
CREATE TABLE accident (
id INT PRIMARY KEY AUTO_INCREMENT,
title VARCHAR(100),
description TEXT,
type ENUM('person','equipment','environment'),
location VARCHAR(100),
status ENUM('pending','in_progress','closed') DEFAULT 'pending',
reporter_id INT,
assigned_to INT,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
/* === 后端 Node.js Express === */
const express = require('express');
const mysql = require('mysql2/promise');
const app = express();
app.use(express.json());
const db = mysql.createPool({ host: 'localhost', user: 'root', password: '123456', database: 'ehs' });
// 提交事故
app.post('/accidents', async (req, res) => {
const { title, description, type, location, reporter_id } = req.body;
const [result] = await db.execute(
'INSERT INTO accident (title, description, type, location, reporter_id) VALUES (?,?,?,?,?)',
[title, description, type, location, reporter_id]
);
res.json({ id: result.insertId, message: '事故已提交' });
});
// 获取事故列表
app.get('/accidents', async (req, res) => {
const [rows] = await db.execute('SELECT * FROM accident ORDER BY created_at DESC');
res.json(rows);
});
// 更新事故状态
app.put('/accidents/:id/status', async (req, res) => {
const { status, assigned_to } = req.body;
await db.execute('UPDATE accident SET status=?, assigned_to=? WHERE id=?', [status, assigned_to, req.params.id]);
res.json({ message: '状态已更新' });
});
app.listen(3000, () => console.log('Server running on port 3000'));
/* === 前端 Vue3 === */
<template>
<div>
<h1>事故登记</h1>
<form @submit.prevent="submitAccident">
<input v-model="form.title" placeholder="事故标题" required />
<textarea v-model="form.description" placeholder="描述" required></textarea>
<select v-model="form.type">
<option value="person">人身</option>
<option value="equipment">设备</option>
<option value="environment">环境</option>
</select>
<input v-model="form.location" placeholder="地点" required />
<button type="submit">提交</button>
</form>
<h2>事故列表</h2>
<ul>
<li v-for="a in accidents" :key="a.id">
{{a.title}} - {{a.status}}
</li>
</ul>
</div>
</template>
<script setup>
import { ref, onMounted } from 'vue';
const form = ref({ title: '', description: '', type: 'person', location: '', reporter_id: 1 });
const accidents = ref([]);
async function submitAccident() {
await fetch('/accidents', { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify(form.value) });
loadAccidents();
}
async function loadAccidents() {
const res = await fetch('/accidents');
accidents.value = await res.json();
}
onMounted(loadAccidents);
</script>在这里我给大家推荐一个业务人员就能够直接上手的高性价比、零代码平台——简道云EHS 健康安全环境管理系统,简道云背靠国内BI龙头帆软,在数据处理、数据展示上的能力有绝对优势,数据分析支持高度自定义,任何分析需求都可以快速制作仪表盘,简道云EHS 健康安全环境管理系统涵盖了核心 8 大业务模块,高效全面地满足安全管理核心需求
Q1:事故管理系统一定要和 EHS 系统一起做吗? A1:不一定。小企业可以先单独做事故管理模块,后期再和EHS其他模块集成。但如果有预算,建议直接搭在EHS体系内,这样权限、数据标准化会更统一,减少后续二次开发成本。
Q2:怎么保证数据安全? A2:数据安全要从三方面入手:1)账号权限分级,不同角色只能访问对应范围的数据;2)数据库定期备份,最好异地备份;3)传输用 HTTPS,敏感字段加密存储,比如人员身份证号、联系方式等。
Q3:事故分析怎么做才有价值? A3:分析不仅是做统计图,更关键的是让结果能指导行动。比如统计发现“夜班设备事故率高”,那下一步就可以调整夜班巡检频率或加强夜班培训,而不是只是做一份漂亮的饼图。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。