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

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`,
leaveList: () => `${leave}/admin`,
leaveListDelete: () => `${leave}/admin/delete`,
leaveListDeleteByid: (id: string) => `${leave}/user/delete/${id}`,
leaveListById: (id: string) => `${leave}/admin/${id}`,
leaveCalendar: () => `${leave}/user/calendar`,
leaveApproveToComander: (id: string) =>
`${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}`,
leaveReject: (id: string) => `${leave}/admin/reject/${id}`,
};

View file

@ -11,8 +11,12 @@ import { useQuasar } from "quasar";
import http from "@/plugins/http";
import config from "@/app.config";
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 { useLeavelistDataStore } from "@/modules/09_leave/stores/LeaveStore";
@ -23,6 +27,10 @@ const { showLoader, hideLoader, messageError, monthYear2Thai } = mixin;
const $q = useQuasar();
const router = useRouter();
const keycloakId = ref<string>(
keycloak.tokenParsed ? keycloak.tokenParsed.sub!.toString() : ""
);
/**
* Option ของปฏ
*/
@ -62,7 +70,7 @@ const dateMonth = ref<DataDateMonthObject>({
month: new Date().getMonth(),
year: new Date().getFullYear(),
});
const mainData = ref<any>([]);
const mainData = ref<ResCalendar[]>([]);
async function fetchDataCalendar() {
showLoader();
@ -74,22 +82,22 @@ async function fetchDataCalendar() {
mainData.value = res.data.result;
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++) {
filterLists.value = [];
const name = double_name[i - 1];
const filterName = {
id: name,
name: name,
color: name === "นางสาวสาวิตรี ศรีสมัย" ? "green" : "grey",
name: convertKeycloakId(name),
color: name === keycloakId.value ? "green" : "grey",
};
filterLists.value.push(filterName);
}
const data = mainData.value.filter(
(e: any) => e.fullName === "นางสาวสาวิตรี ศรีสมัย"
(e: any) => e.keycloakId === keycloakId.value
);
const event = data.map((e: any) => ({
@ -101,7 +109,6 @@ async function fetchDataCalendar() {
color: leaveStore.colorType(e.leaveTypeId),
textColor: "black",
}));
console.log(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
const filterLists = ref<any[]>([]);
const filterVal = ref(["นางสาวสาวิตรี ศรีสมัย"]);
const filterVal = ref<any>([]);
watch(
() => filterVal.value,
() => {
const eventData = filterVal.value.map((item: any) => {
return mainData.value
.filter((e: any) => e.fullName === item)
.map((e: any) => ({
.filter((e: ResCalendar) => e.keycloakId === item)
.map((e: ResCalendar) => ({
id: e.id,
title: `${e.fullName} (${e.leaveTypeName}) `,
start: e.leaveStartDate,
@ -137,7 +151,8 @@ watch(
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 () => {
filterVal.value.push(keycloakId.value);
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() {
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) => {
if (val == null) return "";
else return monthYear2Thai(val.month, val.year);

View file

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

View file

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

View file

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

View file

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

View file

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

View file

@ -53,7 +53,7 @@ console.log(props);
</div>
<div class="row">
<div class="col text-grey-8">เอกสารแนบ</div>
<div class="col">
<div class="col" v-if="props.data.leaveDocument">
<q-btn
:href="props.data.leaveDocument"
target="_blank"
@ -65,6 +65,7 @@ console.log(props);
<q-tooltip>ดาวนโหลดไฟล</q-tooltip></q-btn
>
</div>
<div class="col" v-else>-</div>
</div>
</div>
</q-card-section>

View file

@ -47,16 +47,19 @@ const props = defineProps({
</div>
<div class="row">
<div class="col text-grey-8">เอกสารแนบ</div>
<div class="col"><q-btn
:href="props.data.leaveDocument"
target="_blank"
outline
color="blue"
label="ดาวน์โหลด"
size="12px"
>
<q-tooltip>ดาวนโหลดไฟล</q-tooltip></q-btn
></div>
<div class="col" v-if="props.data.leaveDocument">
<q-btn
:href="props.data.leaveDocument"
target="_blank"
outline
color="blue"
label="ดาวน์โหลด"
size="12px"
>
<q-tooltip>ดาวนโหลดไฟล</q-tooltip></q-btn
>
</div>
<div class="col" v-else>-</div>
</div>
</div>
</q-card-section>

View file

@ -40,16 +40,19 @@ const props = defineProps({
</div>
<div class="row">
<div class="col text-grey-8">เอกสารแนบ</div>
<div class="col"><q-btn
:href="props.data.leaveDocument"
target="_blank"
outline
color="blue"
label="ดาวน์โหลด"
size="12px"
>
<q-tooltip>ดาวนโหลดไฟล</q-tooltip></q-btn
></div>
<div class="col" v-if="props.data.leaveDocument">
<q-btn
:href="props.data.leaveDocument"
target="_blank"
outline
color="blue"
label="ดาวน์โหลด"
size="12px"
>
<q-tooltip>ดาวนโหลดไฟล</q-tooltip></q-btn
>
</div>
<div class="col" v-else>-</div>
</div>
</div>
</q-card-section>

View file

@ -52,7 +52,7 @@ const props = defineProps({
</div>
<div class="row">
<div class="col text-grey-8">เอกสารแนบ</div>
<div class="col">
<div class="col" v-if="props.data.leaveDocument">
<q-btn
:href="props.data.leaveDocument"
target="_blank"
@ -64,6 +64,7 @@ const props = defineProps({
<q-tooltip>ดาวนโหลดไฟล</q-tooltip></q-btn
>
</div>
<div class="col" v-else>-</div>
</div>
</div>
</q-card-section>

View file

@ -50,16 +50,19 @@ const props = defineProps({
</div>
<div class="row">
<div class="col text-grey-8">เอกสารแนบ</div>
<div class="col"><q-btn
:href="props.data.leaveDocument"
target="_blank"
outline
color="blue"
label="ดาวน์โหลด"
size="12px"
>
<q-tooltip>ดาวนโหลดไฟล</q-tooltip></q-btn
></div>
<div class="col" v-if="props.data.leaveDocument">
<q-btn
:href="props.data.leaveDocument"
target="_blank"
outline
color="blue"
label="ดาวน์โหลด"
size="12px"
>
<q-tooltip>ดาวนโหลดไฟล</q-tooltip></q-btn
>
</div>
<div class="col" v-else>-</div>
</div>
</div>
</q-card-section>

View file

@ -71,16 +71,19 @@ const props = defineProps({
</div>
<div class="row">
<div class="col text-grey-8">เอกสารแนบ</div>
<div class="col"><q-btn
:href="props.data.leaveDocument"
target="_blank"
outline
color="blue"
label="ดาวน์โหลด"
size="12px"
>
<q-tooltip>ดาวนโหลดไฟล</q-tooltip></q-btn
></div>
<div class="col" v-if="props.data.leaveDocument">
<q-btn
:href="props.data.leaveDocument"
target="_blank"
outline
color="blue"
label="ดาวน์โหลด"
size="12px"
>
<q-tooltip>ดาวนโหลดไฟล</q-tooltip></q-btn
>
</div>
<div class="col" v-else>-</div>
</div>
</div>
</q-card-section>

View file

@ -27,16 +27,19 @@ const props = defineProps({
</div>
<div class="row">
<div class="col text-grey-8">เอกสารแนบ</div>
<div class="col"><q-btn
:href="props.data.leaveDocument"
target="_blank"
outline
color="blue"
label="ดาวน์โหลด"
size="12px"
>
<q-tooltip>ดาวนโหลดไฟล</q-tooltip></q-btn
></div>
<div class="col" v-if="props.data.leaveDocument">
<q-btn
:href="props.data.leaveDocument"
target="_blank"
outline
color="blue"
label="ดาวน์โหลด"
size="12px"
>
<q-tooltip>ดาวนโหลดไฟล</q-tooltip></q-btn
>
</div>
<div class="col" v-else>-</div>
</div>
</div>
</q-card-section>

View file

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

View file

@ -78,7 +78,7 @@ const props = defineProps({
</div>
<div class="row">
<div class="col text-grey-8">เอกสารแนบ</div>
<div class="col">
<div class="col" v-if="props.data.leaveDocument">
<q-btn
:href="props.data.leaveDocument"
target="_blank"
@ -90,6 +90,7 @@ const props = defineProps({
<q-tooltip>ดาวนโหลดไฟล</q-tooltip></q-btn
>
</div>
<div class="col" v-else>-</div>
</div>
</div>
</q-card-section>

View file

@ -74,7 +74,7 @@ const props = defineProps({
</div>
<div class="row">
<div class="col text-grey-8">เอกสารแนบ</div>
<div class="col">
<div class="col" v-if="props.data.leaveDocument">
<q-btn
:href="props.data.leaveDocument"
target="_blank"
@ -86,6 +86,7 @@ const props = defineProps({
<q-tooltip>ดาวนโหลดไฟล</q-tooltip></q-btn
>
</div>
<div class="col" v-else>-</div>
</div>
</div>
</q-card-section>

View file

@ -65,16 +65,19 @@ const props = defineProps({
</div>
<div class="row">
<div class="col text-grey-8">เอกสารแนบ</div>
<div class="col"><q-btn
:href="props.data.leaveDocument"
target="_blank"
outline
color="blue"
label="ดาวน์โหลด"
size="12px"
>
<q-tooltip>ดาวนโหลดไฟล</q-tooltip></q-btn
></div>
<div class="col" v-if="props.data.leaveDocument">
<q-btn
:href="props.data.leaveDocument"
target="_blank"
outline
color="blue"
label="ดาวน์โหลด"
size="12px"
>
<q-tooltip>ดาวนโหลดไฟล</q-tooltip></q-btn
>
</div>
<div class="col" v-else>-</div>
</div>
</div>
</q-card-section>

View file

@ -27,7 +27,7 @@ const props = defineProps({
</div>
<div class="row">
<div class="col text-grey-8">เอกสารแนบ</div>
<div class="col">
<div class="col" v-if="props.data.leaveDocument">
<q-btn
:href="props.data.leaveDocument"
target="_blank"
@ -39,6 +39,7 @@ const props = defineProps({
<q-tooltip>ดาวนโหลดไฟล</q-tooltip></q-btn
>
</div>
<div class="col" v-else>-</div>
</div>
</div>
</q-card-section>

View file

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

View file

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