updated step kpi
This commit is contained in:
parent
141dc8f61f
commit
96a8c84600
3 changed files with 200 additions and 85 deletions
|
|
@ -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>
|
||||
|
|
|
|||
|
|
@ -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,
|
||||
};
|
||||
});
|
||||
|
|
|
|||
|
|
@ -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 {
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue