hrms-mgt/src/modules/07_insignia/store.ts

158 lines
5.5 KiB
TypeScript
Raw Normal View History

2023-06-01 12:54:58 +07:00
import { defineStore } from "pinia";
import { ref } from "vue";
import { useCounterMixin } from "@/stores/mixin";
const mixin = useCounterMixin();
const { date2Thai } = mixin;
2023-06-01 12:54:58 +07:00
export const useInsigniaDataStore = defineStore("insignia", () => {
const roundId = ref<string>("");
const optionRound = ref<any>([]);
const isLock = ref<boolean>(false);
const roleUser = ref<string>("");
const requestId = ref<string>("");
const requestStatus = ref<string>("");
2023-08-21 11:55:57 +07:00
let optionsTypeOc = ref<any>([]);
let typeOc = ref<string>("");
const agency = ref<string>("");
let rows = ref<any>([]);
const listinsignia = ref<any>([]);
2023-09-07 09:33:04 +07:00
const typeinsignia = ref<string>("all");
let typeinsigniaOptions = ref<any>([{ id: "all", name: "ทั้งหมด" }]);
const employeeClass = ref<string>("all");
const employeeClassOps = ref<any>([
{ name: "ทั้งหมด", id: "all" },
{ name: "ข้าราชการ กทม.สามัญ", id: "officer" },
{ name: "ลูกจ้างประจำ", id: "perm" },
]);
const typeReport = ref<string>("");
const titleReport = ref<string>("");
const mainTab = ref<string | undefined>("pending");
const setTypeandTitle = (type: string, title: string) => {
typeReport.value = type;
titleReport.value = title;
};
2023-09-19 14:58:16 +07:00
// เรียกราชชื่อการเสนอขอ
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 = [];
};
2023-09-19 14:58:16 +07:00
// เรียกข้อมูลรอบการเสนอขอ
const fetchDataInsignia = async (data: any) => {
2023-09-19 14:58:16 +07:00
isLock.value = data.isLock; // สถานะล็อกข้อมูล
requestId.value = data.requestId;
2023-09-19 14:58:16 +07:00
requestStatus.value = data.requestStatus; // สถานะของรอบการเสนอขอ
};
2023-09-19 14:58:16 +07:00
// เรียก 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);
}
};
2023-09-19 14:58:16 +07:00
// หาประเภทเครื่องราชทั้งหมดที่อยู่ในรายชื่อข้าราชการสามัญฯ
const filtertypeInsignia = async () => {
typeinsignia.value = "all";
if (listinsignia.value.length !== 0) {
2023-09-19 14:58:16 +07:00
// หาประเภทเครื่องราชที่ขอที่ชื่อซ้ำกัน
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: "ทั้งหมด" }];
};
2023-09-19 14:58:16 +07:00
// ค้นหาข้อมมูลราชชื่อ ตาม ประเท๓และสถานภาพ
2023-09-15 16:49:26 +07:00
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;
2023-09-05 15:38:49 +07:00
}
};
2023-09-19 14:58:16 +07:00
// ประเภทลูกจ้าง
const profileType = (val: string) => {
switch (val) {
case "officer":
return "ข้าราชการ กทม.สามัญ";
case "employee":
return "ลูกจ้างประจำ";
case "perm":
return "ลูกจ้างประจำ";
case "temp":
return "ลูกจ้างประจำ";
}
};
2023-08-21 11:55:57 +07:00
return {
roundId,
optionRound,
optionsTypeOc,
mainTab,
typeOc,
rows,
typeinsigniaOptions,
typeinsignia,
agency,
fetchData,
fetchOption,
2023-09-07 09:33:04 +07:00
searchDataTable,
setTypeandTitle,
typeReport,
titleReport,
employeeClass,
employeeClassOps,
fetchDataInsignia,
isLock,
requestId,
roleUser,
requestStatus,
2023-08-21 11:55:57 +07:00
};
2023-06-01 12:54:58 +07:00
});