| | |
| | | /* 表格容器 */ |
| | | .table-container { |
| | | flex: 1; |
| | | overflow: hidden; |
| | | overflow-x: hidden; |
| | | overflow-y: auto; |
| | | background: rgba(17, 24, 39, 0.5); |
| | | border-radius: 12px; |
| | | border: 1px solid rgba(59, 130, 246, 0.3); |
| | | backdrop-filter: blur(10px); |
| | | } |
| | | |
| | | /* 表格容器滚动条样式 */ |
| | | .table-container::-webkit-scrollbar { |
| | | width: 8px; |
| | | } |
| | | |
| | | .table-container::-webkit-scrollbar-track { |
| | | background: rgba(30, 41, 59, 0.3); |
| | | border-radius: 4px; |
| | | } |
| | | |
| | | .table-container::-webkit-scrollbar-thumb { |
| | | background: #3b82f6; |
| | | border-radius: 4px; |
| | | } |
| | | |
| | | .table-container::-webkit-scrollbar-thumb:hover { |
| | | background: #60a5fa; |
| | | } |
| | | |
| | | /* 现代化表格样式 */ |
| | | .modern-table { |
| | | width: 100%; |
| | | height: 100%; |
| | | table-layout: fixed; |
| | | border-collapse: separate; |
| | | border-spacing: 0; |
| | | background: transparent; |
| | | color: #e2e8f0; |
| | | } |
| | | |
| | | /* 设置表格列宽,确保适应容器 */ |
| | | .modern-table th, |
| | | .modern-table td { |
| | | white-space: nowrap; |
| | | overflow: hidden; |
| | | text-overflow: ellipsis; |
| | | } |
| | | |
| | | .modern-table thead { |
| | | position: sticky; |
| | | top: 0; |
| | | z-index: 10; |
| | | } |
| | | |
| | | /* 确保表格容器有最大高度,以便滚动 */ |
| | | .table-container { |
| | | max-height: calc(100vh - 200px); |
| | | } |
| | | |
| | | .modern-table th { |
| | |
| | | |
| | | .output-log { |
| | | width: 100%; |
| | | height: 150px; |
| | | height: 100px; |
| | | background: rgba(0, 0, 0, 0.3); |
| | | border: 1px solid rgba(59, 130, 246, 0.3); |
| | | border-radius: 8px; |
| | | color: #4ade80; |
| | | font-family: 'Courier New', monospace; |
| | | font-size: 12px; |
| | | padding: 15px; |
| | | padding: 10px; |
| | | resize: vertical; |
| | | } |
| | | |
| | |
| | | <main> |
| | | <!-- 站点状态数据监控版 --> |
| | | <section id="site-monitor" class="main-board"> |
| | | <div class="dashboard-header"> |
| | | <h2 class="dashboard-title">站点实时监控</h2> |
| | | </div> |
| | | <!-- <div class="dashboard-header">--> |
| | | <!-- <h3 class="dashboard-title">站点实时监控</h3>--> |
| | | <!-- </div>--> |
| | | |
| | | <!-- 表格容器 --> |
| | | <div class="table-container"> |
| | |
| | | // DOM加载完成后初始化 |
| | | $(document).ready(function () { |
| | | // 加载初始数据 |
| | | getPlcError(); |
| | | getSite(); |
| | | |
| | | // 初始化定时器 |
| | |
| | | function initTimers() { |
| | | // 每秒更新PLC错误、站点信息和IO模式 |
| | | timers.push(setInterval(() => { |
| | | getPlcError(); |
| | | if (!isSiteUpdatePaused) { |
| | | getSite(); |
| | | } |
| | |
| | | } |
| | | } |
| | | |
| | | // 获取PLC异常信息表 |
| | | function getPlcError() { |
| | | const tableEl = $('#plc-error-table'); |
| | | tableEl.children("tr").children("td").html(""); |
| | | |
| | | ajaxRequest({ |
| | | url: `${baseUrl}/site/table/plc/errors`, |
| | | method: 'POST', |
| | | success: (res) => { |
| | | if (res.data) { |
| | | const tableData = res.data; |
| | | for (let i = 0; i < tableData.length; i++) { |
| | | const tr = tableEl.find("tr").eq(i + 1); |
| | | tr.children("td").eq(0).html(tableData[i].no); |
| | | tr.children("td").eq(1).html(tableData[i].plcDesc); |
| | | tr.children("td").eq(2).html(tableData[i].error); |
| | | } |
| | | } |
| | | } |
| | | }); |
| | | } |
| | | |
| | | // 获取站点信息表 |
| | | function getSite() { |