diff --git a/frontend/components/Maintenance/EditModal.vue b/frontend/components/Maintenance/EditModal.vue
index ce917dc8..8176bbe5 100644
--- a/frontend/components/Maintenance/EditModal.vue
+++ b/frontend/components/Maintenance/EditModal.vue
@@ -135,5 +135,34 @@
emit("changed");
}
- defineExpose({ openCreateModal, openUpdateModal, deleteEntry });
+ async function complete(maintenanceEntry: MaintenanceEntry) {
+ const { error } = await api.maintenances.update(maintenanceEntry.id, {
+ name: maintenanceEntry.name,
+ completedDate: new Date(Date.now()),
+ scheduledDate: maintenanceEntry.scheduledDate ?? "null",
+ description: maintenanceEntry.description,
+ cost: maintenanceEntry.cost,
+ });
+ if (error) {
+ toast.error(t("maintenances.toast.failed_to_update"));
+ }
+ emit("changed");
+ }
+
+ async function completeAndDuplicate(
+ maintenanceEntry: MaintenanceEntry | MaintenanceEntryWithDetails,
+ itemId: string
+ ) {
+ await complete(maintenanceEntry);
+ entry.id = null;
+ entry.name = maintenanceEntry.name;
+ entry.completedDate = null;
+ entry.scheduledDate = null;
+ entry.description = maintenanceEntry.description;
+ entry.cost = maintenanceEntry.cost;
+ entry.itemId = itemId;
+ visible.value = true;
+ }
+
+ defineExpose({ openCreateModal, openUpdateModal, deleteEntry, complete, completeAndDuplicate });
diff --git a/frontend/locales/en.json b/frontend/locales/en.json
index 08b93a2f..19b1150f 100644
--- a/frontend/locales/en.json
+++ b/frontend/locales/en.json
@@ -140,7 +140,9 @@
"create_first": "Create Your First Entry",
"delete": "Delete",
"edit": "Edit",
- "new": "New"
+ "new": "New",
+ "complete": "Complete",
+ "complete_and_duplicate" : "Complete and Duplicate"
},
"modal": {
"completed_date": "Completed Date",
diff --git a/frontend/locales/fr.json b/frontend/locales/fr.json
index 5680edde..a89047d0 100644
--- a/frontend/locales/fr.json
+++ b/frontend/locales/fr.json
@@ -140,7 +140,9 @@
"create_first": "Créer votre première entrée",
"delete": "Supprimer",
"edit": "Modifier",
- "new": "Ajouter"
+ "new": "Ajouter",
+ "complete": "Terminer",
+ "complete_and_duplicate" : "Terminer et dupliquer"
},
"modal": {
"completed_date": "Date d'achèvement",
diff --git a/frontend/pages/maintenance.vue b/frontend/pages/maintenance.vue
index 41759f2c..60b05169 100644
--- a/frontend/pages/maintenance.vue
+++ b/frontend/pages/maintenance.vue
@@ -6,6 +6,7 @@
import MdiDelete from "~icons/mdi/delete";
import MdiEdit from "~icons/mdi/edit";
import MdiCalendar from "~icons/mdi/calendar";
+ import MdiContentDuplicate from "~icons/mdi/content-duplicate";
import MaintenanceEditModal from "~~/components/Maintenance/EditModal.vue";
const { t } = useI18n();
@@ -122,6 +123,22 @@
{{ $t("maintenance.list.edit") }}
+
+
+
+
+ {{ $t("maintenances.list.complete") }}
+
+
+
+
+
+ {{ $t("maintenances.list.complete_and_duplicate") }}
+