diff --git a/src/modules/09_leave/components/2_Leave/DetailLeave.vue b/src/modules/09_leave/components/2_Leave/DetailLeave.vue index 3131c66b8..776b08ebb 100644 --- a/src/modules/09_leave/components/2_Leave/DetailLeave.vue +++ b/src/modules/09_leave/components/2_Leave/DetailLeave.vue @@ -30,7 +30,7 @@ function saveData() { class="q-mr-sm" @click="router.push(`/leave-list`)" /> - รายละเอียดการลาของ {{ paramsId }} + รายละเอียดการลาของ นายปิยรมย์ ศิริธาราฟ
{ v-for="col in props.cols" :key="col.name" :props="props" - @click.prevent="router.push(`/leave/detail/${props.row.name}`)" + @click.prevent="router.push(`/leave/detail/${props.row.id}`)" >
{{ props.rowIndex + 1 }} diff --git a/src/modules/09_leave/components/2_Leave/ToolBar.vue b/src/modules/09_leave/components/2_Leave/ToolBar.vue index 31d4aca07..908f188ef 100644 --- a/src/modules/09_leave/components/2_Leave/ToolBar.vue +++ b/src/modules/09_leave/components/2_Leave/ToolBar.vue @@ -53,7 +53,6 @@ const { searchDataFn, filterOption } = leaveStore;
- - - + \ No newline at end of file diff --git a/src/modules/09_leave/interface/request/leave.ts b/src/modules/09_leave/interface/request/leave.ts new file mode 100644 index 000000000..674688ccc --- /dev/null +++ b/src/modules/09_leave/interface/request/leave.ts @@ -0,0 +1,10 @@ +interface ListsData { + id: string; + leaveType: string + name: string + Date: string + status: string +} +export type { + ListsData +} \ No newline at end of file diff --git a/src/modules/09_leave/interface/request/specialTime.ts b/src/modules/09_leave/interface/request/specialTime.ts new file mode 100644 index 000000000..ad40e5737 --- /dev/null +++ b/src/modules/09_leave/interface/request/specialTime.ts @@ -0,0 +1,12 @@ +interface ListData { + id: string; + fullname: string | null; + date: string | null; + dateFix: string | null; + startTimeMorning: string | null; + endTimeMorning: string | null; + startTimeAfternoon: string | null; + endTimeAfternoon: string | null; + status: string; +} +export type { ListData }; diff --git a/src/modules/09_leave/interface/response/specialTime.ts b/src/modules/09_leave/interface/response/specialTime.ts index 318a5ed5d..fa2d52ffe 100644 --- a/src/modules/09_leave/interface/response/specialTime.ts +++ b/src/modules/09_leave/interface/response/specialTime.ts @@ -1,11 +1,10 @@ interface DataRows { + id: string; fullname: string | null; date: string | null; dateFix: string | null; - type: string; - reason: string; - timeStamp: string; - unapprove?: string; // Make these properties optional - approve?: string; + timeMorning: string; + timeAfternoon: string; + status: string; } export type { DataRows }; diff --git a/src/modules/09_leave/stores/LeaveStore.ts b/src/modules/09_leave/stores/LeaveStore.ts index f3e30f5c3..fcc7a0c30 100644 --- a/src/modules/09_leave/stores/LeaveStore.ts +++ b/src/modules/09_leave/stores/LeaveStore.ts @@ -5,12 +5,12 @@ import { useCounterMixin } from "@/stores/mixin"; import type { DataOption } from "@/modules/09_leave/interface/index/Main"; import type { QTableProps } from "quasar"; import type { DataRows } from "@/modules/09_leave/interface/response/leave"; +import type { ListsData } from "@/modules/09_leave/interface/request/leave"; const mixin = useCounterMixin(); const { date2Thai, showLoader, hideLoader } = mixin; export const useLeavelistDataStore = defineStore("leave", () => { //TABMENU - const tab = ref("1"); const amounttab1 = ref(0); const amounttab2 = ref(0); //ข้อมูลในตาราง @@ -19,20 +19,19 @@ export const useLeavelistDataStore = defineStore("leave", () => { const columns = ref([]); const visibleColumns = ref([]); const loadTable = ref(false); - async function fetchList(data: DataRows[]) { - let datalist = data.map((e: DataRows) => ({ + async function fetchList(data: ListsData[]) { + let datalist = data.map((e: ListsData) => ({ + id: e.id, leaveType: e.leaveType, name: e.name, - Date: e.Date, + Date: date2Thai(e.Date), status: convertSatatus(e.status), })); - tab.value !== "1" - ? (mainData.value = datalist) - : (mainData.value = datalist.filter( - (e) => e.status === "อยู่ระหว่างกำเนินการ" - )); + mainData.value = datalist.filter( + (e) => e.status === "อยู่ระหว่างดำเนินการ" + ); const filteramounttab1 = datalist.filter( - (e) => e.status === "อยู่ระหว่างกำเนินการ" + (e) => e.status === "อยู่ระหว่างดำเนินการ" ); amounttab1.value = filteramounttab1.length; amounttab2.value = datalist.length; @@ -162,16 +161,17 @@ export const useLeavelistDataStore = defineStore("leave", () => { // convertSatatus function convertSatatus(val: string) { switch (val) { - case "1": + case "NEW": return "ใหม่"; - case "2": - return "อยู่ระหว่างกำเนินการ"; - case "3": + case "PENDING": + return "อยู่ระหว่างดำเนินการ"; + case "APPROVE": return "อนุมัติ"; + case "REJECT": + return "ไม่อนุมัติ"; } } return { - tab, amounttab1, amounttab2, //ข้อมูลในตาราง diff --git a/src/modules/09_leave/stores/SpecialTimeStore.ts b/src/modules/09_leave/stores/SpecialTimeStore.ts index 44ba20513..fa33244b1 100644 --- a/src/modules/09_leave/stores/SpecialTimeStore.ts +++ b/src/modules/09_leave/stores/SpecialTimeStore.ts @@ -2,6 +2,7 @@ import { defineStore } from "pinia"; import { ref } from "vue"; import type { QTableProps } from "quasar"; import type { DataRows } from "@/modules/09_leave/interface/response/specialTime"; +import type { ListData } from "@/modules/09_leave/interface/request/specialTime"; import { useCounterMixin } from "@/stores/mixin"; const mixin = useCounterMixin(); const { date2Thai } = mixin; @@ -11,14 +12,21 @@ export const useSpecialTimeStore = defineStore("LeaveSpecialTime", () => { const selectDate = ref(new Date()); const fiscalYear = ref("0"); const DataMainOrig = ref([]); // ข้อมูลหลักดั้งเดิม - async function fecthList(data: DataRows[]) { - let datalist: DataRows[] = data.map((e: any) => ({ + async function fecthList(data: ListData[]) { + let datalist: DataRows[] = data.map((e: ListData) => ({ + id: e.id, fullname: e.fullname, date: date2Thai(new Date(e.date)), - dateFix: date2Thai(new Date(e.dateFix)) + (e.timeStamp || ""), - type: e.type, - reason: e.reason, - timeStamp: e.timeStamp, + dateFix: date2Thai(new Date(e.dateFix)), + timeMorning: + e.startTimeMorning == null + ? "-" + : e.startTimeMorning + " - " + e.endTimeMorning, + timeAfternoon: + e.startTimeAfternoon == null + ? "-" + : e.startTimeAfternoon + " - " + e.endTimeAfternoon, + status: e.status, })); rows.value = datalist; DataMainOrig.value = datalist; @@ -77,8 +85,8 @@ export const useSpecialTimeStore = defineStore("LeaveSpecialTime", () => { "fullname", "date", "dateFix", - "type", - "reason", + "timeMorning", + "timeAfternoon", ]); const columns = ref([ @@ -108,8 +116,6 @@ export const useSpecialTimeStore = defineStore("LeaveSpecialTime", () => { field: "date", headerStyle: "font-size: 14px", style: "font-size: 14px", - sort: (a: string, b: string) => - a.localeCompare(b, undefined, { numeric: true, sensitivity: "base" }), }, { name: "dateFix", @@ -119,32 +125,27 @@ export const useSpecialTimeStore = defineStore("LeaveSpecialTime", () => { field: "dateFix", headerStyle: "font-size: 14px", style: "font-size: 14px", - sort: (a: string, b: string) => - a.localeCompare(b, undefined, { numeric: true, sensitivity: "base" }), }, { - name: "type", + name: "timeMorning", align: "left", - label: "ประเภท", + label: "ช่วงเช้า", sortable: true, - field: "type", + field: "timeMorning", headerStyle: "font-size: 14px", style: "font-size: 14px", - sort: (a: string, b: string) => - a.localeCompare(b, undefined, { numeric: true, sensitivity: "base" }), }, { - name: "reason", + name: "timeAfternoon", align: "left", - label: "เหตุผล", + label: "ช่วงบ่าย", sortable: true, - field: "reason", + field: "timeAfternoon", headerStyle: "font-size: 14px", style: "font-size: 14px", - sort: (a: string, b: string) => - a.localeCompare(b, undefined, { numeric: true, sensitivity: "base" }), }, ]); + return { fecthList, rows, diff --git a/src/modules/09_leave/views/LeaveListMain.vue b/src/modules/09_leave/views/LeaveListMain.vue index 4d2a76929..da8303374 100644 --- a/src/modules/09_leave/views/LeaveListMain.vue +++ b/src/modules/09_leave/views/LeaveListMain.vue @@ -15,30 +15,34 @@ onMounted(() => { }); // เรียกข้อมูลจาก API function fecthLeaveList() { - const data: DataRows = [ + const data = [ { + id: "00000000-0000-0000-0000-000000000000", leaveType: "ลาป่วย", name: "นายกัณฐิมา กาฬสินธ์ุ", - Date: "", - status: "1", + Date: "2023-11-03", + status: "NEW", }, { + id: "00000000-0000-0000-0000-000000000000", leaveType: "ลากิจส่วนตัว", name: "นายนครชัย วันดี", - Date: "", - status: "3", + Date: "2023-11-01", + status: "APPROVE", }, { + id: "00000000-0000-0000-0000-000000000000", leaveType: "ลากิจส่วนตัว", name: "นายกัณฐิมา กาฬสินธ์ุ", - Date: "", - status: "2", + Date: "2023-11-02", + status: "PENDING", }, { + id: "00000000-0000-0000-0000-000000000000", leaveType: "ลาป่วย", name: "นายปิยรมย์ ศิริธาราฟ", - Date: "", - status: "2", + Date: "2023-11-01", + status: "PENDING", }, ]; fetchList(data); // ส่งข้อมูลไป stores @@ -52,65 +56,9 @@ function changTab() { - - diff --git a/src/modules/09_leave/views/SpecialTimeMain.vue b/src/modules/09_leave/views/SpecialTimeMain.vue index ab3072451..1dd3d8bdc 100644 --- a/src/modules/09_leave/views/SpecialTimeMain.vue +++ b/src/modules/09_leave/views/SpecialTimeMain.vue @@ -3,7 +3,6 @@ import { onMounted, ref, useAttrs } from "vue"; import { useQuasar } from "quasar"; import { useCounterMixin } from "@/stores/mixin"; import type { Pagination } from "@/modules/03_recruiting/interface/index/Main"; -import Table from "@/modules/09_leave/components/4_specialTime/Table.vue"; import { useSpecialTimeStore } from "@/modules/09_leave/stores/SpecialTimeStore"; import DialogReason from "@/components/Dialogs/PopupReason.vue"; @@ -14,11 +13,6 @@ const $q = useQuasar(); // show dialog const mixin = useCounterMixin(); const router = useRouter(); const { hideLoader, monthYear2Thai } = mixin; -const filter = ref(""); //search data table -const initialPagination = ref({ - rowsPerPage: 0, -}); -const attrs = ref(useAttrs()); const modalUnapprove = ref(false); const pagination = ref({ // sortBy: "desc", @@ -53,38 +47,51 @@ const resetFilter = () => { onMounted(async () => { fecthList([ { + id: "00000000-0000-0000-0000-000000000000", fullname: "นางสาวณัฐกา ชมสิน", - date: "2023-10-30", + date: "2023-11-01 08:54", dateFix: "2023-10-30", - type: "Checkin", - reason: "ลืม", - unapprove: "1", - approve: "0", - timeStamp: " 08:00 น.", + startTimeMorning: "08:00", + endTimeMorning: "12:00", + startTimeAfternoon: "08:00", + endTimeAfternoon: "12:00", + status: "PENDING", }, { + id: "00000000-0000-0000-0000-000000000000", fullname: "นางสาวรัชภรณ์ ภักดี", - date: "2023-10-30", - dateFix: "2023-10-30", - type: "Checkin", - reason: "ลืม", - unapprove: "1", - approve: "0", - timeStamp: " 08:00 น.", + date: "2023-10-30 08:55", + dateFix: "2023-10-29", + startTimeMorning: "08:00", + endTimeMorning: "12:00", + startTimeAfternoon: null, + endTimeAfternoon: null, + status: "APPROVE", }, { + id: "00000000-0000-0000-0000-000000000000", fullname: "นางสาวภาพรรณ ลออ", - date: "2023-10-30", + date: "2023-10-31 18:54", dateFix: "2023-10-30", - type: "Checkin", - reason: "ลืม", - unapprove: "1", - approve: "0", - timeStamp: " 08:00 น.", + startTimeMorning: null, + endTimeMorning: null, + startTimeAfternoon: "13:00", + endTimeAfternoon: "16:30", + status: "REJECT", }, ]); - await hideLoader(); }); + +const selectedDate = ref(""); +const dateMonth = ref({ + month: new Date().getMonth(), + year: new Date().getFullYear(), +}); + +const monthYearThai = (val: any) => { + if (val == null) return ""; + else return monthYear2Thai(val.month, val.year); +};