import { defineStore } from "pinia"; import { ref } from "vue"; import { useCounterMixin } from "@/stores/mixin"; import type { DataOption } from "@/modules/09_leave/interface/index/Main" const mixin = useCounterMixin(); const { date2Thai } = mixin; export const useWorklistDataStore = defineStore("work", () => { // ข้อมูลในตาราง const rows = ref([]) const dataMain = ref([]) function fecthList(data: any) { let datalist = data.map((e: any) => ({ fullName: e.fullName, timeIn: e.timeIn, coordinatesIn: e.coordinatesIn, latIn: e.latIn, longIn: e.longIn, timeOut: e.timeOut, coordinatesOut: e.coordinatesOut, latOut: e.latOut, longOut: e.longOut, status: convertSatatus(e.status) })) dataMain.value = datalist fetchOption() searchDataFn(selectDate.value, selectStatus.value) } //ค้นหาข้อมูล const filterTable = ref('') const selectDate = ref(null); const selectStatus = ref('all') const optionStatusMain = ref([]) const optionStatus = ref([]) function searchDataFn(searchDate: any, srarchStatus: any) { srarchStatus = srarchStatus || "all"; if (searchDate == null && srarchStatus == "all") { rows.value = dataMain.value } else if (searchDate == null && srarchStatus !== "all") { rows.value = dataMain.value.filter((e: any) => e.status === convertSatatus(srarchStatus)) } } // function fetchOption() { const double_status = [ ...new Set(dataMain.value.map((item: any) => item.status)), ]; optionStatusMain.value = [{ id: "all", name: "ทั้งหมด" }]; for (let i = 1; i <= double_status.length; i++) { const status = double_status[i - 1]; if (typeof status === 'string') { const listtype: DataOption = { id: status, name: status, }; optionStatusMain.value.push(listtype) optionStatus.value = optionStatusMain.value } } } function filterFn(val: string, update: any) { if (val == "") { update(() => { optionStatus.value = optionStatusMain.value; }); } else { update(() => { optionStatus.value = optionStatusMain.value.filter( (e: any) => e.name.search(val) !== -1 ); }); } } // convertSatatus function convertSatatus(val: string) { switch (val) { case "1": return "ลงเวลาเรียบร้อย" case "2": return "สายทำงานครบ" default: return "ยังไม่ได้ลงเวลา" } } return { //ข้อมูลในตาราง rows, fecthList, //ค้นหาข้อมูล filterTable, selectDate, selectStatus, optionStatus, searchDataFn, filterFn, convertSatatus }; })