From 338476928a8ef005703404426dcf0cfb74760dbe Mon Sep 17 00:00:00 2001 From: "STW_TTTY\\stwtt" Date: Wed, 7 Aug 2024 14:53:23 +0700 Subject: [PATCH] kpi --- .../components/Tab/Dialog/DialogDevelop.vue | 246 ++++++++++++++++-- src/modules/14_KPI/interface/index/Main.ts | 8 +- 2 files changed, 234 insertions(+), 20 deletions(-) diff --git a/src/modules/14_KPI/components/Tab/Dialog/DialogDevelop.vue b/src/modules/14_KPI/components/Tab/Dialog/DialogDevelop.vue index f3479fe08..462526e3a 100644 --- a/src/modules/14_KPI/components/Tab/Dialog/DialogDevelop.vue +++ b/src/modules/14_KPI/components/Tab/Dialog/DialogDevelop.vue @@ -7,7 +7,10 @@ import { useQuasar } from "quasar"; import http from "@/plugins/http"; import config from "@/app.config"; import { useRoute } from "vue-router"; -import type { DataOptionTechnique } from "@/modules/14_KPI/interface/index/Main"; +import type { + DataOptionTechnique, + ProjectYearOp, +} from "@/modules/14_KPI/interface/index/Main"; const props = defineProps({ getAll: Function, }); @@ -108,6 +111,14 @@ const projectTechniquesOp3 = ref([ { value: "other3", label: "อื่น ๆ (ระบุ)" }, ]); +const choice = ref("MANUAL"); +const projectName = ref(""); +const projectOp = ref([]); +const projectOpMain = ref([]); +const choiceOp = ref([ + { value: "PROJECT", label: "เลือกจากโครงการ/หลักสูตรการฝึกอบรม" }, + { value: "MANUAL", label: "กรอกเอง" }, +]); const $q = useQuasar(); const mixin = useCounterMixin(); const { @@ -122,7 +133,19 @@ const { const modal = defineModel("modal", { required: true }); const id = defineModel("id", { required: true }); -const formData = reactive({ +const formData = reactive<{ + year: number | null; + name: string; + group: any[]; + target: string; + isDevelopment70: boolean; + isDevelopment20: boolean; + isDevelopment10: boolean; + achievement10: string; + achievement5: string; + achievement0: string; +}>({ + year: null, name: "", group: [], target: "", @@ -148,6 +171,14 @@ function close() { formData.achievement5 = "มีผลการพัฒนาแต่ยังไม่ได้ดำเนินการตามเป้าหมายการนำไปพัฒนางาน"; formData.achievement0 = "ไม่ได้ดำเนินการพัฒนา"; + choice.value = "MANUAL"; + formData.year = null; + projectName.value = ""; + reasonDevelopment70.value = ""; + reasonDevelopment20.value = ""; + reasonDevelopment10.value = ""; + development.value = []; + props.getAll?.(); } @@ -174,10 +205,13 @@ function onSubmit() { isDevelopment10: isDevelopment10.value, kpiUserEvaluationId: idKpi.value, developmentProjects: development.value, - reasonDevelopment70:checkOtherBox11 ? reasonDevelopment70.value:'', - reasonDevelopment20:checkOtherBox12 ? reasonDevelopment20.value:'', - reasonDevelopment10:checkOtherBox13 ? reasonDevelopment10.value:'', + reasonDevelopment70: checkOtherBox11 ? reasonDevelopment70.value : "", + reasonDevelopment20: checkOtherBox12 ? reasonDevelopment20.value : "", + reasonDevelopment10: checkOtherBox13 ? reasonDevelopment10.value : "", + selectType: choice.value, + selectTypeYear: formData.year ? formData.year.toString() : null, + selectTypeId: projectName.value.id ? projectName.value.id : null, }; showLoader(); http[id.value ? "put" : "post"](url, body) @@ -201,21 +235,41 @@ watch( showLoader(); http .get(config.API.kpiAchievementDevelop + `/${id.value}`) - .then((res) => { + .then(async (res) => { const data = res.data.result; - formData.name = data.name; - formData.group = data.group; - formData.target = data.target; - formData.isDevelopment70 = data.isDevelopment70; - formData.isDevelopment20 = data.isDevelopment20; - formData.isDevelopment10 = data.isDevelopment10; - formData.achievement10 = data.achievement10; - formData.achievement5 = data.achievement5; - formData.achievement0 = data.achievement0; - development.value = data.developmentProjects; - reasonDevelopment70.value = data.developmentProjects.includes("other1") ? data.reasonDevelopment70:''; - reasonDevelopment20.value = data.developmentProjects.includes("other2") ? data.reasonDevelopment20:''; - reasonDevelopment10.value = data.developmentProjects.includes("other3") ? data.reasonDevelopment10:''; + formData.year = data.selectTypeYear; + await getDataByYear(); + setTimeout(() => { + choice.value = data.selectType; + projectName.value = projectOpMain.value.find( + (i: any) => i.id == data.selectTypeId + ); + formData.name = data.name; + formData.group = data.group; + formData.target = data.target; + formData.isDevelopment70 = data.isDevelopment70; + formData.isDevelopment20 = data.isDevelopment20; + formData.isDevelopment10 = data.isDevelopment10; + formData.achievement10 = data.achievement10; + formData.achievement5 = data.achievement5; + formData.achievement0 = data.achievement0; + development.value = data.developmentProjects; + reasonDevelopment70.value = data.developmentProjects.includes( + "other1" + ) + ? data.reasonDevelopment70 + : ""; + reasonDevelopment20.value = data.developmentProjects.includes( + "other2" + ) + ? data.reasonDevelopment20 + : ""; + reasonDevelopment10.value = data.developmentProjects.includes( + "other3" + ) + ? data.reasonDevelopment10 + : ""; + }, 500); }) .catch((e) => { messageError($q, e); @@ -226,6 +280,76 @@ watch( } } ); + +const customPosition = () => ({ top: "385px", left: "410px" }); +async function getDataByYear() { + if (formData.year) { + showLoader(); + http + .get(config.API.developmentMain + `/done?year=${formData.year}`) + .then(async(res) => { + const data = await res.data.result.data; + projectOpMain.value = data; + }) + .catch((e) => { + messageError($q, e); + }) + .finally(() => { + hideLoader(); + }); + } +} + +function getProjectDetail(val: any) { + showLoader(); + http + .get(config.API.developmentMain + `/tab3_1/${val.id}`) + .then((res) => { + const data = res.data.result; + formData.name = val.projectName; + formData.group = data.group; + formData.target = data.target; + formData.isDevelopment70 = data.isDevelopment70; + formData.isDevelopment20 = data.isDevelopment20; + formData.isDevelopment10 = data.isDevelopment10; + formData.achievement10 = data.achievement10; + formData.achievement5 = data.achievement5; + formData.achievement0 = data.achievement0; + development.value = data.developmentProjectTechniqueActuals; + reasonDevelopment70.value = + data.developmentProjectTechniqueActuals.includes("other1") + ? data.reasonDevelopment70 + : ""; + reasonDevelopment20.value = + data.developmentProjectTechniqueActuals.includes("other2") + ? data.reasonDevelopment20 + : ""; + reasonDevelopment10.value = + data.developmentProjectTechniqueActuals.includes("other3") + ? data.reasonDevelopment10 + : ""; + }) + .catch((e) => { + messageError($q, e); + }) + .finally(() => { + hideLoader(); + }); +} + +/** + * function ค้นหาข้อมูลใน option + * @param val คำค้นหา + * @param update function + */ +function filterOptionFn(val: string, update: Function) { + projectName.value = ""; + update(() => { + projectOp.value = projectOpMain.value.filter( + (e: any) => e.projectName.search(val) !== -1 + ); + }); +}