hrms-checkin/src/stores/mixin.ts
2023-11-14 17:47:43 +07:00

122 lines
3.5 KiB
TypeScript

import { defineStore } from 'pinia'
import CustomComponent from '@/components/CustomDialog.vue'
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
)
}
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)
}
}
type OkCallback = () => void
type CancelCallback = () => void
function 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()
})
}
return {
date2Thai,
covertDateObject,
dialogConfirm,
}
})