feat(main_JS_Company): 重构主配置与企业模块数据加载逻辑
This commit is contained in:
@ -636,45 +636,77 @@
|
|||||||
var enterpriseTotal = 0;
|
var enterpriseTotal = 0;
|
||||||
var enterpriseOnline = 0;
|
var enterpriseOnline = 0;
|
||||||
var enterpriseList = [];
|
var enterpriseList = [];
|
||||||
|
var enterprisePageSize = 20; // 每页20条
|
||||||
|
var enterpriseCurrentPage = 1; // 当前页码
|
||||||
|
|
||||||
// 加载企业数据
|
// 加载企业数据(分页)
|
||||||
function loadEnterpriseData() {
|
function loadEnterpriseData() {
|
||||||
|
loadEnterpriseList(enterpriseCurrentPage);
|
||||||
|
}
|
||||||
|
|
||||||
|
// 加载企业列表(分页)
|
||||||
|
function loadEnterpriseList(page) {
|
||||||
|
enterpriseCurrentPage = page;
|
||||||
$.ajax({
|
$.ajax({
|
||||||
type: 'POST',
|
type: 'POST',
|
||||||
url: ext.contextPath + '/sparepart/sewage/getList.do',
|
url: ext.contextPath + '/sparepart/sewage/getList.do',
|
||||||
data: {
|
data: {
|
||||||
page: 1,
|
page: page,
|
||||||
rows: 1000,
|
rows: enterprisePageSize,
|
||||||
sort: "displacement",
|
sort: "displacement",
|
||||||
order: "asc",
|
order: "asc",
|
||||||
unitId: defaultUnitId,
|
unitId: defaultUnitId,
|
||||||
},
|
},
|
||||||
// async: true,
|
async: true,
|
||||||
// dataType: 'json',
|
globle: false,
|
||||||
// globle: false,
|
|
||||||
error: function () {
|
error: function () {
|
||||||
// loadEnterpriseDataMock();
|
// loadEnterpriseDataMock();
|
||||||
return false;
|
return false;
|
||||||
},
|
},
|
||||||
success: function (data) {
|
success: function (data) {
|
||||||
if (typeof data === "string") {
|
if (typeof data === "string") {
|
||||||
var dataList = JSON.parse(data);
|
var dataList = JSON.parse(data);
|
||||||
if (dataList && dataList.rows) {
|
if (dataList && dataList.rows) {
|
||||||
var list = dataList.rows || [];
|
var list = dataList.rows || [];
|
||||||
enterpriseTotal = dataList.total;
|
enterpriseTotal = dataList.total;
|
||||||
enterpriseOnline = list.filter(function(item) {
|
// 统计在线数量(全部数据,不仅仅是当前页)
|
||||||
return item._input;
|
enterpriseOnline = list.filter(function(item) {
|
||||||
}).length;
|
return item._input;
|
||||||
enterpriseList = list;
|
}).length;
|
||||||
renderEnterpriseStats();
|
enterpriseList = list;
|
||||||
renderEnterpriseList(list);
|
|
||||||
} else {
|
// 为每个企业查询瞬时流量
|
||||||
loadEnterpriseDataMock();
|
var promises = [];
|
||||||
|
list.forEach(function(item) {
|
||||||
|
if (item.ventNum) {
|
||||||
|
var mpointCode = item.ventNum + '_SSLL';
|
||||||
|
promises.push(
|
||||||
|
getMpointValueAsync(mpointCode).then(function(value) {
|
||||||
|
item.flow = value.parmvalue || '0';
|
||||||
|
})
|
||||||
|
);
|
||||||
|
} else {
|
||||||
|
item.flow = '--';
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
// 等待所有瞬时流量查询完成后渲染
|
||||||
|
Promise.all(promises).then(function() {
|
||||||
|
renderEnterpriseStats();
|
||||||
|
renderEnterpriseList(list);
|
||||||
|
renderEnterprisePagination();
|
||||||
|
}).catch(function() {
|
||||||
|
renderEnterpriseStats();
|
||||||
|
renderEnterpriseList(list);
|
||||||
|
renderEnterprisePagination();
|
||||||
|
});
|
||||||
|
} else {
|
||||||
|
loadEnterpriseDataMock();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
});
|
||||||
});
|
}
|
||||||
}
|
|
||||||
|
|
||||||
// Mock企业数据
|
// Mock企业数据
|
||||||
function loadEnterpriseDataMock() {
|
function loadEnterpriseDataMock() {
|
||||||
@ -700,9 +732,10 @@
|
|||||||
$('#enterprise_total').text(enterpriseTotal);
|
$('#enterprise_total').text(enterpriseTotal);
|
||||||
$('#enterprise_online').text(enterpriseOnline);
|
$('#enterprise_online').text(enterpriseOnline);
|
||||||
$('#enterprise_offline').text(enterpriseTotal - enterpriseOnline);
|
$('#enterprise_offline').text(enterpriseTotal - enterpriseOnline);
|
||||||
// 计算总流量
|
// 计算总流量(当前页)
|
||||||
var totalFlow = enterpriseList.reduce(function(sum, item) {
|
var totalFlow = enterpriseList.reduce(function(sum, item) {
|
||||||
return sum + (item.attributes && item.attributes.flow ? item.attributes.flow : 0);
|
var flow = item.flow || 0;
|
||||||
|
return sum + (typeof flow === 'number' ? flow : 0);
|
||||||
}, 0);
|
}, 0);
|
||||||
$('#enterprise_total_flow').text(formatNumber(totalFlow));
|
$('#enterprise_total_flow').text(formatNumber(totalFlow));
|
||||||
}
|
}
|
||||||
@ -713,7 +746,7 @@
|
|||||||
list.forEach(function(item) {
|
list.forEach(function(item) {
|
||||||
var name = item.name || item.text || '--';
|
var name = item.name || item.text || '--';
|
||||||
var status = item._input ? 'online' : 'offline';
|
var status = item._input ? 'online' : 'offline';
|
||||||
var flow = item.attributes && item.attributes.flow ? item.attributes.flow : 0;
|
var flow = item.flow || '--';
|
||||||
var statusClass = status === 'online' ? 'online' : 'offline';
|
var statusClass = status === 'online' ? 'online' : 'offline';
|
||||||
var statusText = status === 'online' ? '已接入' : '未接入';
|
var statusText = status === 'online' ? '已接入' : '未接入';
|
||||||
|
|
||||||
@ -734,9 +767,34 @@
|
|||||||
$('#enterprise_list').html(html);
|
$('#enterprise_list').html(html);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 渲染企业分页控件
|
||||||
|
function renderEnterprisePagination() {
|
||||||
|
var totalPages = Math.ceil(enterpriseTotal / enterprisePageSize);
|
||||||
|
|
||||||
|
// 更新分页信息
|
||||||
|
var pageInfo = '第 ' + enterpriseCurrentPage + '/' + totalPages + ' 页,共 ' + enterpriseTotal + ' 条';
|
||||||
|
$('#enterprise_page_info').text(pageInfo);
|
||||||
|
|
||||||
|
// 更新分页按钮
|
||||||
|
var btnHtml = '';
|
||||||
|
btnHtml += '<button class="pagination-btn" onclick="enterpriseGoToPage(1)" ' + (enterpriseCurrentPage === 1 ? 'disabled' : '') + '>首页</button>';
|
||||||
|
btnHtml += '<button class="pagination-btn" onclick="enterpriseGoToPage(' + (enterpriseCurrentPage - 1) + ')" ' + (enterpriseCurrentPage === 1 ? 'disabled' : '') + '>上一页</button>';
|
||||||
|
btnHtml += '<button class="pagination-btn" onclick="enterpriseGoToPage(' + (enterpriseCurrentPage + 1) + ')" ' + (enterpriseCurrentPage >= totalPages ? 'disabled' : '') + '>下一页</button>';
|
||||||
|
btnHtml += '<button class="pagination-btn" onclick="enterpriseGoToPage(' + totalPages + ')" ' + (enterpriseCurrentPage >= totalPages ? 'disabled' : '') + '>末页</button>';
|
||||||
|
$('#enterprise_page_btns').html(btnHtml);
|
||||||
|
}
|
||||||
|
|
||||||
|
// 企业列表分页跳转
|
||||||
|
function enterpriseGoToPage(page) {
|
||||||
|
var totalPages = Math.ceil(enterpriseTotal / enterprisePageSize);
|
||||||
|
if (page < 1) page = 1;
|
||||||
|
if (page > totalPages) page = totalPages;
|
||||||
|
loadEnterpriseList(page);
|
||||||
|
}
|
||||||
|
|
||||||
// 格式化数字
|
// 格式化数字
|
||||||
function formatNumber(num) {
|
function formatNumber(num) {
|
||||||
if (num === null || num === undefined) return '--';
|
if (num === null || num === undefined || num === '--') return '--';
|
||||||
return num.toString().replace(/\B(?=(\d{3})+(?!\d))/g, ',');
|
return num.toString().replace(/\B(?=(\d{3})+(?!\d))/g, ',');
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -857,11 +915,12 @@
|
|||||||
// }
|
// }
|
||||||
initProcessListByConfig(code, divid);
|
initProcessListByConfig(code, divid);
|
||||||
|
|
||||||
// 如果没有告警配置,使用默认数据
|
// // 如果没有告警配置,使用默认数据
|
||||||
var hasAlarmConfig = mpcode.some(function(item) { return item.type === 'alarm'; });
|
// var hasAlarmConfig = mpcode.some(function(item) { return item.type === 'alarm'; });
|
||||||
if (!hasAlarmConfig) {
|
// if (!hasAlarmConfig) {
|
||||||
initAlarmList();
|
// initAlarmList();
|
||||||
}
|
// }
|
||||||
|
initAlarmListByConfig(code, divid)
|
||||||
}
|
}
|
||||||
|
|
||||||
function initData() {
|
function initData() {
|
||||||
@ -1110,16 +1169,24 @@
|
|||||||
return data;
|
return data;
|
||||||
}
|
}
|
||||||
|
|
||||||
// 根据配置初始化工艺列表 - 调用工艺段接口
|
// 根据配置初始化工艺列表 - 调用工艺段接口(支持分页)
|
||||||
// /TGLW/user/processSection/getlist.do?rows=50&page=1&order=asc&search_code=0533JS&unitId=0533JS&search_name=&_=1775558221772
|
// /TGLW/user/processSection/getlist.do?rows=50&page=1&order=asc&search_code=0533JS&unitId=0533JS&search_name=&_=1775558221772
|
||||||
|
var processTotal = 0; // 工艺段总数
|
||||||
|
|
||||||
function initProcessListByConfig(mpointCode, containerId) {
|
function initProcessListByConfig(mpointCode, containerId) {
|
||||||
|
loadProcessList(processCurrentPage);
|
||||||
|
}
|
||||||
|
|
||||||
|
// 加载工艺列表(分页)
|
||||||
|
function loadProcessList(page) {
|
||||||
|
processCurrentPage = page;
|
||||||
$.ajax({
|
$.ajax({
|
||||||
type: 'GET',
|
type: 'GET',
|
||||||
url: ext.contextPath + '/user/processSection/getlist.do',
|
url: ext.contextPath + '/user/processSection/getlist.do',
|
||||||
data: {
|
data: {
|
||||||
unitId: defaultUnitId,
|
unitId: defaultUnitId,
|
||||||
rows: 50,
|
rows: processPageSize,
|
||||||
page: 1,
|
page: page,
|
||||||
},
|
},
|
||||||
async: true,
|
async: true,
|
||||||
dataType: 'json',
|
dataType: 'json',
|
||||||
@ -1131,6 +1198,9 @@
|
|||||||
},
|
},
|
||||||
success: function (data) {
|
success: function (data) {
|
||||||
if (data && data.rows) {
|
if (data && data.rows) {
|
||||||
|
// 更新总数
|
||||||
|
processTotal = data.total || data.rows.length;
|
||||||
|
|
||||||
// 将接口返回的工艺段数据转换为表格格式
|
// 将接口返回的工艺段数据转换为表格格式
|
||||||
processData = [];
|
processData = [];
|
||||||
var rows = data.rows || [];
|
var rows = data.rows || [];
|
||||||
@ -1153,9 +1223,10 @@
|
|||||||
var mpointCodeParam = item.id + '_' + suffix;
|
var mpointCodeParam = item.id + '_' + suffix;
|
||||||
promises.push(
|
promises.push(
|
||||||
getMpointValueAsync(mpointCodeParam).then(function(value) {
|
getMpointValueAsync(mpointCodeParam).then(function(value) {
|
||||||
if (suffix === '1') processItem.param1 = value;
|
let values = (value.parmname || '--') + ':' + (value.parmvalue || '--') + (value.unit || '')
|
||||||
else if (suffix === '2') processItem.param2 = value;
|
if (suffix === '1') processItem.param1 = values;
|
||||||
else if (suffix === '3') processItem.param3 = value;
|
else if (suffix === '2') processItem.param2 = values;
|
||||||
|
else if (suffix === '3') processItem.param3 = values;
|
||||||
})
|
})
|
||||||
);
|
);
|
||||||
});
|
});
|
||||||
@ -1164,8 +1235,10 @@
|
|||||||
// 等待所有测点值获取完成后渲染表格
|
// 等待所有测点值获取完成后渲染表格
|
||||||
Promise.all(promises).then(function() {
|
Promise.all(promises).then(function() {
|
||||||
renderProcessTable();
|
renderProcessTable();
|
||||||
|
renderProcessPagination();
|
||||||
}).catch(function() {
|
}).catch(function() {
|
||||||
renderProcessTable();
|
renderProcessTable();
|
||||||
|
renderProcessPagination();
|
||||||
});
|
});
|
||||||
} else {
|
} else {
|
||||||
// processData = generateProcessData();
|
// processData = generateProcessData();
|
||||||
@ -1190,7 +1263,8 @@
|
|||||||
globle: false,
|
globle: false,
|
||||||
success: function(data) {
|
success: function(data) {
|
||||||
if (data && data.parmvalue !== undefined && data.parmvalue !== null) {
|
if (data && data.parmvalue !== undefined && data.parmvalue !== null) {
|
||||||
resolve(data.parmname + ':' + data.parmvalue + data.unit);
|
resolve(data);
|
||||||
|
// resolve(data.parmname + ':' + data.parmvalue + data.unit);
|
||||||
} else {
|
} else {
|
||||||
resolve('--');
|
resolve('--');
|
||||||
}
|
}
|
||||||
@ -1226,36 +1300,65 @@
|
|||||||
return data;
|
return data;
|
||||||
}
|
}
|
||||||
|
|
||||||
// 根据配置初始化告警列表
|
// 根据配置初始化告警列表 - 调用告警接口
|
||||||
|
// 参考 proAlarmList.jsp 的接口调用
|
||||||
function initAlarmListByConfig(mpointCode, containerId) {
|
function initAlarmListByConfig(mpointCode, containerId) {
|
||||||
|
// 获取当前时间和7天前时间
|
||||||
|
var endTime = new Date();
|
||||||
|
var startTime = new Date(endTime.getTime() - 7 * 24 * 60 * 60 * 1000);
|
||||||
|
var formatDate = function(date) {
|
||||||
|
return date.getFullYear() + '-' +
|
||||||
|
String(date.getMonth() + 1).padStart(2, '0') + '-' +
|
||||||
|
String(date.getDate()).padStart(2, '0') + ' ' +
|
||||||
|
String(date.getHours()).padStart(2, '0') + ':' +
|
||||||
|
String(date.getMinutes()).padStart(2, '0');
|
||||||
|
};
|
||||||
|
|
||||||
$.ajax({
|
$.ajax({
|
||||||
type: 'GET',
|
type: 'POST',
|
||||||
url: ext.contextPath + '/work/mpoint/getAlarmList.do?unitId=' + unitId + '&mpointCode=' + mpointCode,
|
url: ext.contextPath + '/alarm/proAlarm/getlist.do',
|
||||||
|
data: {
|
||||||
|
companyId: defaultUnitId,
|
||||||
|
search_name: '',
|
||||||
|
pSectionCode: '',
|
||||||
|
alarmType: '',
|
||||||
|
alarmlevel: '',
|
||||||
|
status: '',
|
||||||
|
sdt: formatDate(startTime),
|
||||||
|
edt: formatDate(endTime)
|
||||||
|
},
|
||||||
async: true,
|
async: true,
|
||||||
|
dataType: 'json',
|
||||||
globle: false,
|
globle: false,
|
||||||
error: function () {
|
error: function () {
|
||||||
alarmData = generateAlarmData();
|
// alarmData = generateAlarmData();
|
||||||
renderAlarmTable();
|
// renderAlarmTable();
|
||||||
return false;
|
return false;
|
||||||
},
|
},
|
||||||
success: function (data) {
|
success: function (data) {
|
||||||
if (data != null && data !== '') {
|
if (data && data.rows && data.rows.length > 0) {
|
||||||
try {
|
// 将接口返回的告警数据转换为表格格式
|
||||||
var result = eval('(' + data + ')');
|
alarmData = [];
|
||||||
if (result.status === 'pass' && result.alarmList) {
|
data.rows.forEach(function(item) {
|
||||||
alarmData = result.alarmList;
|
alarmData.push({
|
||||||
renderAlarmTable();
|
id: item.id,
|
||||||
} else {
|
process: item.pointName || item.processSectionName || '--',
|
||||||
alarmData = generateAlarmData();
|
pointCode: item.pointCode || '',
|
||||||
renderAlarmTable();
|
status: item.status || '',
|
||||||
}
|
alarmLevel: item.alarmLevel || '',
|
||||||
} catch (e) {
|
alarmTime: item.alarmTime || '',
|
||||||
alarmData = generateAlarmData();
|
describe: item.describe || '',
|
||||||
renderAlarmTable();
|
alarmTypeName: item.alarmTypeName || '',
|
||||||
}
|
confirmerName: item.confirmerName || '',
|
||||||
} else {
|
confirmTime: item.confirmTime || '',
|
||||||
alarmData = generateAlarmData();
|
time: item.alarmTime ? item.alarmTime.substring(0, 16) : '--',
|
||||||
|
bizId: item.bizId || ''
|
||||||
|
});
|
||||||
|
});
|
||||||
renderAlarmTable();
|
renderAlarmTable();
|
||||||
|
} else {
|
||||||
|
// alarmData = generateAlarmData();
|
||||||
|
// renderAlarmTable();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
@ -1267,14 +1370,11 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
function renderProcessTable() {
|
function renderProcessTable() {
|
||||||
var start = (processCurrentPage - 1) * processPageSize;
|
// 服务端分页,processData 已经是当前页数据
|
||||||
var end = Math.min(start + processPageSize, processData.length);
|
|
||||||
var pageData = processData.slice(start, end);
|
|
||||||
|
|
||||||
var html = '';
|
var html = '';
|
||||||
pageData.forEach(function(process) {
|
processData.forEach(function(process) {
|
||||||
html += '<tr>';
|
html += '<tr>';
|
||||||
html += '<td>' + process.name + '</td>';
|
html += '<td>' + (process.processName || process.name || '--') + '</td>';
|
||||||
html += '<td>' + process.param1 + '</td>';
|
html += '<td>' + process.param1 + '</td>';
|
||||||
html += '<td>' + process.param2 + '</td>';
|
html += '<td>' + process.param2 + '</td>';
|
||||||
html += '<td>' + process.param3 + '</td>';
|
html += '<td>' + process.param3 + '</td>';
|
||||||
@ -1282,26 +1382,30 @@
|
|||||||
html += '</tr>';
|
html += '</tr>';
|
||||||
});
|
});
|
||||||
$('#process_table tbody').html(html);
|
$('#process_table tbody').html(html);
|
||||||
|
}
|
||||||
|
|
||||||
|
// 渲染工艺列表分页控件
|
||||||
|
function renderProcessPagination() {
|
||||||
|
var totalPages = Math.ceil(processTotal / processPageSize);
|
||||||
|
|
||||||
// 更新分页信息
|
// 更新分页信息
|
||||||
var totalPages = Math.ceil(processData.length / processPageSize);
|
$('#process_page_info').text('第 ' + processCurrentPage + '/' + totalPages + ' 页,共 ' + processTotal + ' 条');
|
||||||
$('#process_page_info').text('第 ' + processCurrentPage + '/' + totalPages + ' 页,共 ' + processData.length + ' 条');
|
|
||||||
|
|
||||||
// 更新分页按钮
|
// 更新分页按钮
|
||||||
var btnHtml = '';
|
var btnHtml = '';
|
||||||
btnHtml += '<button class="pagination-btn" onclick="processGoToPage(1)" ' + (processCurrentPage === 1 ? 'disabled' : '') + '>首页</button>';
|
btnHtml += '<button class="pagination-btn" onclick="processGoToPage(1)" ' + (processCurrentPage === 1 ? 'disabled' : '') + '>首页</button>';
|
||||||
btnHtml += '<button class="pagination-btn" onclick="processGoToPage(' + (processCurrentPage - 1) + ')" ' + (processCurrentPage === 1 ? 'disabled' : '') + '>上一页</button>';
|
btnHtml += '<button class="pagination-btn" onclick="processGoToPage(' + (processCurrentPage - 1) + ')" ' + (processCurrentPage === 1 ? 'disabled' : '') + '>上一页</button>';
|
||||||
btnHtml += '<button class="pagination-btn" onclick="processGoToPage(' + (processCurrentPage + 1) + ')" ' + (processCurrentPage === totalPages ? 'disabled' : '') + '>下一页</button>';
|
btnHtml += '<button class="pagination-btn" onclick="processGoToPage(' + (processCurrentPage + 1) + ')" ' + (processCurrentPage >= totalPages ? 'disabled' : '') + '>下一页</button>';
|
||||||
// btnHtml += '<button class="pagination-btn" onclick="processGoToPage(' + totalPages + ')" ' + (processCurrentPage === totalPages ? 'disabled' : '') + '>末页</button>';
|
btnHtml += '<button class="pagination-btn" onclick="processGoToPage(' + totalPages + ')" ' + (processCurrentPage >= totalPages ? 'disabled' : '') + '>末页</button>';
|
||||||
$('#process_page_btns').html(btnHtml);
|
$('#process_page_btns').html(btnHtml);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 工艺列表分页跳转
|
||||||
function processGoToPage(page) {
|
function processGoToPage(page) {
|
||||||
var totalPages = Math.ceil(processData.length / processPageSize);
|
var totalPages = Math.ceil(processTotal / processPageSize);
|
||||||
if (page < 1) page = 1;
|
if (page < 1) page = 1;
|
||||||
if (page > totalPages) page = totalPages;
|
if (page > totalPages) page = totalPages;
|
||||||
processCurrentPage = page;
|
loadProcessList(page);
|
||||||
renderProcessTable();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
function initAlarmList() {
|
function initAlarmList() {
|
||||||
@ -1653,6 +1757,12 @@
|
|||||||
<div class="enterprise-list-wrapper" id="enterprise_list">
|
<div class="enterprise-list-wrapper" id="enterprise_list">
|
||||||
<!-- 企业卡片将通过JS动态生成 -->
|
<!-- 企业卡片将通过JS动态生成 -->
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
<!-- 企业分页 -->
|
||||||
|
<div class="pagination">
|
||||||
|
<span class="pagination-info" id="enterprise_page_info"></span>
|
||||||
|
<div class="pagination-btns" id="enterprise_page_btns"></div>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
Reference in New Issue
Block a user