|
@@ -1,37 +1,41 @@
|
|
-
|
|
|
|
<!-- device-monitor.component.html -->
|
|
<!-- device-monitor.component.html -->
|
|
<div class="monitor-container">
|
|
<div class="monitor-container">
|
|
<div class="monitor-header">
|
|
<div class="monitor-header">
|
|
<h2><i class="fa fa-microchip"></i> 单设备监测面板</h2>
|
|
<h2><i class="fa fa-microchip"></i> 单设备监测面板</h2>
|
|
- <div class="device-info">
|
|
|
|
- <div><strong>设备名称:</strong> CNC 铣床 #01</div>
|
|
|
|
- <div><strong>设备编号:</strong> DEV-2023-001</div>
|
|
|
|
- <div><strong>位置:</strong> 车间A - 产线3</div>
|
|
|
|
- <div><strong>设备类型:</strong> CNC加工中心</div>
|
|
|
|
|
|
+ <div class="header-info">
|
|
|
|
+ <div class="device-info">
|
|
|
|
+ <div><strong>设备名称:</strong> CNC 铣床 #01</div>
|
|
|
|
+ <div><strong>设备编号:</strong> DEV-2023-001</div>
|
|
|
|
+ <div><strong>位置:</strong> 车间A - 产线3</div>
|
|
|
|
+ <div><strong>设备类型:</strong> CNC加工中心</div>
|
|
|
|
+ </div>
|
|
|
|
+ <div class="current-time">
|
|
|
|
+ <strong>当前时间:</strong> {{ currentTime | date: 'yyyy-MM-dd HH:mm:ss' }}
|
|
|
|
+ </div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
|
|
<div class="monitor-row">
|
|
<div class="monitor-row">
|
|
<div class="waveform-card">
|
|
<div class="waveform-card">
|
|
<h3><i class="fa fa-wave-square"></i> 振动波形图 (40秒周期)</h3>
|
|
<h3><i class="fa fa-wave-square"></i> 振动波形图 (40秒周期)</h3>
|
|
- <div class="waveform-container">
|
|
|
|
- <div class="waveform-grid">
|
|
|
|
- <div class="grid-line"></div>
|
|
|
|
- <div class="grid-line"></div>
|
|
|
|
- <div class="grid-line"></div>
|
|
|
|
- <div class="waveform-line"></div>
|
|
|
|
- <div class="threshold upper"></div>
|
|
|
|
- <div class="threshold lower"></div>
|
|
|
|
- </div>
|
|
|
|
|
|
+ <!-- 修改1: 使用 appEchart 指令和 echartOptions 绑定 -->
|
|
|
|
+ <div class="waveform-container"
|
|
|
|
+ appEchart
|
|
|
|
+ [echartOptions]="chartOptions">
|
|
</div>
|
|
</div>
|
|
<div class="waveform-controls">
|
|
<div class="waveform-controls">
|
|
<div class="threshold-control">
|
|
<div class="threshold-control">
|
|
- <label>阈值上限: <span id="upperValue">0.8</span> mm/s</label>
|
|
|
|
- <input type="range" min="0" max="1.5" step="0.1" value="0.8" id="upperThreshold">
|
|
|
|
|
|
+ <label>阈值上限: {{ upperThreshold }} mm/s</label>
|
|
|
|
+ <!-- 修改2: 更新滑块绑定 -->
|
|
|
|
+ <input type="range" min="0.1" max="1.5" step="0.05"
|
|
|
|
+ [(ngModel)]="upperThreshold"
|
|
|
|
+ (input)="updateThreshold()">
|
|
</div>
|
|
</div>
|
|
<div class="threshold-control">
|
|
<div class="threshold-control">
|
|
- <label>阈值下限: <span id="lowerValue">0.2</span> mm/s</label>
|
|
|
|
- <input type="range" min="0" max="1.5" step="0.1" value="0.2" id="lowerThreshold">
|
|
|
|
|
|
+ <label>阈值下限: {{ lowerThreshold }} mm/s</label>
|
|
|
|
+ <input type="range" min="0.1" max="1.5" step="0.05"
|
|
|
|
+ [(ngModel)]="lowerThreshold"
|
|
|
|
+ (input)="updateThreshold()">
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
@@ -39,40 +43,14 @@
|
|
<div class="status-panel">
|
|
<div class="status-panel">
|
|
<h3><i class="fa fa-heartbeat"></i> 实时状态</h3>
|
|
<h3><i class="fa fa-heartbeat"></i> 实时状态</h3>
|
|
<div class="status-grid">
|
|
<div class="status-grid">
|
|
- <div class="status-card">
|
|
|
|
- <div class="status-icon blue">
|
|
|
|
- <i class="fa fa-wave-square"></i>
|
|
|
|
- </div>
|
|
|
|
- <div class="status-data">
|
|
|
|
- <div class="status-label">当前振幅</div>
|
|
|
|
- <div class="status-value">0.58 mm/s</div>
|
|
|
|
- </div>
|
|
|
|
- </div>
|
|
|
|
- <div class="status-card">
|
|
|
|
- <div class="status-icon green">
|
|
|
|
- <i class="fa fa-heartbeat"></i>
|
|
|
|
|
|
+ <!-- 修改3: 修复 ngClass 绑定 -->
|
|
|
|
+ <div class="status-card" *ngFor="let status of statusValues">
|
|
|
|
+ <div class="status-icon" [ngClass]="status.color">
|
|
|
|
+ <i class="fa" [ngClass]="status.icon"></i>
|
|
</div>
|
|
</div>
|
|
<div class="status-data">
|
|
<div class="status-data">
|
|
- <div class="status-label">健康指数</div>
|
|
|
|
- <div class="status-value">89%</div>
|
|
|
|
- </div>
|
|
|
|
- </div>
|
|
|
|
- <div class="status-card">
|
|
|
|
- <div class="status-icon orange">
|
|
|
|
- <i class="fa fa-thermometer-half"></i>
|
|
|
|
- </div>
|
|
|
|
- <div class="status-data">
|
|
|
|
- <div class="status-label">温度</div>
|
|
|
|
- <div class="status-value">68°C</div>
|
|
|
|
- </div>
|
|
|
|
- </div>
|
|
|
|
- <div class="status-card">
|
|
|
|
- <div class="status-icon purple">
|
|
|
|
- <i class="fa fa-tachometer-alt"></i>
|
|
|
|
- </div>
|
|
|
|
- <div class="status-data">
|
|
|
|
- <div class="status-label">转速</div>
|
|
|
|
- <div class="status-value">1420 RPM</div>
|
|
|
|
|
|
+ <div class="status-label">{{ status.label }}</div>
|
|
|
|
+ <div class="status-value">{{ status.value }} {{ status.unit }}</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
@@ -102,20 +80,16 @@
|
|
</div>
|
|
</div>
|
|
|
|
|
|
<div class="alert-history">
|
|
<div class="alert-history">
|
|
- <div class="history-item">
|
|
|
|
- <div class="alert-time">14:30:22</div>
|
|
|
|
- <div class="alert-desc">振动超标 (0.92 mm/s)</div>
|
|
|
|
- <div class="alert-level warning">警告</div>
|
|
|
|
- </div>
|
|
|
|
- <div class="history-item">
|
|
|
|
- <div class="alert-time">11:45:10</div>
|
|
|
|
- <div class="alert-desc">温度异常 (78°C)</div>
|
|
|
|
- <div class="alert-level critical">严重</div>
|
|
|
|
- </div>
|
|
|
|
- <div class="history-item">
|
|
|
|
- <div class="alert-time">09:15:33</div>
|
|
|
|
- <div class="alert-desc">转速波动超出范围</div>
|
|
|
|
- <div class="alert-level info">注意</div>
|
|
|
|
|
|
+ <!-- 修改4: 修复 ngClass 绑定 -->
|
|
|
|
+ <div class="history-item" *ngFor="let alert of alertHistory">
|
|
|
|
+ <div class="alert-time">{{ alert.time }}</div>
|
|
|
|
+ <div class="alert-desc">{{ alert.desc }}</div>
|
|
|
|
+ <div class="alert-level" [ngClass]="alert.level">
|
|
|
|
+ {{
|
|
|
|
+ alert.level === 'warning' ? '警告' :
|
|
|
|
+ alert.level === 'critical' ? '严重' : '注意'
|
|
|
|
+ }}
|
|
|
|
+ </div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|