diff --git a/app/components/model-types/EditModal.vue b/app/components/model-types/EditModal.vue
index 3b52ae6..1448c3f 100644
--- a/app/components/model-types/EditModal.vue
+++ b/app/components/model-types/EditModal.vue
@@ -57,6 +57,7 @@
class="select select-bordered w-full"
name="category"
required
+ :disabled="lockCategory"
>
@@ -102,6 +103,7 @@ const props = defineProps<{
initialCategory: ModelCategory;
initialData?: Partial | null;
saving?: boolean;
+ lockCategory?: boolean;
}>();
const emit = defineEmits<{
@@ -109,6 +111,8 @@ const emit = defineEmits<{
(e: 'save', payload: ModelTypePayload): void;
}>();
+const lockCategory = computed(() => props.lockCategory ?? false);
+
const form = reactive({
name: '',
code: '',
diff --git a/app/components/model-types/ManagementView.vue b/app/components/model-types/ManagementView.vue
new file mode 100644
index 0000000..18014ab
--- /dev/null
+++ b/app/components/model-types/ManagementView.vue
@@ -0,0 +1,329 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/app/components/model-types/Toolbar.vue b/app/components/model-types/Toolbar.vue
index d1e8e18..9717be8 100644
--- a/app/components/model-types/Toolbar.vue
+++ b/app/components/model-types/Toolbar.vue
@@ -1,6 +1,11 @@
-
-
+
Catalogue de composant
-
+
Catalogue de pièce
@@ -20,6 +20,6 @@
diff --git a/app/pages/piece-category.vue b/app/pages/piece-category.vue
new file mode 100644
index 0000000..42df576
--- /dev/null
+++ b/app/pages/piece-category.vue
@@ -0,0 +1,10 @@
+
+
+
+
+
diff --git a/app/pages/models/pieces.vue b/app/pages/pieces-catalog.vue
similarity index 98%
rename from app/pages/models/pieces.vue
rename to app/pages/pieces-catalog.vue
index 2c31900..d0080c2 100644
--- a/app/pages/models/pieces.vue
+++ b/app/pages/pieces-catalog.vue
@@ -6,8 +6,8 @@
Gérez les modèles disponibles pour chaque groupe de pièces.
- Composants
- Pièces
+ Composants
+ Pièces
diff --git a/dup-report.md b/dup-report.md
index 37b3239..4b7eae0 100644
--- a/dup-report.md
+++ b/dup-report.md
@@ -23,8 +23,8 @@
## DUP-003 · Score 88 · Formatage de dates UI
- **Motif** : fonctions utilitaires de formatage (`toLocaleDateString`/`Intl.DateTimeFormat`) recopiées dans plusieurs pages (catalogues modèles et documents).
- **Occurrences détectées** :
- - `app/pages/models/components.vue` — lignes 70-311 (affichage de la colonne « Modifié »).
- - `app/pages/models/pieces.vue` — lignes 70-310.
+ - `app/pages/component-catalog.vue` — lignes 70-311 (affichage de la colonne « Modifié »).
+ - `app/pages/pieces-catalog.vue` — lignes 70-310.
- `app/pages/documents.vue` — lignes 90-188.
- **Extraction** : utilitaire commun `app/utils/date.ts` exposant `formatFrenchDate(value: Date | string | number | null | undefined): string` avec gestion des valeurs nulles/invalides.
- **Plan / Statut** : toutes les pages importent `formatFrenchDate` et l’utilisent directement en template. Plus de fonction locale dupliquée.