100 lines
3.3 KiB
TypeScript
100 lines
3.3 KiB
TypeScript
import { defineStore } from "pinia";
|
|
import { ref } from "vue";
|
|
import { useCounterMixin } from "@/stores/mixin";
|
|
import type { DataOption } from "@/modules/09_leave/interface/index/Main"
|
|
const mixin = useCounterMixin();
|
|
const { date2Thai } = mixin;
|
|
export const useWorklistDataStore = defineStore("work", () => {
|
|
// ข้อมูลในตาราง
|
|
const rows = ref<any>([])
|
|
const dataMain = ref<any>([])
|
|
function fecthList(data: any) {
|
|
let datalist = data.map((e: any) => ({
|
|
fullName: e.fullName,
|
|
timeIn: e.timeIn,
|
|
coordinatesIn: e.coordinatesIn,
|
|
latIn: e.latIn,
|
|
longIn: e.longIn,
|
|
timeOut: e.timeOut,
|
|
coordinatesOut: e.coordinatesOut,
|
|
latOut: e.latOut,
|
|
longOut: e.longOut,
|
|
status: convertSatatus(e.status)
|
|
}))
|
|
dataMain.value = datalist
|
|
fetchOption()
|
|
searchDataFn(selectDate.value, selectStatus.value)
|
|
}
|
|
|
|
//ค้นหาข้อมูล
|
|
const filterTable = ref<string>('')
|
|
const selectDate = ref<Date | null>(null);
|
|
const selectStatus = ref<String>('all')
|
|
const optionStatusMain = ref<DataOption[]>([])
|
|
const optionStatus = ref<DataOption[]>([])
|
|
function searchDataFn(searchDate: any, srarchStatus: any) {
|
|
srarchStatus = srarchStatus || "all";
|
|
if (searchDate == null && srarchStatus == "all") {
|
|
rows.value = dataMain.value
|
|
} else if (searchDate == null && srarchStatus !== "all") {
|
|
rows.value = dataMain.value.filter((e: any) => e.status === convertSatatus(srarchStatus))
|
|
}
|
|
}
|
|
//
|
|
function fetchOption() {
|
|
const double_status = [
|
|
...new Set(dataMain.value.map((item: any) => item.status)),
|
|
];
|
|
optionStatusMain.value = [{ id: "all", name: "ทั้งหมด" }];
|
|
for (let i = 1; i <= double_status.length; i++) {
|
|
const status = double_status[i - 1];
|
|
if (typeof status === 'string') {
|
|
const listtype: DataOption = {
|
|
id: status,
|
|
name: status,
|
|
};
|
|
optionStatusMain.value.push(listtype)
|
|
optionStatus.value = optionStatusMain.value
|
|
}
|
|
}
|
|
}
|
|
function filterFn(val: string, update: any) {
|
|
if (val == "") {
|
|
update(() => {
|
|
optionStatus.value = optionStatusMain.value;
|
|
});
|
|
} else {
|
|
update(() => {
|
|
optionStatus.value = optionStatusMain.value.filter(
|
|
(e: any) => e.name.search(val) !== -1
|
|
);
|
|
});
|
|
}
|
|
}
|
|
|
|
// convertSatatus
|
|
function convertSatatus(val: string) {
|
|
switch (val) {
|
|
case "1":
|
|
return "ลงเวลาเรียบร้อย"
|
|
case "2":
|
|
return "สายทำงานครบ"
|
|
default:
|
|
return "ยังไม่ได้ลงเวลา"
|
|
}
|
|
}
|
|
return {
|
|
//ข้อมูลในตาราง
|
|
rows,
|
|
fecthList,
|
|
//ค้นหาข้อมูล
|
|
filterTable,
|
|
selectDate,
|
|
selectStatus,
|
|
optionStatus,
|
|
searchDataFn,
|
|
filterFn,
|
|
convertSatatus
|
|
|
|
};
|
|
})
|