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

164 lines
5.5 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,
ocListType,
} from "@/modules/11_discipline/interface/response/complaint";
2023-10-20 10:31:07 +07:00
import type { QTableProps } from "quasar";
2023-11-30 21:06:50 +07:00
import { useDisciplineMainStore } from "@/modules/11_discipline/store/main";
const mainStore = useDisciplineMainStore();
const mixin = useCounterMixin();
const { date2Thai } = mixin;
export const useComplainstDataStore = defineStore(
"DisciplineComplainst",
() => {
const rows = ref<DataListRow[]>([]);
2023-10-20 10:31:07 +07:00
const visibleColumns = ref<string[]>([]);
const columns = ref<QTableProps["columns"]>([]);
2023-10-19 15:39:18 +07:00
function fetchComplainst(data: DataList[]) {
2023-11-24 16:52:10 +07:00
let dataList: DataListRow[] = data.map((e: DataList) => ({
id: e.id,
personId: e.personId,
2024-09-03 11:28:01 +07:00
title: e.title ? e.title : "-",
2023-11-24 16:52:10 +07:00
dateReceived: e.dateReceived ? date2Thai(e.dateReceived) : "-",
2024-09-03 11:28:01 +07:00
respondentType: e.respondentType
? mainStore.convertComplaintType(e.respondentType)
: "-",
offenseDetails: e.offenseDetails
? mainStore.convertOffenseDetailst(e.offenseDetails)
: "-",
createdAt: e.createdAt ? date2Thai(e.createdAt)! : "-",
levelConsideration: e.levelConsideration
? levelConsiderationTran(e.levelConsideration)
: "-",
dateConsideration: e.dateConsideration
? date2Thai(e.dateConsideration)
: "-",
status: e.status ? statusTothai(e.status) : "-",
}));
2023-11-24 16:52:10 +07:00
rows.value = dataList;
}
const complainantoptions = ref<DataOption[]>(
mainStore.complainantoptionsMain
);
2023-11-23 10:13:13 +07:00
const consideredAgencytoptions = ref<DataOption[]>([]);
const organizationIdOp = ref<DataOption[]>([]);
const levelConsiderationtOptions = ref<DataOption[]>([
{ id: "NORMAL", name: "ปกติ" },
{ id: "URGENT", name: "ด่วน" },
{ id: "VERY_URGENT", name: "ด่วนมาก" },
]);
2023-12-25 16:31:24 +07:00
const agencytoptions = ref<DataOption[]>(consideredAgencytoptions.value);
const optionListNameMain = ref<DataOption[]>([]);
const optionListName = ref<DataOption[]>([]);
2023-12-26 15:53:52 +07:00
const statusOptions = ref<DataOption[]>([
{ id: "ALL", name: "ทั้งหมด" },
{ id: "NEW", name: "ใหม่" },
{ id: "STOP", name: "ยุติเรื่อง" },
{ id: "SEND_INVESTIGATE", name: "มีมูลส่งไปสืบสวนแล้ว" },
2023-12-26 15:53:52 +07:00
]);
/**
2024-09-03 11:28:01 +07:00
* status Text
* @param val status
* @returns text
*/
function statusTothai(val: string) {
switch (val) {
case "NEW":
return "ใหม่";
case "STOP":
return "ยุติเรื่อง";
case "SEND_INVESTIGATE":
return "มีมูลส่งไปสืบสวนแล้ว";
default:
return "-";
}
2024-09-03 11:28:01 +07:00
}
/**
* option
* @param val API
* @returns name id
*/
function levelConsiderationTran(val: string) {
return (
levelConsiderationtOptions.value.find((v: any) => v.id === val)?.name ??
"-"
);
2023-11-23 10:13:13 +07:00
}
/**
* options
* @param list options
*/
function selectComplainantType(list: any) {
optionListNameMain.value = list;
optionListName.value = list;
}
/**
* text input
* @param val text
* @param update qursar
* @param type type
*/
2023-10-19 15:39:18 +07:00
function filterSelector(val: string, update: Function, type: string) {
update(() => {
const needle = val.toLowerCase();
if (type === "filterrespondentType") {
complainantoptions.value = mainStore.complainantoptionsMain.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
);
}
});
2023-11-23 10:13:13 +07:00
}
2023-10-20 10:31:07 +07:00
/**
* id/name
* @param data
*/
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,
visibleColumns,
columns,
fetchComplainst,
selectComplainantType,
filterSelector,
complainantoptions,
consideredAgencytoptions,
optionListName,
organizationIdOp,
ocListFn,
levelConsiderationtOptions,
2024-09-03 11:28:01 +07:00
statusOptions,
};
}
);