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 roundId = ref(""); const optionRound = ref([]); 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; // สถานะของรอบการเสนอขอ }; // เรียก Option หน่วยงานทั้งหมด 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, employeeClasstype: string) => { typeinsignia.value = type; employeeClass.value = employeeClasstype; if (type !== "all" && employeeClasstype !== "all") { rows.value = listinsignia.value.filter( (e: any) => e.insigniaSend === type && e.employeeType === profileType(employeeClasstype) ); } else if (type !== "all" && employeeClasstype === "all") { rows.value = listinsignia.value.filter( (e: any) => e.insigniaSend === type ); } else if (type === "all" && employeeClasstype !== "all") { rows.value = listinsignia.value.filter( (e: any) => e.employeeType === profileType(employeeClasstype) ); } else if (type === "all" && employeeClasstype === "all") { rows.value = listinsignia.value; } }; // ประเภทลูกจ้าง const profileType = (val: string) => { switch (val) { case "officer": return "ข้าราชการ กทม.สามัญ"; case "employee": return "ลูกจ้างประจำ"; case "perm": return "ลูกจ้างประจำ"; case "temp": return "ลูกจ้างประจำ"; } }; return { roundId, optionRound, optionsTypeOc, mainTab, typeOc, rows, typeinsigniaOptions, typeinsignia, agency, fetchData, fetchOption, searchDataTable, setTypeandTitle, typeReport, titleReport, employeeClass, employeeClassOps, fetchDataInsignia, isLock, requestId, roleUser, requestStatus, }; });