From 789272dc3770b171fb8ed309a103fa470d594431 Mon Sep 17 00:00:00 2001 From: Julian Krauser Date: Tue, 22 Jul 2025 13:10:04 +0200 Subject: [PATCH] edit repairs --- ...eReportSearchSelectMultipleWithRelated.vue | 19 +-- ...ageReportSearchSelectSingleWithRelated.vue | 2 +- src/router/index.ts | 6 + src/stores/admin/unit/repair.ts | 18 ++- src/viewmodels/admin/unit/repair.models.ts | 10 +- src/views/admin/unit/repair/DamageReports.vue | 92 ++++++++++++++ src/views/admin/unit/repair/Overview.vue | 118 +++++++++--------- src/views/admin/unit/repair/RepairRouting.vue | 8 +- .../admin/unit/repair/RepairStatusRouting.vue | 2 +- 9 files changed, 201 insertions(+), 74 deletions(-) create mode 100644 src/views/admin/unit/repair/DamageReports.vue diff --git a/src/components/search/DamageReportSearchSelectMultipleWithRelated.vue b/src/components/search/DamageReportSearchSelectMultipleWithRelated.vue index bfb45b7..dc7e016 100644 --- a/src/components/search/DamageReportSearchSelectMultipleWithRelated.vue +++ b/src/components/search/DamageReportSearchSelectMultipleWithRelated.vue @@ -111,7 +111,7 @@ export default defineComponent({ required: true, }, }, - emits: ["update:model-value", "add:difference", "remove:difference", "add:damageReport", "add:damageReportByArray"], + emits: ["update:model-value", "add:difference", "remove:difference", "add:damageReport"], watch: { modelValue() { // if (this.initialLoaded) return; @@ -215,15 +215,18 @@ export default defineComponent({ }); }, getDamageReportFromSearch(id: string) { - return this.filtered.find((f) => f.id == id); + return this.available.find((f) => f.id == id); }, loadDamageReportsInitial() { - if (this.modelValue.length == 0) return; - this.getDamageReportsByIds(this.modelValue) - .then((res) => { - this.chosen = res.data; - }) - .catch(() => {}); + if (this.modelValue.length == 0) { + this.chosen = []; + } else { + this.getDamageReportsByIds(this.modelValue) + .then((res) => { + this.chosen = res.data; + }) + .catch(() => {}); + } }, }, }); diff --git a/src/components/search/DamageReportSearchSelectSingleWithRelated.vue b/src/components/search/DamageReportSearchSelectSingleWithRelated.vue index 101fe78..ea77b31 100644 --- a/src/components/search/DamageReportSearchSelectSingleWithRelated.vue +++ b/src/components/search/DamageReportSearchSelectSingleWithRelated.vue @@ -201,7 +201,7 @@ export default defineComponent({ }); }, getDamageReportFromSearch(id: string) { - return this.filtered.find((f) => f.id == id); + return this.available.find((f) => f.id == id); }, loadDamageReportInitial() { if (this.modelValue == "" || this.modelValue == null) return; diff --git a/src/router/index.ts b/src/router/index.ts index 30b6402..b5cc468 100644 --- a/src/router/index.ts +++ b/src/router/index.ts @@ -821,6 +821,12 @@ const router = createRouter({ component: () => import("@/views/admin/unit/repair/Overview.vue"), props: true, }, + { + path: "reports", + name: "admin-unit-repair-reports", + component: () => import("@/views/admin/unit/repair/DamageReports.vue"), + props: true, + }, ], }, ], diff --git a/src/stores/admin/unit/repair.ts b/src/stores/admin/unit/repair.ts index 91e444e..acf30c9 100644 --- a/src/stores/admin/unit/repair.ts +++ b/src/stores/admin/unit/repair.ts @@ -2,6 +2,7 @@ import { defineStore } from "pinia"; import type { CreateRepairViewModel, RepairViewModel, + UpdateRepairStatusViewModel, UpdateRepairViewModel, } from "@/viewmodels/admin/unit/repair.models"; import { http } from "@/serverCom"; @@ -110,9 +111,22 @@ export const useRepairStore = defineStore("repair", { return result; }, async updateRepair(repair: UpdateRepairViewModel): Promise> { - const result = await http.patch(`/admin/repair/${repair.id}`, { + const result = await http.patch(`/admin/repair/${this.activeRepairObj?.id}`, { + title: repair.title, + description: repair.description, + responsible: repair.responsible, + }); + return result; + }, + async updateRepairReports(reports: Array): Promise> { + const result = await http.patch(`/admin/repair/${this.activeRepairObj?.id}/reports`, { + reports, + }); + return result; + }, + async updateRepairStatus(repair: UpdateRepairStatusViewModel): Promise> { + const result = await http.patch(`/admin/repair/${this.activeRepairObj?.id}/status`, { status: repair.status, - noteByWorker: repair.noteByWorker, done: repair.done, }); return result; diff --git a/src/viewmodels/admin/unit/repair.models.ts b/src/viewmodels/admin/unit/repair.models.ts index cef3a72..24904e7 100644 --- a/src/viewmodels/admin/unit/repair.models.ts +++ b/src/viewmodels/admin/unit/repair.models.ts @@ -43,9 +43,15 @@ export interface CreateRepairViewModel { reports: string[]; } -export interface UpdateRepairViewModel { +export interface UpdateRepairStatusViewModel { id: string; status: string; - noteByWorker: string; done: boolean; } + +export interface UpdateRepairViewModel { + id: string; + title: string; + description: string; + responsible: string; +} diff --git a/src/views/admin/unit/repair/DamageReports.vue b/src/views/admin/unit/repair/DamageReports.vue new file mode 100644 index 0000000..a90ecb4 --- /dev/null +++ b/src/views/admin/unit/repair/DamageReports.vue @@ -0,0 +1,92 @@ + + + + + diff --git a/src/views/admin/unit/repair/Overview.vue b/src/views/admin/unit/repair/Overview.vue index b401bbe..4c32fca 100644 --- a/src/views/admin/unit/repair/Overview.vue +++ b/src/views/admin/unit/repair/Overview.vue @@ -1,38 +1,39 @@ @@ -41,7 +42,7 @@ import { defineComponent } from "vue"; import { mapActions, mapState, mapWritableState } from "pinia"; import { useAbilityStore } from "@/stores/ability"; import { useRepairStore } from "@/stores/admin/unit/repair"; -import type { RepairViewModel, UpdateRepairViewModel } from "@/viewmodels/admin/unit/repair.models"; +import type { UpdateRepairStatusViewModel, UpdateRepairViewModel } from "@/viewmodels/admin/unit/repair.models";