From 83ef71e5b9f92698770a89991d4ba80aedb0318f Mon Sep 17 00:00:00 2001 From: "DESKTOP-1R2VSQH\\Lenovo ThinkPad E490" Date: Wed, 8 May 2024 18:09:59 +0700 Subject: [PATCH 1/6] =?UTF-8?q?=E0=B9=81=E0=B8=9A=E0=B8=9A=E0=B8=9B?= =?UTF-8?q?=E0=B8=A3=E0=B8=B0=E0=B9=80=E0=B8=A1=E0=B8=B4=E0=B8=99=20KPI=20?= =?UTF-8?q?=3D>=20=E0=B8=9B=E0=B8=A3=E0=B8=B1=E0=B8=9A=20=E0=B9=80?= =?UTF-8?q?=E0=B8=9E=E0=B8=B4=E0=B9=88=E0=B8=A1=E0=B8=95=E0=B8=B1=E0=B8=A7?= =?UTF-8?q?=E0=B8=8A=E0=B8=B5=E0=B9=89=E0=B8=A7=E0=B8=B1=E0=B8=94?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Tab/Dialog/01_FormIndicator.vue | 352 ++++++++++++++++-- 1 file changed, 316 insertions(+), 36 deletions(-) diff --git a/src/modules/08_KPI/components/Tab/Dialog/01_FormIndicator.vue b/src/modules/08_KPI/components/Tab/Dialog/01_FormIndicator.vue index 553bd8f..ccd6127 100644 --- a/src/modules/08_KPI/components/Tab/Dialog/01_FormIndicator.vue +++ b/src/modules/08_KPI/components/Tab/Dialog/01_FormIndicator.vue @@ -5,6 +5,8 @@ import { useRoute } from "vue-router"; import config from "@/app.config"; import http from "@/plugins/http"; +import type { DataOptions } from "@/modules/08_KPI/interface/index/Main"; + import DialogHeader from "@/components/DialogHeader.vue"; import { useCounterMixin } from "@/stores/mixin"; @@ -22,6 +24,7 @@ const { dialogConfirm, dialogMessageNotify, success, + date2Thai, } = mixin; const modal = defineModel("modal", { required: true }); @@ -35,6 +38,20 @@ const search = ref(""); const listCheckID = ref(null); const listTarget = ref([]); +const formFilter = reactive({ + isAll: false, + keyword: "", + node: 0, + nodeId: "", + period: "", + year: null, + page: 1, + pageSize: 20, +}); + +const totalList = ref(0); //จำนวนข้อมูลรายการ +const maxPage = ref(1); + const formDetail = reactive({ orgRevisionId: "", id: "", @@ -60,20 +77,28 @@ const formDetail = reactive({ strategyId: "", strategyName: "", documentInfoEvidence: "", + date: null, }); +/** Option รอบการประเมิน*/ +const roundOp = ref([ + { id: "APR", name: "รอบเมษายน" }, + { id: "OCT", name: "รอบตุลาคม" }, +]); + function fetchIndicators() { - const nodeId = store.dataProfile.nodeId; - const node = store.dataProfile.node; - const kpiPeriodId = store.dataEvaluation.kpiPeriodId; + formFilter.nodeId = store.dataProfile.nodeId; + formFilter.node = store.dataProfile.node; + formFilter.year = formFilter?.year ? formFilter.year.toString() : ""; + // const kpiPeriodId = store.dataEvaluation.kpiPeriodId; + showLoader(); http - .get( - config.API.kpiPlan + - `?page=${1}&pageSize=${50}&kpiPeriodId=${kpiPeriodId}&nodeId=${nodeId}&node=${node}&keyword=${""}` - ) + .post(config.API.kpiPlan + `/search`, formFilter) .then((res) => { listTarget.value = res.data.result.data; + maxPage.value = Math.ceil(res.data.result.total / formFilter.pageSize); + totalList.value = res.data.result.total; }) .catch((err) => { messageError($q, err); @@ -94,6 +119,17 @@ function fetchIndicatorsByid(id: string) { formDetail.weight = data.weight; formDetail.meaning = data.meaning; formDetail.formula = data.formula; + formDetail.achievement1 = data.achievement1; + formDetail.achievement2 = data.achievement2; + formDetail.achievement3 = data.achievement3; + formDetail.achievement4 = data.achievement4; + formDetail.achievement5 = data.achievement5; + formDetail.documentInfoEvidence = data.documentInfoEvidence; + if (data.startDate && data.endDate) { + formDetail.date = []; + formDetail.date[0] = data.startDate; + formDetail.date[1] = data.endDate; + } clickList(data.kpiPlanId, true); }) .catch((err) => { @@ -107,13 +143,19 @@ function fetchIndicatorsByid(id: string) { function fetchListRole() { const kpiPeriodId = store.dataEvaluation.kpiPeriodId; const position = store.dataProfile.position; + formFilter.nodeId = store.dataProfile.nodeId; + formFilter.node = store.dataProfile.node; + formFilter.year = formFilter?.year ? formFilter.year.toString() : ""; + formFilter.position = store.dataProfile.position; + + console.log(formFilter); + http - .get( - config.API.kpiRole + - `?page=${1}&pageSize=${50}&kpiPeriodId=${kpiPeriodId}&position=${position}` - ) + .post(config.API.kpiRole + `/search`, formFilter) .then((res) => { listTarget.value = res.data.result.data; + maxPage.value = Math.ceil(res.data.result.total / formFilter.pageSize); + totalList.value = res.data.result.total; }) .finally(() => { hideLoader(); @@ -131,6 +173,17 @@ function fetchRoleByid(id: string) { formDetail.weight = data.weight; formDetail.meaning = data.meaning; formDetail.formula = data.formula; + formDetail.achievement1 = data.achievement1; + formDetail.achievement2 = data.achievement2; + formDetail.achievement3 = data.achievement3; + formDetail.achievement4 = data.achievement4; + formDetail.achievement5 = data.achievement5; + formDetail.documentInfoEvidence = data.documentInfoEvidence; + if (data.startDate && data.endDate) { + formDetail.date = []; + formDetail.date[0] = data.startDate; + formDetail.date[1] = data.endDate; + } clickList(data.kpiRoleId, true); }) .catch((err) => { @@ -155,6 +208,11 @@ function clickList(id: string, isData: boolean = false) { formDetail.weight = data.weight; formDetail.meaning = data.meaning; formDetail.formula = data.formula; + formDetail.achievement1 = data.achievement1; + formDetail.achievement2 = data.achievement2; + formDetail.achievement3 = data.achievement3; + formDetail.achievement4 = data.achievement4; + formDetail.achievement5 = data.achievement5; } formDetail.orgRevisionId = data.corgRevisionId; formDetail.id = data.id; @@ -163,11 +221,6 @@ function clickList(id: string, isData: boolean = false) { formDetail.kpiPeriodId = data.kpiPeriodId; formDetail.includingName = data.includingName; formDetail.including = data.including; - formDetail.achievement1 = data.achievement1; - formDetail.achievement2 = data.achievement2; - formDetail.achievement3 = data.achievement3; - formDetail.achievement4 = data.achievement4; - formDetail.achievement5 = data.achievement5; formDetail.node = data.node; formDetail.nodeId = data.nodeId; formDetail.nodeName = data.nodeName; @@ -209,6 +262,17 @@ function closeDialog() { formDetail.nodeId = ""; formDetail.strategy = ""; formDetail.strategyId = ""; + formDetail.documentInfoEvidence = ""; + formDetail.date = null; + + formFilter.isAll = false; + formFilter.keyword = ""; + formFilter.node = 0; + formFilter.nodeId = ""; + formFilter.period = ""; + formFilter.year = null; + formFilter.page = 1; + formFilter.pageSize = 20; } function onSubmit() { @@ -216,7 +280,7 @@ function onSubmit() { dialogMessageNotify($q, "กรุณาเลือกตัวชี้วัด"); } else { dialogConfirm($q, async () => { - // showLoader(); + showLoader(); const formBody = { target: formDetail.target, @@ -227,6 +291,14 @@ function onSubmit() { kpiUserEvaluationId: store.dataEvaluation.id, kpiPlanId: numpage.value === 1 ? listCheckID.value : undefined, kpiRoleId: numpage.value === 2 ? listCheckID.value : undefined, + achievement1: formDetail.achievement1, + achievement2: formDetail.achievement2, + achievement3: formDetail.achievement3, + achievement4: formDetail.achievement4, + achievement5: formDetail.achievement5, + documentInfoEvidence: formDetail.documentInfoEvidence, + startDate: formDetail.date ? formDetail.date[0] : undefined, + endDate: formDetail.date ? formDetail.date[1] : undefined, }; try { const urlPlanned = isStatusEdit.value @@ -240,17 +312,21 @@ function onSubmit() { const url = numpage.value === 1 ? urlPlanned : urlRole; const method = isStatusEdit.value ? "put" : "post"; await http[method](url, formBody); + closeDialog(); success($q, "บันทึกข้อมูลสำเร็จ"); } catch (err) { messageError($q, err); } finally { hideLoader(); - closeDialog(); } }); } } +function fetchNewListIndicators() { + formFilter.page = 1; + numpage.value === 1 ? fetchIndicators() : fetchListRole(); +} watch( () => modal.value, () => { @@ -273,7 +349,11 @@ watch(
-
+
+ +
+
+
+ + + + + +
+
+ +
+
+ +
@@ -335,6 +491,26 @@ watch( + +
+ ทั้งหมด {{ totalList }} รายการ + +
@@ -380,6 +556,7 @@ watch( (val) => !!val || `${'กรุณากรอกค่าเป้าหมาย'}`, ]" hide-bottom-space + lazy-rules />
@@ -395,6 +572,7 @@ watch( :rules="[ (val) => !!val || `${'กรุณากรอกหน่วยนับ'}`, ]" + lazy-rules hide-bottom-space reverse-fill-mask /> @@ -414,6 +592,7 @@ watch( !!val || `${'กรุณากรอกน้ำหนัก (ร้อยละ)'}`, ]" hide-bottom-space + lazy-rules mask="###" />
@@ -429,34 +608,84 @@ watch(
ระดับคะแนน
ผลสำเร็จของงาน
-
+
5
-
- {{ formDetail.achievement5 }} +
+
-
+
4
- {{ formDetail.achievement4 }} +
-
+
3
- {{ formDetail.achievement3 }} +
-
+
2
- {{ formDetail.achievement2 }} +
-
+
1
- {{ formDetail.achievement1 }} +
@@ -471,6 +700,7 @@ watch( :rules="[(val:string) => !!val || `${'กรุณากรอกตัวชี้วัด'}`,]" hide-bottom-space class="inputgreen" + lazy-rules />
@@ -484,6 +714,7 @@ watch( :rules="[(val:string) => !!val || `${'กรุณากรอกตัวชี้วัด'}`,]" hide-bottom-space class="inputgreen" + lazy-rules />
@@ -497,8 +728,57 @@ watch( :rules="[(val:string) => !!val || `${'กรุณากรอกข้อมูลเอกสารหลักฐาน'}`,]" hide-bottom-space class="inputgreen" + lazy-rules />
+
+ + + + + +
From b3b073cc3ea7ccda0aa02712d70d022de29fe245 Mon Sep 17 00:00:00 2001 From: waruneeauy Date: Wed, 8 May 2024 18:12:52 +0700 Subject: [PATCH 2/6] fix bug --- src/modules/08_KPI/store.ts | 141 ++++++++++++++++++++++++++++++++++-- 1 file changed, 134 insertions(+), 7 deletions(-) diff --git a/src/modules/08_KPI/store.ts b/src/modules/08_KPI/store.ts index b0337f2..86522fd 100644 --- a/src/modules/08_KPI/store.ts +++ b/src/modules/08_KPI/store.ts @@ -4,7 +4,38 @@ import type { DataOptions } from "./interface/index/Main"; export const useKpiDataStore = defineStore("KPIDate", () => { const tabMain = ref("1"); - const dataProfile = ref(null); + const dataProfile = ref({ + profileId: null, + prefix: "", + rank: "", + firstName: "", + lastName: "", + citizenId: "", + position: "", + posMaster: null, + posLevelName: null, + posLevelRank: null, + posLevelId: null, + posTypeName: null, + posTypeRank: null, + posTypeId: null, + posExecutiveName: "", + posExecutivePriority: null, + posExecutiveId: null, + rootId: null, + root: "", + child1Id: null, + child1: null, + child2Id: null, + child2: null, + child3Id: null, + child3: null, + child4Id: null, + child4: null, + node: null, + nodeId: null, + }); + const dataEvaluation = ref({ plannedPoint: 0, rolePoint: 0, @@ -43,12 +74,28 @@ export const useKpiDataStore = defineStore("KPIDate", () => { function convertStatus(val: string) { switch (val) { - case "PENDING": - return "รอดำเนินการ"; - case "INPROGRESS": - return "กําลังดำเนินการ"; - case "DONE": - return "ประเมินเสร็จสิ้น"; + case "NEW": + return "จัดทำข้อตกลง"; + case "REQEDIT": + return "ขอแก้ไขข้อตกลง"; + case "NEW_EVALUATOR": + return "รอผู้ประเมินตรวจสอบข้อตกลง"; + case "NEW_COMMANDER": + return "รอผู้บังคับบัญชาเหนือขึ้นไปตรวจสอบข้อตกลง"; + case "NEW_COMMANDER_HIGH": + return "รอผู้บังคับบัญชาเหนือขึ้นไปอีกชั้นหนึ่งตรวจสอบข้อตกลง"; + case "APPROVE": + return "รายงานความก้าวหน้า"; + case "EVALUATING": + return "รายงานผลสำเร็จของงาน"; + case "EVALUATING_EVALUATOR": + return "รอผู้ประเมินตรวจสอบผล"; + case "EVALUATING_COMMANDER": + return "รอผู้บังคับบัญชาเหนือขึ้นไปตรวจสอบผล"; + case "EVALUATING_COMMANDER_HIGH": + return "รอผู้บังคับบัญชาเหนือขึ้นไปอีกชั้นหนึ่งตรวจสอบผล"; + case "COMPLETE": + return "เสร็จสิ้น"; default: break; } @@ -182,6 +229,85 @@ export const useKpiDataStore = defineStore("KPIDate", () => { "blue-10", ]); + const tabOpen = ref(3); + const isRequestEditForm = ref(false); + const isEditForm = ref(false); + const isEvaluate = ref(false); + function checkStep(status: string, role: string) { + if (role == "REQ") { + switch (status) { + case "NEW": + tabOpen.value = 1; + isEditForm.value = true; + isEvaluate.value = false; + isRequestEditForm.value = false; + break; + case "NEW_EVALUATOR": + tabOpen.value = 1; + isEditForm.value = true; + isEvaluate.value = false; + isRequestEditForm.value = false; + break; + case "NEW_COMMANDER": + tabOpen.value = 1; + isEditForm.value = true; + isEvaluate.value = false; + isRequestEditForm.value = false; + break; + case "NEW_COMMANDER_HIGH": + tabOpen.value = 1; + isEditForm.value = true; + isEvaluate.value = false; + isRequestEditForm.value = false; + break; + case "APPROVE": + tabOpen.value = 1; + isEditForm.value = true; + isEvaluate.value = false; + isRequestEditForm.value = false; + break; + case "EVALUATING": + tabOpen.value = 1; + isEditForm.value = true; + isEvaluate.value = false; + isRequestEditForm.value = false; + break; + case "EVALUATING_EVALUATOR": + tabOpen.value = 1; + isEditForm.value = true; + isEvaluate.value = false; + isRequestEditForm.value = false; + break; + case "EVALUATING_COMMANDER": + tabOpen.value = 1; + isEditForm.value = true; + isEvaluate.value = false; + isRequestEditForm.value = false; + break; + case "EVALUATING_COMMANDER_HIGH": + tabOpen.value = 1; + isEditForm.value = true; + isEvaluate.value = false; + isRequestEditForm.value = false; + break; + case "COMPLETE": + tabOpen.value = 1; + isEditForm.value = true; + isEvaluate.value = false; + isRequestEditForm.value = false; + break; + + default: + tabOpen.value = 1; + isEditForm.value = false; + isEvaluate.value = false; + isRequestEditForm.value = false; + break; + } + } else if (role == "EVALUATOR") { + } + } + return { tabMain, dataProfile, @@ -195,5 +321,6 @@ export const useKpiDataStore = defineStore("KPIDate", () => { defaultCompetencyCoreLevel, defaultCompetencyGroupLevel, ratingColors, + tabOpen, }; }); From 141dc8f61f86f882e905696ee261f62088ce7d30 Mon Sep 17 00:00:00 2001 From: waruneeauy Date: Wed, 8 May 2024 18:13:15 +0700 Subject: [PATCH 3/6] updated --- src/modules/08_KPI/views/mainEvaluator.vue | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/modules/08_KPI/views/mainEvaluator.vue b/src/modules/08_KPI/views/mainEvaluator.vue index dcc3397..97e994e 100644 --- a/src/modules/08_KPI/views/mainEvaluator.vue +++ b/src/modules/08_KPI/views/mainEvaluator.vue @@ -31,7 +31,7 @@ const visibleColumns = ref([ "name", "createdAt", "evaluationStatus", - "evaluationStatus", + "evaluationResults", ]); const columns = ref([ { @@ -65,16 +65,16 @@ const columns = ref([ field: "evaluationStatus", headerStyle: "font-size: 14px", style: "font-size: 14px", - format: (v) => store.convertResults(v), + format: (v) => store.convertStatus(v), sort: (a: string, b: string) => a.localeCompare(b, undefined, { numeric: true, sensitivity: "base" }), }, { - name: "evaluationStatus", + name: "evaluationResults", align: "left", label: "ผลการประเมิน", sortable: true, - field: "evaluationStatus", + field: "evaluationResults", headerStyle: "font-size: 14px", style: "font-size: 14px", format: (v) => store.convertResults(v), From 6047660108c724dc37240f1b07b6d55dd98aa50d Mon Sep 17 00:00:00 2001 From: "DESKTOP-1R2VSQH\\Lenovo ThinkPad E490" Date: Thu, 9 May 2024 11:55:37 +0700 Subject: [PATCH 4/6] =?UTF-8?q?=E0=B8=87=E0=B8=B2=E0=B8=99=E0=B8=97?= =?UTF-8?q?=E0=B8=B5=E0=B9=88=E0=B9=84=E0=B8=94=E0=B9=89=E0=B8=A3=E0=B8=B1?= =?UTF-8?q?=E0=B8=9A=E0=B8=A1=E0=B8=AD=E0=B8=9A=E0=B8=AB=E0=B8=A1=E0=B8=B2?= =?UTF-8?q?=E0=B8=A2=E0=B8=9E=E0=B8=B4=E0=B9=80=E0=B8=A8=E0=B8=A9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/api/KPI/api.kpis.ts | 3 +- .../Tab/Dialog/01_FormIndicator.vue | 213 ++++++++++++++---- .../components/Tab/Topic/01_Indicator.vue | 49 ++-- src/modules/08_KPI/views/form.vue | 4 +- 4 files changed, 203 insertions(+), 66 deletions(-) diff --git a/src/api/KPI/api.kpis.ts b/src/api/KPI/api.kpis.ts index edd7f13..7dcac38 100644 --- a/src/api/KPI/api.kpis.ts +++ b/src/api/KPI/api.kpis.ts @@ -5,6 +5,7 @@ const kpiPeriod = `${env.API_URI}/kpi/period`; const kpiEvaluation = `${env.API_URI}/kpi/user/evaluation`; const kpiPlan = `${env.API_URI}/kpi/plan`; const kpiRole = `${env.API_URI}/kpi/role`; +const kpiSpecial = `${env.API_URI}/kpi/special`; const KpiCapacity = `${env.API_URI}/kpi/capacity`; const KpiFile = `${env.API_URI}/salary/file`; const KpiEvaluationInfo = `${env.API_URI}/kpi/evaluation`; @@ -17,6 +18,7 @@ export default { kpiEvaluation, kpiPlan, kpiRole, + kpiSpecial, KpiCapacity, file: KpiFile, @@ -25,7 +27,6 @@ export default { kpiScoreTotal: () => `${kpiEvaluation}/point`, - /** ผลสัมฤทธิ์ของงาน*/ fileByFile: (name: string, group: string, id: string, fileName: string) => `${url}/file/${name}/${group}/${id}/${fileName}`, diff --git a/src/modules/08_KPI/components/Tab/Dialog/01_FormIndicator.vue b/src/modules/08_KPI/components/Tab/Dialog/01_FormIndicator.vue index ccd6127..c6cdf50 100644 --- a/src/modules/08_KPI/components/Tab/Dialog/01_FormIndicator.vue +++ b/src/modules/08_KPI/components/Tab/Dialog/01_FormIndicator.vue @@ -1,5 +1,5 @@