Disponibilité: | |
---|---|
Minghung
Je vais créer un tableau de bord complet et moderne qui fournit une surveillance et un contrôle en temps réel pour la ligne de production des panneaux de particules. La conception se concentrera sur l'efficacité opérationnelle, la visualisation des métriques critiques et les contrôles intuitifs.
:racine {
- primaire: # 1A3A5F;
--secondaire: # 2C5282;
--Accent: # 0EA5E9;
--Cescess: # 10B981;
- Warning: # f59e0b;
- Danger: # EF4444;
- Dark: # 1E293B;
--light: # f1f5f9;
- Gray: # 94A3B8;
}
* {
marge: 0;
rembourrage: 0;
Dimensionnement en boîte: Border-Box;
Font-Family: 'Segoe UI', Tahoma, Genève, Verdana, Sans-Serif;
}
corps {
Color d'arrière-plan: # 0F172A;
Couleur: var (- lumière);
Overflow-X: Hidden;
}
.Container {
Affichage: grille;
Grid-Template-Colonnes: 240px 1FR;
Min-Height: 100VH;
}
/ * Styles de barre latérale * /
.sidebar {
Color d'arrière-plan: var (- primaire);
rembourrage: 20px 0;
Border-droite: 1px solide # 334155;
}
.logo {
Affichage: flex;
Align-Items: Centre;
rembourrage: 0 20px 20px;
Border-Bottom: 1px solide # 334155;
marge-fond: 20px;
}
.logo img {
hauteur: 40px;
marge-droite: 12px;
}
.logo h1 {
taille de police: 18px;
Police-poids: 600;
}
.nav-item {
rembourrage: 12px 20px;
Affichage: flex;
Align-Items: Centre;
curseur: pointeur;
Transition: Tous 0,3S;
Border-Left: 3px solide transparent;
}
.nav-item: Hover, .nav-item.active {
Color en arrière-plan: RGBA (14, 165, 233, 0,1);
Border-Left: 3px Solid Var (- Accent);
}
.nav-item i {
marge-droite: 12px;
Largeur: 20px;
Texte-aligne: Centre;
}
/ * Styles de contenu principaux * /
.
rembourrage: 20px;
Affichage: flex;
Flex-Direction: colonne;
}
.header {
Affichage: flex;
justifier-contenu: espace-intermédiaire;
Align-Items: Centre;
marge-fond: 20px;
Padding-Bottom: 15px;
Border-Bottom: 1px solide # 334155;
}
.Heasher H2 {
taille de police: 24px;
Police-poids: 600;
couleur: var (- accent);
}
.status-bar {
Affichage: flex;
Align-Items: Centre;
Écart: 20px;
}
.status-indicator {
Affichage: flex;
Align-Items: Centre;
Écart: 8px;
taille de police: 14px;
}
.status-dot {
Largeur: 10px;
hauteur: 10px;
Border-Radius: 50%;
}
.Running {Background-Color: var (- Success); }
.Warning {Background-Color: var (- Warning); }
.stopped {Background-Color: var (- danger); }
/ * Grille de tableau de bord * /
.tableau de bord {
Affichage: grille;
Grid-Template-Colonnes: répéter (4, 1FR);
Grid-Auto-Rows: Minmax (200px, auto);
Écart: 20px;
Flex-Crow: 1;
}
.carte {
Color en arrière-plan: # 1E293B;
Border-Radius: 10px;
rembourrage: 20px;
Box-Shadow: 0 4px 6px RGBA (0, 0, 0, 0,1);
Border: 1px solide # 334155;
Affichage: flex;
Flex-Direction: colonne;
}
.Card-header {
Affichage: flex;
justifier-contenu: espace-intermédiaire;
Align-Items: Centre;
marge-fond: 15px;
Padding-Bottom: 10px;
Border-Bottom: 1px solide # 334155;
}
.Card-title {
taille de police: 16px;
Police-poids: 600;
couleur: var (- accent);
}
.Carde-contenu {
Flex-Crow: 1;
Affichage: flex;
Flex-Direction: colonne;
Justification-contenu: centre;
}
/ * Styles de carte spécifiques * /
.kpi-carte .Value {
taille de police: 36px;
Police-poids: 700;
Texte-aligne: Centre;
marge: 10px 0;
}
.kpi-carte .Label {
Texte-aligne: Centre;
couleur: var (- gris);
taille de police: 14px;
}
.kpi-carte .Trend {
Affichage: flex;
Justification-contenu: centre;
Align-Items: Centre;
Écart: 5px;
taille de police: 14px;
marge: 5px;
}
.Trend.up {Color: var (- Success); }
.Trend.Down {Color: var (- danger); }
.Production-chart {
Colonne de grille: Span 2;
hauteur: 300px;
}
.status-grid {
Affichage: grille;
grille-template-colonnes: répéter (3, 1fr);
Écart: 15px;
}
.Machine-status {
Color d'arrière-plan: # 0F172A;
Border-Radius: 8px;
rembourrage: 15px;
Affichage: flex;
Flex-Direction: colonne;
Align-Items: Centre;
Border: 1px solide # 334155;
Transition: Tous 0,3S;
}
.Machine Status: Hover {
transform: tradlatey (-3px);
Box-Shadow: 0 6px 12px RGBA (0, 0, 0, 0,15);
}
.Machine-status i {
taille de police: 28px;
marge-fond: 10px;
}
.machine-status.running {couleur: var (- succès); Border-top: 3px Solid Var (- Success); }
.machine-status.warning {couleur: var (- avertissement); Border-top: 3px Solid Var (- Avertissement); }
.machine-status.stopped {couleur: var (- danger); Border-top: 3px Solid Var (- danger); }
.machine-name {
taille de police: 14px;
marge-fond: 8px;
Texte-aligne: Centre;
}
.machine-valeur {
taille de police: 18px;
Police-poids: 600;
}
. alerts-carte. alert-item {
rembourrage: 10px 0;
Border-Bottom: 1px solide # 334155;
Affichage: flex;
Écart: 10px;
}
.Alert-Item: Last-Child {
Border-Bottom: Aucun;
}
.Alert-Icon {
Largeur: 24px;
hauteur: 24px;
Border-Radius: 50%;
Affichage: flex;
Align-Items: Centre;
Justification-contenu: centre;
flex-shrink: 0;
}
.Alert-High {Background-Color: RGBA (239, 68, 68, 0,2); Couleur: var (- danger); }
.Alert-Medium {Color de fond: RGBA (245, 158, 11, 0,2); couleur: var (- avertissement); }
.Alert-Low {Background-Color: RGBA (59, 130, 246, 0,2); Couleur: # 3B82F6; }
. alert-contenu {
Flex-Crow: 1;
}
.Alert-title {
Police-poids: 600;
taille de police: 14px;
}
.Alert-Time {
taille de police: 12px;
couleur: var (- gris);
}
.Controls {
Affichage: grille;
grille-template-colonnes: répéter (2, 1fr);
Écart: 15px;
}
.Control-btn {
Color d'arrière-plan: var (- secondaire);
Border: aucun;
Border-Radius: 8px;
rembourrage: 12px;
Couleur: blanc;
Police-poids: 600;
curseur: pointeur;
Transition: Tous 0,3S;
Affichage: flex;
Align-Items: Centre;
Justification-contenu: centre;
Écart: 8px;
}
.Control-btn: Hover {
Color d'arrière-plan: var (- accent);
transform: tradlatey (-2px);
}
.Control-Btn.Emergence {
Color en arrière-plan: var (- danger);
Colonne de grille: Span 2;
}
.Control-Btn.Emergence: Hover {
Color d'arrière-plan: # DC2626;
}
/ * Ajustements réactifs * /
@media (max-large: 1200px) {
.tableau de bord {
grille-template-colonnes: répéter (3, 1fr);
}
}
@media (max-large: 992px) {
.tableau de bord {
grille-template-colonnes: répéter (2, 1fr);
}
}
@media (max-large: 768px) {
.Container {
grille-template-colonnes: 1FR;
}
.sidebar {
Affichage: aucun;
}
.tableau de bord {
grille-template-colonnes: 1FR;
}
.Production-chart {
Colonne de grille: Span 1;
}
}
Tableau de bord
Contrôle de la production
Statut de machine
Contrôle de qualité
Alertes et notifications
Analytique et rapports
Entretien
Paramètres
Production: course
2 avertissements
3 nouvelles alertes
Opérateur: Zhang Wei
+ 2,1% d'hier
-8 de la cible
+ 0,4% à partir du dernier quart
-0,15 de la semaine dernière
// Initialiser le graphique de production
document.addeventListener ('DomContentloaded', function () {
const ctx = document.getElementById («productionchart»). getContext («2d»);
const chart = nouveau graphique (ctx, {
Type: «ligne»,
données: {
Étiquettes: ['06: 00 ', '08: 00', '10: 00 ', '12: 00', '14: 00 ', '16: 00', '18: 00 ', '20: 00'],
ensembles de données: [{
Étiquette: «Production réelle»,
Données: [265, 280, 295, 285, 270, 290, 305, 295],
BorderColor: '# 0ea5e9',
BackgroundColor: 'RGBA (14, 165, 233, 0,1)',
Borderwidth: 2,
Remplir: vrai,
Tension: 0,3
}, {
Étiquette: «cible»,
Données: [280, 280, 290, 295, 295, 300, 300, 300],
BorderColor: '# 10B981',
Borderwidth: 2,
Borderdash: [5, 5],
remplir: faux
}]
},
Options: {
Réactif: vrai,
maintenussApperCTRAIO: faux,
Plugins: {
légende: {
Étiquettes: {
Couleur: '# f1f5f9'
}
}
},
écailles: {
y: {
Beginatzero: Faux,
Min: 250,
grille: {
Couleur: 'RGBA (255, 255, 255, 0,1)'
},
tiques: {
Couleur: '# 94A3B8'
}
},
x: {
grille: {
Couleur: 'RGBA (255, 255, 255, 0,1)'
},
tiques: {
Couleur: '# 94A3B8'
}
}
}
}
});
// simule les mises à jour en temps réel
setInterval (() => {
// Mette à jour les valeurs d'état de la machine au hasard pour la simulation
document.QuerySelectorall ('. Machine-Value'). Foreach (el => {
if (el.parerentelement.classlist.contains ('running')) {
if (el.previousElelementSibling.TextContent.Uncluds ('° C')) {
const temp = 80 + math.floor (math.random () * 5);
el.textContent = `$ {temp} ° C`;
} else if (el.previousElelementSibling.TextContent.includs ('%')) {
const Load = 95 + math.floor (math.random () * 5);
el.textContent = `$ {chargement}%`;
}
}
});
// Mette à jour les valeurs KPI légèrement pour la simulation
const OeeValue = document.QuerySelector ('. KPI-CARD: Nth-Child (1) .Value');
Soit OEE = paSefloat (oeeValue.TextContent);
OEEVALUE.TextContent = (OEE + (Math.Random () - 0,5) * 0,1) .Tofixed (1) + '%';
const RateValue = document.QuerySelector ('. KPI-CARD: Nth-Child (2) .Value');
Soit rate = paSeInt (rateValue.TextContent);
rateValue.TextContent = math.max (280, math.min (310, rate + math.floor ((math.random () - 0,5) * 5));
}, 5000);
});
WhatsApp: +86 18769900191 +86 15589105786 +86 18954906501
Courriel: osbmdfmachinery@gmail.com
Je vais créer un tableau de bord complet et moderne qui fournit une surveillance et un contrôle en temps réel pour la ligne de production des panneaux de particules. La conception se concentrera sur l'efficacité opérationnelle, la visualisation des métriques critiques et les contrôles intuitifs.
:racine {
- primaire: # 1A3A5F;
--secondaire: # 2C5282;
--Accent: # 0EA5E9;
--Cescess: # 10B981;
- Warning: # f59e0b;
- Danger: # EF4444;
- Dark: # 1E293B;
--light: # f1f5f9;
- Gray: # 94A3B8;
}
* {
marge: 0;
rembourrage: 0;
Dimensionnement en boîte: Border-Box;
Font-Family: 'Segoe UI', Tahoma, Genève, Verdana, Sans-Serif;
}
corps {
Color d'arrière-plan: # 0F172A;
Couleur: var (- lumière);
Overflow-X: Hidden;
}
.Container {
Affichage: grille;
Grid-Template-Colonnes: 240px 1FR;
Min-Height: 100VH;
}
/ * Styles de barre latérale * /
.sidebar {
Color d'arrière-plan: var (- primaire);
rembourrage: 20px 0;
Border-droite: 1px solide # 334155;
}
.logo {
Affichage: flex;
Align-Items: Centre;
rembourrage: 0 20px 20px;
Border-Bottom: 1px solide # 334155;
marge-fond: 20px;
}
.logo img {
hauteur: 40px;
marge-droite: 12px;
}
.logo h1 {
taille de police: 18px;
Police-poids: 600;
}
.nav-item {
rembourrage: 12px 20px;
Affichage: flex;
Align-Items: Centre;
curseur: pointeur;
Transition: Tous 0,3S;
Border-Left: 3px solide transparent;
}
.nav-item: Hover, .nav-item.active {
Color en arrière-plan: RGBA (14, 165, 233, 0,1);
Border-Left: 3px Solid Var (- Accent);
}
.nav-item i {
marge-droite: 12px;
Largeur: 20px;
Texte-aligne: Centre;
}
/ * Styles de contenu principaux * /
.
rembourrage: 20px;
Affichage: flex;
Flex-Direction: colonne;
}
.header {
Affichage: flex;
justifier-contenu: espace-intermédiaire;
Align-Items: Centre;
marge-fond: 20px;
Padding-Bottom: 15px;
Border-Bottom: 1px solide # 334155;
}
.Heasher H2 {
taille de police: 24px;
Police-poids: 600;
couleur: var (- accent);
}
.status-bar {
Affichage: flex;
Align-Items: Centre;
Écart: 20px;
}
.status-indicator {
Affichage: flex;
Align-Items: Centre;
Écart: 8px;
taille de police: 14px;
}
.status-dot {
Largeur: 10px;
hauteur: 10px;
Border-Radius: 50%;
}
.Running {Background-Color: var (- Success); }
.Warning {Background-Color: var (- Warning); }
.stopped {Background-Color: var (- danger); }
/ * Grille de tableau de bord * /
.tableau de bord {
Affichage: grille;
Grid-Template-Colonnes: répéter (4, 1FR);
Grid-Auto-Rows: Minmax (200px, auto);
Écart: 20px;
Flex-Crow: 1;
}
.carte {
Color en arrière-plan: # 1E293B;
Border-Radius: 10px;
rembourrage: 20px;
Box-Shadow: 0 4px 6px RGBA (0, 0, 0, 0,1);
Border: 1px solide # 334155;
Affichage: flex;
Flex-Direction: colonne;
}
.Card-header {
Affichage: flex;
justifier-contenu: espace-intermédiaire;
Align-Items: Centre;
marge-fond: 15px;
Padding-Bottom: 10px;
Border-Bottom: 1px solide # 334155;
}
.Card-title {
taille de police: 16px;
Police-poids: 600;
couleur: var (- accent);
}
.Carde-contenu {
Flex-Crow: 1;
Affichage: flex;
Flex-Direction: colonne;
Justification-contenu: centre;
}
/ * Styles de carte spécifiques * /
.kpi-carte .Value {
taille de police: 36px;
Police-poids: 700;
Texte-aligne: Centre;
marge: 10px 0;
}
.kpi-carte .Label {
Texte-aligne: Centre;
couleur: var (- gris);
taille de police: 14px;
}
.kpi-carte .Trend {
Affichage: flex;
Justification-contenu: centre;
Align-Items: Centre;
Écart: 5px;
taille de police: 14px;
marge: 5px;
}
.Trend.up {Color: var (- Success); }
.Trend.Down {Color: var (- danger); }
.Production-chart {
Colonne de grille: Span 2;
hauteur: 300px;
}
.status-grid {
Affichage: grille;
grille-template-colonnes: répéter (3, 1fr);
Écart: 15px;
}
.Machine-status {
Color d'arrière-plan: # 0F172A;
Border-Radius: 8px;
rembourrage: 15px;
Affichage: flex;
Flex-Direction: colonne;
Align-Items: Centre;
Border: 1px solide # 334155;
Transition: Tous 0,3S;
}
.Machine Status: Hover {
transform: tradlatey (-3px);
Box-Shadow: 0 6px 12px RGBA (0, 0, 0, 0,15);
}
.Machine-status i {
taille de police: 28px;
marge-fond: 10px;
}
.machine-status.running {couleur: var (- succès); Border-top: 3px Solid Var (- Success); }
.machine-status.warning {couleur: var (- avertissement); Border-top: 3px Solid Var (- Avertissement); }
.machine-status.stopped {couleur: var (- danger); Border-top: 3px Solid Var (- danger); }
.machine-name {
taille de police: 14px;
marge-fond: 8px;
Texte-aligne: Centre;
}
.machine-valeur {
taille de police: 18px;
Police-poids: 600;
}
. alerts-carte. alert-item {
rembourrage: 10px 0;
Border-Bottom: 1px solide # 334155;
Affichage: flex;
Écart: 10px;
}
.Alert-Item: Last-Child {
Border-Bottom: Aucun;
}
.Alert-Icon {
Largeur: 24px;
hauteur: 24px;
Border-Radius: 50%;
Affichage: flex;
Align-Items: Centre;
Justification-contenu: centre;
flex-shrink: 0;
}
.Alert-High {Background-Color: RGBA (239, 68, 68, 0,2); Couleur: var (- danger); }
.Alert-Medium {Color de fond: RGBA (245, 158, 11, 0,2); couleur: var (- avertissement); }
.Alert-Low {Background-Color: RGBA (59, 130, 246, 0,2); Couleur: # 3B82F6; }
. alert-contenu {
Flex-Crow: 1;
}
.Alert-title {
Police-poids: 600;
taille de police: 14px;
}
.Alert-Time {
taille de police: 12px;
couleur: var (- gris);
}
.Controls {
Affichage: grille;
grille-template-colonnes: répéter (2, 1fr);
Écart: 15px;
}
.Control-btn {
Color d'arrière-plan: var (- secondaire);
Border: aucun;
Border-Radius: 8px;
rembourrage: 12px;
Couleur: blanc;
Police-poids: 600;
curseur: pointeur;
Transition: Tous 0,3S;
Affichage: flex;
Align-Items: Centre;
Justification-contenu: centre;
Écart: 8px;
}
.Control-btn: Hover {
Color d'arrière-plan: var (- accent);
transform: tradlatey (-2px);
}
.Control-Btn.Emergence {
Color en arrière-plan: var (- danger);
Colonne de grille: Span 2;
}
.Control-Btn.Emergence: Hover {
Color d'arrière-plan: # DC2626;
}
/ * Ajustements réactifs * /
@media (max-large: 1200px) {
.tableau de bord {
grille-template-colonnes: répéter (3, 1fr);
}
}
@media (max-large: 992px) {
.tableau de bord {
grille-template-colonnes: répéter (2, 1fr);
}
}
@media (max-large: 768px) {
.Container {
grille-template-colonnes: 1FR;
}
.sidebar {
Affichage: aucun;
}
.tableau de bord {
grille-template-colonnes: 1FR;
}
.Production-chart {
Colonne de grille: Span 1;
}
}
Tableau de bord
Contrôle de la production
Statut de machine
Contrôle de qualité
Alertes et notifications
Analytique et rapports
Entretien
Paramètres
Production: course
2 avertissements
3 nouvelles alertes
Opérateur: Zhang Wei
+ 2,1% d'hier
-8 de la cible
+ 0,4% à partir du dernier quart
-0,15 de la semaine dernière
// Initialiser le graphique de production
document.addeventListener ('DomContentloaded', function () {
const ctx = document.getElementById («productionchart»). getContext («2d»);
const chart = nouveau graphique (ctx, {
Type: «ligne»,
données: {
Étiquettes: ['06: 00 ', '08: 00', '10: 00 ', '12: 00', '14: 00 ', '16: 00', '18: 00 ', '20: 00'],
ensembles de données: [{
Étiquette: «Production réelle»,
Données: [265, 280, 295, 285, 270, 290, 305, 295],
BorderColor: '# 0ea5e9',
BackgroundColor: 'RGBA (14, 165, 233, 0,1)',
Borderwidth: 2,
Remplir: vrai,
Tension: 0,3
}, {
Étiquette: «cible»,
Données: [280, 280, 290, 295, 295, 300, 300, 300],
BorderColor: '# 10B981',
Borderwidth: 2,
Borderdash: [5, 5],
remplir: faux
}]
},
Options: {
Réactif: vrai,
maintenussApperCTRAIO: faux,
Plugins: {
légende: {
Étiquettes: {
Couleur: '# f1f5f9'
}
}
},
écailles: {
y: {
Beginatzero: Faux,
Min: 250,
grille: {
Couleur: 'RGBA (255, 255, 255, 0,1)'
},
tiques: {
Couleur: '# 94A3B8'
}
},
x: {
grille: {
Couleur: 'RGBA (255, 255, 255, 0,1)'
},
tiques: {
Couleur: '# 94A3B8'
}
}
}
}
});
// simule les mises à jour en temps réel
setInterval (() => {
// Mette à jour les valeurs d'état de la machine au hasard pour la simulation
document.QuerySelectorall ('. Machine-Value'). Foreach (el => {
if (el.parerentelement.classlist.contains ('running')) {
if (el.previousElelementSibling.TextContent.Uncluds ('° C')) {
const temp = 80 + math.floor (math.random () * 5);
el.textContent = `$ {temp} ° C`;
} else if (el.previousElelementSibling.TextContent.includs ('%')) {
const Load = 95 + math.floor (math.random () * 5);
el.textContent = `$ {chargement}%`;
}
}
});
// Mette à jour les valeurs KPI légèrement pour la simulation
const OeeValue = document.QuerySelector ('. KPI-CARD: Nth-Child (1) .Value');
Soit OEE = paSefloat (oeeValue.TextContent);
OEEVALUE.TextContent = (OEE + (Math.Random () - 0,5) * 0,1) .Tofixed (1) + '%';
const RateValue = document.QuerySelector ('. KPI-CARD: Nth-Child (2) .Value');
Soit rate = paSeInt (rateValue.TextContent);
rateValue.TextContent = math.max (280, math.min (310, rate + math.floor ((math.random () - 0,5) * 5));
}, 5000);
});
WhatsApp: +86 18769900191 +86 15589105786 +86 18954906501
Courriel: osbmdfmachinery@gmail.com