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 } from "@/modules/11_discipline/interface/response/complaint" import type { QTableProps } from "quasar"; const mixin = useCounterMixin() const { date2Thai } = mixin export const useComplainstDataStore = defineStore("DisciplineComplainst", () => { const rows = ref([]) const visibleColumns = ref([]); const columns = ref([]); function fetchComplainst(data: DataList[]) { let datalist = data.map((e: DataList) => ({ id: e.id, subject: e.subject, detail: e.detail, complainant: e.complainant, offenseDescription: e.offenseDescription, creationDate: date2Thai(e.creationDate), considerationLevel: e.considerationLevel, considerationDeadlineDate: date2Thai(e.considerationDeadlineDate), })) rows.value = datalist } // filter options const complainantoptionsMain = ref([ { id: "0", name: "บุคคล" }, { id: "1", name: "หน่ายงาน" }, { id: "2", name: "กรุงเทพหมานคร" }, ]); const complainantoptions = ref(complainantoptionsMain.value) const agencytoptionsMain = ref([ { id: "0", name: "หน่ายงานเอ" }, { id: "1", name: "หน่ายงานบี" }, { id: "2", name: "หน่ายงานชี" }, ]); const agencytoptions = ref(agencytoptionsMain.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 === "filtercomplainantType") { complainantoptions.value = complainantoptionsMain.value.filter( (v: any) => v.name.toLowerCase().indexOf(needle) > -1 ); } else if (type === "filteragencytoptions") { agencytoptions.value = agencytoptionsMain.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 ); } }); } return { rows, visibleColumns, columns, fetchComplainst, selectComplainantTpye, filterSelector, complainantoptions, agencytoptions, optionListName, } })