From 5825f72e26a024ce724e16b2547025636911274e Mon Sep 17 00:00:00 2001 From: "DESKTOP-1R2VSQH\\Lenovo ThinkPad E490" Date: Wed, 8 Oct 2025 16:59:13 +0700 Subject: [PATCH] fix(complaints):sort --- .../components/1_Complaint/MainPage.vue | 271 +++++++++--------- .../components/1_Complaint/TableComplaint.vue | 60 +--- .../components/DialogSearchAdvanced.vue | 23 +- 3 files changed, 167 insertions(+), 187 deletions(-) diff --git a/src/modules/11_discipline/components/1_Complaint/MainPage.vue b/src/modules/11_discipline/components/1_Complaint/MainPage.vue index c7fab72c0..cda75e312 100644 --- a/src/modules/11_discipline/components/1_Complaint/MainPage.vue +++ b/src/modules/11_discipline/components/1_Complaint/MainPage.vue @@ -11,6 +11,7 @@ import { checkPermission } from "@/utils/permissions"; import { useCounterMixin } from "@/stores/mixin"; import { useComplainstDataStore } from "@/modules/11_discipline/store/ComplaintsStore"; import { useDisciplineMainStore } from "@/modules/11_discipline/store/Main"; +import { usePagination } from "@/composables/usePagination"; import type { DataOption } from "@/modules/11_discipline/interface/index/Main"; @@ -25,51 +26,51 @@ const mixin = useCounterMixin(); const complainstStore = useComplainstDataStore(); const { fetchComplainst } = complainstStore; const { showLoader, messageError, hideLoader, convertDateToAPI } = mixin; +const { pagination, params, onRequest } = usePagination("", getList); -const filterRef = ref(null); -const filterTable = ref(""); const filterKeyword = ref(""); - -const toptitle = ref(0); const statusFilter = ref("NEW"); const option = ref(complainstStore.statusOptions); -const total = ref(0); -const totalList = ref(1); -const pagination = ref({ - sortBy: "createdAt", - descending: true, - page: 1, - rowsPerPage: 10, -}); - /** ดึงข้อมูล เรื่องร้องเรียน */ -async function getList(page?: number) { +async function getList() { const body = { - page: page ? page : pagination.value.page, - pageSize: pagination.value.rowsPerPage, + ...params.value, keyword: filterKeyword.value.trim(), status: statusFilter.value, - ...(store.formComplaint.dateReceived?.[0] && { dateReceivedStart: convertDateToAPI(store.formComplaint.dateReceived[0])}), - ...(store.formComplaint.dateReceived?.[1] && { dateReceivedEnd: convertDateToAPI(store.formComplaint.dateReceived[1])}), - ...(store.formComplaint.respondentType && { respondentType: store.formComplaint.respondentType}), - ...(store.formComplaint.offenseDetails && { offenseDetails: store.formComplaint.offenseDetails}), - ...(store.formComplaint.levelConsideration && { levelConsideration: store.formComplaint.levelConsideration}), - ...(store.formComplaint.dateConsideration?.[0] && { dateConsiderationStart: convertDateToAPI( store.formComplaint.dateConsideration[0])}), - ...(store.formComplaint.dateConsideration?.[1] && { dateConsiderationEnd: convertDateToAPI( store.formComplaint.dateConsideration[1])}), + ...(store.formComplaint.dateReceived?.[0] && { + dateReceivedStart: convertDateToAPI(store.formComplaint.dateReceived[0]), + }), + ...(store.formComplaint.dateReceived?.[1] && { + dateReceivedEnd: convertDateToAPI(store.formComplaint.dateReceived[1]), + }), + ...(store.formComplaint.respondentType && { + respondentType: store.formComplaint.respondentType, + }), + ...(store.formComplaint.offenseDetails && { + offenseDetails: store.formComplaint.offenseDetails, + }), + ...(store.formComplaint.levelConsideration && { + levelConsideration: store.formComplaint.levelConsideration, + }), + ...(store.formComplaint.dateConsideration?.[0] && { + dateConsiderationStart: convertDateToAPI( + store.formComplaint.dateConsideration[0] + ), + }), + ...(store.formComplaint.dateConsideration?.[1] && { + dateConsiderationEnd: convertDateToAPI( + store.formComplaint.dateConsideration[1] + ), + }), }; showLoader(); await http .post(config.API.complaintList(), body) - // .then(async (res) => { - totalList.value = Math.ceil( - res.data.result.total / pagination.value.rowsPerPage - ); - total.value = res.data.result.total; - toptitle.value = res.data.result.total; - const data = res.data.result.data; - await fetchComplainst(data); + const result = res.data.result; + pagination.value.rowsNumber = result.total; + await fetchComplainst(result.data); }) .catch((e) => { messageError($q, e); @@ -102,13 +103,6 @@ function getSearch() { getList(); } -watch( - () => pagination.value.rowsPerPage, - async () => { - getSearch(); - } -); - /** เรียกใช้งาน ฟังชั่น ตอนเริ่มโหลดหน้า */ onMounted(async () => { await getList(); @@ -119,99 +113,120 @@ onMounted(async () => {
รายการเรื่องร้องเรียน
- -
- - - - + +
+
+
+
+
+
+ + + + +
-
- เพิ่มเรื่องร้องเรียน +
+ เพิ่มเรื่องร้องเรียน +
+
+
+ +
+ +
+
+
+ +
+
+ + + +
+ +
+ +
+
+
+
- - - - - - -
- -
- +
+ +
diff --git a/src/modules/11_discipline/components/1_Complaint/TableComplaint.vue b/src/modules/11_discipline/components/1_Complaint/TableComplaint.vue index ff67a7b59..a0bccc8fd 100644 --- a/src/modules/11_discipline/components/1_Complaint/TableComplaint.vue +++ b/src/modules/11_discipline/components/1_Complaint/TableComplaint.vue @@ -1,28 +1,24 @@ diff --git a/src/modules/11_discipline/components/DialogSearchAdvanced.vue b/src/modules/11_discipline/components/DialogSearchAdvanced.vue index 760575f16..73ab9ab3f 100644 --- a/src/modules/11_discipline/components/DialogSearchAdvanced.vue +++ b/src/modules/11_discipline/components/DialogSearchAdvanced.vue @@ -75,18 +75,17 @@ watchEffect(() => { });