133 lines
4.3 KiB
TypeScript
133 lines
4.3 KiB
TypeScript
import { defineStore } from "pinia";
|
|
import { ref } from "vue";
|
|
import { useCounterMixin } from "@/stores/mixin";
|
|
|
|
const mixin = useCounterMixin();
|
|
const { date2Thai } = mixin;
|
|
|
|
export const useInsigniaDataStore = defineStore("insignia", () => {
|
|
const isLock = ref<boolean>(false)
|
|
const roleUser = ref<string>("")
|
|
const requestId = ref<string>("")
|
|
const requestStatus = ref<string>("")
|
|
let optionsTypeOc = ref<any>([]);
|
|
let typeOc = ref<string>("");
|
|
const agency = ref<string>("");
|
|
let rows = ref<any>([]);
|
|
const listinsignia = ref<any>([]);
|
|
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 setTypeandTitle = (type: string, title: string) => {
|
|
typeReport.value = type;
|
|
titleReport.value = title;
|
|
};
|
|
|
|
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 = [];
|
|
};
|
|
const fetchDataInsignia = async (data: any) => {
|
|
isLock.value = data.isLock;
|
|
requestId.value = data.requestId;
|
|
requestStatus.value = data.requestStatus;
|
|
}
|
|
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);
|
|
}
|
|
};
|
|
const filtertypeInsignia = async () => {
|
|
typeinsignia.value = "all";
|
|
if (listinsignia.value.length !== 0) {
|
|
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: "ทั้งหมด" }];
|
|
};
|
|
const searchDataTable = async (type: string, employeeClass: string) => {
|
|
if (type !== 'all' && employeeClass !== 'all') {
|
|
rows.value = listinsignia.value.filter((e: any) => e.insigniaType === type && e.employeeType === profileType(employeeClass))
|
|
} else if (type !== 'all' && employeeClass === 'all') {
|
|
rows.value = listinsignia.value.filter((e: any) => e.insigniaType === type)
|
|
} else if (type === 'all' && employeeClass !== 'all') {
|
|
rows.value = listinsignia.value.filter((e: any) => e.employeeType === profileType(employeeClass))
|
|
}
|
|
|
|
|
|
}
|
|
const convertOcid = (oc: string) => {
|
|
let ocdata = optionsTypeOc.value.find((e: any) => e.name === oc)
|
|
if (ocdata) {
|
|
return ocdata.id
|
|
} else return ""
|
|
}
|
|
const profileType = (val: string) => {
|
|
switch (val) {
|
|
case "officer":
|
|
return "ข้าราชการ กทม.สามัญ";
|
|
case "employee":
|
|
return "ลูกจ้างประจำ";
|
|
}
|
|
}
|
|
|
|
return {
|
|
optionsTypeOc,
|
|
typeOc,
|
|
rows,
|
|
typeinsigniaOptions,
|
|
typeinsignia,
|
|
agency,
|
|
fetchData,
|
|
fetchOption,
|
|
searchDataTable,
|
|
setTypeandTitle,
|
|
convertOcid,
|
|
typeReport,
|
|
titleReport,
|
|
employeeClass,
|
|
employeeClassOps,
|
|
fetchDataInsignia,
|
|
isLock,
|
|
requestId,
|
|
roleUser,
|
|
requestStatus,
|
|
};
|
|
});
|