hrms-checkin/src/stores/checkin.ts
waruneeauy 42c89c034d
All checks were successful
Build & Deploy on Dev / build (push) Successful in 2m53s
Merge branch 'develop' of github.com:Frappet/hrms-checkin into develop
* 'develop' of github.com:Frappet/hrms-checkin:
  refactor(history): formatDate Colunm checkInTime  checkOutTime
2026-04-27 19:21:34 +07:00

104 lines
4.2 KiB
TypeScript

import { defineStore } from 'pinia'
import { ref } from 'vue'
import type { FormData, Datalist } from '@/interface/response/checkin'
import { useCounterMixin } from '@/stores/mixin'
import { calculateFiscalYear } from '@/utils/function'
const mixin = useCounterMixin()
const { date2Thai } = mixin
/** store for checkin history*/
export const useCheckIn = defineStore('checkin', () => {
const year = ref<number>(calculateFiscalYear(new Date())) //ปีงบประมาณ
const rows = ref<Datalist[]>([])
const tab = ref<string>('history')
/**
* ฟังก์ชั่นสำหรับ map ข้อมูล เพื่อแสดงรายการในตารางประวัติการลงเวลา
* @param data รายการข้อมูลทีต้องการ map เป็น array ที่ประกอบด้วย object ตาม FormData
*/
async function fetchHistoryList(data: FormData[]) {
rows.value = []
const dataList: Datalist[] = data.map((e: FormData) => ({
checkInId: e.checkInId,
checkInDate: e.checkInDate ? date2Thai(e.checkInDate) : null,
checkInDateTime: e.checkInDate ? e.checkInDate : e.checkOutDate,
checkInTime: e.checkInTime,
checkOutTime: e.checkOutTime != '' ? e.checkOutTime : '-',
checkInStatus: e.checkInStatus ? convertStatus(e.checkInStatus) : '-',
checkOutStatus:
e.checkOutStatus != null ? convertStatus(e.checkOutStatus) : '-',
checkInLocation: e.checkInLocation ? e.checkInLocation : '-',
checkOutLocation: e.checkOutLocation != '' ? e.checkOutLocation : '-',
editStatus: e.editStatus != '' ? convertEditStatus(e.editStatus) : '',
editReason: e.editReason,
isEdit: e.isEdit,
checkOutDate: e.checkOutDate ? date2Thai(e.checkOutDate) : null,
}))
rows.value = dataList
}
/**
* ฟังก์ชั่นสำหรับ convert ข้อความสถานะของการลงเวลา ปกติ, ขาดราชการ หรือสาย
* @param status ฟิลด์สถานะที่มาจาก API
* @returns ข้อความสถานะ ปกติ, ขาดราชการ หรือสาย
*/
function convertStatus(status: string) {
switch (status) {
case 'ABSENT':
return 'ขาดราชการ'
case 'NORMAL':
return 'ปกติ'
case 'LATE':
return 'สาย'
case 'NOT_COMPLETE':
return 'ปฏิบัติงานไม่ครบตามกำหนดเวลา'
default:
return '-'
}
}
/**
* ฟังก์ชั่นสำหรับ convert ข้อความสถานะการขอแก้ไข/การขอลงเวลาพิเศษ
* @param val ฟิลด์สถานะการขอแก้ไข/การขอลงเวลาพิเศษที่มาจาก API
* @returns ข้อความสถานะการขอแก้ไข/การขอลงเวลาพิเศษ
*/
function convertEditStatus(val: string) {
switch (val) {
case 'PENDING':
return 'รออนุมัติ'
case 'APPROVE':
return 'อนุมัติ'
case 'REJECT':
return 'ไม่อนุมัติ'
default:
return ''
}
}
/**
* ฟังก์ชั่นสำหรับแสดง class กรณีสถานะการขอลงเวลาพิเศษ
* @param val ข้อความสถานะการขอลงเวลาพิเศษที่ convert แล้ว
* @returns ค่าสีที่ต้องการแสดงตามข้อความสถานะ
*/
function classColorStatus(val: string) {
switch (val) {
case 'รออนุมัติ':
return 'orange'
case 'อนุมัติ':
return 'green'
case 'ไม่อนุมัติ':
return 'red'
default:
return ''
}
}
return {
rows,
year,
fetchHistoryList,
classColorStatus,
tab,
}
})