Files
Starseed/frontend/modules/catalog/components/ProductPlaceholderTabs.vue
T
tristan 64c3b9b6ec feat(catalog) : M6 — écran Modification produit + onglets placeholder (ERP-206)
Écran de modification (ajout pré-rempli, bouton « Enregistrer ») et pose des
onglets Fournisseurs/Clients en placeholder « en cours de développement ».

- route /admin/products/{id}/edit : useProduct(id) charge le détail, prefill du formulaire principal
- RG-6.08 : useProductForm en mode édition → PATCH /products/{id} (merge-patch), bouton « Enregistrer »
- unicité du code re-validée serveur en édition (409 doublon mappé inline)
- onglets Fournisseurs + Clients : ComingSoonPlaceholder, aucun appel API ni champ (HP-M6-01 / RG-6.10)
- mêmes onglets placeholder posés sur l'écran Ajouter (cohérence)
- i18n admin.products.edit / tab ; 11 tests Vitest (prefill + PATCH + placeholder)
2026-06-25 18:01:33 +02:00

28 lines
1.1 KiB
Vue

<template>
<!--
Onglets « Fournisseurs » / « Clients » de la fiche produit HORS PERIMETRE
V0 (HP-M6-01, RG-6.10) : ils dependent d'un module Contrat inexistant.
Rendu en placeholder « en cours de développement » (meme composant que les
onglets non-dev des fiches M1→M4). AUCUN appel API, AUCUN champ saisissable.
Affiches sans condition d'etat (a raffiner avec le module Contrat).
-->
<MalioTabList v-model="activeTab" :tabs="tabs" class="mt-[60px]">
<template #suppliers><ComingSoonPlaceholder /></template>
<template #clients><ComingSoonPlaceholder /></template>
</MalioTabList>
</template>
<script setup lang="ts">
import { computed, ref } from 'vue'
const { t } = useI18n()
const activeTab = ref('suppliers')
// Icone (Iconify) par onglet, alignee sur la convention des fiches existantes.
const tabs = computed(() => [
{ key: 'suppliers', label: t('admin.products.tab.suppliers'), icon: 'mdi:truck-outline' },
{ key: 'clients', label: t('admin.products.tab.clients'), icon: 'mdi:account-group-outline' },
])
</script>