updated step kpi

This commit is contained in:
Warunee Tamkoo 2024-05-09 12:12:58 +07:00
parent 141dc8f61f
commit 96a8c84600
3 changed files with 200 additions and 85 deletions

View file

@ -11,7 +11,9 @@ import File from "@/modules/08_KPI/components/Tab/05_File.vue";
const store = useKpiDataStore();
const route = useRoute();
const isReadonly = ref<boolean>(route.name === "KPIEditEvaluator" ? true : false);
const isReadonly = ref<boolean>(
route.name === "KPIEditEvaluator" ? true : false
);
const step = ref<number>(1); // 1 = , 2 = , 3 =
const indicatorScore = defineModel("indicatorScore", {
type: Number,
@ -69,8 +71,16 @@ const splitterModel = ref<number>(12);
:label="tab.label"
/> -->
<q-tab name="1" label="จัดทำข้อตกลง" />
<q-tab name="2" label="รายงานความก้าวหน้า" :disable="step < 2" />
<q-tab name="3" label="รายงานผลสำเร็จของงาน" :disable="step < 3" />
<q-tab
name="2"
label="รายงานความก้าวหน้า"
:disable="store.tabOpen < 2"
/>
<q-tab
name="3"
label="รายงานผลสำเร็จของงาน"
:disable="store.tabOpen < 3"
/>
<!-- <q-tab name="3" label="ผู้บังคับบัญชา">
<div class="text-caption">เหนอขนไป</div>
</q-tab>
@ -101,9 +111,9 @@ const splitterModel = ref<number>(12);
v-model:indicatorScore="indicatorScore"
v-model:competencyScore="competencyScore"
/>
<Evaluator v-if="store.tabMain === '2'" :type="'evaluator'" />
<Evaluator v-if="store.tabMain === '3'" :type="'commander'" />
<Evaluator v-if="store.tabMain === '4'" :type="'commanderHigh'" />
<Assessment v-if="store.tabMain === '2'" :type="'evaluator'" />
<Assessment v-if="store.tabMain === '3'" :type="'commander'" />
<Assessment v-if="store.tabMain === '4'" :type="'commanderHigh'" />
<File v-if="store.tabMain === '5'" />
</q-tab-panel>
</q-tab-panels>

View file

@ -37,6 +37,12 @@ export const useKpiDataStore = defineStore("KPIDate", () => {
});
const dataEvaluation = ref<any>({
evaluationReqEdit: "NEW",
evaluationStatus: "NEW",
profileId: null,
evaluatorId: null,
commanderId: null,
commanderHighId: null,
plannedPoint: 0,
rolePoint: 0,
specialPoint: 0,
@ -76,8 +82,6 @@ export const useKpiDataStore = defineStore("KPIDate", () => {
switch (val) {
case "NEW":
return "จัดทำข้อตกลง";
case "REQEDIT":
return "ขอแก้ไขข้อตกลง";
case "NEW_EVALUATOR":
return "รอผู้ประเมินตรวจสอบข้อตกลง";
case "NEW_COMMANDER":
@ -229,85 +233,60 @@ export const useKpiDataStore = defineStore("KPIDate", () => {
"blue-10",
]);
const tabOpen = ref<number>(3);
const isRequestEditForm = ref<boolean>(false);
const isEditForm = ref<boolean>(false);
const isEvaluate = ref<boolean>(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;
// ROLE & TAB
const rolePerson = ref<string>("USER"); //"USER" | "EVALUATOR" | "COMMANDER", "COMMANDERHIGH"
const tabOpen = ref<number>(1);
function checkStep() {
const role =
dataEvaluation.value.profileId == dataProfile.value.profileId
? "USER"
: dataEvaluation.value.evaluatorId == dataProfile.value.profileId
? "EVALUATOR"
: dataEvaluation.value.commanderId == dataProfile.value.profileId
? "COMMANDER"
: dataEvaluation.value.commanderHighId == dataProfile.value.profileId
? "COMMANDERHIGH"
: "";
rolePerson.value = role;
default:
tabOpen.value = 1;
isEditForm.value = false;
isEvaluate.value = false;
isRequestEditForm.value = false;
break;
}
} else if (role == "EVALUATOR") {
switch (dataEvaluation.value.evaluationStatus) {
case "NEW" || "NEW_EVALUATOR" || "NEW_COMMANDER" || "NEW_COMMANDER_HIGH":
tabOpen.value = 1;
break;
case "APPROVE":
tabOpen.value = 2;
break;
default:
tabOpen.value = 3;
break;
}
}
// SUMMARY GENERAL CASE
const indicatorPercent = ref<number>(100); // รวมผลการประเมิน (ร้อยละ)
const indicatorPercentVal = ref<number>(0); // รวมผลการประเมิน (ร้อยละ) ที่ได้จริง
const indicatorScore = ref<number>(80); // สรุปผลการประเมินผลสัมฤทธิ์ของงาน ( คะแนนเต็ม indicatorScore คะแนน)
const indicatorScoreVal = ref<number>(0); // สรุปผลการประเมินผลสัมฤทธิ์ของงานที่ได้
const competencyScore = ref<number>(20); // ผลการประเมินสมรรถนะ (competencyScore คะแนน)
const competencyScoreVal = ref<number>(0); // ผลการประเมินสมรรถนะที่ได้กี่คะแนน
const devScore = ref<number>(10); // ผลการประเมินการพัฒนาตนเอง (devScore คะแนน)
const devScoreVal = ref<number>(0); // ผลการประเมินการพัฒนาตนเองที่ได้กี่คะแนน
const competencyDevScore = ref<number>(30); // สรุปผลการประเมินพฤติกรรมการปฏิบัติราชการ (สมรรถนะ+การพัฒนาตนเอง) (คะแนนเต็ม competencyDevScore คะแนน)
const competencyDevScoreVal = ref<number>(0); // สรุปผลการประเมินพฤติกรรมการปฏิบัติราชการ (สมรรถนะ+การพัฒนาตนเอง)ที่ได้กี่คะแนน
// SUMMARY EXCLUSIVE CASE
const excusiveIndicatorPercent = ref<number>(100); // รวมผลการประเมิน (ร้อยละ) แต่ละมิติต้องไม่เกิน 100%
const excusiveIndicator1PercentVal = ref<number>(0); // รวมผลการประเมิน (ร้อยละ) มิติที่ 1 ที่ได้จริง
const excusiveIndicator1Weight = ref<number>(60); // น้ำหนักของมิติที่ 1
const excusiveIndicator1ScoreVal = ref<number>(0); // คะแนนมิติที่ 1 ที่ได้จริง
const excusiveIndicator2Weight = ref<number>(20); // น้ำหนักของมิติที่ 2
const excusiveIndicator2PercentVal = ref<number>(0); // รวมผลการประเมิน (ร้อยละ) มิติที่ 2 ที่ได้จริง
const excusiveIndicator2ScoreVal = ref<number>(0); // คะแนนมิติที่ 2 ที่ได้จริง
const excusiveIndicatorScore = ref<number>(80); // สรุปผลการประเมินผลสัมฤทธิ์ของงาน (มิติที่ 1 + มิติที่ 2) ( คะแนนเต็ม excusiveIndicatorScore คะแนน)
const excusiveIndicatorScoreVal = ref<number>(0); // สรุปผลการประเมินผลสัมฤทธิ์ของงาน (มิติที่ 1 + มิติที่ 2) คะแนนที่ได้จริง
const excusiveCompetencyScore = ref<number>(20); // ผลการประเมินสมรรถนะ (competencyScore คะแนน)
const excusiveCompetencyScoreVal = ref<number>(0); // ผลการประเมินสมรรถนะที่ได้กี่คะแนน
return {
tabMain,
dataProfile,
@ -321,6 +300,31 @@ export const useKpiDataStore = defineStore("KPIDate", () => {
defaultCompetencyCoreLevel,
defaultCompetencyGroupLevel,
ratingColors,
checkStep,
tabOpen,
rolePerson,
// score
indicatorPercent,
indicatorPercentVal,
indicatorScore,
indicatorScoreVal,
competencyScore,
competencyScoreVal,
devScore,
devScoreVal,
competencyDevScore,
competencyDevScoreVal,
excusiveCompetencyScore,
excusiveCompetencyScoreVal,
excusiveIndicatorPercent,
excusiveIndicator1PercentVal,
excusiveIndicator1Weight,
excusiveIndicator1ScoreVal,
excusiveIndicator2Weight,
excusiveIndicator2PercentVal,
excusiveIndicator2ScoreVal,
excusiveIndicatorScore,
excusiveIndicatorScoreVal,
};
});

View file

@ -97,6 +97,7 @@ function getProfile() {
store.dataProfile = data;
store.checkCompetency();
store.checkCompetencyDefaultCompetencyLevel();
store.checkStep();
})
.catch((e) => {
messageError($q, e);
@ -285,6 +286,68 @@ async function getAll() {
await getOrgOp();
}
function sendToEvaluatore() {
dialogConfirm(
$q,
() => {
if (id.value) {
// showLoader();
// http
// .put(config.API.kpiEvaluationCheck + `/${id.value}`, {
// evaluatorId: evaluatorId.value ? evaluatorId.value.id : null,
// commanderId: commanderId.value ? commanderId.value.id : null,
// commanderHighId: commanderHighId.value
// ? commanderHighId.value.id
// : null,
// })
// .then((res) => {
// success($q, "");
// close();
// })
// .catch((e) => {
// messageError($q, e);
// })
// .finally(() => {
// hideLoader();
// });
}
},
"ยืนยันการส่งข้อตกลงให้ผู้ประเมินอนุมัติ",
"ต้องการยืนยันส่งข้อตกลงนี้ให้ผู้ประเมินอนุมัติใช่หรือไม่?"
);
}
function requireEdit() {
dialogConfirm(
$q,
() => {
if (id.value) {
// showLoader();
// http
// .put(config.API.kpiEvaluationCheck + `/${id.value}`, {
// evaluatorId: evaluatorId.value ? evaluatorId.value.id : null,
// commanderId: commanderId.value ? commanderId.value.id : null,
// commanderHighId: commanderHighId.value
// ? commanderHighId.value.id
// : null,
// })
// .then((res) => {
// success($q, "");
// close();
// })
// .catch((e) => {
// messageError($q, e);
// })
// .finally(() => {
// hideLoader();
// });
}
},
"ยืนยันการขอแก้ไขข้อตกลง",
"ต้องการยืนยันการขอแก้ไขข้อตกลงนี้ใช่หรือไม่?"
);
}
onMounted(async () => {
showLoader();
await getAll();
@ -292,6 +355,8 @@ onMounted(async () => {
</script>
<template>
<!-- evaluationStatus={{ store.dataEvaluation.evaluationStatus }} | tabOpen =
{{ store.tabOpen }} | rolePerson = {{ store.rolePerson }} | -->
<div class="col-12 row justify-center">
<div class="col-xs-12 col-sm-12 col-md-11">
<div class="toptitle text-white col-12 row items-center">
@ -335,6 +400,42 @@ onMounted(async () => {
}}</span>
<q-space />
<div class="q-gutter-x-sm">
<q-btn
v-if="
store.rolePerson == 'USER' &&
store.dataEvaluation.evaluationStatus == 'NEW'
"
:disabled="store.dataEvaluation.evaluatorId == null"
unelevated
round
icon="mdi-send"
color="grey-2"
text-color="blue-6"
size="md"
@click="sendToEvaluatore()"
>
<q-tooltip>งใหประเมนอน</q-tooltip>
</q-btn>
<q-btn
v-if="
store.rolePerson == 'USER' &&
store.tabOpen < 3 &&
store.dataEvaluation.evaluationStatus != 'NEW' &&
(store.dataEvaluation.evaluationReqEdit == null ||
store.dataEvaluation.evaluationReqEdit == 'DONE')
"
:disabled="store.dataEvaluation.evaluatorId == null"
unelevated
round
icon="mdi-file-edit"
color="grey-2"
text-color="red-6"
size="md"
@click="requireEdit()"
>
<q-tooltip>ขอแกไขขอตกลง</q-tooltip>
</q-btn>
<!-- <q-btn
v-if="!isReadonly"
unelevated
@ -537,7 +638,7 @@ onMounted(async () => {
</q-card>
</q-dialog>
<q-dialog v-model="modalScore" persistent>
<!-- <q-dialog v-model="modalScore" persistent>
<q-card bordered style="width: 50vh">
<q-form greedy @submit.prevent @validation-success="onSubmitScore">
<DialogHeader tittle="แก้ไขคะแนนเต็ม" :close="clearScore" />
@ -612,7 +713,7 @@ onMounted(async () => {
</q-card-actions>
</q-form>
</q-card>
</q-dialog>
</q-dialog> -->
</template>
<style>
.bg-toolbar {