diff --git a/src/modules/09_leave/components/2_Leave/Tab1.vue b/src/modules/09_leave/components/2_Leave/Tab1.vue index f9828461e..d48562785 100644 --- a/src/modules/09_leave/components/2_Leave/Tab1.vue +++ b/src/modules/09_leave/components/2_Leave/Tab1.vue @@ -23,16 +23,17 @@ const leaveStore = useLeavelistDataStore(); const dataToobar = ref([]); const { showLoader, hideLoader, messageError } = mixin; +const total = ref(0); +const totalList = ref(1); + const querySting = reactive({ year: leaveStore.filter.year, //*ปีในการยื่นขอใบลา(ใช้เป็น คศ.) type: leaveStore.filter.type, //*Id ประเภทการลา status: leaveStore.filter.status, //*สถานะการของลา - page: 1, //*หน้า - pageSize: 10, //*จำนวนแถวต่อหน้า + page: 1, //*สถานะการของลา + pageSize: 10, //*สถานะการของลา keyword: leaveStore.filter.keyword, //keyword ค้นหา }); -const maxPage = ref(1); -const totalList = ref(0); //** เรียกข้อมูลจาก API*/ async function fecthLeaveList() { @@ -50,8 +51,10 @@ async function fecthLeaveList() { .post(config.API.leaveList(), querySting) .then((res) => { const data = res.data.result; - maxPage.value = Math.ceil(data.total / querySting.pageSize); - totalList.value = data.total; + totalList.value = Math.ceil( + res.data.result.total / querySting.pageSize + ); + total.value = res.data.result.total; leaveStore.fetchListLeave(data.data); /** ส่งข้อมูลไป stores*/ }) .catch((err) => { @@ -63,27 +66,6 @@ async function fecthLeaveList() { } } -/** - * - * @param newPage หน้า - * @param pageSize จำนวนต่อแถว - * @param dateFilter ข้อมูลค้นหา - */ -async function updatePaging( - newPage: number, - pageSize: number, - dateFilter: DateFilter -) { - querySting.year = dateFilter ? dateFilter.year : querySting.year; - querySting.type = dateFilter ? dateFilter.type : querySting.type; - querySting.status = dateFilter ? dateFilter.status : querySting.status; - querySting.page = newPage; - querySting.pageSize = pageSize ? pageSize : querySting.pageSize; - querySting.keyword = dateFilter ? dateFilter.keyword : querySting.keyword; - - await fecthLeaveList(); -} - /** function เรียกข้อมูลสถานะ*/ async function fetchOption() { await http @@ -97,6 +79,18 @@ async function fetchOption() { .finally(() => {}); } +function getSearch() { + querySting.page = 1; + fecthLeaveList(); +} + +watch( + () => querySting.pageSize, + async () => { + getSearch(); + } +); + watch( () => leaveStore.tabView, async () => { @@ -150,18 +144,13 @@ onMounted(async () => {
- +
diff --git a/src/modules/09_leave/components/2_Leave/Tab2.vue b/src/modules/09_leave/components/2_Leave/Tab2.vue index 4dd82387d..b1c4cf4b1 100644 --- a/src/modules/09_leave/components/2_Leave/Tab2.vue +++ b/src/modules/09_leave/components/2_Leave/Tab2.vue @@ -1,5 +1,5 @@ diff --git a/src/modules/09_leave/components/2_Leave/TableList.vue b/src/modules/09_leave/components/2_Leave/TableList.vue index 82a2b8d72..491d3a1c9 100644 --- a/src/modules/09_leave/components/2_Leave/TableList.vue +++ b/src/modules/09_leave/components/2_Leave/TableList.vue @@ -9,6 +9,10 @@ import { useLeavelistDataStore } from "@/modules/09_leave/stores/LeaveStore"; const leaveStore = useLeavelistDataStore(); const router = useRouter(); +const total = defineModel("total", { required: true }); +const totalList = defineModel("totalList", { required: true }); +const pagination = defineModel("pagination", { required: true }); + /** ข้อมูลหัวตาราง รายการลา */ const columnsLeave = ref([ { @@ -180,6 +184,7 @@ const visibleReject = ref([ ]); const props = defineProps({ + getList: Function, rows: { type: Object, require: true, @@ -203,29 +208,15 @@ const props = defineProps({ dataToobar: Object, }); -const emit = defineEmits(["update:querySting"]); - -const currentPage = ref(1); -const pagination = ref({ - descending: true, - page: props.page, - rowsPerPage: props.rowsPerPage, -}); - -function updateQuerySting(newPage: number, pageSize: number) { - // ส่ง event ไปยัง parent component เพื่ออัพเดทค่า props - emit("update:querySting", newPage, pageSize); -} - /** ไปหน้ารายละเอียด */ function redirectToDetail(id: string) { const routePrefix = leaveStore.tabMenu === "1" ? "/leave" : "/leave-reject"; router.push(`${routePrefix}/detail/${id}`); } -function updatedPagination(newPageZize: any) { - currentPage.value = 1; - pagination.value.rowsPerPage = newPageZize.rowsPerPage; +function updatePagination(newPagination: any) { + pagination.value.page = 1; + pagination.value.pageSize = newPagination.rowsPerPage; } /** @@ -246,12 +237,6 @@ function convert(val: any) { } } -watch([() => currentPage.value, () => pagination.value.rowsPerPage], () => { - currentPage.value && - pagination.value.rowsPerPage && - updateQuerySting(currentPage.value, pagination.value.rowsPerPage); -}); - /** Hook*/ onMounted(() => { if (leaveStore.tabMenu === "1") { @@ -275,10 +260,9 @@ onMounted(() => { :paging="true" dense class="custom-header-table" - :rows-per-page-options="[10, 25, 50, 100]" :visible-columns="leaveStore.visibleColumns" - :pagination="pagination" - @update:pagination="updatedPagination" + :rows-per-page-options="[1, 25, 50, 100]" + @update:pagination="updatePagination" > diff --git a/src/modules/09_leave/components/2_Leave/ToolBarLeave.vue b/src/modules/09_leave/components/2_Leave/ToolBarLeave.vue index 76837f251..fba64067e 100644 --- a/src/modules/09_leave/components/2_Leave/ToolBarLeave.vue +++ b/src/modules/09_leave/components/2_Leave/ToolBarLeave.vue @@ -2,44 +2,26 @@ import { ref, watch } from "vue"; import { useQuasar } from "quasar"; -import type { DateFilter } from "@/modules/09_leave/interface/request/leave"; +import type { + DateFilter, + QuerySting, +} from "@/modules/09_leave/interface/request/leave"; import type { DataOption } from "@/modules/09_leave/interface/index/Main"; /** importStores*/ import { useLeavelistDataStore } from "@/modules/09_leave/stores/LeaveStore"; +const querySting = defineModel("querySting", { required: true }); + const $q = useQuasar(); const leaveStore = useLeavelistDataStore(); const props = defineProps({ - rowsPerPage: { - type: Number, - require: true, - }, dataToobar: Array, + getSearch: Function, + getList: Function, }); -const emit = defineEmits(["update:querySting"]); - -/** - * function update ข้อมูลการค้นหา (QuerySting) - * @param newPage หน้า - * @param pageSize ข้อมูลต่อแถว - * @param dateFilter ข้อมูล Filter - */ -function updateQuerySting( - newPage: number, - pageSize: number, - dateFilter: DateFilter -) { - // ส่ง event ไปยัง parent component เพื่ออัพเดทค่า props - emit("update:querySting", newPage, pageSize, dateFilter); -} - -/** function ค้นหาข้อมูลใน Table*/ -async function filterListLeave() { - updateQuerySting(1, 0, leaveStore.filter); -} /** Option*/ const optionTypeMain = ref([]); @@ -137,13 +119,13 @@ watch(