ui ประวัติทำงาน ประวัติการศึกษา
This commit is contained in:
parent
0157bf51b9
commit
9179a14ed8
18 changed files with 2162 additions and 106 deletions
348
src/stores/mixin.ts
Normal file
348
src/stores/mixin.ts
Normal file
|
|
@ -0,0 +1,348 @@
|
|||
import { ref, computed } from 'vue'
|
||||
import { defineStore } from 'pinia'
|
||||
import moment from 'moment'
|
||||
import type { DataDateMonthObject } from '@/modules/01_exam/interface/index/Main'
|
||||
|
||||
export const useCounterMixin = defineStore('mixin', () => {
|
||||
/**
|
||||
* ฟังก์ชันกลาง
|
||||
*/
|
||||
|
||||
const calAge = (srcDate: Date, birthCal: Date = new Date(), eng: boolean = false) => {
|
||||
const toDay = birthCal
|
||||
const birth = new Date(srcDate)
|
||||
|
||||
const yearNow = toDay.getFullYear()
|
||||
const monthNow = toDay.getMonth()
|
||||
const dateNow = toDay.getDate()
|
||||
|
||||
const yearDob = birth.getFullYear()
|
||||
const monthDob = birth.getMonth()
|
||||
const dateDob = birth.getDate()
|
||||
|
||||
const lastYear = 12
|
||||
const subtractDate: Object = moment().subtract(1, 'months').endOf('month')
|
||||
|
||||
const lastMonths = new Date(subtractDate.toString()).getDate()
|
||||
|
||||
let yearAge = yearNow - yearDob
|
||||
let monthAge = 0
|
||||
let dateAge = 0
|
||||
|
||||
if (monthNow >= monthDob) {
|
||||
monthAge = monthNow - monthDob
|
||||
} else {
|
||||
yearAge--
|
||||
monthAge = lastYear + monthNow - monthDob
|
||||
}
|
||||
|
||||
if (dateNow >= dateDob) {
|
||||
dateAge = dateNow - dateDob
|
||||
} else {
|
||||
monthAge--
|
||||
dateAge = lastMonths + dateNow - dateDob
|
||||
|
||||
if (monthAge < 0) {
|
||||
monthAge = 11
|
||||
yearAge--
|
||||
}
|
||||
}
|
||||
|
||||
const age = {
|
||||
years: yearAge,
|
||||
months: monthAge,
|
||||
days: dateAge
|
||||
}
|
||||
|
||||
const year = eng ? 'years' : 'ปี'
|
||||
const month = eng ? 'months' : 'เดือน'
|
||||
const day = eng ? 'days' : 'วัน'
|
||||
return `${yearAge} ${year} ${monthAge} ${month} ${dateAge} ${day}`
|
||||
}
|
||||
|
||||
function date2Thai(srcDate: Date, isFullMonth: boolean = false, isTime: boolean = false) {
|
||||
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 monthYear2Thai(month: number, year: number, isFullMonth = false) {
|
||||
const date = new Date(`${year}-${month + 1}-1`)
|
||||
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()]
|
||||
}
|
||||
return dstMonth + ' ' + dstYear
|
||||
}
|
||||
|
||||
function dateToISO(date: Date) {
|
||||
return (
|
||||
date.getFullYear() +
|
||||
'-' +
|
||||
appendLeadingZeroes(date.getMonth() + 1) +
|
||||
'-' +
|
||||
appendLeadingZeroes(date.getDate())
|
||||
)
|
||||
}
|
||||
|
||||
function appendLeadingZeroes(n: Number) {
|
||||
if (n <= 9) return '0' + n
|
||||
return n
|
||||
}
|
||||
|
||||
function textToPhone(n: string) {
|
||||
const p = n.substr(0, 3) + '-' + n.substr(3, 3) + '-' + n.substr(6, 4)
|
||||
return p
|
||||
}
|
||||
|
||||
function textToFax(n: string) {
|
||||
const p = n.substr(0, 2) + '-' + n.substr(2, 3) + '-' + n.substr(5, 4)
|
||||
return p
|
||||
}
|
||||
|
||||
const success = (q: any, val: string) => {
|
||||
// useQuasar ไม่สามารถใช้นอกไฟล์ .vue
|
||||
if (val !== '') {
|
||||
return q.notify({
|
||||
message: val,
|
||||
color: 'primary',
|
||||
icon: 'mdi-information',
|
||||
position: 'bottom-right',
|
||||
multiLine: true,
|
||||
timeout: 1000,
|
||||
badgeColor: 'positive',
|
||||
classes: 'my-notif-class'
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
function notify(q: any, val: string) {
|
||||
if (val !== '') {
|
||||
q.notify({
|
||||
color: 'teal-10',
|
||||
message: val,
|
||||
icon: 'mdi-information',
|
||||
position: 'bottom-right',
|
||||
multiLine: true,
|
||||
timeout: 7000,
|
||||
actions: [{ label: 'ปิด', color: 'white', handler: () => {} }]
|
||||
})
|
||||
}
|
||||
}
|
||||
function notifyError(q: any, val: string) {
|
||||
if (val !== '') {
|
||||
q.notify({
|
||||
color: 'negative',
|
||||
message: val,
|
||||
icon: 'mdi-alert-circle',
|
||||
position: 'top',
|
||||
multiLine: true,
|
||||
timeout: 12000,
|
||||
actions: [{ label: 'ปิด', color: 'white', handler: () => {} }]
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
const dateText = (val: Date) => {
|
||||
if (val != null) {
|
||||
return date2Thai(val)
|
||||
} else {
|
||||
return '-'
|
||||
}
|
||||
}
|
||||
|
||||
const weekThai = (val: Number) => {
|
||||
switch (val) {
|
||||
case 0:
|
||||
return 'วันอาทิตย์'
|
||||
case 1:
|
||||
return 'วันจันทร์'
|
||||
case 2:
|
||||
return 'วันอังคาร'
|
||||
case 3:
|
||||
return 'วันพุธ'
|
||||
case 4:
|
||||
return 'วันพฤหัสบดี'
|
||||
case 5:
|
||||
return 'วันศุกร์'
|
||||
case 6:
|
||||
return 'วันเสาร์'
|
||||
default:
|
||||
return '-'
|
||||
}
|
||||
}
|
||||
|
||||
const genColor15 = (val: number) => {
|
||||
val = val % 15
|
||||
switch (val) {
|
||||
case 1:
|
||||
return 'pink'
|
||||
case 2:
|
||||
return 'purple'
|
||||
case 3:
|
||||
return 'deep-purple'
|
||||
case 4:
|
||||
return 'indigo'
|
||||
case 5:
|
||||
return 'blue'
|
||||
case 6:
|
||||
return 'light-blue'
|
||||
case 7:
|
||||
return 'cyan'
|
||||
case 8:
|
||||
return 'teal'
|
||||
case 9:
|
||||
return 'green'
|
||||
case 10:
|
||||
return 'light-green'
|
||||
case 11:
|
||||
return 'amber'
|
||||
case 12:
|
||||
return 'orange'
|
||||
case 13:
|
||||
return 'deep-orange'
|
||||
case 14:
|
||||
return 'brown'
|
||||
case 0:
|
||||
return 'blue-grey'
|
||||
default:
|
||||
return ''
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* แปลงช่วงวันที่ถ้า2ค่าเป็นวันเดียวกันจะโชววันเดียวแต่ถ้าไม่เท่ากันจะแสดงเป็นช่วง
|
||||
* @param val ช่วงวันที่
|
||||
*/
|
||||
const dateThaiRange = (val: [Date, Date]) => {
|
||||
if (val === null) {
|
||||
return ''
|
||||
} else if (date2Thai(val[0]) === date2Thai(val[1])) {
|
||||
return `${date2Thai(val[0])}`
|
||||
} else {
|
||||
return `${date2Thai(val[0])} - ${date2Thai(val[1])}`
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* แปลงช่วงเดือนถ้า2ค่าเป็นวันเดียวกันจะโชววันเดียวแต่ถ้าไม่เท่ากันจะแสดงเป็นช่วง
|
||||
* @param val ช่วงเดือน
|
||||
*/
|
||||
const monthThaiRange = (val: DataDateMonthObject[]) => {
|
||||
if (val === null || val[0] === null || val[1] === null) {
|
||||
return ''
|
||||
} else if (
|
||||
monthYear2Thai(val[0].month, val[0].year) === monthYear2Thai(val[1].month, val[1].year)
|
||||
) {
|
||||
return `${monthYear2Thai(val[0].month, val[0].year)}`
|
||||
} else {
|
||||
return `${monthYear2Thai(val[0].month, val[0].year)} - ${monthYear2Thai(
|
||||
val[1].month,
|
||||
val[1].year
|
||||
)}`
|
||||
}
|
||||
}
|
||||
|
||||
return {
|
||||
calAge,
|
||||
date2Thai,
|
||||
dateToISO,
|
||||
notify,
|
||||
notifyError,
|
||||
dateText,
|
||||
monthYear2Thai,
|
||||
success,
|
||||
weekThai,
|
||||
genColor15,
|
||||
textToPhone,
|
||||
textToFax,
|
||||
dateThaiRange,
|
||||
monthThaiRange
|
||||
}
|
||||
})
|
||||
Loading…
Add table
Add a link
Reference in a new issue