รายละเอียดการลา

This commit is contained in:
DESKTOP-1R2VSQH\Lenovo ThinkPad E490 2023-12-14 09:59:17 +07:00
parent 7f3deec9e6
commit 80f04105a4
22 changed files with 475 additions and 307 deletions

View file

@ -21,11 +21,12 @@ export default {
leaveType: () => `${leave}/type`, leaveType: () => `${leave}/type`,
leaveList: () => `${leave}/admin`, leaveList: () => `${leave}/admin`,
leaveListDelete: () => `${leave}/admin/delete`, leaveListDelete: () => `${leave}/admin/delete`,
leaveListDeleteByid: (id: string) => `${leave}/user/delete/${id}`,
leaveListById: (id: string) => `${leave}/admin/${id}`, leaveListById: (id: string) => `${leave}/admin/${id}`,
leaveCalendar: () => `${leave}/user/calendar`, leaveCalendar: () => `${leave}/user/calendar`,
leaveApproveToComander: (id: string) => leaveApproveToComander: (id: string) =>
`${leave}/admin/approve/officer/${id}`, `${leave}/admin/approve/officer/${id}`,
leaveComanderApprove: (id: string) => `${leave}/admin/comander/${id}`, leaveComanderApprove: (id: string) => `${leave}/admin/approve/comander/${id}`,
leaveApprove: (id: string) => `${leave}/admin/approve/${id}`, leaveApprove: (id: string) => `${leave}/admin/approve/${id}`,
leaveReject: (id: string) => `${leave}/admin/reject/${id}`, leaveReject: (id: string) => `${leave}/admin/reject/${id}`,
}; };

View file

@ -11,8 +11,12 @@ 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 { useRouter } from "vue-router";
import keycloak from "@/plugins/keycloak";
import type { DataDateMonthObject } from "@/modules/09_leave/interface/response/leave"; import type {
DataDateMonthObject,
ResCalendar,
} from "@/modules/09_leave/interface/response/leave";
import { useCounterMixin } from "@/stores/mixin"; import { useCounterMixin } from "@/stores/mixin";
import { useLeavelistDataStore } from "@/modules/09_leave/stores/LeaveStore"; import { useLeavelistDataStore } from "@/modules/09_leave/stores/LeaveStore";
@ -23,6 +27,10 @@ const { showLoader, hideLoader, messageError, monthYear2Thai } = mixin;
const $q = useQuasar(); const $q = useQuasar();
const router = useRouter(); const router = useRouter();
const keycloakId = ref<string>(
keycloak.tokenParsed ? keycloak.tokenParsed.sub!.toString() : ""
);
/** /**
* Option ของปฏ * Option ของปฏ
*/ */
@ -62,7 +70,7 @@ const dateMonth = ref<DataDateMonthObject>({
month: new Date().getMonth(), month: new Date().getMonth(),
year: new Date().getFullYear(), year: new Date().getFullYear(),
}); });
const mainData = ref<any>([]); const mainData = ref<ResCalendar[]>([]);
async function fetchDataCalendar() { async function fetchDataCalendar() {
showLoader(); showLoader();
@ -74,22 +82,22 @@ async function fetchDataCalendar() {
mainData.value = res.data.result; mainData.value = res.data.result;
const double_name = [ const double_name = [
...new Set(mainData.value.map((item: any) => item.fullName)), ...new Set(mainData.value.map((item: ResCalendar) => item.keycloakId)),
]; ];
filterLists.value = [];
for (let i = 1; i <= double_name.length; i++) { for (let i = 1; i <= double_name.length; i++) {
filterLists.value = [];
const name = double_name[i - 1]; const name = double_name[i - 1];
const filterName = { const filterName = {
id: name, id: name,
name: name, name: convertKeycloakId(name),
color: name === "นางสาวสาวิตรี ศรีสมัย" ? "green" : "grey", color: name === keycloakId.value ? "green" : "grey",
}; };
filterLists.value.push(filterName); filterLists.value.push(filterName);
} }
const data = mainData.value.filter( const data = mainData.value.filter(
(e: any) => e.fullName === "นางสาวสาวิตรี ศรีสมัย" (e: any) => e.keycloakId === keycloakId.value
); );
const event = data.map((e: any) => ({ const event = data.map((e: any) => ({
@ -101,7 +109,6 @@ async function fetchDataCalendar() {
color: leaveStore.colorType(e.leaveTypeId), color: leaveStore.colorType(e.leaveTypeId),
textColor: "black", textColor: "black",
})); }));
console.log(event);
calendarOptions.value.events = event; calendarOptions.value.events = event;
}) })
@ -117,17 +124,24 @@ async function fetchDataCalendar() {
}); });
} }
function convertKeycloakId(id: any) {
const filterName = mainData.value.find(
(e: ResCalendar) => e.keycloakId === id
);
return filterName?.fullName;
}
// filter calendar left // filter calendar left
const filterLists = ref<any[]>([]); const filterLists = ref<any[]>([]);
const filterVal = ref(["นางสาวสาวิตรี ศรีสมัย"]); const filterVal = ref<any>([]);
watch( watch(
() => filterVal.value, () => filterVal.value,
() => { () => {
const eventData = filterVal.value.map((item: any) => { const eventData = filterVal.value.map((item: any) => {
return mainData.value return mainData.value
.filter((e: any) => e.fullName === item) .filter((e: ResCalendar) => e.keycloakId === item)
.map((e: any) => ({ .map((e: ResCalendar) => ({
id: e.id, id: e.id,
title: `${e.fullName} (${e.leaveTypeName}) `, title: `${e.fullName} (${e.leaveTypeName}) `,
start: e.leaveStartDate, start: e.leaveStartDate,
@ -137,7 +151,8 @@ watch(
allDay: true, allDay: true,
})); }));
}); });
calendarOptions.value.events = eventData[0]; const allEventData = [].concat(...eventData);
calendarOptions.value.events = allEventData;
} }
); );
@ -149,37 +164,14 @@ function redirectToDetail(id: string) {
* เรยกฟงกนทงหมดตอนเรยกใชไฟล * เรยกฟงกนทงหมดตอนเรยกใชไฟล
*/ */
onMounted(async () => { onMounted(async () => {
filterVal.value.push(keycloakId.value);
await fetchDataCalendar(); await fetchDataCalendar();
// if (fullCalendar !== undefined) {
// const calen = fullCalendar.value.getApi();
// const date = new Date(dateMonth.value.year, dateMonth.value.month);
// calen.gotoDate(date);
// }
}); });
async function changCalendar() { async function changCalendar() {
await fetchDataCalendar(); await fetchDataCalendar();
} }
/**
* props(นเดอนปเลอก) ตอนอพเดท าฏนใหพเดทใหม
*/
// watch(props, async (count, prevCount) => {
// const calen = fullCalendar.value.getApi();
// const date = new Date(props.dateYear, props.dateMonth);
// calen.gotoDate(date);
// });
/**
* งกนยกเล model
* @param text
*/
/**
* งกนเป model
* @param text
*/
const monthYearThai = (val: DataDateMonthObject) => { const monthYearThai = (val: DataDateMonthObject) => {
if (val == null) return ""; if (val == null) return "";
else return monthYear2Thai(val.month, val.year); else return monthYear2Thai(val.month, val.year);

View file

@ -130,7 +130,8 @@ const formData = reactive<FremData>({
coupleDayStartDateHistory: new Date(), // () coupleDayStartDateHistory: new Date(), // ()
coupleDayEndDateHistory: new Date(), // () coupleDayEndDateHistory: new Date(), // ()
coupleDaySumTotalHistory: "", // () coupleDaySumTotalHistory: "", // ()
step: "", approveStep: "",
dear: "",
}); });
onMounted(async () => { onMounted(async () => {
@ -153,8 +154,10 @@ async function fetchDetailLeave(paramsId: string) {
const data = res.data.result; const data = res.data.result;
console.log(data); console.log(data);
formData.id = data.id; formData.id = data.id;
formData.reasonCommander = data.reasonCommander; formData.reasonCommander = data.reasonCommander
formData.reasonOligarch = data.reasonOligarch; ? data.reasonCommander
: "-";
formData.reasonOligarch = data.reasonOligarch ? data.reasonOligarch : "-";
formData.positionName = data.positionName; formData.positionName = data.positionName;
formData.positionLevelName = data.positionLevelName; formData.positionLevelName = data.positionLevelName;
formData.organizationName = data.organizationName; formData.organizationName = data.organizationName;
@ -167,7 +170,7 @@ async function fetchDetailLeave(paramsId: string) {
data.leaveStartDate && date2Thai(data.leaveStartDate); data.leaveStartDate && date2Thai(data.leaveStartDate);
formData.leaveDateEnd = data.leaveEndDate && date2Thai(data.leaveEndDate); formData.leaveDateEnd = data.leaveEndDate && date2Thai(data.leaveEndDate);
formData.leaveCount = data.leaveCount; formData.leaveCount = data.leaveCount;
formData.status = data.status && data.status; formData.status = data.status && stores.convertSatatus(data.status);
formData.leaveLimit = data.leaveLimit; formData.leaveLimit = data.leaveLimit;
formData.leaveSummary = data.leaveSummary; formData.leaveSummary = data.leaveSummary;
formData.leaveRemain = data.leaveRemain; formData.leaveRemain = data.leaveRemain;
@ -229,7 +232,8 @@ async function fetchDetailLeave(paramsId: string) {
formData.coupleDayEndDateHistory = formData.coupleDayEndDateHistory =
data.coupleDayEndDateHistory && date2Thai(data.coupleDayEndDateHistory); data.coupleDayEndDateHistory && date2Thai(data.coupleDayEndDateHistory);
formData.coupleDaySumTotalHistory = data.coupleDaySumTotalHistory; formData.coupleDaySumTotalHistory = data.coupleDaySumTotalHistory;
formData.step = data.step; formData.approveStep = data.approveStep;
formData.dear = data.dear ? data.dear : "-";
await fectOptionType(); await fectOptionType();
/** ส่งประเภทของการลาไป Function เช็คประเภทการลา*/ /** ส่งประเภทของการลาไป Function เช็คประเภทการลา*/
@ -604,9 +608,9 @@ function clickSave(reason: string) {
bordered bordered
class="row col-12 text-dark q-mt-sm" class="row col-12 text-dark q-mt-sm"
v-if=" v-if="
formData.step === 'st3' || formData.approveStep === 'st3' ||
formData.step === 'st4' || formData.approveStep === 'st4' ||
formData.step === 'st5' formData.approveStep === 'st5'
" "
> >
<div <div
@ -620,7 +624,9 @@ function clickSave(reason: string) {
<div class="row col-12 q-pa-md"> <div class="row col-12 q-pa-md">
<div class="col-12 row bg-white q-col-gutter-md"> <div class="col-12 row bg-white q-col-gutter-md">
<div class="col-xs-6 row items-start"> <div class="col-xs-6 row items-start">
<div class="col-12 text-detail">-</div> <div class="col-12 text-detail">
{{ formData.reasonCommander }}
</div>
</div> </div>
</div> </div>
</div> </div>
@ -630,7 +636,9 @@ function clickSave(reason: string) {
<q-card <q-card
bordered bordered
class="row col-12 text-dark q-mt-sm" class="row col-12 text-dark q-mt-sm"
v-if="formData.step === 'st4' || formData.step === 'st5'" v-if="
formData.approveStep === 'st4' || formData.approveStep === 'st5'
"
> >
<div <div
class="bg-grey-1 q-pa-sm col-12 row items-center text-primary" class="bg-grey-1 q-pa-sm col-12 row items-center text-primary"
@ -646,13 +654,15 @@ function clickSave(reason: string) {
<div class="col-12 text-weight-bold text-top"> <div class="col-12 text-weight-bold text-top">
ผลการพจารณา ผลการพจารณา
</div> </div>
<div class="col-12 text-detail">อน</div> <div class="col-12 text-detail">{{ formData.status }}</div>
</div> </div>
<div class="col-xs-6 row items-start"> <div class="col-xs-6 row items-start">
<div class="col-12 text-weight-bold text-top"> <div class="col-12 text-weight-bold text-top">
ความคดเห ความคดเห
</div> </div>
<div class="col-12 text-detail">-</div> <div class="col-12 text-detail">
{{ formData.reasonOligarch }}
</div>
</div> </div>
</div> </div>
</div> </div>
@ -662,9 +672,12 @@ function clickSave(reason: string) {
</div> </div>
</div> </div>
<q-separator /> <q-separator />
<div class="row q-pa-md q-gutter-md justify-end"> <div
class="row q-pa-md q-gutter-md justify-end"
v-if="formData.status !== 'ยกเลิก'"
>
<q-btn <q-btn
v-if="formData.step === 'st1'" v-if="formData.approveStep === 'st1'"
unelevated unelevated
color="orange-5" color="orange-5"
label="ส่งไปยังผู้บังคับบัญชา" label="ส่งไปยังผู้บังคับบัญชา"
@ -673,7 +686,7 @@ function clickSave(reason: string) {
</q-btn> </q-btn>
<q-btn <q-btn
v-if="formData.step === 'st2'" v-if="formData.approveStep === 'st2'"
unelevated unelevated
color="orange-5" color="orange-5"
label="ส่งไปยังผู้มีอำนาจ" label="ส่งไปยังผู้มีอำนาจ"
@ -682,7 +695,7 @@ function clickSave(reason: string) {
</q-btn> </q-btn>
<q-btn <q-btn
v-if="formData.step === 'st3'" v-if="formData.approveStep === 'st3'"
unelevated unelevated
color="orange-5" color="orange-5"
label="ไม่อนุมัติ" label="ไม่อนุมัติ"
@ -690,7 +703,7 @@ function clickSave(reason: string) {
><q-tooltip>ไมอน</q-tooltip> ><q-tooltip>ไมอน</q-tooltip>
</q-btn> </q-btn>
<q-btn <q-btn
v-if="formData.step === 'st3'" v-if="formData.approveStep === 'st3'"
unelevated unelevated
color="primary" color="primary"
label="อนุมัติ" label="อนุมัติ"

View file

@ -2,6 +2,9 @@
import { ref, reactive, onMounted } from "vue"; import { ref, reactive, onMounted } from "vue";
import { useRoute, useRouter } from "vue-router"; import { useRoute, useRouter } from "vue-router";
import { useQuasar } from "quasar"; import { useQuasar } from "quasar";
import http from "@/plugins/http";
import config from "@/app.config";
/** importStore */ /** importStore */
import { useCounterMixin } from "@/stores/mixin"; import { useCounterMixin } from "@/stores/mixin";
import { useLeavelistDataStore } from "@/modules/09_leave/stores/LeaveStore"; import { useLeavelistDataStore } from "@/modules/09_leave/stores/LeaveStore";
@ -10,8 +13,11 @@ import DialogReason from "@/components/Dialogs/PopupReason.vue";
const APIDATA = useLeavelistDataStoreTest(); const APIDATA = useLeavelistDataStoreTest();
/** importType */ /** importType */
import type {
LeaveType,
FormReject,
} from "@/modules/09_leave/interface/response/leave";
import type { FremData } from "@/modules/09_leave/interface/request/leave"; import type { FremData } from "@/modules/09_leave/interface/request/leave";
/** importForm*/ /** importForm*/
import FormMain from "@/modules/09_leave/components/2_Leave/formDetail/formMain.vue"; // from import FormMain from "@/modules/09_leave/components/2_Leave/formDetail/formMain.vue"; // from
import FormLeave from "@/modules/09_leave/components/2_Leave/formDetail/formLeave.vue"; // import FormLeave from "@/modules/09_leave/components/2_Leave/formDetail/formLeave.vue"; //
@ -29,7 +35,8 @@ import FormVocationalRehabilitation from "@/modules/09_leave/components/2_Leave/
/** use */ /** use */
const $q = useQuasar(); const $q = useQuasar();
const mixin = useCounterMixin(); const mixin = useCounterMixin();
const { dialogConfirm, showLoader, hideLoader, date2Thai } = mixin; const { dialogConfirm, showLoader, hideLoader, date2Thai, messageError } =
mixin;
const stores = useLeavelistDataStore(); const stores = useLeavelistDataStore();
const router = useRouter(); const router = useRouter();
const route = useRoute(); const route = useRoute();
@ -51,6 +58,22 @@ function upLoadFile() {
} }
/** Form รายละเอียดข้อมูล*/ /** Form รายละเอียดข้อมูล*/
const formDataReject = reactive<FormReject>({
id: "", //*Id
leaveTypeName: "", //Name
fullName: "", //
status: "", //
leaveDocDelete: "", //
leaveResonDelete: "", //
leaveWrote: "", //
leaveAddress: "", //
leaveNumber: "", //
leaveDetail: "", //
leaveTotal: 0, //
leaveStartDate: new Date(), //
leaveEndDate: new Date(), //
});
const formData = reactive<FremData>({ const formData = reactive<FremData>({
id: "", //Id id: "", //Id
reasonCommander: "", // reasonCommander: "", //
@ -69,8 +92,6 @@ const formData = reactive<FremData>({
leaveLimit: 0, //() leaveLimit: 0, //()
leaveSummary: 0, //() leaveSummary: 0, //()
leaveRemain: 0, //() leaveRemain: 0, //()
// leaveStartDate: new Date(), //*
// leaveEndDate: new Date(), //*
leaveWrote: "", // leaveWrote: "", //
leaveAddress: "", // leaveAddress: "", //
leaveNumber: "", // leaveNumber: "", //
@ -118,13 +139,14 @@ const formData = reactive<FremData>({
coupleDayStartDateHistory: new Date(), // () coupleDayStartDateHistory: new Date(), // ()
coupleDayEndDateHistory: new Date(), // () coupleDayEndDateHistory: new Date(), // ()
coupleDaySumTotalHistory: "", // () coupleDaySumTotalHistory: "", // ()
step: "", approveStep: "",
dear: "",
}); });
onMounted(() => { onMounted(async () => {
// showLoader();
if (paramsId) { if (paramsId) {
fetchDetailLeave(paramsId); await fetchDetailDeleteLeave(paramsId);
await fetchDetailLeave(paramsId);
} }
}); });
@ -132,120 +154,184 @@ onMounted(() => {
* Function fetch รายละเอยดของขอม * Function fetch รายละเอยดของขอม
* @param paramsId ID จาก paramID * @param paramsId ID จาก paramID
*/ */
function fetchDetailLeave(paramsId: string) { async function fetchDetailDeleteLeave(paramsId: string) {
const dataAPI = APIDATA.data; showLoader();
const data = dataAPI.filter((e: any) => e.id === paramsId); await http
console.log(data); .get(config.API.leaveListDeleteByid(paramsId))
data.map((e: any) => { .then((res) => {
formData.id = e.id; const data = res.data.result;
formData.reasonCommander = e.reasonCommander; console.log(data.id);
formData.reasonOligarch = e.reasonOligarch; (formDataReject.id = data.id),
formData.positionName = e.positionName; (formDataReject.leaveTypeName = data.leaveTypeName),
formData.positionLevelName = e.positionLevelName; (formDataReject.fullName = data.fullName),
formData.organizationName = e.organizationName; (formDataReject.status = data.status);
formData.leaveTypeName = e.leaveTypeName (formDataReject.leaveDocDelete = data.leaveDocDelete),
? e.leaveTypeName (formDataReject.leaveResonDelete = data.leaveReasonDelete
: stores.convertLeave(e.leaveTypeId); ? data.leaveReasonDelete
formData.leaveTypeId = e.leaveTypeId; : "-"),
formData.fullName = e.fullname; (formDataReject.leaveWrote = data.leaveWrote),
formData.dateSendLeave = e.dateSendLeave && date2Thai(e.dateSendLeave); (formDataReject.leaveAddress = data.leaveAddress),
formData.leaveDateStart = e.leaveDateStart && date2Thai(e.leaveDateStart); (formDataReject.leaveNumber = data.leaveNumber),
formData.leaveDateEnd = e.leaveDateEnd && date2Thai(e.leaveDateEnd); (formDataReject.leaveDetail = data.leaveDetail),
formData.leaveCount = e.leaveCount; (formDataReject.leaveTotal = data.leaveTotal),
formData.status = e.status && e.status; (formDataReject.leaveStartDate = data.leaveStartDate),
formData.leaveLimit = e.leaveLimit; (formDataReject.leaveEndDate = data.leaveEndDate),
formData.leaveSummary = e.leaveSummary; console.log(formData);
formData.leaveRemain = e.leaveRemain; })
formData.leaveWrote = e.leaveWrote; .catch((err) => {
formData.leaveAddress = e.leaveAddress; messageError($q, err);
formData.leaveNumber = e.leaveNumber; })
formData.leaveDetail = e.leaveDetail; .finally(() => {
formData.leaveDocument = e.leaveDocument; hideLoader();
formData.leaveDraftDocument = e.leaveDraftDocument; });
formData.leaveLastStart = e.leaveLastStart && date2Thai(e.leaveLastStart);
formData.leaveLastEnd = e.leaveLastStart && date2Thai(e.leaveLastEnd);
formData.leaveTotal = e.leaveTotal;
formData.leavebirthDate = e.leavebirthDate && date2Thai(e.leavebirthDate);
formData.leavegovernmentDate =
e.leavegovernmentDate && date2Thai(e.leavegovernmentDate);
formData.leaveSalary = e.leaveSalary;
formData.leaveSalaryText = e.leaveSalaryText;
formData.leaveTypeDay =
e.leaveTypeDay && stores.convertLeaveDaytype(e.leaveTypeDay);
formData.wifeDayName = e.wifeDayName;
formData.wifeDayDateBorn =
e.wifeDayDateBorn && date2Thai(e.wifeDayDateBorn);
formData.restDayOldTotal = e.restDayOldTotal;
formData.restDayCurrentTotal = e.restDayCurrentTotal;
formData.ordainDayStatus = e.ordainDayStatus;
formData.ordainDayLocationName = e.ordainDayLocationName;
formData.ordainDayLocationAddress = e.ordainDayLocationAddress;
formData.ordainDayLocationNumber = e.ordainDayLocationNumber;
formData.ordainDayOrdination =
e.ordainDayOrdination && date2Thai(e.ordainDayOrdination);
formData.ordainDayBuddhistLentName = e.ordainDayBuddhistLentName;
formData.ordainDayBuddhistLentAddress = e.ordainDayBuddhistLentAddress;
formData.hajjDayStatus = e.hajjDayStatus;
formData.absentDaySummon = e.absentDaySummon;
formData.absentDayLocation = e.absentDayLocation;
formData.absentDayRegistorDate =
e.absentDayRegistorDate && date2Thai(e.absentDayRegistorDate);
formData.absentDayGetIn = e.absentDayGetIn;
formData.absentDayAt = e.absentDayAt;
formData.studyDaySubject = e.studyDaySubject;
formData.studyDayDegreeLevel = e.studyDayDegreeLevel;
formData.studyDayUniversityName = e.studyDayUniversityName;
formData.studyDayTrainingSubject = e.studyDayTrainingSubject;
formData.studyDayTrainingName = e.studyDayTrainingName;
formData.studyDayCountry = e.studyDayCountry;
formData.studyDayScholarship = e.studyDayScholarship;
formData.coupleDayName = e.coupleDayName;
formData.coupleDayPosition = e.coupleDayPosition;
formData.coupleDayLevel = e.coupleDayLevel;
formData.coupleDayLevelCountry = e.coupleDayLevelCountry;
formData.coupleDayCountryHistory = e.coupleDayCountryHistory;
formData.coupleDayTotalHistory = e.coupleDayTotalHistory;
formData.coupleDayStartDateHistory =
e.coupleDayStartDateHistory && date2Thai(e.coupleDayStartDateHistory);
formData.coupleDayEndDateHistory =
e.coupleDayEndDateHistory && date2Thai(e.coupleDayEndDateHistory);
formData.coupleDaySumTotalHistory = e.coupleDaySumTotalHistory;
formData.step = e.step;
});
/** ส่งประเภทของการลาไป Function เช็คประเภทการลา*/
checkLeaveType(formData.leaveTypeId ? formData.leaveTypeId : "");
// hideLoader();
} }
async function fetchDetailLeave(paramsId: string) {
showLoader();
await http
.get(config.API.leaveListById(paramsId))
.then(async (res) => {
const data = res.data.result;
console.log(data);
formData.id = data.id;
formData.reasonCommander = data.reasonCommander;
formData.reasonOligarch = data.reasonOligarch;
formData.positionName = data.positionName;
formData.positionLevelName = data.positionLevelName;
formData.organizationName = data.organizationName;
formData.leaveTypeName = data.leaveTypeName;
formData.leaveTypeId = data.leaveTypeId;
formData.fullName = data.fullName;
formData.dateSendLeave =
data.dateSendLeave && date2Thai(data.dateSendLeave);
formData.leaveDateStart =
data.leaveStartDate && date2Thai(data.leaveStartDate);
formData.leaveDateEnd = data.leaveEndDate && date2Thai(data.leaveEndDate);
formData.leaveCount = data.leaveCount;
formData.status = data.status && data.status;
formData.leaveLimit = data.leaveLimit;
formData.leaveSummary = data.leaveSummary;
formData.leaveRemain = data.leaveRemain;
formData.leaveWrote = data.leaveWrote;
formData.leaveAddress = data.leaveAddress;
formData.leaveNumber = data.leaveNumber;
formData.leaveDetail = data.leaveDetail;
formData.leaveDocument = data.leaveDocument;
formData.leaveDraftDocument = data.leaveDraftDocument;
formData.leaveLastStart =
data.leaveLastStart && date2Thai(data.leaveLastStart);
formData.leaveLastEnd =
data.leaveLastStart && date2Thai(data.leaveLastEnd);
formData.leaveTotal = data.leaveTotal;
formData.leavebirthDate =
data.leavebirthDate && date2Thai(data.leavebirthDate);
formData.leavegovernmentDate =
data.leavegovernmentDate && date2Thai(data.leavegovernmentDate);
formData.leaveSalary = data.leaveSalary;
formData.leaveSalaryText = data.leaveSalaryText;
formData.leaveTypeDay =
data.leaveTypeDay && stores.convertLeaveDaytype(data.leaveTypeDay);
formData.wifeDayName = data.wifeDayName;
formData.wifeDayDateBorn =
data.wifeDayDateBorn && date2Thai(data.wifeDayDateBorn);
formData.restDayOldTotal = data.restDayOldTotal;
formData.restDayCurrentTotal = data.restDayCurrentTotal;
formData.ordainDayStatus = data.ordainDayStatus;
formData.ordainDayLocationName = data.ordainDayLocationName;
formData.ordainDayLocationAddress = data.ordainDayLocationAddress;
formData.ordainDayLocationNumber = data.ordainDayLocationNumber;
formData.ordainDayOrdination =
data.ordainDayOrdination && date2Thai(data.ordainDayOrdination);
formData.ordainDayBuddhistLentName = data.ordainDayBuddhistLentName;
formData.ordainDayBuddhistLentAddress = data.ordainDayBuddhistLentAddress;
formData.hajjDayStatus = data.hajjDayStatus;
formData.absentDaySummon = data.absentDaySummon;
formData.absentDayLocation = data.absentDayLocation;
formData.absentDayRegistorDate =
data.absentDayRegistorDate && date2Thai(data.absentDayRegistorDate);
formData.absentDayGetIn = data.absentDayGetIn;
formData.absentDayAt = data.absentDayAt;
formData.studyDaySubject = data.studyDaySubject;
formData.studyDayDegreeLevel = data.studyDayDegreeLevel;
formData.studyDayUniversityName = data.studyDayUniversityName;
formData.studyDayTrainingSubject = data.studyDayTrainingSubject;
formData.studyDayTrainingName = data.studyDayTrainingName;
formData.studyDayCountry = data.studyDayCountry;
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 ? data.dear : "-";
await fectOptionType();
})
.catch((err) => {
messageError($q, err);
})
.finally(() => {
hideLoader();
});
}
const leaveType = ref<LeaveType[]>();
/** function เรียกประเภทการลา */
async function fectOptionType() {
await http
.get(config.API.leaveType())
.then((res) => {
console.log(res);
leaveType.value = res.data.result;
checkLeaveType(formData.leaveTypeId, formData.leaveTypeName);
})
.catch((err) => {
messageError($q, err);
});
}
/**Status Form การลา*/ /**Status Form การลา*/
const checkForm = ref<string>(""); const checkForm = ref<string>("");
/** /**
* Function เชคประเภทการลา * Function เชคประเภทการลา
* @param type บค * @param type บค
*/ */
function checkLeaveType(type: string) { function checkLeaveType(leaveTypeId: string, leaveTypeName: string) {
if (type === "leave1" || type === "leave2" || type === "leave3") { if (leaveType.value) {
checkForm.value = "FormLeave"; const filtertype: LeaveType | undefined = leaveType.value.find(
} else if (type === "leave4") { (e: any) => e.id === leaveTypeId
checkForm.value = "FormChildbirth"; );
} else if (type === "leave5") { const type = filtertype?.code;
checkForm.value = "FormHoliday"; if (type === "LV-001" || type === "LV-002" || type === "LV-003") {
} else if (type === "leave6") { checkForm.value = "FormLeave";
checkForm.value = "FormUpasom"; } else if (type === "LV-004") {
} else if (type === "leave7") { checkForm.value = "FormChildbirth";
checkForm.value = "FormHajj"; } else if (type === "LV-005") {
} else if (type === "leave8") { checkForm.value = "FormHoliday";
checkForm.value = "FormCheckSelect"; } else if (type === "LV-006") {
} else if (type === "leave9") { checkForm.value = "FormUpasom";
checkForm.value = "FormStudy"; } else if (type === "LV-006" && leaveTypeName === "พิธีฮัจญ์ฯ") {
} else if (type === "leave10") { checkForm.value = "FormHajj";
checkForm.value = "FormLeaveToTraining"; } else if (type === "LV-007") {
} else if (type === "leave11") { checkForm.value = "FormCheckSelect";
checkForm.value = "FormLeaveToWorkInternational"; } else if (type === "LV-008" && leaveTypeName === "ลาไปศีกษา") {
} else if (type === "leave12") { checkForm.value = "FormStudy";
checkForm.value = "FormSpouse"; } else if (type === "LV-008") {
} else if (type === "leave13") { checkForm.value = "FormLeaveToTraining";
checkForm.value = "FormVocationalRehabilitation"; } else if (type === "LV-009") {
checkForm.value = "FormLeaveToWorkInternational";
} else if (type === "LV-010") {
checkForm.value = "FormSpouse";
} else if (type === "LV-011") {
checkForm.value = "FormVocationalRehabilitation";
}
} }
} }
@ -317,7 +403,7 @@ function clickSave() {
<!-- <q-file <!-- <q-file
v-model="filesUpload" v-model="filesUpload"
dense dense
label="อัโหลดไฟล์" label="อัโหลดไฟล์"
outlined outlined
class="col-xs-12 col-sm-3 col-md-2" class="col-xs-12 col-sm-3 col-md-2"
bg-color="white" bg-color="white"
@ -355,24 +441,39 @@ function clickSave() {
<div class="col-xs-3 row items-start"> <div class="col-xs-3 row items-start">
<div class="col-12 text-weight-bold text-top">เขยนท</div> <div class="col-12 text-weight-bold text-top">เขยนท</div>
<div class="col-12 text-detail"> <div class="col-12 text-detail">
{{ formData.leaveWrote }} {{ formDataReject.leaveWrote }}
</div> </div>
</div> </div>
<div class="col-xs-3 row items-start"> <div class="col-xs-3 row items-start">
<div class="col-12 text-weight-bold text-top">นท</div> <div class="col-12 text-weight-bold text-top">นท</div>
<div class="col-12 text-detail"> <div class="col-12 text-detail">
{{ formData.dateSendLeave }} {{ date2Thai(formDataReject.leaveStartDate) }}
</div> </div>
</div> </div>
<div class="col-xs-3 row items-start"> <div class="col-xs-3 row items-start">
<div class="col-12 text-weight-bold text-top">เหตผล</div> <div class="col-12 text-weight-bold text-top">เหตผล</div>
<div class="col-12 text-detail">-</div> <div class="col-12 text-detail">
{{ formDataReject.leaveResonDelete }}
</div>
</div> </div>
<div class="col-xs-3 row items-start"> <div class="col-xs-3 row items-start">
<div class="col-12 text-weight-bold text-top"> <div class="col-12 text-weight-bold text-top">
เอกสารประกอบ เอกสารประกอบ
</div> </div>
<div class="col-12 text-detail">-</div> <div class="col-12 text-detail">
<q-btn
v-if="formDataReject.leaveDocDelete"
:href="formDataReject.leaveDocDelete"
target="_blank"
outline
color="blue"
label="ดาวน์โหลด"
size="12px"
>
<q-tooltip>ดาวนโหลดไฟล</q-tooltip></q-btn
>
<span v-else>-</span>
</div>
</div> </div>
</div> </div>
</div> </div>
@ -385,10 +486,7 @@ function clickSave() {
<div class="col-12 row"> <div class="col-12 row">
<div class="col-xs-5 col-sm-3 text-grey-8">ประเภทการลา</div> <div class="col-xs-5 col-sm-3 text-grey-8">ประเภทการลา</div>
<div class="col text-primary"> <div class="col text-primary">
{{ {{ formData.leaveTypeName }}
formData.leaveTypeId &&
stores.convertLeave(formData.leaveTypeId)
}}
</div> </div>
</div> </div>
<div class="col-12 row"> <div class="col-12 row">
@ -421,7 +519,7 @@ function clickSave() {
class="col-12 items-center row q-px-md q-py-sm" class="col-12 items-center row q-px-md q-py-sm"
> >
<div class="text-h6 text-weight-bold text-light-blue-6"> <div class="text-h6 text-weight-bold text-light-blue-6">
{{ formData.leaveTotal }} {{ formData.leaveSummary }}
</div> </div>
<div class="col-12 text-subtitle2 text-weight-regular"> <div class="col-12 text-subtitle2 text-weight-regular">
<span class="gt-xs">ใชไป</span> <span class="gt-xs">ใชไป</span>
@ -520,7 +618,9 @@ function clickSave() {
<q-card <q-card
bordered bordered
class="row col-12 text-dark q-mt-sm" class="row col-12 text-dark q-mt-sm"
v-if="formData.step === 'st2' || formData.step === 'st3'" v-if="
formData.approveStep === 'st2' || formData.approveStep === 'st3'
"
> >
<div <div
class="bg-grey-1 q-pa-sm col-12 row items-center text-primary" class="bg-grey-1 q-pa-sm col-12 row items-center text-primary"
@ -554,7 +654,7 @@ function clickSave() {
<q-separator /> <q-separator />
<div class="row q-pa-md q-gutter-md justify-end"> <div class="row q-pa-md q-gutter-md justify-end">
<q-btn <q-btn
v-if="formData.step === 'st1'" v-if="formData.approveStep === 'st1'"
unelevated unelevated
color="orange-5" color="orange-5"
label="ไม่อนุมัติการยกเลิก" label="ไม่อนุมัติการยกเลิก"
@ -562,7 +662,7 @@ function clickSave() {
><q-tooltip>ไมอนการยกเล</q-tooltip> ><q-tooltip>ไมอนการยกเล</q-tooltip>
</q-btn> </q-btn>
<q-btn <q-btn
v-if="formData.step === 'st1'" v-if="formData.approveStep === 'st1'"
unelevated unelevated
color="primary" color="primary"
label="อนุมัติการยกเลิก" label="อนุมัติการยกเลิก"

View file

@ -44,11 +44,9 @@ async function fecthLeaveList() {
await http await http
.post(config.API.leaveList(), querySting) .post(config.API.leaveList(), querySting)
.then((res) => { .then((res) => {
console.log(res);
const data = res.data.result; const data = res.data.result;
maxPage.value = Math.ceil(data.total / querySting.pageSize); maxPage.value = Math.ceil(data.total / querySting.pageSize);
fetchListLeave(data.data); /** ส่งข้อมูลไป stores*/ fetchListLeave(data.data); /** ส่งข้อมูลไป stores*/
console.log(maxPage.value);
}) })
.catch((err) => { .catch((err) => {
messageError($q, err); messageError($q, err);
@ -77,7 +75,6 @@ async function updatePaging(
querySting.page = newPage; querySting.page = newPage;
querySting.pageSize = pageSize ? pageSize : querySting.pageSize; querySting.pageSize = pageSize ? pageSize : querySting.pageSize;
querySting.keyword = dateFilter ? dateFilter.keyword : querySting.keyword; querySting.keyword = dateFilter ? dateFilter.keyword : querySting.keyword;
console.log(querySting);
await fecthLeaveList(); await fecthLeaveList();
} }

View file

@ -31,7 +31,7 @@ const querySting = reactive<QuerySting>({
type: leaveStore.filter.type, //*Id type: leaveStore.filter.type, //*Id
status: leaveStore.filter.status, //* status: leaveStore.filter.status, //*
page: 1, //* page: 1, //*
pageSize: 5, //* pageSize: 10, //*
keyword: leaveStore.filter.keyword, //keyword keyword: leaveStore.filter.keyword, //keyword
}); });
const maxPage = ref<number>(1); const maxPage = ref<number>(1);
@ -42,9 +42,12 @@ async function fecthLeaveList() {
await http await http
.post(config.API.leaveListDelete(), querySting) .post(config.API.leaveListDelete(), querySting)
.then((res) => { .then((res) => {
console.log(res); const data = res.data.result;
console.log(data);
maxPage.value = Math.ceil(data.length / querySting.pageSize); maxPage.value = Math.ceil(data.total / querySting.pageSize);
console.log(maxPage.value);
fetchListLeaveReject(data.data); /** ส่งข้อมูลไป stores*/
}) })
.catch((err) => { .catch((err) => {
messageError($q, err); messageError($q, err);
@ -52,9 +55,7 @@ async function fecthLeaveList() {
.finally(() => { .finally(() => {
hideLoader(); hideLoader();
}); });
const data = APIDATA.data; // const data = APIDATA.data;
fetchListLeaveReject(data); /** ส่งข้อมูลไป stores*/
} }
/** /**
@ -72,7 +73,7 @@ async function updatePaging(
querySting.type = dateFilter ? dateFilter.type : querySting.type; querySting.type = dateFilter ? dateFilter.type : querySting.type;
querySting.status = dateFilter ? dateFilter.status : querySting.status; querySting.status = dateFilter ? dateFilter.status : querySting.status;
querySting.page = newPage; querySting.page = newPage;
querySting.pageSize = pageSize; querySting.pageSize = pageSize ? pageSize : querySting.pageSize;
querySting.keyword = dateFilter ? dateFilter.keyword : querySting.keyword; querySting.keyword = dateFilter ? dateFilter.keyword : querySting.keyword;
console.log(querySting); console.log(querySting);
@ -84,7 +85,10 @@ onMounted(async () => {
}); });
</script> </script>
<template> <template>
<ToolBar /> <ToolBar
:rowsPerPage="querySting.pageSize"
@update:querySting="updatePaging"
/>
<TableList <TableList
:page="querySting.page" :page="querySting.page"
:rowsPerPage="querySting.pageSize" :rowsPerPage="querySting.pageSize"

View file

@ -82,14 +82,14 @@ const optionStatus2 = ref<DataOption[]>([
}, },
{ {
id: "NEW", id: "NEW",
name: "ขอยกเลิก", name: "ใหม่",
}, },
{ {
id: "APPROVE ", id: "APPROVE",
name: "อนุมัติ", name: "อนุมัติ",
}, },
{ {
id: "REJECT ", id: "REJECT",
name: "ไม่อนุมัติ", name: "ไม่อนุมัติ",
}, },
]); ]);

View file

@ -53,7 +53,7 @@ console.log(props);
</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" v-if="props.data.leaveDocument">
<q-btn <q-btn
:href="props.data.leaveDocument" :href="props.data.leaveDocument"
target="_blank" target="_blank"
@ -65,6 +65,7 @@ console.log(props);
<q-tooltip>ดาวนโหลดไฟล</q-tooltip></q-btn <q-tooltip>ดาวนโหลดไฟล</q-tooltip></q-btn
> >
</div> </div>
<div class="col" v-else>-</div>
</div> </div>
</div> </div>
</q-card-section> </q-card-section>

View file

@ -47,16 +47,19 @@ 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"><q-btn <div class="col" v-if="props.data.leaveDocument">
:href="props.data.leaveDocument" <q-btn
target="_blank" :href="props.data.leaveDocument"
outline target="_blank"
color="blue" outline
label="ดาวน์โหลด" color="blue"
size="12px" label="ดาวน์โหลด"
> size="12px"
<q-tooltip>ดาวนโหลดไฟล</q-tooltip></q-btn >
></div> <q-tooltip>ดาวนโหลดไฟล</q-tooltip></q-btn
>
</div>
<div class="col" v-else>-</div>
</div> </div>
</div> </div>
</q-card-section> </q-card-section>

View file

@ -40,16 +40,19 @@ 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"><q-btn <div class="col" v-if="props.data.leaveDocument">
:href="props.data.leaveDocument" <q-btn
target="_blank" :href="props.data.leaveDocument"
outline target="_blank"
color="blue" outline
label="ดาวน์โหลด" color="blue"
size="12px" label="ดาวน์โหลด"
> size="12px"
<q-tooltip>ดาวนโหลดไฟล</q-tooltip></q-btn >
></div> <q-tooltip>ดาวนโหลดไฟล</q-tooltip></q-btn
>
</div>
<div class="col" v-else>-</div>
</div> </div>
</div> </div>
</q-card-section> </q-card-section>

View file

@ -52,7 +52,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" v-if="props.data.leaveDocument">
<q-btn <q-btn
:href="props.data.leaveDocument" :href="props.data.leaveDocument"
target="_blank" target="_blank"
@ -64,6 +64,7 @@ const props = defineProps({
<q-tooltip>ดาวนโหลดไฟล</q-tooltip></q-btn <q-tooltip>ดาวนโหลดไฟล</q-tooltip></q-btn
> >
</div> </div>
<div class="col" v-else>-</div>
</div> </div>
</div> </div>
</q-card-section> </q-card-section>

View file

@ -50,16 +50,19 @@ 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"><q-btn <div class="col" v-if="props.data.leaveDocument">
:href="props.data.leaveDocument" <q-btn
target="_blank" :href="props.data.leaveDocument"
outline target="_blank"
color="blue" outline
label="ดาวน์โหลด" color="blue"
size="12px" label="ดาวน์โหลด"
> size="12px"
<q-tooltip>ดาวนโหลดไฟล</q-tooltip></q-btn >
></div> <q-tooltip>ดาวนโหลดไฟล</q-tooltip></q-btn
>
</div>
<div class="col" v-else>-</div>
</div> </div>
</div> </div>
</q-card-section> </q-card-section>

View file

@ -71,16 +71,19 @@ 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"><q-btn <div class="col" v-if="props.data.leaveDocument">
:href="props.data.leaveDocument" <q-btn
target="_blank" :href="props.data.leaveDocument"
outline target="_blank"
color="blue" outline
label="ดาวน์โหลด" color="blue"
size="12px" label="ดาวน์โหลด"
> size="12px"
<q-tooltip>ดาวนโหลดไฟล</q-tooltip></q-btn >
></div> <q-tooltip>ดาวนโหลดไฟล</q-tooltip></q-btn
>
</div>
<div class="col" v-else>-</div>
</div> </div>
</div> </div>
</q-card-section> </q-card-section>

View file

@ -27,16 +27,19 @@ 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"><q-btn <div class="col" v-if="props.data.leaveDocument">
:href="props.data.leaveDocument" <q-btn
target="_blank" :href="props.data.leaveDocument"
outline target="_blank"
color="blue" outline
label="ดาวน์โหลด" color="blue"
size="12px" label="ดาวน์โหลด"
> size="12px"
<q-tooltip>ดาวนโหลดไฟล</q-tooltip></q-btn >
></div> <q-tooltip>ดาวนโหลดไฟล</q-tooltip></q-btn
>
</div>
<div class="col" v-else>-</div>
</div> </div>
</div> </div>
</q-card-section> </q-card-section>

View file

@ -5,7 +5,7 @@ const props = defineProps({
required: true, required: true,
}, },
}); });
console.log(props); console.log(props.data);
</script> </script>
<template> <template>
<q-card-section> <q-card-section>
@ -20,7 +20,7 @@ console.log(props);
</div> </div>
<div class="row"> <div class="row">
<div class="col-4 text-grey-8">เรยน</div> <div class="col-4 text-grey-8">เรยน</div>
<div class="col">{{ props.data.notification }}</div> <div class="col">{{ props.data.dear }}</div>
</div> </div>
<div class="row"> <div class="row">
<div class="col-4 text-grey-8">อผนขอ</div> <div class="col-4 text-grey-8">อผนขอ</div>

View file

@ -78,7 +78,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" v-if="props.data.leaveDocument">
<q-btn <q-btn
:href="props.data.leaveDocument" :href="props.data.leaveDocument"
target="_blank" target="_blank"
@ -90,6 +90,7 @@ const props = defineProps({
<q-tooltip>ดาวนโหลดไฟล</q-tooltip></q-btn <q-tooltip>ดาวนโหลดไฟล</q-tooltip></q-btn
> >
</div> </div>
<div class="col" v-else>-</div>
</div> </div>
</div> </div>
</q-card-section> </q-card-section>

View file

@ -74,7 +74,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" v-if="props.data.leaveDocument">
<q-btn <q-btn
:href="props.data.leaveDocument" :href="props.data.leaveDocument"
target="_blank" target="_blank"
@ -86,6 +86,7 @@ const props = defineProps({
<q-tooltip>ดาวนโหลดไฟล</q-tooltip></q-btn <q-tooltip>ดาวนโหลดไฟล</q-tooltip></q-btn
> >
</div> </div>
<div class="col" v-else>-</div>
</div> </div>
</div> </div>
</q-card-section> </q-card-section>

View file

@ -65,16 +65,19 @@ 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"><q-btn <div class="col" v-if="props.data.leaveDocument">
:href="props.data.leaveDocument" <q-btn
target="_blank" :href="props.data.leaveDocument"
outline target="_blank"
color="blue" outline
label="ดาวน์โหลด" color="blue"
size="12px" label="ดาวน์โหลด"
> size="12px"
<q-tooltip>ดาวนโหลดไฟล</q-tooltip></q-btn >
></div> <q-tooltip>ดาวนโหลดไฟล</q-tooltip></q-btn
>
</div>
<div class="col" v-else>-</div>
</div> </div>
</div> </div>
</q-card-section> </q-card-section>

View file

@ -27,7 +27,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" v-if="props.data.leaveDocument">
<q-btn <q-btn
:href="props.data.leaveDocument" :href="props.data.leaveDocument"
target="_blank" target="_blank"
@ -39,6 +39,7 @@ const props = defineProps({
<q-tooltip>ดาวนโหลดไฟล</q-tooltip></q-btn <q-tooltip>ดาวนโหลดไฟล</q-tooltip></q-btn
> >
</div> </div>
<div class="col" v-else>-</div>
</div> </div>
</div> </div>
</q-card-section> </q-card-section>

View file

@ -87,7 +87,8 @@ interface FremData {
coupleDayStartDateHistory: Date | null; //ประวัติ ตั้งแต่วันที่ (ลาติดตามคู่สมรส) coupleDayStartDateHistory: Date | null; //ประวัติ ตั้งแต่วันที่ (ลาติดตามคู่สมรส)
coupleDayEndDateHistory: Date | null; //ประวัติ ถึงวันที่ (ลาติดตามคู่สมรส) coupleDayEndDateHistory: Date | null; //ประวัติ ถึงวันที่ (ลาติดตามคู่สมรส)
coupleDaySumTotalHistory: string; //ประวัติ ในกรณีลาติดต่อกับครั้งก่อน รวมทั้งนี้ด้วย เป็นเวลา กี่ปี กี่เดือน กี่วัน (ลาติดตามคู่สมรส) coupleDaySumTotalHistory: string; //ประวัติ ในกรณีลาติดต่อกับครั้งก่อน รวมทั้งนี้ด้วย เป็นเวลา กี่ปี กี่เดือน กี่วัน (ลาติดตามคู่สมรส)
step: string; approveStep: string;
dear: string;
} }
export type { ListsData, FremData, QuerySting, DateFilter }; export type { ListsData, FremData, QuerySting, DateFilter };

View file

@ -39,4 +39,40 @@ interface LeaveType {
name: string; name: string;
} }
export type { DataRows, FormData, DataDateMonthObject, ListLeave, LeaveType }; interface FormReject {
id: string; //*Id การยื่นขอลา
leaveTypeName: string; //Name ประเภทการลา
fullName: string; //คำนำหน้า ชื่อ นามสกุล คนขอลา
status: string; //สถานะการของลา
leaveDocDelete: string; //เอกสารการยกเลิกการลา
leaveResonDelete: string; //เหตุผลการยกเลิกการลา
leaveWrote: string; //เขียนที่
leaveAddress: string; //สถานที่ติดต่อขณะลา
leaveNumber: string; //หมายเลขที่ติดต่อขณะลา
leaveDetail: string; //รายละเอียดการลา
leaveTotal: number; //จำนวนวันที่ลา
leaveStartDate: Date; //วัน เดือน ปีเริ่มต้นลา
leaveEndDate: Date; //วัน เดือน ปีสิ้นสุดลา
}
interface ResCalendar {
dateSendLeave: Date;
fullName: string;
id: string;
keycloakId: string;
leaveEndDate: Date;
leaveStartDate: Date;
leaveTypeId: string;
leaveTypeName: string;
status: string;
}
export type {
DataRows,
FormData,
DataDateMonthObject,
ListLeave,
LeaveType,
FormReject,
ResCalendar,
};

View file

@ -61,7 +61,7 @@ export const useLeavelistDataStore = defineStore("leave", () => {
async function fetchListLeaveReject(data: any[]) { async function fetchListLeaveReject(data: any[]) {
let datalist = data.map((e: FremData) => ({ let datalist = data.map((e: FremData) => ({
id: e.id, id: e.id,
leaveTypeName: e.leaveTypeId && convertLeave(e.leaveTypeId), leaveTypeName: e.leaveTypeName,
leaveTypeId: e.leaveTypeId, leaveTypeId: e.leaveTypeId,
fullName: e.fullName, fullName: e.fullName,
dateSendLeave: e.dateSendLeave && date2Thai(e.dateSendLeave), dateSendLeave: e.dateSendLeave && date2Thai(e.dateSendLeave),
@ -73,7 +73,7 @@ export const useLeavelistDataStore = defineStore("leave", () => {
} }
/** /**
* * tab1
* @param val * @param val
*/ */
function convertSatatus(val: string) { function convertSatatus(val: string) {
@ -92,54 +92,54 @@ export const useLeavelistDataStore = defineStore("leave", () => {
} }
/** /**
* * tab2
* @param val * @param val
*/ */
function convertSatatus2(val: string) { function convertSatatus2(val: string) {
switch (val) { switch (val) {
case "NEW": case "NEW":
return "ขอยกเลิก"; return "ใหม่";
case "PENDING":
return "อนุมัติ";
case "APPROVE": case "APPROVE":
return "อนุมัติ"; return "อนุมัติ";
case "REJECT":
return "ไม่อนุมัติ";
} }
} }
/** // /**
* // * ฟังก์ชั่นแปลงประเภทการลา
* @param val // * @param val ค่าประเภทของกาลา
*/ // */
function convertLeave(val: string) { // function convertLeave(val: string) {
switch (val) { // switch (val) {
case "leave1": // case "leave1":
return "ลากิจส่วนตัว"; // return "ลากิจส่วนตัว";
case "leave2": // case "leave2":
return "ลาป่วย"; // return "ลาป่วย";
case "leave3": // case "leave3":
return "ลาคลอดบุตร"; // return "ลาคลอดบุตร";
case "leave4": // case "leave4":
return "ลาไปช่วยเหลือภริยาที่คลอดบุตร"; // return "ลาไปช่วยเหลือภริยาที่คลอดบุตร";
case "leave5": // case "leave5":
return "ลาพักผ่อน"; // return "ลาพักผ่อน";
case "leave6": // case "leave6":
return "ลาอุปสมบท"; // return "ลาอุปสมบท";
case "leave7": // case "leave7":
return "ลาประกอบพิธีฮัจญ์"; // return "ลาประกอบพิธีฮัจญ์";
case "leave8": // case "leave8":
return "ลาเข้ารับการตรวจเลือกหรือเข้ารับการเตรียมพล"; // return "ลาเข้ารับการตรวจเลือกหรือเข้ารับการเตรียมพล";
case "leave9": // case "leave9":
return "ลาไปศึกษา"; // return "ลาไปศึกษา";
case "leave10": // case "leave10":
return "ลาไปฝึกอบรม ปฏิบัติการวิจัย หรือดูงาน"; // return "ลาไปฝึกอบรม ปฏิบัติการวิจัย หรือดูงาน";
case "leave11": // case "leave11":
return "ลาไปปฏิบัติงานในองค์การระหว่างประเทศ"; // return "ลาไปปฏิบัติงานในองค์การระหว่างประเทศ";
case "leave12": // case "leave12":
return "ลาติดตามคู่สมรส"; // return "ลาติดตามคู่สมรส";
case "leave13": // case "leave13":
return "ลาไปฟื้นฟูสมรรถภาพด้านอาชีพ"; // return "ลาไปฟื้นฟูสมรรถภาพด้านอาชีพ";
} // }
} // }
/** /**
* *
@ -198,9 +198,10 @@ export const useLeavelistDataStore = defineStore("leave", () => {
visibleColumns, visibleColumns,
fetchListLeaveReject, fetchListLeaveReject,
convertSatatus,
/** Function แปลงค่า */ /** Function แปลงค่า */
convertLeave, // convertLeave,
convertLeaveDaytype, convertLeaveDaytype,
leaveType, leaveType,