From 7877f26ac613740d1b40058ef08b58a52b3bcd63 Mon Sep 17 00:00:00 2001 From: "DESKTOP-1R2VSQH\\Lenovo ThinkPad E490" Date: Wed, 1 Oct 2025 15:20:45 +0700 Subject: [PATCH 01/19] fix:add function calculateFiscalYear --- src/components/information/Train.vue | 6 ++++-- .../Indicators/indicatorByRole/DetailView.vue | 3 ++- src/modules/01_masterdata/views/Assignment.vue | 3 ++- src/modules/01_masterdata/views/indicatorByPlan.vue | 3 ++- src/modules/01_masterdata/views/indicatorByRole.vue | 3 ++- src/modules/03_recruiting/interface/index/Main.ts | 2 +- .../03_recruiting/views/01_compete/CompeteReport.vue | 5 +++-- .../03_recruiting/views/01_compete/ImportData.vue | 2 +- src/modules/03_recruiting/views/01_compete/Period.vue | 3 ++- .../03_recruiting/views/01_compete/PeriodAdd.vue | 3 ++- .../03_recruiting/views/02_qualify/DisablePeriod.vue | 3 ++- .../views/02_qualify/DisablePeriodAdd.vue | 3 ++- .../03_recruiting/views/02_qualify/PeriodAdd.vue | 3 ++- .../04_registryPerson/components/TableView.vue | 3 ++- .../detail/Achievement/05_ResultsPerformance.vue | 5 +++-- .../05_placement/components/probation/MainSurvey.vue | 3 ++- src/modules/05_placement/views/09_reportMain.vue | 5 +++-- src/modules/06_retirement/views/07_report.vue | 5 +++-- .../components/07_LeaveHistory/DialogForm.vue | 5 +++-- src/modules/09_leave/stores/LeaveStore.ts | 3 ++- src/modules/09_leave/views/06_ReportMain.vue | 5 +++-- src/modules/09_leave/views/07_LeaveHistoryMain.vue | 3 ++- .../11_discipline/components/4_Result/Form.vue | 8 +++----- .../components/8_AppealComplain/Form.vue | 3 ++- .../components/8_AppealComplain/MainPage.vue | 3 ++- src/modules/12_evaluatePersonal/views/MainPage.vue | 3 ++- src/modules/13_salary/views/03_salaryRound.vue | 3 ++- src/modules/13_salary/views/04_salaryLists.vue | 3 ++- .../13_salary/views/05_salaryListsEmployee.vue | 3 ++- .../14_KPI/components/Tab/Dialog/DialogEvalute.vue | 5 +++-- .../14_KPI/components/results/tableIndividual.vue | 3 ++- .../14_KPI/components/results/tableResults.vue | 3 ++- src/modules/14_KPI/views/01_kpiRound.vue | 3 ++- src/modules/14_KPI/views/02_kpiLists.vue | 3 ++- src/modules/14_KPI/views/report.vue | 5 +++-- src/modules/15_development/components/BasicInfo.vue | 9 +++++---- src/modules/15_development/store/developmentStore.ts | 6 ++++-- src/modules/15_development/views/EmployeeHistory.vue | 5 +++-- src/modules/15_development/views/History.vue | 3 ++- src/modules/15_development/views/MainPage.vue | 3 ++- src/modules/15_development/views/Scholarship.vue | 3 ++- src/modules/18_command/views/lists.vue | 3 ++- src/modules/21_report/views/03_reportDevelopment.vue | 8 +++++--- src/modules/21_report/views/04_reportEvaluate.vue | 5 +++-- src/modules/21_report/views/05_reportSalary.vue | 9 ++++++--- src/router/index.ts | 7 +++++++ src/utils/function.ts | 11 +++++++++++ 47 files changed, 131 insertions(+), 68 deletions(-) diff --git a/src/components/information/Train.vue b/src/components/information/Train.vue index cf6661128..d8b98f615 100644 --- a/src/components/information/Train.vue +++ b/src/components/information/Train.vue @@ -394,6 +394,7 @@ + + diff --git a/src/modules/13_salary/components/04_salaryLists/TabMain.vue b/src/modules/13_salary/components/04_salaryLists/TabMain.vue index 9db593cd9..ac12d597f 100644 --- a/src/modules/13_salary/components/04_salaryLists/TabMain.vue +++ b/src/modules/13_salary/components/04_salaryLists/TabMain.vue @@ -5,10 +5,10 @@ import { useQuasar } from "quasar"; import http from "@/plugins/http"; import config from "@/app.config"; import genReportXLSX from "@/plugins/genreportxlsx"; +import { usePagination } from "@/composables/usePagination"; /** importType*/ import type { DataOption } from "@/modules/13_salary/interface/index/Main"; -import type { DataFilter } from "@/modules/13_salary/interface/index/SalaryList"; import type { DataPeriodLatest, DataPeriod, @@ -27,6 +27,10 @@ import { useSalaryListSDataStore } from "@/modules/13_salary/store/SalaryListsSt const $q = useQuasar(); const store = useSalaryListSDataStore(); const { messageError, showLoader, hideLoader } = useCounterMixin(); +const { pagination, params, onRequest, checkAndUpdatePage } = usePagination( + "", + () => fetchDataPeriod(store.groupId, true) +); /** props*/ const props = defineProps({ @@ -44,6 +48,8 @@ const rows = ref([]); const modalDialogInfoCriteria = ref(false); // ตัวแปรสำหรับแสดง Dialog แสดงหลักเกณฑ์การพิจารณาเลื่อนขั้นเงินข้าราชการ const isRetire = ref(false); // ตัวแปรสำหรับแสดงเฉพาะผู้เกษียณอายุราชการ +const keyword = ref(""); + /** itemsTab กลุ่ม*/ const itemsTabGroup = ref([ { @@ -210,15 +216,6 @@ const itemsCard = ref([ }, ]); -/** ข้อมูลค้นหารายชื่อคนขึ้นเงินเดือน*/ -const formFilter = reactive({ - page: 1, - pageSize: 10, - keyword: "", - type: store.tabType, -}); -const maxPage = ref(1); // จำนวนหน้าสูงสุด - /** * ฟังก์ชันเรียกข้อมูลโควต้า * @param id กลุ่ม @@ -255,11 +252,11 @@ async function fetchDataQuota(id: string) { * ฟังก์ชันเรียกข้อมูลรายชื่อเลื่อนเงินเดือนข้าราชการฯ * @param id กลุ่ม */ -async function fetchDataPeriod(id: string) { +async function fetchDataPeriod(id: string, force: boolean = false) { + force && showLoader(); let formData = { - page: formFilter.page.toString(), - pageSize: formFilter.pageSize.toString(), - keyword: formFilter.keyword.trim(), + ...params.value, + keyword: keyword.value.trim(), type: store.tabType, isRetire: store.roundMainCode !== "OCT" @@ -268,17 +265,20 @@ async function fetchDataPeriod(id: string) { ? "1" : "0", }; - rows.value = []; - await http .put(config.API.salaryListPeriodORG(id), formData) .then((res) => { - rows.value = res.data.result.data; - total.value = res.data.result.total; - maxPage.value = Math.ceil(res.data.result.total / formFilter.pageSize); + const result = res.data.result; + pagination.value.rowsNumber = result.total; + rows.value = result.data; + total.value = result.total; }) .catch((err) => { messageError($q, err); + rows.value = []; + }) + .finally(() => { + force && hideLoader(); }); } @@ -287,9 +287,9 @@ async function changeTabGroup() { showLoader(); try { await Promise.all([ - (formFilter.page = 1), - (formFilter.pageSize = 10), - (formFilter.keyword = ""), + (pagination.value.page = 1), + (pagination.value.rowsPerPage = 10), + (keyword.value = ""), (store.tabType = "PENDING"), props.periodLatest && store.fetchPeriodLatest(props?.periodLatest, store.tabGroup), @@ -309,9 +309,9 @@ async function changeTabType() { if (!store.groupId) return; showLoader(); try { - formFilter.page = 1; - formFilter.pageSize = 10; - formFilter.keyword = ""; + pagination.value.page = 1; + pagination.value.rowsPerPage = 10; + keyword.value = ""; store.groupId && (await fetchDataPeriod(store.groupId)); } catch (error) { messageError($q, error); @@ -671,24 +671,26 @@ onMounted(async () => { diff --git a/src/modules/13_salary/components/04_salaryLists/TableTypeOther.vue b/src/modules/13_salary/components/04_salaryLists/TableTypeOther.vue index 2827baa1c..2de930508 100644 --- a/src/modules/13_salary/components/04_salaryLists/TableTypeOther.vue +++ b/src/modules/13_salary/components/04_salaryLists/TableTypeOther.vue @@ -1,15 +1,14 @@