updated
This commit is contained in:
parent
c7cda1c7ba
commit
8b2819d634
6 changed files with 109 additions and 54 deletions
|
|
@ -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 สรุปผลการประเมิน -->
|
||||||
|
|
|
||||||
|
|
@ -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>
|
||||||
|
|
|
||||||
|
|
@ -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")
|
||||||
);
|
);
|
||||||
|
|
|
||||||
|
|
@ -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
|
||||||
|
|
|
||||||
|
|
@ -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"
|
||||||
|
|
|
||||||
|
|
@ -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;
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue