import { defineStore } from "pinia"; import { ref } from "vue"; import { useCounterMixin } from "@/stores/mixin"; import type { DataOption } from "@/modules/11_discipline/interface/index/Main"; import type { DataList, DataListRow, DataAdd, ocListType, } from "@/modules/11_discipline/interface/response/complaint"; import type { ArrayPerson } from "@/modules/11_discipline/interface/request/complaint"; import type { QTableProps } from "quasar"; const mixin = useCounterMixin(); const { date2Thai } = mixin; export const useComplainstDataStore = defineStore( "DisciplineComplainst", () => { const rows = ref([]); const rowsAdd = ref([]); const visibleColumns = ref([]); const columns = ref([]); function fetchComplainstAdd(data: ArrayPerson[]) { rowsAdd.value = data; } function addCommas(salaryString: string): string { const salaryNumber = parseFloat(salaryString.replace(/,/g, "")); return salaryNumber.toLocaleString(); } function fetchComplainst(data: DataList[]) { let dataList: DataListRow[] = data.map((e: DataList) => ({ id: e.id, personId: e.personId, title: e.title, dateReceived: e.dateReceived ? date2Thai(e.dateReceived) : "-", respondentType: convertComplaintType(e.respondentType), offenseDetails: offenseDetailsTran(e.offenseDetails), createdAt: date2Thai(e.createdAt)!, levelConsideration: levelConsiderationTran(e.levelConsideration), dateConsideration: e.dateConsideration ? date2Thai(e.dateConsideration) : "-", status: statusTothai(e.status), })); rows.value = dataList; } // filter options const complainantoptionsMain = ref([ { id: "PERSON", name: "บุคคล" }, { id: "ORGANIZATION", name: "หน่วยงาน" }, { id: "BANGKOK", name: "กรุงเทพมหานคร" }, ]); function convertComplaintType(val: string) { const result = complainantoptionsMain.value.find( (x: any) => x.id == val )?.name; return result ? result : "-"; } const complainantoptions = ref(complainantoptionsMain.value); const consideredAgencytoptions = ref([]); const organizationIdOp = ref([]); const statusTothai = (val: string) => { switch (val) { case "NEW": return "ใหม่"; case "STOP": return "ยุติเรื่อง"; case "SEND_INVESTIGATE": return "มีมูลส่งไปสืบสวนแล้ว"; default: return "-"; } }; function offenseDetailsTran(val: string) { switch (val) { case "NOT_SPECIFIED": return "ยังไม่ระบุ"; case "NOT_DEADLY": return "ร้ายแรง"; case "DEADLY": return "ไม่ร้ายแรง"; default: return "-"; } } function levelConsiderationTran(val: string) { switch (val) { case "NORMAL": return "ปกติ"; case "URGENT": return "ด่วน"; case "VERT_URGENT": return "ด่วนมาก"; default: return "-"; } } const agencytoptions = ref(consideredAgencytoptions.value); const optionListNameMain = ref([]); const optionListName = ref([]); function selectComplainantTpye(list: any) { optionListNameMain.value = list; optionListName.value = list; } function filterSelector(val: string, update: Function, type: string) { update(() => { const needle = val.toLowerCase(); if (type === "filterrespondentType") { complainantoptions.value = complainantoptionsMain.value.filter( (v: any) => v.name.toLowerCase().indexOf(needle) > -1 ); } else if (type === "filteragencytoptions") { agencytoptions.value = consideredAgencytoptions.value.filter( (v: any) => v.name.toLowerCase().indexOf(needle) > -1 ); } else if (type === "filtercomplainantOP") { optionListName.value = optionListNameMain.value.filter( (v: any) => v.name.toLowerCase().indexOf(needle) > -1 ); } }); } function ocListFn(data: ocListType[]) { let dataList: DataOption[] = data.map((item: ocListType) => ({ id: item.organizationId, name: item.organizationName, })); consideredAgencytoptions.value = dataList; organizationIdOp.value = dataList; } return { rows, rowsAdd, visibleColumns, columns, fetchComplainst, selectComplainantTpye, filterSelector, complainantoptions, consideredAgencytoptions, optionListName, fetchComplainstAdd, organizationIdOp, ocListFn, }; } );