import { defineStore } from "pinia"; import { ref } from "vue"; export const useAllocateDataStore = defineStore("insigniaallocate", () => { const roundId = ref(""); const roundYear = ref(); const insigniaName = ref(""); const insignia = ref(""); const insigniaOp = ref([{ name: "ทั้งหมด", id: "", type: "" }]); const insigniaType = ref(); const rows = ref([]); const listInsignia = ref([]); const mainTab = ref(""); const type = ref([]); /** * function เรียกข้อมูลเครื่องราช * @param data ข้อมูลเครื่องราช */ async function fetchDatainsignia(data: any) { insigniaOp.value = [{ name: "ทั้งหมด", id: "", type: "" }]; data.forEach((e: any) => { insigniaOp.value.push({ name: `${e.name} (${e.shortName})`, id: e.id, type: e.insigniaTypeId, }); }); data.forEach((e: any) => { type.value.push({ name: e.name, shortName: e.shortName, }); }); } /** * function เรียกประเเภทเครื่องราช * @param data ข้อมูลเครื่องราช */ async function fetchDatainsigniaType(data: any) { insigniaType.value = data.map((e: any) => ({ name: e.id, label: e.name })); } /** * function เรียกรายการจัดสรรเครื่องราชอิสริยาภรณ์ * @param data ข้อมูลรายการจัดสรรเครื่องราชอิสริยาภรณ์ */ async function listinsignia(data: any) { rows.value = []; let list = await data.map((e: any) => ({ id: e.id, insignia: `${e.insignia} (${ type.value.find((item) => item.name === e.insignia)?.shortName || "" })`, insigniaId: e.insigniaId, total: e.total, allocate: e.allocate, remain: e.remain, year: e.year, })); rows.value = list; listInsignia.value = list; selectInsignia(insignia.value); } /** * function ค้นหาข้อมูลตามประเภทเครื่องราช * @param type ประเภทเครื่องราช */ function selectInsignia(type: string) { insignia.value = type; if (insignia.value !== "") { rows.value = listInsignia.value.filter( (e: any) => e.insigniaId === insignia.value ); } else rows.value = listInsignia.value; } /** * function convert สถานภาพ * @param val สถานภาพ */ function profileType(val: string) { switch (val) { case "officer": return "ข้าราชการ กทม.สามัญ"; case "employee": return "ลูกจ้างประจำ"; } } return { roundId, roundYear, rows, insignia, insigniaOp, insigniaType, fetchDatainsignia, fetchDatainsigniaType, listinsignia, selectInsignia, profileType, insigniaName, mainTab, }; });