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:
@@ -245,6 +245,19 @@
|
|||||||
@field-blur="handleCustomFieldBlur"
|
@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="mt-4 pt-4 border-t border-base-200 space-y-3">
|
||||||
<div class="flex items-center justify-between">
|
<div class="flex items-center justify-between">
|
||||||
<h5 class="text-sm font-medium text-base-content/80">Documents</h5>
|
<h5 class="text-sm font-medium text-base-content/80">Documents</h5>
|
||||||
@@ -303,11 +316,13 @@ import {
|
|||||||
} from '~/shared/constructeurUtils'
|
} from '~/shared/constructeurUtils'
|
||||||
import {
|
import {
|
||||||
resolveFieldId,
|
resolveFieldId,
|
||||||
resolveFieldReadOnly,
|
resolveFieldReadOnly, mergeFieldDefinitionsWithValues, dedupeMergedFields
|
||||||
} from '~/shared/utils/entityCustomFieldLogic'
|
} from '~/shared/utils/entityCustomFieldLogic'
|
||||||
import { useEntityDocuments } from '~/composables/useEntityDocuments'
|
import { useEntityDocuments } from '~/composables/useEntityDocuments'
|
||||||
import { useEntityProductDisplay } from '~/composables/useEntityProductDisplay'
|
import { useEntityProductDisplay } from '~/composables/useEntityProductDisplay'
|
||||||
import { useEntityCustomFields } from '~/composables/useEntityCustomFields'
|
import { useEntityCustomFields } from '~/composables/useEntityCustomFields'
|
||||||
|
import { useCustomFields } from '~/composables/useCustomFields'
|
||||||
|
import { useToast } from '~/composables/useToast'
|
||||||
|
|
||||||
const props = defineProps({
|
const props = defineProps({
|
||||||
piece: { type: Object, required: true },
|
piece: { type: Object, required: true },
|
||||||
@@ -375,6 +390,40 @@ const {
|
|||||||
updateCustomField,
|
updateCustomField,
|
||||||
} = useEntityCustomFields({ entity: () => props.piece, entityType: 'piece' })
|
} = 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 ---
|
// --- Document edit modal ---
|
||||||
const editingDocument = ref(null)
|
const editingDocument = ref(null)
|
||||||
const editModalVisible = ref(false)
|
const editModalVisible = ref(false)
|
||||||
|
|||||||
Reference in New Issue
Block a user