hrms-mgt/src/modules/11_discipline/store/ComplaintsStore.ts

109 lines
3.6 KiB
TypeScript
Raw Normal View History

import { defineStore } from "pinia";
import { ref } from "vue";
import { useCounterMixin } from "@/stores/mixin";
2023-10-19 15:39:18 +07:00
import type { DataOption } from "@/modules/11_discipline/interface/index/Main";
import type { DataList, DataListRow,DataAdd,DataAddResponse } from "@/modules/11_discipline/interface/response/complaint"
2023-10-20 10:31:07 +07:00
import type { QTableProps } from "quasar";
const mixin = useCounterMixin()
const { date2Thai } = mixin
// id
// cardId
// prefix
// firstName
// lastName
// position
// level
// oc
2023-10-19 15:39:18 +07:00
export const useComplainstDataStore = defineStore("DisciplineComplainst", () => {
const rows = ref<DataListRow[]>([])
const rowsAdd = ref<DataAdd[]>([])
2023-10-20 10:31:07 +07:00
const visibleColumns = ref<string[]>([]);
const columns = ref<QTableProps["columns"]>([]);
function fetchComplainstAdd(data: DataAddResponse[]) {
let datalist = data.map((e: DataAddResponse) => ({
id: e.id,
cardId: e.cardId,
fullName:`${e.prefix}${e.firstName} ${e.lastName}`,
position: e.position,
level: e.level,
degree: e.degree,
oc: e.oc,
}))
rowsAdd.value = datalist
}
2023-10-19 15:39:18 +07:00
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
}
2023-10-20 10:31:07 +07:00
// filter options
const complainantoptionsMain = ref<DataOption[]>([
{ id: "0", name: "บุคคล" },
2023-11-15 10:53:26 +07:00
{ id: "1", name: "หน่วยงาน" },
{ id: "2", name: "กรุงเทพมหานคร" },
]);
const complainantoptions = ref<DataOption[]>(complainantoptionsMain.value)
const agencytoptionsMain = ref<DataOption[]>([
{ id: "0", name: "หน่ายงานเอ" },
{ id: "1", name: "หน่ายงานบี" },
{ id: "2", name: "หน่ายงานชี" },
]);
const agencytoptions = ref<DataOption[]>(agencytoptionsMain.value)
const optionListNameMain = ref<DataOption[]>([])
const optionListName = ref<DataOption[]>([])
function selectComplainantTpye(list: any) {
optionListNameMain.value = list
optionListName.value = list
}
2023-10-19 15:39:18 +07:00
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
);
}
});
}
2023-10-20 10:31:07 +07:00
return {
rows,
rowsAdd,
2023-10-20 10:31:07 +07:00
visibleColumns,
columns,
2023-10-19 15:39:18 +07:00
fetchComplainst,
selectComplainantTpye,
filterSelector,
complainantoptions,
agencytoptions,
2023-10-20 10:31:07 +07:00
optionListName,
fetchComplainstAdd
2023-10-20 10:31:07 +07:00
}
})