diff --git a/src/modules/04_system/components/02_cardAutoBackup.vue b/src/modules/04_system/components/02_cardAutoBackup.vue index 54a28e0d..3d350805 100644 --- a/src/modules/04_system/components/02_cardAutoBackup.vue +++ b/src/modules/04_system/components/02_cardAutoBackup.vue @@ -34,6 +34,7 @@ const { dialogConfirm, dialogMessageNotify, onSearchDataTable, + convertDatetimeToAPI, } = useCounterMixin(); const { getSchedule, @@ -64,6 +65,7 @@ const formDataschedule = ref({ name: "", time: "", schedule: "", + startAt: new Date(), }); /** @@ -203,10 +205,16 @@ function onSubmit() { dialogConfirm($q, async () => { showLoader(); if (typeOnSubmit.value === "create") { - await createSchedule(formDataschedule.value); + await createSchedule({ + ...formDataschedule.value, + startAt: convertDatetimeToAPI(formDataschedule.value.startAt as Date), + }); } if (typeOnSubmit.value === "edit") { - await editSchedule(idEditSchedule.value, formDataschedule.value); + await editSchedule(idEditSchedule.value, { + ...formDataschedule.value, + startAt: convertDatetimeToAPI(formDataschedule.value.startAt as Date), + }); } getSchedule(); hideLoader(); @@ -476,7 +484,7 @@ onMounted(async () => { if (formDataschedule.startAt !== undefined) { formDataschedule.startAt = new Date( - formDataschedule.startAt + formDataschedule.startAt as Date ).toISOString(); } convertFormToCron(); diff --git a/src/modules/04_system/interface/request/Main.ts b/src/modules/04_system/interface/request/Main.ts index 7e46d026..5d9adc07 100644 --- a/src/modules/04_system/interface/request/Main.ts +++ b/src/modules/04_system/interface/request/Main.ts @@ -7,7 +7,7 @@ interface ScheduleCreate { type: string; date: string[]; schedule: string; - startAt?: string; + startAt?: Date|null|string; enabled?: boolean; } diff --git a/src/stores/mixin.ts b/src/stores/mixin.ts index 42e969e6..f40719f7 100644 --- a/src/stores/mixin.ts +++ b/src/stores/mixin.ts @@ -3,6 +3,7 @@ import "moment/dist/locale/th"; import moment from "moment"; import CustomComponent from "@/components/CustomDialog.vue"; import { Loading, QSpinnerCube } from "quasar"; +import { format, utcToZonedTime } from "date-fns-tz"; moment.locale("th"); @@ -1078,6 +1079,20 @@ export const useCounterMixin = defineStore("mixin", () => { }); } + // กรณีมีเฉพาะ date + function convertDateToAPI(date: Date | null) { + return date + ? format(utcToZonedTime(date, "Asia/Bangkok"), "yyyy-MM-dd") + : null; + } + + // กรณี datetime + function convertDatetimeToAPI(date: Date | null) { + return date + ? format(utcToZonedTime(date, "Asia/Bangkok"), "yyyy-MM-dd HH:mm:ss") + : null; + } + return { calAge, date2Thai, @@ -1121,5 +1136,8 @@ export const useCounterMixin = defineStore("mixin", () => { findPosMasterNoOld, onSearchDataTable, + + convertDateToAPI, + convertDatetimeToAPI, }; });