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, } })