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 store = useKpiDataStore();
|
||||||
const route = useRoute();
|
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 step = ref<number>(1); // 1 = จัดทำข้อตกลง, 2 = รายงานความก้าวหน้า, 3 = รายงานผลสำเร็จของงาน
|
||||||
const indicatorScore = defineModel("indicatorScore", {
|
const indicatorScore = defineModel("indicatorScore", {
|
||||||
type: Number,
|
type: Number,
|
||||||
|
|
@ -69,8 +71,16 @@ const splitterModel = ref<number>(12);
|
||||||
:label="tab.label"
|
:label="tab.label"
|
||||||
/> -->
|
/> -->
|
||||||
<q-tab name="1" label="จัดทำข้อตกลง" />
|
<q-tab name="1" label="จัดทำข้อตกลง" />
|
||||||
<q-tab name="2" label="รายงานความก้าวหน้า" :disable="step < 2" />
|
<q-tab
|
||||||
<q-tab name="3" label="รายงานผลสำเร็จของงาน" :disable="step < 3" />
|
name="2"
|
||||||
|
label="รายงานความก้าวหน้า"
|
||||||
|
:disable="store.tabOpen < 2"
|
||||||
|
/>
|
||||||
|
<q-tab
|
||||||
|
name="3"
|
||||||
|
label="รายงานผลสำเร็จของงาน"
|
||||||
|
:disable="store.tabOpen < 3"
|
||||||
|
/>
|
||||||
<!-- <q-tab name="3" label="ผู้บังคับบัญชา">
|
<!-- <q-tab name="3" label="ผู้บังคับบัญชา">
|
||||||
<div class="text-caption">เหนือขึ้นไป</div>
|
<div class="text-caption">เหนือขึ้นไป</div>
|
||||||
</q-tab>
|
</q-tab>
|
||||||
|
|
@ -101,9 +111,9 @@ const splitterModel = ref<number>(12);
|
||||||
v-model:indicatorScore="indicatorScore"
|
v-model:indicatorScore="indicatorScore"
|
||||||
v-model:competencyScore="competencyScore"
|
v-model:competencyScore="competencyScore"
|
||||||
/>
|
/>
|
||||||
<Evaluator v-if="store.tabMain === '2'" :type="'evaluator'" />
|
<Assessment v-if="store.tabMain === '2'" :type="'evaluator'" />
|
||||||
<Evaluator v-if="store.tabMain === '3'" :type="'commander'" />
|
<Assessment v-if="store.tabMain === '3'" :type="'commander'" />
|
||||||
<Evaluator v-if="store.tabMain === '4'" :type="'commanderHigh'" />
|
<Assessment v-if="store.tabMain === '4'" :type="'commanderHigh'" />
|
||||||
<File v-if="store.tabMain === '5'" />
|
<File v-if="store.tabMain === '5'" />
|
||||||
</q-tab-panel>
|
</q-tab-panel>
|
||||||
</q-tab-panels>
|
</q-tab-panels>
|
||||||
|
|
|
||||||
|
|
@ -37,6 +37,12 @@ export const useKpiDataStore = defineStore("KPIDate", () => {
|
||||||
});
|
});
|
||||||
|
|
||||||
const dataEvaluation = ref<any>({
|
const dataEvaluation = ref<any>({
|
||||||
|
evaluationReqEdit: "NEW",
|
||||||
|
evaluationStatus: "NEW",
|
||||||
|
profileId: null,
|
||||||
|
evaluatorId: null,
|
||||||
|
commanderId: null,
|
||||||
|
commanderHighId: null,
|
||||||
plannedPoint: 0,
|
plannedPoint: 0,
|
||||||
rolePoint: 0,
|
rolePoint: 0,
|
||||||
specialPoint: 0,
|
specialPoint: 0,
|
||||||
|
|
@ -76,8 +82,6 @@ export const useKpiDataStore = defineStore("KPIDate", () => {
|
||||||
switch (val) {
|
switch (val) {
|
||||||
case "NEW":
|
case "NEW":
|
||||||
return "จัดทำข้อตกลง";
|
return "จัดทำข้อตกลง";
|
||||||
case "REQEDIT":
|
|
||||||
return "ขอแก้ไขข้อตกลง";
|
|
||||||
case "NEW_EVALUATOR":
|
case "NEW_EVALUATOR":
|
||||||
return "รอผู้ประเมินตรวจสอบข้อตกลง";
|
return "รอผู้ประเมินตรวจสอบข้อตกลง";
|
||||||
case "NEW_COMMANDER":
|
case "NEW_COMMANDER":
|
||||||
|
|
@ -229,85 +233,60 @@ export const useKpiDataStore = defineStore("KPIDate", () => {
|
||||||
"blue-10",
|
"blue-10",
|
||||||
]);
|
]);
|
||||||
|
|
||||||
const tabOpen = ref<number>(3);
|
// ROLE & TAB
|
||||||
const isRequestEditForm = ref<boolean>(false);
|
const rolePerson = ref<string>("USER"); //"USER" | "EVALUATOR" | "COMMANDER", "COMMANDERHIGH"
|
||||||
const isEditForm = ref<boolean>(false);
|
const tabOpen = ref<number>(1);
|
||||||
const isEvaluate = ref<boolean>(false);
|
function checkStep() {
|
||||||
function checkStep(status: string, role: string) {
|
const role =
|
||||||
if (role == "REQ") {
|
dataEvaluation.value.profileId == dataProfile.value.profileId
|
||||||
switch (status) {
|
? "USER"
|
||||||
case "NEW":
|
: dataEvaluation.value.evaluatorId == dataProfile.value.profileId
|
||||||
tabOpen.value = 1;
|
? "EVALUATOR"
|
||||||
isEditForm.value = true;
|
: dataEvaluation.value.commanderId == dataProfile.value.profileId
|
||||||
isEvaluate.value = false;
|
? "COMMANDER"
|
||||||
isRequestEditForm.value = false;
|
: dataEvaluation.value.commanderHighId == dataProfile.value.profileId
|
||||||
break;
|
? "COMMANDERHIGH"
|
||||||
case "NEW_EVALUATOR":
|
: "";
|
||||||
tabOpen.value = 1;
|
rolePerson.value = role;
|
||||||
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:
|
switch (dataEvaluation.value.evaluationStatus) {
|
||||||
tabOpen.value = 1;
|
case "NEW" || "NEW_EVALUATOR" || "NEW_COMMANDER" || "NEW_COMMANDER_HIGH":
|
||||||
isEditForm.value = false;
|
tabOpen.value = 1;
|
||||||
isEvaluate.value = false;
|
break;
|
||||||
isRequestEditForm.value = false;
|
case "APPROVE":
|
||||||
break;
|
tabOpen.value = 2;
|
||||||
}
|
break;
|
||||||
} else if (role == "EVALUATOR") {
|
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 {
|
return {
|
||||||
tabMain,
|
tabMain,
|
||||||
dataProfile,
|
dataProfile,
|
||||||
|
|
@ -321,6 +300,31 @@ export const useKpiDataStore = defineStore("KPIDate", () => {
|
||||||
defaultCompetencyCoreLevel,
|
defaultCompetencyCoreLevel,
|
||||||
defaultCompetencyGroupLevel,
|
defaultCompetencyGroupLevel,
|
||||||
ratingColors,
|
ratingColors,
|
||||||
|
checkStep,
|
||||||
tabOpen,
|
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.dataProfile = data;
|
||||||
store.checkCompetency();
|
store.checkCompetency();
|
||||||
store.checkCompetencyDefaultCompetencyLevel();
|
store.checkCompetencyDefaultCompetencyLevel();
|
||||||
|
store.checkStep();
|
||||||
})
|
})
|
||||||
.catch((e) => {
|
.catch((e) => {
|
||||||
messageError($q, e);
|
messageError($q, e);
|
||||||
|
|
@ -285,6 +286,68 @@ async function getAll() {
|
||||||
await getOrgOp();
|
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 () => {
|
onMounted(async () => {
|
||||||
showLoader();
|
showLoader();
|
||||||
await getAll();
|
await getAll();
|
||||||
|
|
@ -292,6 +355,8 @@ onMounted(async () => {
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<template>
|
<template>
|
||||||
|
<!-- evaluationStatus={{ store.dataEvaluation.evaluationStatus }} | tabOpen =
|
||||||
|
{{ store.tabOpen }} | rolePerson = {{ store.rolePerson }} | -->
|
||||||
<div class="col-12 row justify-center">
|
<div class="col-12 row justify-center">
|
||||||
<div class="col-xs-12 col-sm-12 col-md-11">
|
<div class="col-xs-12 col-sm-12 col-md-11">
|
||||||
<div class="toptitle text-white col-12 row items-center">
|
<div class="toptitle text-white col-12 row items-center">
|
||||||
|
|
@ -335,6 +400,42 @@ onMounted(async () => {
|
||||||
}}</span>
|
}}</span>
|
||||||
<q-space />
|
<q-space />
|
||||||
<div class="q-gutter-x-sm">
|
<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
|
<!-- <q-btn
|
||||||
v-if="!isReadonly"
|
v-if="!isReadonly"
|
||||||
unelevated
|
unelevated
|
||||||
|
|
@ -537,7 +638,7 @@ onMounted(async () => {
|
||||||
</q-card>
|
</q-card>
|
||||||
</q-dialog>
|
</q-dialog>
|
||||||
|
|
||||||
<q-dialog v-model="modalScore" persistent>
|
<!-- <q-dialog v-model="modalScore" persistent>
|
||||||
<q-card bordered style="width: 50vh">
|
<q-card bordered style="width: 50vh">
|
||||||
<q-form greedy @submit.prevent @validation-success="onSubmitScore">
|
<q-form greedy @submit.prevent @validation-success="onSubmitScore">
|
||||||
<DialogHeader tittle="แก้ไขคะแนนเต็ม" :close="clearScore" />
|
<DialogHeader tittle="แก้ไขคะแนนเต็ม" :close="clearScore" />
|
||||||
|
|
@ -612,7 +713,7 @@ onMounted(async () => {
|
||||||
</q-card-actions>
|
</q-card-actions>
|
||||||
</q-form>
|
</q-form>
|
||||||
</q-card>
|
</q-card>
|
||||||
</q-dialog>
|
</q-dialog> -->
|
||||||
</template>
|
</template>
|
||||||
<style>
|
<style>
|
||||||
.bg-toolbar {
|
.bg-toolbar {
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue