import { defineStore } from "pinia"; import { ref } from "vue"; import { useCounterMixin } from "@/stores/mixin"; const mixin = useCounterMixin(); const { date2Thai } = mixin; export const useInsigniaDataStore = defineStore("insignia", () => { const isLock = ref(false) const roleUser = ref("") const requestId = ref("") const requestStatus = ref("") let optionsTypeOc = ref([]); let typeOc = ref(""); const agency = ref(""); let rows = ref([]); const listinsignia = ref([]); const typeinsignia = ref("all"); let typeinsigniaOptions = ref([{ id: "all", name: "ทั้งหมด" }]); const employeeClass = ref("all"); const employeeClassOps = ref([{ name: "ทั้งหมด", id: "all" }, { name: "ข้าราชการ กทม.สามัญ", id: "officer" }, { name: "ลูกจ้างประจำ", id: "perm" }]) const typeReport = ref(""); const titleReport = ref(""); const mainTab = ref('pending'); const setTypeandTitle = (type: string, title: string) => { typeReport.value = type; titleReport.value = title; }; const fetchData = async (data: any) => { if (data !== null) { let datalist = await data.map((e: any) => ({ id: e.id, citizenId: e.citizenId, profileId: e.profileId, name: e.fullName, position: e.position, level: e.rank, salary: e.salary, salary2: Number(e.salary).toLocaleString(), insigniaType: e.lastInsignia, insigniaSend: e.requestInsignia, insigniaLevel: e.level, dateSend: date2Thai(e.requestDate), requestNote: e.requestNote, employeeType: profileType(e.profileType), })); rows.value = await datalist listinsignia.value = await datalist; searchDataTable(typeinsignia.value, employeeClass.value) filtertypeInsignia(); } else rows.value = []; }; const fetchDataInsignia = async (data: any) => { isLock.value = data.isLock; requestId.value = data.requestId; requestStatus.value = data.requestStatus; } const fetchOption = (op: any) => { if (agency.value !== null) { typeOc.value = agency.value; optionsTypeOc.value = op.filter((e: any) => e.id == agency.value); } else { (optionsTypeOc.value = op), (typeOc.value = op[2].id); } }; const filtertypeInsignia = async () => { typeinsignia.value = "all"; if (listinsignia.value.length !== 0) { const double_name = [ ...new Set(listinsignia.value.map((item: any) => item.insigniaSend)), ]; typeinsigniaOptions.value = [{ id: "all", name: "ทั้งหมด" }]; for (let i = 1; i <= double_name.length; i++) { const type = double_name[i - 1]; const listtype = { id: type, name: type, }; typeinsigniaOptions.value.push(listtype); } } else typeinsigniaOptions.value = [{ id: "all", name: "ทั้งหมด" }]; }; const searchDataTable = async (type: string, employeeClass: string) => { if (type !== 'all' && employeeClass !== 'all') { rows.value = listinsignia.value.filter((e: any) => e.insigniaType === type && e.employeeType === profileType(employeeClass)) } else if (type !== 'all' && employeeClass === 'all') { rows.value = listinsignia.value.filter((e: any) => e.insigniaType === type) } else if (type === 'all' && employeeClass !== 'all') { rows.value = listinsignia.value.filter((e: any) => e.employeeType === profileType(employeeClass)) } } const convertOcid = (oc: string) => { let ocdata = optionsTypeOc.value.find((e: any) => e.name === oc) if (ocdata) { return ocdata.id } else return "" } const profileType = (val: string) => { switch (val) { case "officer": return "ข้าราชการ กทม.สามัญ"; case "employee": return "ลูกจ้างประจำ"; } } return { optionsTypeOc, mainTab, typeOc, rows, typeinsigniaOptions, typeinsignia, agency, fetchData, fetchOption, searchDataTable, setTypeandTitle, convertOcid, typeReport, titleReport, employeeClass, employeeClassOps, fetchDataInsignia, isLock, requestId, roleUser, requestStatus, }; });