From 65c2a978b80504c593dc4c9d986e76124f1f1441 Mon Sep 17 00:00:00 2001 From: Rue Ji Date: Tue, 14 Apr 2026 20:13:47 +0800 Subject: [PATCH] =?UTF-8?q?feat(main=5FJS=5FCompany):=20=E9=87=8D=E6=9E=84?= =?UTF-8?q?=E4=B8=BB=E9=85=8D=E7=BD=AE=E4=B8=8E=E4=BC=81=E4=B8=9A=E6=A8=A1?= =?UTF-8?q?=E5=9D=97=E6=95=B0=E6=8D=AE=E5=8A=A0=E8=BD=BD=E9=80=BB=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/webapp/jsp/main_JS_Company.jsp | 254 +++++++++++++++++------- 1 file changed, 182 insertions(+), 72 deletions(-) diff --git a/src/main/webapp/jsp/main_JS_Company.jsp b/src/main/webapp/jsp/main_JS_Company.jsp index ff3e7c01..5b9f50db 100644 --- a/src/main/webapp/jsp/main_JS_Company.jsp +++ b/src/main/webapp/jsp/main_JS_Company.jsp @@ -636,45 +636,77 @@ var enterpriseTotal = 0; var enterpriseOnline = 0; var enterpriseList = []; + var enterprisePageSize = 20; // 每页20条 + var enterpriseCurrentPage = 1; // 当前页码 - // 加载企业数据 + // 加载企业数据(分页) function loadEnterpriseData() { + loadEnterpriseList(enterpriseCurrentPage); + } + + // 加载企业列表(分页) + function loadEnterpriseList(page) { + enterpriseCurrentPage = page; $.ajax({ type: 'POST', url: ext.contextPath + '/sparepart/sewage/getList.do', data: { - page: 1, - rows: 1000, + page: page, + rows: enterprisePageSize, sort: "displacement", order: "asc", unitId: defaultUnitId, }, - // async: true, - // dataType: 'json', - // globle: false, + async: true, + globle: false, error: function () { // loadEnterpriseDataMock(); return false; }, success: function (data) { - if (typeof data === "string") { - var dataList = JSON.parse(data); - if (dataList && dataList.rows) { - var list = dataList.rows || []; - enterpriseTotal = dataList.total; - enterpriseOnline = list.filter(function(item) { - return item._input; - }).length; - enterpriseList = list; - renderEnterpriseStats(); - renderEnterpriseList(list); - } else { - loadEnterpriseDataMock(); + if (typeof data === "string") { + var dataList = JSON.parse(data); + if (dataList && dataList.rows) { + var list = dataList.rows || []; + enterpriseTotal = dataList.total; + // 统计在线数量(全部数据,不仅仅是当前页) + enterpriseOnline = list.filter(function(item) { + return item._input; + }).length; + enterpriseList = list; + + // 为每个企业查询瞬时流量 + 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企业数据 function loadEnterpriseDataMock() { @@ -700,9 +732,10 @@ $('#enterprise_total').text(enterpriseTotal); $('#enterprise_online').text(enterpriseOnline); $('#enterprise_offline').text(enterpriseTotal - enterpriseOnline); - // 计算总流量 + // 计算总流量(当前页) 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); $('#enterprise_total_flow').text(formatNumber(totalFlow)); } @@ -713,7 +746,7 @@ list.forEach(function(item) { var name = item.name || item.text || '--'; 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 statusText = status === 'online' ? '已接入' : '未接入'; @@ -734,9 +767,34 @@ $('#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 += ''; + btnHtml += ''; + btnHtml += ''; + btnHtml += ''; + $('#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) { - if (num === null || num === undefined) return '--'; + if (num === null || num === undefined || num === '--') return '--'; return num.toString().replace(/\B(?=(\d{3})+(?!\d))/g, ','); } @@ -857,11 +915,12 @@ // } initProcessListByConfig(code, divid); - // 如果没有告警配置,使用默认数据 - var hasAlarmConfig = mpcode.some(function(item) { return item.type === 'alarm'; }); - if (!hasAlarmConfig) { - initAlarmList(); - } + // // 如果没有告警配置,使用默认数据 + // var hasAlarmConfig = mpcode.some(function(item) { return item.type === 'alarm'; }); + // if (!hasAlarmConfig) { + // initAlarmList(); + // } + initAlarmListByConfig(code, divid) } function initData() { @@ -1110,16 +1169,24 @@ return data; } - // 根据配置初始化工艺列表 - 调用工艺段接口 + // 根据配置初始化工艺列表 - 调用工艺段接口(支持分页) // /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) { + loadProcessList(processCurrentPage); + } + + // 加载工艺列表(分页) + function loadProcessList(page) { + processCurrentPage = page; $.ajax({ type: 'GET', url: ext.contextPath + '/user/processSection/getlist.do', data: { unitId: defaultUnitId, - rows: 50, - page: 1, + rows: processPageSize, + page: page, }, async: true, dataType: 'json', @@ -1131,6 +1198,9 @@ }, success: function (data) { if (data && data.rows) { + // 更新总数 + processTotal = data.total || data.rows.length; + // 将接口返回的工艺段数据转换为表格格式 processData = []; var rows = data.rows || []; @@ -1153,9 +1223,10 @@ var mpointCodeParam = item.id + '_' + suffix; promises.push( getMpointValueAsync(mpointCodeParam).then(function(value) { - if (suffix === '1') processItem.param1 = value; - else if (suffix === '2') processItem.param2 = value; - else if (suffix === '3') processItem.param3 = value; + let values = (value.parmname || '--') + ':' + (value.parmvalue || '--') + (value.unit || '') + if (suffix === '1') processItem.param1 = values; + else if (suffix === '2') processItem.param2 = values; + else if (suffix === '3') processItem.param3 = values; }) ); }); @@ -1164,8 +1235,10 @@ // 等待所有测点值获取完成后渲染表格 Promise.all(promises).then(function() { renderProcessTable(); + renderProcessPagination(); }).catch(function() { renderProcessTable(); + renderProcessPagination(); }); } else { // processData = generateProcessData(); @@ -1190,7 +1263,8 @@ globle: false, success: function(data) { 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 { resolve('--'); } @@ -1226,36 +1300,65 @@ return data; } - // 根据配置初始化告警列表 + // 根据配置初始化告警列表 - 调用告警接口 + // 参考 proAlarmList.jsp 的接口调用 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({ - type: 'GET', - url: ext.contextPath + '/work/mpoint/getAlarmList.do?unitId=' + unitId + '&mpointCode=' + mpointCode, + type: 'POST', + url: ext.contextPath + '/alarm/proAlarm/getlist.do', + data: { + companyId: defaultUnitId, + search_name: '', + pSectionCode: '', + alarmType: '', + alarmlevel: '', + status: '', + sdt: formatDate(startTime), + edt: formatDate(endTime) + }, async: true, + dataType: 'json', globle: false, error: function () { - alarmData = generateAlarmData(); - renderAlarmTable(); + // alarmData = generateAlarmData(); + // renderAlarmTable(); return false; }, success: function (data) { - if (data != null && data !== '') { - try { - var result = eval('(' + data + ')'); - if (result.status === 'pass' && result.alarmList) { - alarmData = result.alarmList; - renderAlarmTable(); - } else { - alarmData = generateAlarmData(); - renderAlarmTable(); - } - } catch (e) { - alarmData = generateAlarmData(); - renderAlarmTable(); - } - } else { - alarmData = generateAlarmData(); + if (data && data.rows && data.rows.length > 0) { + // 将接口返回的告警数据转换为表格格式 + alarmData = []; + data.rows.forEach(function(item) { + alarmData.push({ + id: item.id, + process: item.pointName || item.processSectionName || '--', + pointCode: item.pointCode || '', + status: item.status || '', + alarmLevel: item.alarmLevel || '', + alarmTime: item.alarmTime || '', + describe: item.describe || '', + alarmTypeName: item.alarmTypeName || '', + confirmerName: item.confirmerName || '', + confirmTime: item.confirmTime || '', + time: item.alarmTime ? item.alarmTime.substring(0, 16) : '--', + bizId: item.bizId || '' + }); + }); renderAlarmTable(); + } else { + // alarmData = generateAlarmData(); + // renderAlarmTable(); } } }); @@ -1267,14 +1370,11 @@ } function renderProcessTable() { - var start = (processCurrentPage - 1) * processPageSize; - var end = Math.min(start + processPageSize, processData.length); - var pageData = processData.slice(start, end); - + // 服务端分页,processData 已经是当前页数据 var html = ''; - pageData.forEach(function(process) { + processData.forEach(function(process) { html += ''; - html += '' + process.name + ''; + html += '' + (process.processName || process.name || '--') + ''; html += '' + process.param1 + ''; html += '' + process.param2 + ''; html += '' + process.param3 + ''; @@ -1282,26 +1382,30 @@ 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 + ' 页,共 ' + processData.length + ' 条'); + $('#process_page_info').text('第 ' + processCurrentPage + '/' + totalPages + ' 页,共 ' + processTotal + ' 条'); // 更新分页按钮 var btnHtml = ''; btnHtml += ''; btnHtml += ''; - btnHtml += ''; - // btnHtml += ''; + btnHtml += ''; + btnHtml += ''; $('#process_page_btns').html(btnHtml); } + // 工艺列表分页跳转 function processGoToPage(page) { - var totalPages = Math.ceil(processData.length / processPageSize); + var totalPages = Math.ceil(processTotal / processPageSize); if (page < 1) page = 1; if (page > totalPages) page = totalPages; - processCurrentPage = page; - renderProcessTable(); + loadProcessList(page); } function initAlarmList() { @@ -1653,6 +1757,12 @@
+ + +