Compare commits
2 Commits
5c31045e83
...
22ba9a8d05
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
22ba9a8d05 | ||
|
|
695d56a6d3 |
@@ -280,6 +280,18 @@
|
||||
{{ piece.typePieceId ? `Sélection : ${getPieceTypeLabel(piece.typePieceId) || 'Inconnue'}` : 'Aucune famille sélectionnée' }}
|
||||
</p>
|
||||
</div>
|
||||
<div class="form-control">
|
||||
<label class="label py-1"><span class="label-text text-xs">Quantité</span></label>
|
||||
<input
|
||||
v-model.number="piece.quantity"
|
||||
type="number"
|
||||
:min="1"
|
||||
step="1"
|
||||
placeholder="Qté"
|
||||
class="input input-bordered input-sm md:input-md w-20"
|
||||
@input="piece.quantity = Math.max(1, piece.quantity || 1)"
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
<button v-if="!isPieceLocked(index)" type="button" class="btn btn-error btn-xs btn-square" @click="removePiece(index)">
|
||||
<IconLucideTrash class="w-4 h-4" aria-hidden="true" />
|
||||
|
||||
@@ -115,6 +115,7 @@ export function useStructureNodeCrud(props: StructureNodeCrudDeps) {
|
||||
reference: '',
|
||||
familyCode: '',
|
||||
role: '',
|
||||
quantity: 1,
|
||||
})
|
||||
}
|
||||
|
||||
|
||||
@@ -175,6 +175,9 @@ export const normalizeStructureForSave = (input: any): any => {
|
||||
if (piece.reference) {
|
||||
payload.reference = piece.reference
|
||||
}
|
||||
if ((piece as any).quantity !== undefined && (piece as any).quantity >= 1) {
|
||||
payload.quantity = (piece as any).quantity
|
||||
}
|
||||
return payload
|
||||
}) as any
|
||||
|
||||
|
||||
@@ -103,6 +103,7 @@ export const hydratePieces = (pieces: any[]): ComponentModelPiece[] => {
|
||||
reference: piece?.reference ?? '',
|
||||
familyCode: piece?.familyCode ?? piece?.typePiece?.code ?? '',
|
||||
role: piece?.role ?? '',
|
||||
...(piece?.quantity !== undefined && piece.quantity >= 1 ? { quantity: piece.quantity } : {}),
|
||||
}))
|
||||
}
|
||||
|
||||
@@ -175,6 +176,7 @@ export const mapComponentPieces = (pieces: any[]): ComponentModelPiece[] => {
|
||||
typePieceLabel: piece?.typePieceLabel ?? piece?.typePiece?.name ?? '',
|
||||
familyCode: piece?.familyCode ?? piece?.typePiece?.code ?? '',
|
||||
role: piece?.role ?? '',
|
||||
...(piece?.quantity !== undefined && piece.quantity >= 1 ? { quantity: piece.quantity } : {}),
|
||||
}))
|
||||
}
|
||||
|
||||
|
||||
@@ -162,6 +162,8 @@ export const sanitizePieces = (pieces: any[]): ComponentModelPiece[] => {
|
||||
const rawRole = typeof piece?.role === 'string' ? piece.role.trim() : ''
|
||||
const role = rawRole.length > 0 ? rawRole : undefined
|
||||
|
||||
const quantity = typeof piece?.quantity === 'number' && piece.quantity >= 1 ? piece.quantity : undefined
|
||||
|
||||
if (!typePieceId && !typePieceLabel && !reference && !familyCode) {
|
||||
return null
|
||||
}
|
||||
@@ -182,6 +184,9 @@ export const sanitizePieces = (pieces: any[]): ComponentModelPiece[] => {
|
||||
if (typePieceLabel) {
|
||||
result.typePieceLabel = typePieceLabel
|
||||
}
|
||||
if (quantity !== undefined) {
|
||||
result.quantity = quantity
|
||||
}
|
||||
return result
|
||||
})
|
||||
.filter((piece): piece is ComponentModelPiece => !!piece)
|
||||
|
||||
@@ -21,6 +21,7 @@ export interface ComponentModelPiece {
|
||||
reference?: string
|
||||
familyCode?: string
|
||||
role?: string
|
||||
quantity?: number
|
||||
}
|
||||
|
||||
export interface ComponentModelProduct {
|
||||
@@ -156,6 +157,7 @@ const validatePiece = (
|
||||
const reference = ensureString(value.reference)
|
||||
const familyCode = ensureString(value.familyCode)
|
||||
const role = ensureString(value.role)
|
||||
const quantity = typeof value.quantity === 'number' && value.quantity >= 1 ? value.quantity : undefined
|
||||
|
||||
if (!typePieceId && !typePieceLabel && !reference && !familyCode) {
|
||||
issues.push(`${path}: au moins un identifiant, une famille ou une référence de pièce est requis`)
|
||||
@@ -168,6 +170,7 @@ const validatePiece = (
|
||||
...(reference ? { reference } : {}),
|
||||
...(familyCode ? { familyCode } : {}),
|
||||
...(role ? { role } : {}),
|
||||
...(quantity ? { quantity } : {}),
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -176,6 +176,7 @@ export function sanitizePieceDefinition(definition: ComponentModelPiece) {
|
||||
typePieceLabel: definition.typePieceLabel ?? null,
|
||||
reference: definition.reference ?? null,
|
||||
familyCode: (definition as any).familyCode ?? null,
|
||||
quantity: typeof (definition as any).quantity === 'number' ? (definition as any).quantity : null,
|
||||
})
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user