hrms-mgt/src/modules/09_leave/stores/LeaveStore.ts

162 lines
5 KiB
TypeScript
Raw Normal View History

2023-10-06 13:32:54 +07:00
import { defineStore } from "pinia";
2023-11-08 18:02:52 +07:00
import { ref, onMounted } from "vue";
2023-10-06 13:32:54 +07:00
import { useCounterMixin } from "@/stores/mixin";
/** importType*/
2023-10-20 16:57:32 +07:00
import type { QTableProps } from "quasar";
import type { DataRows } from "@/modules/09_leave/interface/response/leave";
2023-11-17 15:28:03 +07:00
import type { FremData } from "@/modules/09_leave/interface/request/leave";
2023-10-06 13:32:54 +07:00
const mixin = useCounterMixin();
const { date2Thai, showLoader, hideLoader } = mixin;
2023-10-06 13:32:54 +07:00
export const useLeavelistDataStore = defineStore("leave", () => {
/** ข้อมูล Main*/
const tabMenu = ref<string>("1");
/** ข้อมูล Tab 1*/
const tabView = ref<string>("list");
/**ข้อมูลใน Table*/
const mainData = ref<any>([]);
const rows = ref<DataRows[]>([]);
const columns = ref<QTableProps["columns"]>([]);
const visibleColumns = ref<string[]>([]);
2023-11-17 15:28:03 +07:00
/**
* fetchListLeave
* @param data Page
*/
async function fetchListLeave(data: any[]) {
let datalist = data.map((e: FremData) => ({
id: e.id,
leaveTypeName: e.leaveTypeId && convertLeave(e.leaveTypeId),
leaveTypeId: e.leaveTypeId,
fullname: e.fullname,
dateSendLeave: e.dateSendLeave && date2Thai(e.dateSendLeave),
status: convertSatatus(e.status),
}));
mainData.value = datalist;
rows.value = mainData.value;
}
/**
* fetchListLeave
* @param data Page
*/
async function fetchListLeaveReject(data: any[]) {
let datalist = data.map((e: FremData) => ({
id: e.id,
leaveTypeName: e.leaveTypeId && convertLeave(e.leaveTypeId),
leaveTypeId: e.leaveTypeId,
fullname: e.fullname,
dateSendLeave: e.dateSendLeave && date2Thai(e.dateSendLeave),
status: convertSatatus2(e.status),
}));
2023-11-08 18:02:52 +07:00
mainData.value = datalist;
2023-11-17 15:28:03 +07:00
rows.value = mainData.value;
}
2023-10-06 13:32:54 +07:00
/**
*
* @param val
*/
function convertSatatus(val: string) {
switch (val) {
2023-11-03 15:08:53 +07:00
case "NEW":
return "ใหม่";
2023-11-03 15:08:53 +07:00
case "PENDING":
return "อยู่ระหว่างดำเนินการ";
case "APPROVE":
return "อนุมัติ";
2023-11-03 15:08:53 +07:00
case "REJECT":
return "ไม่อนุมัติ";
2023-10-06 13:32:54 +07:00
}
}
/**
*
* @param val
*/
function convertSatatus2(val: string) {
switch (val) {
case "NEW":
return "ขอยกเลิก";
case "PENDING":
return "อนุมัติ";
case "APPROVE":
return "อนุมัติ";
}
}
/**
*
* @param val
*/
2023-11-06 12:12:54 +07:00
function convertLeave(val: string) {
switch (val) {
case "leave1":
return "ลากิจส่วนตัว";
case "leave2":
return "ลาป่วย";
2023-11-08 18:02:52 +07:00
case "leave3":
return "ลาคลอดบุตร";
case "leave4":
return "ลาไปช่วยเหลือภริยาที่คลอดบุตร";
case "leave5":
return "ลาพักผ่อน";
case "leave6":
return "ลาอุปสมบท";
case "leave7":
return "ลาประกอบพิธีฮัจย์";
case "leave8":
return "ลาเข้ารับการตรวจเลือกหรือเข้ารับการเตรียมพล";
case "leave9":
return "ลาไปศึกษา";
case "leave10":
return "ลาไปฝึกอบรม ปฏิบัติการวิจัย หรือดูงาน";
case "leave11":
return "ลาไปปฏิบัติงานในองค์การระหว่างประเทศ";
case "leave12":
return "ลาติดตามคู่สมรส";
case "leave13":
return "ลาไปฟื้นฟูสมรรถภาพด้านอาชีพ";
2023-11-08 18:02:52 +07:00
}
}
/**
*
* @param val
*/
2023-11-08 18:02:52 +07:00
function convertLeaveDaytype(val: string) {
switch (val) {
case "allday":
return "ลาทั้งวัน";
case "halfmorning":
return "ลาครึ่งวันเช้า";
case "halfafternoon":
return "ลาครึ่งวันบ่าย";
2023-11-06 12:12:54 +07:00
}
}
return {
/** ข้อมูล Main*/
tabMenu,
/** ข้อมูล Tab1*/
tabView,
/**ข้อมูลใน Table */
rows,
fetchListLeave,
columns,
visibleColumns,
2023-10-06 13:32:54 +07:00
fetchListLeaveReject,
/** Function แปลงค่า */
2023-11-08 18:02:52 +07:00
convertLeave,
convertLeaveDaytype,
};
});