diff --git a/package.json b/package.json index fc5a6bd..d84d6c4 100644 --- a/package.json +++ b/package.json @@ -26,6 +26,7 @@ "@tato30/vue-pdf": "^1.5.1", "@vuepic/vue-datepicker": "^3.6.3", "bma-org-chart": "^0.0.7", + "exceljs": "^4.4.0", "html-to-image": "^1.11.13", "keycloak-js": "^20.0.2", "moment": "^2.29.4", diff --git a/src/modules/05_leave/components/DialogDetail.vue b/src/modules/05_leave/components/DialogDetail.vue index 2c05ebd..7874515 100644 --- a/src/modules/05_leave/components/DialogDetail.vue +++ b/src/modules/05_leave/components/DialogDetail.vue @@ -6,7 +6,7 @@ import http from "@/plugins/http"; import config from "@/app.config"; import { useCounterMixin } from "@/stores/mixin"; import { useLeaveStore } from "@/modules/05_leave/store"; -import { useDataStore } from "@/stores/data"; +import genReport from "@/plugins/genreport"; /** import type*/ import type { @@ -16,8 +16,6 @@ import type { FromCancelDetail, } from "@/modules/05_leave/interface/response/leave"; -import DialogHeader from "@/components/DialogHeader.vue"; -import Workflow from "@/components/Workflow/Main.vue"; import FormLeave from "@/modules/05_leave/components/formDetail/01_SickForm.vue"; import FormChildbirth from "@/modules/05_leave/components/formDetail/04_HelpWifeBirthForm.vue"; import FormHoliday from "@/modules/05_leave/components/formDetail/05_VacationForm.vue"; @@ -33,7 +31,6 @@ import FormCancel from "@/modules/05_leave/components/formDetail/formCancel.vue" const $q = useQuasar(); const dataStore = useLeaveStore(); -const mainStore = useDataStore(); const { convertStatud } = dataStore; const mixin = useCounterMixin(); const { @@ -206,7 +203,7 @@ async function fetchDataDetail(id: string) { formData.leaveDateEnd = data.leaveEndDate && date2Thai(data.leaveEndDate); formData.leaveCount = calculateDurationYmd( data.leaveStartDate, - data.leaveEndDate + data.leaveEndDate, ); formData.leaveWrote = data.leaveWrote ?? "-"; formData.leaveAddress = data.leaveAddress ?? "-"; @@ -255,8 +252,7 @@ async function fetchDataDetail(id: string) { formData.studyDaySubject = data.studyDaySubject ?? "-"; formData.studyDayDegreeLevel = data.studyDayDegreeLevel ?? "-"; formData.studyDayUniversityName = data.studyDayUniversityName ?? "-"; - formData.studyDayTrainingSubject = - data.studyDayTrainingSubject ?? "-" ?? "-"; + formData.studyDayTrainingSubject = data.studyDayTrainingSubject ?? "-"; formData.studyDayTrainingName = data.studyDayTrainingName ?? "-"; formData.studyDayCountry = data.studyDayCountry ?? "-"; formData.studyDayScholarship = data.studyDayScholarship ?? "-"; @@ -383,7 +379,7 @@ async function onClickSave() { onSubmit(); }, "ยืนยันการบันทึกข้อมูล", - "ต้องการยินยันการบันทึกข้อมูลนี้หรือไม่ ?" + "ต้องการยินยันการบันทึกข้อมูลนี้หรือไม่ ?", ); } else { } @@ -412,6 +408,28 @@ async function onSubmit() { }); } +/** + * ฟังก์ชันดาวน์โหลดไฟล์ + * @param id รหัสการลา + * @param fileName ชื่อไฟล์ + * @param type ประเภทไฟล์ + */ +async function onClickDownloadFile(id: string, fileName: string, type: string) { + showLoader(); + await http + .get(config.API.leaveReport(id)) + .then(async (res) => { + const data = res.data.result; + await genReport(data, fileName, type); + }) + .catch((err) => { + messageError($q, err); + }) + .finally(() => { + hideLoader(); + }); +} + /**** ตรวจสอบว่ามีการส่งข้อมูลเข้ามาแล้วเปิด modal */ watch( () => props.modal, @@ -425,7 +443,7 @@ watch( ? props.leaveId && fetchDataCancelDetail(props.leaveId) : props.leaveId && fetchDataDetail(props.leaveId); } - } + }, ); @@ -435,10 +453,62 @@ watch( v-if="props.leaveStatus != 'DELETE'" style="width: 900px; max-width: 80vw" > - + + + {{ ` ${titleMain} ${titleName}` }} + + ดาวน์โหลดไฟล์ + + + + + + + ไฟล์ .DOCX + + + + + + ไฟล์ .pdf + + + + + + + @@ -581,10 +651,62 @@ watch( - + + + {{ ` ${titleMainCancle} ${titleName}` }} + + ดาวน์โหลดไฟล์ + + + + + + + ไฟล์ .DOCX + + + + + + ไฟล์ .pdf + + + + + + + diff --git a/src/modules/05_leave/components/FormLeave/01_SickForm.vue b/src/modules/05_leave/components/FormLeave/01_SickForm.vue index f1e754e..9b6df27 100644 --- a/src/modules/05_leave/components/FormLeave/01_SickForm.vue +++ b/src/modules/05_leave/components/FormLeave/01_SickForm.vue @@ -131,11 +131,11 @@ function onValidate() { formData.append("leaveRangeEnd", formDataSick.leaveRangeEnd); formData.append( "leaveStartDate", - convertDateToAPI(formDataSick.leaveStartDate) ?? "" + convertDateToAPI(formDataSick.leaveStartDate) ?? "", ); formData.append( "leaveEndDate", - convertDateToAPI(formDataSick.leaveEndDate) ?? "" + convertDateToAPI(formDataSick.leaveEndDate) ?? "", ); formData.append("leaveWrote", formDataSick.leaveWrote); formData.append("leaveAddress", dataStore.currentAddress); @@ -202,7 +202,6 @@ function mapPropsToFormData() { statusCheck.value = props.data.status; leaveId.value = props.data.id; formDataSick.leaveDocument = []; - console.log(props.data.leaveDocument); } } @@ -211,7 +210,7 @@ watch( () => { mapPropsToFormData(); }, - { deep: true } + { deep: true }, ); /** Hook */ diff --git a/src/modules/05_leave/components/FormLeave/Form.vue b/src/modules/05_leave/components/FormLeave/Form.vue index d80b64b..d5fd5fe 100644 --- a/src/modules/05_leave/components/FormLeave/Form.vue +++ b/src/modules/05_leave/components/FormLeave/Form.vue @@ -293,7 +293,7 @@ function getSearch() { /> + diff --git a/src/modules/05_leave/components/ListView.vue b/src/modules/05_leave/components/ListView.vue index 37aea58..294c302 100644 --- a/src/modules/05_leave/components/ListView.vue +++ b/src/modules/05_leave/components/ListView.vue @@ -163,7 +163,7 @@ async function updatePagination(p: number, ps: number, s: string, d: boolean) { function convert(val: any) { if (leaveType.value) { const filtertype = leaveType.value.find( - (e: any) => e.id === val.leaveTypeId + (e: any) => e.id === val.leaveTypeId, ); const type = filtertype?.code; if (type == "LV-006" && val.hajjDayStatus == false) { @@ -242,7 +242,7 @@ onMounted(async () => { :props="props" @click="onClickView(props.row.id, props.row.status)" > - {{ props.row.dateSendLeave }} + {{ props.row.status === "DRAFT" ? "-" : props.row.dateSendLeave }} @@ -419,7 +419,7 @@ onMounted(async () => { {{ (page - 1) * pageSize + props.rowIndex + 1 }} - + { {{ props.row.statusConvert }} - {{ col.value }} + + {{ + props.row.status === "DRAFT" ? "-" : props.row.dateSendLeave + }} + + {{ col.value }} diff --git a/src/modules/05_leave/components/formDetail/01_SickForm.vue b/src/modules/05_leave/components/formDetail/01_SickForm.vue index d186c94..43530d7 100644 --- a/src/modules/05_leave/components/formDetail/01_SickForm.vue +++ b/src/modules/05_leave/components/formDetail/01_SickForm.vue @@ -18,7 +18,9 @@ const props = defineProps({
วันที่ยื่นใบลา
-
{{ props.data.dateSendLeave }}
+
+ {{ props.data.status === "DRAFT" ? "-" : props.data.dateSendLeave }} +
เรื่อง
@@ -30,11 +32,33 @@ const props = defineProps({
ลาตั้งแต่วันที่
-
{{ props.data.leaveDateStart }} {{ `${props.data.leaveRange && props.data.leaveRange !== 'ALL' ? `(${converstType(props.data.leaveRange)})`:''}` }}
+
+ {{ props.data.leaveDateStart }} + {{ + `${ + props.data.leaveRange && props.data.leaveRange !== "ALL" + ? `(${converstType(props.data.leaveRange)})` + : "" + }` + }} +
ลาถึงวันที่
-
{{ props.data.leaveDateEnd }} {{ `${props.data.leaveDateStart !== props.data.leaveDateEnd ? `${props.data.leaveRangeEnd && props.data.leaveRangeEnd !== 'ALL' ? `(${converstType(props.data.leaveRangeEnd)})`:''}` :''}` }}
+
+ {{ props.data.leaveDateEnd }} + {{ + `${ + props.data.leaveDateStart !== props.data.leaveDateEnd + ? `${ + props.data.leaveRangeEnd && props.data.leaveRangeEnd !== "ALL" + ? `(${converstType(props.data.leaveRangeEnd)})` + : "" + }` + : "" + }` + }} +
จำนวนวันที่ลา
@@ -87,10 +111,12 @@ const props = defineProps({ target="_blank" outline color="blue" - :label="`ดาวน์โหลดเอกสารแนบที่ ${index + 1}`" + :label="`ดาวน์โหลดเอกสารแนบที่ ${Number(index) + 1}`" size="12px" > - ดาวน์โหลดเอกสารแนบที่ {{ index + 1 }} + ดาวน์โหลดเอกสารแนบที่ {{ Number(index) + 1 }}
diff --git a/src/modules/05_leave/components/formDetail/04_HelpWifeBirthForm.vue b/src/modules/05_leave/components/formDetail/04_HelpWifeBirthForm.vue index 80ec85d..52d358c 100644 --- a/src/modules/05_leave/components/formDetail/04_HelpWifeBirthForm.vue +++ b/src/modules/05_leave/components/formDetail/04_HelpWifeBirthForm.vue @@ -1,8 +1,8 @@