All checks were successful
Build & Deploy on Dev / build (push) Successful in 2m53s
* 'develop' of github.com:Frappet/hrms-checkin: refactor(history): formatDate Colunm checkInTime checkOutTime
104 lines
4.2 KiB
TypeScript
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,
|
|
}
|
|
})
|