diff --git a/app/components/common/SearchSelect.vue b/app/components/common/SearchSelect.vue
new file mode 100644
index 0000000..31c7716
--- /dev/null
+++ b/app/components/common/SearchSelect.vue
@@ -0,0 +1,335 @@
+
+
Pièce existante
-
+
{ return machineTypes.value.find(type => type.id === newMachine.typeMachineId) || null }) +const machineTypeLabel = (type) => { + if (!type) { + return '' + } + return type.name || 'Type de machine' +} + +const machineTypeDescription = (type) => { + if (!type) { + return '' + } + const parts = [] + if (type.category) { + parts.push(`Catégorie : ${type.category}`) + } + const componentCount = type.componentRequirements?.length ?? 0 + const pieceCount = type.pieceRequirements?.length ?? 0 + parts.push(`${componentCount} composant(s)`, `${pieceCount} pièce(s)`) + return parts.join(' • ') +} + const componentById = computed(() => { const map = new Map() ;(composants.value || []).forEach((component) => { @@ -891,11 +904,13 @@ const getPieceOptions = (requirement, currentEntry) => { }) } -const formatComponentOption = (component) => { +const componentOptionLabel = (component) => component?.name || 'Composant' + +const componentOptionDescription = (component) => { if (!component) { return '' } - const parts = [component.name || 'Composant'] + const parts = [] if (component.reference) { parts.push(`Réf. ${component.reference}`) } @@ -910,11 +925,13 @@ const formatComponentOption = (component) => { return parts.join(' • ') } -const formatPieceOption = (piece) => { +const pieceOptionLabel = (piece) => piece?.name || 'Pièce' + +const pieceOptionDescription = (piece) => { if (!piece) { return '' } - const parts = [piece.name || 'Pièce'] + const parts = [] if (piece.reference) { parts.push(`Réf. ${piece.reference}`) } diff --git a/app/pages/pieces-catalog.vue b/app/pages/pieces-catalog.vue index 94988de..39edebb 100644 --- a/app/pages/pieces-catalog.vue +++ b/app/pages/pieces-catalog.vue @@ -49,12 +49,22 @@