{{ item.name }}
+{{ categoryLabel(item.category) }}
+{{ item.notes }}
+Pas de notes
+ +{{ comment.content }}
+ +{{ comment.content }}
+ +Nom
+{{ component.name }}
+Référence
+{{ component.reference || '—' }}
+Prix
+{{ component.prix ? `${component.prix} €` : '—' }}
+Fournisseur
++ {{ constructeur.name }} + + — Réf. {{ supplierReferenceMap.get(constructeur.id) }} + + + {{ formatConstructeurContact(constructeur) }} + +
+—
+Produit catalogue
+{{ displayProductName }}
++ {{ info.label }} : {{ info.value }} +
+Documents du produit
+Documents
+ + {{ selectedFiles.length }} fichier{{ selectedFiles.length > 1 ? 's' : '' }} + ++ Chargement... +
+ ++ Pièces du composant +
++ Pièces incluses par défaut +
++ Sous-composants +
++ {{ requirementDescription }} +
++ Sélectionnez les pièces concrètes à associer pour chaque emplacement. +
++ {{ describePieceRequirement(pieceAssignment) }} +
++ Aucune pièce disponible pour cette famille. +
++ Sélectionnez les produits catalogue à lier sur chaque position définie. +
++ {{ describeProductRequirement(productAssignment) }} +
++ Aucun produit disponible pour cette catégorie. +
++ Choisissez un composant existant pour chaque sous-niveau requis. +
++ {{ helperText }} +
+| Fournisseur | +Réf. fournisseur | ++ |
|---|---|---|
|
+ {{ getConstructeurName(link) }}
+
+ {{ getConstructeurContact(link) }}
+
+ |
+ + + {{ link.supplierReference || '—' }} + | ++ + | +
{{ subtitle }}
++ {{ activeDoc?.name || activeDoc?.filename }} • {{ documentDescription }} +
+
+{{ textContent }}
+
+ + {{ subtitle }} +
++ Pièces +
+ +
+{{ formatted }}
+
+ + {{ subtitle }} +
++ {{ selectedProduct.name }} +
++ {{ info.label }} : + {{ info.value }} +
++ Aucun produit associé. +
++ {{ displayProductName || 'Produit catalogue' }} +
++ {{ info.label }} : + {{ info.value }} +
++ Chargement des documents... +
+ ++ Ces produits s'afficheront lors de la création d'une pièce basée sur cette catégorie. +
++ Aucun produit défini. +
+ ++ Aucun champ personnalisé n'a encore été défini. +
+ ++ {{ helperText }} +
++ {{ helperText }} +
++ Le composant racine correspond à la catégorie que vous éditez. Sélectionnez uniquement les familles pour les sous-composants. +
+ + + ++ {{ node.typeComposantId ? `Sélection : ${getComponentTypeLabel(node.typeComposantId) || 'Inconnue'}` : 'Aucune famille sélectionnée' }} +
++ Aucun champ n'a encore été défini. +
++ Aucun produit défini. +
++ Aucune pièce définie. +
++ {{ piece.typePieceId ? `Sélection : ${getPieceTypeLabel(piece.typePieceId) || 'Inconnue'}` : 'Aucune famille sélectionnée' }} +
++ Sélectionnez uniquement la famille de ce sous-composant ; il sera configuré via son propre modèle. +
++ Aucun sous-composant défini. +
++ {{ confirmState.message }} +
+ ++ {{ pagination.pageItems }} / {{ pagination.totalItems }} + résultat{{ pagination.totalItems > 1 ? 's' : '' }} +
++ {{ emptyMessage }} +
++ {{ noResultsMessage }} +
+|
+ |
+ + |
|---|---|
| + + | ++ |
|
+ + {{ isEmpty ? emptyMessage : noResultsMessage }} + + |
+ |
|
+ |
+ + + — + | +
|
+ |
+
+ {{ emptyText }} +
+ + + diff --git a/frontend/app/components/common/EntityHistorySection.vue b/frontend/app/components/common/EntityHistorySection.vue new file mode 100644 index 0000000..d874353 --- /dev/null +++ b/frontend/app/components/common/EntityHistorySection.vue @@ -0,0 +1,97 @@ + ++ Qui a changé quoi, et quand. +
++ Aucun changement enregistré pour le moment. +
+ ++ Par {{ entry.actor?.label || 'Inconnu' }} +
+ ++ {{ entry.snapshot.name }} +
++ Historique des versions avec possibilite de restauration. +
++ Aucune version enregistree. +
+ ++ {{ labels.description }} +
+ ++ {{ description }} +
++ {{ field.name || field.key }} +
++ Type : {{ field.type || 'text' }} • Obligatoire + + • Options : {{ field.options.join(', ') }} + + + • Défaut : {{ field.defaultValue }} + +
++ Ce squelette ne définit pas encore de pièces, sous-composants ou valeurs par défaut. +
+ + ++ Ce squelette ne définit pas encore de champs personnalisés. +
++ {{ help }} +
++ {{ errorMessage }} +
++ {{ help }} +
++ {{ errorMessage }} +
+{{ selectedEntitySummary.name }}
++ Réf : {{ selectedEntitySummary.reference }} +
++ Aucun champ personnalisé défini. Cliquez sur « Ajouter » pour en créer un. +
+ ++ Champs personnalisés propres à cette machine. +
++ Aucun champ personnalisé défini pour cette machine. +
+ + + + ++ Aucun champ personnalisé défini. +
+ +Ajoutez ou consultez les documents liés à cette machine.
+Aucun document lié à cette machine.
++ Produits sélectionnés directement pour cette machine. +
++ {{ product.name }} +
++ Référence : + {{ product.reference }} +
++ Fournisseurs : + {{ product.supplierLabel }} +
++ Prix indicatif : + {{ product.priceLabel }} +
+ + +Documents :
++ Aucun produit n'a été associé directement à cette machine. +
+ + ++ {{ descriptionText }} +
++ Cliquez sur un champ pour l'insérer dans la formule. Vous pouvez aussi taper du texte libre (séparateurs, préfixes…). +
++ Aucun champ personnalisé défini dans la structure. +
+ ++ Laissez vide si ce type n'utilise pas de référence automatique. +
++ {{ totalLabel }} +
++ + Chargement en cours… +
+Ajustez votre recherche ou créez une nouvelle catégorie.
+| Nom | +Notes | +Actions | +
|---|---|---|
| {{ item.name }} | ++ {{ item.notes }} + — + | ++ + + + + | +
{{ categoryLabel(item.category) }}
+{{ item.notes }}
+Pas de notes
+ +