64c3b9b6ec
É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)
28 lines
1.1 KiB
Vue
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>
|