Files
SIPAIIS_WMS_JSSW/污水处理管理平台_v7.html

459 lines
24 KiB
HTML
Raw Normal View History

2026-03-22 22:36:01 +08:00
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="utf-8"/>
<meta content="width=device-width, initial-scale=1.0" name="viewport"/>
<title>智水云 - 污水处理全流程监控一张图</title>
<script src="https://cdn.tailwindcss.com"></script>
<script src="https://code.iconify.design/3/3.1.1/iconify.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/chart.js"></script>
<style>
@import url('https://fonts.googleapis.com/css2?family=Share+Tech+Mono&display=swap');
:root {
--panel-bg: rgba(15, 23, 42, 0.7);
--border-color: rgba(51, 65, 85, 0.4);
--accent-blue: #3b82f6;
}
body {
background-color: #020617;
background-image: radial-gradient(circle at 50% 50%, #0f172a 0%, #020617 100%);
color: #e2e8f0;
overflow: hidden;
height: 100vh;
font-family: "PingFang SC", "Microsoft YaHei", -apple-system, sans-serif;
display: flex;
flex-direction: column;
padding: 1rem;
}
.font-digital { font-family: 'Share+Tech+Mono', monospace; }
.glass-card {
background: var(--panel-bg);
border: 1px solid var(--border-color);
border-top: 2px solid var(--accent-blue);
transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
backdrop-filter: blur(4px);
display: flex;
flex-direction: column;
justify-content: space-between;
}
.glass-card:hover {
border-color: #60a5fa;
box-shadow: 0 8px 20px rgba(0, 0, 0, 0.4);
transform: translateY(-2px);
background: rgba(30, 41, 59, 0.6);
}
.status-pulse {
width: 8px;
height: 8px;
border-radius: 50%;
display: inline-block;
animation: pulse 2s infinite;
}
@keyframes pulse {
0% { box-shadow: 0 0 0 0px rgba(34, 197, 94, 0.7); }
70% { box-shadow: 0 0 0 6px rgba(34, 197, 94, 0); }
100% { box-shadow: 0 0 0 0px rgba(34, 197, 94, 0); }
}
.grid-container {
display: grid;
grid-template-columns: 1fr 280px;
gap: 0.75rem;
flex: 1;
min-height: 0;
overflow: hidden;
}
.stats-panel {
height: 120px;
margin-bottom: 0.75rem;
display: grid;
grid-template-columns: 1fr 1fr 2fr 280px;
gap: 0.75rem;
flex-shrink: 0;
}
.alarm-panel {
height: 100%;
background: rgba(30, 41, 59, 0.4);
border-top: 2px solid #ef4444;
display: flex;
flex-direction: column;
overflow: hidden;
}
.table-container {
background: var(--panel-bg);
border: 1px solid var(--border-color);
border-top: 2px solid var(--accent-blue);
backdrop-filter: blur(4px);
overflow: hidden;
display: flex;
flex-direction: column;
}
table {
width: 100%;
border-collapse: collapse;
text-align: left;
font-size: 0.85rem;
}
thead {
background: rgba(30, 41, 59, 0.8);
position: sticky;
top: 0;
z-index: 10;
}
th {
padding: 0.75rem 1rem;
font-weight: 600;
color: #94a3b8;
text-transform: uppercase;
letter-spacing: 0.05em;
font-size: 0.75rem;
border-bottom: 1px solid var(--border-color);
}
td {
padding: 0.65rem 1rem;
border-bottom: 1px solid rgba(51, 65, 85, 0.2);
color: #e2e8f0;
}
tbody tr:nth-child(even) {
background: rgba(255, 255, 255, 0.02);
}
tbody tr:hover {
background: rgba(59, 130, 246, 0.1);
}
.status-tag {
padding: 2px 8px;
border-radius: 9999px;
font-size: 0.7rem;
font-weight: 600;
}
.status-online { background: rgba(34, 197, 94, 0.2); color: #4ade80; border: 1px solid rgba(34, 197, 94, 0.3); }
.status-offline { background: rgba(239, 68, 68, 0.2); color: #f87171; border: 1px solid rgba(239, 68, 68, 0.3); }
.param-chip {
display: inline-block;
background: rgba(15, 23, 42, 0.6);
padding: 2px 6px;
border-radius: 4px;
margin-right: 4px;
font-family: 'Share+Tech+Mono', monospace;
}
.param-label-mini {
color: #64748b;
font-size: 10px;
margin-right: 4px;
}
.alarm-list {
flex: 1;
overflow-y: auto;
padding: 0.5rem;
}
.alarm-list::-webkit-scrollbar { width: 4px; }
.alarm-list::-webkit-scrollbar-thumb { background: rgba(255,255,255,0.1); border-radius: 10px; }
.alarm-item {
background: rgba(15, 23, 42, 0.5);
border-left: 3px solid transparent;
margin-bottom: 0.5rem;
padding: 0.6rem;
font-size: 0.75rem;
transition: all 0.2s;
}
.alarm-item:hover { background: rgba(15, 23, 42, 0.8); }
.alarm-high { border-left-color: #ef4444; }
.alarm-mid { border-left-color: #f59e0b; }
.alarm-low { border-left-color: #3b82f6; }
.badge {
padding: 1px 4px;
border-radius: 2px;
font-size: 0.65rem;
}
.badge-high { background: rgba(239, 68, 68, 0.2); color: #f87171; border: 1px solid rgba(239, 68, 68, 0.3); }
.badge-mid { background: rgba(245, 158, 11, 0.2); color: #fbbf24; border: 1px solid rgba(245, 158, 11, 0.3); }
.badge-low { background: rgba(59, 130, 246, 0.2); color: #60a5fa; border: 1px solid rgba(59, 130, 246, 0.3); }
.flow-card {
padding: 1rem;
display: flex;
flex-direction: column;
justify-content: center;
border-radius: 4px;
}
.flow-card.industrial { border-top-color: #f59e0b; }
.flow-card.domestic { border-top-color: #10b981; }
.chart-container {
position: relative;
padding: 10px;
border-radius: 4px;
}
.param-label { color: #94a3b8; font-size: 0.7rem; font-weight: 500; }
.param-value { color: #f8fafc; font-size: 1.05rem; font-family: 'Share+Tech+Mono', monospace; }
.unit { font-size: 0.65rem; color: #64748b; margin-left: 2px; }
.card-header { padding: 0.6rem 0.8rem; border-bottom: 1px solid rgba(255,255,255,0.05); }
.card-body { padding: 0.6rem 0.8rem; flex: 1; }
.card-footer { padding: 0.4rem 0.8rem; background: rgba(0,0,0,0.15); border-top: 1px solid rgba(255,255,255,0.03); }
</style>
</head>
<body>
<!-- 顶部状态栏 -->
<header class="flex items-center justify-between mb-4 px-1">
<div class="flex items-center space-x-3">
<span class="iconify text-blue-500 text-3xl" data-icon="material-symbols:water-drop-outline"></span>
<div>
<h1 class="text-xl font-bold tracking-tight text-white leading-tight">智水云 · 全流程数字化管控平台</h1>
<p class="text-[10px] text-blue-400 font-mono tracking-widest uppercase" id="current-time">SYSTEM STATUS: 2026-03-22 10:45:00</p>
</div>
</div>
<div class="flex items-center space-x-6">
<div class="flex space-x-6 text-[11px] font-medium bg-slate-800/30 px-4 py-2 rounded-full border border-slate-700/50">
<span class="text-white flex items-center"><i class="w-1.5 h-1.5 bg-green-500 rounded-full mr-2"></i> 运行中: 24h</span>
<span class="text-slate-400">负荷: 78%</span>
<span class="text-slate-400">能效: 0.32 kW·h/m³</span>
</div>
<div class="flex items-center space-x-3 border-l border-slate-700 pl-6">
<div class="text-right">
<p class="text-[10px] text-slate-400 leading-none">值班主管</p>
<p class="text-xs text-white">王建国 (A组)</p>
</div>
<div class="w-8 h-8 bg-blue-600 rounded-lg flex items-center justify-center font-bold text-white shadow-lg"></div>
</div>
</div>
</header>
<!-- 核心统计区域 -->
<div class="stats-panel">
<div class="glass-card flow-card industrial">
<div class="flex items-center space-x-2 mb-2">
<span class="iconify text-orange-400" data-icon="material-symbols:factory-outline"></span>
<span class="text-[10px] font-bold text-orange-400 uppercase">工业进水累计</span>
</div>
<div class="flex justify-between items-end gap-2">
<div>
<p class="param-label text-[9px]">当日总量</p>
<p class="text-2xl font-digital text-white leading-none">10,867<span class="unit"></span></p>
</div>
<div class="text-right border-l border-slate-700/50 pl-2">
<p class="param-label text-[9px]">环比</p>
<p class="text-xs font-digital text-orange-300">+2.4% ↑</p>
</div>
</div>
</div>
<div class="glass-card flow-card domestic">
<div class="flex items-center space-x-2 mb-2">
<span class="iconify text-green-400" data-icon="material-symbols:home-outline"></span>
<span class="text-[10px] font-bold text-green-400 uppercase">生活进水累计</span>
</div>
<div class="flex justify-between items-end gap-2">
<div>
<p class="param-label text-[9px]">当日总量</p>
<p class="text-2xl font-digital text-white leading-none">7,569<span class="unit"></span></p>
</div>
<div class="text-right border-l border-slate-700/50 pl-2">
<p class="param-label text-[9px]">环比</p>
<p class="text-xs font-digital text-green-300">-1.8% ↓</p>
</div>
</div>
</div>
<div class="glass-card chart-container">
<div class="absolute top-2 left-4 z-10 flex items-center space-x-2">
<span class="w-1.5 h-1.5 bg-blue-500 rounded-full animate-pulse"></span>
<span class="text-[10px] text-slate-400 font-bold uppercase tracking-wider">进水流量7日趋势 (m³/d)</span>
</div>
<canvas id="flowChart"></canvas>
</div>
<!-- 统计面板右侧对应的告警总览 -->
<div class="glass-card flex flex-col justify-center p-3 relative overflow-hidden" style="border-top-color: #ef4444;">
<div class="absolute -right-4 -top-4 opacity-10">
<span class="iconify text-8xl text-red-500" data-icon="material-symbols:warning-outline"></span>
</div>
<div class="flex items-center justify-between mb-1">
<span class="text-[10px] font-bold text-red-400">设备运行异常</span>
<span class="badge badge-high animate-pulse">实时监控</span>
</div>
<div class="flex items-end justify-between">
<div>
<div class="text-3xl font-digital text-red-500">03</div>
<div class="text-[9px] text-slate-500 uppercase tracking-wider">Active Alarms</div>
</div>
<div class="text-right">
<div class="text-[10px] text-slate-400">待处理: <span class="text-red-400 font-digital">03</span></div>
<div class="text-[10px] text-slate-400">已闭环: <span class="text-green-500 font-digital">12</span>/今日</div>
</div>
</div>
</div>
</div>
<!-- 工艺流程数据表格 -->
<main class="grid-container">
<div class="table-container">
<div class="p-3 border-b border-slate-700/50 flex justify-between items-center bg-slate-900/40">
<div class="flex items-center space-x-2">
<span class="iconify text-blue-500" data-icon="material-symbols:AppSettings-outline"></span>
<h2 class="text-xs font-bold uppercase tracking-wider text-slate-300">全流程生产工艺实时数据概览</h2>
</div>
<div class="flex space-x-4">
<span class="text-[10px] text-green-500 flex items-center"><span class="w-2 h-2 bg-green-500 rounded-full mr-1 animate-pulse"></span> 生产正常</span>
<span class="text-[10px] text-slate-500">更新时间: 2026-03-22 10:15:30</span>
</div>
</div>
<div class="overflow-y-auto flex-1">
<table>
<thead>
<tr>
<th>工艺段名称</th>
<th>状态</th>
<th>瞬时流量 (m³/h)</th>
<th>关键参数 1</th>
<th>关键参数 2</th>
<th>关键参数 3</th>
<th class="text-right">设备ID</th>
</tr>
</thead>
<tbody>
<tr><td class="font-bold text-slate-200">01. 细格栅与提升</td><td><span class="status-tag status-online">运行中</span></td><td class="font-digital text-blue-400">1,245.8</td><td><span class="param-label-mini">液位:</span><span class="param-chip text-green-400">1.8m</span></td><td><span class="param-label-mini">pH:</span><span class="param-chip text-white">7.2</span></td><td><span class="param-label-mini">主泵:</span><span class="param-chip text-white">2#</span></td><td class="text-right font-mono text-[10px] text-slate-500">P101</td></tr>
<tr><td class="font-bold text-slate-200">02. 曝气沉砂池</td><td><span class="status-tag status-online">运行中</span></td><td class="font-digital text-blue-400">1,238.2</td><td><span class="param-label-mini">DO:</span><span class="param-chip text-white">2.5mg/L</span></td><td><span class="param-label-mini">速:</span><span class="param-chip text-white">35Hz</span></td><td><span class="param-label-mini">油:</span><span class="param-chip text-green-400">0.2</span></td><td class="text-right font-mono text-[10px] text-slate-500">D205</td></tr>
<tr><td class="font-bold text-slate-200">03. 初次沉淀池</td><td><span class="status-tag status-online">运行中</span></td><td class="font-digital text-blue-400">1,232.0</td><td><span class="param-label-mini">SS:</span><span class="param-chip text-white">180mg/L</span></td><td><span class="param-label-mini">泥位:</span><span class="param-chip text-white">0.8m</span></td><td><span class="param-label-mini">刮泥:</span><span class="param-chip text-white">ON</span></td><td class="text-right font-mono text-[10px] text-slate-500">S302</td></tr>
<tr><td class="font-bold text-slate-200">04. A/A/O 生物反应器</td><td><span class="status-tag status-online">运行中</span></td><td class="font-digital text-blue-400">1,230.5</td><td><span class="param-label-mini">厌氧ORP:</span><span class="param-chip text-white">-180mV</span></td><td><span class="param-label-mini">MLSS:</span><span class="param-chip text-white">3250</span></td><td><span class="param-label-mini">回流:</span><span class="param-chip text-white">100%</span></td><td class="text-right font-mono text-[10px] text-slate-500">B401</td></tr>
<tr><td class="font-bold text-slate-200">05. 二次沉淀池组</td><td><span class="status-tag status-offline">故障告警</span></td><td class="font-digital text-red-400">1,228.1</td><td><span class="param-label-mini">出水SS:</span><span class="param-chip text-red-400">22.4</span></td><td><span class="param-label-mini">泥层:</span><span class="param-chip text-white">1.2m</span></td><td><span class="param-label-mini">泵组:</span><span class="param-chip text-red-500">ERR</span></td><td class="text-right font-mono text-[10px] text-slate-500">S204</td></tr>
<tr><td class="font-bold text-slate-200">06. 磁混凝高效沉淀</td><td><span class="status-tag status-online">运行中</span></td><td class="font-digital text-blue-400">1,225.0</td><td><span class="param-label-mini">投药:</span><span class="param-chip text-white">12.5mg/L</span></td><td><span class="param-label-mini">磁粉:</span><span class="param-chip text-white">保持</span></td><td><span class="param-label-mini">浊度:</span><span class="param-chip text-green-400">4.2</span></td><td class="text-right font-mono text-[10px] text-slate-500">M501</td></tr>
<tr><td class="font-bold text-slate-200">07. V型滤池</td><td><span class="status-tag status-online">运行中</span></td><td class="font-digital text-blue-400">1,210.6</td><td><span class="param-label-mini">滤速:</span><span class="param-chip text-white">6.5m/h</span></td><td><span class="param-label-mini">水头失:</span><span class="param-chip text-white">1.2m</span></td><td><span class="param-label-mini">反冲:</span><span class="param-chip text-white">4:30</span></td><td class="text-right font-mono text-[10px] text-slate-500">F602</td></tr>
<tr><td class="font-bold text-slate-200">08. 紫外消毒/次氯酸钠</td><td><span class="status-tag status-online">运行中</span></td><td class="font-digital text-blue-400">1,208.5</td><td><span class="param-label-mini">强度:</span><span class="param-chip text-white">35mW</span></td><td><span class="param-label-mini">余氯:</span><span class="param-chip text-green-400">0.45</span></td><td><span class="param-label-mini">运行:</span><span class="param-chip text-white">12h</span></td><td class="text-right font-mono text-[10px] text-slate-500">V501</td></tr>
<tr><td class="font-bold text-slate-200">09. 核心鼓风机房</td><td><span class="status-tag status-online">运行中</span></td><td class="font-digital text-blue-400">254 m³</td><td><span class="param-label-mini">压:</span><span class="param-chip text-green-400">58kPa</span></td><td><span class="param-label-mini">温:</span><span class="param-chip text-white">62℃</span></td><td><span class="param-label-mini">功率:</span><span class="param-chip text-white">185kW</span></td><td class="text-right font-mono text-[10px] text-slate-500">M601</td></tr>
<tr><td class="font-bold text-slate-200 text-blue-400">10. 总出水在线监测</td><td><span class="status-tag status-online">达标运行</span></td><td class="font-digital text-blue-400">18.5k</td><td><span class="param-label-mini">COD:</span><span class="param-chip text-green-400">22.4</span></td><td><span class="param-label-mini">NH3:</span><span class="param-chip text-green-400">0.24</span></td><td><span class="param-label-mini">TP:</span><span class="param-chip text-green-400">0.08</span></td><td class="text-right font-mono text-[10px] text-slate-500">OUT-M</td></tr>
<tr><td class="font-bold text-slate-200">11. 污泥脱水系统</td><td><span class="status-tag status-online">运行中</span></td><td class="font-digital text-blue-400">--</td><td><span class="param-label-mini">含水:</span><span class="param-chip text-white">78.2%</span></td><td><span class="param-label-mini">产泥:</span><span class="param-chip text-white">12.5t</span></td><td><span class="param-label-mini">药量:</span><span class="param-chip text-white">4.2</span></td><td class="text-right font-mono text-[10px] text-slate-500">W701</td></tr>
</tbody>
</table>
</div>
<div class="px-3 py-2 border-t border-slate-700/50 bg-slate-900/40 flex justify-between items-center">
<div class="text-[10px] text-slate-500">系统就绪,当前生产效率:<span class="text-blue-400">92%</span></div>
<div class="flex space-x-2">
<button class="bg-blue-600/20 text-blue-400 text-[10px] px-3 py-1 rounded border border-blue-500/30 hover:bg-blue-600/40 transition">导出历史报表</button>
<button class="bg-slate-700 text-slate-200 text-[10px] px-3 py-1 rounded hover:bg-slate-600 transition">自定义列</button>
</div>
</div>
</div>
<!-- 15. 设备异常告警面板 (占据右侧整列) -->
<div class="glass-card alarm-panel">
<div class="card-header flex justify-between items-center bg-red-950/20">
<div class="flex items-center space-x-2">
<span class="iconify text-red-500 animate-pulse" data-icon="material-symbols:fmd-bad"></span>
<span class="text-xs font-bold text-red-100 uppercase tracking-wider">实时告警列表</span>
</div>
<div class="flex space-x-2">
<button class="text-[9px] bg-slate-800 hover:bg-slate-700 px-2 py-0.5 rounded transition">忽略全部</button>
<button class="text-[9px] bg-blue-600 hover:bg-blue-500 px-2 py-0.5 rounded transition">导出日志</button>
</div>
</div>
<div class="alarm-list">
<!-- 告警项 1 -->
<div class="alarm-item alarm-high">
<div class="flex justify-between mb-1">
<span class="badge badge-high font-bold uppercase">Critical</span>
<span class="text-[9px] text-slate-500 font-mono">10:42:15</span>
</div>
<div class="font-bold text-slate-200">鼓风机房 #2 离心风机</div>
<div class="text-[10px] text-red-400 mt-1 flex items-center">
<span class="iconify mr-1" data-icon="material-symbols:bolt"></span>
运行电流过载 (45.2A &gt; 40.0A)
</div>
<div class="flex justify-end space-x-2 mt-2">
<button class="text-[9px] border border-slate-700 hover:border-slate-500 px-2 py-1 rounded">查看详情</button>
<button class="text-[9px] bg-red-600/80 hover:bg-red-500 px-2 py-1 rounded text-white" onclick="alert('已发送工单给维保组')">立即处理</button>
</div>
</div>
<!-- 告警项 2 -->
<div class="alarm-item alarm-mid">
<div class="flex justify-between mb-1">
<span class="badge badge-mid font-bold uppercase">Warning</span>
<span class="text-[9px] text-slate-500 font-mono">10:05:21</span>
</div>
<div class="font-bold text-slate-200">2# 二沉池 吸泥机</div>
<div class="text-[10px] text-orange-400 mt-1 flex items-center">
<span class="iconify mr-1" data-icon="material-symbols:settings-backup-restore"></span>
转速异常波动 (+/- 15%)
</div>
<div class="flex justify-end space-x-2 mt-2">
<button class="text-[9px] border border-slate-700 hover:border-slate-500 px-2 py-1 rounded w-full text-slate-300">远程复位</button>
</div>
</div>
<!-- 告警项 3 -->
<div class="alarm-item alarm-low">
<div class="flex justify-between mb-1">
<span class="badge badge-low font-bold uppercase">Info</span>
<span class="text-[9px] text-slate-500 font-mono">09:12:05</span>
</div>
<div class="font-bold text-slate-200">加药间 PAC 储罐</div>
<div class="text-[10px] text-blue-300 mt-1 flex items-center">
<span class="iconify mr-1" data-icon="material-symbols:water-medium"></span>
低液位预警 (剩余 15%)
</div>
<div class="flex justify-end mt-2">
<button class="text-[9px] text-blue-400 hover:underline">申请补料</button>
</div>
</div>
</div>
<div class="card-footer text-center bg-slate-900/50 p-2 border-t border-slate-800">
<p class="text-[9px] text-slate-500 hover:text-blue-400 cursor-pointer transition">查看所有历史记录 (6张待办) »</p>
</div>
</div>
</main>
<footer class="mt-4 flex items-center justify-between px-2 text-[10px] text-slate-600 border-t border-slate-800 pt-2 h-6"> <div class="flex space-x-8">
<p>© 2026 智水云污水处理管理有限公司</p>
<p><i class="iconify inline mr-1" data-icon="material-symbols:location-on"></i> 江苏省南通市华东第二污水处理厂</p>
</div>
<div class="flex space-x-6">
<p class="flex items-center text-green-700 font-medium"><i class="iconify mr-1" data-icon="material-symbols:check-circle"></i> 云端数据实时同步中 (25ms)</p>
<p>生产智脑 V4.2.0-PROD</p>
</div>
</footer>
<script>
// 自动刷新当前时刻
function updateClock() {
const now = new Date();
const timeStr = `SYSTEM STATUS: ${now.getFullYear()}-${String(now.getMonth()+1).padStart(2,'0')}-${String(now.getDate()).padStart(2,'0')} ${String(now.getHours()).padStart(2,'0')}:${String(now.getMinutes()).padStart(2,'0')}:${String(now.getSeconds()).padStart(2,'0')}`;
document.getElementById('current-time').textContent = timeStr;
}
setInterval(updateClock, 1000);
// Chart.js 趋势分析
const ctx = document.getElementById('flowChart').getContext('2d');
const flowChart = new Chart(ctx, {
type: 'bar',
data: {
labels: ['03/16', '03/17', '03/18', '03/19', '03/20', '03/21', '03/22'],
datasets: [
{
label: '工业污水',
data: [11200, 10800, 11500, 10200, 12100, 10600, 10867],
backgroundColor: 'rgba(245, 158, 11, 0.4)',
borderColor: '#f59e0b',
borderWidth: 1.5,
borderRadius: 3
},
{
label: '生活污水',
data: [7200, 7120, 7800, 7400, 7650, 7420, 7569],
backgroundColor: 'rgba(59, 130, 246, 0.4)',
borderColor: '#3b82f6',
borderWidth: 1.5,
borderRadius: 3
}
]
},
options: {
responsive: true,
maintainAspectRatio: false,
plugins: {
legend: { display: false }
},
scales: {
x: {
grid: { display: false },
ticks: { color: '#64748b', font: { size: 9 } }
},
y: {
beginAtZero: false,
grid: { color: 'rgba(255, 255, 255, 0.03)' },
ticks: { color: '#64748b', font: { size: 9 }, stepSize: 5000 }
}
}
}
});
</script>
</body>
</html>