import { defineStore } from "pinia"; import { ref } from "vue"; import type { QTableProps } from "quasar"; import type { DataRows } from "@/modules/09_leave/interface/response/specialTime"; import type { ListData } from "@/modules/09_leave/interface/request/specialTime"; import { useCounterMixin } from "@/stores/mixin"; import type { DataOption } from "@/modules/09_leave/interface/index/Main"; const mixin = useCounterMixin(); const { date2Thai } = mixin; export const useSpecialTimeStore = defineStore("LeaveSpecialTime", () => { const rows = ref([]); const selectDate = ref(new Date()); const fiscalYear = ref("0"); const DataMainOrig = ref([]); // ข้อมูลหลักดั้งเดิม async function fecthList(data: ListData[]) { let datalist: DataRows[] = data.map((e: ListData) => ({ id: e.id, fullname: e.fullname, date: date2Thai(new Date(e.date), false, true), dateFix: date2Thai(new Date(e.dateFix)), timeMorning: e.startTimeMorning == null ? "-" : e.startTimeMorning + " - " + e.endTimeMorning, timeAfternoon: e.startTimeAfternoon == null ? "-" : e.startTimeAfternoon + " - " + e.endTimeAfternoon, startTimeMorning: e.startTimeMorning, endTimeMorning: e.endTimeMorning, startTimeAfternoon: e.startTimeAfternoon, endTimeAfternoon: e.endTimeAfternoon, status: e.status, checkInStatus: convertStatus(e.checkInStatus), checkOutStatus: convertStatus(e.checkOutStatus), })); rows.value = datalist; DataMainOrig.value = datalist; } const DataMainUpdate = ref([]); // ข้อมูลเปลี่ยนแปลง const DataMain = (val: DataRows[]) => (DataMainOrig.value = val); const DataUpdate = (filterYear: string) => { DataMainUpdate.value = []; if (filterYear === "") { DataMainUpdate.value = DataMainOrig.value; } }; const checkInStatus = ref("ปกติ"); const checkOutStatus = ref("ปกติ"); //--------------|ฟิลเตอร์|--------------------------------------// const searchFilterTable = async (searchDate: any) => { rows.value = []; if (fiscalYear.value !== undefined && searchDate.value !== null) { await DataUpdate(searchDate.value === "0" ? "all" : searchDate.value!); let filteredData = DataMainOrig.value; if (searchDate.value !== "0") { filteredData = filteredData.filter( (item: DataRows) => item.date === searchDate.value ); console.log(searchDate.value); } const dataArr = filteredData.map((e: any) => ({ fullname: e.fullname, date: date2Thai(new Date(e.date)), dateFix: date2Thai(new Date(e.dateFix)) + (e.timeStamp || ""), type: e.type, reason: e.reason, timeStamp: e.timeStamp, })); rows.value = dataArr; } }; const optionStatus = ref([ { id: "0", name: "ปกติ" }, { id: "1", name: "สาย" }, { id: "2", name: "ขาดราชการ" }, ]); // const filterSelector = (val: any, update: Function, refData: string) => { // switch (refData) { // case "": // update(() => { // selectDate.value = selectDate.value.filter( // (v: any) => v.name.indexOf(val) > -1 // ); // }); // break; // default: // break; // } // }; const visibleColumns = ref([ "no", "fullname", "date", "dateFix", "timeMorning", "timeAfternoon", ]); const columns = ref([ { name: "no", align: "center", label: "ลำดับ", sortable: false, field: "no", headerStyle: "font-size: 14px", style: "font-size: 14px", }, { name: "fullname", align: "left", label: "ชื่อ-นามสกุล", sortable: true, field: "fullname", headerStyle: "font-size: 14px", style: "font-size: 14px", }, { name: "date", align: "left", label: "วันที่กรอก", sortable: true, field: "date", headerStyle: "font-size: 14px", style: "font-size: 14px", }, { name: "dateFix", align: "left", label: "วันที่ขอแก้ไข", sortable: true, field: "dateFix", headerStyle: "font-size: 14px", style: "font-size: 14px", }, { name: "timeMorning", align: "left", label: "ช่วงเช้า", sortable: true, field: "timeMorning", headerStyle: "font-size: 14px", style: "font-size: 14px", }, { name: "timeAfternoon", align: "left", label: "ช่วงบ่าย", sortable: true, field: "timeAfternoon", headerStyle: "font-size: 14px", style: "font-size: 14px", }, ]); // convertSatatus function convertStatus(val: string) { switch (val) { case "normal": return "ปกติ"; case "late": return "สาย"; case "absent": return "ขาดราชการ"; } } return { fecthList, rows, visibleColumns, columns, DataMain, searchFilterTable, selectDate, checkInStatus, checkOutStatus, optionStatus, }; });