รายการผังบัญชีเงินเดือน => fix bug

This commit is contained in:
DESKTOP-1R2VSQH\Lenovo ThinkPad E490 2024-07-10 14:02:55 +07:00
parent 66e2ff2f77
commit ace4e47c94
2 changed files with 108 additions and 16 deletions

View file

@ -1,7 +1,6 @@
<script setup lang="ts"> <script setup lang="ts">
import { computed, ref, reactive, watch } from "vue"; import { computed, ref, reactive, watch } from "vue";
import { useQuasar } from "quasar"; import { useQuasar } from "quasar";
import axios from "axios";
import http from "@/plugins/http"; import http from "@/plugins/http";
import config from "@/app.config"; import config from "@/app.config";
@ -59,7 +58,9 @@ const formData = reactive<FormData>({
}); });
const posType = ref<SalaryPosType[]>([]); const posType = ref<SalaryPosType[]>([]);
const salaryPosTypeOptionMain = ref<DataOption[]>([]);
const salaryPosTypeOption = ref<DataOption[]>([]); const salaryPosTypeOption = ref<DataOption[]>([]);
const salaryPosLevelOptionMain = ref<DataOption[]>([]);
const salaryPosLevelOption = ref<DataOption[]>([]); const salaryPosLevelOption = ref<DataOption[]>([]);
const title = computed(() => { const title = computed(() => {
@ -73,7 +74,9 @@ const title = computed(() => {
return name; return name;
}); });
/** fiunction fetch ข้อมูลประเภทตำแหน่ง*/ /**
* fiunction fetch อมลประเภทตำแหน
*/
function fetchPosType() { function fetchPosType() {
http http
.get(config.API.salaryPosType) .get(config.API.salaryPosType)
@ -83,6 +86,7 @@ function fetchPosType() {
id: e.id, id: e.id,
name: e.posTypeName, name: e.posTypeName,
})); }));
salaryPosTypeOptionMain.value = listOption;
salaryPosTypeOption.value = listOption; salaryPosTypeOption.value = listOption;
}) })
.catch((err) => { .catch((err) => {
@ -90,7 +94,9 @@ function fetchPosType() {
}); });
} }
/** fiunction fetch ข้อมูลระดับตำแหน่ง*/ /**
* fiunction fetch อมลระดบตำแหน
*/
function fetchPosLevel(id: string) { function fetchPosLevel(id: string) {
const filterLevel = posType.value.find((e: SalaryPosType) => e.id === id); const filterLevel = posType.value.find((e: SalaryPosType) => e.id === id);
const listOption = const listOption =
@ -99,6 +105,7 @@ function fetchPosLevel(id: string) {
name: e.posLevelName, name: e.posLevelName,
})) || []; })) || [];
salaryPosLevelOptionMain.value = listOption;
salaryPosLevelOption.value = listOption; salaryPosLevelOption.value = listOption;
if (!listOption.some((e: DataOption) => e.id === formData.posLevelId)) { if (!listOption.some((e: DataOption) => e.id === formData.posLevelId)) {
formData.posLevelId = ""; formData.posLevelId = "";
@ -134,14 +141,15 @@ function fetchSalaryDetail(id: string) {
}); });
} }
/** callbackFunction ทำการ fetch ข้อมูลไฟล์เมื่อเปิด Dialog*/ /**
* callbackFunction ทำการ fetch อมลไฟลเมอเป Dialog
*/
watch( watch(
() => modal.value, () => modal.value,
() => { () => {
if (modal.value) { if (modal.value) {
if (salaryPosTypeOption.value.length === 0) { fetchPosType();
fetchPosType();
}
if (props.typeAction === "edit") { if (props.typeAction === "edit") {
setTimeout(() => { setTimeout(() => {
if (props.data) { if (props.data) {
@ -155,13 +163,17 @@ watch(
} }
); );
/** function ปืด Dialog*/ /**
* function Dialog
*/
function closeDialog() { function closeDialog() {
modal.value = !modal.value; modal.value = !modal.value;
clearFormData(); clearFormData();
} }
/** function เคลียข้อมูล form*/ /**
* function เคลยขอม form
*/
function clearFormData() { function clearFormData() {
formData.name = ""; formData.name = "";
formData.posTypeId = ""; formData.posTypeId = "";
@ -175,7 +187,9 @@ function clearFormData() {
isReadonly.value = false; isReadonly.value = false;
} }
/** function บัยทึกข้อมูลผังบัญชีเงินเดือน*/ /**
* function ยทกขอมลผงบญชเงนเดอน
*/
function onSubmit() { function onSubmit() {
dialogConfirm($q, async () => { dialogConfirm($q, async () => {
showLoader(); showLoader();
@ -196,7 +210,9 @@ function onSubmit() {
}); });
} }
/** function checkEndDate*/ /**
* function checkEndDate
*/
function checkEndDate() { function checkEndDate() {
if (formData.endDate !== null && formData.startDate !== null) { if (formData.endDate !== null && formData.startDate !== null) {
if (formData.endDate < formData.startDate) { if (formData.endDate < formData.startDate) {
@ -204,6 +220,47 @@ function checkEndDate() {
} }
} }
} }
/**
* function นหาคำใน select
* @param val คำคนหา
* @param update function
* @param type ประเภท select
*/
function filterSelector(val: string, update: Function, type: string) {
switch (type) {
case "posType":
update(() => {
formData.posTypeId = "";
salaryPosTypeOption.value = salaryPosTypeOptionMain.value.filter(
(v: DataOption) => v.name.toLowerCase().indexOf(val) > -1
);
});
break;
case "posLevel":
update(() => {
formData.posLevelId = "";
salaryPosLevelOption.value = salaryPosLevelOptionMain.value.filter(
(v: DataOption) => v.name.toLowerCase().indexOf(val) > -1
);
});
break;
default:
break;
}
}
/**
* class ดรปแบบแสดงระหวางขอมลทแกไขหรอแสดงเฉยๆ
* @param val อม input สำหรบแกไขหรอไม
*/
const getClass = (val: boolean) => {
return {
"full-width inputgreen cursor-pointer": val,
"full-width cursor-pointer": !val,
};
};
</script> </script>
<template> <template>
@ -219,6 +276,7 @@ function checkEndDate() {
<div class="col-xs-12 col-md-4"> <div class="col-xs-12 col-md-4">
<q-input <q-input
:readonly="isReadonly" :readonly="isReadonly"
:class="getClass(!isReadonly)"
ref="nameRef" ref="nameRef"
dense dense
hide-bottom-space hide-bottom-space
@ -235,6 +293,7 @@ function checkEndDate() {
<div class="col-xs-12 col-md-4"> <div class="col-xs-12 col-md-4">
<q-select <q-select
:readonly="isReadonly" :readonly="isReadonly"
:class="getClass(!isReadonly)"
ref="posTypeRef" ref="posTypeRef"
dense dense
hide-bottom-space hide-bottom-space
@ -248,13 +307,25 @@ function checkEndDate() {
label="ประเภทตำแหน่ง/กลุ่ม" label="ประเภทตำแหน่ง/กลุ่ม"
:rules="[(val) => !!val || 'กรุณาเลือกประเภทตำแหน่ง/กลุ่ม']" :rules="[(val) => !!val || 'กรุณาเลือกประเภทตำแหน่ง/กลุ่ม']"
lazy-rules lazy-rules
use-input
@update:model-value="fetchPosLevel" @update:model-value="fetchPosLevel"
/> @filter="(inputValue: string,
doneFn: Function) => filterSelector(inputValue, doneFn ,'posType')"
>
<template v-slot:no-option>
<q-item>
<q-item-section class="text-grey">
ไมอม
</q-item-section>
</q-item>
</template>
</q-select>
</div> </div>
<div class="col-xs-12 col-md-4"> <div class="col-xs-12 col-md-4">
<q-select <q-select
:readonly="isReadonly" :readonly="isReadonly"
:class="getClass(!isReadonly)"
ref="posLevelRef" ref="posLevelRef"
dense dense
hide-bottom-space hide-bottom-space
@ -268,8 +339,19 @@ function checkEndDate() {
label="ระดับ" label="ระดับ"
:rules="[(val) => !!val || 'กรุณาเลือกระดับ']" :rules="[(val) => !!val || 'กรุณาเลือกระดับ']"
lazy-rules lazy-rules
use-input
:disable="formData.posTypeId === ''" :disable="formData.posTypeId === ''"
/> @filter="(inputValue: string,
doneFn: Function) => filterSelector(inputValue, doneFn ,'posLevel')"
>
<template v-slot:no-option>
<q-item>
<q-item-section class="text-grey">
ไมอม
</q-item-section>
</q-item>
</template></q-select
>
</div> </div>
<div class="row col-12"> <div class="row col-12">
@ -298,6 +380,7 @@ function checkEndDate() {
:enableTimePicker="false" :enableTimePicker="false"
week-start="0" week-start="0"
:readonly="isReadonly" :readonly="isReadonly"
:class="getClass(!isReadonly)"
> >
<template #year="{ year }"> <template #year="{ year }">
{{ year + 543 }} {{ year + 543 }}
@ -334,6 +417,7 @@ function checkEndDate() {
<div class="col-xs-12 col-md-4"> <div class="col-xs-12 col-md-4">
<datepicker <datepicker
:readonly="isReadonly" :readonly="isReadonly"
:class="getClass(!isReadonly)"
menu-class-name="modalfix" menu-class-name="modalfix"
v-model="formData.startDate" v-model="formData.startDate"
:locale="'th'" :locale="'th'"
@ -378,6 +462,7 @@ function checkEndDate() {
<div class="col-xs-12 col-md-4"> <div class="col-xs-12 col-md-4">
<datepicker <datepicker
:readonly="isReadonly" :readonly="isReadonly"
:class="getClass(!isReadonly)"
menu-class-name="modalfix" menu-class-name="modalfix"
v-model="formData.endDate" v-model="formData.endDate"
:locale="'th'" :locale="'th'"
@ -420,6 +505,7 @@ function checkEndDate() {
<div class="col-12"> <div class="col-12">
<q-input <q-input
:class="getClass(!isReadonly)"
:readonly="isReadonly" :readonly="isReadonly"
v-model="formData.details" v-model="formData.details"
outlined outlined

View file

@ -122,7 +122,9 @@ const isActive = ref<boolean>(false);
const typeAction = ref<string>(""); const typeAction = ref<string>("");
const dataRow = ref<Salary>(); const dataRow = ref<Salary>();
/** function fetch ข้อมูลรายการผังบัญชีเงินเดือน */ /**
* function fetch อมลรายการผงบญชเงนเดอน
*/
function fetchListSalaly() { function fetchListSalaly() {
showLoader(); showLoader();
const page = formQuery.page.toString(); const page = formQuery.page.toString();
@ -219,7 +221,9 @@ function onClickUpload(type: string, id: string, active: boolean) {
isActive.value = active; isActive.value = active;
} }
/** callbackFunction ทำงานเมื่อมีการ เปลี่ยนหน่าหรือ แถว*/ /**
* callbackFunction ทำงานเมอมการ เปลยนหนาหร แถว
*/
watch([() => formQuery.page, () => formQuery.pageSize], () => { watch([() => formQuery.page, () => formQuery.pageSize], () => {
fetchListSalaly(); fetchListSalaly();
}); });
@ -233,7 +237,9 @@ function updatePagination(newPagination: NewPagination) {
formQuery.pageSize = newPagination.rowsPerPage; formQuery.pageSize = newPagination.rowsPerPage;
} }
/** function ค้นหาข้อมูลตาม keyword*/ /**
* function นหาขอมลตาม keyword
*/
function filterFn(page: number) { function filterFn(page: number) {
page !== 1 ? (formQuery.page = 1) : fetchListSalaly(); page !== 1 ? (formQuery.page = 1) : fetchListSalaly();
} }