Merge branch 'develop' into devTee

This commit is contained in:
setthawutttty 2023-12-08 16:46:36 +07:00
commit 90c263aa45
23 changed files with 469 additions and 224 deletions

View file

@ -23,4 +23,8 @@ export default {
leaveListDelete: () => `${leave}/admin/delete`,
leaveListById: (id: string) => `${leave}/admin/${id}`,
leaveCalendar: () => `${leave}/user/calendar`,
leaveApproveToComander: (id: string) => `${leave}/admin/officer/${id}`,
leaveComanderApprove: (id: string) => `${leave}/admin/comander/${id}`,
leaveApprove: (id: string) => `${leave}/admin/approve/${id}`,
leaveReject: (id: string) => `${leave}/admin/reject/${id}`,
};

View file

@ -134,8 +134,7 @@ async function fetchListTimeRecord() {
await http
.get(
config.API.timeRecord() +
`?startDate=${querySting.startDate}&endDate=${querySting.startDate}
&status=${querySting.status}&page=${querySting.page}&pageSize=${querySting.pageSize}&keyword=${querySting.keyword}`
`?startDate=${querySting.startDate}&endDate=${querySting.startDate}&status=${querySting.status}&page=${querySting.page}&pageSize=${querySting.pageSize}&keyword=${querySting.keyword}`
)
.then((res) => {
maxPage.value = Math.ceil(res.data.result.total / rowsPerPage.value);

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";
@ -11,6 +14,7 @@ const APIDATA = useLeavelistDataStoreTest();
/** importType */
import type { FremData } from "@/modules/09_leave/interface/request/leave";
import type { LeaveType } from "@/modules/09_leave/interface/response/leave";
/** importForm*/
import FormMain from "@/modules/09_leave/components/2_Leave/formDetail/formMain.vue"; // from
@ -18,7 +22,7 @@ import FormLeave from "@/modules/09_leave/components/2_Leave/formDetail/formLeav
import FormChildbirth from "@/modules/09_leave/components/2_Leave/formDetail/formChildbirth.vue"; //
import FormHoliday from "@/modules/09_leave/components/2_Leave/formDetail/formHoliday.vue"; //
import FormUpasom from "@/modules/09_leave/components/2_Leave/formDetail/formUpasom.vue"; //
import FormHajj from "@/modules/09_leave/components/2_Leave/formDetail/formHajj.vue"; //
import FormHajj from "@/modules/09_leave/components/2_Leave/formDetail/formHajj.vue"; //
import FormCheckSelect from "@/modules/09_leave/components/2_Leave/formDetail/formCheckSelect.vue"; //
import FormStudy from "@/modules/09_leave/components/2_Leave/formDetail/formStudy.vue"; //
import FormLeaveToTraining from "@/modules/09_leave/components/2_Leave/formDetail/formLeaveToTraining.vue"; //
@ -29,7 +33,14 @@ 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,
success,
} = mixin;
const stores = useLeavelistDataStore();
const router = useRouter();
const route = useRoute();
@ -61,7 +72,7 @@ const formData = reactive<FremData>({
organizationName: "", //
leaveTypeName: "", // Name
leaveTypeId: "", //Id
fullname: "", //
fullName: "", //
dateSendLeave: new Date(), //
leaveDateStart: new Date(), //
leaveDateEnd: new Date(), //
@ -97,7 +108,7 @@ const formData = reactive<FremData>({
ordainDayOrdination: new Date(), // ()
ordainDayBuddhistLentName: "", // ()
ordainDayBuddhistLentAddress: "", // ()
hajjDayStatus: false, /// () ()
hajjDayStatus: false, /// () ()
absentDaySummon: "", // ()
absentDayLocation: "", // ()
absentDayRegistorDate: new Date(), // ()
@ -122,10 +133,10 @@ const formData = reactive<FremData>({
step: "",
});
onMounted(() => {
onMounted(async () => {
// showLoader();
if (paramsId) {
fetchDetailLeave(paramsId);
await fetchDetailLeave(paramsId);
}
});
@ -133,90 +144,117 @@ 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;
});
async function fetchDetailLeave(paramsId: string) {
showLoader();
await http
.get(config.API.leaveListById(paramsId))
.then(async (res) => {
console.log(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.step = data.step;
await fectOptionType();
/** ส่งประเภทของการลาไป Function เช็คประเภทการลา*/
checkLeaveType(formData.leaveTypeId ? formData.leaveTypeId : "");
// hideLoader();
/** ส่งประเภทของการลาไป Function เช็คประเภทการลา*/
})
.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>("");
@ -224,29 +262,35 @@ 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";
}
}
}
@ -271,38 +315,87 @@ const openModal = async (data: string) => {
function sendToCommand() {
dialogConfirm(
$q,
() => console.log("ส่งไปผู้บังคับบัญชา"),
async () => {
await http
.put(config.API.leaveApproveToComander(formData.id))
.then(() => {
success($q, "บันทึกข้อมูลสำเร็จ");
})
.catch((err) => {
messageError($q, err);
})
.finally(() => {});
},
"ยืนยันการส่งไปผู้บังคับบัญชา",
"ต้องการยืนยันการส่งไปผู้บังคับบัญชานี้ใช่หรือไม่ ?"
);
}
/** Function Save */
function clickSave() {
function clickSave(reason: string) {
const body = {
reason: reason,
};
if (dialogTitle.value === "อนุมัติ") {
dialogConfirm(
$q,
() => console.log("save1"),
async () => {
await http
.put(config.API.leaveApprove(formData.id), body)
.then(() => {
success($q, "บันทึกข้อมูลสำเร็จ");
})
.catch((err) => {
messageError($q, err);
})
.finally(() => {
modalApprove.value = false;
});
},
"ยืนยันอนุมัติ",
"ต้องการยืนยันอนุมัติใช่หรือไม่ ?"
);
modalApprove.value = false;
console.log("Yes");
}
if (dialogTitle.value === "ไม่อนุมัติ") {
//leaveReject
dialogConfirm(
$q,
() => console.log("save1"),
async () => {
await http
.put(config.API.leaveReject(formData.id), body)
.then(() => {
success($q, "บันทึกข้อมูลสำเร็จ");
})
.catch((err) => {
messageError($q, err);
})
.finally(() => {
modalApprove.value = false;
});
},
"ยืนยันไม่อนุมัติ",
"ต้องการยืนยันไม่อนุมัติใช่หรือไม่ ?"
);
modalApprove.value = false;
console.log("NOT");
}
if (dialogTitle.value === "ส่งไปยังผู้มีอำนาจ") {
dialogConfirm(
$q,
() => ((modalApprove.value = false), console.log("ส่งไปยังผู้มีอำนาจ")),
async () => {
await http
.put(config.API.leaveComanderApprove(formData.id), body)
.then(() => {
success($q, "บันทึกข้อมูลสำเร็จ");
})
.catch((err) => {
messageError($q, err);
})
.finally(() => {
modalApprove.value = false;
});
},
"ยืนยันการส่งไปยังผู้มีอำนาจ",
"ต้องการยืนยันการส่งไปยังผู้มีอำนาจใช่หรือไม่ ?"
);
@ -323,7 +416,7 @@ function clickSave() {
class="q-mr-sm"
@click="router.push(`/leave`)"
/>
รายละเอยดการลาของ {{ formData.fullname }}
รายละเอยดการลาของ {{ formData.fullName }}
</div>
<div>
<q-btn
@ -373,10 +466,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">
@ -384,7 +474,7 @@ function clickSave() {
- นามสก
</div>
<div class="col text-weight-medium">
{{ formData.fullname }}
{{ formData.fullName }}
</div>
</div>
</div>
@ -409,7 +499,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>
@ -464,7 +554,7 @@ function clickSave() {
:data="formData"
/>
<!-- ลาประกอบพ -->
<!-- ลาประกอบพ -->
<FormHajj v-else-if="checkForm === 'FormHajj'" :data="formData" />
<!-- ลาเขารบการตรวจเลอกหรอเขารบการเตรยมพล -->

View file

@ -18,7 +18,7 @@ import FormLeave from "@/modules/09_leave/components/2_Leave/formDetail/formLeav
import FormChildbirth from "@/modules/09_leave/components/2_Leave/formDetail/formChildbirth.vue"; //
import FormHoliday from "@/modules/09_leave/components/2_Leave/formDetail/formHoliday.vue"; //
import FormUpasom from "@/modules/09_leave/components/2_Leave/formDetail/formUpasom.vue"; //
import FormHajj from "@/modules/09_leave/components/2_Leave/formDetail/formHajj.vue"; //
import FormHajj from "@/modules/09_leave/components/2_Leave/formDetail/formHajj.vue"; //
import FormCheckSelect from "@/modules/09_leave/components/2_Leave/formDetail/formCheckSelect.vue"; //
import FormStudy from "@/modules/09_leave/components/2_Leave/formDetail/formStudy.vue"; //
import FormLeaveToTraining from "@/modules/09_leave/components/2_Leave/formDetail/formLeaveToTraining.vue"; //
@ -60,7 +60,7 @@ const formData = reactive<FremData>({
organizationName: "", //
leaveTypeName: "", // Name
leaveTypeId: "", //Id
fullname: "", //
fullName: "", //
dateSendLeave: new Date(), //
leaveDateStart: new Date(), //
leaveDateEnd: new Date(), //
@ -96,7 +96,7 @@ const formData = reactive<FremData>({
ordainDayOrdination: new Date(), // ()
ordainDayBuddhistLentName: "", // ()
ordainDayBuddhistLentAddress: "", // ()
hajjDayStatus: false, /// () ()
hajjDayStatus: false, /// () ()
absentDaySummon: "", // ()
absentDayLocation: "", // ()
absentDayRegistorDate: new Date(), // ()
@ -147,7 +147,7 @@ function fetchDetailLeave(paramsId: string) {
? e.leaveTypeName
: stores.convertLeave(e.leaveTypeId);
formData.leaveTypeId = e.leaveTypeId;
formData.fullname = e.fullname;
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);
@ -299,7 +299,7 @@ function clickSave() {
class="q-mr-sm"
@click="router.push(`/leave`)"
/>
รายละเอยดการขอยกเลกของ {{ formData.fullname }}
รายละเอยดการขอยกเลกของ {{ formData.fullName }}
</div>
<!-- <div>
<q-btn
@ -396,7 +396,7 @@ function clickSave() {
- นามสก
</div>
<div class="col text-weight-medium">
{{ formData.fullname }}
{{ formData.fullName }}
</div>
</div>
</div>
@ -476,7 +476,7 @@ function clickSave() {
:data="formData"
/>
<!-- ลาประกอบพ -->
<!-- ลาประกอบพ -->
<FormHajj v-else-if="checkForm === 'FormHajj'" :data="formData" />
<!-- ลาเขารบการตรวจเลอกหรอเขารบการเตรยมพล -->

View file

@ -1,5 +1,5 @@
<script setup lang="ts">
import { ref, reactive, onMounted } from "vue";
import { ref, reactive, onMounted, watch } from "vue";
import { useQuasar } from "quasar";
import http from "@/plugins/http";
import config from "@/app.config";
@ -29,34 +29,35 @@ const $q = useQuasar(); //ใช้ noti quasar
//
const querySting = reactive<QuerySting>({
year: new Date().getFullYear(), //*( .)
type: "00000000-0000-0000-0000-000000000000", //*Id
status: "ALL", //*
year: leaveStore.filter.year, //*( .)
type: leaveStore.filter.type, //*Id
status: leaveStore.filter.status, //*
page: 1, //*
pageSize: 10, //*
keyword: "", //keyword
keyword: leaveStore.filter.keyword, //keyword
});
const maxPage = ref<number>(1);
//** API*/
async function fecthLeaveList() {
// showLoader();
// await http
// .post(config.API.leaveList(), querySting)
// .then((res) => {
// console.log(res);
// maxPage.value = Math.ceil(data.length / querySting.pageSize);
// })
// .catch((err) => {
// messageError($q, err);
// })
// .finally(() => {
// hideLoader();
// });
const data = APIDATA.data;
maxPage.value = Math.ceil(data.length / querySting.pageSize);
fetchListLeave(data); /** ส่งข้อมูลไป stores*/
showLoader();
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);
})
.finally(() => {
hideLoader();
});
// const data = APIDATA.data;
// maxPage.value = Math.ceil(data.length / querySting.pageSize);
}
/**
@ -83,6 +84,13 @@ async function updatePaging(
onMounted(async () => {
await fecthLeaveList();
});
watch(
() => leaveStore.tabView,
async () => {
leaveStore.tabView === "list" && (await fecthLeaveList());
}
);
</script>
<template>
<q-toolbar class="text-primary" style="padding: 0">

View file

@ -27,31 +27,31 @@ const { fetchListLeaveReject } = leaveStore;
const $q = useQuasar(); // noti quasar
const querySting = reactive<QuerySting>({
year: new Date().getFullYear(), //*( .)
type: "00000000-0000-0000-0000-000000000000", //*Id
status: "ALL", //*
year: leaveStore.filter.year, //*( .)
type: leaveStore.filter.type, //*Id
status: leaveStore.filter.status, //*
page: 1, //*
pageSize: 5, //*
keyword: "", //keyword
keyword: leaveStore.filter.keyword, //keyword
});
const maxPage = ref<number>(1);
//** API*/
async function fecthLeaveList() {
// showLoader();
// await http
// .post(config.API.leaveListDelete(), querySting)
// .then((res) => {
// console.log(res);
showLoader();
await http
.post(config.API.leaveListDelete(), querySting)
.then((res) => {
console.log(res);
// maxPage.value = Math.ceil(data.length / querySting.pageSize);
// })
// .catch((err) => {
// messageError($q, err);
// })
// .finally(() => {
// hideLoader();
// });
maxPage.value = Math.ceil(data.length / querySting.pageSize);
})
.catch((err) => {
messageError($q, err);
})
.finally(() => {
hideLoader();
});
const data = APIDATA.data;
fetchListLeaveReject(data); /** ส่งข้อมูลไป stores*/

View file

@ -36,11 +36,11 @@ const columnsLeave = ref<QTableProps["columns"]>([
style: "font-size: 14px",
},
{
name: "fullname",
name: "fullName",
align: "left",
label: "ผู้ยื่นใบลา",
sortable: true,
field: "fullname",
field: "fullName",
headerStyle: "font-size: 14px",
style: "font-size: 14px",
},
@ -66,7 +66,7 @@ const columnsLeave = ref<QTableProps["columns"]>([
const visibleColumnsLeave = ref<string[]>([
"no",
"leaveTypeName",
"fullname",
"fullName",
"dateSendLeave",
"status",
]);
@ -91,11 +91,11 @@ const columnsReject = ref<QTableProps["columns"]>([
style: "font-size: 14px",
},
{
name: "fullname",
name: "fullName",
align: "left",
label: "ผู้ยื่นยกเลิกใบลา",
sortable: true,
field: "fullname",
field: "fullName",
headerStyle: "font-size: 14px",
style: "font-size: 14px",
},
@ -121,7 +121,7 @@ const columnsReject = ref<QTableProps["columns"]>([
const visibleReject = ref<string[]>([
"no",
"leaveTypeName",
"fullname",
"fullName",
"dateSendLeave",
"status",
]);

View file

@ -47,7 +47,7 @@ function updateQuerySting(
/** function ค้นหาข้อมูลใน Table*/
async function filterListLeave() {
updateQuerySting(1, 0, filter);
updateQuerySting(1, 0, leaveStore.filter);
}
/** Option*/
@ -150,7 +150,7 @@ onMounted(async () => {
<div class="col-xs-12 col-sm-3 col-md-2">
<datepicker
menu-class-name="modalfix"
v-model="filter.year"
v-model="leaveStore.filter.year"
class="col-2"
:locale="'th'"
autoApply
@ -167,7 +167,7 @@ onMounted(async () => {
dense
lazy-rules
outlined
:model-value="Number(filter.year) + 543"
:model-value="Number(leaveStore.filter.year) + 543"
:label="`${'ปีงบประมาณ'}`"
>
<template v-slot:prepend>
@ -189,7 +189,7 @@ onMounted(async () => {
map-options
outlined
dense
v-model="filter.type"
v-model="leaveStore.filter.type"
:options="optionType"
option-value="id"
option-label="name"
@ -215,7 +215,7 @@ onMounted(async () => {
map-options
outlined
dense
v-model="filter.status"
v-model="leaveStore.filter.status"
:options="optionStatus"
option-value="id"
option-label="name"
@ -240,7 +240,7 @@ onMounted(async () => {
for="filterTable"
dense
outlined
v-model="filter.keyword"
v-model="leaveStore.filter.keyword"
label="ค้นหา"
@keydown.enter.prevent="filterListLeave"
/>

View file

@ -25,7 +25,7 @@ console.log(props);
</div>
<div class="row">
<div class="col text-grey-8">จำนวนวนทลา</div>
<div class="col">{{ props.data.leaveCount }}</div>
<div class="col">{{ props.data.leaveTotal }}</div>
</div>
<div class="row">
<div class="col text-grey-8">ไดบหมายเรยกของ</div>
@ -53,7 +53,18 @@ console.log(props);
</div>
<div class="row">
<div class="col text-grey-8">เอกสารแนบ</div>
<div class="col">{{ props.data.leaveDocument }}</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>
</div>
</q-card-section>

View file

@ -23,7 +23,7 @@ const props = defineProps({
</div>
<div class="row">
<div class="col text-grey-8">จำนวนวนทลา</div>
<div class="col">{{ props.data.leaveCount }}</div>
<div class="col">{{ props.data.leaveTotal }}</div>
</div>
<div class="row">
<div class="col text-grey-8">อภรรยา</div>
@ -47,7 +47,16 @@ const props = defineProps({
</div>
<div class="row">
<div class="col text-grey-8">เอกสารแนบ</div>
<div class="col">{{ props.data.leaveDocument }}</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>
</div>
</q-card-section>

View file

@ -24,14 +24,14 @@ const props = defineProps({
</div>
<div class="row">
<div class="col text-grey-8">จำนวนวนทลา</div>
<div class="col">{{ props.data.leaveCount }}</div>
<div class="col">{{ props.data.leaveTotal }}</div>
</div>
<div class="row">
<div class="col text-grey-8">นทเขารบราชการ</div>
<div class="col">{{ props.data.leavegovernmentDate }}</div>
</div>
<div class="row">
<div class="col text-grey-8">เคย/ไมเคยไปประกอบพ</div>
<div class="col text-grey-8">เคย/ไมเคยไปประกอบพ</div>
<div class="col">{{ props.data.hajjDayStatus ? "เคย" : "ไม่เคย" }}</div>
</div>
<div class="row">
@ -40,7 +40,16 @@ const props = defineProps({
</div>
<div class="row">
<div class="col text-grey-8">เอกสารแนบ</div>
<div class="col">{{ props.data.leaveDocument }}</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>
</div>
</q-card-section>

View file

@ -32,7 +32,7 @@ const props = defineProps({
</div>
<div class="row">
<div class="col text-grey-8">จำนวนวนทลา</div>
<div class="col">{{ props.data.leaveCount }}</div>
<div class="col">{{ props.data.leaveTotal }}</div>
</div>
<div class="row">
<div class="col text-grey-8"></div>
@ -52,7 +52,18 @@ const props = defineProps({
</div>
<div class="row">
<div class="col text-grey-8">เอกสารแนบ</div>
<div class="col">{{ props.data.leaveDocument }}</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>
</div>
</q-card-section>

View file

@ -24,7 +24,7 @@ const props = defineProps({
</div>
<div class="row">
<div class="col text-grey-8">จำนวนวนทลา</div>
<div class="col">{{ props.data.leaveCount }}</div>
<div class="col">{{ props.data.leaveTotal }}</div>
</div>
<div class="row">
<div class="col text-grey-8"></div>
@ -50,7 +50,16 @@ const props = defineProps({
</div>
<div class="row">
<div class="col text-grey-8">เอกสารแนบ</div>
<div class="col">{{ props.data.leaveDocument }}</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>
</div>
</q-card-section>

View file

@ -23,7 +23,7 @@ const props = defineProps({
</div>
<div class="row">
<div class="col text-grey-8">จำนวนวนทลา</div>
<div class="col">{{ props.data.leaveCount }}</div>
<div class="col">{{ props.data.leaveTotal }}</div>
</div>
<div class="row">
<div class="col text-grey-8">นเดอนปเก</div>
@ -71,7 +71,16 @@ const props = defineProps({
</div>
<div class="row">
<div class="col text-grey-8">เอกสารแนบ</div>
<div class="col">{{ props.data.leaveDocument }}</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>
</div>
</q-card-section>

View file

@ -27,7 +27,16 @@ const props = defineProps({
</div>
<div class="row">
<div class="col text-grey-8">เอกสารแนบ</div>
<div class="col">{{ props.data.leaveDocument }}</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>
</div>
</q-card-section>

View file

@ -24,7 +24,7 @@ console.log(props);
</div>
<div class="row">
<div class="col-4 text-grey-8">อผนขอ</div>
<div class="col">{{ props.data.fullname }}</div>
<div class="col">{{ props.data.fullName }}</div>
</div>
<div class="row">
<div class="col-4 text-grey-8">ตำแหนงผนขอ</div>

View file

@ -23,7 +23,7 @@ const props = defineProps({
</div>
<div class="row">
<div class="col text-grey-8">จำนวนวนทลา</div>
<div class="col">{{ props.data.leaveCount }}</div>
<div class="col">{{ props.data.leaveTotal }}</div>
</div>
<div class="row">
<div class="col text-grey-8">นเดอนปเก</div>
@ -78,7 +78,18 @@ const props = defineProps({
</div>
<div class="row">
<div class="col text-grey-8">เอกสารแนบ</div>
<div class="col">{{ props.data.leaveDocument }}</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>
</div>
</q-card-section>

View file

@ -24,7 +24,7 @@ const props = defineProps({
</div>
<div class="row">
<div class="col text-grey-8">จำนวนวนทลา</div>
<div class="col">{{ props.data.leaveCount }}</div>
<div class="col">{{ props.data.leaveTotal }}</div>
</div>
<div class="row">
<div class="col text-grey-8">นเดอนปเก</div>
@ -74,7 +74,18 @@ const props = defineProps({
</div>
<div class="row">
<div class="col text-grey-8">เอกสารแนบ</div>
<div class="col">{{ props.data.leaveDocument }}</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>
</div>
</q-card-section>

View file

@ -65,7 +65,16 @@ const props = defineProps({
</div>
<div class="row">
<div class="col text-grey-8">เอกสารแนบ</div>
<div class="col">{{ props.data.leaveDocument }}</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>
</div>
</q-card-section>

View file

@ -27,7 +27,18 @@ const props = defineProps({
</div>
<div class="row">
<div class="col text-grey-8">เอกสารแนบ</div>
<div class="col">{{ props.data.leaveDocument }}</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>
</div>
</q-card-section>

View file

@ -27,9 +27,9 @@ interface FremData {
positionName: string; //ตำแหน่งผู้ยื่นขอ
positionLevelName: string; //ระดับผู้ยื่นขอ
organizationName: string; //สังกัดผู้ยื่นขอ
leaveTypeName: string | null; //Name ประเภทการลา
leaveTypeId: string | null; //Id ประเภทการลา
fullname: string; //คำนำหน้า ชื่อ นามสกุล คนขอลา
leaveTypeName: string; //Name ประเภทการลา
leaveTypeId: string; //Id ประเภทการลา
fullName: string; //คำนำหน้า ชื่อ นามสกุล คนขอลา
dateSendLeave: Date | null; //วันที่ยื่นใบลา
leaveDateStart: Date | null; //วันเริ่มการลา
leaveDateEnd: Date | null; //วันสิ้นสุดการลา
@ -65,7 +65,7 @@ interface FremData {
ordainDayOrdination: Date | null; //สถานที่บวช วันอุปสมบท(ลาอุปสมบท)
ordainDayBuddhistLentName: String; //สถานที่จำพรรษา ชื่อวัด(ลาอุปสมบท)
ordainDayBuddhistLentAddress: String; //สถานที่จำพรรษา ที่อยู่(ลาอุปสมบท)
hajjDayStatus: Boolean; //เคย/ไม่เคยไปประกอบพิธีฮัจย์ (ให้เลือก) (ลาประกอบพิธีฮัจย์)
hajjDayStatus: Boolean; //เคย/ไม่เคยไปประกอบพิธีฮัจญ์ (ให้เลือก) (ลาประกอบพิธีฮัจญ์)
absentDaySummon: String; //ได้รับหมายเรียกของ (ลาเข้ารับการตรวจเลือกหรือเข้ารับการเตรียมพล)
absentDayLocation: String; //ที่ (ลาเข้ารับการตรวจเลือกหรือเข้ารับการเตรียมพล)
absentDayRegistorDate: Date | null; //ลงวันที่ (ลาเข้ารับการตรวจเลือกหรือเข้ารับการเตรียมพล)

View file

@ -2,10 +2,18 @@ interface DataRows {
id: string; //*Id การยื่นขอลา
leaveTypeName: string | null; //Name ประเภทการลา
leaveTypeId: string; //Id ประเภทการลา
fullname: string; //คำนำหน้า ชื่อ นามสกุล คนขอลา
fullName: string; //คำนำหน้า ชื่อ นามสกุล คนขอลา
dateSendLeave: string | null; //วันที่ยื่นใบลา
status: string | null; //ส
}
interface ListLeave {
id: string; //*Id การยื่นขอลา
leaveTypeName: string | null; //Name ประเภทการลา
leaveTypeId: string; //Id ประเภทการลา
fullName: string; //คำนำหน้า ชื่อ นามสกุล คนขอลา
dateSendLeave: Date | null; //วันที่ยื่นใบลา
status: string | null; //ส
}
interface FormData {
id: string;
leaveType: string;
@ -18,5 +26,17 @@ interface DataDateMonthObject {
month: number;
year: number;
}
interface LeaveType {
code: string;
createdAt: Date;
createdFullName: string;
createdUserId: string;
id: string;
lastUpdateFullName: string;
lastUpdateUserId: string;
lastUpdatedAt: Date | null;
limit: Number;
name: string;
}
export type { DataRows, FormData, DataDateMonthObject };
export type { DataRows, FormData, DataDateMonthObject, ListLeave, LeaveType };

View file

@ -1,10 +1,14 @@
import { defineStore } from "pinia";
import { ref, onMounted } from "vue";
import { ref, reactive } from "vue";
import { useCounterMixin } from "@/stores/mixin";
/** importType*/
import type { DateFilter } from "@/modules/09_leave/interface/request/leave";
import type { QTableProps } from "quasar";
import type { DataRows } from "@/modules/09_leave/interface/response/leave";
import type {
DataRows,
ListLeave,
} from "@/modules/09_leave/interface/response/leave";
import type { FremData } from "@/modules/09_leave/interface/request/leave";
const mixin = useCounterMixin();
@ -16,6 +20,13 @@ export const useLeavelistDataStore = defineStore("leave", () => {
/** ข้อมูล Tab 1*/
const tabView = ref<string>("list");
/** filter*/
const filter = reactive<DateFilter>({
year: new Date().getFullYear(), //*ปีในการยื่นขอใบลา(ใช้เป็น คศ.)
type: "00000000-0000-0000-0000-000000000000", //*Id ประเภทการลา
status: "ALL", //*สถานะการของลา
keyword: "", //keyword ค้นหา
});
/**ข้อมูลใน Table*/
const mainData = ref<any>([]);
@ -29,14 +40,14 @@ export const useLeavelistDataStore = defineStore("leave", () => {
* fetchListLeave
* @param data Page
*/
async function fetchListLeave(data: any[]) {
let datalist = data.map((e: FremData) => ({
async function fetchListLeave(data: ListLeave[]) {
let datalist = data.map((e: ListLeave) => ({
id: e.id,
leaveTypeName: e.leaveTypeId && convertLeave(e.leaveTypeId),
leaveTypeName: e.leaveTypeName,
leaveTypeId: e.leaveTypeId,
fullname: e.fullname,
fullName: e.fullName,
dateSendLeave: e.dateSendLeave && date2Thai(e.dateSendLeave),
status: convertSatatus(e.status),
status: e.status && convertSatatus(e.status),
}));
mainData.value = datalist;
@ -52,7 +63,7 @@ export const useLeavelistDataStore = defineStore("leave", () => {
id: e.id,
leaveTypeName: e.leaveTypeId && convertLeave(e.leaveTypeId),
leaveTypeId: e.leaveTypeId,
fullname: e.fullname,
fullName: e.fullName,
dateSendLeave: e.dateSendLeave && date2Thai(e.dateSendLeave),
status: convertSatatus2(e.status),
}));
@ -75,6 +86,8 @@ export const useLeavelistDataStore = defineStore("leave", () => {
return "อนุมัติ";
case "REJECT":
return "ไม่อนุมัติ";
case "DELETE":
return "ยกเลิก";
}
}
@ -112,7 +125,7 @@ export const useLeavelistDataStore = defineStore("leave", () => {
case "leave6":
return "ลาอุปสมบท";
case "leave7":
return "ลาประกอบพิธีฮัจ์";
return "ลาประกอบพิธีฮัจ์";
case "leave8":
return "ลาเข้ารับการตรวจเลือกหรือเข้ารับการเตรียมพล";
case "leave9":
@ -175,6 +188,8 @@ export const useLeavelistDataStore = defineStore("leave", () => {
/** ข้อมูล Main*/
tabMenu,
/** ข้อมูล Tab1*/
/** filter */
filter,
tabView,
/**ข้อมูลใน Table */
rows,