From fe9120e4a55804385c860ea21d7af6f8a57a4e2b Mon Sep 17 00:00:00 2001 From: setthawutttty Date: Thu, 20 Feb 2025 14:46:29 +0700 Subject: [PATCH] =?UTF-8?q?=E0=B9=80=E0=B8=9E=E0=B8=B4=E0=B9=88=E0=B8=A1?= =?UTF-8?q?=E0=B8=AD=E0=B8=B1=E0=B8=9B=E0=B9=82=E0=B8=AB=E0=B8=A5=E0=B8=94?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/modules/14_KPI/views/detailView.vue | 262 +++++++++++++++++++++++- 1 file changed, 257 insertions(+), 5 deletions(-) diff --git a/src/modules/14_KPI/views/detailView.vue b/src/modules/14_KPI/views/detailView.vue index 01e085e5b..2c8e22c90 100644 --- a/src/modules/14_KPI/views/detailView.vue +++ b/src/modules/14_KPI/views/detailView.vue @@ -3,6 +3,7 @@ import { ref, onMounted, reactive, onUnmounted } from "vue"; import { useRoute, useRouter } from "vue-router"; import { useQuasar } from "quasar"; import genReport from "@/plugins/genreport"; +import axios from "axios"; import http from "@/plugins/http"; import config from "@/app.config"; @@ -18,6 +19,12 @@ import type { DataOption } from "@/modules/14_KPI/interface/index/Main"; import { useKpiDataStore } from "@/modules/14_KPI/store"; import { useCounterMixin } from "@/stores/mixin"; +interface ArrayFileList { + id: string; + pathName: string; + fileName: string; +} + const itemsTab = ref([ { name: "1", @@ -60,6 +67,7 @@ const { dialogConfirm, success, findOrgName, + dialogRemove, } = mixin; const evaluatorIdOp = ref([]); @@ -75,6 +83,10 @@ const commanderId = ref(null); const commanderHighId = ref(null); const avartar = ref(""); +const fileUpload = ref(null); +const fileList = ref([]); + +const modalUpload = ref(false); const formProfile = reactive({ fullName: "", position: "", @@ -436,7 +448,7 @@ async function downloadReport() { const data = res.data.result; await genReport( data, - "แบบรายงานผลการปฏิบัติราชการ " + + "แบบกำหนดข้อตกลง" + store.dataEvaluation.prefix + store.dataEvaluation.firstName + " " + @@ -449,6 +461,138 @@ async function downloadReport() { .finally(() => {}); } +async function uploadReport() { + modalUpload.value = true; + getData(); +} + +function closeDialog() { + modalUpload.value = false; + fileUpload.value = null; +} + +/** ฟังชั่น อัปโหลดไฟล์ */ +async function clickUpload(file: any) { + const fileName = { fileName: file.name }; + + dialogConfirm( + $q, + async () => { + showLoader(); + const selectedFile = file; + const formdata = new FormData(); + formdata.append("file", selectedFile); + await http + .post(config.API.file("แบบกำหนดข้อตกลง", "KPI", id.value), { + replace: true, + fileList: fileName, + }) + .then(async (res) => { + const foundKey: string | undefined = Object.keys(res.data).find( + (key) => + res.data[key]?.fileName !== undefined && + res.data[key]?.fileName !== "" + ); + foundKey && + uploadFileDoc(res.data[foundKey]?.uploadUrl, fileUpload.value); + }) + .catch((err) => { + messageError($q, err); + }); + }, + "ยืนยันการอัปโหลดไฟล์", + "ต้องการยืนยันการอัปโหลดไฟล์นี้หรือไม่ ?" + ); +} + +/** + * อัปโหลดไฟล์ + * @param uploadUrl url + * @param file ไฟล์ + */ +async function uploadFileDoc(uploadUrl: string, file: any) { + const Data = new FormData(); + Data.append("file", fileUpload.value); + await axios + .put(uploadUrl, file, { + headers: { + "Content-Type": file.type, + }, + }) + .then(async (res) => { + await getData(); + success($q, "อัปโหลดไฟล์สำเร็จ"); + }) + .catch((e) => { + messageError($q, e); + }) + .finally(() => { + fileUpload.value = null; + hideLoader(); + }); +} + +/** ดึงข้อมูล */ +async function getData() { + showLoader(); + await http + .get(config.API.file("แบบกำหนดข้อตกลง", "KPI", id.value)) + .then((res) => { + fileList.value = res.data; + }) + .catch((e) => { + messageError($q, e); + }) + .finally(() => { + hideLoader(); + }); +} + +/** + * ลบไฟล์ + * @param fileName file name + */ +function deleteFile(fileName: string) { + dialogRemove($q, async () => { + showLoader(); + http + .delete( + config.API.file("แบบกำหนดข้อตกลง", "KPI", id.value) + `/${fileName}` + ) + .catch((e) => { + messageError($q, e); + }) + .finally(async () => { + await getData(); + + setTimeout(() => { + success($q, `ลบไฟล์สำเร็จ`); + hideLoader(); + }, 500); + }); + }); +} + +/** + * ดาวน์โหลดลิงก์ไฟล์ + * @param fileName file name + */ +function downloadFile(fileName: string) { + showLoader(); + http + .get(config.API.file("แบบกำหนดข้อตกลง", "KPI", id.value) + `/${fileName}`) + .then((res) => { + const data = res.data.downloadUrl; + window.open(data, "_blank"); + }) + .catch((e) => { + messageError($q, e); + }) + .finally(async () => { + hideLoader(); + }); +} + onMounted(async () => { store.isUpdate = false; await fetchEvaluation(); @@ -685,12 +829,11 @@ onUnmounted(() => { > ดูข้อมูลการทดลองปฏิบัติหน้าที่ราชการ - { >ดาวน์โหลดแบบกำหนดข้อตกลงการประเมินผลสัมฤทธิ์ของงานและพฤติกรรมการปฏิบัติราชการ + + อัปโหลดแบบกำหนดข้อตกลงการประเมินผลสัมฤทธิ์ของงานและพฤติกรรมการปฏิบัติราชการ + @@ -1148,6 +1310,96 @@ onUnmounted(() => { + + + + + + +
+
+ + + + +
+ +
+ + + {{ data.fileName }} + +
+ ดาวน์โหลดไฟล์ + + ลบไฟล์ +
+
+
+
+ +
+ ไม่มีรายการเอกสาร +
+
+
+
+
+