122 lines
3.5 KiB
TypeScript
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,
|
|
}
|
|
})
|