แก้ KPI

This commit is contained in:
STW_TTTY\stwtt 2024-06-20 18:05:00 +07:00
parent abd7cd8beb
commit ecbc9cee3a
6 changed files with 171 additions and 103 deletions

View file

@ -1,8 +1,21 @@
<script setup lang="ts">
import { computed, ref } from "vue";
import DialogHeader from "@/components/DialogHeader.vue";
import { useQuasar } from "quasar";
import { useCounterMixin } from "@/stores/mixin";
import { useKpiDataStore } from "@/modules/08_KPI/store";
const store = useKpiDataStore();
const $q = useQuasar();
const mixin = useCounterMixin();
const { dialogConfirm, success, showLoader, hideLoader, dialogMessageNotify } =
mixin;
const separator = ref<any>("cell");
const additionalSuperiorCommentRef = ref<any>(null);
const superiorCommentRef = ref<any>(null);
const title = ref<string>("");
const developmentMethod = ref<string>("");
const developmentPeriod = ref<string>("");
@ -65,29 +78,48 @@ function convert(score: any): string {
}
}
function onSubmit(){
function onSubmit() {
dialogConfirm($q, () => {});
}
function onSubmitCommander(){
function onSubmitCommander() {
if (superiorCommentCheck.value == "") {
dialogMessageNotify($q, "กรุณาเลือกความคิดเห็น");
} else {
dialogConfirm($q, () => {});
}
}
function onSubmitCommanderHigh(){
function onSubmitCommanderHigh() {
if (additionalSuperiorCheck.value == "") {
dialogMessageNotify($q, "กรุณาเลือกความคิดเห็น");
} else {
dialogConfirm($q, () => {});
}
}
function resetCommander() {
superiorComment.value = "";
superiorCommentRef.value.resetValidation();
}
function resetCommanderHigh() {
additionalSuperiorComment.value = "";
additionalSuperiorCommentRef.value.resetValidation();
}
</script>
<template>
<div class="q-pa-sm ">
<div class="q-pa-sm">
<!-- 1-4 สรปผลการประเม -->
<q-card bordered>
<q-form greedy @submit.prevent @validation-success="onSubmit">
<q-toolbar>
<q-toolbar-title class="text-subtitle2 text-bold"
>สรปผลการประเม</q-toolbar-title
>
</q-toolbar>
<q-separator />
<q-card-section>
<div class="row q-col-gutter-sm">
<div class="col-12">
<div class="text-weight-bold text-body2">
<span class="txt-under text-blue-6">สรปผลการประเม</span>
</div>
</div>
<div class="col-12">
<q-markup-table
:separator="separator"
@ -181,24 +213,33 @@ function onSubmitCommanderHigh(){
<q-input
v-model="title"
outlined
hide-bottom-space
type="textarea"
label="ชื่อเรื่อง/เนื้อหา/หัวข้อการพัฒนา"
:readonly="store.rolePerson !== 'EVALUATOR'"
:rules="[(val:string) => !!val || `${'กรุณากรอกชื่อเรื่อง/เนื้อหา/หัวข้อการพัฒนา'}`,]"
/>
</div>
<div class="col-12">
<q-input
v-model="developmentMethod"
outlined
hide-bottom-space
type="textarea"
label="วิธีการพัฒนา"
:readonly="store.rolePerson !== 'EVALUATOR'"
:rules="[(val:string) => !!val || `${'กรุณากรอกวิธีการพัฒนา'}`,]"
/>
</div>
<div class="col-12">
<q-input
v-model="developmentPeriod"
outlined
hide-bottom-space
type="textarea"
label="ช่วงเวลาการพัฒนา"
:readonly="store.rolePerson !== 'EVALUATOR'"
:rules="[(val:string) => !!val || `${'กรุณากรอกช่วงเวลาการพัฒนา'}`,]"
/>
</div>
<div class="col-12">
@ -211,7 +252,67 @@ function onSubmitCommanderHigh(){
v-model="evaluatorComment"
outlined
type="textarea"
hide-bottom-space
label="ความเห็นของผู้ประเมิน"
:readonly="store.rolePerson !== 'EVALUATOR'"
:rules="[(val:string) => !!val || `${'กรุณากรอกความเห็นของ'}`,]"
/>
</div>
</div>
</q-card-section>
<q-separator v-if="store.rolePerson == 'EVALUATOR'" />
<q-card-actions v-if="store.rolePerson == 'EVALUATOR'" align="right">
<q-btn label="บันทึก" color="secondary" type="submit"
><q-tooltip>นทกขอม</q-tooltip></q-btn
>
</q-card-actions>
</q-form>
</q-card>
<q-card
bordered
class="q-mt-md"
v-if="store.rolePerson == 'COMMANDER' && evaluatorComment !== '' && store.dataEvaluation.commanderId !== null"
>
<q-form greedy @submit.prevent @validation-success="onSubmitCommander">
<q-toolbar>
<q-toolbar-title class="text-subtitle2 text-bold"
>ความเหนของผงคบบญชาเหนอขนไป</q-toolbar-title
>
</q-toolbar>
<q-separator />
<q-card-section>
<div class="row q-col-gutter-sm">
<div class="col-12">
<div class="column">
<q-radio
v-model="superiorCommentCheck"
checked-icon="task_alt"
unchecked-icon="panorama_fish_eye"
val="true"
label="เห็นด้วยกับผลการประเมิน"
@click="resetCommander()"
/>
<q-radio
v-model="superiorCommentCheck"
checked-icon="task_alt"
unchecked-icon="panorama_fish_eye"
val="false"
label="มีความเห็นต่าง ดังนี้"
/>
</div>
</div>
<div class="col-12">
<q-input
v-model="superiorComment"
outlined
:readonly="superiorCommentCheck == 'true'"
type="textarea"
label="ความเห็นของผู้บังคับบัญชาเหนือขึ้นไป"
hide-bottom-space
ref="superiorCommentRef"
:rules="[(val:string) => superiorCommentCheck !== 'false'||!!val || `${'กรุณากรอกความเห็น'}`,]"
/>
</div>
</div>
@ -225,96 +326,57 @@ function onSubmitCommanderHigh(){
</q-form>
</q-card>
<q-card bordered class="q-mt-md">
<q-form greedy @submit.prevent @validation-success="onSubmitCommander">
<q-card-section>
<div class="row q-gutter-sm">
<div class="col-12">
<div class="text-weight-bold text-body2">
<span class="txt-under text-blue-6"
>ความเหนของผงคบบญชาเหนอขนไป</span
>
</div>
</div>
<div class="col-12">
<div class="column">
<q-radio
v-model="superiorCommentCheck"
checked-icon="task_alt"
unchecked-icon="panorama_fish_eye"
val="true"
label="เห็นด้วยกับผลการประเมิน"
/>
<q-radio
v-model="superiorCommentCheck"
checked-icon="task_alt"
unchecked-icon="panorama_fish_eye"
val="false"
label="มีความเห็นตามดังนี้"
/>
</div>
</div>
<div class="col-12">
<q-input
v-model="superiorComment"
outlined
type="textarea"
label="ความเห็นของผู้บังคับบัญชาเหนือขึ้นไป"
:readonly="superiorCommentCheck == 'true'"
/>
</div>
</div>
</q-card-section>
<q-separator />
<q-card-actions align="right">
<q-btn label="บันทึก" color="secondary" type="submit"
><q-tooltip>นทกขอม</q-tooltip></q-btn
<q-card
bordered
class="q-mt-md"
v-if="store.rolePerson == 'COMMANDERHIGH' && superiorComment !== '' && store.dataEvaluation.commanderHighId !== null"
>
<q-form
greedy
@submit.prevent
@validation-success="onSubmitCommanderHigh"
>
<q-toolbar>
<q-toolbar-title class="text-subtitle2 text-bold"
>ความเหนของผงคบบญชาเหนอขนไปอกชนหน</q-toolbar-title
>
</q-card-actions>
</q-form>
</q-card>
<q-card bordered class="q-mt-md">
<q-form greedy @submit.prevent @validation-success="onSubmitCommanderHigh">
</q-toolbar>
<q-separator />
<q-card-section>
<div class="row q-gutter-sm">
<div class="col-12">
<div class="text-weight-bold text-body2">
<span class="txt-under text-blue-6"
>ความเหนของผงคบบญชาเหนอขนไปอกชนหน</span
>
<div class="row q-col-gutter-sm">
<div class="col-12">
<div class="column">
<q-radio
v-model="additionalSuperiorCheck"
checked-icon="task_alt"
unchecked-icon="panorama_fish_eye"
val="true"
label="เห็นด้วยกับผลการประเมิน"
@click="resetCommanderHigh()"
/>
<q-radio
v-model="additionalSuperiorCheck"
checked-icon="task_alt"
unchecked-icon="panorama_fish_eye"
val="false"
label="มีความเห็นต่าง ดังนี้"
/>
</div>
</div>
<div class="col-12">
<q-input
ref="additionalSuperiorCommentRef"
v-model="additionalSuperiorComment"
outlined
hide-bottom-space
type="textarea"
label="ความเห็นของผู้บังคับบัญชาเหนือขึ้นไปอีกชั้นหนึ่ง"
:readonly="additionalSuperiorCheck == 'true'"
:rules="[(val:string) => additionalSuperiorCheck !== 'false'||!!val || `${'กรุณากรอกความเห็น'}`,]"
/>
</div>
</div>
</div>
<div class="col-12">
<div class="column">
<q-radio
v-model="additionalSuperiorCheck"
checked-icon="task_alt"
unchecked-icon="panorama_fish_eye"
val="true"
label="เห็นด้วยกับผลการประเมิน"
/>
<q-radio
v-model="additionalSuperiorCheck"
checked-icon="task_alt"
unchecked-icon="panorama_fish_eye"
val="false"
label="มีความเห็นตามดังนี้"
/>
</div>
</div>
<div class="col-12">
<q-input
v-model="additionalSuperiorComment"
outlined
type="textarea"
label="ความเห็นของผู้บังคับบัญชาเหนือขึ้นไปอีกชั้นหนึ่ง"
:readonly="additionalSuperiorCheck == 'true'"
/>
</div>
</div>
</q-card-section>
</q-card-section>
<q-separator />
<q-card-actions align="right">
<q-btn label="บันทึก" color="secondary" type="submit"

View file

@ -236,7 +236,6 @@ watch(
<template v-slot:before>
<div class="q-pa-sm">
<q-btn
v-if="store.rolePerson === 'USER'"
icon="add"
color="teal"
flat

View file

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

View file

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

View file

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

View file

@ -63,8 +63,6 @@ async function fetchEvaluation() {
.get(config.API.kpiEvaluation + `/${id.value}`)
.then(async (res) => {
const data = res.data.result;
// console.log("🚀 ~ .then ~ data:", data);
store.dataEvaluation = await data;
formProfile.status = store.convertStatus(data.evaluationStatus);
formProfile.result = store.convertResults(data.evaluationResults);
@ -89,7 +87,7 @@ async function fetchEvaluation() {
async function getProfile() {
await http
.get(config.API.orgPosition + `/${store.dataEvaluation.profileId}`)
.get(config.API.profilePosition())
.then(async (res) => {
const data = await res.data.result;
store.dataProfile = await data;