Merge branch 'deng' into deng-release

This commit is contained in:
Timer
2026-03-25 21:05:48 +08:00
2 changed files with 300 additions and 97 deletions

View File

@ -44,6 +44,7 @@
background: #fff; background: #fff;
border-radius: 8px; border-radius: 8px;
box-shadow: 0 2px 8px rgba(0,0,0,0.08); box-shadow: 0 2px 8px rgba(0,0,0,0.08);
height: 100%;
overflow: hidden; overflow: hidden;
} }
@ -77,9 +78,10 @@
/* 上部分区域 */ /* 上部分区域 */
.top-section { .top-section {
display: grid; display: grid;
grid-template-columns: 280px 1fr 200px; grid-template-columns: 220px 1fr 220px;
gap: 15px; gap: 15px;
margin-bottom: 15px; margin-bottom: 15px;
align-items: start;
} }
/* 进水累计卡片 - 美化样式 */ /* 进水累计卡片 - 美化样式 */
@ -87,42 +89,65 @@
display: flex; display: flex;
flex-direction: column; flex-direction: column;
gap: 10px; gap: 10px;
padding: 15px; padding: 10px;
/*background: linear-gradient(180deg, #f8fbfd 0%, #f0f5f9 100%);*/ }
.inflow-group {
border-radius: 10px;
overflow: hidden;
box-shadow: 0 2px 8px rgba(0,0,0,0.06);
}
.inflow-group-title {
font-size: 12px;
font-weight: bold;
padding: 6px 10px;
color: #fff;
}
.inflow-group.industrial .inflow-group-title {
background: linear-gradient(135deg, #667eea 0%, #1890ff 100%);
}
.inflow-group.domestic .inflow-group-title {
background: linear-gradient(135deg, #11998e 0%, #38ef7d 100%);
}
.inflow-group-content {
display: flex;
flex-direction: column;
gap: 1px;
background: #e8e8e8;
} }
.inflow-item { .inflow-item {
display: flex; display: flex;
align-items: center; align-items: center;
padding: 15px; padding: 10px;
border-radius: 12px; background: #fff;
position: relative; position: relative;
overflow: hidden; overflow: hidden;
box-shadow: 0 4px 15px rgba(0,0,0,0.08); transition: background 0.2s;
transition: transform 0.2s, box-shadow 0.2s;
} }
.inflow-item:hover { .inflow-item:hover {
transform: translateY(-2px); background: #f5f7fa;
box-shadow: 0 6px 20px rgba(0,0,0,0.12);
} }
.inflow-item.industrial { .inflow-item.industrial-inflow {
background: linear-gradient(135deg, #667eea 0%, #1890ff 100%); border-left: 3px solid #378dcc;
} }
.inflow-item.domestic { .inflow-item.industrial-outflow {
background: linear-gradient(135deg, #11998e 0%, #38ef7d 100%); border-left: 3px solid #40a9ff;
} }
.inflow-item::before { .inflow-item.domestic-inflow {
content: ''; border-left: 3px solid #52c41a;
position: absolute; }
top: -50%;
right: -50%; .inflow-item.domestic-outflow {
width: 100%; border-left: 3px solid #2ecc71;
height: 100%;
background: radial-gradient(circle, rgba(255,255,255,0.15) 0%, transparent 70%);
} }
.inflow-content { .inflow-content {
@ -130,8 +155,8 @@
} }
.inflow-item .label { .inflow-item .label {
font-size: 15px; font-size: 12px;
color: rgba(255,255,255,0.85); color: #666;
margin-bottom: 4px; margin-bottom: 4px;
display: flex; display: flex;
} }
@ -144,25 +169,24 @@
} }
.inflow-item .value { .inflow-item .value {
font-size: 26px; font-size: 20px;
font-weight: bold; font-weight: bold;
color: #fff; color: #333;
text-shadow: 0 2px 4px rgba(0,0,0,0.1);
} }
.inflow-item .unit { .inflow-item .unit {
font-size: 13px; font-size: 11px;
color: rgba(255,255,255,0.85); color: #999;
} }
/* 图表卡片 */ /* 图表卡片 */
.chart-container { .chart-container {
height: 220px; height: 360px;
} }
/* 设备运行卡片 */ /* 设备运行卡片 */
.device-list { .device-list {
max-height: 220px; max-height: 360px;
overflow-y: auto; overflow-y: auto;
} }
@ -205,73 +229,123 @@
} }
/* 泵站详情 */ /* 泵站详情 */
.pump-stations { .pump-section-wrapper {
display: grid; display: grid;
grid-template-columns: repeat(4, 1fr); grid-template-columns: 1fr 1fr;
gap: 20px;
}
.pump-category {
background: #f8f9fa;
border-radius: 10px;
overflow: hidden;
}
.pump-category-header {
padding: 10px 15px;
font-size: 14px;
font-weight: bold;
color: #fff;
}
.pump-category.industrial .pump-category-header {
background: linear-gradient(135deg, #667eea 0%, #1890ff 100%);
}
.pump-category.domestic .pump-category-header {
background: linear-gradient(135deg, #11998e 0%, #38ef7d 100%);
}
.pump-category-content {
padding: 15px;
display: flex;
flex-direction: column;
gap: 15px; gap: 15px;
} }
.pump-station { .pump-station {
background: #f8f9fa; background: #fff;
border-radius: 6px; border-radius: 8px;
padding: 12px; padding: 12px;
box-shadow: 0 2px 6px rgba(0,0,0,0.04);
} }
.pump-station-title { .pump-station-header {
font-size: 14px; display: flex;
font-weight: bold; justify-content: space-between;
color: #0c4377; align-items: center;
margin-bottom: 12px; margin-bottom: 10px;
padding-bottom: 8px; padding-bottom: 8px;
border-bottom: 1px solid #e8e8e8; border-bottom: 1px solid #e8e8e8;
} }
.pump-station-title {
font-size: 13px;
font-weight: bold;
color: #0c4377;
}
.pump-station-params {
display: flex;
gap: 15px;
}
.pump-param {
font-size: 12px;
color: #666;
}
.pump-param-value {
font-weight: bold;
color: #333;
}
.pump-list { .pump-list {
display: flex; display: flex;
gap: 10px; gap: 8px;
justify-content: center; flex-wrap: wrap;
} }
.pump-item { .pump-item {
display: flex; display: flex;
flex-direction: column; flex-direction: column;
align-items: center; align-items: center;
width: 50px; width: 42px;
} }
.pump-icon { .pump-icon {
width: 40px; width: 36px;
height: 40px; height: 36px;
border-radius: 50%; border-radius: 50%;
display: flex; display: flex;
align-items: center; align-items: center;
justify-content: center; justify-content: center;
font-size: 13px; font-size: 11px;
color: #fff; color: #fff;
margin-bottom: 4px; margin-bottom: 3px;
} }
.pump-icon.on { .pump-icon.running {
background: linear-gradient(135deg, #52c41a 0%, #389e0d 100%); background: linear-gradient(135deg, #52c41a 0%, #389e0d 100%);
} }
.pump-icon.off { .pump-icon.stopped {
background: linear-gradient(135deg, #d9d9d9 0%, #bfbfbf 100%); background: linear-gradient(135deg, #d9d9d9 0%, #bfbfbf 100%);
} }
.pump-icon.error { .pump-icon.fault {
background: linear-gradient(135deg, #ff4d4f 0%, #cf1322 100%); background: linear-gradient(135deg, #ff4d4f 0%, #cf1322 100%);
} }
.pump-name { .pump-name {
font-size: 12px; font-size: 11px;
color: #666; color: #666;
} }
/* 下部分区域 */ /* 下部分区域 */
.bottom-section { .bottom-section {
display: grid; display: grid;
grid-template-columns: 1fr 1fr; grid-template-columns: 60% 1fr;
gap: 15px; gap: 15px;
margin-bottom: 15px; margin-bottom: 15px;
} }
@ -426,10 +500,11 @@
}); });
function initData() { function initData() {
// 初始化工业进水累计 // 初始化进水累计
$('#industrial_value').text('12,580'); $('#industrial_inflow_value').text('12,580');
// 初始化生活进水累计 $('#industrial_outflow_value').text('12,380');
$('#domestic_value').text('8,650'); $('#domestic_inflow_value').text('8,650');
$('#domestic_outflow_value').text('8,450');
// 初始化设备运行列表 // 初始化设备运行列表
initDeviceList(); initDeviceList();
@ -470,29 +545,35 @@
} }
function initPumpStations() { function initPumpStations() {
var stations = [ // 初始化水质参数
{name: '卫八泵站', pumps: ['on', 'on', 'off', 'on', 'error']}, $('#chunhua_cod').text('156');
{name: '九号泵站', pumps: ['on', 'off', 'on', 'on', 'off']}, $('#weibalu_cod').text('142');
{name: '春华泵站', pumps: ['on', 'on', 'on', 'off', 'on']}, $('#pump8_cod').text('98');
{name: '厂内泵站', pumps: ['on', 'off', 'off', 'on', 'on']} $('#pump8_nh3n').text('12.5');
]; $('#pump9_cod').text('105');
$('#pump9_nh3n').text('14.2');
// 春华路泵站 - 6个泵
renderPumpList('chunhua_pumps', ['running', 'running', 'stopped', 'running', 'fault', 'running']);
// 卫八路泵站 - 6个泵
renderPumpList('weibalu_pumps', ['running', 'stopped', 'running', 'running', 'stopped', 'running']);
// 8号泵站 - 6个泵
renderPumpList('pump8_pumps', ['running', 'running', 'running', 'stopped', 'running', 'fault']);
// 9号泵站 - 8个泵
renderPumpList('pump9_pumps', ['running', 'stopped', 'running', 'running', 'running', 'stopped', 'running', 'running']);
}
function renderPumpList(containerId, pumps) {
var html = ''; var html = '';
stations.forEach(function(station) { pumps.forEach(function(status, index) {
html += '<div class="pump-station">'; var iconClass = status === 'running' ? 'running' : status === 'stopped' ? 'stopped' : 'fault';
html += '<div class="pump-station-title">' + station.name + '</div>'; var iconText = status === 'running' ? '运' : status === 'stopped' ? '停' : '故';
html += '<div class="pump-list">';
station.pumps.forEach(function(status, index) {
var iconClass = status === 'on' ? 'on' : status === 'off' ? 'off' : 'error';
var iconText = status === 'on' ? '启' : status === 'off' ? '关' : '异';
html += '<div class="pump-item">'; html += '<div class="pump-item">';
html += '<div class="pump-icon ' + iconClass + '">' + iconText + '</div>'; html += '<div class="pump-icon ' + iconClass + '">' + iconText + '</div>';
html += '<span class="pump-name">泵' + (index + 1) + '#</span>'; html += '<span class="pump-name">泵' + (index + 1) + '</span>';
html += '</div>'; html += '</div>';
}); });
html += '</div></div>'; $('#' + containerId).html(html);
});
$('#pump_stations').html(html);
} }
// 生成工艺列表mock数据 // 生成工艺列表mock数据
@ -635,7 +716,7 @@
} }
}, },
legend: { legend: {
data: ['工业进水', '生活进水'], data: ['工业进水', '工业出水', '生活进水', '生活出水'],
top: 5, top: 5,
textStyle: { textStyle: {
fontSize: 12 fontSize: 12
@ -687,7 +768,7 @@
{ {
name: '工业进水', name: '工业进水',
type: 'bar', type: 'bar',
barWidth: '30%', barWidth: '20%',
itemStyle: { itemStyle: {
color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [ color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [
{offset: 0, color: '#378dcc'}, {offset: 0, color: '#378dcc'},
@ -696,10 +777,22 @@
}, },
data: [12000, 11500, 13000, 12500, 11800, 12200, 12580] data: [12000, 11500, 13000, 12500, 11800, 12200, 12580]
}, },
{
name: '工业出水',
type: 'bar',
barWidth: '20%',
itemStyle: {
color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [
{offset: 0, color: '#5b8def'},
{offset: 1, color: '#40a9ff'}
])
},
data: [11800, 11300, 12800, 12300, 11600, 12000, 12380]
},
{ {
name: '生活进水', name: '生活进水',
type: 'bar', type: 'bar',
barWidth: '30%', barWidth: '20%',
itemStyle: { itemStyle: {
color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [ color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [
{offset: 0, color: '#52c41a'}, {offset: 0, color: '#52c41a'},
@ -707,6 +800,18 @@
]) ])
}, },
data: [8500, 8200, 9000, 8800, 8600, 8400, 8650] data: [8500, 8200, 9000, 8800, 8600, 8400, 8650]
},
{
name: '生活出水',
type: 'bar',
barWidth: '20%',
itemStyle: {
color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [
{offset: 0, color: '#2ecc71'},
{offset: 1, color: '#58d68d'}
])
},
data: [8300, 8000, 8800, 8600, 8400, 8200, 8450]
} }
] ]
}; };
@ -723,36 +828,64 @@
<div class="page-container"> <div class="page-container">
<!-- 上部分区域 --> <!-- 上部分区域 -->
<div class="top-section"> <div class="top-section">
<!-- 进水累计(工业+生活合并,上下布局 --> <!-- 进水累计(工业+生活,上下结构 -->
<div class="card"> <div class="card">
<div class="card-header">水累计</div> <div class="card-header">污水进出水累计</div>
<div class="card-body" style="padding: 0;"> <div class="card-body" style="padding: 0;">
<div class="inflow-card"> <div class="inflow-card">
<div class="inflow-item industrial"> <div class="inflow-group industrial">
<div class="inflow-group-title">工业污水</div>
<div class="inflow-group-content">
<div class="inflow-item industrial-inflow">
<div class="inflow-content"> <div class="inflow-content">
<span class="label">工业当日总量</span> <span class="label">进水累计</span>
<div class="value-row"> <div class="value-row">
<span class="value" id="industrial_value">--</span> <span class="value" id="industrial_inflow_value">--</span>
<span class="unit">m³</span> <span class="unit">m³</span>
</div> </div>
</div> </div>
</div> </div>
<div class="inflow-item domestic"> <div class="inflow-item industrial-outflow">
<div class="inflow-content"> <div class="inflow-content">
<span class="label">生活当日总量</span> <span class="label">出水累计</span>
<div class="value-row"> <div class="value-row">
<span class="value" id="domestic_value">--</span> <span class="value" id="industrial_outflow_value">--</span>
<span class="unit">m³</span> <span class="unit">m³</span>
</div> </div>
</div> </div>
</div> </div>
</div> </div>
</div> </div>
<div class="inflow-group domestic">
<div class="inflow-group-title">生活污水</div>
<div class="inflow-group-content">
<div class="inflow-item domestic-inflow">
<div class="inflow-content">
<span class="label">进水累计</span>
<div class="value-row">
<span class="value" id="domestic_inflow_value">--</span>
<span class="unit">m³</span>
</div>
</div>
</div>
<div class="inflow-item domestic-outflow">
<div class="inflow-content">
<span class="label">出水累计</span>
<div class="value-row">
<span class="value" id="domestic_outflow_value">--</span>
<span class="unit">m³</span>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div> </div>
<!-- 进水流量7天日趋势 --> <!-- 进水流量7天日趋势 -->
<div class="card"> <div class="card">
<div class="card-header">水流量7天日趋势</div> <div class="card-header">水流量7天日趋势</div>
<div class="card-body"> <div class="card-body">
<div id="flow_chart" class="chart-container"></div> <div id="flow_chart" class="chart-container"></div>
</div> </div>
@ -818,8 +951,63 @@
<div class="pump-section"> <div class="pump-section">
<div class="card"> <div class="card">
<div class="card-header">泵站详情</div> <div class="card-header">泵站详情</div>
<div class="card-body"> <div class="card-body" style="padding: 10px;">
<div class="pump-stations" id="pump_stations"></div> <div class="pump-section-wrapper">
<!-- 工业污水泵站 -->
<div class="pump-category industrial">
<div class="pump-category-header">工业污水泵站</div>
<div class="pump-category-content">
<!-- 春华路泵站 -->
<div class="pump-station">
<div class="pump-station-header">
<span class="pump-station-title">春华路泵站</span>
<div class="pump-station-params">
<span class="pump-param">COD: <span class="pump-param-value" id="chunhua_cod">--</span> mg/L</span>
</div>
</div>
<div class="pump-list" id="chunhua_pumps"></div>
</div>
<!-- 卫八路泵站 -->
<div class="pump-station">
<div class="pump-station-header">
<span class="pump-station-title">卫八路泵站</span>
<div class="pump-station-params">
<span class="pump-param">COD: <span class="pump-param-value" id="weibalu_cod">--</span> mg/L</span>
</div>
</div>
<div class="pump-list" id="weibalu_pumps"></div>
</div>
</div>
</div>
<!-- 生活污水泵站 -->
<div class="pump-category domestic">
<div class="pump-category-header">生活污水泵站</div>
<div class="pump-category-content">
<!-- 8号泵站 -->
<div class="pump-station">
<div class="pump-station-header">
<span class="pump-station-title">8号泵站</span>
<div class="pump-station-params">
<span class="pump-param">COD: <span class="pump-param-value" id="pump8_cod">--</span> mg/L</span>
<span class="pump-param">NH3N: <span class="pump-param-value" id="pump8_nh3n">--</span> mg/L</span>
</div>
</div>
<div class="pump-list" id="pump8_pumps"></div>
</div>
<!-- 9号泵站 -->
<div class="pump-station">
<div class="pump-station-header">
<span class="pump-station-title">9号泵站</span>
<div class="pump-station-params">
<span class="pump-param">COD: <span class="pump-param-value" id="pump9_cod">--</span> mg/L</span>
<span class="pump-param">NH3N: <span class="pump-param-value" id="pump9_nh3n">--</span> mg/L</span>
</div>
</div>
<div class="pump-list" id="pump9_pumps"></div>
</div>
</div>
</div>
</div>
</div> </div>
</div> </div>
</div> </div>

View File

@ -29,6 +29,19 @@
openModal('subModal'); openModal('subModal');
}); });
}; };
// 查看曲线(瞬时流量、累计流量)
var showLineFun = function(ventNum, type) {
if (!ventNum) {
showAlert('w', '请关联点位ID', 'mainAlertdiv');
return;
}
var mpcode = ventNum + '_' + type;
$.post(ext.contextPath + '/data/showOnlyLine.do', {mpcode: mpcode, unitId: unitId}, function(data) {
$("#subDiv").html(data);
openModal('curveModal');
});
};
var editFun = function(id) { var editFun = function(id) {
$.post(ext.contextPath + '/sparepart/sewage/edit.do', {id:id} , function(data) { $.post(ext.contextPath + '/sparepart/sewage/edit.do', {id:id} , function(data) {
$("#subDiv").html(data); $("#subDiv").html(data);
@ -339,7 +352,9 @@
width: 120, // 定义列的宽度单位为像素px width: 120, // 定义列的宽度单位为像素px
formatter: function (value, row, index) { formatter: function (value, row, index) {
var buts= ''; var buts= '';
buts+= '<button class="btn btn-default btn-sm" title="查看点位" onclick="showpointFun(\'' + row.name + '\')"><i class="fa fa-check-square-o"></i><span class="hidden-md hidden-lg"> 查看点位</span></button>'; buts+= '<button class="btn btn-default btn-sm" title="瞬时流量" onclick="showLineFun(\'' + (row.ventNum || '') + '\', \'SSLL\')"><i class="fa fa-line-chart"></i></button>';
buts+= '<button class="btn btn-default btn-sm" title="累计流量" onclick="showLineFun(\'' + (row.ventNum || '') + '\', \'LJLL\')"><i class="fa fa-area-chart"></i></button>';
buts+= '<button class="btn btn-default btn-sm" title="查看点位" onclick="showpointFun(\'' + row.name + '\')"><i class="fa fa-check-square-o"></i></button>';
buts+= '<security:authorize buttonUrl="sparepart/sewage/edit.do">'; buts+= '<security:authorize buttonUrl="sparepart/sewage/edit.do">';
buts+= '<button class="btn btn-default btn-sm" title="编辑" onclick="editFun(\'' + row.id + '\')"><i class="fa fa-edit"></i><span class="hidden-md hidden-lg"> 编辑</span></button>'; buts+= '<button class="btn btn-default btn-sm" title="编辑" onclick="editFun(\'' + row.id + '\')"><i class="fa fa-edit"></i><span class="hidden-md hidden-lg"> 编辑</span></button>';
buts+= '</security:authorize>'; buts+= '</security:authorize>';