ปรับ code รายการลา Table

This commit is contained in:
DESKTOP-1R2VSQH\Lenovo ThinkPad E490 2023-11-30 14:21:53 +07:00
parent 60ddcf5789
commit 9412454760
3 changed files with 68 additions and 132 deletions

View file

@ -13,7 +13,6 @@ const mixin = useCounterMixin();
const { showLoader, hideLoader, messageError, date2Thai, monthYear2Thai } = const { showLoader, hideLoader, messageError, date2Thai, monthYear2Thai } =
mixin; mixin;
const LeaveData = useLeaveStore(); const LeaveData = useLeaveStore();
const { fecthList } = LeaveData;
const $q = useQuasar(); const $q = useQuasar();
@ -36,6 +35,7 @@ async function fetchDataTable() {
.post(config.API.leaveTableList(), body) .post(config.API.leaveTableList(), body)
.then((res) => { .then((res) => {
console.log(res); console.log(res);
const data = res.data.result.data;
}) })
.catch((err) => { .catch((err) => {
messageError($q, err); messageError($q, err);

View file

@ -0,0 +1,21 @@
interface ListLeave {
id: string; //*Id การยื่นขอลา
leaveTypeName: string; //Name ประเภทการลา
leaveTypeId: string; //Id ประเภทการลา
fullname: string; //คำนำหน้า ชื่อ นามสกุล คนขอลา
dateSendLeave: Date | null; //วันที่ยื่นใบลา
status: string; //สถานะการของลา
isDelete: boolean; //ขอยกเลิกคำขอลา ถ้าเคยขอแล้วจะเป็น true ไม่เคยเป็น false
}
interface ListLeaveTable {
id: string;
leaveTypeName: string;
leaveTypeId: string;
fullname: string;
dateSendLeave: string | null;
status: string;
isDelete: boolean;
}
export type { ListLeave, ListLeaveTable };

View file

@ -1,28 +1,53 @@
import { defineStore } from "pinia"; import { defineStore } from "pinia";
import { ref, computed } from "vue"; import { ref } from "vue";
import type { QTableProps } from "quasar"; import type { QTableProps } from "quasar";
import type { import type {
FormLeavetMainData,
OptionData, OptionData,
formListLeaveData,
TypeLeave, TypeLeave,
} from "@/modules/05_leave/interface/index/main"; } from "@/modules/05_leave/interface/index/main";
import type {
ListLeave,
ListLeaveTable,
} from "@/modules/05_leave/interface/response/leave";
import { useCounterMixin } from "@/stores/mixin"; import { useCounterMixin } from "@/stores/mixin";
const mixin = useCounterMixin();
const { date2Thai } = mixin;
export const useLeaveStore = defineStore("Leave", () => { export const useLeaveStore = defineStore("Leave", () => {
const tabValue = ref<string>("calendar"); const tabValue = ref<string>("calendar");
const typeLeave = ref<string | undefined>(""); const typeLeave = ref<string | undefined>("");
const mixin = useCounterMixin();
const { date2Thai } = mixin;
const LeaveType = ref<string | null>("0"); const LeaveType = ref<string | null>("0");
const LeaveStatus = ref<string | null>("0"); const LeaveStatus = ref<string | null>("0");
const fiscalYearyear = ref<Number | null>(new Date().getFullYear()); const fiscalYearyear = ref<Number | null>(new Date().getFullYear());
const rows = ref<formListLeaveData[]>([]); const rows = ref<ListLeaveTable[]>([]);
const DataMainOrig = ref<formListLeaveData[]>([]); // ข้อมูลหลักดั้งเดิม
/**
* function Table
* @param data Table
*/
async function fetchListLeave(data: ListLeave[]) {
let datalist: ListLeaveTable[] = data.map((e: ListLeave) => ({
id: e.id,
leaveTypeName: e.leaveTypeName,
leaveTypeId: e.leaveTypeId,
fullname: e.fullname,
dateSendLeave: e.dateSendLeave && date2Thai(e.dateSendLeave),
status: e.status,
isDelete: e.isDelete,
}));
rows.value = datalist;
}
/** ประเภทการลา */ /** ประเภทการลา */
const typeOptions = ref<OptionData[]>([]); const typeOptions = ref<OptionData[]>([]);
const typeOptionsMain = ref<OptionData[]>([]); const typeOptionsMain = ref<OptionData[]>([]);
/**
* function
* @param data
*/
async function fetchLeaveType(data: TypeLeave[]) { async function fetchLeaveType(data: TypeLeave[]) {
typeOptionsMain.value = [ typeOptionsMain.value = [
{ id: "00000000-0000-0000-0000-000000000000", name: "ทั้งหมด" }, { id: "00000000-0000-0000-0000-000000000000", name: "ทั้งหมด" },
@ -46,96 +71,13 @@ export const useLeaveStore = defineStore("Leave", () => {
]); ]);
const statusOptions = ref<OptionData[]>(statusOptionsMain.value); const statusOptions = ref<OptionData[]>(statusOptionsMain.value);
async function fecthList(data: formListLeaveData[]) {
let datalist: formListLeaveData[] = data.map((e: any) => ({
no: e.no,
type: e.type,
status: e.status,
date: e.date,
year: e.year,
}));
rows.value = datalist;
DataMainOrig.value = datalist;
}
const DataMainUpdate = ref<formListLeaveData[]>([]); // ข้อมูลเปลี่ยนแปลง
const DataMain = (val: formListLeaveData[]) => (DataMainOrig.value = val);
const DataUpdate = (
filterType: string,
filterStatus: string,
filterYear: string
) => {
DataMainUpdate.value = [];
if (filterType === "" && filterStatus === "" && filterYear === "") {
DataMainUpdate.value = DataMainOrig.value;
} else if (filterType !== "" && filterStatus === "" && filterYear === "") {
DataMainUpdate.value = DataMainOrig.value.filter(
(item: formListLeaveData) => item.type === filterType
);
} else if (
filterType !== "" &&
filterStatus !== "" &&
filterYear === null
) {
DataMainUpdate.value = DataMainOrig.value.filter(
(item: formListLeaveData) =>
item.type === filterType && item.status === filterStatus
);
} else if (filterType !== "" && filterStatus === "" && filterYear !== "") {
DataMainUpdate.value = DataMainOrig.value.filter(
(item: formListLeaveData) =>
item.type === filterType && item.year === filterYear
);
} else if (filterType === "" && filterStatus !== "" && filterYear === "") {
DataMainUpdate.value = DataMainOrig.value.filter(
(item: formListLeaveData) => item.status === filterStatus
);
} else if (filterType === "" && filterStatus === "" && filterYear !== "") {
DataMainUpdate.value = DataMainOrig.value.filter(
(item: formListLeaveData) => item.year === filterYear
);
} else if (
filterType === "" &&
filterStatus !== "" &&
filterYear !== null
) {
DataMainUpdate.value = DataMainOrig.value.filter(
(item: formListLeaveData) =>
item.status === filterStatus && item.year === filterYear
);
} else if (filterType !== "" && filterStatus !== "" && filterYear === "") {
DataMainUpdate.value = DataMainOrig.value.filter(
(item: formListLeaveData) =>
item.status === filterStatus && item.type === filterType
);
} else if (
filterType !== "" &&
filterStatus !== "" &&
filterYear !== null
) {
DataMainUpdate.value = DataMainOrig.value.filter(
(item: formListLeaveData) =>
item.type === filterType &&
item.status === filterStatus &&
item.year === filterYear
);
} else if (
filterType == "0" &&
filterStatus == "0" &&
filterYear !== null
) {
DataMainUpdate.value = DataMainOrig.value;
}
};
/** /**
* selector * function Option
* @param val * @param val
* @param update * @param update
* @param refData * @param refData
*/ */
const filterOption = (val: any, update: Function, refData: string) => { function filterOption(val: any, update: Function, refData: string) {
switch (refData) { switch (refData) {
case "LeaveTypeOption": case "LeaveTypeOption":
update(() => { update(() => {
@ -154,24 +96,6 @@ export const useLeaveStore = defineStore("Leave", () => {
default: default:
break; break;
} }
};
/** filter ปี */
const fiscalyearOP = ref<OptionData[]>([
{ id: "0", name: "ทั้งหมด" },
{ id: "1", name: "2566" },
{ id: "2", name: "2567" },
{ id: "2", name: "2568" },
]);
/**
* option
* @param val
* @returns option
*/
function convertType(val: string) {
if (val == "0") return "ทั้งหมด";
else return options.value.find((x) => x.id == val)?.name;
} }
/** รายการประเภทการลาของ ลาไปศึกษา ฝึกอบรม ปฎิบัติการวิจัย หรือดูงาน*/ /** รายการประเภทการลาของ ลาไปศึกษา ฝึกอบรม ปฎิบัติการวิจัย หรือดูงาน*/
@ -203,18 +127,13 @@ export const useLeaveStore = defineStore("Leave", () => {
{ id: "11", name: "ลาไปฟื้นฟูสมรรถภาพด้านอาชีพ" }, { id: "11", name: "ลาไปฟื้นฟูสมรรถภาพด้านอาชีพ" },
]); ]);
/**
* option
* @param val
* @returns option
*/
function convertStatus(val: string) {
if (val == "0") return "ทั้งหมด";
else return statusOptions.value.find((x) => x.id == val)?.name;
}
/** data table filter & column ของรายการลา */ /** data table filter & column ของรายการลา */
const visibleColumns = ref<String[]>(["no", "type", "date", "status"]); const visibleColumns = ref<String[]>([
"no",
"leaveTypeName",
"dateSendLeave",
"status",
]);
const columns = ref<QTableProps["columns"]>([ const columns = ref<QTableProps["columns"]>([
{ {
name: "no", name: "no",
@ -226,20 +145,20 @@ export const useLeaveStore = defineStore("Leave", () => {
style: "font-size: 14px; width:5%;", style: "font-size: 14px; width:5%;",
}, },
{ {
name: "type", name: "leaveTypeName",
align: "left", align: "left",
label: "ประเภทการลา", label: "ประเภทการลา",
sortable: true, sortable: true,
field: "type", field: "leaveTypeName",
headerStyle: "font-size: 14px", headerStyle: "font-size: 14px",
style: "font-size: 14px; width:15%;", style: "font-size: 14px; width:15%;",
}, },
{ {
name: "date", name: "dateSendLeave",
align: "left", align: "left",
label: "วันที่ยื่นใบลา", label: "วันที่ยื่นใบลา",
sortable: true, sortable: true,
field: "date", field: "dateSendLeave",
headerStyle: "font-size: 14px", headerStyle: "font-size: 14px",
style: "font-size: 14px; width:15%;", style: "font-size: 14px; width:15%;",
}, },
@ -302,24 +221,20 @@ export const useLeaveStore = defineStore("Leave", () => {
typeOptions, typeOptions,
optionsSpecific, optionsSpecific,
statusOptions, statusOptions,
DataMain,
DataMainUpdate,
DataUpdate,
DataMainOrig,
visibleColumns, visibleColumns,
columns, columns,
rows, rows,
LeaveType, LeaveType,
LeaveStatus, LeaveStatus,
fecthList,
fiscalyearOP,
fiscalYearyear, fiscalYearyear,
options, options,
optionsOrdination, optionsOrdination,
typeConvert, typeConvert,
typeLeave, typeLeave,
fetchListLeave,
fetchLeaveType, fetchLeaveType,
filterOption, filterOption,
}; };