ค้นหา keyword

This commit is contained in:
DESKTOP-1R2VSQH\Lenovo ThinkPad E490 2023-11-24 18:12:56 +07:00
parent e7b0bbc284
commit 4bcc414a4f
6 changed files with 81 additions and 33 deletions

View file

@ -59,6 +59,7 @@ const checkstatusBox = ref<boolean>(false)
/** function checkValidate*/ /** function checkValidate*/
function onCkickSave() { function onCkickSave() {
props.closePopup?.()
const hasError = [] const hasError = []
for (const key in objectRef) { for (const key in objectRef) {
if (Object.prototype.hasOwnProperty.call(objectRef, key)) { if (Object.prototype.hasOwnProperty.call(objectRef, key)) {
@ -99,13 +100,12 @@ async function createListTime(data: FormTimeStemp) {
await http await http
.post(config.API.createTimeStamp(), data) .post(config.API.createTimeStamp(), data)
.then(() => { .then(() => {
success($q, 'บันทึกข้อมูลำเร็จ') success($q, 'บันทึกข้อมูลำเร็จ')
}) })
.catch((err) => { .catch((err) => {
console.log(err) console.log(err)
}) })
.finally(() => { .finally(() => {
props.fetcthDataTable?.()
props.closePopup?.() props.closePopup?.()
}) })
} }

View file

@ -21,10 +21,6 @@ const props = defineProps({
type: Object, type: Object,
default: null, default: null,
}, },
fetcthDataTable: {
type: Function,
require: true,
},
}) })
const data = ref<any>() const data = ref<any>()
@ -43,11 +39,7 @@ watch(
<q-dialog v-model="props.modal"> <q-dialog v-model="props.modal">
<q-card class="column" style="width: 300px; min-height: 600px"> <q-card class="column" style="width: 300px; min-height: 600px">
<HeaderPopup :title="props.title" :clickClose="clickClosePopup" /> <HeaderPopup :title="props.title" :clickClose="clickClosePopup" />
<FormTime <FormTime :dataById="data" :closePopup="clickClosePopup" />
:dataById="data"
:closePopup="clickClosePopup"
:fetcthDataTable="props.fetcthDataTable"
/>
</q-card> </q-card>
</q-dialog> </q-dialog>
</template> </template>

View file

@ -77,6 +77,8 @@ const props = defineProps({
}, },
}) })
const keyword = ref<string>()
const emit = defineEmits(['update:change-page']) const emit = defineEmits(['update:change-page'])
// Pagination - initial pagination // Pagination - initial pagination
@ -96,7 +98,8 @@ watch(
'update:change-page', 'update:change-page',
currentPage.value, currentPage.value,
initialPagination.value.rowsPerPage, initialPagination.value.rowsPerPage,
true true,
keyword.value
) )
} }
) )
@ -107,6 +110,16 @@ async function updatePagination(newPagination: any) {
currentPage.value = 1 // set current page 1 per row currentPage.value = 1 // set current page 1 per row
} }
async function filterFn() {
emit(
'update:change-page',
1,
initialPagination.value.rowsPerPage,
true,
keyword.value
)
}
/** column history table */ /** column history table */
const columns = ref<QTableProps['columns']>([ const columns = ref<QTableProps['columns']>([
{ {
@ -173,6 +186,15 @@ const columns = ref<QTableProps['columns']>([
style: 'font-size: 14px; width:15%;', style: 'font-size: 14px; width:15%;',
}, },
]) ])
const visibleColumns = ref<string[]>([
'checkInDate',
'checkInTime',
'checkInLocation',
'checkInStatus',
'checkOutTime',
'checkOutLocation',
'checkOutStatus',
])
// popup // popup
const modalPopup = ref<boolean>(false) const modalPopup = ref<boolean>(false)
const titlePopup = ref<string>('') const titlePopup = ref<string>('')
@ -214,12 +236,47 @@ const checkRequestEdit = (checkInStatus: string, checkOutStatus: string) => {
</script> </script>
<template> <template>
<div class="row col-12 q-col-gutter-sm q-mb-sm">
<q-space />
<div class="col-xs-12 col-sm-3 col-md-2">
<q-input
for="filterTable"
dense
outlined
v-model="keyword"
label="ค้นหา"
debounce="300"
@keydown.enter.prevent="filterFn"
>
<template v-slot:append>
<q-icon name="search" />
</template>
</q-input>
</div>
<div class="col-xs-12 col-sm-3 col-md-2">
<q-select
for="visibleColumns"
v-model="visibleColumns"
multiple
outlined
dense
options-dense
:display-value="$q.lang.table.columns"
emit-value
map-options
:options="columns"
option-value="name"
options-cover
/>
</div>
</div>
<q-table <q-table
flat flat
bordered bordered
class="custom-table2" class="custom-table2"
:columns="columns" :columns="columns"
:rows="stores.rows" :rows="stores.rows"
:visible-columns="visibleColumns"
virtual-scroll virtual-scroll
v-model:selected="selected" v-model:selected="selected"
:virtual-scroll-sticky-size-start="48" :virtual-scroll-sticky-size-start="48"
@ -271,12 +328,12 @@ const checkRequestEdit = (checkInStatus: string, checkOutStatus: string) => {
color="cyan-6" color="cyan-6"
@click="openPopup(props.row)" @click="openPopup(props.row)"
/> />
<q-chip <!-- <q-chip
v-else v-else
:color="`${stores.classColorStatus(props.row.statusEdit)}-1`" :color="`${stores.classColorStatus(props.row.statusEdit)}-1`"
:text-color="`${stores.classColorStatus(props.row.statusEdit)}-7`" :text-color="`${stores.classColorStatus(props.row.statusEdit)}-7`"
>{{ props.row.statusEdit }}</q-chip >{{ props.row.statusEdit }}</q-chip
> > -->
</q-td> </q-td>
</q-tr> </q-tr>
</template> </template>

View file

@ -27,6 +27,7 @@ function onClickopen() {
} }
function onClickClose() { function onClickClose() {
modalPopup.value = false modalPopup.value = false
props.fetchData?.()
} }
</script> </script>
<template> <template>
@ -79,12 +80,7 @@ function onClickClose() {
</div> </div>
</div> </div>
<Popup <Popup :modal="modalPopup" :title="titleName" :clickClose="onClickClose" />
:modal="modalPopup"
:title="titleName"
:clickClose="onClickClose"
:fetcthDataTable="props.fetchData"
/>
</template> </template>
<style scoped></style> <style scoped></style>

View file

@ -52,21 +52,21 @@ export const useChekIn = defineStore('checkin', () => {
// return 'อนุมัติ' // return 'อนุมัติ'
// } // }
// } // }
// function classColorStatus(val: string) { function classColorStatus(val: string) {
// switch (val) { switch (val) {
// case 'wait': case 'wait':
// return 'orange' return 'orange'
// case 'approve': case 'approve':
// return 'green' return 'green'
// case 'reject': case 'reject':
// return 'red' return 'red'
// } }
// } }
return { return {
rows, rows,
fetchHistoryList, fetchHistoryList,
// classColorStatus, classColorStatus,
// fetchlistHistory, // fetchlistHistory,
} }
}) })

View file

@ -34,10 +34,12 @@ const filter = ref<string>('') //search data table
async function changePage( async function changePage(
pageVal: number, pageVal: number,
pageSizeVal: number, pageSizeVal: number,
loading: false loading: false,
key: string
) { ) {
page.value = await pageVal page.value = await pageVal
pageSize.value = await pageSizeVal pageSize.value = await pageSizeVal
filter.value = await key
fetchlistHistory(loading) fetchlistHistory(loading)
} }
@ -56,6 +58,7 @@ async function fetchlistHistory(loading = true) {
const data = res.data.result.data const data = res.data.result.data
total.value = res.data.result.total total.value = res.data.result.total
maxPage.value = await Math.ceil(total.value / pageSize.value) maxPage.value = await Math.ceil(total.value / pageSize.value)
fetchHistoryList(data) // total fetchHistoryList(data) // total
}) })
.catch((err) => { .catch((err) => {
@ -77,7 +80,7 @@ async function updateYear(y: number) {
/** Hook*/ /** Hook*/
onMounted(() => { onMounted(() => {
fetchlistHistory() fetchlistHistory(true)
}) })
</script> </script>
<template> <template>