hrms-user/src/modules/08_KPI/views/form.vue

239 lines
7.4 KiB
Vue
Raw Normal View History

2024-04-04 14:14:25 +07:00
<script setup lang="ts">
2024-04-09 15:22:23 +07:00
import { ref, onMounted, reactive } from "vue";
import { useRoute, useRouter } from "vue-router";
import http from "@/plugins/http";
import config from "@/app.config";
import TabMain from "@/modules/08_KPI/views/TabMain.vue";
import { useQuasar } from "quasar";
2024-04-09 15:22:23 +07:00
import { useCounterMixin } from "@/stores/mixin";
import { useKpiDataStore } from "@/modules/08_KPI/store";
2024-04-09 15:22:23 +07:00
import type { FormProfile } from "@/modules/08_KPI/interface/request/index";
2024-04-10 10:07:41 +07:00
const route = useRoute();
const id = ref<string>(route.params.id as string);
const store = useKpiDataStore();
2024-04-09 15:22:23 +07:00
const $q = useQuasar();
const mixin = useCounterMixin();
const { showLoader, hideLoader, messageError } = mixin;
const formProfile = reactive<FormProfile>({
fullName: "",
position: "",
type: "",
level: "",
status: "",
result: "",
score: "-",
avartar: "",
2024-04-09 15:22:23 +07:00
});
2024-04-04 14:14:25 +07:00
const router = useRouter();
2024-04-09 15:22:23 +07:00
function fetchEvaluation() {
showLoader();
http
.get(config.API.kpiEvaluation + `/${id.value}`)
.then((res) => {
const data = res.data.result;
store.dataEvaluation = data;
formProfile.status = store.convertStatus(data.evaluationStatus);
formProfile.result = store.convertResults(data.evaluationResults);
fetchProfile(data.profileId);
})
.catch((e) => {
messageError($q, e);
})
.finally(() => {
hideLoader();
});
}
2024-04-09 15:22:23 +07:00
function getProfile() {
showLoader();
http
.get(config.API.profilePosition())
2024-04-09 15:22:23 +07:00
.then((res) => {
const data = res.data.result;
store.dataProfile = data;
formProfile.fullName = `${data.prefix}${data.firstName} ${data.lastName}`;
formProfile.position = data.position;
formProfile.type = data.posTypeName;
formProfile.level = data.posLevelName;
2024-04-09 15:22:23 +07:00
})
.catch((e) => {
messageError($q, e);
})
.finally(() => {
hideLoader();
});
}
2024-04-09 16:30:20 +07:00
async function fetchProfile(id: string) {
showLoader();
await http
.get(
config.API.fileByFile("ทะเบียนประวัติ", "โปรไฟล์", id, `profile-${id}`)
)
.then(async (res) => {
formProfile.avartar = res.data.downloadUrl;
})
.catch(() => {
// profilePicture.value = avatar;
})
.finally(() => {
hideLoader();
});
}
2024-04-09 16:30:20 +07:00
/** save */
2024-04-10 10:07:41 +07:00
function onSave() {}
2024-04-09 16:30:20 +07:00
2024-04-09 15:22:23 +07:00
onMounted(() => {
fetchEvaluation();
2024-04-09 15:22:23 +07:00
getProfile();
});
2024-04-04 14:14:25 +07:00
</script>
<template>
<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">
<q-btn
icon="mdi-arrow-left"
unelevated
round
dense
flat
color="primary"
class="q-mr-sm"
@click="router.push(`/KPI`)"
/>
2024-04-10 10:07:41 +07:00
{{ id ? `แก้ไขแบบประเมิน` : `เพิ่มแบบประเมิน` }}
<q-space />
<q-btn label="บันทึก" color="secondary" unelevated @click="onSave"
><q-tooltip>นท</q-tooltip></q-btn
>
2024-04-04 14:14:25 +07:00
</div>
<div class="col-12">
<q-card bordered flat class="relative-position">
2024-04-19 15:30:39 +07:00
<div
class="absolute-center-left"
style="left: 2%; top: 50%; transform: translateY(-50%)"
>
<q-avatar size="95px">
<img :src="formProfile.avartar" />
</q-avatar>
</div>
2024-04-19 15:30:39 +07:00
<div class="row col-12">
<div class="row items-center col-12 q-pa-sm">
<div class="col-12" style="padding-left: 12%">
2024-04-19 15:30:39 +07:00
<div class="row col-12 items-center">
<span class="text-h6 text-weight-medium text-primary">{{
2024-04-09 15:22:23 +07:00
formProfile.fullName ? formProfile.fullName : "-"
}}</span>
<q-space />
<div class="q-gutter-x-sm">
<q-btn
unelevated
round
icon="mdi-file-eye-outline"
color="grey-2"
text-color="primary"
2024-04-19 15:30:39 +07:00
size="md"
2024-04-09 15:22:23 +07:00
>
<q-tooltip>อมลการชวยราชการ</q-tooltip>
</q-btn>
2024-04-10 10:07:41 +07:00
<q-btn
unelevated
round
color="grey-2"
text-color="blue-5"
icon="mdi-file-eye-outline"
2024-04-19 15:30:39 +07:00
size="md"
2024-04-10 10:07:41 +07:00
>
2024-04-09 15:22:23 +07:00
<q-tooltip>อมลการทดลองงาน</q-tooltip>
</q-btn>
</div>
2024-04-19 15:30:39 +07:00
</div>
2024-04-09 15:22:23 +07:00
</div>
</div>
2024-04-19 15:30:39 +07:00
<div class="row items-center bg-toolbar col-12 q-pa-sm">
<div class="col-12 q-py-xs" style="padding-left: 12%">
2024-04-19 15:30:39 +07:00
<div class="row no-wrap">
2024-04-09 15:22:23 +07:00
<div class="col-2">
<div class="column">
<span class="text-grey-6">ตำแหนงในสายงาน</span>
2024-04-19 15:30:39 +07:00
<span class="text-weight-medium text-dark">{{
2024-04-10 10:07:41 +07:00
formProfile.position
}}</span>
2024-04-09 15:22:23 +07:00
</div>
</div>
<div class="col-2">
<div class="column">
<span class="text-grey-6">ประเภทตำแหน</span>
2024-04-19 15:30:39 +07:00
<span class="text-weight-medium text-dark">{{
2024-04-10 10:07:41 +07:00
formProfile.type
}}</span>
2024-04-09 15:22:23 +07:00
</div>
</div>
<div class="col-2">
<div class="column">
<span class="text-grey-6">ระดบตำแหน</span>
2024-04-19 15:30:39 +07:00
<span class="text-weight-medium text-dark">{{
2024-04-10 10:07:41 +07:00
formProfile.level
}}</span>
2024-04-09 15:22:23 +07:00
</div>
</div>
<div class="col-2">
<div class="column">
<span class="text-grey-6">สถานะการประเม</span>
2024-04-19 15:30:39 +07:00
<span class="text-weight-medium text-dark">{{
2024-04-10 10:07:41 +07:00
formProfile.status
}}</span>
2024-04-09 15:22:23 +07:00
</div>
</div>
<div class="col-2">
<div class="column">
<span class="text-grey-6">ผลการประเม</span>
<span class="text-weight-medium text-dark">{{
formProfile.result
}}</span>
</div>
</div>
2024-04-09 15:22:23 +07:00
<div class="col-2">
<div class="column">
<span class="text-grey-6">คะแนนประเม</span>
2024-04-19 15:30:39 +07:00
<span class="text-weight-medium text-primary">{{
2024-04-10 10:07:41 +07:00
formProfile.score
}}</span>
2024-04-09 15:22:23 +07:00
</div>
</div>
</div>
</div>
</div>
</div>
</q-card>
<q-card class="q-mt-md rounded">
<TabMain />
</q-card>
2024-04-04 14:14:25 +07:00
</div>
</div>
</div>
</template>
2024-04-19 15:30:39 +07:00
<style>
.bg-toolbar {
background-color: #f2fbfa;
2024-04-19 15:30:39 +07:00
}
.absolute-center-left {
position: absolute;
top: 50%;
transform: translateY(-50%);
}
2024-04-19 15:30:39 +07:00
</style>