hrms-user/src/modules/06_evaluate/components/viewstep/viewStep1.vue

553 lines
17 KiB
Vue
Raw Normal View History

2023-12-18 10:05:40 +07:00
<script setup lang="ts">
2024-01-08 14:19:08 +07:00
import { reactive, onMounted } from "vue";
import { useRoute } from "vue-router";
2023-12-27 12:08:36 +07:00
import { useQuasar } from "quasar";
2023-12-21 17:51:13 +07:00
import http from "@/plugins/http";
import config from "@/app.config";
/** importType*/
2023-12-22 16:00:05 +07:00
import type {
EducationForm,
CertificatesForm,
} from "@/modules/06_evaluate/interface/evalute";
/** importComponents*/
2023-12-18 10:05:40 +07:00
import TableData from "@/modules/06_evaluate/components/viewstep/tableStep1.vue";
/** importStore*/
2023-12-21 17:51:13 +07:00
import { useCounterMixin } from "@/stores/mixin";
2023-12-18 10:05:40 +07:00
import { useEvaluateDetailStore } from "@/modules/06_evaluate/stores/evaluteDetail";
/** use*/
2023-12-21 17:51:13 +07:00
const mixin = useCounterMixin();
2023-12-18 10:05:40 +07:00
const store = useEvaluateDetailStore();
2023-12-21 17:51:13 +07:00
const $q = useQuasar();
2023-12-27 12:08:36 +07:00
const route = useRoute();
2023-12-21 17:51:13 +07:00
const { showLoader, hideLoader, messageError, date2Thai } = mixin;
2023-12-18 10:05:40 +07:00
const {
2023-12-22 16:00:05 +07:00
columnsCertificates,
columnSalaries,
columnTraining,
2023-12-18 10:05:40 +07:00
columnProjectsProposed,
} = store;
2023-12-21 17:51:13 +07:00
const props = defineProps({
2023-12-27 12:08:36 +07:00
data: {
2024-01-08 14:19:08 +07:00
type: Object,
},
});
2023-12-21 17:51:13 +07:00
const emit = defineEmits(["update:formDeital"]);
2024-06-28 17:52:30 +07:00
const formDetail = reactive<any>({
2023-12-22 16:00:05 +07:00
userId: "",
citizenId: "",
prefix: "",
fullName: "",
position: "",
oc: "",
salary: "",
positionLevel: "",
posNo: "",
birthDate: "",
govAge: "",
2024-06-28 17:52:30 +07:00
govAgeMap: {
year: 0,
month: 0,
day: 0,
},
2023-12-22 16:00:05 +07:00
educations: [] as EducationForm[],
certificates: [],
salaries: [],
trainings: [],
assessments: [],
2023-12-21 17:51:13 +07:00
});
/** function เรียกข้อมูลตรวจสอบคุณสมบัติ*/
2023-12-21 17:51:13 +07:00
async function fetchDetail() {
showLoader();
await http
2024-06-28 16:51:48 +07:00
.get(config.API.positionBykeycloak())
2023-12-21 17:51:13 +07:00
.then((res) => {
const data = res.data.result;
2023-12-22 16:00:05 +07:00
formDetail.userId = data.id;
formDetail.citizenId = data.citizenId;
formDetail.prefix = data.prefix;
formDetail.fullName = `${data.firstName} ${data.lastName}`;
2024-06-28 19:04:04 +07:00
formDetail.firstName = data.firstName
formDetail.lastName = data.lastName
2023-12-22 16:00:05 +07:00
formDetail.position = data.position;
2024-06-28 16:51:48 +07:00
formDetail.oc = data.rootShortName;
formDetail.positionLevel = data.posLevelName;
formDetail.posNo = data.rootShortName + data.posMasterNo;
2024-06-28 19:04:04 +07:00
formDetail.birthDate = data.birthDate
2024-06-28 16:51:48 +07:00
formDetail.govAge = data.govAge; // ยังไม่มี
2023-12-22 16:00:05 +07:00
2024-06-28 16:51:48 +07:00
http.get(config.API.dataUserEducations).then((res) => {
formDetail.educations = res.data.result;
});
http.get(config.API.dataUserCertificate("certificate")).then((res) => {
formDetail.certificates = res.data.result.map(
(e: CertificatesForm) => ({
certificateNo: e.certificateNo,
certificateType: e.certificateType,
2024-06-28 19:04:04 +07:00
expireDate: e.expireDate,
issueDate: e.issueDate,
2024-06-28 16:51:48 +07:00
issuer: e.issuer,
})
);
});
http.get(config.API.dataUserSalary).then((res) => {
formDetail.salaries = res.data.result.map((e: any) => ({
amount: e.amount,
2024-06-28 19:04:04 +07:00
date: e.date,
2024-06-28 16:51:48 +07:00
mouthSalaryAmount: e.mouthSalaryAmount ? e.mouthSalaryAmount : 0,
posNo: e.posNo,
position: e.position,
positionSalaryAmount: e.positionSalaryAmount
? e.positionSalaryAmount
: 0,
2024-06-28 19:04:04 +07:00
refCommandDate: e.refCommandDate,
2024-06-28 16:51:48 +07:00
2024-06-28 19:04:04 +07:00
refCommandNo: e.refCommandNo,
salaryClass: e.salaryClass,
salaryRef: e.salaryRef,
salaryStatus: e.salaryStatus,
2024-06-28 16:51:48 +07:00
//
2024-06-28 18:14:53 +07:00
oc: "",//ไม่มี
2024-06-28 19:04:04 +07:00
lineWork: e.positionLine,
side: e.positionPathSide,
positionType: e.positionType,
level: e.positionLevel,
positionsAdministrative: e.positionExecutive,
2024-06-28 18:14:53 +07:00
aspectAdministrative: "",//ไม่มี
2024-06-28 16:51:48 +07:00
}));
2024-06-28 17:52:30 +07:00
formDetail.salary = formDetail.salaries
? formattedNumber(
formDetail.salaries[formDetail.salaries.length - 1].amount
)
: "";
2024-06-28 16:51:48 +07:00
});
http.get(config.API.dataUserCertificate("training")).then((res) => {
formDetail.trainings = res.data.result.map((e: any) => ({
2024-06-28 19:04:04 +07:00
dateOrder: e.dateOrder,
2024-06-28 16:51:48 +07:00
department: e.department,
duration: e.duration,
2024-06-28 19:04:04 +07:00
endDate: e.endDate,
2024-06-28 16:51:48 +07:00
name: e.name,
numberOrder: e.numberOrder,
place: e.place,
2024-06-28 19:04:04 +07:00
startDate: e.startDate,
2024-06-28 16:51:48 +07:00
topic: e.topic,
yearly: e.yearly,
}));
});
// formDetail.assessments = data.assessments;
2024-06-28 19:04:04 +07:00
emit("update:formDeital", formDetail);
2023-12-21 17:51:13 +07:00
})
.catch((err) => {
messageError($q, err);
})
.finally(() => {
2023-12-27 12:08:36 +07:00
setTimeout(() => {
hideLoader();
}, 500);
2023-12-21 17:51:13 +07:00
});
}
/**
* function fetchData ตรวจสอบคณสมบ
* @param id ประเม
*/
2023-12-27 12:08:36 +07:00
async function fetchCheckSpec(data: any) {
formDetail.userId = data.id;
formDetail.citizenId = data.citizenId;
formDetail.prefix = data.prefix;
formDetail.fullName = data.fullName;
formDetail.position = data.position;
formDetail.oc = data.oc;
formDetail.salary = data.salary ? formattedNumber(data.salary) : "";
2023-12-27 12:08:36 +07:00
formDetail.positionLevel = data.positionLevel;
formDetail.posNo = data.posNo;
2024-06-28 19:04:04 +07:00
formDetail.birthDate = data.birthDate
2024-01-04 16:54:37 +07:00
formDetail.educations = data.educations;
2023-12-27 12:08:36 +07:00
2024-01-04 16:54:37 +07:00
formDetail.certificates = data.certificates.map((e: CertificatesForm) => ({
2023-12-27 12:08:36 +07:00
certificateNo: e.certificateNo,
certificateType: e.certificateType,
expireDate: date2Thai(e.expireDate),
issueDate: date2Thai(e.issueDate),
issuer: e.issuer,
}));
formDetail.salaries = data.salaries.map((e: any) => ({
amount: e.amount,
2024-06-28 19:04:04 +07:00
date: e.date,
2023-12-27 12:08:36 +07:00
mouthSalaryAmount: e.mouthSalaryAmount ? e.mouthSalaryAmount : 0,
posNo: e.posNo,
position: e.position,
positionSalaryAmount: e.positionSalaryAmount ? e.positionSalaryAmount : 0,
refCommandDate: e.refCommandDate ? e.refCommandDate : "",
refCommandNo: e.refCommandNo ? e.refCommandNo : "",
salaryClass: e.salaryClass ? e.salaryClass : "",
salaryRef: e.salaryRef ? e.salaryRef : "",
salaryStatus: e.salaryStatus ? e.salariesStatus : "",
//
oc: "-",
lineWork: "-",
side: "-",
positionType: "-",
level: "-",
positionsAdministrative: "-",
aspectAdministrative: "-",
}));
2024-01-04 16:54:37 +07:00
formDetail.trainings = data.trainings.map((e: any) => ({
2023-12-27 12:08:36 +07:00
dateOrder: date2Thai(e.dateOrder),
department: e.department,
duration: e.duration,
endDate: date2Thai(e.endDate),
name: e.name,
numberOrder: e.numberOrder,
place: e.place,
startDate: date2Thai(e.startDate),
topic: e.topic,
yearly: e.yearly,
}));
2024-01-04 16:54:37 +07:00
formDetail.assessments = data.assessments;
}
/**
* function convertตวเลข
* @param x
*/
2024-01-05 10:38:49 +07:00
function formattedNumber(x: number) {
if (x) {
return x.toString().replace(/\B(?=(\d{3})+(?!\d))/g, ",");
} else {
return "";
}
2024-01-05 10:38:49 +07:00
}
2024-06-28 17:52:30 +07:00
/** get data */
function getData() {
showLoader();
http
.get(config.API.dataUserGovernment)
.then((res) => {
const data = res.data.result;
formDetail.govAge = data.govAge
? `${data.govAge.year} วัน ${data.govAge.month} เดือน ${data.govAge.year} ปี`
: "";
})
.catch((e) => {
messageError($q, e);
})
.finally(() => {
hideLoader();
});
}
2023-12-21 17:51:13 +07:00
onMounted(async () => {
2023-12-27 12:08:36 +07:00
route.name === "evaluate-add" && (await fetchDetail());
props.data && fetchCheckSpec(props.data);
2024-06-28 17:52:30 +07:00
getData();
2023-12-21 17:51:13 +07:00
});
2023-12-18 10:05:40 +07:00
</script>
2023-12-13 15:24:59 +07:00
<template>
<q-card
bordered
class="col-12 row shadow-0 q-pa-sm"
:style="$q.screen.lt.sm ? '' : 'height: 60vh; overflow: scroll;'"
>
<div class="row col-12">
<q-card class="col-12 cardSp1" bordered>
<div class="text-weight-bold row items-center bg-grey-2 col-12">
<span class="q-ml-lg q-my-sm">อมลสวนต</span>
</div>
<div class="col-12"><q-separator /></div>
<div class="row col-12 q-pa-sm">
<div class="row q-col-gutter-sm">
2023-12-18 10:05:40 +07:00
<div class="col-xs-6 col-sm-4 col-md-3">
<q-input
borderless
readonly
:model-value="formDetail.prefix"
label="คำนำหน้าชื่อ"
></q-input>
2023-12-18 10:05:40 +07:00
</div>
<div class="col-xs-6 col-sm-4 col-md-3">
<q-input
borderless
readonly
:model-value="formDetail.fullName"
label="ชื่อ - นามสกุล"
/>
2023-12-18 10:05:40 +07:00
</div>
<div class="col-xs-6 col-sm-4 col-md-3">
<q-input
borderless
2024-06-28 19:04:04 +07:00
:model-value="formDetail.birthDate ? date2Thai(formDetail.birthDate):'-'"
2023-12-18 10:05:40 +07:00
readonly
label="วันเดือนปีเกิด"
>
</q-input>
2023-12-18 10:05:40 +07:00
</div>
<div class="col-xs-6 col-sm-4 col-md-3">
<q-input
borderless
readonly
:model-value="formDetail.position"
label="ตำแหน่ง"
/>
2023-12-18 10:05:40 +07:00
</div>
<div class="col-xs-6 col-sm-4 col-md-3">
<q-input
borderless
readonly
:model-value="formDetail.posNo"
label="ตำแหน่งเลขที่"
2023-12-18 10:05:40 +07:00
/>
</div>
<div class="col-xs-6 col-sm-4 col-md-3">
<q-input
borderless
readonly
:model-value="formDetail.salary"
label="เงินเดือน"
2023-12-18 10:05:40 +07:00
/>
</div>
<div class="col-xs-6 col-sm-4 col-md-3">
<q-input
borderless
readonly
:model-value="formDetail.positionLevel"
label="ระดับปัจจุบัน"
2023-12-18 10:05:40 +07:00
/>
</div>
2023-12-18 10:05:40 +07:00
<div class="col-xs-6 col-sm-4 col-md-3">
<q-input
borderless
readonly
:model-value="formDetail.positionLevel"
label="ระดับที่ประเมิน"
2023-12-18 10:05:40 +07:00
/>
</div>
<div class="col-xs-6 col-sm-4 col-md-3">
<q-input
borderless
readonly
2024-06-28 17:52:30 +07:00
:model-value="formDetail.govAge ? formDetail.govAge : '-'"
label="อายุราชการ"
2023-12-18 10:05:40 +07:00
/>
</div>
<div class="col-xs-12 col-sm-9">
<q-input
borderless
readonly
:model-value="formDetail.oc"
label="สังกัด"
autogrow
2023-12-22 16:00:05 +07:00
/>
2023-12-18 10:05:40 +07:00
</div>
</div>
</div>
</q-card>
<q-card class="col-12 cardSp1" bordered>
<div class="text-weight-bold row items-center bg-grey-2 col-12">
<span class="q-ml-lg q-my-sm">ประวการศกษา </span>
</div>
<div class="col-12"><q-separator /></div>
<div
class="row col-12 q-pa-sm"
v-if="formDetail.educations && formDetail.educations.length > 0"
>
<div
class="row q-col-gutter-sm"
v-for="(education, index) in formDetail.educations"
:key="index"
>
<div class="col-xs-6 col-sm-4 col-md-3">
<q-input
borderless
readonly
2024-06-28 17:52:30 +07:00
:model-value="
education.educationLevel ? education.educationLevel : '-'
"
label="ระดับศึกษา"
/>
</div>
<div class="col-xs-6 col-sm-4 col-md-3">
<q-input
borderless
readonly
2024-06-28 17:52:30 +07:00
:model-value="education.institute ? education.institute : '-'"
label="สถานศึกษา"
/>
</div>
<div class="col-xs-6 col-sm-4 col-md-3">
<q-input
borderless
2024-06-28 17:52:30 +07:00
:model-value="
education.startDate ? date2Thai(education.startDate) : '-'
"
readonly
label="ตั้งแต่"
>
</q-input>
</div>
<div class="col-xs-6 col-sm-4 col-md-3">
<q-input
borderless
2024-06-28 17:52:30 +07:00
:model-value="
education.endDate ? date2Thai(education.endDate) : '-'
"
readonly
label="ถึง"
>
</q-input>
</div>
<div class="col-xs-6 col-sm-4 col-md-3">
<q-input
borderless
2024-06-28 17:52:30 +07:00
:model-value="
education.finishDate ? date2Thai(education.finishDate) : '-'
"
readonly
label="วันที่สำเร็จการศึกษา"
>
</q-input>
</div>
<div class="col-xs-6 col-sm-4 col-md-3">
<q-input
borderless
readonly
:model-value="education.isEducation ? 'ใช่' : 'ไม่ใช่'"
label="วุฒิการศึกษาในตําแหน่ง"
/>
</div>
<div class="col-xs-6 col-sm-4 col-md-3">
<q-input
borderless
readonly
2024-06-28 17:52:30 +07:00
:model-value="education.degree ? education.degree : '-'"
label="วุฒิการศึกษา"
/>
</div>
<div class="col-xs-6 col-sm-4 col-md-3">
<q-input
borderless
readonly
2024-06-28 17:52:30 +07:00
:model-value="education.field ? education.field : '-'"
label="สาขาวิชา/ทาง"
/>
</div>
<div class="col-xs-6 col-sm-4 col-md-3">
<q-input
borderless
readonly
2024-06-28 17:52:30 +07:00
:model-value="education.fundName ? education.fundName : '-'"
label="ทุน"
/>
</div>
<div class="col-xs-6 col-sm-4 col-md-3">
<q-input
borderless
readonly
2024-06-28 17:52:30 +07:00
:model-value="education.gpa ? education.gpa : '-'"
label="เกรดเฉลี่ย"
/>
</div>
<div class="col-xs-6 col-sm-4 col-md-6">
<q-input
borderless
readonly
2024-06-28 17:52:30 +07:00
:model-value="education.country ? education.country : '-'"
label="ประเทศ"
/>
</div>
</div>
</div>
<div v-else class="row col-12 q-pa-md">ไมประวการศกษา</div>
</q-card>
<q-card class="col-12 cardSp1" bordered>
<div class="text-weight-bold row items-center bg-grey-2 col-12">
<span class="q-ml-lg q-my-sm">ใบอนญาตประกอบวชาช</span>
</div>
<div class="col-12"><q-separator /></div>
<TableData
class="col-12"
:columns="columnsCertificates"
:row="formDetail.certificates"
/>
</q-card>
<q-card class="col-12 cardSp1" bordered>
<div class="text-weight-bold row items-center bg-grey-2 col-12">
<span class="q-ml-lg q-my-sm">ประวการรบราชการ</span>
</div>
<div class="col-12"><q-separator /></div>
<div class="col-10">
<TableData :columns="columnSalaries" :row="formDetail.salaries" />
</div>
</q-card>
<q-card class="col-12 cardSp1" bordered>
<div class="text-weight-bold row items-center bg-grey-2 col-12">
<span class="q-ml-lg q-my-sm">ประวการฝกอบรมดงาน</span>
</div>
<div class="col-12"><q-separator /></div>
<TableData
class="col-12"
:columns="columnTraining"
:row="formDetail.trainings"
/>
</q-card>
<q-card class="col-12 cardSp1" bordered>
<div class="text-weight-bold row items-center bg-grey-2 col-12">
<span class="q-ml-lg q-my-sm">ประสบการณในการปฏงาน </span>
</div>
<div class="col-12"><q-separator /></div>
<div class="col-12 q-pa-sm">-</div>
</q-card>
<q-card class="col-12 cardSp1" bordered>
<div class="text-weight-bold row items-center bg-grey-2 col-12">
<span class="q-ml-lg q-my-sm">ผลงานทเคยเสนอขอประเม (าม)</span>
</div>
<div class="col-12"><q-separator /></div>
<div class="col-10">
<TableData :columns="columnProjectsProposed" />
</div>
</q-card>
</div>
</q-card>
2023-12-13 15:24:59 +07:00
</template>
<style>
.cardSp1 {
border: 1px solid #d6dee1;
margin-bottom: 10px;
box-shadow: none !important;
}
</style>