From 285b821c166bd5c5abd9d985c712ceceffe651ff Mon Sep 17 00:00:00 2001 From: puriphatt Date: Thu, 17 Apr 2025 18:04:12 +0700 Subject: [PATCH] feat: add date range search functionality to personnel management --- .../02_personnel-management/MainPage.vue | 57 +++++++++++++------ src/stores/user/index.ts | 2 + 2 files changed, 42 insertions(+), 17 deletions(-) diff --git a/src/pages/02_personnel-management/MainPage.vue b/src/pages/02_personnel-management/MainPage.vue index b7c152d1..b3ea5058 100644 --- a/src/pages/02_personnel-management/MainPage.vue +++ b/src/pages/02_personnel-management/MainPage.vue @@ -10,7 +10,7 @@ import useOptionStore from 'stores/options'; import useAddressStore from 'stores/address'; import useMyBranch from 'src/stores/my-branch'; import { calculateAge } from 'src/utils/datetime'; -import { QSelect, useQuasar, type QTableProps } from 'quasar'; +import { useQuasar, type QTableProps } from 'quasar'; import { dialog, baseUrl, setPrefixName } from 'stores/utils'; import { useNavigator } from 'src/stores/navigator'; import { isRoleInclude, resetScrollBar } from 'src/stores/utils'; @@ -49,6 +49,7 @@ import FormPerson from 'components/02_personnel-management/FormPerson.vue'; import FormByType from 'components/02_personnel-management/FormByType.vue'; import FormInformation from 'components/02_personnel-management/FormInformation.vue'; import PaginationPageSize from 'src/components/PaginationPageSize.vue'; +import AdvanceSearch from 'src/components/shared/AdvanceSearch.vue'; const { locale, t } = useI18n(); const $q = useQuasar(); @@ -73,7 +74,6 @@ const isImageEdit = ref(false); const imageDialog = ref(false); const infoDrawerEdit = ref(false); const refreshImageState = ref(false); -const refFilter = ref>(); const firstScroll = ref(false); const inputSearch = ref(''); @@ -99,6 +99,8 @@ const userFileList = ref<{ name: string; url: string }[]>([]); const typeStats = ref(); const userStats = ref(); +const searchDate = ref([]); + const urlProfile = ref(); const profileFileImg = ref(null); const imageList = ref<{ selectedImage: string; list: string[] }>(); @@ -672,6 +674,8 @@ async function fetchUserList(mobileFetch?: boolean) { : statusFilter.value === 'statusACTIVE' ? 'ACTIVE' : 'INACTIVE', + startDate: searchDate.value[0], + endDate: searchDate.value[1], }); if (ret) { @@ -761,7 +765,7 @@ watch( }, ); -watch([inputSearch, statusFilter, pageSize], async () => { +watch([inputSearch, statusFilter, pageSize, searchDate], async () => { if (userData.value) userData.value.result = []; currentPage.value = 1; @@ -883,26 +887,45 @@ watch( -
{ status?: Status; responsibleDistrictId?: string; activeBranchOnly?: boolean; + startDate?: string; + endDate?: string; }) { const res = await api.get>('/user', { params: opts });