|
@@ -1,14 +1,32 @@
|
|
|
-
|
|
|
+<!-- factory-overview.component.html -->
|
|
|
<div class="dashboard">
|
|
|
<div class="dashboard-header">
|
|
|
- <h2><i class="fa fa-industry"></i> 工厂总览看板</h2>
|
|
|
- <div class="time-display">
|
|
|
- <i class="fa fa-clock"></i> {{ currentTime | date:'yyyy-MM-dd HH:mm:ss' }}
|
|
|
+ <div class="header-left">
|
|
|
+ <h2><i class="fa fa-industry"></i> 工厂总览看板</h2>
|
|
|
+ <div class="quick-nav">
|
|
|
+ <button class="nav-btn active">总览</button>
|
|
|
+ <button class="nav-btn">设备管理</button>
|
|
|
+ <button class="nav-btn">生产监控</button>
|
|
|
+ <button class="nav-btn">数据分析</button>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+
|
|
|
+ <div class="header-right">
|
|
|
+ <div class="user-info">
|
|
|
+ <i class="fa fa-user-circle"></i>
|
|
|
+ <span>管理员</span>
|
|
|
+ </div>
|
|
|
+ <div class="time-display">
|
|
|
+ <i class="fa fa-clock"></i> {{ currentTime | date:'yyyy-MM-dd HH:mm:ss' }}
|
|
|
+ </div>
|
|
|
+ <button class="refresh-btn" (click)="refreshData()">
|
|
|
+ <i class="fa fa-sync-alt"></i> 刷新数据
|
|
|
+ </button>
|
|
|
</div>
|
|
|
</div>
|
|
|
|
|
|
<div class="metric-grid">
|
|
|
- <div class="metric-card">
|
|
|
+ <div class="metric-card" (mouseenter)="cardHover(0)" [class.hover]="hoverIndex === 0">
|
|
|
<div class="metric-icon blue">
|
|
|
<i class="fa fa-cogs"></i>
|
|
|
</div>
|
|
@@ -16,10 +34,16 @@
|
|
|
<h3>设备运行状态</h3>
|
|
|
<p class="metric-value">45/50</p>
|
|
|
<p class="metric-label">运行设备数/总设备数</p>
|
|
|
+ <div class="metric-progress">
|
|
|
+ <div class="progress-bar" [style.width.%]="90"></div>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ <div class="metric-hover">
|
|
|
+ <i class="fa fa-arrow-right"></i> 查看详情
|
|
|
</div>
|
|
|
</div>
|
|
|
-
|
|
|
- <div class="metric-card">
|
|
|
+
|
|
|
+ <div class="metric-card" (mouseenter)="cardHover(1)" [class.hover]="hoverIndex === 1">
|
|
|
<div class="metric-icon orange">
|
|
|
<i class="fa fa-exclamation-triangle"></i>
|
|
|
</div>
|
|
@@ -27,10 +51,16 @@
|
|
|
<h3>今日预警</h3>
|
|
|
<p class="metric-value">12</p>
|
|
|
<p class="metric-label">预警总数</p>
|
|
|
+ <div class="metric-progress">
|
|
|
+ <div class="progress-bar" [style.width.%]="24"></div>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ <div class="metric-hover">
|
|
|
+ <i class="fa fa-arrow-right"></i> 查看详情
|
|
|
</div>
|
|
|
</div>
|
|
|
-
|
|
|
- <div class="metric-card">
|
|
|
+
|
|
|
+ <div class="metric-card" (mouseenter)="cardHover(2)" [class.hover]="hoverIndex === 2">
|
|
|
<div class="metric-icon green">
|
|
|
<i class="fa fa-heartbeat"></i>
|
|
|
</div>
|
|
@@ -38,10 +68,16 @@
|
|
|
<h3>设备健康指数</h3>
|
|
|
<p class="metric-value">92%</p>
|
|
|
<p class="metric-label">整体设备健康</p>
|
|
|
+ <div class="metric-progress">
|
|
|
+ <div class="progress-bar" [style.width.%]="92"></div>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ <div class="metric-hover">
|
|
|
+ <i class="fa fa-arrow-right"></i> 查看详情
|
|
|
</div>
|
|
|
</div>
|
|
|
-
|
|
|
- <div class="metric-card">
|
|
|
+
|
|
|
+ <div class="metric-card" (mouseenter)="cardHover(3)" [class.hover]="hoverIndex === 3">
|
|
|
<div class="metric-icon purple">
|
|
|
<i class="fa fa-tachometer-alt"></i>
|
|
|
</div>
|
|
@@ -49,74 +85,153 @@
|
|
|
<h3>运行参数</h3>
|
|
|
<p class="metric-value">65°C / 1450 RPM</p>
|
|
|
<p class="metric-label">平均温度/转速</p>
|
|
|
+ <div class="metric-progress">
|
|
|
+ <div class="progress-bar" [style.width.%]="75"></div>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ <div class="metric-hover">
|
|
|
+ <i class="fa fa-arrow-right"></i> 查看详情
|
|
|
</div>
|
|
|
</div>
|
|
|
</div>
|
|
|
|
|
|
<div class="dashboard-row">
|
|
|
- <div class="chart-card">
|
|
|
- <h3><i class="fa fa-chart-pie"></i> 设备状态分布</h3>
|
|
|
- <div class="pie-chart">
|
|
|
- <div class="chart-container">
|
|
|
- <div class="chart-slice normal" style="--value: 80;"></div>
|
|
|
- <div class="chart-slice warning" style="--value: 15;"></div>
|
|
|
- <div class="chart-slice danger" style="--value: 5;"></div>
|
|
|
- <div class="chart-center"></div>
|
|
|
+ <div class="chart-card with-tabs">
|
|
|
+ <div class="chart-header">
|
|
|
+ <h3><i class="fa fa-chart-pie"></i> 设备状态分析</h3>
|
|
|
+ <div class="chart-tabs">
|
|
|
+ <button class="tab-btn active">实时状态</button>
|
|
|
+ <button class="tab-btn">历史趋势</button>
|
|
|
+ <button class="tab-btn">对比分析</button>
|
|
|
</div>
|
|
|
- <div class="chart-legend">
|
|
|
- <div><span class="dot normal"></span> 正常 80%</div>
|
|
|
- <div><span class="dot warning"></span> 警告 15%</div>
|
|
|
- <div><span class="dot danger"></span> 危险 5%</div>
|
|
|
+ </div>
|
|
|
+
|
|
|
+ <div class="chart-container-wrapper">
|
|
|
+ <div class="pie-chart">
|
|
|
+ <div class="chart-container">
|
|
|
+ <div class="chart-slice normal" style="--value: 80;"></div>
|
|
|
+ <div class="chart-slice warning" style="--value: 15;"></div>
|
|
|
+ <div class="chart-slice danger" style="--value: 5;"></div>
|
|
|
+ <div class="chart-center">
|
|
|
+ <div class="chart-center-text">92%</div>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ <div class="chart-legend">
|
|
|
+ <div><span class="dot normal"></span> 正常 80%</div>
|
|
|
+ <div><span class="dot warning"></span> 警告 15%</div>
|
|
|
+ <div><span class="dot danger"></span> 危险 5%</div>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ <div class="chart-details">
|
|
|
+ <div class="detail-item">
|
|
|
+ <div class="detail-label">设备总数</div>
|
|
|
+ <div class="detail-value">50台</div>
|
|
|
+ </div>
|
|
|
+ <div class="detail-item">
|
|
|
+ <div class="detail-label">在线设备</div>
|
|
|
+ <div class="detail-value">45台</div>
|
|
|
+ </div>
|
|
|
+ <div class="detail-item">
|
|
|
+ <div class="detail-label">离线设备</div>
|
|
|
+ <div class="detail-value">5台</div>
|
|
|
+ </div>
|
|
|
+ <div class="detail-item">
|
|
|
+ <div class="detail-label">平均在线率</div>
|
|
|
+ <div class="detail-value">92.5%</div>
|
|
|
+ </div>
|
|
|
</div>
|
|
|
</div>
|
|
|
</div>
|
|
|
-
|
|
|
- <div class="alert-card">
|
|
|
- <h3><i class="fa fa-bell"></i> 实时警报</h3>
|
|
|
+
|
|
|
+ <div class="alert-card with-filter">
|
|
|
+ <div class="alert-header">
|
|
|
+ <h3><i class="fa fa-bell"></i> 实时警报 (12)</h3>
|
|
|
+ <div class="alert-filter">
|
|
|
+ <select>
|
|
|
+ <option>全部警报</option>
|
|
|
+ <option>严重警报</option>
|
|
|
+ <option>警告</option>
|
|
|
+ <option>通知</option>
|
|
|
+ </select>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+
|
|
|
<div class="alert-list">
|
|
|
<div class="alert-item critical">
|
|
|
<i class="fa fa-exclamation-circle"></i>
|
|
|
<div class="alert-content">
|
|
|
<strong>设备 #A23 温度过高</strong>
|
|
|
<span>车间B - 产线2 | 15:23:45</span>
|
|
|
- <comp-star-rating
|
|
|
- [star]="rating"
|
|
|
- (onStarChange)="ratingChange($event)"
|
|
|
- ></comp-star-rating>
|
|
|
- <p>当前评分: {{rating}}</p>
|
|
|
</div>
|
|
|
+ <div class="alert-status">未处理</div>
|
|
|
</div>
|
|
|
<div class="alert-item warning">
|
|
|
<i class="fa fa-exclamation-triangle"></i>
|
|
|
<div class="alert-content">
|
|
|
<strong>设备 #B07 振动异常</strong>
|
|
|
<span>车间A - 产线4 | 15:20:12</span>
|
|
|
- <p>{{ 125006 | tok}}</p>
|
|
|
- <p>{{ 100 | tok}}</p>
|
|
|
- <p>{{ 99987565 | tok}}</p>
|
|
|
</div>
|
|
|
+ <div class="alert-status">处理中</div>
|
|
|
</div>
|
|
|
<div class="alert-item info">
|
|
|
<i class="fa fa-info-circle"></i>
|
|
|
- <div class="alert-content">
|
|
|
+ <div class="alert-content">
|
|
|
<strong>设备 #C15 转速过低</strong>
|
|
|
<span>车间C - 产线1 | 14:58:33</span>
|
|
|
</div>
|
|
|
+ <div class="alert-status">已处理</div>
|
|
|
+ </div>
|
|
|
+ <div class="alert-item critical">
|
|
|
+ <i class="fa fa-exclamation-circle"></i>
|
|
|
+ <div class="alert-content">
|
|
|
+ <strong>设备 #D42 电压异常</strong>
|
|
|
+ <span>车间A - 产线3 | 14:45:21</span>
|
|
|
+ </div>
|
|
|
+ <div class="alert-status">未处理</div>
|
|
|
</div>
|
|
|
</div>
|
|
|
+ <div class="alert-footer">
|
|
|
+ <button class="view-all-btn">
|
|
|
+ <i class="fa fa-list"></i> 查看所有警报
|
|
|
+ </button>
|
|
|
+ </div>
|
|
|
</div>
|
|
|
</div>
|
|
|
-
|
|
|
+
|
|
|
<div class="trend-card">
|
|
|
- <h3><i class="fa fa-chart-line"></i> 健康指数趋势 (24小时)</h3>
|
|
|
+ <div class="trend-header">
|
|
|
+ <h3><i class="fa fa-chart-line"></i> 健康指数趋势</h3>
|
|
|
+
|
|
|
+ <div class="time-range-selector">
|
|
|
+ <button class="time-btn active">24小时</button>
|
|
|
+ <button class="time-btn">7天</button>
|
|
|
+ <button class="time-btn">30天</button>
|
|
|
+ <button class="time-btn">自定义</button>
|
|
|
+ </div>
|
|
|
+
|
|
|
+ </div>
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
<div class="trend-graph">
|
|
|
- <div class="graph-bar" style="--height: 60;"></div>
|
|
|
- <div class="graph-bar" style="--height: 65;"></div>
|
|
|
- <div class="graph-bar" style="--height: 70;"></div>
|
|
|
- <div class="graph-bar" style="--height: 82;"></div>
|
|
|
- <div class="graph-bar" style="--height: 88;"></div>
|
|
|
- <div class="graph-bar" style="--height: 92;"></div>
|
|
|
- <div class="graph-bar" style="--height: 90;"></div>
|
|
|
+ <div class="graph-labels">
|
|
|
+ <span>04:00</span>
|
|
|
+ <span>08:00</span>
|
|
|
+ <span>12:00</span>
|
|
|
+ <span>16:00</span>
|
|
|
+ <span>20:00</span>
|
|
|
+ <span>00:00</span>
|
|
|
+ <span>当前</span>
|
|
|
+ </div>
|
|
|
+ <div class="graph-bars">
|
|
|
+ <div class="graph-bar" [style.height.%]="60"></div>
|
|
|
+ <div class="graph-bar" [style.height.%]="65"></div>
|
|
|
+ <div class="graph-bar" [style.height.%]="70"></div>
|
|
|
+ <div class="graph-bar" [style.height.%]="82"></div>
|
|
|
+ <div class="graph-bar" [style.height.%]="88"></div>
|
|
|
+ <div class="graph-bar" [style.height.%]="92"></div>
|
|
|
+ <div class="graph-bar" [style.height.%]="90"></div>
|
|
|
+ </div>
|
|
|
</div>
|
|
|
</div>
|
|
|
-</div>
|
|
|
+</div>
|