diff --git a/src/components/CodeDetector.vue b/src/components/CodeDetector.vue index 1832f1a..373fc9d 100644 --- a/src/components/CodeDetector.vue +++ b/src/components/CodeDetector.vue @@ -2,7 +2,7 @@
) { this.paused = true; diff --git a/src/components/admin/unit/damageReport/DamageReportListItem.vue b/src/components/admin/unit/damageReport/DamageReportListItem.vue new file mode 100644 index 0000000..d2515ae --- /dev/null +++ b/src/components/admin/unit/damageReport/DamageReportListItem.vue @@ -0,0 +1,34 @@ + + + + + diff --git a/src/components/admin/unit/respiratoryGear/CreateRespiratoryGearModal.vue b/src/components/admin/unit/respiratoryGear/CreateRespiratoryGearModal.vue new file mode 100644 index 0000000..4f934d7 --- /dev/null +++ b/src/components/admin/unit/respiratoryGear/CreateRespiratoryGearModal.vue @@ -0,0 +1,157 @@ + + + + + diff --git a/src/components/admin/unit/respiratoryGear/RespiratoryGearListItem.vue b/src/components/admin/unit/respiratoryGear/RespiratoryGearListItem.vue new file mode 100644 index 0000000..9e2cb47 --- /dev/null +++ b/src/components/admin/unit/respiratoryGear/RespiratoryGearListItem.vue @@ -0,0 +1,34 @@ + + + + + diff --git a/src/components/admin/unit/respiratoryMission/CreateRespiratoryMissionModal.vue b/src/components/admin/unit/respiratoryMission/CreateRespiratoryMissionModal.vue new file mode 100644 index 0000000..4f934d7 --- /dev/null +++ b/src/components/admin/unit/respiratoryMission/CreateRespiratoryMissionModal.vue @@ -0,0 +1,157 @@ + + + + + diff --git a/src/components/admin/unit/respiratoryMission/RespiratoryMissionListItem.vue b/src/components/admin/unit/respiratoryMission/RespiratoryMissionListItem.vue new file mode 100644 index 0000000..324265a --- /dev/null +++ b/src/components/admin/unit/respiratoryMission/RespiratoryMissionListItem.vue @@ -0,0 +1,34 @@ + + + + + diff --git a/src/components/admin/unit/respiratoryWearer/CreateRespiratoryWearerModal.vue b/src/components/admin/unit/respiratoryWearer/CreateRespiratoryWearerModal.vue new file mode 100644 index 0000000..4f934d7 --- /dev/null +++ b/src/components/admin/unit/respiratoryWearer/CreateRespiratoryWearerModal.vue @@ -0,0 +1,157 @@ + + + + + diff --git a/src/components/admin/unit/respiratoryWearer/RespiratoryWearerListItem.vue b/src/components/admin/unit/respiratoryWearer/RespiratoryWearerListItem.vue new file mode 100644 index 0000000..69d8628 --- /dev/null +++ b/src/components/admin/unit/respiratoryWearer/RespiratoryWearerListItem.vue @@ -0,0 +1,34 @@ + + + + + diff --git a/src/helpers/codeScanner.ts b/src/helpers/codeScanner.ts index bf3c026..6894088 100644 --- a/src/helpers/codeScanner.ts +++ b/src/helpers/codeScanner.ts @@ -13,7 +13,7 @@ export const defaultConstraintOptions: Array = [ { label: "front camera", constraints: { facingMode: "user" } }, ]; -export async function getAvailableCameras(): Promise> { +export async function getAvailableCameras(useDefault: boolean = false): Promise> { // NOTE: on iOS we can't invoke `enumerateDevices` before the user has given // camera access permission. `QrcodeStream` internally takes care of // requesting the permissions. The `camera-on` event should guarantee that this @@ -22,9 +22,9 @@ export async function getAvailableCameras(): Promise> { const videoDevices = devices.filter(({ kind }) => kind === "videoinput"); return [ - ...defaultConstraintOptions, + ...(useDefault ? defaultConstraintOptions : []), ...videoDevices.map(({ deviceId, label }) => ({ - label: `${label} (ID: ${deviceId})`, + label: `${label}`, //(ID: ${deviceId}) constraints: { deviceId, facingMode: "custom" }, })), ]; diff --git a/src/router/index.ts b/src/router/index.ts index b0d0cfb..e72d6a3 100644 --- a/src/router/index.ts +++ b/src/router/index.ts @@ -404,17 +404,10 @@ const router = createRouter({ }, { path: "equipment-type", - name: "admin-unit-equipment_type-route", - component: () => import("@/views/RouterView.vue"), + name: "admin-unit-equipment_type", + component: () => import("@/views/admin/unit/equipmentType/EquipmentType.vue"), meta: { type: "read", section: "unit", module: "equipment_type" }, beforeEnter: [abilityAndNavUpdate], - children: [ - { - path: "", - name: "admin-unit-equipment_type", - component: () => import("@/views/admin/unit/equipmentType/EquipmentType.vue"), - }, - ], }, ], }, diff --git a/src/stores/admin/unit/damageReport/damageReport.ts b/src/stores/admin/unit/damageReport/damageReport.ts new file mode 100644 index 0000000..aa761e7 --- /dev/null +++ b/src/stores/admin/unit/damageReport/damageReport.ts @@ -0,0 +1,99 @@ +import { defineStore } from "pinia"; +import type { + DamageReportViewModel, + CreateDamageReportViewModel, + UpdateDamageReportViewModel, +} from "@/viewmodels/admin/unit/damageReport/damageReport.models"; +import { http } from "@/serverCom"; +import type { AxiosResponse } from "axios"; + +export const useDamageReportStore = defineStore("damageReport", { + state: () => { + return { + damageReports: [] as Array, + totalCount: 0 as number, + loading: "loading" as "loading" | "fetched" | "failed", + loadingActive: "loading" as "loading" | "fetched" | "failed", + }; + }, + actions: { + fetchDamageReports(offset = 0, count = 25, search = "", clear = false) { + if (clear) this.damageReports = []; + this.loading = "loading"; + http + .get(`/admin/damageReport?offset=${offset}&count=${count}${search != "" ? "&search=" + search : ""}`) + .then((result) => { + this.totalCount = result.data.total; + result.data.damageReports + .filter((elem: DamageReportViewModel) => this.damageReports.findIndex((m) => m.id == elem.id) == -1) + .map((elem: DamageReportViewModel, index: number): DamageReportViewModel & { tab_pos: number } => { + return { + ...elem, + tab_pos: index + offset, + }; + }) + .forEach((elem: DamageReportViewModel & { tab_pos: number }) => { + this.damageReports.push(elem); + }); + this.loading = "fetched"; + }) + .catch((err) => { + this.loading = "failed"; + }); + }, + async getAllDamageReports(): Promise> { + return await http.get(`/admin/damageReport?noLimit=true`).then((res) => { + return { ...res, data: res.data.damageReports }; + }); + }, + async getDamageReportsByIds(ids: Array): Promise> { + return await http + .post(`/admin/damageReport/ids`, { + ids, + }) + .then((res) => { + return { ...res, data: res.data.damageReports }; + }); + }, + async searchDamageReports(search: string): Promise> { + return await http.get(`/admin/damageReport?search=${search}&noLimit=true`).then((res) => { + return { ...res, data: res.data.damageReports }; + }); + }, + fetchDamageReportById(id: string) { + return http.get(`/admin/damageReport/${id}`); + }, + fetchDamageReportStatisticsById(id: string) { + return http.get(`/admin/damageReport/${id}/statistics`); + }, + async createDamageReport(damageReport: CreateDamageReportViewModel): Promise> { + const result = await http.post(`/admin/damageReport`, { + salutationId: damageReport.salutationId, + firstname: damageReport.firstname, + lastname: damageReport.lastname, + nameaffix: damageReport.nameaffix, + birthdate: damageReport.birthdate, + internalId: damageReport.internalId, + }); + this.fetchDamageReports(); + return result; + }, + async updateDamageReport(damageReport: UpdateDamageReportViewModel): Promise> { + const result = await http.patch(`/admin/damageReport/${damageReport.id}`, { + salutationId: damageReport.salutationId, + firstname: damageReport.firstname, + lastname: damageReport.lastname, + nameaffix: damageReport.nameaffix, + birthdate: damageReport.birthdate, + internalId: damageReport.internalId, + }); + this.fetchDamageReports(); + return result; + }, + async deleteDamageReport(damageReport: number): Promise> { + const result = await http.delete(`/admin/damageReport/${damageReport}`); + this.fetchDamageReports(); + return result; + }, + }, +}); diff --git a/src/stores/admin/unit/respiratoryGear/respiratoryGear.ts b/src/stores/admin/unit/respiratoryGear/respiratoryGear.ts new file mode 100644 index 0000000..94bdc98 --- /dev/null +++ b/src/stores/admin/unit/respiratoryGear/respiratoryGear.ts @@ -0,0 +1,120 @@ +import { defineStore } from "pinia"; +import type { + RespiratoryGearViewModel, + CreateRespiratoryGearViewModel, + UpdateRespiratoryGearViewModel, +} from "@/viewmodels/admin/unit/respiratoryGear/respiratoryGear.models"; +import { http } from "@/serverCom"; +import type { AxiosResponse } from "axios"; + +export const useRespiratoryGearStore = defineStore("respiratoryGear", { + state: () => { + return { + respiratoryGears: [] as Array, + totalCount: 0 as number, + loading: "loading" as "loading" | "fetched" | "failed", + activeRespiratoryGear: null as string | null, + activeRespiratoryGearObj: null as RespiratoryGearViewModel | null, + loadingActive: "loading" as "loading" | "fetched" | "failed", + }; + }, + actions: { + fetchRespiratoryGears(offset = 0, count = 25, search = "", clear = false) { + if (clear) this.respiratoryGears = []; + this.loading = "loading"; + http + .get(`/admin/respiratoryGear?offset=${offset}&count=${count}${search != "" ? "&search=" + search : ""}`) + .then((result) => { + this.totalCount = result.data.total; + result.data.respiratoryGears + .filter((elem: RespiratoryGearViewModel) => this.respiratoryGears.findIndex((m) => m.id == elem.id) == -1) + .map((elem: RespiratoryGearViewModel, index: number): RespiratoryGearViewModel & { tab_pos: number } => { + return { + ...elem, + tab_pos: index + offset, + }; + }) + .forEach((elem: RespiratoryGearViewModel & { tab_pos: number }) => { + this.respiratoryGears.push(elem); + }); + this.loading = "fetched"; + }) + .catch((err) => { + this.loading = "failed"; + }); + }, + async getAllRespiratoryGears(): Promise> { + return await http.get(`/admin/respiratoryGear?noLimit=true`).then((res) => { + return { ...res, data: res.data.respiratoryGears }; + }); + }, + async getRespiratoryGearsByIds(ids: Array): Promise> { + return await http + .post(`/admin/respiratoryGear/ids`, { + ids, + }) + .then((res) => { + return { ...res, data: res.data.respiratoryGears }; + }); + }, + async searchRespiratoryGears(search: string): Promise> { + return await http.get(`/admin/respiratoryGear?search=${search}&noLimit=true`).then((res) => { + return { ...res, data: res.data.respiratoryGears }; + }); + }, + fetchRespiratoryGearByActiveId() { + this.loadingActive = "loading"; + http + .get(`/admin/respiratoryGear/${this.activeRespiratoryGear}`) + .then((res) => { + this.activeRespiratoryGearObj = res.data; + this.loadingActive = "fetched"; + }) + .catch((err) => { + this.loadingActive = "failed"; + }); + }, + fetchRespiratoryGearById(id: string) { + return http.get(`/admin/respiratoryGear/${id}`); + }, + async printRespiratoryGearByActiveId() { + return http.get(`/admin/respiratoryGear/${this.activeRespiratoryGear}/print`, { + responseType: "blob", + }); + }, + fetchRespiratoryGearStatisticsById(id: string) { + return http.get(`/admin/respiratoryGear/${id}/statistics`); + }, + async createRespiratoryGear(respiratoryGear: CreateRespiratoryGearViewModel): Promise> { + const result = await http.post(`/admin/respiratoryGear`, { + salutationId: respiratoryGear.salutationId, + firstname: respiratoryGear.firstname, + lastname: respiratoryGear.lastname, + nameaffix: respiratoryGear.nameaffix, + birthdate: respiratoryGear.birthdate, + internalId: respiratoryGear.internalId, + }); + this.fetchRespiratoryGears(); + return result; + }, + async updateActiveRespiratoryGear( + respiratoryGear: UpdateRespiratoryGearViewModel + ): Promise> { + const result = await http.patch(`/admin/respiratoryGear/${respiratoryGear.id}`, { + salutationId: respiratoryGear.salutationId, + firstname: respiratoryGear.firstname, + lastname: respiratoryGear.lastname, + nameaffix: respiratoryGear.nameaffix, + birthdate: respiratoryGear.birthdate, + internalId: respiratoryGear.internalId, + }); + this.fetchRespiratoryGears(); + return result; + }, + async deleteRespiratoryGear(respiratoryGear: number): Promise> { + const result = await http.delete(`/admin/respiratoryGear/${respiratoryGear}`); + this.fetchRespiratoryGears(); + return result; + }, + }, +}); diff --git a/src/stores/admin/unit/respiratoryMission/respiratoryMission.ts b/src/stores/admin/unit/respiratoryMission/respiratoryMission.ts new file mode 100644 index 0000000..712a843 --- /dev/null +++ b/src/stores/admin/unit/respiratoryMission/respiratoryMission.ts @@ -0,0 +1,126 @@ +import { defineStore } from "pinia"; +import type { + RespiratoryMissionViewModel, + CreateRespiratoryMissionViewModel, + UpdateRespiratoryMissionViewModel, +} from "@/viewmodels/admin/unit/respiratoryMission/respiratoryMission.models"; +import { http } from "@/serverCom"; +import type { AxiosResponse } from "axios"; + +export const useRespiratoryMissionStore = defineStore("respiratoryMission", { + state: () => { + return { + respiratoryMissions: [] as Array, + totalCount: 0 as number, + loading: "loading" as "loading" | "fetched" | "failed", + activeRespiratoryMission: null as string | null, + activeRespiratoryMissionObj: null as RespiratoryMissionViewModel | null, + loadingActive: "loading" as "loading" | "fetched" | "failed", + }; + }, + actions: { + fetchRespiratoryMissions(offset = 0, count = 25, search = "", clear = false) { + if (clear) this.respiratoryMissions = []; + this.loading = "loading"; + http + .get(`/admin/respiratoryMission?offset=${offset}&count=${count}${search != "" ? "&search=" + search : ""}`) + .then((result) => { + this.totalCount = result.data.total; + result.data.respiratoryMissions + .filter( + (elem: RespiratoryMissionViewModel) => this.respiratoryMissions.findIndex((m) => m.id == elem.id) == -1 + ) + .map( + (elem: RespiratoryMissionViewModel, index: number): RespiratoryMissionViewModel & { tab_pos: number } => { + return { + ...elem, + tab_pos: index + offset, + }; + } + ) + .forEach((elem: RespiratoryMissionViewModel & { tab_pos: number }) => { + this.respiratoryMissions.push(elem); + }); + this.loading = "fetched"; + }) + .catch((err) => { + this.loading = "failed"; + }); + }, + async getAllRespiratoryMissions(): Promise> { + return await http.get(`/admin/respiratoryMission?noLimit=true`).then((res) => { + return { ...res, data: res.data.respiratoryMissions }; + }); + }, + async getRespiratoryMissionsByIds(ids: Array): Promise> { + return await http + .post(`/admin/respiratoryMission/ids`, { + ids, + }) + .then((res) => { + return { ...res, data: res.data.respiratoryMissions }; + }); + }, + async searchRespiratoryMissions(search: string): Promise> { + return await http.get(`/admin/respiratoryMission?search=${search}&noLimit=true`).then((res) => { + return { ...res, data: res.data.respiratoryMissions }; + }); + }, + fetchRespiratoryMissionByActiveId() { + this.loadingActive = "loading"; + http + .get(`/admin/respiratoryMission/${this.activeRespiratoryMission}`) + .then((res) => { + this.activeRespiratoryMissionObj = res.data; + this.loadingActive = "fetched"; + }) + .catch((err) => { + this.loadingActive = "failed"; + }); + }, + fetchRespiratoryMissionById(id: string) { + return http.get(`/admin/respiratoryMission/${id}`); + }, + async printRespiratoryMissionByActiveId() { + return http.get(`/admin/respiratoryMission/${this.activeRespiratoryMission}/print`, { + responseType: "blob", + }); + }, + fetchRespiratoryMissionStatisticsById(id: string) { + return http.get(`/admin/respiratoryMission/${id}/statistics`); + }, + async createRespiratoryMission( + respiratoryMission: CreateRespiratoryMissionViewModel + ): Promise> { + const result = await http.post(`/admin/respiratoryMission`, { + salutationId: respiratoryMission.salutationId, + firstname: respiratoryMission.firstname, + lastname: respiratoryMission.lastname, + nameaffix: respiratoryMission.nameaffix, + birthdate: respiratoryMission.birthdate, + internalId: respiratoryMission.internalId, + }); + this.fetchRespiratoryMissions(); + return result; + }, + async updateActiveRespiratoryMission( + respiratoryMission: UpdateRespiratoryMissionViewModel + ): Promise> { + const result = await http.patch(`/admin/respiratoryMission/${respiratoryMission.id}`, { + salutationId: respiratoryMission.salutationId, + firstname: respiratoryMission.firstname, + lastname: respiratoryMission.lastname, + nameaffix: respiratoryMission.nameaffix, + birthdate: respiratoryMission.birthdate, + internalId: respiratoryMission.internalId, + }); + this.fetchRespiratoryMissions(); + return result; + }, + async deleteRespiratoryMission(respiratoryMission: number): Promise> { + const result = await http.delete(`/admin/respiratoryMission/${respiratoryMission}`); + this.fetchRespiratoryMissions(); + return result; + }, + }, +}); diff --git a/src/stores/admin/unit/respiratoryWearer/respiratoryWearer.ts b/src/stores/admin/unit/respiratoryWearer/respiratoryWearer.ts new file mode 100644 index 0000000..18bd220 --- /dev/null +++ b/src/stores/admin/unit/respiratoryWearer/respiratoryWearer.ts @@ -0,0 +1,126 @@ +import { defineStore } from "pinia"; +import type { + RespiratoryWearerViewModel, + CreateRespiratoryWearerViewModel, + UpdateRespiratoryWearerViewModel, +} from "@/viewmodels/admin/unit/respiratoryWearer/respiratoryWearer.models"; +import { http } from "@/serverCom"; +import type { AxiosResponse } from "axios"; + +export const useRespiratoryWearerStore = defineStore("respiratoryWearer", { + state: () => { + return { + respiratoryWearers: [] as Array, + totalCount: 0 as number, + loading: "loading" as "loading" | "fetched" | "failed", + activeRespiratoryWearer: null as string | null, + activeRespiratoryWearerObj: null as RespiratoryWearerViewModel | null, + loadingActive: "loading" as "loading" | "fetched" | "failed", + }; + }, + actions: { + fetchRespiratoryWearers(offset = 0, count = 25, search = "", clear = false) { + if (clear) this.respiratoryWearers = []; + this.loading = "loading"; + http + .get(`/admin/respiratoryWearer?offset=${offset}&count=${count}${search != "" ? "&search=" + search : ""}`) + .then((result) => { + this.totalCount = result.data.total; + result.data.respiratoryWearers + .filter( + (elem: RespiratoryWearerViewModel) => this.respiratoryWearers.findIndex((m) => m.id == elem.id) == -1 + ) + .map( + (elem: RespiratoryWearerViewModel, index: number): RespiratoryWearerViewModel & { tab_pos: number } => { + return { + ...elem, + tab_pos: index + offset, + }; + } + ) + .forEach((elem: RespiratoryWearerViewModel & { tab_pos: number }) => { + this.respiratoryWearers.push(elem); + }); + this.loading = "fetched"; + }) + .catch((err) => { + this.loading = "failed"; + }); + }, + async getAllRespiratoryWearers(): Promise> { + return await http.get(`/admin/respiratoryWearer?noLimit=true`).then((res) => { + return { ...res, data: res.data.respiratoryWearers }; + }); + }, + async getRespiratoryWearersByIds(ids: Array): Promise> { + return await http + .post(`/admin/respiratoryWearer/ids`, { + ids, + }) + .then((res) => { + return { ...res, data: res.data.respiratoryWearers }; + }); + }, + async searchRespiratoryWearers(search: string): Promise> { + return await http.get(`/admin/respiratoryWearer?search=${search}&noLimit=true`).then((res) => { + return { ...res, data: res.data.respiratoryWearers }; + }); + }, + fetchRespiratoryWearerByActiveId() { + this.loadingActive = "loading"; + http + .get(`/admin/respiratoryWearer/${this.activeRespiratoryWearer}`) + .then((res) => { + this.activeRespiratoryWearerObj = res.data; + this.loadingActive = "fetched"; + }) + .catch((err) => { + this.loadingActive = "failed"; + }); + }, + fetchRespiratoryWearerById(id: string) { + return http.get(`/admin/respiratoryWearer/${id}`); + }, + async printRespiratoryWearerByActiveId() { + return http.get(`/admin/respiratoryWearer/${this.activeRespiratoryWearer}/print`, { + responseType: "blob", + }); + }, + fetchRespiratoryWearerStatisticsById(id: string) { + return http.get(`/admin/respiratoryWearer/${id}/statistics`); + }, + async createRespiratoryWearer( + respiratoryWearer: CreateRespiratoryWearerViewModel + ): Promise> { + const result = await http.post(`/admin/respiratoryWearer`, { + salutationId: respiratoryWearer.salutationId, + firstname: respiratoryWearer.firstname, + lastname: respiratoryWearer.lastname, + nameaffix: respiratoryWearer.nameaffix, + birthdate: respiratoryWearer.birthdate, + internalId: respiratoryWearer.internalId, + }); + this.fetchRespiratoryWearers(); + return result; + }, + async updateActiveRespiratoryWearer( + respiratoryWearer: UpdateRespiratoryWearerViewModel + ): Promise> { + const result = await http.patch(`/admin/respiratoryWearer/${respiratoryWearer.id}`, { + salutationId: respiratoryWearer.salutationId, + firstname: respiratoryWearer.firstname, + lastname: respiratoryWearer.lastname, + nameaffix: respiratoryWearer.nameaffix, + birthdate: respiratoryWearer.birthdate, + internalId: respiratoryWearer.internalId, + }); + this.fetchRespiratoryWearers(); + return result; + }, + async deleteRespiratoryWearer(respiratoryWearer: number): Promise> { + const result = await http.delete(`/admin/respiratoryWearer/${respiratoryWearer}`); + this.fetchRespiratoryWearers(); + return result; + }, + }, +}); diff --git a/src/viewmodels/admin/unit/damageReport/damageReport.models.ts b/src/viewmodels/admin/unit/damageReport/damageReport.models.ts new file mode 100644 index 0000000..7551f19 --- /dev/null +++ b/src/viewmodels/admin/unit/damageReport/damageReport.models.ts @@ -0,0 +1,39 @@ +export interface DamageReportViewModel { + id: string; + firstname: string; + lastname: string; + nameaffix: string; + birthdate: Date; + internalId?: string; +} + +export interface DamageReportStatisticsViewModel { + id: string; + salutation: string; + firstname: string; + lastname: string; + nameaffix: string; + birthdate: Date; + todayAge: number; + ageThisYear: number; + exactAge: string; +} + +export interface CreateDamageReportViewModel { + salutationId: number; + firstname: string; + lastname: string; + nameaffix: string; + birthdate: Date; + internalId?: string; +} + +export interface UpdateDamageReportViewModel { + id: string; + salutationId: number; + firstname: string; + lastname: string; + nameaffix: string; + birthdate: Date; + internalId?: string; +} diff --git a/src/viewmodels/admin/unit/respiratoryGear/respiratoryGear.models.ts b/src/viewmodels/admin/unit/respiratoryGear/respiratoryGear.models.ts new file mode 100644 index 0000000..b37c28b --- /dev/null +++ b/src/viewmodels/admin/unit/respiratoryGear/respiratoryGear.models.ts @@ -0,0 +1,39 @@ +export interface RespiratoryGearViewModel { + id: string; + firstname: string; + lastname: string; + nameaffix: string; + birthdate: Date; + internalId?: string; +} + +export interface RespiratoryGearStatisticsViewModel { + id: string; + salutation: string; + firstname: string; + lastname: string; + nameaffix: string; + birthdate: Date; + todayAge: number; + ageThisYear: number; + exactAge: string; +} + +export interface CreateRespiratoryGearViewModel { + salutationId: number; + firstname: string; + lastname: string; + nameaffix: string; + birthdate: Date; + internalId?: string; +} + +export interface UpdateRespiratoryGearViewModel { + id: string; + salutationId: number; + firstname: string; + lastname: string; + nameaffix: string; + birthdate: Date; + internalId?: string; +} diff --git a/src/viewmodels/admin/unit/respiratoryMission/respiratoryMission.models.ts b/src/viewmodels/admin/unit/respiratoryMission/respiratoryMission.models.ts new file mode 100644 index 0000000..2a19bae --- /dev/null +++ b/src/viewmodels/admin/unit/respiratoryMission/respiratoryMission.models.ts @@ -0,0 +1,39 @@ +export interface RespiratoryMissionViewModel { + id: string; + firstname: string; + lastname: string; + nameaffix: string; + birthdate: Date; + internalId?: string; +} + +export interface RespiratoryMissionStatisticsViewModel { + id: string; + salutation: string; + firstname: string; + lastname: string; + nameaffix: string; + birthdate: Date; + todayAge: number; + ageThisYear: number; + exactAge: string; +} + +export interface CreateRespiratoryMissionViewModel { + salutationId: number; + firstname: string; + lastname: string; + nameaffix: string; + birthdate: Date; + internalId?: string; +} + +export interface UpdateRespiratoryMissionViewModel { + id: string; + salutationId: number; + firstname: string; + lastname: string; + nameaffix: string; + birthdate: Date; + internalId?: string; +} diff --git a/src/viewmodels/admin/unit/respiratoryWearer/respiratoryWearer.models.ts b/src/viewmodels/admin/unit/respiratoryWearer/respiratoryWearer.models.ts new file mode 100644 index 0000000..113ee71 --- /dev/null +++ b/src/viewmodels/admin/unit/respiratoryWearer/respiratoryWearer.models.ts @@ -0,0 +1,39 @@ +export interface RespiratoryWearerViewModel { + id: string; + firstname: string; + lastname: string; + nameaffix: string; + birthdate: Date; + internalId?: string; +} + +export interface RespiratoryWearerStatisticsViewModel { + id: string; + salutation: string; + firstname: string; + lastname: string; + nameaffix: string; + birthdate: Date; + todayAge: number; + ageThisYear: number; + exactAge: string; +} + +export interface CreateRespiratoryWearerViewModel { + salutationId: number; + firstname: string; + lastname: string; + nameaffix: string; + birthdate: Date; + internalId?: string; +} + +export interface UpdateRespiratoryWearerViewModel { + id: string; + salutationId: number; + firstname: string; + lastname: string; + nameaffix: string; + birthdate: Date; + internalId?: string; +} diff --git a/src/views/admin/unit/damageReport/DamageReport.vue b/src/views/admin/unit/damageReport/DamageReport.vue index 8d99d16..99aabac 100644 --- a/src/views/admin/unit/damageReport/DamageReport.vue +++ b/src/views/admin/unit/damageReport/DamageReport.vue @@ -6,7 +6,38 @@
@@ -15,12 +46,35 @@ import { defineComponent } from "vue"; import { mapActions, mapState } from "pinia"; import MainTemplate from "@/templates/Main.vue"; +import { useAbilityStore } from "@/stores/ability"; +import { useDamageReportStore } from "@/stores/admin/unit/damageReport/damageReport"; +import type { DamageReportViewModel } from "@/viewmodels/admin/unit/damageReport/damageReport.models"; +import Pagination from "@/components/Pagination.vue"; +import DamageReportListItem from "../../../../components/admin/unit/damageReport/DamageReportListItem.vue"; diff --git a/src/views/admin/unit/equipmentType/EquipmentType.vue b/src/views/admin/unit/equipmentType/EquipmentType.vue index 3c09340..921ee77 100644 --- a/src/views/admin/unit/equipmentType/EquipmentType.vue +++ b/src/views/admin/unit/equipmentType/EquipmentType.vue @@ -12,7 +12,6 @@ :totalCount="totalCount" :indicateLoading="loading == 'loading'" useSearch - useScanner @load-data="(offset, count, search) => fetchEquipmentTypes(offset, count, search)" @search="(search) => fetchEquipmentTypes(0, maxEntriesPerPage, search, true)" > diff --git a/src/views/admin/unit/respiratoryGear/RespiratoryGear.vue b/src/views/admin/unit/respiratoryGear/RespiratoryGear.vue index c1531cc..ebf2f4f 100644 --- a/src/views/admin/unit/respiratoryGear/RespiratoryGear.vue +++ b/src/views/admin/unit/respiratoryGear/RespiratoryGear.vue @@ -8,16 +8,15 @@