fix leave Skeleton Load
This commit is contained in:
parent
7cdff8d853
commit
474828c5ee
15 changed files with 282 additions and 260 deletions
|
|
@ -15,8 +15,7 @@ const typeForm = defineModel<string>("type", { required: true });
|
||||||
const $q = useQuasar();
|
const $q = useQuasar();
|
||||||
const dataStore = useLeaveStore();
|
const dataStore = useLeaveStore();
|
||||||
const mixin = useCounterMixin();
|
const mixin = useCounterMixin();
|
||||||
const { date2Thai, messageError, convertDateToAPI, showLoader, hideLoader } =
|
const { date2Thai, messageError, convertDateToAPI } = mixin;
|
||||||
mixin;
|
|
||||||
const edit = ref<boolean>(true);
|
const edit = ref<boolean>(true);
|
||||||
const leaveDocumentRef = ref<any>(null);
|
const leaveDocumentRef = ref<any>(null);
|
||||||
|
|
||||||
|
|
@ -66,6 +65,8 @@ const leaveNumberRef = ref<object | null>(null);
|
||||||
const leaveAddressRef = ref<object | null>(null);
|
const leaveAddressRef = ref<object | null>(null);
|
||||||
const leaveDetailRef = ref<object | null>(null);
|
const leaveDetailRef = ref<object | null>(null);
|
||||||
|
|
||||||
|
const isLoadLeaveDate = ref<boolean>(false);
|
||||||
|
|
||||||
/** maping ref เข้าตัวแปรเพื่อเตรียมตรวจสอบ */
|
/** maping ref เข้าตัวแปรเพื่อเตรียมตรวจสอบ */
|
||||||
const FormRef: FormRef = {
|
const FormRef: FormRef = {
|
||||||
leaveWrote: leaveWroteRef,
|
leaveWrote: leaveWroteRef,
|
||||||
|
|
@ -149,7 +150,7 @@ const checkDate = computed(() => {
|
||||||
// const totalCheck = ref<number | null>(null);
|
// const totalCheck = ref<number | null>(null);
|
||||||
async function fetchCheck() {
|
async function fetchCheck() {
|
||||||
if (formDataSick.leaveStartDate && formDataSick.leaveEndDate) {
|
if (formDataSick.leaveStartDate && formDataSick.leaveEndDate) {
|
||||||
showLoader();
|
isLoadLeaveDate.value = true;
|
||||||
await http
|
await http
|
||||||
.post(config.API.leaveCheck(), {
|
.post(config.API.leaveCheck(), {
|
||||||
type: dataStore.typeId ?? null,
|
type: dataStore.typeId ?? null,
|
||||||
|
|
@ -177,11 +178,10 @@ async function fetchCheck() {
|
||||||
.catch((e: any) => {
|
.catch((e: any) => {
|
||||||
messageError($q, e);
|
messageError($q, e);
|
||||||
// totalCheck.value = null;
|
// totalCheck.value = null;
|
||||||
hideLoader();
|
|
||||||
})
|
})
|
||||||
.finally(() => {
|
.finally(() => {
|
||||||
hideLoader();
|
|
||||||
leaveDocumentRef.value.resetValidation();
|
leaveDocumentRef.value.resetValidation();
|
||||||
|
isLoadLeaveDate.value = false;
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -425,6 +425,7 @@ onMounted(() => {
|
||||||
v-model="formDataSick.leaveTotal"
|
v-model="formDataSick.leaveTotal"
|
||||||
label="จำนวนวันที่ลา (วัน)"
|
label="จำนวนวันที่ลา (วัน)"
|
||||||
readonly
|
readonly
|
||||||
|
:loading="isLoadLeaveDate"
|
||||||
>
|
>
|
||||||
<template v-slot:hint>
|
<template v-slot:hint>
|
||||||
<span style="color: red">
|
<span style="color: red">
|
||||||
|
|
@ -626,8 +627,10 @@ onMounted(() => {
|
||||||
:disable="!isLeave"
|
:disable="!isLeave"
|
||||||
class="q-px-md items-center btnBlue"
|
class="q-px-md items-center btnBlue"
|
||||||
label="บันทึก"
|
label="บันทึก"
|
||||||
><q-tooltip>บันทึกแบบร่าง</q-tooltip></q-btn
|
:loading="isLoadLeaveDate"
|
||||||
>
|
>
|
||||||
|
<q-tooltip>บันทึกแบบร่าง</q-tooltip>
|
||||||
|
</q-btn>
|
||||||
<q-btn
|
<q-btn
|
||||||
v-if="data && statusCheck != 'NEW'"
|
v-if="data && statusCheck != 'NEW'"
|
||||||
id="onSubmit"
|
id="onSubmit"
|
||||||
|
|
@ -637,8 +640,10 @@ onMounted(() => {
|
||||||
color="primary"
|
color="primary"
|
||||||
label="ยื่นใบลา"
|
label="ยื่นใบลา"
|
||||||
@click="onConfirm()"
|
@click="onConfirm()"
|
||||||
><q-tooltip>ยื่นใบลา</q-tooltip></q-btn
|
:loading="isLoadLeaveDate"
|
||||||
>
|
>
|
||||||
|
<q-tooltip>ยื่นใบลา</q-tooltip>
|
||||||
|
</q-btn>
|
||||||
</q-card-actions>
|
</q-card-actions>
|
||||||
</q-form>
|
</q-form>
|
||||||
</template>
|
</template>
|
||||||
|
|
|
||||||
|
|
@ -13,14 +13,7 @@ import type { FormRef } from "@/modules/05_leave/interface/request/BirthForm";
|
||||||
const $q = useQuasar();
|
const $q = useQuasar();
|
||||||
const dataStore = useLeaveStore();
|
const dataStore = useLeaveStore();
|
||||||
const mixin = useCounterMixin();
|
const mixin = useCounterMixin();
|
||||||
const {
|
const { date2Thai, messageError, convertDateToAPI } = mixin;
|
||||||
date2Thai,
|
|
||||||
dateToISO,
|
|
||||||
messageError,
|
|
||||||
convertDateToAPI,
|
|
||||||
showLoader,
|
|
||||||
hideLoader,
|
|
||||||
} = mixin;
|
|
||||||
|
|
||||||
const edit = ref<boolean>(true);
|
const edit = ref<boolean>(true);
|
||||||
const leaveId = ref<string>("");
|
const leaveId = ref<string>("");
|
||||||
|
|
@ -45,6 +38,8 @@ const props = defineProps({
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
|
|
||||||
|
const isLoadCheck = ref<boolean>(false);
|
||||||
|
|
||||||
/** ข้อมูล v-model ของฟอร์ม */
|
/** ข้อมูล v-model ของฟอร์ม */
|
||||||
const formDataBirth = reactive<any>({
|
const formDataBirth = reactive<any>({
|
||||||
type: dataStore.typeId,
|
type: dataStore.typeId,
|
||||||
|
|
@ -145,14 +140,10 @@ const checkDate = computed(() => {
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
/**
|
/** ตรวจสอบวันลา */
|
||||||
* check ว่าลาได้ไหม จาก api
|
|
||||||
* @param formData
|
|
||||||
*/
|
|
||||||
// const totalCheck = ref<number | null>(null);
|
|
||||||
async function fetchCheck() {
|
async function fetchCheck() {
|
||||||
if (formDataBirth.leaveStartDate && formDataBirth.leaveEndDate) {
|
if (formDataBirth.leaveStartDate && formDataBirth.leaveEndDate) {
|
||||||
showLoader();
|
isLoadCheck.value = true;
|
||||||
const checkDate = computed(() => {
|
const checkDate = computed(() => {
|
||||||
if (
|
if (
|
||||||
convertDateToAPI(formDataBirth.leaveEndDate) ==
|
convertDateToAPI(formDataBirth.leaveEndDate) ==
|
||||||
|
|
@ -163,9 +154,7 @@ async function fetchCheck() {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
// console.log("checkDate.value", checkDate.value);
|
|
||||||
// console.log("formDataBirth.leaveRangeEnd", formDataBirth.leaveRangeEnd);
|
|
||||||
// console.log("formDataBirth.leaveRange", formDataBirth.leaveRange);
|
|
||||||
await http
|
await http
|
||||||
.post(config.API.leaveCheck(), {
|
.post(config.API.leaveCheck(), {
|
||||||
type: dataStore.typeId ?? null,
|
type: dataStore.typeId ?? null,
|
||||||
|
|
@ -176,11 +165,9 @@ async function fetchCheck() {
|
||||||
? formDataBirth.leaveRange
|
? formDataBirth.leaveRange
|
||||||
: formDataBirth.leaveRangeEnd,
|
: formDataBirth.leaveRangeEnd,
|
||||||
})
|
})
|
||||||
.then((res: any) => {
|
.then((res) => {
|
||||||
hideLoader();
|
|
||||||
const data = res.data.result;
|
const data = res.data.result;
|
||||||
formDataBirth.leaveTotal = data.totalDate;
|
formDataBirth.leaveTotal = data.totalDate;
|
||||||
// totalCheck.value = data.totalDate;
|
|
||||||
reasonLeave.value =
|
reasonLeave.value =
|
||||||
data.message != ""
|
data.message != ""
|
||||||
? data.message
|
? data.message
|
||||||
|
|
@ -189,10 +176,11 @@ async function fetchCheck() {
|
||||||
: "ช่วงวันลาที่ระบุไม่ถูกต้อง";
|
: "ช่วงวันลาที่ระบุไม่ถูกต้อง";
|
||||||
isLeave.value = formDataBirth.leaveTotal > 0 ? data.isLeave : false;
|
isLeave.value = formDataBirth.leaveTotal > 0 ? data.isLeave : false;
|
||||||
})
|
})
|
||||||
.catch((e: any) => {
|
.catch((e) => {
|
||||||
hideLoader();
|
|
||||||
// totalCheck.value = null;
|
|
||||||
messageError($q, e);
|
messageError($q, e);
|
||||||
|
})
|
||||||
|
.finally(() => {
|
||||||
|
isLoadCheck.value = false;
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -433,6 +421,7 @@ onMounted(() => {
|
||||||
v-model="formDataBirth.leaveTotal"
|
v-model="formDataBirth.leaveTotal"
|
||||||
label="จำนวนวันที่ลา (วัน)"
|
label="จำนวนวันที่ลา (วัน)"
|
||||||
readonly
|
readonly
|
||||||
|
:loading="isLoadCheck"
|
||||||
>
|
>
|
||||||
<template v-slot:hint>
|
<template v-slot:hint>
|
||||||
<span style="color: red">
|
<span style="color: red">
|
||||||
|
|
@ -596,30 +585,31 @@ onMounted(() => {
|
||||||
|
|
||||||
<div class="row col-12 q-pt-md">
|
<div class="row col-12 q-pt-md">
|
||||||
<q-space />
|
<q-space />
|
||||||
<!-- <div v-if="totalCheck == 0" class="text-red q-mr-sm">**จำนวนวันลาของท่านไม่ถูกต้อง หรือวันที่ยื่นลาของท่านตรงกับวันหยุด</div> -->
|
|
||||||
<q-btn
|
<q-btn
|
||||||
v-if="!props.data || props.data.status == 'DRAFT'"
|
v-if="!props.data || props.data.status == 'DRAFT'"
|
||||||
id="onSubmit"
|
id="onSubmit"
|
||||||
type="submit"
|
type="submit"
|
||||||
unelevated
|
unelevated
|
||||||
dense
|
|
||||||
:disable="!isLeave"
|
:disable="!isLeave"
|
||||||
class="q-px-md items-center btnBlue"
|
class="q-px-md items-center btnBlue"
|
||||||
label="บันทึก"
|
label="บันทึก"
|
||||||
><q-tooltip>บันทึกแบบร่าง</q-tooltip></q-btn
|
:loading="isLoadCheck"
|
||||||
>
|
>
|
||||||
|
<q-tooltip>บันทึกแบบร่าง</q-tooltip>
|
||||||
|
</q-btn>
|
||||||
<q-btn
|
<q-btn
|
||||||
v-if="data && statusCheck != 'NEW'"
|
v-if="data && statusCheck != 'NEW'"
|
||||||
id="onSubmit"
|
id="onSubmit"
|
||||||
type="button"
|
type="button"
|
||||||
unelevated
|
unelevated
|
||||||
dense
|
|
||||||
class="q-px-md items-center q-ml-sm"
|
class="q-px-md items-center q-ml-sm"
|
||||||
color="primary"
|
color="primary"
|
||||||
label="ยื่นใบลา"
|
label="ยื่นใบลา"
|
||||||
@click="onConfirm()"
|
@click="onConfirm()"
|
||||||
><q-tooltip>ยื่นใบลา</q-tooltip></q-btn
|
:loading="isLoadCheck"
|
||||||
>
|
>
|
||||||
|
<q-tooltip>ยื่นใบลา</q-tooltip>
|
||||||
|
</q-btn>
|
||||||
</div>
|
</div>
|
||||||
</form>
|
</form>
|
||||||
</template>
|
</template>
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,6 @@
|
||||||
<script setup lang="ts">
|
<script setup lang="ts">
|
||||||
import { ref, reactive, onMounted, computed, watch } from "vue";
|
import { ref, reactive, onMounted, computed, watch } from "vue";
|
||||||
import { useQuasar } from "quasar";
|
import { useQuasar } from "quasar";
|
||||||
import { useRouter } from "vue-router";
|
|
||||||
|
|
||||||
import http from "@/plugins/http";
|
import http from "@/plugins/http";
|
||||||
import config from "@/app.config";
|
import config from "@/app.config";
|
||||||
|
|
@ -14,17 +13,8 @@ import type { FormRef } from "@/modules/05_leave/interface/request/HelpWifeForm"
|
||||||
const $q = useQuasar();
|
const $q = useQuasar();
|
||||||
const dataStore = useLeaveStore();
|
const dataStore = useLeaveStore();
|
||||||
const mixin = useCounterMixin();
|
const mixin = useCounterMixin();
|
||||||
const {
|
const { date2Thai, messageError, convertDateToAPI } = mixin;
|
||||||
date2Thai,
|
|
||||||
calculateDurationYmd,
|
|
||||||
dateToISO,
|
|
||||||
messageError,
|
|
||||||
convertDateToAPI,
|
|
||||||
showLoader,
|
|
||||||
hideLoader,
|
|
||||||
} = mixin;
|
|
||||||
|
|
||||||
const leaveText = ref<string>("");
|
|
||||||
const edit = ref<boolean>(true);
|
const edit = ref<boolean>(true);
|
||||||
const leaveId = ref<string>("");
|
const leaveId = ref<string>("");
|
||||||
|
|
||||||
|
|
@ -161,14 +151,12 @@ const checkDate = computed(() => {
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
/**
|
const isLoadCheck = ref<boolean>(false);
|
||||||
* check ว่าลาได้ไหม จาก api
|
|
||||||
* @param formData
|
/** fetchCheck ว่าลาได้ไหม จาก api */
|
||||||
*/
|
|
||||||
// const totalCheck = ref<number | null>(null);
|
|
||||||
async function fetchCheck() {
|
async function fetchCheck() {
|
||||||
if (formDataHelpWife.leaveStartDate && formDataHelpWife.leaveEndDate) {
|
if (formDataHelpWife.leaveStartDate && formDataHelpWife.leaveEndDate) {
|
||||||
showLoader();
|
isLoadCheck.value = true;
|
||||||
await http
|
await http
|
||||||
.post(config.API.leaveCheck(), {
|
.post(config.API.leaveCheck(), {
|
||||||
type: dataStore.typeId ?? null,
|
type: dataStore.typeId ?? null,
|
||||||
|
|
@ -184,8 +172,6 @@ async function fetchCheck() {
|
||||||
const data = res.data.result;
|
const data = res.data.result;
|
||||||
formDataHelpWife.leaveTotal =
|
formDataHelpWife.leaveTotal =
|
||||||
data.totalDate - data.sumDateWork - data.sumDateHoliday;
|
data.totalDate - data.sumDateWork - data.sumDateHoliday;
|
||||||
// totalCheck.value =
|
|
||||||
// data.totalDate - data.sumDateWork - data.sumDateHoliday;
|
|
||||||
reasonLeave.value =
|
reasonLeave.value =
|
||||||
data.message != ""
|
data.message != ""
|
||||||
? data.message
|
? data.message
|
||||||
|
|
@ -193,23 +179,21 @@ async function fetchCheck() {
|
||||||
? "จำนวนวันลาเกินที่กำหนด"
|
? "จำนวนวันลาเกินที่กำหนด"
|
||||||
: "ช่วงวันลาที่ระบุไม่ถูกต้อง";
|
: "ช่วงวันลาที่ระบุไม่ถูกต้อง";
|
||||||
isLeave.value = formDataHelpWife.leaveTotal > 0 ? data.isLeave : false;
|
isLeave.value = formDataHelpWife.leaveTotal > 0 ? data.isLeave : false;
|
||||||
hideLoader();
|
|
||||||
})
|
})
|
||||||
.catch((e: any) => {
|
.catch((e) => {
|
||||||
messageError($q, e);
|
messageError($q, e);
|
||||||
// totalCheck.value = null;
|
})
|
||||||
hideLoader();
|
.finally(() => {
|
||||||
|
isLoadCheck.value = false;
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/** ตรวจสอบว่ามีการส่งข้อมูลเข้ามาที่ฟอร์มไหม เมื่อมีการส่งจะ map ข้อมูลเข้า v-model ของฟอร์ม */
|
/** ตรวจสอบว่ามีการส่งข้อมูลเข้ามาที่ฟอร์มไหม เมื่อมีการส่งจะ map ข้อมูลเข้า v-model ของฟอร์ม */
|
||||||
|
|
||||||
watch(
|
watch(
|
||||||
() => props.data,
|
() => props.data,
|
||||||
async () => {
|
async () => {
|
||||||
if (props.data) {
|
if (props.data) {
|
||||||
// totalCheck.value = null;
|
|
||||||
formDataHelpWife.leaveWrote = props.data.leaveWrote;
|
formDataHelpWife.leaveWrote = props.data.leaveWrote;
|
||||||
formDataHelpWife.wifeDayName = props.data.wifeDayName;
|
formDataHelpWife.wifeDayName = props.data.wifeDayName;
|
||||||
formDataHelpWife.wifeDayDateBorn = props.data.wifeDayDateBorn;
|
formDataHelpWife.wifeDayDateBorn = props.data.wifeDayDateBorn;
|
||||||
|
|
@ -229,7 +213,6 @@ watch(
|
||||||
/**Hook */
|
/**Hook */
|
||||||
onMounted(async () => {
|
onMounted(async () => {
|
||||||
if (props.data) {
|
if (props.data) {
|
||||||
// totalCheck.value = null;
|
|
||||||
formDataHelpWife.leaveWrote = props.data.leaveWrote;
|
formDataHelpWife.leaveWrote = props.data.leaveWrote;
|
||||||
formDataHelpWife.wifeDayName = props.data.wifeDayName;
|
formDataHelpWife.wifeDayName = props.data.wifeDayName;
|
||||||
formDataHelpWife.wifeDayDateBorn = props.data.wifeDayDateBorn;
|
formDataHelpWife.wifeDayDateBorn = props.data.wifeDayDateBorn;
|
||||||
|
|
@ -438,6 +421,7 @@ onMounted(async () => {
|
||||||
v-model="formDataHelpWife.leaveTotal"
|
v-model="formDataHelpWife.leaveTotal"
|
||||||
label="จำนวนวันที่ลา (วัน)"
|
label="จำนวนวันที่ลา (วัน)"
|
||||||
readonly
|
readonly
|
||||||
|
:loading="isLoadCheck"
|
||||||
>
|
>
|
||||||
<template v-slot:hint>
|
<template v-slot:hint>
|
||||||
<span style="color: red">
|
<span style="color: red">
|
||||||
|
|
@ -656,24 +640,26 @@ onMounted(async () => {
|
||||||
id="onSubmit"
|
id="onSubmit"
|
||||||
type="submit"
|
type="submit"
|
||||||
unelevated
|
unelevated
|
||||||
dense
|
|
||||||
:disable="!isLeave"
|
:disable="!isLeave"
|
||||||
class="q-px-md items-center btnBlue"
|
class="q-px-md items-center btnBlue"
|
||||||
label="บันทึก"
|
label="บันทึก"
|
||||||
><q-tooltip>บันทึกแบบร่าง</q-tooltip></q-btn
|
:loading="isLoadCheck"
|
||||||
>
|
>
|
||||||
|
<q-tooltip>บันทึกแบบร่าง</q-tooltip>
|
||||||
|
</q-btn>
|
||||||
<q-btn
|
<q-btn
|
||||||
v-if="data && statusCheck != 'NEW'"
|
v-if="data && statusCheck != 'NEW'"
|
||||||
id="onSubmit"
|
id="onSubmit"
|
||||||
type="button"
|
type="button"
|
||||||
unelevated
|
unelevated
|
||||||
dense
|
|
||||||
class="q-px-md items-center q-ml-sm"
|
class="q-px-md items-center q-ml-sm"
|
||||||
color="primary"
|
color="primary"
|
||||||
label="ยื่นใบลา"
|
label="ยื่นใบลา"
|
||||||
@click="onConfirm()"
|
@click="onConfirm()"
|
||||||
><q-tooltip>ยื่นใบลา</q-tooltip></q-btn
|
:loading="isLoadCheck"
|
||||||
>
|
>
|
||||||
|
<q-tooltip>ยื่นใบลา</q-tooltip>
|
||||||
|
</q-btn>
|
||||||
</div>
|
</div>
|
||||||
</form>
|
</form>
|
||||||
</template>
|
</template>
|
||||||
|
|
|
||||||
|
|
@ -14,14 +14,7 @@ import type { DataOption } from "@/modules/14_IDP/interface/Main";
|
||||||
const $q = useQuasar();
|
const $q = useQuasar();
|
||||||
const dataStore = useLeaveStore();
|
const dataStore = useLeaveStore();
|
||||||
const mixin = useCounterMixin();
|
const mixin = useCounterMixin();
|
||||||
const {
|
const { date2Thai, messageError, convertDateToAPI } = mixin;
|
||||||
date2Thai,
|
|
||||||
dateToISO,
|
|
||||||
messageError,
|
|
||||||
convertDateToAPI,
|
|
||||||
showLoader,
|
|
||||||
hideLoader,
|
|
||||||
} = mixin;
|
|
||||||
|
|
||||||
const edit = ref<boolean>(true);
|
const edit = ref<boolean>(true);
|
||||||
const leaveId = ref<string>("");
|
const leaveId = ref<string>("");
|
||||||
|
|
@ -164,10 +157,11 @@ const checkDate = computed(() => {
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
// const totalCheck = ref<number | null>(null);
|
const isLoadCheck = ref<boolean>(false);
|
||||||
|
|
||||||
async function fetchCheck() {
|
async function fetchCheck() {
|
||||||
if (formDataVacation.leaveStartDate && formDataVacation.leaveEndDate) {
|
if (formDataVacation.leaveStartDate && formDataVacation.leaveEndDate) {
|
||||||
showLoader();
|
isLoadCheck.value = true;
|
||||||
await http
|
await http
|
||||||
.post(config.API.leaveCheck(), {
|
.post(config.API.leaveCheck(), {
|
||||||
type: dataStore.typeId ?? null,
|
type: dataStore.typeId ?? null,
|
||||||
|
|
@ -183,8 +177,6 @@ async function fetchCheck() {
|
||||||
const data = res.data.result;
|
const data = res.data.result;
|
||||||
formDataVacation.leaveTotal =
|
formDataVacation.leaveTotal =
|
||||||
data.totalDate - data.sumDateWork - data.sumDateHoliday;
|
data.totalDate - data.sumDateWork - data.sumDateHoliday;
|
||||||
// totalCheck.value =
|
|
||||||
// data.totalDate - data.sumDateWork - data.sumDateHoliday;
|
|
||||||
|
|
||||||
reasonLeave.value =
|
reasonLeave.value =
|
||||||
data.message != ""
|
data.message != ""
|
||||||
|
|
@ -193,12 +185,12 @@ async function fetchCheck() {
|
||||||
? "จำนวนวันลาเกินที่กำหนด"
|
? "จำนวนวันลาเกินที่กำหนด"
|
||||||
: "ช่วงวันลาที่ระบุไม่ถูกต้อง";
|
: "ช่วงวันลาที่ระบุไม่ถูกต้อง";
|
||||||
isLeave.value = formDataVacation.leaveTotal > 0 ? data.isLeave : false;
|
isLeave.value = formDataVacation.leaveTotal > 0 ? data.isLeave : false;
|
||||||
hideLoader();
|
|
||||||
})
|
})
|
||||||
.catch((e: any) => {
|
.catch((e: any) => {
|
||||||
messageError($q, e);
|
messageError($q, e);
|
||||||
// totalCheck.value = null;
|
})
|
||||||
hideLoader();
|
.finally(() => {
|
||||||
|
isLoadCheck.value = false;
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -207,7 +199,6 @@ watch(
|
||||||
() => props.data,
|
() => props.data,
|
||||||
() => {
|
() => {
|
||||||
if (props.data) {
|
if (props.data) {
|
||||||
// totalCheck.value = null;
|
|
||||||
formDataVacation.leaveWrote = props.data.leaveWrote;
|
formDataVacation.leaveWrote = props.data.leaveWrote;
|
||||||
formDataVacation.restDayOldTotal = props.data.restDayOldTotal;
|
formDataVacation.restDayOldTotal = props.data.restDayOldTotal;
|
||||||
formDataVacation.restDayCurrentTotal = props.data.restDayCurrentTotal;
|
formDataVacation.restDayCurrentTotal = props.data.restDayCurrentTotal;
|
||||||
|
|
@ -456,6 +447,7 @@ onMounted(() => {
|
||||||
v-model="formDataVacation.leaveTotal"
|
v-model="formDataVacation.leaveTotal"
|
||||||
label="จำนวนวันที่ลา (วัน)"
|
label="จำนวนวันที่ลา (วัน)"
|
||||||
readonly
|
readonly
|
||||||
|
:loading="isLoadCheck"
|
||||||
>
|
>
|
||||||
<template v-slot:hint>
|
<template v-slot:hint>
|
||||||
<span style="color: red">
|
<span style="color: red">
|
||||||
|
|
@ -630,30 +622,31 @@ onMounted(() => {
|
||||||
<q-separator class="q-mt-sm" />
|
<q-separator class="q-mt-sm" />
|
||||||
<div class="row col-12 q-pt-md items-center">
|
<div class="row col-12 q-pt-md items-center">
|
||||||
<q-space />
|
<q-space />
|
||||||
<!-- <div v-if="totalCheck == 0" class="text-red q-mr-sm">**จำนวนวันลาของท่านไม่ถูกต้อง หรือวันที่ยื่นลาของท่านตรงกับวันหยุด</div> -->
|
|
||||||
<q-btn
|
<q-btn
|
||||||
v-if="!props.data || props.data.status == 'DRAFT'"
|
v-if="!props.data || props.data.status == 'DRAFT'"
|
||||||
id="onSubmit"
|
id="onSubmit"
|
||||||
type="submit"
|
type="submit"
|
||||||
unelevated
|
unelevated
|
||||||
dense
|
|
||||||
:disable="!isLeave"
|
:disable="!isLeave"
|
||||||
class="q-px-md items-center btnBlue"
|
class="q-px-md items-center btnBlue"
|
||||||
label="บันทึก"
|
label="บันทึก"
|
||||||
><q-tooltip>บันทึกแบบร่าง</q-tooltip></q-btn
|
:loading="isLoadCheck"
|
||||||
>
|
>
|
||||||
|
<q-tooltip>บันทึกแบบร่าง</q-tooltip>
|
||||||
|
</q-btn>
|
||||||
<q-btn
|
<q-btn
|
||||||
v-if="data && statusCheck != 'NEW'"
|
v-if="data && statusCheck != 'NEW'"
|
||||||
id="onSubmit"
|
id="onSubmit"
|
||||||
type="button"
|
type="button"
|
||||||
unelevated
|
unelevated
|
||||||
dense
|
|
||||||
class="q-px-md items-center q-ml-sm"
|
class="q-px-md items-center q-ml-sm"
|
||||||
color="primary"
|
color="primary"
|
||||||
label="ยื่นใบลา"
|
label="ยื่นใบลา"
|
||||||
@click="onConfirm()"
|
@click="onConfirm()"
|
||||||
><q-tooltip>ยื่นใบลา</q-tooltip></q-btn
|
:loading="isLoadCheck"
|
||||||
>
|
>
|
||||||
|
<q-tooltip>ยื่นใบลา</q-tooltip>
|
||||||
|
</q-btn>
|
||||||
</div>
|
</div>
|
||||||
</form>
|
</form>
|
||||||
</template>
|
</template>
|
||||||
|
|
|
||||||
|
|
@ -13,8 +13,7 @@ import type { OrdinationForm } from "@/modules/05_leave/interface/request/AddAbs
|
||||||
const $q = useQuasar();
|
const $q = useQuasar();
|
||||||
const dataStore = useLeaveStore();
|
const dataStore = useLeaveStore();
|
||||||
const mixin = useCounterMixin();
|
const mixin = useCounterMixin();
|
||||||
const { date2Thai, messageError, convertDateToAPI, showLoader, hideLoader } =
|
const { date2Thai, messageError, convertDateToAPI } = mixin;
|
||||||
mixin;
|
|
||||||
const edit = ref<boolean>(true);
|
const edit = ref<boolean>(true);
|
||||||
const leaveId = ref<string>("");
|
const leaveId = ref<string>("");
|
||||||
/** รับ props มาจากหน้าหลัก */
|
/** รับ props มาจากหน้าหลัก */
|
||||||
|
|
@ -179,14 +178,12 @@ const checkDate = computed(() => {
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
/**
|
const isLoadCheck = ref<boolean>(false);
|
||||||
* check ว่าลาได้ไหม จาก api
|
|
||||||
* @param formData
|
/** check ว่าลาได้ไหม จาก api*/
|
||||||
*/
|
|
||||||
// const totalCheck = ref<number|null>(null)
|
|
||||||
async function fetchCheck() {
|
async function fetchCheck() {
|
||||||
if (formDataOrdination.leaveStartDate && formDataOrdination.leaveEndDate) {
|
if (formDataOrdination.leaveStartDate && formDataOrdination.leaveEndDate) {
|
||||||
showLoader();
|
isLoadCheck.value = true;
|
||||||
await http
|
await http
|
||||||
.post(config.API.leaveCheck(), {
|
.post(config.API.leaveCheck(), {
|
||||||
type: dataStore.typeId ?? null,
|
type: dataStore.typeId ?? null,
|
||||||
|
|
@ -201,7 +198,6 @@ async function fetchCheck() {
|
||||||
.then((res: any) => {
|
.then((res: any) => {
|
||||||
const data = res.data.result;
|
const data = res.data.result;
|
||||||
formDataOrdination.leaveTotal = data.totalDate;
|
formDataOrdination.leaveTotal = data.totalDate;
|
||||||
// totalCheck.value = data.totalDate;
|
|
||||||
reasonLeave.value =
|
reasonLeave.value =
|
||||||
data.message != ""
|
data.message != ""
|
||||||
? data.message
|
? data.message
|
||||||
|
|
@ -210,12 +206,12 @@ async function fetchCheck() {
|
||||||
: "ช่วงวันลาที่ระบุไม่ถูกต้อง";
|
: "ช่วงวันลาที่ระบุไม่ถูกต้อง";
|
||||||
isLeave.value =
|
isLeave.value =
|
||||||
formDataOrdination.leaveTotal > 0 ? data.isLeave : false;
|
formDataOrdination.leaveTotal > 0 ? data.isLeave : false;
|
||||||
hideLoader();
|
|
||||||
})
|
})
|
||||||
.catch((e: any) => {
|
.catch((e: any) => {
|
||||||
messageError($q, e);
|
messageError($q, e);
|
||||||
// totalCheck.value = null;
|
})
|
||||||
hideLoader();
|
.finally(() => {
|
||||||
|
isLoadCheck.value = false;
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -488,6 +484,7 @@ onMounted(async () => {
|
||||||
v-model="formDataOrdination.leaveTotal"
|
v-model="formDataOrdination.leaveTotal"
|
||||||
label="จำนวนวันที่ลา (วัน)"
|
label="จำนวนวันที่ลา (วัน)"
|
||||||
readonly
|
readonly
|
||||||
|
:loading="isLoadCheck"
|
||||||
>
|
>
|
||||||
<template v-slot:hint>
|
<template v-slot:hint>
|
||||||
<span style="color: red">
|
<span style="color: red">
|
||||||
|
|
@ -843,24 +840,26 @@ onMounted(async () => {
|
||||||
id="onSubmit"
|
id="onSubmit"
|
||||||
type="submit"
|
type="submit"
|
||||||
unelevated
|
unelevated
|
||||||
dense
|
|
||||||
class="q-px-md items-center btnBlue"
|
class="q-px-md items-center btnBlue"
|
||||||
label="บันทึก"
|
label="บันทึก"
|
||||||
:disable="!isLeave"
|
:disable="!isLeave"
|
||||||
><q-tooltip>บันทึกแบบร่าง</q-tooltip></q-btn
|
:loading="isLoadCheck"
|
||||||
>
|
>
|
||||||
|
<q-tooltip>บันทึกแบบร่าง</q-tooltip>
|
||||||
|
</q-btn>
|
||||||
<q-btn
|
<q-btn
|
||||||
v-if="data && statusCheck != 'NEW'"
|
v-if="data && statusCheck != 'NEW'"
|
||||||
id="onSubmit"
|
id="onSubmit"
|
||||||
type="button"
|
type="button"
|
||||||
unelevated
|
unelevated
|
||||||
dense
|
|
||||||
class="q-px-md items-center q-ml-sm"
|
class="q-px-md items-center q-ml-sm"
|
||||||
color="primary"
|
color="primary"
|
||||||
label="ยื่นใบลา"
|
label="ยื่นใบลา"
|
||||||
@click="onConfirm()"
|
@click="onConfirm()"
|
||||||
><q-tooltip>ยื่นใบลา</q-tooltip></q-btn
|
:loading="isLoadCheck"
|
||||||
>
|
>
|
||||||
|
<q-tooltip>ยื่นใบลา</q-tooltip>
|
||||||
|
</q-btn>
|
||||||
</div>
|
</div>
|
||||||
</form>
|
</form>
|
||||||
</template>
|
</template>
|
||||||
|
|
|
||||||
|
|
@ -17,10 +17,8 @@ const {
|
||||||
date2Thai,
|
date2Thai,
|
||||||
calculateDurationYmd,
|
calculateDurationYmd,
|
||||||
messageError,
|
messageError,
|
||||||
dateToISO,
|
|
||||||
convertDateToAPI,
|
convertDateToAPI,
|
||||||
showLoader,
|
|
||||||
hideLoader,
|
|
||||||
} = mixin;
|
} = mixin;
|
||||||
|
|
||||||
const edit = ref<boolean>(true);
|
const edit = ref<boolean>(true);
|
||||||
|
|
@ -79,7 +77,6 @@ const formRef: HajiForm = {
|
||||||
};
|
};
|
||||||
|
|
||||||
/** ส่วนของการประกาศและเลือกไฟล์เอกสารประกอบ */
|
/** ส่วนของการประกาศและเลือกไฟล์เอกสารประกอบ */
|
||||||
const nameFile = ref<string>("");
|
|
||||||
const fileDocDataUpload = ref<File[]>([]);
|
const fileDocDataUpload = ref<File[]>([]);
|
||||||
const fileUploadDoc = async (files: any) => {
|
const fileUploadDoc = async (files: any) => {
|
||||||
files.forEach((file: any) => {
|
files.forEach((file: any) => {
|
||||||
|
|
@ -145,10 +142,10 @@ const checkDate = computed(() => {
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
// const totalCheck = ref<number | null>(null);
|
const isLoadCheck = ref<boolean>(false);
|
||||||
async function fetchCheck() {
|
async function fetchCheck() {
|
||||||
if (formDataHaji.leaveStartDate && formDataHaji.leaveEndDate) {
|
if (formDataHaji.leaveStartDate && formDataHaji.leaveEndDate) {
|
||||||
showLoader();
|
isLoadCheck.value = true;
|
||||||
await http
|
await http
|
||||||
.post(config.API.leaveCheck(), {
|
.post(config.API.leaveCheck(), {
|
||||||
type: dataStore.typeId ?? null,
|
type: dataStore.typeId ?? null,
|
||||||
|
|
@ -161,9 +158,7 @@ async function fetchCheck() {
|
||||||
})
|
})
|
||||||
.then((res: any) => {
|
.then((res: any) => {
|
||||||
const data = res.data.result;
|
const data = res.data.result;
|
||||||
// isLeave.value = data.isLeave;
|
|
||||||
formDataHaji.leaveTotal = data.totalDate;
|
formDataHaji.leaveTotal = data.totalDate;
|
||||||
// totalCheck.value = data.totalDate;
|
|
||||||
leaveText.value = calculateDurationYmd(
|
leaveText.value = calculateDurationYmd(
|
||||||
convertDateToAPI(formDataHaji.leaveStartDate),
|
convertDateToAPI(formDataHaji.leaveStartDate),
|
||||||
convertDateToAPI(formDataHaji.leaveEndDate)
|
convertDateToAPI(formDataHaji.leaveEndDate)
|
||||||
|
|
@ -175,12 +170,12 @@ async function fetchCheck() {
|
||||||
? "จำนวนวันลาเกินที่กำหนด"
|
? "จำนวนวันลาเกินที่กำหนด"
|
||||||
: "ช่วงวันลาที่ระบุไม่ถูกต้อง";
|
: "ช่วงวันลาที่ระบุไม่ถูกต้อง";
|
||||||
isLeave.value = formDataHaji.leaveTotal > 0 ? data.isLeave : false;
|
isLeave.value = formDataHaji.leaveTotal > 0 ? data.isLeave : false;
|
||||||
hideLoader();
|
|
||||||
})
|
})
|
||||||
.catch((e: any) => {
|
.catch((e: any) => {
|
||||||
messageError($q, e);
|
messageError($q, e);
|
||||||
// totalCheck.value = null;
|
})
|
||||||
hideLoader();
|
.finally(() => {
|
||||||
|
isLoadCheck.value = false;
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -415,6 +410,7 @@ onMounted(async () => {
|
||||||
v-model="formDataHaji.leaveTotal"
|
v-model="formDataHaji.leaveTotal"
|
||||||
label="จำนวนวันที่ลา (วัน)"
|
label="จำนวนวันที่ลา (วัน)"
|
||||||
readonly
|
readonly
|
||||||
|
:loading="isLoadCheck"
|
||||||
>
|
>
|
||||||
<template v-slot:hint>
|
<template v-slot:hint>
|
||||||
<span style="color: red">
|
<span style="color: red">
|
||||||
|
|
@ -589,24 +585,26 @@ onMounted(async () => {
|
||||||
id="onSubmit"
|
id="onSubmit"
|
||||||
type="submit"
|
type="submit"
|
||||||
unelevated
|
unelevated
|
||||||
dense
|
|
||||||
class="q-px-md items-center btnBlue"
|
class="q-px-md items-center btnBlue"
|
||||||
label="บันทึก"
|
label="บันทึก"
|
||||||
:disable="!isLeave"
|
:disable="!isLeave"
|
||||||
><q-tooltip>บันทึกแบบร่าง</q-tooltip></q-btn
|
:loading="isLoadCheck"
|
||||||
>
|
>
|
||||||
|
<q-tooltip>บันทึกแบบร่าง</q-tooltip>
|
||||||
|
</q-btn>
|
||||||
<q-btn
|
<q-btn
|
||||||
v-if="data && statusCheck != 'NEW'"
|
v-if="data && statusCheck != 'NEW'"
|
||||||
id="onSubmit"
|
id="onSubmit"
|
||||||
type="button"
|
type="button"
|
||||||
unelevated
|
unelevated
|
||||||
dense
|
|
||||||
class="q-px-md items-center q-ml-sm"
|
class="q-px-md items-center q-ml-sm"
|
||||||
color="primary"
|
color="primary"
|
||||||
label="ยื่นใบลา"
|
label="ยื่นใบลา"
|
||||||
@click="onConfirm()"
|
@click="onConfirm()"
|
||||||
><q-tooltip>ยื่นใบลา</q-tooltip></q-btn
|
:loading="isLoadCheck"
|
||||||
>
|
>
|
||||||
|
<q-tooltip>ยื่นใบลา</q-tooltip>
|
||||||
|
</q-btn>
|
||||||
</div>
|
</div>
|
||||||
</form>
|
</form>
|
||||||
</template>
|
</template>
|
||||||
|
|
|
||||||
|
|
@ -13,15 +13,8 @@ import type { MilitaryForm } from "@/modules/05_leave/interface/request/AddAbsen
|
||||||
const dataStore = useLeaveStore();
|
const dataStore = useLeaveStore();
|
||||||
const $q = useQuasar();
|
const $q = useQuasar();
|
||||||
const mixin = useCounterMixin();
|
const mixin = useCounterMixin();
|
||||||
const {
|
const { date2Thai, calculateDurationYmd, messageError, convertDateToAPI } =
|
||||||
date2Thai,
|
mixin;
|
||||||
calculateDurationYmd,
|
|
||||||
dateToISO,
|
|
||||||
messageError,
|
|
||||||
convertDateToAPI,
|
|
||||||
showLoader,
|
|
||||||
hideLoader,
|
|
||||||
} = mixin;
|
|
||||||
const edit = ref<boolean>(true);
|
const edit = ref<boolean>(true);
|
||||||
const leaveId = ref<string>("");
|
const leaveId = ref<string>("");
|
||||||
const leaveText = ref<string>("");
|
const leaveText = ref<string>("");
|
||||||
|
|
@ -163,14 +156,12 @@ const checkDate = computed(() => {
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
/**
|
const isLoadCheck = ref<boolean>(false);
|
||||||
* check ว่าลาได้ไหม จาก api
|
|
||||||
* @param formData
|
/** check ว่าลาได้ไหม จาก api*/
|
||||||
*/
|
|
||||||
// const totalCheck = ref<number|null>(null)
|
|
||||||
async function fetchCheck() {
|
async function fetchCheck() {
|
||||||
if (formDataMilitary.leaveStartDate && formDataMilitary.leaveEndDate) {
|
if (formDataMilitary.leaveStartDate && formDataMilitary.leaveEndDate) {
|
||||||
showLoader();
|
isLoadCheck.value = true;
|
||||||
await http
|
await http
|
||||||
.post(config.API.leaveCheck(), {
|
.post(config.API.leaveCheck(), {
|
||||||
type: dataStore.typeId ?? null,
|
type: dataStore.typeId ?? null,
|
||||||
|
|
@ -186,35 +177,22 @@ async function fetchCheck() {
|
||||||
const data = res.data.result;
|
const data = res.data.result;
|
||||||
isLeave.value = data.isLeave;
|
isLeave.value = data.isLeave;
|
||||||
formDataMilitary.leaveTotal = data.totalDate;
|
formDataMilitary.leaveTotal = data.totalDate;
|
||||||
// totalCheck.value = data.totalDate;
|
|
||||||
leaveText.value = calculateDurationYmd(
|
leaveText.value = calculateDurationYmd(
|
||||||
convertDateToAPI(formDataMilitary.leaveStartDate),
|
convertDateToAPI(formDataMilitary.leaveStartDate),
|
||||||
convertDateToAPI(formDataMilitary.leaveEndDate)
|
convertDateToAPI(formDataMilitary.leaveEndDate)
|
||||||
);
|
);
|
||||||
reasonLeave.value =
|
reasonLeave.value =
|
||||||
data.message != "" ? data.message : "จำนวนวันลาเกินที่กำหนด";
|
data.message != "" ? data.message : "จำนวนวันลาเกินที่กำหนด";
|
||||||
|
|
||||||
hideLoader();
|
|
||||||
})
|
})
|
||||||
.catch((e: any) => {
|
.catch((e: any) => {
|
||||||
messageError($q, e);
|
messageError($q, e);
|
||||||
// totalCheck.value = null
|
})
|
||||||
hideLoader();
|
.finally(() => {
|
||||||
|
isLoadCheck.value = false;
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// /**
|
|
||||||
// * function อัพเดทค่า LeaveTotal
|
|
||||||
// */
|
|
||||||
// function updateLeaveTotal() {
|
|
||||||
// const newLeaveTotal = calculateDurationYmd(
|
|
||||||
// formDataMilitary.leaveStartDate,
|
|
||||||
// formDataMilitary.leaveEndDate
|
|
||||||
// );
|
|
||||||
// formDataMilitary.leaveTotal = newLeaveTotal;
|
|
||||||
// }
|
|
||||||
|
|
||||||
watch(
|
watch(
|
||||||
() => props.data,
|
() => props.data,
|
||||||
async () => {
|
async () => {
|
||||||
|
|
@ -463,6 +441,7 @@ onMounted(async () => {
|
||||||
v-model="leaveText"
|
v-model="leaveText"
|
||||||
label="จำนวนวันที่ลา"
|
label="จำนวนวันที่ลา"
|
||||||
readonly
|
readonly
|
||||||
|
:loading="isLoadCheck"
|
||||||
>
|
>
|
||||||
<template v-slot:hint>
|
<template v-slot:hint>
|
||||||
<span style="color: red">
|
<span style="color: red">
|
||||||
|
|
@ -675,24 +654,26 @@ onMounted(async () => {
|
||||||
id="onSubmit"
|
id="onSubmit"
|
||||||
type="submit"
|
type="submit"
|
||||||
unelevated
|
unelevated
|
||||||
dense
|
|
||||||
class="q-px-md items-center btnBlue"
|
class="q-px-md items-center btnBlue"
|
||||||
label="บันทึก"
|
label="บันทึก"
|
||||||
:disable="!isLeave"
|
:disable="!isLeave"
|
||||||
><q-tooltip>บันทึกแบบร่าง</q-tooltip></q-btn
|
:loading="isLoadCheck"
|
||||||
>
|
>
|
||||||
|
<q-tooltip>บันทึกแบบร่าง</q-tooltip>
|
||||||
|
</q-btn>
|
||||||
<q-btn
|
<q-btn
|
||||||
v-if="data && statusCheck != 'NEW'"
|
v-if="data && statusCheck != 'NEW'"
|
||||||
id="onSubmit"
|
id="onSubmit"
|
||||||
type="button"
|
type="button"
|
||||||
unelevated
|
unelevated
|
||||||
dense
|
|
||||||
class="q-px-md items-center q-ml-sm"
|
class="q-px-md items-center q-ml-sm"
|
||||||
color="primary"
|
color="primary"
|
||||||
label="ยื่นใบลา"
|
label="ยื่นใบลา"
|
||||||
@click="onConfirm()"
|
@click="onConfirm()"
|
||||||
><q-tooltip>ยื่นใบลา</q-tooltip></q-btn
|
:loading="isLoadCheck"
|
||||||
>
|
>
|
||||||
|
<q-tooltip>ยื่นใบลา</q-tooltip>
|
||||||
|
</q-btn>
|
||||||
</div>
|
</div>
|
||||||
</form>
|
</form>
|
||||||
</template>
|
</template>
|
||||||
|
|
|
||||||
|
|
@ -16,12 +16,9 @@ const mixin = useCounterMixin();
|
||||||
const {
|
const {
|
||||||
date2Thai,
|
date2Thai,
|
||||||
calculateDurationYmd,
|
calculateDurationYmd,
|
||||||
dateToISO,
|
|
||||||
messageError,
|
messageError,
|
||||||
arabicNumberToText,
|
arabicNumberToText,
|
||||||
convertDateToAPI,
|
convertDateToAPI,
|
||||||
showLoader,
|
|
||||||
hideLoader,
|
|
||||||
} = mixin;
|
} = mixin;
|
||||||
|
|
||||||
const leaveText = ref<string>("");
|
const leaveText = ref<string>("");
|
||||||
|
|
@ -182,10 +179,10 @@ const checkDate = computed(() => {
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
// const totalCheck = ref<number | null>(null);
|
const isLoadCheck = ref<boolean>(false);
|
||||||
async function fetchCheck() {
|
async function fetchCheck() {
|
||||||
if (formDataStudy.leaveStartDate && formDataStudy.leaveEndDate) {
|
if (formDataStudy.leaveStartDate && formDataStudy.leaveEndDate) {
|
||||||
showLoader();
|
isLoadCheck.value = true;
|
||||||
await http
|
await http
|
||||||
.post(config.API.leaveCheck(), {
|
.post(config.API.leaveCheck(), {
|
||||||
type: dataStore.typeId ?? null,
|
type: dataStore.typeId ?? null,
|
||||||
|
|
@ -200,7 +197,7 @@ async function fetchCheck() {
|
||||||
const data = res.data.result;
|
const data = res.data.result;
|
||||||
isLeave.value = data.isLeave;
|
isLeave.value = data.isLeave;
|
||||||
formDataStudy.leaveTotal = data.totalDate;
|
formDataStudy.leaveTotal = data.totalDate;
|
||||||
// totalCheck.value = data.totalDate;
|
|
||||||
leaveText.value = calculateDurationYmd(
|
leaveText.value = calculateDurationYmd(
|
||||||
convertDateToAPI(formDataStudy.leaveStartDate),
|
convertDateToAPI(formDataStudy.leaveStartDate),
|
||||||
convertDateToAPI(formDataStudy.leaveEndDate)
|
convertDateToAPI(formDataStudy.leaveEndDate)
|
||||||
|
|
@ -208,27 +205,16 @@ async function fetchCheck() {
|
||||||
reasonLeave.value = data.message
|
reasonLeave.value = data.message
|
||||||
? data.message
|
? data.message
|
||||||
: "จำนวนวันลาเกินที่กำหนด";
|
: "จำนวนวันลาเกินที่กำหนด";
|
||||||
hideLoader();
|
|
||||||
})
|
})
|
||||||
.catch((e: any) => {
|
.catch((e: any) => {
|
||||||
messageError($q, e);
|
messageError($q, e);
|
||||||
// totalCheck.value = null;
|
})
|
||||||
hideLoader();
|
.finally(() => {
|
||||||
|
isLoadCheck.value = false;
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// /**
|
|
||||||
// * function อัพเดทค่า LeaveTotal
|
|
||||||
// */
|
|
||||||
// function updateLeaveTotal() {
|
|
||||||
// const newLeaveTotal = calculateDurationYmd(
|
|
||||||
// formDataStudy.leaveStartDate,
|
|
||||||
// formDataStudy.leaveEndDate
|
|
||||||
// );
|
|
||||||
// formDataStudy.leaveTotal = newLeaveTotal;
|
|
||||||
// }
|
|
||||||
|
|
||||||
/** ตรวจสอบว่ามีการส่งข้อมูลเข้ามาที่ฟอร์มไหม เมื่อมีการส่งจะ map ข้อมูลเข้า v-model ของฟอร์ม */
|
/** ตรวจสอบว่ามีการส่งข้อมูลเข้ามาที่ฟอร์มไหม เมื่อมีการส่งจะ map ข้อมูลเข้า v-model ของฟอร์ม */
|
||||||
watch(
|
watch(
|
||||||
() => props.data,
|
() => props.data,
|
||||||
|
|
@ -490,6 +476,7 @@ onMounted(async () => {
|
||||||
v-model="leaveText"
|
v-model="leaveText"
|
||||||
label="มีกำหนด"
|
label="มีกำหนด"
|
||||||
readonly
|
readonly
|
||||||
|
:loading="isLoadCheck"
|
||||||
>
|
>
|
||||||
<template v-slot:hint>
|
<template v-slot:hint>
|
||||||
<span style="color: red">
|
<span style="color: red">
|
||||||
|
|
@ -828,24 +815,26 @@ onMounted(async () => {
|
||||||
id="onSubmit"
|
id="onSubmit"
|
||||||
type="submit"
|
type="submit"
|
||||||
unelevated
|
unelevated
|
||||||
dense
|
|
||||||
class="q-px-md items-center btnBlue"
|
class="q-px-md items-center btnBlue"
|
||||||
label="บันทึก"
|
label="บันทึก"
|
||||||
:disable="!isLeave"
|
:disable="!isLeave"
|
||||||
><q-tooltip>บันทึกแบบร่าง</q-tooltip></q-btn
|
:loading="isLoadCheck"
|
||||||
>
|
>
|
||||||
|
<q-tooltip>บันทึกแบบร่าง</q-tooltip>
|
||||||
|
</q-btn>
|
||||||
<q-btn
|
<q-btn
|
||||||
v-if="data && statusCheck != 'NEW'"
|
v-if="data && statusCheck != 'NEW'"
|
||||||
id="onSubmit"
|
id="onSubmit"
|
||||||
type="button"
|
type="button"
|
||||||
unelevated
|
unelevated
|
||||||
dense
|
|
||||||
class="q-px-md items-center q-ml-sm"
|
class="q-px-md items-center q-ml-sm"
|
||||||
color="primary"
|
color="primary"
|
||||||
label="ยื่นใบลา"
|
label="ยื่นใบลา"
|
||||||
@click="onConfirm()"
|
@click="onConfirm()"
|
||||||
><q-tooltip>ยื่นใบลา</q-tooltip></q-btn
|
:loading="isLoadCheck"
|
||||||
>
|
>
|
||||||
|
<q-tooltip>ยื่นใบลา</q-tooltip>
|
||||||
|
</q-btn>
|
||||||
</div>
|
</div>
|
||||||
</form>
|
</form>
|
||||||
</template>
|
</template>
|
||||||
|
|
|
||||||
|
|
@ -19,8 +19,6 @@ const {
|
||||||
calculateDurationYmd,
|
calculateDurationYmd,
|
||||||
messageError,
|
messageError,
|
||||||
convertDateToAPI,
|
convertDateToAPI,
|
||||||
showLoader,
|
|
||||||
hideLoader,
|
|
||||||
} = mixin;
|
} = mixin;
|
||||||
|
|
||||||
const leaveText = ref<string>("");
|
const leaveText = ref<string>("");
|
||||||
|
|
@ -167,10 +165,11 @@ const checkDate = computed(() => {
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
// const totalCheck = ref<number | null>(null);
|
const isLoadCheck = ref<boolean>(false);
|
||||||
|
|
||||||
async function fetchCheck() {
|
async function fetchCheck() {
|
||||||
if (formDataTrain.leaveStartDate && formDataTrain.leaveEndDate) {
|
if (formDataTrain.leaveStartDate && formDataTrain.leaveEndDate) {
|
||||||
showLoader();
|
isLoadCheck.value = true;
|
||||||
await http
|
await http
|
||||||
.post(config.API.leaveCheck(), {
|
.post(config.API.leaveCheck(), {
|
||||||
type: dataStore.typeId ?? null,
|
type: dataStore.typeId ?? null,
|
||||||
|
|
@ -185,7 +184,7 @@ async function fetchCheck() {
|
||||||
const data = res.data.result;
|
const data = res.data.result;
|
||||||
isLeave.value = data.isLeave;
|
isLeave.value = data.isLeave;
|
||||||
formDataTrain.leaveTotal = data.totalDate;
|
formDataTrain.leaveTotal = data.totalDate;
|
||||||
// totalCheck.value = data.totalDate;
|
|
||||||
leaveText.value = calculateDurationYmd(
|
leaveText.value = calculateDurationYmd(
|
||||||
convertDateToAPI(formDataTrain.leaveStartDate),
|
convertDateToAPI(formDataTrain.leaveStartDate),
|
||||||
convertDateToAPI(formDataTrain.leaveEndDate)
|
convertDateToAPI(formDataTrain.leaveEndDate)
|
||||||
|
|
@ -193,32 +192,20 @@ async function fetchCheck() {
|
||||||
reasonLeave.value = data.message
|
reasonLeave.value = data.message
|
||||||
? data.message
|
? data.message
|
||||||
: "จำนวนวันลาเกินที่กำหนด";
|
: "จำนวนวันลาเกินที่กำหนด";
|
||||||
hideLoader();
|
|
||||||
})
|
})
|
||||||
.catch((e: any) => {
|
.catch((e: any) => {
|
||||||
// totalCheck.value = null;
|
|
||||||
messageError($q, e);
|
messageError($q, e);
|
||||||
hideLoader();
|
})
|
||||||
|
.finally(() => {
|
||||||
|
isLoadCheck.value = false;
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* function อัพเดทค่า LeaveTotal
|
|
||||||
*/
|
|
||||||
function updateLeaveTotal() {
|
|
||||||
const newLeaveTotal = calculateDurationYmd(
|
|
||||||
formDataTrain.leaveStartDate,
|
|
||||||
formDataTrain.leaveEndDate
|
|
||||||
);
|
|
||||||
formDataTrain.leaveTotal = newLeaveTotal;
|
|
||||||
}
|
|
||||||
|
|
||||||
watch(
|
watch(
|
||||||
() => props.data,
|
() => props.data,
|
||||||
async () => {
|
async () => {
|
||||||
if (props.data) {
|
if (props.data) {
|
||||||
// totalCheck.value = null;
|
|
||||||
formDataTrain.leaveWrote = props.data.leaveWrote;
|
formDataTrain.leaveWrote = props.data.leaveWrote;
|
||||||
formDataTrain.leaveStartDate = props.data.leaveStartDate;
|
formDataTrain.leaveStartDate = props.data.leaveStartDate;
|
||||||
formDataTrain.leaveEndDate = props.data.leaveEndDate;
|
formDataTrain.leaveEndDate = props.data.leaveEndDate;
|
||||||
|
|
@ -470,6 +457,7 @@ onMounted(async () => {
|
||||||
v-model="leaveText"
|
v-model="leaveText"
|
||||||
label="มีกำหนด"
|
label="มีกำหนด"
|
||||||
readonly
|
readonly
|
||||||
|
:loading="isLoadCheck"
|
||||||
>
|
>
|
||||||
<template v-slot:hint>
|
<template v-slot:hint>
|
||||||
<span style="color: red">
|
<span style="color: red">
|
||||||
|
|
@ -789,24 +777,26 @@ onMounted(async () => {
|
||||||
id="onSubmit"
|
id="onSubmit"
|
||||||
type="submit"
|
type="submit"
|
||||||
unelevated
|
unelevated
|
||||||
dense
|
|
||||||
class="q-px-md items-center btnBlue"
|
class="q-px-md items-center btnBlue"
|
||||||
label="บันทึก"
|
label="บันทึก"
|
||||||
:disable="!isLeave"
|
:disable="!isLeave"
|
||||||
><q-tooltip>บันทึกแบบร่าง</q-tooltip></q-btn
|
:loading="isLoadCheck"
|
||||||
>
|
>
|
||||||
|
<q-tooltip>บันทึกแบบร่าง</q-tooltip>
|
||||||
|
</q-btn>
|
||||||
<q-btn
|
<q-btn
|
||||||
v-if="data && statusCheck != 'NEW'"
|
v-if="data && statusCheck != 'NEW'"
|
||||||
id="onSubmit"
|
id="onSubmit"
|
||||||
type="button"
|
type="button"
|
||||||
unelevated
|
unelevated
|
||||||
dense
|
|
||||||
class="q-px-md items-center q-ml-sm"
|
class="q-px-md items-center q-ml-sm"
|
||||||
color="primary"
|
color="primary"
|
||||||
label="ยื่นใบลา"
|
label="ยื่นใบลา"
|
||||||
@click="onConfirm()"
|
@click="onConfirm()"
|
||||||
><q-tooltip>ยื่นใบลา</q-tooltip></q-btn
|
:loading="isLoadCheck"
|
||||||
>
|
>
|
||||||
|
<q-tooltip>ยื่นใบลา</q-tooltip>
|
||||||
|
</q-btn>
|
||||||
</div>
|
</div>
|
||||||
</form>
|
</form>
|
||||||
</template>
|
</template>
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,5 @@
|
||||||
<script setup lang="ts">
|
<script setup lang="ts">
|
||||||
import { ref, reactive, watch, onMounted, computed } from "vue";
|
import { ref, reactive, watch, onMounted, computed } from "vue";
|
||||||
import { useRouter } from "vue-router";
|
|
||||||
import { useQuasar } from "quasar";
|
import { useQuasar } from "quasar";
|
||||||
|
|
||||||
import http from "@/plugins/http";
|
import http from "@/plugins/http";
|
||||||
|
|
@ -79,8 +78,6 @@ const FormRef: FormRef = {
|
||||||
};
|
};
|
||||||
|
|
||||||
/** ส่วนของการประกาศและเลือกไฟล์เอกสารประกอบ */
|
/** ส่วนของการประกาศและเลือกไฟล์เอกสารประกอบ */
|
||||||
const nameFile = ref<string>("");
|
|
||||||
const nameFileDraft = ref<string>("");
|
|
||||||
const fileDocDataUpload = ref<File[]>([]);
|
const fileDocDataUpload = ref<File[]>([]);
|
||||||
const fileUploadDoc = async (files: any) => {
|
const fileUploadDoc = async (files: any) => {
|
||||||
files.forEach((file: any) => {
|
files.forEach((file: any) => {
|
||||||
|
|
@ -171,12 +168,13 @@ const checkDate = computed(() => {
|
||||||
* @param formData
|
* @param formData
|
||||||
*/
|
*/
|
||||||
const isLeave = ref<boolean>(true);
|
const isLeave = ref<boolean>(true);
|
||||||
// const totalCheck = ref<number|null>(null)
|
const isLoadCheck = ref<boolean>(false);
|
||||||
async function fetchCheck() {
|
async function fetchCheck() {
|
||||||
if (
|
if (
|
||||||
formDataWorkInternational.leaveStartDate &&
|
formDataWorkInternational.leaveStartDate &&
|
||||||
formDataWorkInternational.leaveEndDate
|
formDataWorkInternational.leaveEndDate
|
||||||
) {
|
) {
|
||||||
|
isLoadCheck.value = true;
|
||||||
await http
|
await http
|
||||||
.post(config.API.leaveCheck(), {
|
.post(config.API.leaveCheck(), {
|
||||||
type: dataStore.typeId ?? null,
|
type: dataStore.typeId ?? null,
|
||||||
|
|
@ -193,7 +191,6 @@ async function fetchCheck() {
|
||||||
const data = res.data.result;
|
const data = res.data.result;
|
||||||
isLeave.value = data.isLeave;
|
isLeave.value = data.isLeave;
|
||||||
formDataWorkInternational.leaveTotal = data.totalDate;
|
formDataWorkInternational.leaveTotal = data.totalDate;
|
||||||
// totalCheck.value = data.totalDate;
|
|
||||||
leaveText.value = calculateDurationYmd(
|
leaveText.value = calculateDurationYmd(
|
||||||
convertDateToAPI(formDataWorkInternational.leaveStartDate),
|
convertDateToAPI(formDataWorkInternational.leaveStartDate),
|
||||||
convertDateToAPI(formDataWorkInternational.leaveEndDate)
|
convertDateToAPI(formDataWorkInternational.leaveEndDate)
|
||||||
|
|
@ -203,8 +200,10 @@ async function fetchCheck() {
|
||||||
: "จำนวนวันลาเกินที่กำหนด";
|
: "จำนวนวันลาเกินที่กำหนด";
|
||||||
})
|
})
|
||||||
.catch((e: any) => {
|
.catch((e: any) => {
|
||||||
// totalCheck.value = null;
|
|
||||||
messageError($q, e);
|
messageError($q, e);
|
||||||
|
})
|
||||||
|
.finally(() => {
|
||||||
|
isLoadCheck.value = false;
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -249,17 +248,17 @@ watch(
|
||||||
}
|
}
|
||||||
);
|
);
|
||||||
|
|
||||||
watch(
|
// watch(
|
||||||
() => formDataWorkInternational.leaveEndDate,
|
// () => formDataWorkInternational.leaveEndDate,
|
||||||
() => {
|
// () => {
|
||||||
if (
|
// if (
|
||||||
formDataWorkInternational.leaveStartDate !== null &&
|
// formDataWorkInternational.leaveStartDate !== null &&
|
||||||
formDataWorkInternational.leaveEndDate !== null
|
// formDataWorkInternational.leaveEndDate !== null
|
||||||
) {
|
// ) {
|
||||||
fetchCheck();
|
// fetchCheck();
|
||||||
}
|
// }
|
||||||
}
|
// }
|
||||||
);
|
// );
|
||||||
|
|
||||||
/**Hook */
|
/**Hook */
|
||||||
onMounted(async () => {
|
onMounted(async () => {
|
||||||
|
|
@ -475,6 +474,7 @@ onMounted(async () => {
|
||||||
v-model="leaveText"
|
v-model="leaveText"
|
||||||
label="มีกำหนด"
|
label="มีกำหนด"
|
||||||
readonly
|
readonly
|
||||||
|
:loading="isLoadCheck"
|
||||||
>
|
>
|
||||||
<template v-slot:hint>
|
<template v-slot:hint>
|
||||||
<span style="color: red">
|
<span style="color: red">
|
||||||
|
|
@ -644,24 +644,26 @@ onMounted(async () => {
|
||||||
id="onSubmit"
|
id="onSubmit"
|
||||||
type="submit"
|
type="submit"
|
||||||
unelevated
|
unelevated
|
||||||
dense
|
|
||||||
class="q-px-md items-center btnBlue"
|
class="q-px-md items-center btnBlue"
|
||||||
label="บันทึก"
|
label="บันทึก"
|
||||||
:disable="!isLeave"
|
:disable="!isLeave"
|
||||||
><q-tooltip>บันทึกแบบร่าง</q-tooltip></q-btn
|
:loading="isLoadCheck"
|
||||||
>
|
>
|
||||||
|
<q-tooltip>บันทึกแบบร่าง</q-tooltip>
|
||||||
|
</q-btn>
|
||||||
<q-btn
|
<q-btn
|
||||||
v-if="data && statusCheck != 'NEW'"
|
v-if="data && statusCheck != 'NEW'"
|
||||||
id="onSubmit"
|
id="onSubmit"
|
||||||
type="button"
|
type="button"
|
||||||
unelevated
|
unelevated
|
||||||
dense
|
|
||||||
class="q-px-md items-center q-ml-sm"
|
class="q-px-md items-center q-ml-sm"
|
||||||
color="primary"
|
color="primary"
|
||||||
label="ยื่นใบลา"
|
label="ยื่นใบลา"
|
||||||
@click="onConfirm()"
|
@click="onConfirm()"
|
||||||
><q-tooltip>ยื่นใบลา</q-tooltip></q-btn
|
:loading="isLoadCheck"
|
||||||
>
|
>
|
||||||
|
<q-tooltip>ยื่นใบลา</q-tooltip>
|
||||||
|
</q-btn>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</form>
|
</form>
|
||||||
|
|
|
||||||
|
|
@ -4,7 +4,6 @@ import { useQuasar } from "quasar";
|
||||||
|
|
||||||
import http from "@/plugins/http";
|
import http from "@/plugins/http";
|
||||||
import config from "@/app.config";
|
import config from "@/app.config";
|
||||||
import { useRouter } from "vue-router";
|
|
||||||
import { useCounterMixin } from "@/stores/mixin";
|
import { useCounterMixin } from "@/stores/mixin";
|
||||||
import { useLeaveStore } from "@/modules/05_leave/store";
|
import { useLeaveStore } from "@/modules/05_leave/store";
|
||||||
|
|
||||||
|
|
@ -15,15 +14,8 @@ const dataStore = useLeaveStore();
|
||||||
const $q = useQuasar();
|
const $q = useQuasar();
|
||||||
const mixin = useCounterMixin();
|
const mixin = useCounterMixin();
|
||||||
|
|
||||||
const {
|
const { date2Thai, calculateDurationYmd, messageError, convertDateToAPI } =
|
||||||
date2Thai,
|
mixin;
|
||||||
calculateDurationYmd,
|
|
||||||
dateToISO,
|
|
||||||
messageError,
|
|
||||||
convertDateToAPI,
|
|
||||||
showLoader,
|
|
||||||
hideLoader,
|
|
||||||
} = mixin;
|
|
||||||
|
|
||||||
const leaveText = ref<string>("");
|
const leaveText = ref<string>("");
|
||||||
const edit = ref<boolean>(true);
|
const edit = ref<boolean>(true);
|
||||||
|
|
@ -209,13 +201,13 @@ const reasonLeave = ref<string>("");
|
||||||
* @param formData
|
* @param formData
|
||||||
*/
|
*/
|
||||||
const isLeave = ref<boolean>(true);
|
const isLeave = ref<boolean>(true);
|
||||||
// const totalCheck = ref<number | null>(null);
|
const isLoadCheck = ref<boolean>(false);
|
||||||
async function fetchCheck() {
|
async function fetchCheck() {
|
||||||
if (
|
if (
|
||||||
formDataFollowSpouse.leaveStartDate &&
|
formDataFollowSpouse.leaveStartDate &&
|
||||||
formDataFollowSpouse.leaveEndDate
|
formDataFollowSpouse.leaveEndDate
|
||||||
) {
|
) {
|
||||||
showLoader();
|
isLoadCheck.value = true;
|
||||||
await http
|
await http
|
||||||
.post(config.API.leaveCheck(), {
|
.post(config.API.leaveCheck(), {
|
||||||
type: dataStore.typeId ?? null,
|
type: dataStore.typeId ?? null,
|
||||||
|
|
@ -241,12 +233,12 @@ async function fetchCheck() {
|
||||||
? data.message
|
? data.message
|
||||||
: "จำนวนวันลาเกินที่กำหนด";
|
: "จำนวนวันลาเกินที่กำหนด";
|
||||||
checkTotalHistory();
|
checkTotalHistory();
|
||||||
hideLoader();
|
|
||||||
})
|
})
|
||||||
.catch((e: any) => {
|
.catch((e: any) => {
|
||||||
messageError($q, e);
|
messageError($q, e);
|
||||||
// totalCheck.value = null
|
})
|
||||||
hideLoader();
|
.finally(() => {
|
||||||
|
isLoadCheck.value = false;
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -568,6 +560,7 @@ onMounted(async () => {
|
||||||
v-model="leaveText"
|
v-model="leaveText"
|
||||||
label="เป็นเวลา"
|
label="เป็นเวลา"
|
||||||
readonly
|
readonly
|
||||||
|
:loading="isLoadCheck"
|
||||||
>
|
>
|
||||||
<template v-slot:hint>
|
<template v-slot:hint>
|
||||||
<span style="color: red">
|
<span style="color: red">
|
||||||
|
|
@ -917,24 +910,26 @@ onMounted(async () => {
|
||||||
id="onSubmit"
|
id="onSubmit"
|
||||||
type="submit"
|
type="submit"
|
||||||
unelevated
|
unelevated
|
||||||
dense
|
|
||||||
class="q-px-md items-center btnBlue"
|
class="q-px-md items-center btnBlue"
|
||||||
label="บันทึก"
|
label="บันทึก"
|
||||||
:disable="!isLeave"
|
:disable="!isLeave"
|
||||||
><q-tooltip>บันทึกแบบร่าง</q-tooltip></q-btn
|
:loading="isLoadCheck"
|
||||||
>
|
>
|
||||||
|
<q-tooltip>บันทึกแบบร่าง</q-tooltip>
|
||||||
|
</q-btn>
|
||||||
<q-btn
|
<q-btn
|
||||||
v-if="data && statusCheck != 'NEW'"
|
v-if="data && statusCheck != 'NEW'"
|
||||||
id="onSubmit"
|
id="onSubmit"
|
||||||
type="button"
|
type="button"
|
||||||
unelevated
|
unelevated
|
||||||
dense
|
|
||||||
class="q-px-md items-center q-ml-sm"
|
class="q-px-md items-center q-ml-sm"
|
||||||
color="primary"
|
color="primary"
|
||||||
label="ยื่นใบลา"
|
label="ยื่นใบลา"
|
||||||
@click="onConfirm()"
|
@click="onConfirm()"
|
||||||
><q-tooltip>ยื่นใบลา</q-tooltip></q-btn
|
:loading="isLoadCheck"
|
||||||
>
|
>
|
||||||
|
<q-tooltip>ยื่นใบลา</q-tooltip>
|
||||||
|
</q-btn>
|
||||||
</div>
|
</div>
|
||||||
</form>
|
</form>
|
||||||
</template>
|
</template>
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,6 @@
|
||||||
<script setup lang="ts">
|
<script setup lang="ts">
|
||||||
import { reactive, ref, onMounted, computed, watch } from "vue";
|
import { reactive, ref, onMounted, computed, watch } from "vue";
|
||||||
import { useQuasar } from "quasar";
|
import { is, useQuasar } from "quasar";
|
||||||
import { useCounterMixin } from "@/stores/mixin";
|
import { useCounterMixin } from "@/stores/mixin";
|
||||||
|
|
||||||
import type { RehabilitationForm } from "@/modules/05_leave/interface/request/AddAbsence";
|
import type { RehabilitationForm } from "@/modules/05_leave/interface/request/AddAbsence";
|
||||||
|
|
@ -8,6 +8,7 @@ import { useLeaveStore } from "@/modules/05_leave/store";
|
||||||
import http from "@/plugins/http";
|
import http from "@/plugins/http";
|
||||||
import config from "@/app.config";
|
import config from "@/app.config";
|
||||||
import genReport from "@/plugins/genreport";
|
import genReport from "@/plugins/genreport";
|
||||||
|
import { load } from "@/router/loader";
|
||||||
|
|
||||||
const $q = useQuasar();
|
const $q = useQuasar();
|
||||||
const dataStore = useLeaveStore();
|
const dataStore = useLeaveStore();
|
||||||
|
|
@ -125,17 +126,14 @@ const checkDate = computed(() => {
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
/**
|
const isLoadCheck = ref<boolean>(false);
|
||||||
* check ว่าลาได้ไหม จาก api
|
/** check ว่าลาได้ไหม จาก api */
|
||||||
* @param formData
|
|
||||||
*/
|
|
||||||
// const totalCheck = ref<number|null>(null)
|
|
||||||
async function fetchCheck() {
|
async function fetchCheck() {
|
||||||
if (
|
if (
|
||||||
formDataRehabilitation.leaveStartDate &&
|
formDataRehabilitation.leaveStartDate &&
|
||||||
formDataRehabilitation.leaveEndDate
|
formDataRehabilitation.leaveEndDate
|
||||||
) {
|
) {
|
||||||
showLoader();
|
isLoadCheck.value = true;
|
||||||
await http
|
await http
|
||||||
.post(config.API.leaveCheck(), {
|
.post(config.API.leaveCheck(), {
|
||||||
type: dataStore.typeId ?? null,
|
type: dataStore.typeId ?? null,
|
||||||
|
|
@ -167,7 +165,7 @@ async function fetchCheck() {
|
||||||
// totalCheck.value = null
|
// totalCheck.value = null
|
||||||
})
|
})
|
||||||
.finally(() => {
|
.finally(() => {
|
||||||
hideLoader();
|
isLoadCheck.value = false;
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -438,6 +436,7 @@ onMounted(async () => {
|
||||||
v-model="leaveText"
|
v-model="leaveText"
|
||||||
label="เป็นเวลา"
|
label="เป็นเวลา"
|
||||||
readonly
|
readonly
|
||||||
|
:loading="isLoadCheck"
|
||||||
>
|
>
|
||||||
<template v-slot:hint>
|
<template v-slot:hint>
|
||||||
<span style="color: red">
|
<span style="color: red">
|
||||||
|
|
@ -600,24 +599,26 @@ onMounted(async () => {
|
||||||
id="onSubmit"
|
id="onSubmit"
|
||||||
type="submit"
|
type="submit"
|
||||||
unelevated
|
unelevated
|
||||||
dense
|
|
||||||
class="q-px-md items-center btnBlue"
|
class="q-px-md items-center btnBlue"
|
||||||
label="บันทึก"
|
label="บันทึก"
|
||||||
:disable="!isLeave"
|
:disable="!isLeave"
|
||||||
><q-tooltip>บันทึกแบบร่าง</q-tooltip></q-btn
|
:loading="isLoadCheck"
|
||||||
>
|
>
|
||||||
|
<q-tooltip>บันทึกแบบร่าง</q-tooltip>
|
||||||
|
</q-btn>
|
||||||
<q-btn
|
<q-btn
|
||||||
v-if="data && statusCheck != 'NEW'"
|
v-if="data && statusCheck != 'NEW'"
|
||||||
id="onSubmit"
|
id="onSubmit"
|
||||||
type="button"
|
type="button"
|
||||||
unelevated
|
unelevated
|
||||||
dense
|
|
||||||
class="q-px-md items-center q-ml-sm"
|
class="q-px-md items-center q-ml-sm"
|
||||||
color="primary"
|
color="primary"
|
||||||
label="ยื่นใบลา"
|
label="ยื่นใบลา"
|
||||||
@click="onConfirm()"
|
@click="onConfirm()"
|
||||||
><q-tooltip>ยื่นใบลา</q-tooltip></q-btn
|
:loading="isLoadCheck"
|
||||||
>
|
>
|
||||||
|
<q-tooltip>ยื่นใบลา</q-tooltip>
|
||||||
|
</q-btn>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</q-form>
|
</q-form>
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,6 @@
|
||||||
<script setup lang="ts">
|
<script setup lang="ts">
|
||||||
import { onMounted, ref, watch } from "vue";
|
import { onMounted, ref, watch } from "vue";
|
||||||
|
import { useQuasar, type QTableProps } from "quasar";
|
||||||
|
|
||||||
import http from "@/plugins/http";
|
import http from "@/plugins/http";
|
||||||
import config from "@/app.config";
|
import config from "@/app.config";
|
||||||
|
|
@ -8,7 +9,7 @@ import { useLeaveStore } from "@/modules/05_leave/store";
|
||||||
import { useDataStore } from "@/stores/data";
|
import { useDataStore } from "@/stores/data";
|
||||||
|
|
||||||
import DialogHeader from "@/components/DialogHeader.vue";
|
import DialogHeader from "@/components/DialogHeader.vue";
|
||||||
import { useQuasar, type QTableProps } from "quasar";
|
import SkeletonTable from "@/components/SkeletonTable.vue";
|
||||||
|
|
||||||
const mixin = useCounterMixin();
|
const mixin = useCounterMixin();
|
||||||
const dataStore = useLeaveStore();
|
const dataStore = useLeaveStore();
|
||||||
|
|
@ -37,6 +38,7 @@ const pagination = ref({
|
||||||
});
|
});
|
||||||
|
|
||||||
const selected = ref<any[]>([]);
|
const selected = ref<any[]>([]);
|
||||||
|
const isLoading = ref<boolean>(false);
|
||||||
const rows = ref<any[]>([]);
|
const rows = ref<any[]>([]);
|
||||||
const columns = ref<QTableProps["columns"]>([
|
const columns = ref<QTableProps["columns"]>([
|
||||||
{
|
{
|
||||||
|
|
@ -93,7 +95,7 @@ function closeDialog() {
|
||||||
}
|
}
|
||||||
|
|
||||||
async function getCommander() {
|
async function getCommander() {
|
||||||
showLoader();
|
isLoading.value = true;
|
||||||
await http
|
await http
|
||||||
.put(config.API.commanderOperate, {
|
.put(config.API.commanderOperate, {
|
||||||
isAct: isAct.value,
|
isAct: isAct.value,
|
||||||
|
|
@ -108,17 +110,20 @@ async function getCommander() {
|
||||||
})
|
})
|
||||||
.then((res) => {
|
.then((res) => {
|
||||||
rows.value = res.data.result.data;
|
rows.value = res.data.result.data;
|
||||||
|
total.value = res.data.result.total;
|
||||||
|
totalList.value = Math.ceil(
|
||||||
|
res.data.result.total / pagination.value.rowsPerPage
|
||||||
|
);
|
||||||
})
|
})
|
||||||
.catch((e) => {
|
.catch((e) => {
|
||||||
messageError($q, e);
|
messageError($q, e);
|
||||||
})
|
})
|
||||||
.finally(() => {
|
.finally(() => {
|
||||||
hideLoader();
|
isLoading.value = false;
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
function updatePagination(newPagination: any) {
|
function updatePagination(newPagination: any) {
|
||||||
pagination.value.page = 1;
|
|
||||||
pagination.value.rowsPerPage = newPagination.rowsPerPage;
|
pagination.value.rowsPerPage = newPagination.rowsPerPage;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -345,7 +350,9 @@ onMounted(() => {
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="col-12">
|
<div class="col-12">
|
||||||
|
<SkeletonTable v-if="isLoading" :columns="columns" />
|
||||||
<d-table
|
<d-table
|
||||||
|
v-else
|
||||||
ref="table"
|
ref="table"
|
||||||
:columns="columns"
|
:columns="columns"
|
||||||
:rows="rows"
|
:rows="rows"
|
||||||
|
|
@ -357,6 +364,7 @@ onMounted(() => {
|
||||||
:rows-per-page-options="[10, 25, 50, 100]"
|
:rows-per-page-options="[10, 25, 50, 100]"
|
||||||
selection="single"
|
selection="single"
|
||||||
@update:pagination="updatePagination"
|
@update:pagination="updatePagination"
|
||||||
|
v-model:pagination="pagination"
|
||||||
v-model:selected="selected"
|
v-model:selected="selected"
|
||||||
>
|
>
|
||||||
<template v-slot:pagination="scope">
|
<template v-slot:pagination="scope">
|
||||||
|
|
|
||||||
|
|
@ -28,6 +28,7 @@ export const useLeaveStore = defineStore("Leave", () => {
|
||||||
const fiscalYearyear = ref<Number | null>(new Date().getFullYear());
|
const fiscalYearyear = ref<Number | null>(new Date().getFullYear());
|
||||||
const rows = ref<ListLeaveTable[]>([]);
|
const rows = ref<ListLeaveTable[]>([]);
|
||||||
const leaveTypeData = ref<TypeLeave[]>([]);
|
const leaveTypeData = ref<TypeLeave[]>([]);
|
||||||
|
const isLoadingProfile = ref<boolean>(false); // สถานะการโหลดข้อมูลโปรไฟล์
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* function เรียกข้อมูลรายการลา Table
|
* function เรียกข้อมูลรายการลา Table
|
||||||
|
|
@ -307,7 +308,8 @@ export const useLeaveStore = defineStore("Leave", () => {
|
||||||
|
|
||||||
//ดึงข้อมูล profile จาก API
|
//ดึงข้อมูล profile จาก API
|
||||||
async function fetchProfile() {
|
async function fetchProfile() {
|
||||||
showLoader();
|
// showLoader();
|
||||||
|
isLoadingProfile.value = true;
|
||||||
await http
|
await http
|
||||||
.post(config.API.leaveProfile(), { type: typeId.value })
|
.post(config.API.leaveProfile(), { type: typeId.value })
|
||||||
.then((res: any) => {
|
.then((res: any) => {
|
||||||
|
|
@ -345,7 +347,8 @@ export const useLeaveStore = defineStore("Leave", () => {
|
||||||
console.log(e);
|
console.log(e);
|
||||||
})
|
})
|
||||||
.finally(() => {
|
.finally(() => {
|
||||||
hideLoader();
|
// hideLoader();
|
||||||
|
isLoadingProfile.value = false;
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -474,5 +477,6 @@ export const useLeaveStore = defineStore("Leave", () => {
|
||||||
converstType,
|
converstType,
|
||||||
|
|
||||||
fetchLeaveTypeData,
|
fetchLeaveTypeData,
|
||||||
|
isLoadingProfile,
|
||||||
};
|
};
|
||||||
});
|
});
|
||||||
|
|
|
||||||
|
|
@ -209,11 +209,92 @@ onMounted(async () => {
|
||||||
ข้อมูลการลา
|
ข้อมูลการลา
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<FormPart2 :model="model" />
|
<q-card
|
||||||
|
bordered
|
||||||
|
class="q-pa-md bg-grey-1"
|
||||||
|
v-if="dataStore.isLoadingProfile"
|
||||||
|
>
|
||||||
|
<div class="row q-col-gutter-sm">
|
||||||
|
<div class="col-12">
|
||||||
|
<div class="row q-col-gutter-sm">
|
||||||
|
<div class="col-md-4 col-xs-12">
|
||||||
|
<q-skeleton height="40px" />
|
||||||
|
</div>
|
||||||
|
<div class="col-md-4 col-xs-12">
|
||||||
|
<q-skeleton height="40px" />
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="col-md-6 col-xs-12">
|
||||||
|
<q-skeleton height="40px" />
|
||||||
|
</div>
|
||||||
|
<div class="col-md-6 col-xs-12">
|
||||||
|
<q-skeleton height="40px" />
|
||||||
|
</div>
|
||||||
|
<div class="col-md-4 col-xs-12">
|
||||||
|
<q-skeleton height="40px" />
|
||||||
|
</div>
|
||||||
|
<div class="col-md-4 col-xs-12">
|
||||||
|
<q-skeleton height="40px" />
|
||||||
|
</div>
|
||||||
|
<div class="col-md-4 col-xs-12">
|
||||||
|
<q-skeleton height="40px" />
|
||||||
|
</div>
|
||||||
|
<div class="col-md-4 col-xs-12">
|
||||||
|
<q-skeleton height="40px" />
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</q-card>
|
||||||
|
|
||||||
|
<FormPart2 v-else :model="model" />
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="col-12">
|
<div class="col-12" v-if="dataStore.isLoadingProfile">
|
||||||
|
<div style="display: flex; align-items: center">
|
||||||
|
<q-icon
|
||||||
|
name="mdi-numeric-3-circle"
|
||||||
|
size="20px"
|
||||||
|
color="primary"
|
||||||
|
/>
|
||||||
|
<div class="q-pl-sm text-weight-bold text-dark">กรอกข้อมูล</div>
|
||||||
|
</div>
|
||||||
|
<q-card bordered class="q-pa-md bg-grey-1">
|
||||||
|
<div class="row q-col-gutter-sm">
|
||||||
|
<div class="col-12">
|
||||||
|
<q-skeleton height="40px" />
|
||||||
|
</div>
|
||||||
|
<div class="col-12">
|
||||||
|
<div class="row q-col-gutter-sm">
|
||||||
|
<div class="col-md-3 col-xs-6">
|
||||||
|
<q-skeleton height="40px" />
|
||||||
|
</div>
|
||||||
|
<div class="col-md-3 col-xs-6">
|
||||||
|
<q-skeleton height="40px" />
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="col-12">
|
||||||
|
<div class="row q-col-gutter-sm">
|
||||||
|
<div class="col-md-3 col-xs-12">
|
||||||
|
<q-skeleton height="40px" />
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="col-12">
|
||||||
|
<q-skeleton height="40px" />
|
||||||
|
</div>
|
||||||
|
<div class="col-12">
|
||||||
|
<q-skeleton height="120px" />
|
||||||
|
</div>
|
||||||
|
<div class="col-12">
|
||||||
|
<q-skeleton height="40px" />
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</q-card>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="col-12" v-else>
|
||||||
<SickForm
|
<SickForm
|
||||||
v-if="model === 'LV-001' || model === 'LV-002'"
|
v-if="model === 'LV-001' || model === 'LV-002'"
|
||||||
v-model:type="model"
|
v-model:type="model"
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue