ฟิลเตอร์ วินัย/การลา

This commit is contained in:
STW_TTTY\stwtt 2024-07-10 15:11:22 +07:00
parent f48b559686
commit fba93a9fc7
10 changed files with 289 additions and 45 deletions

View file

@ -131,8 +131,17 @@ function calculateMaxDate() {
<q-item>
<q-item-section class="text-grey"> ไมอม </q-item-section>
</q-item>
</template></q-select
>
</template>
<template v-if="filetStatus !== 'ALL'" v-slot:append>
<q-icon
name="cancel"
@click.stop.prevent="
(option = optionMain), (filetStatus = 'ALL'), filterFn()
"
class="cursor-pointer"
/>
</template>
</q-select>
</div>
<q-space />
<div class="col-xs-12 col-sm-3 col-md-2">

View file

@ -209,8 +209,17 @@ onMounted(async () => {
<q-item>
<q-item-section class="text-grey"> ไมอม </q-item-section>
</q-item>
</template></q-select
>
</template>
<template v-if="leaveStore.filter.type !== '00000000-0000-0000-0000-000000000000'" v-slot:append>
<q-icon
name="cancel"
@click.stop.prevent="
(optionType = optionTypeMain), (leaveStore.filter.type = '00000000-0000-0000-0000-000000000000'), filterListLeave()
"
class="cursor-pointer"
/>
</template>
</q-select>
</div>
<div class="col-xs-12 col-sm-3 col-md-2">
<q-select
@ -235,7 +244,17 @@ onMounted(async () => {
<q-item>
<q-item-section class="text-grey"> ไมอม </q-item-section>
</q-item>
</template></q-select
</template>
<template v-if="leaveStore.filter.status !== 'ALL'" v-slot:append>
<q-icon
name="cancel"
@click.stop.prevent="
(optionStatus = optionStatusMain), (leaveStore.filter.status = 'ALL'), filterListLeave()
"
class="cursor-pointer"
/>
</template>
</q-select
>
</div>
<q-space />

View file

@ -19,7 +19,7 @@ import { useSpecialTimeStore } from "@/modules/09_leave/stores/SpecialTimeStore"
const SpecialTimeStore = useSpecialTimeStore();
const mixin = useCounterMixin();
const { dialogConfirm, showLoader, success, messageError, hideLoader } = mixin;
const option = ref<any[]>(SpecialTimeStore.optionStatus);
const $q = useQuasar();
/** props*/
@ -159,6 +159,20 @@ watch(
}
}
);
/**
* function นหาขอมลใน option
* @param val คำคนหา
* @param update function
*/
function filterOptionFn(val: string, update: Function) {
update(() => {
option.value = SpecialTimeStore.optionStatus.filter(
(e: any) => e.name.search(val) !== -1
);
});
}
</script>
<template>
@ -252,12 +266,20 @@ watch(
full-width
dense
v-model="formData.checkInStatus"
:options="SpecialTimeStore.optionStatus"
:options="option"
option-value="id"
option-label="name"
label="สถานะ"
use-input
@filter="filterOptionFn"
>
<template v-slot:no-option>
<q-item>
<q-item-section class="text-grey">
ไมอม
</q-item-section>
</q-item>
</template>
</q-select>
</div>
</div>

View file

@ -375,6 +375,25 @@ onMounted(() => {
getActive();
});
const optionOrganization = ref<any[]>(complainstStore.organizationIdOp);
function filterOptionFnOrganization(val: string, update: Function) {
update(() => {
optionOrganization.value = complainstStore.organizationIdOp.filter(
(e: any) => e.name.search(val) !== -1
);
});
}
const optionAgency = ref<any[]>(complainstStore.consideredAgencytoptions);
function filterOptionFnAgency(val: string, update: Function) {
update(() => {
optionAgency.value = complainstStore.consideredAgencytoptions.filter(
(e: any) => e.name.search(val) !== -1
);
});
}
</script>
<template>
@ -453,13 +472,23 @@ onMounted(() => {
option-value="id"
map-options
v-model="organization"
:options="complainstStore.organizationIdOp"
:options="optionOrganization"
label="หน่วยงานที่ถูกร้องเรียน"
:rules="[
(val) => !!val || `${'กรุณาเลือกหน่วยงานที่ถูกร้องเรียน'}`,
]"
@update:model-value="changeFormData()"
/>
use-input
@filter="filterOptionFnOrganization"
>
<template v-slot:no-option>
<q-item>
<q-item-section class="text-grey">
ไมอม
</q-item-section>
</q-item>
</template>
</q-select>
</div>
<div class="col-xs-12 col-sm-8" id="consideredAgency">
@ -470,7 +499,7 @@ onMounted(() => {
dense
outlined
v-model="consideredAgency"
:options="complainstStore.consideredAgencytoptions"
:options="optionAgency"
label="หน่วยงานที่พิจารณา"
option-value="id"
option-label="name"
@ -478,12 +507,17 @@ onMounted(() => {
hide-bottom-space
map-options
:rules="[(val) => !!val || `${'กรุณาเลือกหน่วยงาน'}`]"
use-input
@filter="(inputValue: any,
doneFn: Function) => filterSelector(inputValue, doneFn, 'filterconsideredAgencytoptions'
)"
@update:model-value="changeFormData()"
use-input
@filter="filterOptionFnAgency"
>
<template v-slot:no-option>
<q-item>
<q-item-section class="text-grey">
ไมอม
</q-item-section>
</q-item>
</template>
</q-select>
</div>
@ -577,10 +611,18 @@ onMounted(() => {
v-else-if="col.name === 'positionLevel'"
class="table_ellipsis"
>
{{ props.row.positionLevel ? props.row.positionLevel:'-' }}
{{
props.row.positionLevel
? props.row.positionLevel
: "-"
}}
</div>
<div v-else-if="col.name === 'salary'">
{{ props.row.salary ? props.row.salary.toLocaleString():'-' }}
{{
props.row.salary
? props.row.salary.toLocaleString()
: "-"
}}
</div>
<div v-else>
{{ col.value }}

View file

@ -30,7 +30,7 @@ const page = ref<number>(1);
const rowsPerPage = ref<number>(10);
const toptitle = ref<number>(0);
const statusFilter = ref<string>("NEW");
const option = ref<any[]>(complainstStore.statusOptions);
async function updatePagingProp(rowPerpage: number, pageCurrent: number) {
rowsPerPage.value = rowPerpage;
page.value = pageCurrent;
@ -80,6 +80,20 @@ function resetFilter() {
}
}
/**
* function นหาขอมลใน option
* @param val คำคนหา
* @param update function
*/
function filterOptionFn(val: string, update: Function) {
statusFilter.value = "";
update(() => {
option.value = complainstStore.statusOptions.filter(
(e: any) => e.name.search(val) !== -1
);
});
}
/** เรียกใช้งาน ฟังชั่น ตอนเริ่มโหลดหน้า */
onMounted(async () => {
await getList();
@ -102,13 +116,20 @@ onMounted(async () => {
map-options
option-label="name"
option-value="id"
:options="complainstStore.statusOptions"
:options="option"
@update:model-value="getList()"
use-input
@filter="filterOptionFn"
>
<template v-slot:no-option>
<q-item>
<q-item-section class="text-grey"> ไมอม </q-item-section>
</q-item>
</template>
<template v-if="statusFilter !== 'ALL'" v-slot:append>
<q-icon
name="cancel"
@click.stop.prevent="(statusFilter = 'ALL'), getList()"
@click.stop.prevent="(option = complainstStore.statusOptions),(statusFilter = 'ALL'), getList()"
class="cursor-pointer"
/>
</template>

View file

@ -12,7 +12,7 @@ import { useInvestigateFactStore } from "@/modules/11_discipline/store/Investiga
const dataInvestigate = useInvestigateFactStore();
const mixin = useCounterMixin();
const { messageError, showLoader, hideLoader } = mixin;
const option = ref<any[]>(dataInvestigate.statusOptions);
const $q = useQuasar(); // noti quasar
/** ค้นหาข้อมูลในตาราง */
@ -99,6 +99,20 @@ function filterFn() {
getList();
}
/**
* function นหาขอมลใน option
* @param val คำคนหา
* @param update function
*/
function filterOptionFn(val: string, update: Function) {
statusFilter.value = "";
update(() => {
option.value = dataInvestigate.statusOptions.filter(
(e: any) => e.name.search(val) !== -1
);
});
}
/**
* งขอมลจำลองไปย store
*/
@ -122,16 +136,25 @@ onMounted(async () => {
map-options
option-label="name"
option-value="id"
:options="dataInvestigate.statusOptions"
:options="option"
@update:model-value="getList()"
use-input
@filter="filterOptionFn"
>
<template v-slot:no-option>
<q-item>
<q-item-section class="text-grey"> ไมอม </q-item-section>
</q-item>
</template>
<template v-if="statusFilter !== 'ALL'" v-slot:append>
<q-icon
name="cancel"
@click.stop.prevent="(statusFilter = 'ALL'), getList()"
@click.stop.prevent="(option = dataInvestigate.statusOptions),(statusFilter = 'ALL'), getList()"
class="cursor-pointer"
/> </template
></q-select>
>
</q-select
>
</div>
<q-space />

View file

@ -40,7 +40,7 @@ import type { OptionData } from "@/modules/07_insignia/interface/index/Main";
const modalPersonal = ref<boolean>(false);
const personId = ref<string>("");
const isSaveInfo = defineModel<boolean>('isSaveInfo')
const isSaveInfo = defineModel<boolean>("isSaveInfo");
const calendarModal = ref<boolean>(false);
const calendarModalclose = () => (calendarModal.value = !calendarModal.value);
const modalPopup = ref<boolean>(false);
@ -211,7 +211,7 @@ function onSubmit() {
emit("submit:disciplinary", formData);
isSave.value = false;
isSaveInfo.value = false
isSaveInfo.value = false;
extendStatus.value = false;
});
}
@ -233,7 +233,7 @@ async function fetchDatadetail() {
if (countNum.value === 1) {
isReadonly.value = props.data.status != "NEW" ?? true;
isSave.value = false;
isSaveInfo.value = false
isSaveInfo.value = false;
formData.respondentType = props.data.respondentType;
formData.organizationId = props.data.organizationId;
formData.organization = props.data.organization;
@ -525,7 +525,7 @@ async function selectComplainant(val: string) {
/** ฟังก์ชั่นเช็คการแก้ไขฟอร์มแล้วไม่ได้กดบันทึก */
function changeFormData() {
isSave.value = true;
isSaveInfo.value = true
isSaveInfo.value = true;
if (formData.disciplinaryFaultLevel !== "อื่นๆ") {
formData.disciplinaryFaultLevelOther = "";
}
@ -539,7 +539,7 @@ function changeFormData() {
/** เช็ควันที่สิ้นสุดต้องมากกว่า หรือเท่ากับวันเริ่ม */
function changeFormDataDate() {
isSave.value = true;
isSaveInfo.value = true
isSaveInfo.value = true;
const startDate = new Date(formData.disciplinaryDateStart as Date);
const endDate = new Date(formData.disciplinaryDateEnd as Date);
@ -678,6 +678,21 @@ function deletePerson(id: string) {
mainStore.rowsAdd = updatedRows;
}
const option = ref<any[]>(mainStore.statusResultOptions);
/**
* function นหาขอมลใน option
* @param val คำคนหา
* @param update function
*/
function filterOptionFn(val: string, update: Function) {
update(() => {
option.value = mainStore.statusResultOptions.filter(
(e: any) => e.name.search(val) !== -1
);
});
}
/** Hook */
onMounted(async () => {
mainStore.rowsAdd = [];
@ -1468,7 +1483,7 @@ onMounted(async () => {
{{ props.rowIndex + 1 }}
</div>
<div v-else class="table_ellipsis2">
{{ col.value?col.value:'-' }}
{{ col.value ? col.value : "-" }}
</div>
</q-td>
<q-td class="text-right">
@ -1675,7 +1690,7 @@ onMounted(async () => {
:readonly="isReadonly"
ref="disciplinaryStatusResultRef"
v-model="formData.disciplinaryStatusResult"
:options="mainStore.statusResultOptions"
:options="option"
label="ผลการสอบสวน"
emit-value
hide-bottom-space
@ -1683,9 +1698,7 @@ onMounted(async () => {
option-label="name"
option-value="id"
use-input
@filter="(inputValue: any,
doneFn: Function) => investigateDis.filterFnOptionsType(inputValue, doneFn, 'offenseDetailsOps'
)"
@filter="filterOptionFn"
@update:model-value="changeFormData()"
><template v-slot:no-option>
<q-item>

View file

@ -10,7 +10,7 @@ const attrs = ref<any>(useAttrs());
const paging = ref<boolean>(true);
const currentPage = ref<number>(1);
const statusFilter = ref<string>("NEW");
const option = ref<any[]>(dataInvestigateDis.statusOptions);
/** รับ props มาจากหน้าหลัก */
const props = defineProps({
count: Number,
@ -128,6 +128,20 @@ function dataUpdate() {
function filterFn() {
props.fetchListDisciplinary?.();
}
/**
* function นหาขอมลใน option
* @param val คำคนหา
* @param update function
*/
function filterOptionFn(val: string, update: Function) {
statusFilter.value = "";
update(() => {
option.value = dataInvestigateDis.statusOptions.filter(
(e: any) => e.name.search(val) !== -1
);
});
}
</script>
<template>
@ -142,16 +156,24 @@ function filterFn() {
map-options
option-label="name"
option-value="id"
:options="dataInvestigateDis.statusOptions"
:options="option"
@update:model-value="dataUpdate"
use-input
@filter="filterOptionFn"
>
<template v-slot:no-option>
<q-item>
<q-item-section class="text-grey"> ไมอม </q-item-section>
</q-item>
</template>
<template v-if="statusFilter !== 'ALL'" v-slot:append>
<q-icon
name="cancel"
@click.stop.prevent="(statusFilter = 'ALL'), dataUpdate()"
@click.stop.prevent="(option = dataInvestigateDis.statusOptions),(statusFilter = 'ALL'), dataUpdate()"
class="cursor-pointer"
/>
</template>
</q-select>
</div>
<q-space />

View file

@ -8,6 +8,9 @@ const filterRef = ref<any>(null);
const attrs = ref<any>(useAttrs());
const paging = ref<boolean>(true);
const statusFilter = ref<string>("DONE");
const option = ref<any[]>(store.statusOptions);
/** รับ props มาจากหน้าหลัก */
const props = defineProps({
count: Number,
@ -110,6 +113,20 @@ function updateInput(value: string | number | null) {
function filterFn() {
props.fetchListResult?.();
}
/**
* function นหาขอมลใน option
* @param val คำคนหา
* @param update function
*/
function filterOptionFn(val: string, update: Function) {
statusFilter.value = "";
update(() => {
option.value = store.statusOptions.filter(
(e: any) => e.name.search(val) !== -1
);
});
}
</script>
<template>
@ -125,13 +142,20 @@ function filterFn() {
map-options
option-label="name"
option-value="id"
:options="store.statusOptions"
:options="option"
@update:model-value="dataUpdate"
use-input
@filter="filterOptionFn"
>
<template v-slot:no-option>
<q-item>
<q-item-section class="text-grey"> ไมอม </q-item-section>
</q-item>
</template>
<template v-if="statusFilter !== 'ALL'" v-slot:append>
<q-icon
name="cancel"
@click.stop.prevent="(statusFilter = 'ALL'), dataUpdate()"
@click.stop.prevent="(option = store.statusOptions),(statusFilter = 'ALL'), dataUpdate()"
class="cursor-pointer"
/>
</template>

View file

@ -265,6 +265,31 @@ function resetFilter() {
filterKeyword.value = "";
getData();
}
const option = ref<any[]>(dataStore.statusOptions);
const optionType = ref<any[]>(type.value);
/**
* function นหาขอมลใน option
* @param val คำคนหา
* @param update function
*/
function filterOptionFn(val: string, update: Function) {
update(() => {
option.value = dataStore.statusOptions.filter(
(e: any) => e.name.search(val) !== -1
);
});
}
/**
* function นหาขอมลใน option
* @param val คำคนหา
* @param update function
*/
function filterOptionFnType(val: string, update: Function) {
update(() => {
optionType.value = type.value.filter((e: any) => e.name.search(val) !== -1);
});
}
/** เรียกใช้งาน ฟังชั่น ตอนเริ่มโหลดหน้า */
onMounted(async () => {
@ -390,16 +415,27 @@ onMounted(async () => {
map-options
option-label="name"
option-value="id"
:options="type"
:options="optionType"
@update:model-value="dataUpdate"
use-input
@filter="filterOptionFnType"
>
<template v-if="formData.type !== 'ALL'" v-slot:append>
<q-icon
name="cancel"
@click.stop.prevent="(formData.type = 'ALL'), dataUpdate()"
@click.stop.prevent="
(optionType = type),((formData.type = 'ALL')), dataUpdate()
"
class="cursor-pointer"
/>
</template>
<template v-slot:no-option>
<q-item>
<q-item-section class="text-grey">
ไมอม
</q-item-section>
</q-item>
</template>
</q-select>
</div>
<div class="col-3">
@ -412,17 +448,30 @@ onMounted(async () => {
map-options
option-label="name"
option-value="id"
:options="dataStore.statusOptions"
:options="option"
@update:model-value="dataUpdate"
class="select_ellipsis2"
use-input
@filter="filterOptionFn"
>
<template v-if="formData.status !== 'ALL'" v-slot:append>
<q-icon
name="cancel"
@click.stop.prevent="(formData.status = 'ALL'), dataUpdate()"
@click.stop.prevent="
(option = dataStore.statusOptions),
(formData.status = 'ALL'),
dataUpdate()
"
class="cursor-pointer"
/> </template
></q-select>
/>
</template>
<template v-slot:no-option>
<q-item>
<q-item-section class="text-grey">
ไมอม
</q-item-section>
</q-item>
</template>
</q-select>
</div>
</div>
</q-card>