diff --git a/src/modules/16_positionEmployee/components/DialogFormPosition.vue b/src/modules/16_positionEmployee/components/DialogFormPosition.vue index 8a9608f5f..ecb5f999e 100644 --- a/src/modules/16_positionEmployee/components/DialogFormPosition.vue +++ b/src/modules/16_positionEmployee/components/DialogFormPosition.vue @@ -224,7 +224,7 @@ async function searchInput() { await http .get( config.API.orgEmployeePos + - `?keyword=${search.value}&type=${type.value}` + `?keyword=${search.value.trim()}&type=${type.value}` ) .then((res) => { rowsPositionSelect.value = res.data.result; @@ -556,15 +556,12 @@ watch(
@@ -575,6 +572,7 @@ watch( icon="search" label="ค้นหา" class="full-width q-pa-sm" + outline @click="searchInput()" > diff --git a/src/modules/16_positionEmployee/components/DialogMovePos.vue b/src/modules/16_positionEmployee/components/DialogMovePos.vue index 8fda4b434..6e81ab320 100644 --- a/src/modules/16_positionEmployee/components/DialogMovePos.vue +++ b/src/modules/16_positionEmployee/components/DialogMovePos.vue @@ -41,6 +41,7 @@ const { messageError, dialogMessageNotify, success, + filterTableQuasar, } = useCounterMixin(); /** @@ -79,14 +80,7 @@ const levelTree = ref(0); const filterTable = ref(""); const selectedFilter = ref([]); - -/** - * function รีเช็ด filter - */ -function resetFilter() { - filterTree.value = ""; - filterRef.value.focus(); -} +const dataMain = ref([...rows.value]); /** * function เลือกข้อมูลหน่วยงาน @@ -155,12 +149,22 @@ const pagination = ref({ rowsPerPage: reqMaster.value.pageSize, }); +function onSerachDataTable() { + rows.value = filterTableQuasar( + filterTable.value, + dataMain.value, + columns.value ?? [] + ); +} + watch( () => modal.value, () => { reqMaster.value.page = 1; filterTree.value = ""; pagination.value.rowsPerPage = reqMaster.value.pageSize; + dataMain.value = rows.value; + filterTable.value = ""; title.value = `ย้ายตำแหน่งจากหน่วยงาน/ส่วนราชการปัจจุบัน ${props.mainTree.orgName}`; if (modal.value && props.type === "SINGER") { @@ -200,75 +204,85 @@ watch(
- + + +
+
+ + + + + +
@@ -113,7 +107,7 @@ watch( :nodes="lazy" node-key="orgTreeId" label-key="labelName" - :filter="filter" + :filter="filter.trim()" no-results-label="ไม่พบข้อมูลที่ค้นหา" no-nodes-label="ไม่มีข้อมูล" v-model:expanded="expanded" diff --git a/src/modules/16_positionEmployee/views/main.vue b/src/modules/16_positionEmployee/views/main.vue index 1ec3f4dfa..a8374b0a6 100644 --- a/src/modules/16_positionEmployee/views/main.vue +++ b/src/modules/16_positionEmployee/views/main.vue @@ -20,7 +20,7 @@ import type { FilterMaster } from "@/modules/16_positionEmployee/interface/reque /** importComponents*/ import TreeMain from "@/modules/16_positionEmployee/components/TreeMain.vue"; -import TreeTable from "@/modules/16_positionEmployee/components/TreeTable.vue"; +import TreeTable from "@/modules/16_positionEmployee/components/TableMain.vue"; import LoadView from "@/components/LoadView.vue"; /** use*/ diff --git a/src/stores/mixin.ts b/src/stores/mixin.ts index ac3e9fc1e..dacfec10b 100644 --- a/src/stores/mixin.ts +++ b/src/stores/mixin.ts @@ -1100,6 +1100,26 @@ export const useCounterMixin = defineStore("mixin", () => { .catch((error) => console.error("ดาวน์โหลดไฟล์ไม่สำเร็จ:", error)); } + function filterTableQuasar(keyword: string, data: any[], columns: any[]) { + const searchText = keyword.trim().toLowerCase(); + + if (!searchText) { + return data; // คืนค่าทั้งหมดถ้าไม่มีข้อความค้นหา + } + + // คืนค่าข้อมูลที่กรองแล้ว + return data.filter((row: any) => { + return columns.some((col: any) => { + const rawValue = row[col.field]; + const formattedValue = col.format + ? col.format(rawValue, row) // ใช้ `format` ถ้ามี + : rawValue; + + return String(formattedValue).toLowerCase().includes(searchText); + }); + }); + } + return { calAge, date2Thai, @@ -1143,5 +1163,7 @@ export const useCounterMixin = defineStore("mixin", () => { findPosMasterNoOld, pathRegistryEmp, downloadRenameFileByLink, + + filterTableQuasar, }; });