แก้ไขการแสดงผลการลา

This commit is contained in:
AnandaTon 2024-01-08 14:00:57 +07:00
parent 0cb80ca91d
commit 14217fd9af
6 changed files with 656 additions and 787 deletions

View file

@ -1,48 +1,36 @@
<script setup lang="ts"> <script setup lang="ts">
import { ref, reactive, watch } from "vue"; import { ref, reactive, watch } from "vue"
import { useQuasar } from "quasar"; 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 type*/ /** import type*/
import type { import type { FremDetail, FormDelete, FormDeleteRef, FromCancelDetail } from "@/modules/05_leave/interface/response/leave"
FremDetail,
FormDelete,
FormDeleteRef,
FromCancelDetail,
} from "@/modules/05_leave/interface/response/leave";
/** import componest*/ /** import componest*/
import FormLeave from "@/modules/05_leave/components/formDetail/formLeave.vue"; import FormLeave from "@/modules/05_leave/components/formDetail/formLeave.vue"
import FormChildbirth from "@/modules/05_leave/components/formDetail/formChildbirth.vue"; import FormChildbirth from "@/modules/05_leave/components/formDetail/formChildbirth.vue"
import FormHoliday from "@/modules/05_leave/components/formDetail/formHoliday.vue"; import FormHoliday from "@/modules/05_leave/components/formDetail/formHoliday.vue"
import FormUpasom from "@/modules/05_leave/components/formDetail/formUpasom.vue"; import FormUpasom from "@/modules/05_leave/components/formDetail/formUpasom.vue"
import FormHajj from "@/modules/05_leave/components/formDetail/formHajj.vue"; import FormHajj from "@/modules/05_leave/components/formDetail/formHajj.vue"
import FormCheckSelect from "@/modules/05_leave/components/formDetail/formCheckSelect.vue"; import FormCheckSelect from "@/modules/05_leave/components/formDetail/formCheckSelect.vue"
import FormStudy from "@/modules/05_leave/components/formDetail/formStudy.vue"; import FormStudy from "@/modules/05_leave/components/formDetail/formStudy.vue"
import FormLeaveToTraining from "@/modules/05_leave/components/formDetail/formLeaveToTraining.vue"; import FormLeaveToTraining from "@/modules/05_leave/components/formDetail/formLeaveToTraining.vue"
import FormLeaveToWorkInternational from "@/modules/05_leave/components/formDetail/formLeaveToWorkInternational.vue"; import FormLeaveToWorkInternational from "@/modules/05_leave/components/formDetail/formLeaveToWorkInternational.vue"
import FormSpouse from "@/modules/05_leave/components/formDetail/formSpouse.vue"; import FormSpouse from "@/modules/05_leave/components/formDetail/formSpouse.vue"
import FormVocationalRehabilitation from "@/modules/05_leave/components/formDetail/formVocationalRehabilitation.vue"; import FormVocationalRehabilitation from "@/modules/05_leave/components/formDetail/formVocationalRehabilitation.vue"
import FormCancel from "@/modules/05_leave/components/formDetail/formCancel.vue"; import FormCancel from "@/modules/05_leave/components/formDetail/formCancel.vue"
/** import stort*/ /** import stort*/
import { useCounterMixin } from "@/stores/mixin"; import { useCounterMixin } from "@/stores/mixin"
import { useLeaveStore } from "@/modules/05_leave/store"; import { useLeaveStore } from "@/modules/05_leave/store"
const dataStore = useLeaveStore(); const dataStore = useLeaveStore()
const { convertStatud } = dataStore; const { convertStatud } = dataStore
const mixin = useCounterMixin(); const mixin = useCounterMixin()
const { const { showLoader, hideLoader, messageError, date2Thai, success, dialogConfirm, calculateDurationYmd } = mixin
showLoader,
hideLoader,
messageError,
date2Thai,
success,
dialogConfirm,
} = mixin;
const $q = useQuasar(); const $q = useQuasar()
const props = defineProps({ const props = defineProps({
modal: { modal: {
@ -69,13 +57,13 @@ const props = defineProps({
type: Function, type: Function,
require: true, require: true,
}, },
}); })
const titleMain = ref<string>("รายละเอียดการลาของ"); const titleMain = ref<string>("รายละเอียดการลาของ")
const titleMainCancle = ref<string>("รายละเอียดการยกเลิกการลาของ"); const titleMainCancle = ref<string>("รายละเอียดการยกเลิกการลาของ")
const titleName = ref<string>(""); const titleName = ref<string>("")
/**checkForm Form การลา*/ /**checkForm Form การลา*/
const checkForm = ref<string>(""); const checkForm = ref<string>("")
/** Form รายละเอียดข้อมูล*/ /** Form รายละเอียดข้อมูล*/
const formData = reactive<FremDetail>({ const formData = reactive<FremDetail>({
@ -87,7 +75,7 @@ const formData = reactive<FremDetail>({
status: "", // status: "", //
leaveDateStart: new Date(), // leaveDateStart: new Date(), //
leaveDateEnd: new Date(), // leaveDateEnd: new Date(), //
leaveCount: 0, // leaveCount: "", //
leaveWrote: "", // leaveWrote: "", //
leaveAddress: "", // leaveAddress: "", //
leaveNumber: "", // leaveNumber: "", //
@ -96,7 +84,7 @@ const formData = reactive<FremDetail>({
leaveDraftDocument: "", // leaveDraftDocument: "", //
leaveLastStart: new Date(), // ( )(Auto) leaveLastStart: new Date(), // ( )(Auto)
leaveLastEnd: new Date(), // ( )(Auto) leaveLastEnd: new Date(), // ( )(Auto)
leaveTotal: 0, //(Auto) leaveTotal: "", //(Auto)
leavebirthDate: new Date(), //(Auto) leavebirthDate: new Date(), //(Auto)
leavegovernmentDate: new Date(), //(Auto) leavegovernmentDate: new Date(), //(Auto)
leaveSalary: 0, //(Auto) leaveSalary: 0, //(Auto)
@ -137,7 +125,7 @@ const formData = reactive<FremDetail>({
coupleDaySumTotalHistory: "", // () coupleDaySumTotalHistory: "", // ()
approveStep: "", approveStep: "",
dear: "", dear: "",
}); })
/** Form รายละเอียดข้อมูล*/ /** Form รายละเอียดข้อมูล*/
const formDataCancle = reactive<FromCancelDetail>({ const formDataCancle = reactive<FromCancelDetail>({
id: "", id: "",
@ -153,118 +141,102 @@ const formDataCancle = reactive<FromCancelDetail>({
leaveTotal: 0, leaveTotal: 0,
leaveStartDate: new Date(), leaveStartDate: new Date(),
leaveEndDate: new Date(), leaveEndDate: new Date(),
}); })
/** form ขอยกเลิก*/ /** form ขอยกเลิก*/
const formDelete = reactive<FormDelete>({ const formDelete = reactive<FormDelete>({
writeAt: "", writeAt: "",
reason: "", reason: "",
doc: null, doc: null,
}); })
/**Validate ข้อมูล */ /**Validate ข้อมูล */
const writeAtRef = ref<Object | null>(null); const writeAtRef = ref<Object | null>(null)
const reasonRef = ref<Object | null>(null); const reasonRef = ref<Object | null>(null)
const docRef = ref<Object | null>(null); const docRef = ref<Object | null>(null)
const formDeleteRef: FormDeleteRef = { const formDeleteRef: FormDeleteRef = {
writeAt: writeAtRef, writeAt: writeAtRef,
reason: reasonRef, reason: reasonRef,
doc: docRef, doc: docRef,
}; }
/** /**
* function เรยกขอมลการลา * function เรยกขอมลการลา
* @param id การลา * @param id การลา
*/ */
async function fetchDataDetail(id: string) { async function fetchDataDetail(id: string) {
showLoader(); showLoader()
await http await http
.get(config.API.leaveUserId(id), {}) .get(config.API.leaveUserId(id), {})
.then((res) => { .then(res => {
const data = res.data.result; const data = res.data.result
titleName.value = data.fullName ?? "-"; titleName.value = data.fullName ?? "-"
formData.id = data.id ?? "-"; formData.id = data.id ?? "-"
formData.leaveTypeName = data.leaveTypeName ?? "-"; formData.leaveTypeName = data.leaveTypeName ?? "-"
formData.leaveTypeId = data.leaveTypeId ?? "-"; formData.leaveTypeId = data.leaveTypeId ?? "-"
formData.fullname = data.fullName ?? "-"; formData.fullname = data.fullName ?? "-"
formData.dateSendLeave = formData.dateSendLeave = data.dateSendLeave && date2Thai(data.dateSendLeave)
data.dateSendLeave && date2Thai(data.dateSendLeave); formData.status = data.status ?? "-"
formData.status = data.status ?? "-"; formData.leaveDateStart = data.leaveStartDate && date2Thai(data.leaveStartDate)
formData.leaveDateStart = formData.leaveDateEnd = data.leaveEndDate && date2Thai(data.leaveEndDate)
data.leaveStartDate && date2Thai(data.leaveStartDate); formData.leaveCount = calculateDurationYmd(data.leaveStartDate, data.leaveEndDate)
formData.leaveDateEnd = data.leaveEndDate && date2Thai(data.leaveEndDate); formData.leaveWrote = data.leaveWrote ?? "-"
formData.leaveCount = data.leaveTotal ?? "-"; formData.leaveAddress = data.leaveAddress ?? "-"
formData.leaveWrote = data.leaveWrote ?? "-"; formData.leaveNumber = data.leaveNumber ?? "-"
formData.leaveAddress = data.leaveAddress ?? "-"; formData.leaveDetail = data.leaveDetail ?? "-"
formData.leaveNumber = data.leaveNumber ?? "-"; formData.leaveDocument = data.leaveDocument
formData.leaveDetail = data.leaveDetail ?? "-"; formData.leaveDraftDocument = data.leaveDraftDocument
formData.leaveDocument = data.leaveDocument; formData.leaveLastStart = data.leaveLastStart && date2Thai(data.leaveLastStart)
formData.leaveDraftDocument = data.leaveDraftDocument; formData.leaveLastEnd = data.leaveLastStart && date2Thai(data.leaveLastEnd)
formData.leaveLastStart = // formData.leaveTotal = calculateDurationYmd(data.leaveStartDate, data.leaveEndDate)
data.leaveLastStart && date2Thai(data.leaveLastStart); formData.leaveTotal = data.leaveTotal
formData.leaveLastEnd = formData.leavebirthDate = data.leaveBirthDate && date2Thai(data.leaveBirthDate)
data.leaveLastStart && date2Thai(data.leaveLastEnd); formData.leavegovernmentDate = data.leaveGovernmentDate && date2Thai(data.leaveGovernmentDate)
formData.leaveTotal = data.leaveTotal; formData.leaveSalary = data.leaveSalary ? data.leaveSalary.toLocaleString("th-TH") : "-"
formData.leavebirthDate = formData.leaveSalaryText = data.leaveSalaryText ?? "-"
data.leaveBirthDate && date2Thai(data.leaveBirthDate); formData.wifeDayName = data.wifeDayName ?? "-"
formData.leavegovernmentDate = formData.wifeDayDateBorn = data.wifeDayDateBorn && date2Thai(data.wifeDayDateBorn)
data.leaveGovernmentDate && date2Thai(data.leaveGovernmentDate); formData.restDayOldTotal = data.restDayOldTotal ?? "-"
formData.leaveSalary = data.leaveSalary ?? "-"; formData.restDayCurrentTotal = data.restDayCurrentTotal ?? "-"
formData.leaveSalaryText = data.leaveSalaryText ?? "-"; formData.ordainDayStatus = data.ordainDayStatus ? "เคย" : "ไม่เคยบวช"
formData.wifeDayName = data.wifeDayName ?? "-"; formData.ordainDayLocationName = data.ordainDayLocationName ?? "-"
formData.wifeDayDateBorn = formData.ordainDayLocationAddress = data.ordainDayLocationAddress ?? "-"
data.wifeDayDateBorn && date2Thai(data.wifeDayDateBorn); formData.ordainDayLocationNumber = data.ordainDayLocationNumber ?? "-"
formData.restDayOldTotal = data.restDayOldTotal ?? "-"; formData.ordainDayOrdination = data.ordainDayOrdination && date2Thai(data.ordainDayOrdination)
formData.restDayCurrentTotal = data.restDayCurrentTotal ?? "-"; formData.ordainDayBuddhistLentName = data.ordainDayBuddhistLentName ?? "-"
formData.ordainDayStatus = data.ordainDayStatus ? "เคย" : "ไม่เคยบวช"; formData.ordainDayBuddhistLentAddress = data.ordainDayBuddhistLentAddress ?? "-"
formData.ordainDayLocationName = data.ordainDayLocationName ?? "-"; formData.hajjDayStatus = data.hajjDayStatus ? "เคย" : "ไม่เคยไปประกอบพิธีฮัจญ์"
formData.ordainDayLocationAddress = data.ordainDayLocationAddress ?? "-"; formData.absentDaySummon = data.absentDaySummon ?? "-"
formData.ordainDayLocationNumber = data.ordainDayLocationNumber ?? "-"; formData.absentDayLocation = data.absentDayLocation ?? "-"
formData.ordainDayOrdination = formData.absentDayRegistorDate = data.absentDayRegistorDate && date2Thai(data.absentDayRegistorDate)
data.ordainDayOrdination && date2Thai(data.ordainDayOrdination); formData.absentDayGetIn = data.absentDayGetIn ?? "-"
formData.ordainDayBuddhistLentName = formData.absentDayAt = data.absentDayAt ?? "-"
data.ordainDayBuddhistLentName ?? "-"; formData.studyDaySubject = data.studyDaySubject ?? "-"
formData.ordainDayBuddhistLentAddress = formData.studyDayDegreeLevel = data.studyDayDegreeLevel ?? "-"
data.ordainDayBuddhistLentAddress ?? "-"; formData.studyDayUniversityName = data.studyDayUniversityName ?? "-"
formData.hajjDayStatus = data.hajjDayStatus formData.studyDayTrainingSubject = data.studyDayTrainingSubject ?? "-" ?? "-"
? "เคย" formData.studyDayTrainingName = data.studyDayTrainingName ?? "-"
: "ไม่เคยไปประกอบพิธีฮัจญ์"; formData.studyDayCountry = data.studyDayCountry ?? "-"
formData.absentDaySummon = data.absentDaySummon ?? "-"; formData.studyDayScholarship = data.studyDayScholarship ?? "-"
formData.absentDayLocation = data.absentDayLocation ?? "-"; formData.coupleDayName = data.coupleDayName ?? "-"
formData.absentDayRegistorDate = formData.coupleDayPosition = data.coupleDayPosition ?? "-"
data.absentDayRegistorDate && date2Thai(data.absentDayRegistorDate); formData.coupleDayLevel = data.coupleDayLevel ?? "-"
formData.absentDayGetIn = data.absentDayGetIn ?? "-"; formData.coupleDayLevelCountry = data.coupleDayLevelCountry ?? "-"
formData.absentDayAt = data.absentDayAt ?? "-"; formData.coupleDayCountryHistory = data.coupleDayCountryHistory ?? "-"
formData.studyDaySubject = data.studyDaySubject ?? "-"; formData.coupleDayTotalHistory = data.coupleDayTotalHistory ?? "-"
formData.studyDayDegreeLevel = data.studyDayDegreeLevel ?? "-"; formData.coupleDayStartDateHistory = data.coupleDayStartDateHistory && date2Thai(data.coupleDayStartDateHistory)
formData.studyDayUniversityName = data.studyDayUniversityName ?? "-"; formData.coupleDayEndDateHistory = data.coupleDayEndDateHistory && date2Thai(data.coupleDayEndDateHistory)
formData.studyDayTrainingSubject = formData.coupleDaySumTotalHistory = data.coupleDaySumTotalHistory ?? "-"
data.studyDayTrainingSubject ?? "-" ?? "-"; formData.approveStep = data.approveStep ?? "-"
formData.studyDayTrainingName = data.studyDayTrainingName ?? "-"; formData.dear = data.dear ?? "-"
formData.studyDayCountry = data.studyDayCountry ?? "-"; checkLeaveType(formData.leaveTypeId, formData.leaveTypeName, formData.ordainDayLocationName, formData.studyDayTrainingSubject)
formData.studyDayScholarship = data.studyDayScholarship ?? "-";
formData.coupleDayName = data.coupleDayName ?? "-";
formData.coupleDayPosition = data.coupleDayPosition ?? "-";
formData.coupleDayLevel = data.coupleDayLevel ?? "-";
formData.coupleDayLevelCountry = data.coupleDayLevelCountry ?? "-";
formData.coupleDayCountryHistory = data.coupleDayCountryHistory ?? "-";
formData.coupleDayTotalHistory = data.coupleDayTotalHistory ?? "-";
formData.coupleDayStartDateHistory =
data.coupleDayStartDateHistory &&
date2Thai(data.coupleDayStartDateHistory);
formData.coupleDayEndDateHistory =
data.coupleDayEndDateHistory && date2Thai(data.coupleDayEndDateHistory);
formData.coupleDaySumTotalHistory = data.coupleDaySumTotalHistory ?? "-";
formData.approveStep = data.approveStep ?? "-";
formData.dear = data.dear ?? "-";
checkLeaveType(formData.leaveTypeId, formData.leaveTypeName);
}) })
.catch((err) => { .catch(err => {
props.onClickClose?.(); props.onClickClose?.()
messageError($q, err); messageError($q, err)
}) })
.finally(() => { .finally(() => {
hideLoader(); hideLoader()
}); })
} }
/** /**
@ -272,32 +244,38 @@ async function fetchDataDetail(id: string) {
* @param leaveTypeId ประเภทการลา * @param leaveTypeId ประเภทการลา
* @param leaveTypeName ประเภทการลา * @param leaveTypeName ประเภทการลา
*/ */
function checkLeaveType(leaveTypeId: string, leaveTypeName: string) { function checkLeaveType(leaveTypeId: string, leaveTypeName: string, ordainDayLocationName: string, studyDayTrainingSubject: string) {
console.log(leaveTypeName)
console.log(leaveTypeId)
console.log(ordainDayLocationName)
if (props.leaveType) { if (props.leaveType) {
const filtertype = props.leaveType.find((e: any) => e.id === leaveTypeId); const filtertype = props.leaveType.find((e: any) => e.id === leaveTypeId)
const type = filtertype.code; const type = filtertype.code
console.log(type)
if (type === "LV-001" || type === "LV-002" || type === "LV-003") { if (type === "LV-001" || type === "LV-002" || type === "LV-003") {
checkForm.value = "FormLeave"; checkForm.value = "FormLeave"
} else if (type === "LV-004") { } else if (type === "LV-004") {
checkForm.value = "FormChildbirth"; checkForm.value = "FormChildbirth"
} else if (type === "LV-005") { } else if (type === "LV-005") {
checkForm.value = "FormHoliday"; checkForm.value = "FormHoliday"
} else if (type === "LV-006" && ordainDayLocationName === "") {
checkForm.value = "FormHajj"
} else if (type === "LV-006") { } else if (type === "LV-006") {
checkForm.value = "FormUpasom"; checkForm.value = "FormUpasom"
} else if (type === "LV-006" && leaveTypeName === "พิธีฮัจญ์ฯ") {
checkForm.value = "FormHajj";
} else if (type === "LV-007") { } else if (type === "LV-007") {
checkForm.value = "FormCheckSelect"; checkForm.value = "FormCheckSelect"
} else if (type === "LV-008" && leaveTypeName === "ลาไปศีกษา") { } else if (type === "LV-008" && studyDayTrainingSubject === "") {
checkForm.value = "FormStudy"; checkForm.value = "FormStudy"
} else if (type === "LV-008") { } else if (type === "LV-008") {
checkForm.value = "FormLeaveToTraining"; checkForm.value = "FormLeaveToTraining"
} else if (type === "LV-009") { } else if (type === "LV-009") {
checkForm.value = "FormLeaveToWorkInternational"; checkForm.value = "FormLeaveToWorkInternational"
} else if (type === "LV-010") { } else if (type === "LV-010") {
checkForm.value = "FormSpouse"; checkForm.value = "FormSpouse"
} else if (type === "LV-011") { } else if (type === "LV-011") {
checkForm.value = "FormVocationalRehabilitation"; checkForm.value = "FormVocationalRehabilitation"
} }
} }
} }
@ -307,99 +285,95 @@ function checkLeaveType(leaveTypeId: string, leaveTypeName: string) {
* @param id ยกเลกการลา * @param id ยกเลกการลา
*/ */
async function fetchDataCancelDetail(id: string) { async function fetchDataCancelDetail(id: string) {
showLoader(); showLoader()
await http await http
.get(config.API.leaveCancelById(id)) .get(config.API.leaveCancelById(id))
.then((res) => { .then(res => {
const data = res.data.result; const data = res.data.result
formDataCancle.leaveTypeName = data.leaveTypeName ?? "-"; formDataCancle.leaveTypeName = data.leaveTypeName ?? "-"
formDataCancle.leaveWrote = data.leaveWrote ?? "-"; formDataCancle.leaveWrote = data.leaveWrote ?? "-"
formDataCancle.fullname = data.fullName ?? "-"; formDataCancle.fullname = data.fullName ?? "-"
formDataCancle.status = convertStatud(data.status) ?? "-"; formDataCancle.status = convertStatud(data.status) ?? "-"
formDataCancle.leaveStartDate = formDataCancle.leaveStartDate = data.leaveStartDate && date2Thai(data.leaveStartDate)
data.leaveStartDate && date2Thai(data.leaveStartDate); formDataCancle.leaveEndDate = data.leaveEndDate && date2Thai(data.leaveEndDate)
formDataCancle.leaveEndDate = formDataCancle.leaveTotal = data.leaveTotal ?? "-"
data.leaveEndDate && date2Thai(data.leaveEndDate); formDataCancle.leaveAddress = data.leaveAddress ?? "-"
formDataCancle.leaveTotal = data.leaveTotal ?? "-"; formDataCancle.leaveNumber = data.leaveNumber ?? "-"
formDataCancle.leaveAddress = data.leaveAddress ?? "-"; formDataCancle.leaveResonDelete = data.leaveReasonDelete ?? "-"
formDataCancle.leaveNumber = data.leaveNumber ?? "-"; formDataCancle.leaveDetail = data.leaveDetail ?? "-"
formDataCancle.leaveResonDelete = data.leaveReasonDelete ?? "-"; formDataCancle.leaveDocDelete = data.leaveDocDelete ?? null
formDataCancle.leaveDetail = data.leaveDetail ?? "-";
formDataCancle.leaveDocDelete = data.leaveDocDelete ?? null;
console.log(res); console.log(res)
}) })
.catch((err) => { .catch(err => {
messageError($q, err); messageError($q, err)
}) })
.finally(() => { .finally(() => {
hideLoader(); hideLoader()
}); })
} }
/** function ยินยันการบันทึกข้อมูล*/ /** function ยินยันการบันทึกข้อมูล*/
async function onClickSave() { async function onClickSave() {
const hasError = []; const hasError = []
for (const key in formDeleteRef) { for (const key in formDeleteRef) {
if (Object.prototype.hasOwnProperty.call(formDeleteRef, key)) { if (Object.prototype.hasOwnProperty.call(formDeleteRef, key)) {
const property = formDeleteRef[key]; const property = formDeleteRef[key]
if (property.value && typeof property.value.validate === "function") { if (property.value && typeof property.value.validate === "function") {
const isValid = property.value.validate(); const isValid = property.value.validate()
hasError.push(isValid); hasError.push(isValid)
} }
} }
} }
if (hasError.every((result) => result === true)) { if (hasError.every(result => result === true)) {
dialogConfirm( dialogConfirm(
$q, $q,
() => { () => {
onSubmit(); onSubmit()
}, },
"ยืนยันการบันทึกข้อมูล", "ยืนยันการบันทึกข้อมูล",
"ต้องการยินยันการบันทึกข้อมูลนี้หรือไม่ ?" "ต้องการยินยันการบันทึกข้อมูลนี้หรือไม่ ?"
); )
} else { } else {
console.log(hasError); console.log(hasError)
} }
} }
/** function บันทึกข้อมูล*/ /** function บันทึกข้อมูล*/
async function onSubmit() { async function onSubmit() {
showLoader(); showLoader()
const id = props.leaveId ? props.leaveId : ""; const id = props.leaveId ? props.leaveId : ""
const formData = new FormData(); const formData = new FormData()
formData.append("leaveWrote", formDelete.writeAt); formData.append("leaveWrote", formDelete.writeAt)
formData.append("reason", formDelete.reason); formData.append("reason", formDelete.reason)
formData.append("doc", formDelete.doc); formData.append("doc", formDelete.doc)
await http await http
.post(config.API.leaveCancelById(id), formData) .post(config.API.leaveCancelById(id), formData)
.then(() => { .then(() => {
success($q, "บันทึกข้อมูลสำเร็จ"); success($q, "บันทึกข้อมูลสำเร็จ")
props.onClickClose?.(); props.onClickClose?.()
}) })
.catch((err) => { .catch(err => {
messageError($q, err); messageError($q, err)
}) })
.finally(() => { .finally(() => {
props.fetchDataTable?.(); props.fetchDataTable?.()
hideLoader(); hideLoader()
}); })
} }
watch( watch(
() => props.modal, () => props.modal,
() => { () => {
if (props.modal === true) { if (props.modal === true) {
formDelete.writeAt = ""; formDelete.writeAt = ""
formDelete.reason = ""; formDelete.reason = ""
formDelete.doc = null; formDelete.doc = null
props.leaveStatus === "DELETE" props.leaveStatus === "DELETE" ? props.leaveId && fetchDataCancelDetail(props.leaveId) : props.leaveId && fetchDataDetail(props.leaveId)
? props.leaveId && fetchDataCancelDetail(props.leaveId)
: props.leaveId && fetchDataDetail(props.leaveId);
} }
} }
); )
</script> </script>
<template> <template>
@ -408,38 +382,20 @@ watch(
<q-card-section class="row items-center q-pa-sm"> <q-card-section class="row items-center q-pa-sm">
<div class="text-bold q-pl-sm">{{ titleMain }}{{ titleName }}</div> <div class="text-bold q-pl-sm">{{ titleMain }}{{ titleName }}</div>
<q-space /> <q-space />
<q-btn <q-btn icon="close" unelevated round dense @click="props.onClickClose" style="color: #ff8080; background-color: #ffdede" />
icon="close"
unelevated
round
dense
@click="props.onClickClose"
style="color: #ff8080; background-color: #ffdede"
/>
</q-card-section> </q-card-section>
<q-separator /> <q-separator />
<q-card-section class="q-p-md row q-gutter-y-md"> <q-card-section class="q-p-md row q-gutter-y-md">
<div <div flat :class="props.leaveStatus === 'CANCEL' ? 'col-xs-6 col-sm-6' : 'col-12'">
flat
:class="
props.leaveStatus === 'CANCEL' ? 'col-xs-6 col-sm-6' : 'col-12'
"
>
<div class="col-12 q-col-gutter-sm row items-center"></div> <div class="col-12 q-col-gutter-sm row items-center"></div>
<!-- ลาปวย ลาคลอดบตร และลากจสวนต --> <!-- ลาปวย ลาคลอดบตร และลากจสวนต -->
<FormLeave v-if="checkForm === 'FormLeave'" :data="formData" /> <FormLeave v-if="checkForm === 'FormLeave'" :data="formData" />
<!-- ลาไปชวยเหลอภรยาทคลอดบตร --> <!-- ลาไปชวยเหลอภรยาทคลอดบตร -->
<FormChildbirth <FormChildbirth v-else-if="checkForm === 'FormChildbirth'" :data="formData" />
v-else-if="checkForm === 'FormChildbirth'"
:data="formData"
/>
<!-- ลาพกผอน --> <!-- ลาพกผอน -->
<FormHoliday <FormHoliday v-else-if="checkForm === 'FormHoliday'" :data="formData" />
v-else-if="checkForm === 'FormHoliday'"
:data="formData"
/>
<!-- ลาอปสมบท --> <!-- ลาอปสมบท -->
<FormUpasom v-else-if="checkForm === 'FormUpasom'" :data="formData" /> <FormUpasom v-else-if="checkForm === 'FormUpasom'" :data="formData" />
@ -448,70 +404,28 @@ watch(
<FormHajj v-else-if="checkForm === 'FormHajj'" :data="formData" /> <FormHajj v-else-if="checkForm === 'FormHajj'" :data="formData" />
<!-- ลาเขารบการตรวจเลอกหรอเขารบการเตรยมพล --> <!-- ลาเขารบการตรวจเลอกหรอเขารบการเตรยมพล -->
<FormCheckSelect <FormCheckSelect v-else-if="checkForm === 'FormCheckSelect'" :data="formData" />
v-else-if="checkForm === 'FormCheckSelect'"
:data="formData"
/>
<!-- ลาไปศกษา --> <!-- ลาไปศกษา -->
<FormStudy v-else-if="checkForm === 'FormStudy'" :data="formData" /> <FormStudy v-else-if="checkForm === 'FormStudy'" :data="formData" />
<!-- ลาไปฝกอบรม ปฏการว หรอดงาน --> <!-- ลาไปฝกอบรม ปฏการว หรอดงาน -->
<FormLeaveToTraining <FormLeaveToTraining v-else-if="checkForm === 'FormLeaveToTraining'" :data="formData" />
v-else-if="checkForm === 'FormLeaveToTraining'"
:data="formData"
/>
<!-- ลาไปปฏงานในองคการระหวางประเทศ --> <!-- ลาไปปฏงานในองคการระหวางประเทศ -->
<FormLeaveToWorkInternational <FormLeaveToWorkInternational v-else-if="checkForm === 'FormLeaveToWorkInternational'" :data="formData" />
v-else-if="checkForm === 'FormLeaveToWorkInternational'"
:data="formData"
/>
<!-- ลาตดตามคสมรส --> <!-- ลาตดตามคสมรส -->
<FormSpouse v-else-if="checkForm === 'FormSpouse'" :data="formData" /> <FormSpouse v-else-if="checkForm === 'FormSpouse'" :data="formData" />
<!-- ลาไปฟนฟสมรรถภาพดานอาช --> <!-- ลาไปฟนฟสมรรถภาพดานอาช -->
<FormVocationalRehabilitation <FormVocationalRehabilitation v-else-if="checkForm === 'FormVocationalRehabilitation'" :data="formData" />
v-else-if="checkForm === 'FormVocationalRehabilitation'"
:data="formData"
/>
</div> </div>
<div <div flat class="col-xs-6 col-sm-6" v-if="props.leaveStatus === 'CANCEL'">
flat <q-input ref="writeAtRef" v-model="formDelete.writeAt" label="เขียนที่" :rules="[val => !!val || 'กรุณากรอกเขียนที่']" lazy-rules outlined dense />
class="col-xs-6 col-sm-6" <q-input ref="reasonRef" v-model="formDelete.reason" type="textarea" label="กรอกเหตุผล" :rules="[val => !!val || 'กรูณากรอกเหตุผล']" lazy-rules outlined dense />
v-if="props.leaveStatus === 'CANCEL'" <q-file ref="docRef" outlined v-model="formDelete.doc" label="เลือกไฟล์เอกสารหลักฐาน" :rules="[val => !!val || 'กรูณา เลือกไฟล์เอกสารหลักฐาน']" lazy-rules use-chips dense>
>
<q-input
ref="writeAtRef"
v-model="formDelete.writeAt"
label="เขียนที่"
:rules="[(val) => !!val || 'กรุณากรอกเขียนที่']"
lazy-rules
outlined
dense
/>
<q-input
ref="reasonRef"
v-model="formDelete.reason"
type="textarea"
label="กรอกเหตุผล"
:rules="[(val) => !!val || 'กรูณากรอกเหตุผล']"
lazy-rules
outlined
dense
/>
<q-file
ref="docRef"
outlined
v-model="formDelete.doc"
label="เลือกไฟล์เอกสารหลักฐาน"
:rules="[(val) => !!val || 'กรูณา เลือกไฟล์เอกสารหลักฐาน']"
lazy-rules
use-chips
dense
>
<template v-slot:prepend> <template v-slot:prepend>
<q-icon name="attach_file" /> <q-icon name="attach_file" />
</template> </template>
@ -519,36 +433,17 @@ watch(
</div> </div>
</q-card-section> </q-card-section>
<q-separator /> <q-separator />
<q-card-section <q-card-section class="row items-center q-pa-sm" v-if="props.leaveStatus === 'CANCEL'">
class="row items-center q-pa-sm"
v-if="props.leaveStatus === 'CANCEL'"
>
<q-space /> <q-space />
<q-btn <q-btn label="ยืนยัน" unelevated color="secondary" dense class="q-px-md" @click="onClickSave" />
label="ยืนยัน"
unelevated
color="secondary"
dense
class="q-px-md"
@click="onClickSave"
/>
</q-card-section> </q-card-section>
</q-card> </q-card>
<q-card q-card style="min-width: 70%" v-if="props.leaveStatus === 'DELETE'"> <q-card q-card style="min-width: 70%" v-if="props.leaveStatus === 'DELETE'">
<q-card-section class="row items-center q-pa-sm"> <q-card-section class="row items-center q-pa-sm">
<div class="text-bold q-pl-sm"> <div class="text-bold q-pl-sm">{{ titleMainCancle }}{{ titleName }}</div>
{{ titleMainCancle }}{{ titleName }}
</div>
<q-space /> <q-space />
<q-btn <q-btn icon="close" unelevated round dense @click="props.onClickClose" style="color: #ff8080; background-color: #ffdede" />
icon="close"
unelevated
round
dense
@click="props.onClickClose"
style="color: #ff8080; background-color: #ffdede"
/>
</q-card-section> </q-card-section>
<q-separator /> <q-separator />
<q-card-section class="q-p-md row q-gutter-y-md"> <q-card-section class="q-p-md row q-gutter-y-md">

View file

@ -4,7 +4,7 @@ const props = defineProps({
type: Object, type: Object,
required: true, required: true,
}, },
}); })
</script> </script>
<template> <template>
<q-card-section> <q-card-section>
@ -34,18 +34,16 @@ const props = defineProps({
<div class="col">{{ props.data.leaveDetail }}</div> <div class="col">{{ props.data.leaveDetail }}</div>
</div> </div>
<div class="row"> <div class="row">
<div class="col text-grey-8">เอกสารแน</div> <div class="col text-grey-8">เอกสารประกอ</div>
<div class="col" v-if="props.data.leaveDocument"> <div class="col" v-if="props.data.leaveDocument">
<q-btn <q-btn :href="props.data.leaveDocument" target="_blank" outline color="blue" label="ดาวน์โหลด" size="12px"> <q-tooltip>ดาวนโหลดไฟล</q-tooltip></q-btn>
:href="props.data.leaveDocument" </div>
target="_blank" <div class="col" v-else>-</div>
outline </div>
color="blue" <div class="row">
label="ดาวน์โหลด" <div class="col text-grey-8">เอกสารแบบฟอร</div>
size="12px" <div class="col" v-if="props.data.leaveDraftDocument">
> <q-btn :href="props.data.leaveDraftDocument" target="_blank" outline color="blue" label="ดาวน์โหลด" size="12px"> <q-tooltip>ดาวนโหลดไฟล</q-tooltip></q-btn>
<q-tooltip>ดาวนโหลดไฟล</q-tooltip></q-btn
>
</div> </div>
<div class="col" v-else>-</div> <div class="col" v-else>-</div>
</div> </div>

View file

@ -4,7 +4,7 @@ const props = defineProps({
type: Object, type: Object,
required: true, required: true,
}, },
}); })
</script> </script>
<template> <template>
<q-card-section> <q-card-section>
@ -43,9 +43,7 @@ const props = defineProps({
</div> </div>
<div class="row"> <div class="row">
<div class="col text-grey-8">เงนเดอนปจจ</div> <div class="col text-grey-8">เงนเดอนปจจ</div>
<div class="col"> <div class="col">{{ props.data.leaveSalary }} ({{ props.data.leaveSalaryText }})</div>
{{ props.data.leaveSalary }} ({{ props.data.leaveSalaryText }})
</div>
</div> </div>
<div class="row"> <div class="row">
<div class="col text-grey-8">อคสมรส</div> <div class="col text-grey-8">อคสมรส</div>
@ -87,16 +85,7 @@ const props = defineProps({
<div class="row"> <div class="row">
<div class="col text-grey-8">เอกสารแนบ</div> <div class="col text-grey-8">เอกสารแนบ</div>
<div class="col" v-if="props.data.leaveDocument"> <div class="col" v-if="props.data.leaveDocument">
<q-btn <q-btn :href="props.data.leaveDocument" target="_blank" outline color="blue" label="ดาวน์โหลด" size="12px"> <q-tooltip>ดาวนโหลดไฟล</q-tooltip></q-btn>
:href="props.data.leaveDocument"
target="_blank"
outline
color="blue"
label="ดาวน์โหลด"
size="12px"
>
<q-tooltip>ดาวนโหลดไฟล</q-tooltip></q-btn
>
</div> </div>
<div class="col" v-else>-</div> <div class="col" v-else>-</div>
</div> </div>

View file

@ -4,7 +4,7 @@ const props = defineProps({
type: Object, type: Object,
required: true, required: true,
}, },
}); })
</script> </script>
<template> <template>
@ -44,9 +44,7 @@ const props = defineProps({
</div> </div>
<div class="row"> <div class="row">
<div class="col text-grey-8">เงนเดอนปจจ</div> <div class="col text-grey-8">เงนเดอนปจจ</div>
<div class="col"> <div class="col">{{ props.data.leaveSalary }} ({{ props.data.leaveSalaryText }})</div>
{{ props.data.leaveSalary }} ({{ props.data.leaveSalaryText }})
</div>
</div> </div>
<div class="row"> <div class="row">
<div class="col text-grey-8">กษาวชา</div> <div class="col text-grey-8">กษาวชา</div>
@ -83,16 +81,7 @@ const props = defineProps({
<div class="row"> <div class="row">
<div class="col text-grey-8">เอกสารแนบ</div> <div class="col text-grey-8">เอกสารแนบ</div>
<div class="col" v-if="props.data.leaveDocument"> <div class="col" v-if="props.data.leaveDocument">
<q-btn <q-btn :href="props.data.leaveDocument" target="_blank" outline color="blue" label="ดาวน์โหลด" size="12px"> <q-tooltip>ดาวนโหลดไฟล</q-tooltip></q-btn>
:href="props.data.leaveDocument"
target="_blank"
outline
color="blue"
label="ดาวน์โหลด"
size="12px"
>
<q-tooltip>ดาวนโหลดไฟล</q-tooltip></q-btn
>
</div> </div>
<div class="col" v-else>-</div> <div class="col" v-else>-</div>
</div> </div>

View file

@ -4,7 +4,7 @@ const props = defineProps({
type: Object, type: Object,
required: true, required: true,
}, },
}); })
</script> </script>
<template> <template>
<q-card-section> <q-card-section>
@ -34,18 +34,16 @@ const props = defineProps({
<div class="col">{{ props.data.leaveDetail }}</div> <div class="col">{{ props.data.leaveDetail }}</div>
</div> </div>
<div class="row"> <div class="row">
<div class="col text-grey-8">เอกสารแน</div> <div class="col text-grey-8">เอกสารประกอ</div>
<div class="col" v-if="props.data.leaveDocument"> <div class="col" v-if="props.data.leaveDocument">
<q-btn <q-btn :href="props.data.leaveDocument" target="_blank" outline color="blue" label="ดาวน์โหลด" size="12px"> <q-tooltip>ดาวนโหลดไฟล</q-tooltip></q-btn>
:href="props.data.leaveDocument" </div>
target="_blank" <div class="col" v-else>-</div>
outline </div>
color="blue" <div class="row">
label="ดาวน์โหลด" <div class="col text-grey-8">เอกสารแบบฟอร</div>
size="12px" <div class="col" v-if="props.data.leaveDraftDocument">
> <q-btn :href="props.data.leaveDraftDocument" target="_blank" outline color="blue" label="ดาวน์โหลด" size="12px"> <q-tooltip>ดาวนโหลดไฟล</q-tooltip></q-btn>
<q-tooltip>ดาวนโหลดไฟล</q-tooltip></q-btn
>
</div> </div>
<div class="col" v-else>-</div> <div class="col" v-else>-</div>
</div> </div>

View file

@ -27,7 +27,7 @@ interface FremDetail {
status: string //สถานะการของลา status: string //สถานะการของลา
leaveDateStart: Date //วันเริ่มการลา leaveDateStart: Date //วันเริ่มการลา
leaveDateEnd: Date //วันสิ้นสุดการลา leaveDateEnd: Date //วันสิ้นสุดการลา
leaveCount: number //จำนวนวันลา leaveCount: string //จำนวนวันลา
leaveWrote: string //เขียนที่ leaveWrote: string //เขียนที่
leaveAddress: string //สถานที่ติดต่อขณะลา leaveAddress: string //สถานที่ติดต่อขณะลา
leaveNumber: string //หมายเลขที่ติดต่อขณะลา leaveNumber: string //หมายเลขที่ติดต่อขณะลา
@ -36,7 +36,7 @@ interface FremDetail {
leaveDraftDocument: string //อัปโหลดแบบฟอร์มการลา leaveDraftDocument: string //อัปโหลดแบบฟอร์มการลา
leaveLastStart: Date //ลาครั้งสุดท้ายในประเภทนั้น ๆ เริ่มเมื่อวันที่(ลาป่วย ลาคลอดบุตร และลากิจส่วนตัว)(Auto) leaveLastStart: Date //ลาครั้งสุดท้ายในประเภทนั้น ๆ เริ่มเมื่อวันที่(ลาป่วย ลาคลอดบุตร และลากิจส่วนตัว)(Auto)
leaveLastEnd: Date //ลาครั้งสุดท้ายในประเภทนั้น ๆ สิ้นสุดเมื่อวันที่(ลาป่วย ลาคลอดบุตร และลากิจส่วนตัว)(Auto) leaveLastEnd: Date //ลาครั้งสุดท้ายในประเภทนั้น ๆ สิ้นสุดเมื่อวันที่(ลาป่วย ลาคลอดบุตร และลากิจส่วนตัว)(Auto)
leaveTotal: number //จำนวนวันที่ลา(Auto) leaveTotal: string //จำนวนวันที่ลา(Auto)
leavebirthDate: Date //วันเดือนปีเกิด(Auto) leavebirthDate: Date //วันเดือนปีเกิด(Auto)
leavegovernmentDate: Date //วันที่เข้ารับราชการ(Auto) leavegovernmentDate: Date //วันที่เข้ารับราชการ(Auto)
leaveSalary: number //เงินเดือนปัจจุบัน(Auto) leaveSalary: number //เงินเดือนปัจจุบัน(Auto)