import { defineStore } from "pinia"; import { ref, onMounted } from "vue"; import { useCounterMixin } from "@/stores/mixin"; /** importType*/ import type { QTableProps } from "quasar"; import type { DataRows } from "@/modules/09_leave/interface/response/leave"; import type { FremData } from "@/modules/09_leave/interface/request/leave"; const mixin = useCounterMixin(); const { date2Thai, showLoader, hideLoader } = mixin; export const useLeavelistDataStore = defineStore("leave", () => { /** ข้อมูล Main*/ const tabMenu = ref("1"); /** ข้อมูล Tab 1*/ const tabView = ref("list"); /**ข้อมูลใน Table*/ const mainData = ref([]); const rows = ref([]); const columns = ref([]); const visibleColumns = ref([]); /** * ฟังก์ชั่น 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), })); mainData.value = datalist; rows.value = mainData.value; } /** * ฟังก์ชั่นแปลงสถานะ * @param val ค่าสถานะ */ function convertSatatus(val: string) { switch (val) { case "NEW": return "ใหม่"; case "PENDING": return "อยู่ระหว่างดำเนินการ"; case "APPROVE": return "อนุมัติ"; case "REJECT": return "ไม่อนุมัติ"; } } /** * ฟังก์ชั่นแปลงสถานะ * @param val ค่าสถานะ */ function convertSatatus2(val: string) { switch (val) { case "NEW": return "ขอยกเลิก"; case "PENDING": return "อนุมัติ"; case "APPROVE": return "อนุมัติ"; } } /** * ฟังก์ชั่นแปลงประเภทการลา * @param val ค่าประเภทของกาลา */ function convertLeave(val: string) { switch (val) { case "leave1": return "ลากิจส่วนตัว"; case "leave2": return "ลาป่วย"; 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 "ลาไปฟื้นฟูสมรรถภาพด้านอาชีพ"; } } /** * ฟังชั่นแปลงค่าการลา * @param val ค่าของการลา */ function convertLeaveDaytype(val: string) { switch (val) { case "allday": return "ลาทั้งวัน"; case "halfmorning": return "ลาครึ่งวันเช้า"; case "halfafternoon": return "ลาครึ่งวันบ่าย"; } } return { /** ข้อมูล Main*/ tabMenu, /** ข้อมูล Tab1*/ tabView, /**ข้อมูลใน Table */ rows, fetchListLeave, columns, visibleColumns, fetchListLeaveReject, /** Function แปลงค่า */ convertLeave, convertLeaveDaytype, }; });