import { defineStore } from "pinia"; import { ref, reactive } from "vue"; import { useCounterMixin } from "@/stores/mixin"; /** importType*/ import type { DateFilter } from "@/modules/09_leave/interface/request/leave"; import type { QTableProps } from "quasar"; import type { DataRows, ListLeave, } 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"); /** filter*/ const filter = reactive({ year: new Date().getFullYear(), //*ปีในการยื่นขอใบลา(ใช้เป็น คศ.) type: "00000000-0000-0000-0000-000000000000", //*Id ประเภทการลา status: "NEW", //*สถานะการของลา keyword: "", //keyword ค้นหา }); /**ข้อมูลใน Table*/ const mainData = ref([]); const rows = ref([]); const columns = ref([]); const visibleColumns = ref([]); const leaveType = ref([]); /** * ฟังก์ชั่น fetchListLeave * @param data รับข้อมูลจาก Page */ async function fetchListLeave(data: ListLeave[]) { let datalist = data.map((e: ListLeave) => ({ id: e.id, leaveTypeName: e.leaveTypeName, leaveTypeId: e.leaveTypeId, citizenId: e.citizenId ?? "3120101734950", fullName: e.fullName, agency: e.agency ?? "สำนักงานการเจ้าหน้าที่", org: e.org ?? "กองบริหารทั่วไป/ฝ่ายการเจ้าหน้าที่", position: e.position ?? "นักทรัพยากรบุคคล", level: e.level ?? "ชำนาญการ", dateSendLeave: e.dateSendLeave && date2Thai(e.dateSendLeave), dateLeave: e.dateSendLeave && date2Thai(e.dateSendLeave) + "-" + date2Thai(e.dateSendLeave), status: e.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.leaveTypeName, leaveTypeId: e.leaveTypeId, fullName: e.fullName, dateSendLeave: e.dateSendLeave && date2Thai(e.dateSendLeave), status: convertSatatus2(e.status), })); mainData.value = datalist; rows.value = mainData.value; } /** * ฟังก์ชั่นแปลงสถานะ tab1 * @param val ค่าสถานะ */ function convertSatatus(val: string) { switch (val) { case "NEW": return "ใหม่"; case "PENDING": return "อยู่ระหว่างดำเนินการ"; case "APPROVE": return "อนุมัติ"; case "REJECT": return "ไม่อนุมัติ"; case "DELETE": return "ยกเลิก"; } } /** * ฟังก์ชั่นแปลงสถานะ tab2 * @param val ค่าสถานะ */ function convertSatatus2(val: string) { switch (val) { case "NEW": return "ใหม่"; case "APPROVE": return "อนุมัติ"; case "REJECT": 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 "ALL_DAY": return "ลาทั้งวัน"; case "HAFT_MORNING": return "ลาครึ่งวันเช้า"; case "HAFT_AFTERNOON": return "ลาครึ่งวันบ่าย"; } } function colorType(val: string) { const dataType = leaveType.value.find((item: any) => item.id === val); switch (dataType.code) { case "LV-001": return "#FFD1D1"; // Light Red case "LV-002": return "#C8E6C9"; // Light Green case "LV-003": return "#BBDEFB"; // Light Blue case "LV-004": return "#E1BEE7"; // Light Purple case "LV-005": return "#DCEDC8"; // Light Lime case "LV-006": return "#FFE0B2"; // Light Orange case "LV-007": return "#FFECB3"; // Light Amber case "LV-008": return "#CFD8DC"; // Light Blue Grey case "LV-009": return "#FFCCBC"; // Light Deep Orange case "LV-010": return "#FFF9C4"; // Light Amber Lighten case "LV-011": return "#B2DFDB"; // Light Teal } } return { /** ข้อมูล Main*/ tabMenu, /** ข้อมูล Tab1*/ /** filter */ filter, tabView, /**ข้อมูลใน Table */ rows, fetchListLeave, columns, visibleColumns, fetchListLeaveReject, convertSatatus, /** Function แปลงค่า */ // convertLeave, convertLeaveDaytype, leaveType, colorType, }; });