feat: gérer les constructeurs multiples

This commit is contained in:
Matthieu
2025-10-28 16:37:10 +01:00
parent da447e4ea2
commit b752fba69a
14 changed files with 901 additions and 222 deletions

View File

@@ -98,10 +98,10 @@
<span class="label-text">Constructeur</span>
</label>
<ConstructeurSelect
v-model="editionForm.constructeurId"
v-model="editionForm.constructeurIds"
class="w-full"
:disabled="saving"
placeholder="Rechercher un constructeur..."
placeholder="Rechercher un ou plusieurs constructeurs..."
/>
</div>
</div>
@@ -404,6 +404,7 @@ import { useApi } from '~/composables/useApi'
import { useToast } from '~/composables/useToast'
import { useDocuments } from '~/composables/useDocuments'
import { formatStructurePreview, normalizeStructureForEditor } from '~/shared/modelUtils'
import { uniqueConstructeurIds } from '~/shared/constructeurUtils'
import type { ComponentModelStructure } from '~/shared/types/inventory'
import type { ModelType } from '~/services/modelTypes'
import { getFileIcon } from '~/utils/fileIcons'
@@ -448,7 +449,7 @@ const selectedTypeId = ref<string>('')
const editionForm = reactive({
name: '' as string,
reference: '' as string,
constructeurId: null as string | null,
constructeurIds: [] as string[],
prix: '' as string,
})
@@ -651,7 +652,11 @@ watch(
editionForm.name = currentComponent.name || ''
editionForm.reference = currentComponent.reference || ''
editionForm.constructeurId = currentComponent.constructeur?.id || currentComponent.constructeurId || null
editionForm.constructeurIds = uniqueConstructeurIds(
currentComponent,
Array.isArray(currentComponent.constructeurs) ? currentComponent.constructeurs : [],
currentComponent.constructeur ? [currentComponent.constructeur] : [],
)
editionForm.prix = currentComponent.prix !== null && currentComponent.prix !== undefined ? String(currentComponent.prix) : ''
customFieldInputs.value = buildCustomFieldInputs(
@@ -691,7 +696,7 @@ const submitEdition = async () => {
const reference = editionForm.reference.trim()
payload.reference = reference ? reference : null
payload.constructeurId = editionForm.constructeurId || null
payload.constructeurIds = uniqueConstructeurIds(editionForm.constructeurIds)
if (rawPrice) {
const parsed = Number(rawPrice)

View File

@@ -71,10 +71,10 @@
<span class="label-text">Constructeur</span>
</label>
<ConstructeurSelect
v-model="creationForm.constructeurId"
v-model="creationForm.constructeurIds"
class="w-full"
:disabled="submitting || !selectedType"
placeholder="Rechercher un constructeur..."
placeholder="Rechercher un ou plusieurs constructeurs..."
/>
</div>
</div>
@@ -339,6 +339,7 @@ import { useToast } from '~/composables/useToast'
import { useCustomFields } from '~/composables/useCustomFields'
import { useDocuments } from '~/composables/useDocuments'
import { formatStructurePreview, normalizeStructureForEditor } from '~/shared/modelUtils'
import { uniqueConstructeurIds } from '~/shared/constructeurUtils'
import type {
ComponentModelPiece,
ComponentModelStructure,
@@ -376,7 +377,7 @@ const submitting = ref(false)
const creationForm = reactive({
name: '' as string,
reference: '' as string,
constructeurId: null as string | null,
constructeurIds: [] as string[],
prix: '' as string,
})
const lastSuggestedName = ref('')
@@ -737,7 +738,7 @@ const resolveSubcomponentLabel = (node: Record<string, any>) => {
const clearCreationForm = () => {
creationForm.name = ''
creationForm.reference = ''
creationForm.constructeurId = null
creationForm.constructeurIds = []
creationForm.prix = ''
lastSuggestedName.value = ''
structureAssignments.value = null
@@ -758,8 +759,8 @@ const submitCreation = async () => {
payload.reference = reference
}
if (creationForm.constructeurId) {
payload.constructeurId = creationForm.constructeurId
if (creationForm.constructeurIds.length) {
payload.constructeurIds = uniqueConstructeurIds(creationForm.constructeurIds)
}
const rawPrice = typeof creationForm.prix === 'string'