feat(custom-fields) : display context custom fields in PieceItem

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-04-03 11:00:28 +02:00
parent 99147f4e08
commit 7b674fcc0c

View File

@@ -245,6 +245,19 @@
@field-blur="handleCustomFieldBlur"
/>
<!-- Context custom fields (machine-specific) -->
<div v-if="mergedContextFields.length" class="mt-4">
<h4 class="text-xs font-semibold text-base-content/70 mb-2">
Champs contextuels
</h4>
<CustomFieldDisplay
:fields="mergedContextFields"
:is-edit-mode="isEditMode"
:columns="2"
@field-blur="updateContextCustomField"
/>
</div>
<div class="mt-4 pt-4 border-t border-base-200 space-y-3">
<div class="flex items-center justify-between">
<h5 class="text-sm font-medium text-base-content/80">Documents</h5>
@@ -303,11 +316,13 @@ import {
} from '~/shared/constructeurUtils'
import {
resolveFieldId,
resolveFieldReadOnly,
resolveFieldReadOnly, mergeFieldDefinitionsWithValues, dedupeMergedFields
} from '~/shared/utils/entityCustomFieldLogic'
import { useEntityDocuments } from '~/composables/useEntityDocuments'
import { useEntityProductDisplay } from '~/composables/useEntityProductDisplay'
import { useEntityCustomFields } from '~/composables/useEntityCustomFields'
import { useCustomFields } from '~/composables/useCustomFields'
import { useToast } from '~/composables/useToast'
const props = defineProps({
piece: { type: Object, required: true },
@@ -375,6 +390,40 @@ const {
updateCustomField,
} = useEntityCustomFields({ entity: () => props.piece, entityType: 'piece' })
const { upsertCustomFieldValue } = useCustomFields()
const { showSuccess, showError } = useToast()
const mergedContextFields = computed(() => {
const definitions = props.piece?.contextCustomFields ?? []
const values = props.piece?.contextCustomFieldValues ?? []
if (!definitions.length && !values.length) return []
return dedupeMergedFields(
mergeFieldDefinitionsWithValues(definitions, values),
)
})
const updateContextCustomField = async (field) => {
const linkId = props.piece?.linkId
if (!linkId || !field) return
const customFieldId = field.customFieldId || field.customField?.id
if (!customFieldId) return
const result = await upsertCustomFieldValue(
customFieldId,
'machinePieceLink',
linkId,
field.value ?? '',
)
if (result.success) {
showSuccess(`Champ contextuel "${field.name || field.customField?.name}" mis à jour`)
}
else {
showError(`Erreur lors de la mise à jour du champ contextuel`)
}
}
// --- Document edit modal ---
const editingDocument = ref(null)
const editModalVisible = ref(false)