hrms-checkin/src/stores/mixin.ts

123 lines
3.6 KiB
TypeScript
Raw Normal View History

2023-11-07 11:17:13 +07:00
import { defineStore } from "pinia";
2023-11-08 11:15:17 +07:00
import CustomComponent from "@/components/CustomDialog.vue";
import { useQuasar } from "quasar";
const $q = useQuasar();
2023-11-07 11:17:13 +07:00
export const useCounterMixin = defineStore("mixin", () => {
function date2Thai(srcDate: Date, isFullMonth = false, isTime = false) {
if (srcDate == null) {
return null;
`
`;
}
const date = new Date(srcDate);
const isValidDate = Boolean(+date);
if (!isValidDate) return srcDate.toString();
if (isValidDate && date.getFullYear() < 1000) return srcDate.toString();
const fullMonthThai = [
"มกราคม",
"กุมภาพันธ์",
"มีนาคม",
"เมษายน",
"พฤษภาคม",
"มิถุนายน",
"กรกฎาคม",
"สิงหาคม",
"กันยายน",
"ตุลาคม",
"พฤศจิกายน",
"ธันวาคม",
];
const abbrMonthThai = [
"ม.ค.",
"ก.พ.",
"มี.ค.",
"เม.ย.",
"พ.ค.",
"มิ.ย.",
"ก.ค.",
"ส.ค.",
"ก.ย.",
"ต.ค.",
"พ.ย.",
"ธ.ค.",
];
let dstYear = 0;
if (date.getFullYear() > 2500) {
dstYear = date.getFullYear();
} else {
dstYear = date.getFullYear() + 543;
}
let dstMonth = "";
if (isFullMonth) {
dstMonth = fullMonthThai[date.getMonth()];
} else {
dstMonth = abbrMonthThai[date.getMonth()];
}
let dstTime = "";
if (isTime) {
const H = date.getHours().toString().padStart(2, "0");
const M = date.getMinutes().toString().padStart(2, "0");
// const S = date.getSeconds().toString().padStart(2, "0")
// dstTime = " " + H + ":" + M + ":" + S + " น."
dstTime = " " + H + ":" + M + " น.";
}
return (
date.getDate().toString().padStart(2, "0") +
" " +
dstMonth +
" " +
dstYear +
dstTime
);
}
2023-11-07 16:35:39 +07:00
function covertDateObject(date: string) {
if (date) {
const dateParts = date.split("/");
// ประกาศตัวแปรเพื่อเก็บค่าวันที่, เดือน, และ ปี
const day = parseInt(dateParts[0], 10);
const month = parseInt(dateParts[1], 10) - 1;
const year = parseInt(dateParts[2], 10) + 2500;
// สร้างอ็อบเจ็กต์ Date ด้วยค่าที่ได้
const dateObject = new Date(year, month, day);
return date2Thai(dateObject);
}
}
2023-11-08 11:15:17 +07:00
type OkCallback = () => void;
type CancelCallback = () => void;
const dialogConfirm = (
q: any,
ok?: OkCallback,
title?: string, // ถ้ามี cancel action ใส่เป็น null
desc?: string, // ถ้ามี cancel action ใส่เป็น null
cancel?: CancelCallback
) => {
q.dialog({
component: CustomComponent,
componentProps: {
title: title && title != null ? title : "ยืนยันการบันทึก",
message:
desc && desc != null
? desc
: "ต้องการยืนยันการบันทึกข้อมูลนี้ใช่หรือไม่?",
icon: "info",
color: "public",
textOk: "ตกลง",
onlycancel: false,
},
})
.onOk(() => {
if (ok) ok();
})
.onCancel(() => {
if (cancel) cancel();
});
};
2023-11-07 11:17:13 +07:00
return {
date2Thai,
2023-11-07 16:35:39 +07:00
covertDateObject,
2023-11-08 11:15:17 +07:00
dialogConfirm,
2023-11-07 11:17:13 +07:00
};
});