diff --git a/src/components/admin/unit/inspectionPlan/InspectionPointListItem.vue b/src/components/admin/unit/inspectionPlan/InspectionPointListItem.vue index ad5654b..a7591d6 100644 --- a/src/components/admin/unit/inspectionPlan/InspectionPointListItem.vue +++ b/src/components/admin/unit/inspectionPlan/InspectionPointListItem.vue @@ -6,7 +6,7 @@ - +
@@ -28,6 +28,13 @@
+
+

Dateiart

+
+ + +
+
@@ -63,7 +70,7 @@ export default defineComponent({ get() { return this.modelValue.title; }, - set(val: InspectionPointViewModel) { + set(val: string) { this.$emit("update:model-value", { ...this.modelValue, title: val }); }, }, @@ -71,7 +78,7 @@ export default defineComponent({ get() { return this.modelValue.description; }, - set(val: InspectionPointViewModel) { + set(val: string) { this.$emit("update:model-value", { ...this.modelValue, description: val }); }, }, @@ -79,16 +86,24 @@ export default defineComponent({ get() { return this.modelValue.min; }, - set(val: InspectionPointViewModel) { - this.$emit("update:model-value", { ...this.modelValue, min: val }); + set(val: string) { + this.$emit("update:model-value", { ...this.modelValue, min: val == "" ? null : val }); }, }, max: { get() { return this.modelValue.max; }, - set(val: InspectionPointViewModel) { - this.$emit("update:model-value", { ...this.modelValue, max: val }); + set(val: string) { + this.$emit("update:model-value", { ...this.modelValue, max: val == "" ? null : val }); + }, + }, + others: { + get() { + return this.modelValue.others; + }, + set(val: string) { + this.$emit("update:model-value", { ...this.modelValue, others: val == "" ? null : val }); }, }, }, diff --git a/src/components/search/EquipmentSearchSelect.vue b/src/components/search/EquipmentSearchSelect.vue index 8feb26a..a68cd52 100644 --- a/src/components/search/EquipmentSearchSelect.vue +++ b/src/components/search/EquipmentSearchSelect.vue @@ -188,7 +188,7 @@ export default defineComponent({ }); }, getEquipmentFromSearch(id: string) { - return this.filtered.find((f) => f.id == id); + return this.available.find((f) => f.id == id); }, loadEquipmentInitial() { if (this.modelValue == "") return; diff --git a/src/components/search/EquipmentTypeSearchSelect.vue b/src/components/search/EquipmentTypeSearchSelect.vue index 8d431cb..6dc4f4a 100644 --- a/src/components/search/EquipmentTypeSearchSelect.vue +++ b/src/components/search/EquipmentTypeSearchSelect.vue @@ -175,7 +175,7 @@ export default defineComponent({ }); }, getEquipmentTypeFromSearch(id: string) { - return this.filtered.find((f) => f.id == id); + return this.available.find((f) => f.id == id); }, loadEquipmentTypeInitial() { if (this.modelValue == "") return; diff --git a/src/components/search/InspectionPlanSearchSelect.vue b/src/components/search/InspectionPlanSearchSelect.vue index a328fb8..5c86179 100644 --- a/src/components/search/InspectionPlanSearchSelect.vue +++ b/src/components/search/InspectionPlanSearchSelect.vue @@ -101,10 +101,6 @@ export default defineComponent({ type: Boolean, default: false, }, - type: { - type: String as PropType<"vehicle" | "equipment" | "wearable">, - default: "equipment", - }, }, emits: ["update:model-value"], watch: { @@ -183,7 +179,7 @@ export default defineComponent({ }); }, getInspectionPlanFromSearch(id: string) { - return this.filtered.find((f) => f.id == id); + return this.available.find((f) => f.id == id); }, loadInspectionPlanInitial() { if (this.modelValue == "") return; diff --git a/src/components/search/InspectionPlanSearchSelectWithRelated.vue b/src/components/search/InspectionPlanSearchSelectWithRelated.vue new file mode 100644 index 0000000..0d5d034 --- /dev/null +++ b/src/components/search/InspectionPlanSearchSelectWithRelated.vue @@ -0,0 +1,215 @@ + + + + + diff --git a/src/components/search/VehicleSearchSelect.vue b/src/components/search/VehicleSearchSelect.vue index c3484db..293e739 100644 --- a/src/components/search/VehicleSearchSelect.vue +++ b/src/components/search/VehicleSearchSelect.vue @@ -188,7 +188,7 @@ export default defineComponent({ }); }, getVehicleFromSearch(id: string) { - return this.filtered.find((f) => f.id == id); + return this.available.find((f) => f.id == id); }, loadVehicleInitial() { if (this.modelValue == "") return; diff --git a/src/components/search/VehicleTypeSearchSelect.vue b/src/components/search/VehicleTypeSearchSelect.vue index c730dc5..1f3901f 100644 --- a/src/components/search/VehicleTypeSearchSelect.vue +++ b/src/components/search/VehicleTypeSearchSelect.vue @@ -175,7 +175,7 @@ export default defineComponent({ }); }, getVehicleTypeFromSearch(id: string) { - return this.filtered.find((f) => f.id == id); + return this.available.find((f) => f.id == id); }, loadVehicleTypeInitial() { if (this.modelValue == "") return; diff --git a/src/router/unit/inspectionPlan.ts b/src/router/unit/inspectionPlan.ts index 7bd43a3..91b8c8e 100644 --- a/src/router/unit/inspectionPlan.ts +++ b/src/router/unit/inspectionPlan.ts @@ -1,10 +1,11 @@ import { useInspectionPlanStore } from "@/stores/admin/unit/inspectionPlan/inspectionPlan"; +import { useInspectionPointStore } from "../../stores/admin/unit/inspectionPlan/inspectionPoint"; export async function setInspectionPlanId(to: any, from: any, next: any) { const InspectionPlanStore = useInspectionPlanStore(); InspectionPlanStore.activeInspectionPlan = to.params?.inspectionPlanId ?? null; - //useXYStore().$reset(); + useInspectionPointStore().$reset(); next(); } @@ -14,7 +15,7 @@ export async function resetInspectionPlanStores(to: any, from: any, next: any) { InspectionPlanStore.activeInspectionPlan = null; InspectionPlanStore.activeInspectionPlanObj = null; - //useXYStore().$reset(); + useInspectionPointStore().$reset(); next(); } diff --git a/src/stores/admin/unit/inspectionPlan/inspectionPlan.ts b/src/stores/admin/unit/inspectionPlan/inspectionPlan.ts index 78f4d73..f69d53e 100644 --- a/src/stores/admin/unit/inspectionPlan/inspectionPlan.ts +++ b/src/stores/admin/unit/inspectionPlan/inspectionPlan.ts @@ -53,6 +53,25 @@ export const useInspectionPlanStore = defineStore("inspectionPlan", { return { ...res, data: res.data.inspectionPlans }; }); }, + async getAllInspectionPlansWithRelated( + related: "vehicle" | "equipment" | "wearable", + relatedId: string + ): Promise> { + return await http.get(`/admin/inspectionPlan/${related}/${relatedId}?noLimit=true`).then((res) => { + return { ...res, data: res.data.inspectionPlans }; + }); + }, + async searchInspectionPlansWithRelated( + related: "vehicle" | "equipment" | "wearable", + relatedId: string, + search: string + ): Promise> { + return await http + .get(`/admin/inspectionPlan/${related}/${relatedId}?search=${search}&noLimit=true`) + .then((res) => { + return { ...res, data: res.data.inspectionPlans }; + }); + }, fetchInspectionPlanByActiveId() { this.loadingActive = "loading"; http diff --git a/src/stores/admin/unit/inspectionPlan/inspectionPoint.ts b/src/stores/admin/unit/inspectionPlan/inspectionPoint.ts new file mode 100644 index 0000000..7ce669e --- /dev/null +++ b/src/stores/admin/unit/inspectionPlan/inspectionPoint.ts @@ -0,0 +1,37 @@ +import { defineStore } from "pinia"; +import type { InspectionPointViewModel } from "@/viewmodels/admin/unit/inspection/inspectionPlan.models"; +import { http } from "@/serverCom"; +import type { AxiosResponse } from "axios"; +import { useInspectionPlanStore } from "./inspectionPlan"; + +export const useInspectionPointStore = defineStore("inspectionPoint", { + state: () => { + return { + inspectionPoints: [] as Array, + loading: "loading" as "loading" | "fetched" | "failed", + }; + }, + actions: { + fetchInspectionPoints() { + const inspectionPlanId = useInspectionPlanStore().activeInspectionPlan; + this.loading = "loading"; + http + .get(`/admin/inspectionPlan/${inspectionPlanId}/points`) + .then((result) => { + this.inspectionPoints = result.data; + this.loading = "fetched"; + }) + .catch((err) => { + this.loading = "failed"; + }); + }, + async updateActiveInspectionPoints( + inspectionPoints: Array + ): Promise> { + const inspectionPlanId = useInspectionPlanStore().activeInspectionPlan; + const result = await http.patch(`/admin/inspectionPlan/${inspectionPlanId}/points`, inspectionPoints); + this.fetchInspectionPoints(); + return result; + }, + }, +}); diff --git a/src/viewmodels/admin/unit/inspection/inspectionPlan.models.ts b/src/viewmodels/admin/unit/inspection/inspectionPlan.models.ts index 262f25e..ad0478c 100644 --- a/src/viewmodels/admin/unit/inspection/inspectionPlan.models.ts +++ b/src/viewmodels/admin/unit/inspection/inspectionPlan.models.ts @@ -45,6 +45,7 @@ export interface InspectionPointViewModel { type: InspectionPointEnum; min?: number; max?: number; + others?: string; sort: number; } diff --git a/src/views/admin/unit/inspection/InspectionStart.vue b/src/views/admin/unit/inspection/InspectionStart.vue index 9f86b88..de35f5a 100644 --- a/src/views/admin/unit/inspection/InspectionStart.vue +++ b/src/views/admin/unit/inspection/InspectionStart.vue @@ -30,10 +30,17 @@ - +
- +
@@ -64,10 +71,15 @@ import MainTemplate from "@/templates/Main.vue"; import Spinner from "@/components/Spinner.vue"; import SuccessCheckmark from "@/components/SuccessCheckmark.vue"; import FailureXMark from "@/components/FailureXMark.vue"; -import InspectionPlanSearchSelect from "@/components/search/InspectionPlanSearchSelect.vue"; import EquipmentSearchSelect from "@/components/search/EquipmentSearchSelect.vue"; import VehicleSearchSelect from "@/components/search/VehicleSearchSelect.vue"; import WearableSearchSelect from "@/components/search/WearableSearchSelect.vue"; +import type { InspectionPlanViewModel } from "@/viewmodels/admin/unit/inspection/inspectionPlan.models"; +import { useInspectionPlanStore } from "@/stores/admin/unit/inspectionPlan/inspectionPlan"; +import InspectionPlanSearchSelectWithRelated from "@/components/search/InspectionPlanSearchSelectWithRelated.vue"; +import { useEquipmentStore } from "@/stores/admin/unit/equipment/equipment"; +import { useVehicleStore } from "@/stores/admin/unit/vehicle/vehicle"; +import { useWearableStore } from "@/stores/admin/unit/wearable/wearable"; diff --git a/src/views/admin/unit/inspectionPlan/UpdateInspectionPlanPoints.vue b/src/views/admin/unit/inspectionPlan/UpdateInspectionPlanPoints.vue index a4fc09f..0b78a77 100644 --- a/src/views/admin/unit/inspectionPlan/UpdateInspectionPlanPoints.vue +++ b/src/views/admin/unit/inspectionPlan/UpdateInspectionPlanPoints.vue @@ -3,34 +3,35 @@ zurück zur Übersicht

laden fehlgeschlagen

-
+

Prüfplan-Punkte bearbeiten

@@ -42,7 +43,7 @@ :key="index" :model-value="point" :index="index" - :total-count="inspectionPoints.length" + :total-count="localPoints.length" @update:model-value="updateItemFromArray" @up="changeSort('up', point.id, index)" @down="changeSort('down', point.id, index)" @@ -54,7 +55,13 @@ - @@ -68,13 +75,7 @@