This commit is contained in:
Warunee Tamkoo 2024-06-26 22:15:23 +07:00
parent c7cda1c7ba
commit 8b2819d634
6 changed files with 109 additions and 54 deletions

View file

@ -51,28 +51,28 @@ const sumResult = computed(() => {
const group = computed(() => { const group = computed(() => {
return convert(sumResult.value); return convert(sumResult.value);
}); });
const options = ref<any[]>([ // const options = ref<any[]>([
{ // {
label: "ดีเด่น (คะแนนร้อยละ ๙๐. ขึ้นไป)", // label: " ( . )",
value: "EXCELLENT", // value: "EXCELLENT",
}, // },
{ // {
label: "ดีมาก (คะแนนร้อยละ ๘๐. - ๘๙.๙๙)", // label: " ( . - .)",
value: "VERYGOOD", // value: "VERYGOOD",
}, // },
{ // {
label: "ดี (คะแนนร้อยละ ๗๐. - ๗๙.๙๙)", // label: " ( . - .)",
value: "GOOD", // value: "GOOD",
}, // },
{ // {
label: "พอใช้ (คะแนนร้อยละ ๖๐. - ๖๙.๙๙)", // label: " ( . - .)",
value: "FAIR", // value: "FAIR",
}, // },
{ // {
label: "ต้องปรับปรุง (คะแนนต่ำกว่าร้อยละ ๖๐.)", // label: " ( .)",
value: "IMPROVEMENT", // value: "IMPROVEMENT",
}, // },
]); // ]);
function convert(score: any): string { function convert(score: any): string {
if (score >= 90) { if (score >= 90) {
@ -120,7 +120,7 @@ function onSubmitCommander() {
showLoader(); showLoader();
http http
.put(config.API.kpiSendToReason(id.value, "commander"), { .put(config.API.kpiSendToReason(id.value, "commander"), {
isReason: superiorCommentCheck.value, isReason: superiorCommentCheck.value == "true" ? true : false,
reason: superiorComment.value, reason: superiorComment.value,
}) })
.then((res) => { .then((res) => {
@ -145,7 +145,7 @@ function onSubmitCommanderHigh() {
showLoader(); showLoader();
http http
.put(config.API.kpiSendToReason(id.value, "commanderHigh"), { .put(config.API.kpiSendToReason(id.value, "commanderHigh"), {
isReason: additionalSuperiorCheck.value, isReason: additionalSuperiorCheck.value == "true" ? true : false,
reason: additionalSuperiorComment.value, reason: additionalSuperiorComment.value,
}) })
.then((res) => { .then((res) => {
@ -180,7 +180,7 @@ async function fetchEvaluation() {
const data = res.data.result; const data = res.data.result;
store.dataEvaluation = await data; store.dataEvaluation = await data;
if (data.profileId == store.dataProfile.id) { if (data.profileId == store.dataProfile.profileId) {
userOpen(); userOpen();
} }
}) })
@ -207,10 +207,14 @@ function getData() {
developmentMethod.value = data.developEvaluator; developmentMethod.value = data.developEvaluator;
developmentPeriod.value = data.timeEvaluator; developmentPeriod.value = data.timeEvaluator;
evaluatorComment.value = data.reasonEvaluator; evaluatorComment.value = data.reasonEvaluator;
superiorCommentCheck.value = data.isReasonCommander.toString(); superiorCommentCheck.value = data.isReasonCommander
? data.isReasonCommander.toString()
: "";
superiorComment.value = data.reasonCommander; superiorComment.value = data.reasonCommander;
additionalSuperiorCheck.value = data.isReasonCommanderHigh.toString(); additionalSuperiorCheck.value = data.isReasonCommanderHigh
? data.isReasonCommanderHigh.toString()
: "";
additionalSuperiorComment.value = data.reasonCommanderHigh; additionalSuperiorComment.value = data.reasonCommanderHigh;
result1.value = data.totalPoint1; result1.value = data.totalPoint1;
result2.value = data.totalPoint2_1 + data.totalPoint2_2; result2.value = data.totalPoint2_1 + data.totalPoint2_2;
@ -227,6 +231,7 @@ onMounted(() => {
fetchEvaluation(); fetchEvaluation();
}); });
</script> </script>
<template> <template>
<div class="q-pa-sm"> <div class="q-pa-sm">
<!-- 1-4 สรปผลการประเม --> <!-- 1-4 สรปผลการประเม -->

View file

@ -1,12 +1,12 @@
<script setup lang="ts"> <script setup lang="ts">
import { ref } from "vue"; import { onMounted, ref } from "vue";
import { useKpiDataStore } from "@/modules/08_KPI/store"; import { useKpiDataStore } from "@/modules/08_KPI/store";
import { useRoute } from "vue-router"; import { useRoute } from "vue-router";
import Assessment from "@/modules/08_KPI/components/Tab/01_Assessment.vue"; import Assessment from "@/modules/08_KPI/components/Tab/01_Assessment.vue";
import Result from "@/modules/08_KPI/components/Tab/04_Result.vue"; import Result from "@/modules/08_KPI/components/Tab/04_Result.vue";
import CommanderAbove from "@/modules/08_KPI/components/Tab/03_CommanderAbove.vue"; // import CommanderAbove from "@/modules/08_KPI/components/Tab/03_CommanderAbove.vue";
import CommanderAboveOneStep from "@/modules/08_KPI/components/Tab/04_CommanderAboveOneStep.vue"; // import CommanderAboveOneStep from "@/modules/08_KPI/components/Tab/04_CommanderAboveOneStep.vue";
import File from "@/modules/08_KPI/components/Tab/05_File.vue"; import File from "@/modules/08_KPI/components/Tab/05_File.vue";
const store = useKpiDataStore(); const store = useKpiDataStore();
@ -63,7 +63,16 @@ const splitterModel = ref<number>(12);
label="รายงานผลสำเร็จของงาน" label="รายงานผลสำเร็จของงาน"
:disable="store.tabOpen < 3" :disable="store.tabOpen < 3"
/> />
<q-tab name="4" label="สรุปผลการประเมิน" :disable="store.tabOpen < 4" /> <q-tab
name="4"
label="สรุปผลการประเมิน"
:disable="
store.tabOpen < 4 ||
(store.tabOpen == 4 &&
store.rolePerson === 'USER' &&
store.dataEvaluation.evaluationStatus != 'COMPLETE')
"
/>
<q-tab name="5" label="ไฟล์เอกสาร" /> <q-tab name="5" label="ไฟล์เอกสาร" />
</q-tabs> </q-tabs>
</template> </template>

View file

@ -268,9 +268,6 @@ const isEditStep3 = computed(() => {
store.rolePerson === "USER" && store.rolePerson === "USER" &&
store.tabMain === "3") || store.tabMain === "3") ||
(store.dataEvaluation.evaluationStatus === "EVALUATING_EVALUATOR" && (store.dataEvaluation.evaluationStatus === "EVALUATING_EVALUATOR" &&
store.rolePerson === "EVALUATOR" &&
store.tabMain === "3") ||
(store.dataEvaluation.evaluationStatus === "EVALUATING" &&
store.rolePerson === "EVALUATOR" && store.rolePerson === "EVALUATOR" &&
store.tabMain === "3") store.tabMain === "3")
); );

View file

@ -260,12 +260,11 @@ export const useKpiDataStore = defineStore("KPIDate", () => {
const role = await (dataEvaluation.value.profileId == const role = await (dataEvaluation.value.profileId ==
dataProfile.value.profileId dataProfile.value.profileId
? "USER" ? "USER"
: dataEvaluation.value.evaluatorId == (await dataProfile.value.profileId) : dataEvaluation.value.evaluatorId == dataProfile.value.profileId
? "EVALUATOR" ? "EVALUATOR"
: dataEvaluation.value.commanderId == (await dataProfile.value.profileId) : dataEvaluation.value.commanderId == dataProfile.value.profileId
? "COMMANDER" ? "COMMANDER"
: dataEvaluation.value.commanderHighId == : dataEvaluation.value.commanderHighId == dataProfile.value.profileId
(await dataProfile.value.profileId)
? "COMMANDERHIGH" ? "COMMANDERHIGH"
: ""); : "");
// console.log("🚀 ~ checkStep ~ role:", role); // console.log("🚀 ~ checkStep ~ role:", role);
@ -274,41 +273,54 @@ export const useKpiDataStore = defineStore("KPIDate", () => {
switch (dataEvaluation.value.evaluationStatus) { switch (dataEvaluation.value.evaluationStatus) {
case "NEW": case "NEW":
tabOpen.value = 1; tabOpen.value = 1;
tabMain.value = "1";
break; break;
case "NEW_EVALUATOR": case "NEW_EVALUATOR":
tabOpen.value = 1; tabOpen.value = 1;
tabMain.value = "1";
break; break;
case "NEW_COMMANDER": case "NEW_COMMANDER":
tabOpen.value = 1; tabOpen.value = 1;
tabMain.value = "1";
break; break;
case "NEW_COMMANDER_HIGH": case "NEW_COMMANDER_HIGH":
tabOpen.value = 1; tabOpen.value = 1;
tabMain.value = "1";
break; break;
case "APPROVE": case "APPROVE":
tabOpen.value = 2; tabOpen.value = 2;
tabMain.value = "2";
break; break;
case "EVALUATING": case "EVALUATING":
tabOpen.value = 3; tabOpen.value = 3;
tabMain.value = "3";
break; break;
case "EVALUATING_EVALUATOR": case "EVALUATING_EVALUATOR":
tabOpen.value = 3; tabOpen.value = 3;
tabMain.value = "3";
break; break;
case "SUMMARY": case "SUMMARY":
tabOpen.value = 4; tabOpen.value = 4;
tabMain.value = "3";
break; break;
case "SUMMARY_COMMANDER": case "SUMMARY_COMMANDER":
tabOpen.value = 4; tabOpen.value = 4;
tabMain.value = "3";
break; break;
case "SUMMARY_COMMANDER_HIGH": case "SUMMARY_COMMANDER_HIGH":
tabOpen.value = 4; tabOpen.value = 4;
tabMain.value = "3";
break; break;
case "COMPLETE": case "COMPLETE":
tabOpen.value = 4; tabOpen.value = 4;
tabMain.value = "4";
break; break;
default: default:
tabOpen.value = 1; tabOpen.value = 1;
tabMain.value = "1";
break; break;
} }
// console.log("🚀 ~ tabMain ~ role:", tabMain.value);
} }
// SUMMARY GENERAL CASE // SUMMARY GENERAL CASE

View file

@ -66,8 +66,8 @@ async function fetchEvaluation() {
store.dataEvaluation = await data; store.dataEvaluation = await data;
formProfile.status = store.convertStatus(data.evaluationStatus); formProfile.status = store.convertStatus(data.evaluationStatus);
formProfile.result = store.convertResults(data.evaluationResults); formProfile.result = store.convertResults(data.evaluationResults);
await store.checkCompetency(); store.checkCompetency();
await store.checkCompetencyDefaultCompetencyLevel(); store.checkCompetencyDefaultCompetencyLevel();
fetchProfile(data.profileId); fetchProfile(data.profileId);
@ -91,6 +91,7 @@ async function getProfile() {
.then(async (res) => { .then(async (res) => {
const data = await res.data.result; const data = await res.data.result;
store.dataProfile = await data; store.dataProfile = await data;
await store.checkStep();
}) })
.catch((e) => { .catch((e) => {
messageError($q, e); messageError($q, e);
@ -251,12 +252,11 @@ function filterOption(val: any, update: Function, refData: string) {
async function getAll() { async function getAll() {
await fetchEvaluation(); await fetchEvaluation();
await getProfile(); getProfile();
await getOrgOp(); getOrgOp();
await store.checkStep();
} }
function sendToEvaluatore(status: string) { function sendToEvaluatore() {
dialogConfirm( dialogConfirm(
$q, $q,
() => { () => {
@ -264,7 +264,7 @@ function sendToEvaluatore(status: string) {
showLoader(); showLoader();
http http
.put(config.API.kpiSendToStatus(id.value), { .put(config.API.kpiSendToStatus(id.value), {
status: status, status: "NEW_EVALUATOR",
}) })
.then((res) => { .then((res) => {
success($q, "ส่งข้อตกลงให้ผู้ประเมินอนุมัติสำเร็จ"); success($q, "ส่งข้อตกลงให้ผู้ประเมินอนุมัติสำเร็จ");
@ -283,6 +283,32 @@ function sendToEvaluatore(status: string) {
); );
} }
function sendToEvaluateEvaluatore() {
dialogConfirm(
$q,
() => {
if (id.value) {
showLoader();
http
.put(config.API.kpiSendToStatus(id.value), {
status: "EVALUATING_EVALUATOR",
})
.then((res) => {
success($q, "ส่งให้ผู้ประเมินรายงานผลสำเร็จของงานสำเร็จ");
close();
})
.catch((e) => {
messageError($q, e);
})
.finally(() => {
hideLoader();
});
}
},
"ยืนยันการส่งให้ผู้ประเมินรายงานผลสำเร็จของงาน",
"ต้องการยืนยันส่งให้ผู้ประเมินรายงานผลสำเร็จของงานใช่หรือไม่?"
);
}
// function sendToSummary(status: string) { // function sendToSummary(status: string) {
// dialogConfirm( // dialogConfirm(
// $q, // $q,
@ -347,7 +373,7 @@ function sendToEvauator() {
showLoader(); showLoader();
http http
.post(config.API.sendToCommander, { .post(config.API.sendToCommander, {
evaluationStatus: "EVALUATING", status: "EVALUATING",
id: [store.dataEvaluation.id], id: [store.dataEvaluation.id],
}) })
.then(async (res) => { .then(async (res) => {
@ -454,7 +480,9 @@ onMounted(async () => {
> >
<div class="row col-12 items-center justify-center"> <div class="row col-12 items-center justify-center">
<span class="text-h6 text-weight-medium text-primary">{{ <span class="text-h6 text-weight-medium text-primary">{{
`${store.dataEvaluation.prefix}${store.dataEvaluation.firstName} ${store.dataEvaluation.lastName}` store.dataEvaluation.firstName
? `${store.dataEvaluation.prefix}${store.dataEvaluation.firstName} ${store.dataEvaluation.lastName}`
: ""
}}</span> }}</span>
<q-space v-if="$q.screen.gt.xs" /> <q-space v-if="$q.screen.gt.xs" />
@ -495,12 +523,13 @@ onMounted(async () => {
color="grey-2" color="grey-2"
text-color="blue-6" text-color="blue-6"
size="md" size="md"
@click="sendToEvaluatore('NEW_EVALUATOR')" @click="sendToEvaluatore()"
> >
<q-tooltip>งใหประเมนอน</q-tooltip> <q-tooltip>งใหประเมนอน</q-tooltip>
</q-btn> </q-btn>
<q-btn <q-btn
v-if=" v-if="
store.rolePerson == 'USER' &&
store.tabMain == '2' && store.tabMain == '2' &&
store.dataEvaluation.evaluationStatus == 'APPROVE' store.dataEvaluation.evaluationStatus == 'APPROVE'
" "
@ -526,7 +555,7 @@ onMounted(async () => {
color="grey-2" color="grey-2"
text-color="blue-6" text-color="blue-6"
size="md" size="md"
@click="sendToEvaluatore('EVALUATING_EVALUATOR')" @click="sendToEvaluateEvaluatore()"
> >
<q-tooltip <q-tooltip
>งใหประเมนรายงานผลสำเรจของงาน</q-tooltip >งใหประเมนรายงานผลสำเรจของงาน</q-tooltip
@ -577,8 +606,10 @@ onMounted(async () => {
'EVALUATING_EVALUATOR' 'EVALUATING_EVALUATOR'
" "
:disabled=" :disabled="
store.dataEvaluation.evaluatorId == null || store.indicatorScoreVal +
store.dataEvaluation.summaryPoint <= 0 store.competencyScoreVal +
store.devScoreVal <=
0
" "
unelevated unelevated
round round
@ -592,6 +623,7 @@ onMounted(async () => {
</q-btn> </q-btn>
<q-btn <q-btn
v-if="store.rolePerson == 'USER'"
unelevated unelevated
round round
icon="mdi-account" icon="mdi-account"

View file

@ -273,10 +273,10 @@ function getProfile() {
http http
.get(config.API.profilePosition()) .get(config.API.profilePosition())
.then(async (res) => { .then(async (res) => {
const data = res.data.result; const data = await res.data.result;
store.dataProfile = data; store.dataProfile = data;
await store.checkCompetency(); store.checkCompetency();
await store.checkCompetencyDefaultCompetencyLevel(); store.checkCompetencyDefaultCompetencyLevel();
formRound.profileId = data.profileId; formRound.profileId = data.profileId;
formRound.prefix = data.prefix; formRound.prefix = data.prefix;