ปรับ code ประเมิน
This commit is contained in:
parent
53c253d394
commit
69851f26b9
14 changed files with 220 additions and 419 deletions
|
|
@ -7,6 +7,7 @@ import config from "@/app.config";
|
||||||
|
|
||||||
/** import Type*/
|
/** import Type*/
|
||||||
import type {
|
import type {
|
||||||
|
PersonInformation,
|
||||||
FormSpec,
|
FormSpec,
|
||||||
FormCommand,
|
FormCommand,
|
||||||
FormCommandRef,
|
FormCommandRef,
|
||||||
|
|
@ -14,21 +15,19 @@ import type {
|
||||||
|
|
||||||
/** import Components*/
|
/** import Components*/
|
||||||
import Stepper from "@/modules/06_evaluate/components/Stepper.vue";
|
import Stepper from "@/modules/06_evaluate/components/Stepper.vue";
|
||||||
import Step1 from "@/modules/06_evaluate/components/step/step1.vue";
|
import Step1 from "@/modules/06_evaluate/components/step/step1.vue"; // 1.ตรวจสอบคุณสมบัติ
|
||||||
import Step2 from "@/modules/06_evaluate/components/step/step2.vue";
|
import Step2 from "@/modules/06_evaluate/components/step/step2.vue"; // 2.จัดเตรียมเอกสารเล่ม 1
|
||||||
import Step3 from "@/modules/06_evaluate/components/step/step3.vue";
|
import Step3 from "@/modules/06_evaluate/components/step/step3.vue"; // 3.ตรวจสอบเอกสารเล่ม 1
|
||||||
import Step4 from "@/modules/06_evaluate/components/step/step4.vue";
|
import Step4 from "@/modules/06_evaluate/components/step/step4.vue"; // 4.รอตรวจสอบคุณสมบัติ
|
||||||
import Step5 from "@/modules/06_evaluate/components/step/step5.vue";
|
import Step5 from "@/modules/06_evaluate/components/step/step5.vue"; // 5.ประกาศบนเว็บไซต์
|
||||||
import Step6 from "@/modules/06_evaluate/components/step/step6.vue";
|
import Step6 from "@/modules/06_evaluate/components/step/step6.vue"; // 6.จัดเตรียมเอกสารเล่ม 2
|
||||||
import Step7 from "@/modules/06_evaluate/components/step/step7.vue";
|
import Step7 from "@/modules/06_evaluate/components/step/step7.vue"; // 7.รอพิจารณาผลการประเมิน 2
|
||||||
import Step8 from "@/modules/06_evaluate/components/step/step8.vue";
|
import Step8 from "@/modules/06_evaluate/components/step/step8.vue"; // 8.ตรวจสอบความถูกต้องของเอกสารเล่ม 2
|
||||||
import Step9 from "@/modules/06_evaluate/components/step/step9.vue";
|
import Step9 from "@/modules/06_evaluate/components/step/step9.vue"; // 9.เสร็จสิ้น
|
||||||
|
import ViewStep1 from "@/modules/06_evaluate/components/viewstep/viewStep1.vue"; // ข้อมูลส่วนตัว
|
||||||
import ViewStep1 from "@/modules/06_evaluate/components/viewstep/viewStep1.vue";
|
import ViewStep3 from "@/modules/06_evaluate/components/viewstep/viewStep3.vue"; //
|
||||||
import ViewStep3 from "@/modules/06_evaluate/components/viewstep/viewStep3.vue";
|
import ViewStep7 from "@/modules/06_evaluate/components/viewstep/viewStep7.vue"; //
|
||||||
import ViewStep7 from "@/modules/06_evaluate/components/viewstep/viewStep7.vue";
|
import PopupHistory from "@/modules/06_evaluate/components/viewstep/popupHistory.vue"; // ประวัติการประเมิน
|
||||||
|
|
||||||
import PopupHistory from "@/modules/06_evaluate/components/viewstep/popupHistory.vue";
|
|
||||||
|
|
||||||
/** import Store*/
|
/** import Store*/
|
||||||
import { useEvaluateStore } from "@/modules/06_evaluate/store";
|
import { useEvaluateStore } from "@/modules/06_evaluate/store";
|
||||||
|
|
@ -60,16 +59,8 @@ async function onCilckNextStep() {
|
||||||
? await saveStep1
|
? await saveStep1
|
||||||
: store.step === 3
|
: store.step === 3
|
||||||
? await saveStep3
|
? await saveStep3
|
||||||
: store.step === 4
|
|
||||||
? await saveStep4
|
|
||||||
: store.step === 5
|
|
||||||
? await saveStep5
|
|
||||||
: store.step === 7
|
: store.step === 7
|
||||||
? await saveStep7
|
? await saveStep7
|
||||||
: store.step === 8
|
|
||||||
? await saveStep8
|
|
||||||
: store.step === 9
|
|
||||||
? await saveStep9
|
|
||||||
: null;
|
: null;
|
||||||
store.step === 2 || store.step === 6
|
store.step === 2 || store.step === 6
|
||||||
? validateForm()
|
? validateForm()
|
||||||
|
|
@ -97,7 +88,7 @@ async function onCilckNextStep() {
|
||||||
/** function validateForm Step 2,4*/
|
/** function validateForm Step 2,4*/
|
||||||
async function validateForm() {
|
async function validateForm() {
|
||||||
store.checkFileupload = !store.checkFileupload;
|
store.checkFileupload = !store.checkFileupload;
|
||||||
const emptyValues = downloadFileRef.value.filter((e: any) => e === "");
|
const emptyValues = downloadFileRef.value.filter((e: string) => e === "");
|
||||||
const hasError = [];
|
const hasError = [];
|
||||||
for (const key in formCommandRef) {
|
for (const key in formCommandRef) {
|
||||||
if (Object.prototype.hasOwnProperty.call(formCommandRef, key)) {
|
if (Object.prototype.hasOwnProperty.call(formCommandRef, key)) {
|
||||||
|
|
@ -129,30 +120,20 @@ async function validateForm() {
|
||||||
|
|
||||||
const pdfSrc = ref<any>();
|
const pdfSrc = ref<any>();
|
||||||
const urlDownloadFile = ref<string>("");
|
const urlDownloadFile = ref<string>("");
|
||||||
|
/**
|
||||||
|
* function update ลิงก์ PDF
|
||||||
|
* @param url ลิงก์ PDF
|
||||||
|
* @param urlDownload ลิงก์ดาวน์โหลด
|
||||||
|
*/
|
||||||
async function updateFilePDF(url: any, urlDownload: string) {
|
async function updateFilePDF(url: any, urlDownload: string) {
|
||||||
pdfSrc.value = url;
|
pdfSrc.value = url;
|
||||||
urlDownloadFile.value = urlDownload;
|
urlDownloadFile.value = urlDownload;
|
||||||
}
|
}
|
||||||
|
|
||||||
// /** function เช็คการยื่นข้อประเมิน*/
|
/**
|
||||||
// async function fetchCheckStatus() {
|
* function เช็ตสถานะขั้ยตอน
|
||||||
// showLoader();
|
* @param id idประเมิน
|
||||||
// await http
|
*/
|
||||||
// .get(config.API.evaluationCheckStatus())
|
|
||||||
// .then((res) => {
|
|
||||||
// const data = res.data.result;
|
|
||||||
// const id =
|
|
||||||
// route.params.type === "expert" ? data.expertId : data.specialExpertId;
|
|
||||||
// router.push(`/evaluate/detail/${route.params.type}/${id}`);
|
|
||||||
// })
|
|
||||||
// .catch((err) => {
|
|
||||||
// messageError($q, err);
|
|
||||||
// })
|
|
||||||
// .finally(() => {
|
|
||||||
// hideLoader();
|
|
||||||
// });
|
|
||||||
// }
|
|
||||||
|
|
||||||
async function fetchCheckStep(id: string) {
|
async function fetchCheckStep(id: string) {
|
||||||
showLoadStatus.value = false;
|
showLoadStatus.value = false;
|
||||||
if (id) {
|
if (id) {
|
||||||
|
|
@ -205,7 +186,11 @@ const formSpec = reactive<FormSpec>({
|
||||||
isHaveMinPeriodOrHoldPos: false, // มีระยะเวลาขั้นต่ำในการดำรงตำแหน่งหรือเคยดำรงตำแหน่งในสายงานที่จะคัดเลือกตามคุณวุฒิของบุคคลและระดับตำแหน่งที่จะคัดเลือก
|
isHaveMinPeriodOrHoldPos: false, // มีระยะเวลาขั้นต่ำในการดำรงตำแหน่งหรือเคยดำรงตำแหน่งในสายงานที่จะคัดเลือกตามคุณวุฒิของบุคคลและระดับตำแหน่งที่จะคัดเลือก
|
||||||
});
|
});
|
||||||
const formDetail = ref<any>();
|
const formDetail = ref<any>();
|
||||||
const formDataStep1 = ref<any>();
|
const formDataStep1 = ref<PersonInformation>();
|
||||||
|
/**
|
||||||
|
* function เรียกข่้อมูลตรวจสอบคุณสมบัติ
|
||||||
|
* @param id id ประเมิน
|
||||||
|
*/
|
||||||
async function fetchDataStep1(id: string) {
|
async function fetchDataStep1(id: string) {
|
||||||
showLoadStatus.value = false;
|
showLoadStatus.value = false;
|
||||||
showLoader();
|
showLoader();
|
||||||
|
|
@ -224,6 +209,10 @@ async function fetchDataStep1(id: string) {
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* function อัปเดทคุณสมบัติ
|
||||||
|
* @param data ข้อมูลคุณสมบัติ
|
||||||
|
*/
|
||||||
async function updateCheckSpec(data: FormSpec) {
|
async function updateCheckSpec(data: FormSpec) {
|
||||||
formSpec.isEducationalQft = data.isEducationalQft;
|
formSpec.isEducationalQft = data.isEducationalQft;
|
||||||
formSpec.isGovermantServiceHtr = data.isGovermantServiceHtr;
|
formSpec.isGovermantServiceHtr = data.isGovermantServiceHtr;
|
||||||
|
|
@ -233,11 +222,14 @@ async function updateCheckSpec(data: FormSpec) {
|
||||||
formSpec.isHaveProLicense = data.isHaveProLicense;
|
formSpec.isHaveProLicense = data.isHaveProLicense;
|
||||||
formSpec.isHaveMinPeriodOrHoldPos = data.isHaveMinPeriodOrHoldPos;
|
formSpec.isHaveMinPeriodOrHoldPos = data.isHaveMinPeriodOrHoldPos;
|
||||||
}
|
}
|
||||||
|
/**
|
||||||
|
* funciton อัปเดทข้อมูลส่วนตัว
|
||||||
|
* @param data ข้อมูลส่วนตัว
|
||||||
|
*/
|
||||||
function updateFormDetail(data: any) {
|
function updateFormDetail(data: any) {
|
||||||
formDetail.value = data;
|
formDetail.value = data;
|
||||||
}
|
}
|
||||||
|
/** function บันทักตรวจสอบคุณสมบัติ*/
|
||||||
async function saveStep1() {
|
async function saveStep1() {
|
||||||
const salaries = formDetail.value.trainings.map((e: any) => ({
|
const salaries = formDetail.value.trainings.map((e: any) => ({
|
||||||
amount: e.amount,
|
amount: e.amount,
|
||||||
|
|
@ -355,7 +347,11 @@ const formCommandRef: FormCommandRef = {
|
||||||
assignedPosition: assignedPositionRef,
|
assignedPosition: assignedPositionRef,
|
||||||
};
|
};
|
||||||
const downloadFileRef = ref<any>();
|
const downloadFileRef = ref<any>();
|
||||||
|
/**
|
||||||
|
* function อัปเดท ผลงาน,ผู้เซ็นเอกสาร, Ref
|
||||||
|
* @param val ผู้เซ็นเอกสาร
|
||||||
|
* @param ref validate
|
||||||
|
*/
|
||||||
function updateformCommand(val: any, ref: any) {
|
function updateformCommand(val: any, ref: any) {
|
||||||
formCommand.commanderFullname = val.commanderFullname;
|
formCommand.commanderFullname = val.commanderFullname;
|
||||||
formCommand.commanderPosition = val.commanderPosition;
|
formCommand.commanderPosition = val.commanderPosition;
|
||||||
|
|
@ -380,7 +376,7 @@ function updateformCommand(val: any, ref: any) {
|
||||||
assignedPositionRef.value = ref.assignedPosition;
|
assignedPositionRef.value = ref.assignedPosition;
|
||||||
statusUpload.value = ref.statusUpload;
|
statusUpload.value = ref.statusUpload;
|
||||||
}
|
}
|
||||||
|
/** function บันทึกข้อมูล ผลงานม,ผู้เซ็นเอกสาร*/
|
||||||
async function saveStep2() {
|
async function saveStep2() {
|
||||||
const body = {
|
const body = {
|
||||||
commanderFullname: formCommand.commanderFullname,
|
commanderFullname: formCommand.commanderFullname,
|
||||||
|
|
@ -419,7 +415,7 @@ async function saveStep2() {
|
||||||
"ต้องการยืนยันการบันทึกข้อมูลนี้ใช่หรือไม่?"
|
"ต้องการยืนยันการบันทึกข้อมูลนี้ใช่หรือไม่?"
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
/** function ดำเนินการต่อไป 3.ตรวจสอบเอกสารเล่ม 1*/
|
||||||
async function nextTostep3() {
|
async function nextTostep3() {
|
||||||
dialogConfirm(
|
dialogConfirm(
|
||||||
$q,
|
$q,
|
||||||
|
|
@ -445,6 +441,7 @@ async function nextTostep3() {
|
||||||
}
|
}
|
||||||
|
|
||||||
/** STEP3*/
|
/** STEP3*/
|
||||||
|
/** function ยืนยันการยื่นเอกสารไปยัง 4.รอตรวจสอบคุณสมบัติ*/
|
||||||
async function saveStep3() {
|
async function saveStep3() {
|
||||||
showLoader();
|
showLoader();
|
||||||
await http
|
await http
|
||||||
|
|
@ -459,14 +456,9 @@ async function saveStep3() {
|
||||||
hideLoader();
|
hideLoader();
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
async function saveStep4() {
|
|
||||||
console.log("Save 4");
|
|
||||||
}
|
|
||||||
async function saveStep5() {
|
|
||||||
console.log("Save 5");
|
|
||||||
}
|
|
||||||
|
|
||||||
/** STEP 6*/
|
/** STEP 6*/
|
||||||
|
/** function บันทึกข้อมูล ผลงานม,ผู้เซ็นเอกสาร*/
|
||||||
async function saveStep6() {
|
async function saveStep6() {
|
||||||
const body = {
|
const body = {
|
||||||
commanderAboveFullnameDoc2: formCommand.commanderAboveFullname,
|
commanderAboveFullnameDoc2: formCommand.commanderAboveFullname,
|
||||||
|
|
@ -505,7 +497,7 @@ async function saveStep6() {
|
||||||
"ต้องการยืนยันการบันทึกข้อมูลนี้ใช่หรือไม่?"
|
"ต้องการยืนยันการบันทึกข้อมูลนี้ใช่หรือไม่?"
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
/** function ดำเนินการต่อไป 7.รอพิจารณาผลการประเมิน 2*/
|
||||||
async function nextTostep7() {
|
async function nextTostep7() {
|
||||||
dialogConfirm(
|
dialogConfirm(
|
||||||
$q,
|
$q,
|
||||||
|
|
@ -529,6 +521,8 @@ async function nextTostep7() {
|
||||||
}
|
}
|
||||||
|
|
||||||
/** STEP 7*/
|
/** STEP 7*/
|
||||||
|
/** function ยืนยันการยื่นเอกสารไปยัง 8.ตรวจสอบความถูกต้องของเอกสารเล่ม 2
|
||||||
|
*/
|
||||||
async function saveStep7() {
|
async function saveStep7() {
|
||||||
showLoader();
|
showLoader();
|
||||||
await http
|
await http
|
||||||
|
|
@ -541,13 +535,8 @@ async function saveStep7() {
|
||||||
hideLoader();
|
hideLoader();
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
async function saveStep8() {
|
|
||||||
console.log("Save 8");
|
|
||||||
}
|
|
||||||
async function saveStep9() {
|
|
||||||
console.log("Save 9");
|
|
||||||
}
|
|
||||||
|
|
||||||
|
/** function callblck ทำงานเมื่อมีการเปลี่ยน Step*/
|
||||||
watch(
|
watch(
|
||||||
() => store.step,
|
() => store.step,
|
||||||
() => {
|
() => {
|
||||||
|
|
@ -558,6 +547,7 @@ watch(
|
||||||
}
|
}
|
||||||
);
|
);
|
||||||
|
|
||||||
|
/** Hook lifecycle*/
|
||||||
onMounted(async () => {
|
onMounted(async () => {
|
||||||
route.params.id && fetchCheckStep(route.params.id.toString());
|
route.params.id && fetchCheckStep(route.params.id.toString());
|
||||||
route.name === "evaluate-add" &&
|
route.name === "evaluate-add" &&
|
||||||
|
|
|
||||||
|
|
@ -1,11 +1,15 @@
|
||||||
<script setup lang="ts">
|
<script setup lang="ts">
|
||||||
import DialogHeader from "@/components/DialogHeader.vue";
|
|
||||||
import { useEvaluateStore } from "@/modules/06_evaluate/store";
|
|
||||||
import Table from "@/components/Table.vue";
|
|
||||||
|
|
||||||
import { ref, watch } from "vue";
|
import { ref, watch } from "vue";
|
||||||
import type { QTableProps } from "quasar";
|
import type { QTableProps } from "quasar";
|
||||||
|
|
||||||
|
/***importComponents*/
|
||||||
|
import Table from "@/components/Table.vue";
|
||||||
|
import DialogHeader from "@/components/DialogHeader.vue";
|
||||||
|
|
||||||
|
/** importStore*/
|
||||||
|
import { useEvaluateStore } from "@/modules/06_evaluate/store";
|
||||||
|
|
||||||
|
/**use*/
|
||||||
const store = useEvaluateStore();
|
const store = useEvaluateStore();
|
||||||
|
|
||||||
const props = defineProps({
|
const props = defineProps({
|
||||||
|
|
@ -29,7 +33,6 @@ const props = defineProps({
|
||||||
});
|
});
|
||||||
|
|
||||||
const filter = ref<string>("");
|
const filter = ref<string>("");
|
||||||
|
|
||||||
const rows = ref<any[]>([
|
const rows = ref<any[]>([
|
||||||
{
|
{
|
||||||
degree: "ปริญญาตรี หรือเทียบเท่า",
|
degree: "ปริญญาตรี หรือเทียบเท่า",
|
||||||
|
|
|
||||||
|
|
@ -1,8 +1,7 @@
|
||||||
<script setup lang="ts">
|
<script setup lang="ts">
|
||||||
import { ref } from "vue";
|
/** importStore*/
|
||||||
|
|
||||||
import { useEvaluateStore } from "@/modules/06_evaluate/store";
|
import { useEvaluateStore } from "@/modules/06_evaluate/store";
|
||||||
|
/**use*/
|
||||||
const store = useEvaluateStore();
|
const store = useEvaluateStore();
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,161 +0,0 @@
|
||||||
<script setup lang="ts">
|
|
||||||
import { ref, onMounted } from "vue";
|
|
||||||
import { useQuasar } from "quasar";
|
|
||||||
import evaluationFunctions from "@/modules/06_evaluate/stores/evaluationFunction";
|
|
||||||
|
|
||||||
import Stepper from "@/modules/06_evaluate/components/Stepper.vue";
|
|
||||||
import Step1 from "@/modules/06_evaluate/components/step/step1.vue";
|
|
||||||
import Step2 from "@/modules/06_evaluate/components/step/step2.vue";
|
|
||||||
import Step3 from "@/modules/06_evaluate/components/step/step3.vue";
|
|
||||||
import Step4 from "@/modules/06_evaluate/components/step/step4.vue";
|
|
||||||
import Step5 from "@/modules/06_evaluate/components/step/step5.vue";
|
|
||||||
import Step6 from "@/modules/06_evaluate/components/step/step6.vue";
|
|
||||||
import Step7 from "@/modules/06_evaluate/components/step/step7.vue";
|
|
||||||
import Step8 from "@/modules/06_evaluate/components/step/step8.vue";
|
|
||||||
import Step9 from "@/modules/06_evaluate/components/step/step9.vue";
|
|
||||||
|
|
||||||
import ViewStep1 from "@/modules/06_evaluate/components/viewstep/viewStep1.vue";
|
|
||||||
import ViewStep3 from "@/modules/06_evaluate/components/viewstep/viewStep3.vue";
|
|
||||||
import ViewStep7 from "@/modules/06_evaluate/components/viewstep/viewStep7.vue";
|
|
||||||
|
|
||||||
import DialogMain from "@/modules/06_evaluate/components/directorandmeet/DialogMain.vue";
|
|
||||||
|
|
||||||
import { useEvaluateStore } from "@/modules/06_evaluate/store";
|
|
||||||
import { useCounterMixin } from "@/stores/mixin";
|
|
||||||
|
|
||||||
const store = useEvaluateStore();
|
|
||||||
const mixin = useCounterMixin();
|
|
||||||
const $q = useQuasar();
|
|
||||||
|
|
||||||
const { dialogConfirm } = mixin;
|
|
||||||
const { fetchCheckStatus, saveEvaluation } = evaluationFunctions;
|
|
||||||
|
|
||||||
function onCilckNextStep() {
|
|
||||||
store.step < 9 &&
|
|
||||||
dialogConfirm($q, () => {
|
|
||||||
store.step++;
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
function onCilckprPeviousStep() {
|
|
||||||
store.step > 1 &&
|
|
||||||
dialogConfirm($q, () => {
|
|
||||||
store.step--;
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
const modalMeeting = ref<boolean>(false);
|
|
||||||
|
|
||||||
function onClickDialogMeeting() {
|
|
||||||
modalMeeting.value = true;
|
|
||||||
}
|
|
||||||
|
|
||||||
function closeDialogMeeting() {
|
|
||||||
modalMeeting.value = false;
|
|
||||||
}
|
|
||||||
|
|
||||||
function fetchDirector() {
|
|
||||||
console.log("ประเมินชำนาญการพิเศษ:director");
|
|
||||||
}
|
|
||||||
|
|
||||||
function fetchMeeting() {
|
|
||||||
console.log("ประเมินชำนาญการพิเศษ:meeting");
|
|
||||||
}
|
|
||||||
|
|
||||||
onMounted(async () => {
|
|
||||||
store.step = 1;
|
|
||||||
await fetchCheckStatus();
|
|
||||||
});
|
|
||||||
</script>
|
|
||||||
|
|
||||||
<template>
|
|
||||||
<div class="row q-col-gutter-md">
|
|
||||||
<div class="col-xs-12 col-sm-3">
|
|
||||||
<div class="toptitle">ประเมินชำนาญการพิเศษ</div>
|
|
||||||
<Stepper />
|
|
||||||
<div class="text-center">
|
|
||||||
<q-btn
|
|
||||||
unelevated
|
|
||||||
outline
|
|
||||||
label="รายชื่อกรรมการและการประชุม"
|
|
||||||
color="public"
|
|
||||||
@click="onClickDialogMeeting"
|
|
||||||
/>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="col-xs-12 col-sm-9">
|
|
||||||
<div class="toptitle">
|
|
||||||
{{ store.step }}.{{ store.title[store.step - 1] }}
|
|
||||||
</div>
|
|
||||||
<div class="row q-col-gutter-md col-12">
|
|
||||||
<div
|
|
||||||
:class="
|
|
||||||
store.step === 2 ||
|
|
||||||
store.step === 4 ||
|
|
||||||
store.step === 5 ||
|
|
||||||
store.step === 6 ||
|
|
||||||
store.step === 8 ||
|
|
||||||
store.step === 9
|
|
||||||
? 'col-xs-12 col-sm-12 row'
|
|
||||||
: 'col-xs-12 col-sm-5 row'
|
|
||||||
"
|
|
||||||
>
|
|
||||||
<q-card flat bordered class="col-12 q-pa-md">
|
|
||||||
<q-card-section>
|
|
||||||
<Step1 v-if="store.step === 1" />
|
|
||||||
<Step2 v-if="store.step === 2" />
|
|
||||||
<Step3 v-if="store.step === 3" />
|
|
||||||
<Step4 v-if="store.step === 4" />
|
|
||||||
<Step5 v-if="store.step === 5" />
|
|
||||||
<Step6 v-if="store.step === 6" />
|
|
||||||
<Step7 v-if="store.step === 7" />
|
|
||||||
<Step8 v-if="store.step === 8" />
|
|
||||||
<Step9 v-if="store.step === 9" />
|
|
||||||
</q-card-section>
|
|
||||||
</q-card>
|
|
||||||
</div>
|
|
||||||
<div
|
|
||||||
class="col-xs-12 col-sm-7 row"
|
|
||||||
v-if="store.step === 1 || store.step === 3 || store.step === 7"
|
|
||||||
>
|
|
||||||
<q-card flat bordered class="col-12">
|
|
||||||
<q-card-section>
|
|
||||||
<ViewStep1 v-if="store.step === 1" />
|
|
||||||
<ViewStep3 v-if="store.step === 3" />
|
|
||||||
<ViewStep7 v-if="store.step === 7" /> </q-card-section
|
|
||||||
></q-card>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="q-mt-md q-gutter-md" align="right">
|
|
||||||
<q-btn
|
|
||||||
v-if="store.step !== 1"
|
|
||||||
unelevated
|
|
||||||
outline
|
|
||||||
label="ย้อนกลับ"
|
|
||||||
color="public"
|
|
||||||
@click="onCilckprPeviousStep"
|
|
||||||
/>
|
|
||||||
<q-btn
|
|
||||||
unelevated
|
|
||||||
label="ดำเนินการต่อ"
|
|
||||||
color="public"
|
|
||||||
@click="onCilckNextStep"
|
|
||||||
/>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<DialogMain
|
|
||||||
:modal="modalMeeting"
|
|
||||||
:close="closeDialogMeeting"
|
|
||||||
:fetchDirector="fetchDirector"
|
|
||||||
:fetchMeeting="fetchMeeting"
|
|
||||||
/>
|
|
||||||
</template>
|
|
||||||
|
|
||||||
<style>
|
|
||||||
.q-stepper--vertical .q-stepper__step-inner {
|
|
||||||
padding: 0;
|
|
||||||
}
|
|
||||||
</style>
|
|
||||||
|
|
@ -1,28 +1,25 @@
|
||||||
<script setup lang="ts">
|
<script setup lang="ts">
|
||||||
import { reactive, onMounted, ref, watch } from "vue";
|
import { reactive, onMounted, ref } from "vue";
|
||||||
import { useQuasar } from "quasar";
|
|
||||||
import http from "@/plugins/http";
|
/**importTyep*/
|
||||||
import config from "@/app.config";
|
import type {
|
||||||
|
PersonInformation,
|
||||||
|
FormSpec,
|
||||||
|
} from "@/modules/06_evaluate/interface/evalute";
|
||||||
|
|
||||||
/** importComponents*/
|
/** importComponents*/
|
||||||
import PopupCheckFeatures from "@/modules/06_evaluate/components/PopupCheckFeatures.vue";
|
import PopupCheckFeatures from "@/modules/06_evaluate/components/PopupCheckFeatures.vue";
|
||||||
|
|
||||||
/** importStores*/
|
/** importStores*/
|
||||||
import { useCounterMixin } from "@/stores/mixin";
|
|
||||||
import { useEvaluateStore } from "@/modules/06_evaluate/store";
|
import { useEvaluateStore } from "@/modules/06_evaluate/store";
|
||||||
|
|
||||||
/** use*/
|
/** use*/
|
||||||
const mixin = useCounterMixin();
|
|
||||||
const $q = useQuasar();
|
|
||||||
const store = useEvaluateStore();
|
const store = useEvaluateStore();
|
||||||
|
|
||||||
const { showLoader, hideLoader, messageError } = mixin;
|
|
||||||
|
|
||||||
/** props จาก Tab1.vue*/
|
|
||||||
const props = defineProps({
|
const props = defineProps({
|
||||||
educations: Array,
|
educations: Array,
|
||||||
data: {
|
data: {
|
||||||
type: Array,
|
type: Object as () => PersonInformation,
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
@ -31,7 +28,7 @@ const emit = defineEmits(["update:spec"]);
|
||||||
const modal = ref<boolean>(false);
|
const modal = ref<boolean>(false);
|
||||||
const show = ref<boolean>(false);
|
const show = ref<boolean>(false);
|
||||||
|
|
||||||
const formData = reactive<any>({
|
const formData = reactive<FormSpec>({
|
||||||
isEducationalQft: false, // คุณวุฒิการศึกษา
|
isEducationalQft: false, // คุณวุฒิการศึกษา
|
||||||
isGovermantServiceHtr: false, // ประวัติการรับราชการ
|
isGovermantServiceHtr: false, // ประวัติการรับราชการ
|
||||||
isOperatingExp: false, // ประสบการณ์ในการปฏิบัติงาน
|
isOperatingExp: false, // ประสบการณ์ในการปฏิบัติงาน
|
||||||
|
|
@ -48,14 +45,9 @@ async function updateValue() {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* function fetchData ตรวจสอบคุณสมบัติ
|
* function fetchData ตรวจสอบคุณสมบัติ
|
||||||
* @param id ประเมิน
|
* @param data ตรวจสอบคุณสมบัติ
|
||||||
*/
|
*/
|
||||||
async function fetchCheckSpec(data: any) {
|
async function fetchCheckSpec(data: PersonInformation) {
|
||||||
// showLoader();
|
|
||||||
// await http
|
|
||||||
// .get(config.API.evaluationCheckspecByid(id))
|
|
||||||
// .then((res) => {
|
|
||||||
// const data = res.data.result;
|
|
||||||
formData.isEducationalQft = data.isEducationalQft;
|
formData.isEducationalQft = data.isEducationalQft;
|
||||||
formData.isGovermantServiceHtr = data.isGovermantServiceHtr;
|
formData.isGovermantServiceHtr = data.isGovermantServiceHtr;
|
||||||
formData.isOperatingExp = data.isOperatingExp;
|
formData.isOperatingExp = data.isOperatingExp;
|
||||||
|
|
@ -63,13 +55,6 @@ async function fetchCheckSpec(data: any) {
|
||||||
formData.isHaveSpecificQft = data.isHaveSpecificQft;
|
formData.isHaveSpecificQft = data.isHaveSpecificQft;
|
||||||
formData.isHaveProLicense = data.isHaveProLicense;
|
formData.isHaveProLicense = data.isHaveProLicense;
|
||||||
formData.isHaveMinPeriodOrHoldPos = data.isHaveMinPeriodOrHoldPos;
|
formData.isHaveMinPeriodOrHoldPos = data.isHaveMinPeriodOrHoldPos;
|
||||||
// })
|
|
||||||
// .catch((err) => {
|
|
||||||
// messageError($q, err);
|
|
||||||
// })
|
|
||||||
// .finally(() => {
|
|
||||||
// hideLoader();
|
|
||||||
// });
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
@ -88,8 +73,6 @@ function closeModal() {
|
||||||
|
|
||||||
/**hook lifecycle*/
|
/**hook lifecycle*/
|
||||||
onMounted(() => {
|
onMounted(() => {
|
||||||
// setTimeout(() => {
|
|
||||||
// }, 1000);
|
|
||||||
props.data && fetchCheckSpec(props.data);
|
props.data && fetchCheckSpec(props.data);
|
||||||
});
|
});
|
||||||
</script>
|
</script>
|
||||||
|
|
|
||||||
|
|
@ -25,7 +25,6 @@ const route = useRoute();
|
||||||
const { showLoader, hideLoader, date2Thai, messageError, success } = mixin;
|
const { showLoader, hideLoader, date2Thai, messageError, success } = mixin;
|
||||||
|
|
||||||
const evaluateId = ref<string>(route.params.id.toString());
|
const evaluateId = ref<string>(route.params.id.toString());
|
||||||
const statusUpload = ref<boolean>(false);
|
|
||||||
|
|
||||||
/** emit */
|
/** emit */
|
||||||
const emit = defineEmits(["update:form"]);
|
const emit = defineEmits(["update:form"]);
|
||||||
|
|
@ -103,11 +102,6 @@ const page = ref<number>(1);
|
||||||
const pdfSrc = ref<any>();
|
const pdfSrc = ref<any>();
|
||||||
const profile = ref<any>();
|
const profile = ref<any>();
|
||||||
|
|
||||||
function onClickViewPDF(file: any) {
|
|
||||||
// pdfSrc.value = file.webkitRelativePath;
|
|
||||||
modalView.value = true;
|
|
||||||
}
|
|
||||||
|
|
||||||
/** function ไปหน้าต่อไปของรายงาน */
|
/** function ไปหน้าต่อไปของรายงาน */
|
||||||
function nextPage() {
|
function nextPage() {
|
||||||
if (page.value < numOfPages.value) {
|
if (page.value < numOfPages.value) {
|
||||||
|
|
|
||||||
|
|
@ -1,27 +1,26 @@
|
||||||
<script setup lang="ts">
|
<script setup lang="ts">
|
||||||
import { ref, onMounted } from "vue";
|
import { ref, onMounted } from "vue";
|
||||||
import { useRoute } from "vue-router";
|
import { useRoute } from "vue-router";
|
||||||
|
import { useQuasar } from "quasar";
|
||||||
import http from "@/plugins/http";
|
import http from "@/plugins/http";
|
||||||
import config from "@/app.config";
|
import config from "@/app.config";
|
||||||
import { useQuasar } from "quasar";
|
|
||||||
import axios from "axios";
|
import axios from "axios";
|
||||||
|
|
||||||
|
/** importStroe*/
|
||||||
import { useCounterMixin } from "@/stores/mixin";
|
import { useCounterMixin } from "@/stores/mixin";
|
||||||
import { useEvaluateStore } from "@/modules/06_evaluate/store";
|
import { useEvaluateStore } from "@/modules/06_evaluate/store";
|
||||||
|
|
||||||
|
/** use*/
|
||||||
const $q = useQuasar();
|
const $q = useQuasar();
|
||||||
const store = useEvaluateStore();
|
const store = useEvaluateStore();
|
||||||
const mixin = useCounterMixin();
|
const mixin = useCounterMixin();
|
||||||
const route = useRoute();
|
const route = useRoute();
|
||||||
const { showLoader, hideLoader, messageError } = mixin;
|
const { showLoader, hideLoader, messageError } = mixin;
|
||||||
|
|
||||||
|
/** id ประเมิน*/
|
||||||
const evaluateId = ref<string>(route.params.id.toString());
|
const evaluateId = ref<string>(route.params.id.toString());
|
||||||
|
|
||||||
// const props = defineProps({
|
/** emit*/
|
||||||
// evaluateId: {
|
|
||||||
// type: String,
|
|
||||||
// },
|
|
||||||
// });
|
|
||||||
const emit = defineEmits(["update:file"]);
|
const emit = defineEmits(["update:file"]);
|
||||||
|
|
||||||
const selectedItem = ref(1);
|
const selectedItem = ref(1);
|
||||||
|
|
@ -34,13 +33,22 @@ const fileName = ref([
|
||||||
"6-ผลงานที่จะส่งประเมิน (เอกสารหมายเลข 11)",
|
"6-ผลงานที่จะส่งประเมิน (เอกสารหมายเลข 11)",
|
||||||
]);
|
]);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* function กดเลือกแสดงเอกสาน
|
||||||
|
* @param itemNumber เอกสาร
|
||||||
|
*/
|
||||||
function handleItemClick(itemNumber: number) {
|
function handleItemClick(itemNumber: number) {
|
||||||
store.tabPanels = itemNumber.toString();
|
store.tabPanels = itemNumber.toString();
|
||||||
selectedItem.value = itemNumber;
|
selectedItem.value = itemNumber;
|
||||||
fetchDocument(fileName.value[itemNumber - 1]);
|
fetchDocument(fileName.value[itemNumber - 1]);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* function เรีกยเอกสาร
|
||||||
|
* @param fileName ชื่อเอกสาร
|
||||||
|
*/
|
||||||
async function fetchDocument(fileName: string) {
|
async function fetchDocument(fileName: string) {
|
||||||
// showLoader();
|
showLoader();
|
||||||
evaluateId.value &&
|
evaluateId.value &&
|
||||||
(await http
|
(await http
|
||||||
.get(config.API.loadFileDocument("เล่ม 1", evaluateId.value, fileName))
|
.get(config.API.loadFileDocument("เล่ม 1", evaluateId.value, fileName))
|
||||||
|
|
@ -52,6 +60,10 @@ async function fetchDocument(fileName: string) {
|
||||||
}));
|
}));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* function ดาวน์โหลดไฟล์
|
||||||
|
* @param url ลิงก์ดาวน์โหลดไฟล์
|
||||||
|
*/
|
||||||
async function downloadFile(url: string) {
|
async function downloadFile(url: string) {
|
||||||
await axios
|
await axios
|
||||||
.get(url, {
|
.get(url, {
|
||||||
|
|
@ -77,6 +89,7 @@ async function downloadFile(url: string) {
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/** HooK lifecycle*/
|
||||||
onMounted(async () => {
|
onMounted(async () => {
|
||||||
await fetchDocument(fileName.value[selectedItem.value - 1]);
|
await fetchDocument(fileName.value[selectedItem.value - 1]);
|
||||||
});
|
});
|
||||||
|
|
|
||||||
|
|
@ -1,22 +1,27 @@
|
||||||
<script setup lang="ts">
|
<script setup lang="ts">
|
||||||
import { ref, onMounted } from "vue";
|
import { ref, onMounted } from "vue";
|
||||||
import { useRoute } from "vue-router";
|
import { useRoute } from "vue-router";
|
||||||
|
import { useQuasar } from "quasar";
|
||||||
import config from "@/app.config";
|
import config from "@/app.config";
|
||||||
import http from "@/plugins/http";
|
import http from "@/plugins/http";
|
||||||
import { useQuasar } from "quasar";
|
|
||||||
|
|
||||||
|
/** importStore*/
|
||||||
import { useCounterMixin } from "@/stores/mixin";
|
import { useCounterMixin } from "@/stores/mixin";
|
||||||
|
|
||||||
|
/** use*/
|
||||||
const mixins = useCounterMixin();
|
const mixins = useCounterMixin();
|
||||||
const $q = useQuasar();
|
const $q = useQuasar();
|
||||||
const route = useRoute();
|
const route = useRoute();
|
||||||
const { date2Thai, success } = mixins;
|
const { date2Thai, success } = mixins;
|
||||||
|
|
||||||
|
/** id ประเมิน*/
|
||||||
const evaluateId = ref<string>(route.params.id.toString());
|
const evaluateId = ref<string>(route.params.id.toString());
|
||||||
|
|
||||||
const dateStartAnnounce = ref<string | null>(date2Thai(new Date()));
|
const dateStartAnnounce = ref<string | null>(date2Thai(new Date()));
|
||||||
const dateEndAnnounce = ref<string | null>(date2Thai(new Date()));
|
const dateEndAnnounce = ref<string | null>(date2Thai(new Date()));
|
||||||
|
const statusFile = ref<boolean>(false);
|
||||||
|
|
||||||
|
/** เอกสารประกาศผลการคัดเลือกบุคคล*/
|
||||||
const items = ref<any>([
|
const items = ref<any>([
|
||||||
{
|
{
|
||||||
label: "แบบสรุปข้อมูลของผู้ขอรับการคัดเลือก (เอกสารหมายเลข 9)",
|
label: "แบบสรุปข้อมูลของผู้ขอรับการคัดเลือก (เอกสารหมายเลข 9)",
|
||||||
|
|
@ -32,8 +37,7 @@ const items = ref<any>([
|
||||||
},
|
},
|
||||||
]);
|
]);
|
||||||
|
|
||||||
const statusFile = ref<boolean>(false);
|
/** fuinction เรียกข้อมูลลิงก์ดาวนฺโหลด*/
|
||||||
|
|
||||||
async function onClickfetchDocument(fileName: string, type: string) {
|
async function onClickfetchDocument(fileName: string, type: string) {
|
||||||
evaluateId.value &&
|
evaluateId.value &&
|
||||||
(await http
|
(await http
|
||||||
|
|
@ -43,22 +47,17 @@ async function onClickfetchDocument(fileName: string, type: string) {
|
||||||
type === "COPPY" && coppyLink(downloadUrl);
|
type === "COPPY" && coppyLink(downloadUrl);
|
||||||
type === "CHECK" && (statusFile.value = true);
|
type === "CHECK" && (statusFile.value = true);
|
||||||
})
|
})
|
||||||
.catch((err) => {}));
|
.catch(() => {}));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/** function คัดลอหลิงก์ดาวน์โหลด */
|
||||||
async function coppyLink(link: string) {
|
async function coppyLink(link: string) {
|
||||||
const linkById = link;
|
const linkById = link;
|
||||||
navigator.clipboard.writeText(linkById);
|
navigator.clipboard.writeText(linkById);
|
||||||
success($q, "คัดลอกสำเร็จ");
|
success($q, "คัดลอกสำเร็จ");
|
||||||
|
|
||||||
// const textarea = document.createElement("textarea");
|
|
||||||
// textarea.value = link;
|
|
||||||
// document.body.appendChild(textarea);
|
|
||||||
// textarea.select();
|
|
||||||
// document.execCommand("copy");
|
|
||||||
// success($q, "คัดลอกลิงค์สำเร็จ");
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/** function เรียกข้อมูลวันที่ประกาศ*/
|
||||||
async function fetchCheckDate() {
|
async function fetchCheckDate() {
|
||||||
evaluateId.value &&
|
evaluateId.value &&
|
||||||
(await http
|
(await http
|
||||||
|
|
@ -70,9 +69,10 @@ async function fetchCheckDate() {
|
||||||
endDate.setDate(endDate.getDate() + 30);
|
endDate.setDate(endDate.getDate() + 30);
|
||||||
dateEndAnnounce.value = date2Thai(endDate);
|
dateEndAnnounce.value = date2Thai(endDate);
|
||||||
})
|
})
|
||||||
.catch((err) => {}));
|
.catch(() => {}));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/** Hook lifecycle*/
|
||||||
onMounted(async () => {
|
onMounted(async () => {
|
||||||
fetchCheckDate();
|
fetchCheckDate();
|
||||||
await onClickfetchDocument("บันทึกแจ้งผลการประกาศคัดเลือก", "CHECK");
|
await onClickfetchDocument("บันทึกแจ้งผลการประกาศคัดเลือก", "CHECK");
|
||||||
|
|
@ -88,19 +88,9 @@ onMounted(async () => {
|
||||||
ประกาศเมื่อวันที่ {{ dateStartAnnounce }} ถึง {{ dateEndAnnounce }}
|
ประกาศเมื่อวันที่ {{ dateStartAnnounce }} ถึง {{ dateEndAnnounce }}
|
||||||
</div>
|
</div>
|
||||||
</q-banner>
|
</q-banner>
|
||||||
<!-- <q-badge
|
|
||||||
v-if="status == 'ANNOUNCE_WEB'"
|
|
||||||
outline
|
|
||||||
color="primary"
|
|
||||||
label="ประกาศบนเว็บไซต์"
|
|
||||||
class="q-pa-sm"
|
|
||||||
style="font-size: 16px"
|
|
||||||
/>
|
|
||||||
<div> -->
|
|
||||||
<!-- <a :href="website" target="_blank">{{ website }}</a> -->
|
|
||||||
<!-- </div> -->
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
<!-- เอกสารประกาศผลการคัดเลือกบุคคล -->
|
||||||
<div class="col-12">
|
<div class="col-12">
|
||||||
<q-card bordered style="border: 1px solid #d6dee1">
|
<q-card bordered style="border: 1px solid #d6dee1">
|
||||||
<div class="text-weight-medium bg-grey-1 q-py-sm q-px-md">
|
<div class="text-weight-medium bg-grey-1 q-py-sm q-px-md">
|
||||||
|
|
@ -133,6 +123,7 @@ onMounted(async () => {
|
||||||
</q-card>
|
</q-card>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
<!-- บันทึกแจ้งผลการประกาศคัดเลือก -->
|
||||||
<div class="col-12" v-if="statusFile">
|
<div class="col-12" v-if="statusFile">
|
||||||
<q-card bordered style="border: 1px solid #d6dee1">
|
<q-card bordered style="border: 1px solid #d6dee1">
|
||||||
<div class="text-weight-medium bg-grey-1 q-py-sm q-px-md">
|
<div class="text-weight-medium bg-grey-1 q-py-sm q-px-md">
|
||||||
|
|
|
||||||
|
|
@ -1,18 +1,23 @@
|
||||||
<script setup lang="ts">
|
<script setup lang="ts">
|
||||||
import { ref, reactive, watch, onMounted } from "vue";
|
import { ref, reactive, watch, onMounted } from "vue";
|
||||||
import keycloak from "@/plugins/keycloak";
|
|
||||||
import { useRoute } from "vue-router";
|
import { useRoute } from "vue-router";
|
||||||
|
import { useQuasar } from "quasar";
|
||||||
|
import keycloak from "@/plugins/keycloak";
|
||||||
import http from "@/plugins/http";
|
import http from "@/plugins/http";
|
||||||
import config from "@/app.config";
|
import config from "@/app.config";
|
||||||
import axios from "axios";
|
import axios from "axios";
|
||||||
import { useQuasar } from "quasar";
|
|
||||||
import ViewPDF from "@/modules/06_evaluate/components/viewstep/viewPDF.vue";
|
|
||||||
|
|
||||||
|
/** importType*/
|
||||||
import type { FormCommand } from "@/modules/06_evaluate/interface/evalute";
|
import type { FormCommand } from "@/modules/06_evaluate/interface/evalute";
|
||||||
|
|
||||||
|
/** importComponents*/
|
||||||
|
import ViewPDF from "@/modules/06_evaluate/components/viewstep/viewPDF.vue";
|
||||||
|
|
||||||
|
/** importStore*/
|
||||||
import { useCounterMixin } from "@/stores/mixin";
|
import { useCounterMixin } from "@/stores/mixin";
|
||||||
import { useEvaluateStore } from "@/modules/06_evaluate/store";
|
import { useEvaluateStore } from "@/modules/06_evaluate/store";
|
||||||
|
|
||||||
|
/** use*/
|
||||||
const $q = useQuasar();
|
const $q = useQuasar();
|
||||||
const store = useEvaluateStore();
|
const store = useEvaluateStore();
|
||||||
const mixins = useCounterMixin();
|
const mixins = useCounterMixin();
|
||||||
|
|
@ -20,17 +25,19 @@ const route = useRoute();
|
||||||
|
|
||||||
const { date2Thai, showLoader, hideLoader, messageError, success } = mixins;
|
const { date2Thai, showLoader, hideLoader, messageError, success } = mixins;
|
||||||
|
|
||||||
|
/** id ประเมิน*/
|
||||||
const evaluateId = ref<string>(route.params.id.toString());
|
const evaluateId = ref<string>(route.params.id.toString());
|
||||||
|
|
||||||
|
/** emit*/
|
||||||
const emit = defineEmits(["update:form"]);
|
const emit = defineEmits(["update:form"]);
|
||||||
|
|
||||||
const fileEvaluation1 = ref<any>();
|
const fileEvaluation1 = ref<any>();
|
||||||
const pdfSrc = ref<any>();
|
|
||||||
|
|
||||||
const performance = ref<string>("");
|
const performance = ref<string>("");
|
||||||
const performanceOwner = ref<string>("");
|
const performanceOwner = ref<string>("");
|
||||||
const position = ref<string>("");
|
const position = ref<string>("");
|
||||||
|
|
||||||
|
/** form จัดเตรียมเอกสารเล่ม 2*/
|
||||||
const formCommand = reactive<FormCommand>({
|
const formCommand = reactive<FormCommand>({
|
||||||
commanderFullname: "",
|
commanderFullname: "",
|
||||||
commanderPosition: "",
|
commanderPosition: "",
|
||||||
|
|
@ -40,7 +47,7 @@ const formCommand = reactive<FormCommand>({
|
||||||
subject: "",
|
subject: "",
|
||||||
assignedPosition: "",
|
assignedPosition: "",
|
||||||
});
|
});
|
||||||
|
/** ref input*/
|
||||||
const commanderFullnameRef = ref<object | null>(null);
|
const commanderFullnameRef = ref<object | null>(null);
|
||||||
const commanderPositionRef = ref<object | null>(null);
|
const commanderPositionRef = ref<object | null>(null);
|
||||||
const commanderAboveFullnameRef = ref<object | null>(null);
|
const commanderAboveFullnameRef = ref<object | null>(null);
|
||||||
|
|
@ -51,12 +58,9 @@ const performanceOwnerRef = ref<object | null>(null);
|
||||||
const assignedPositionRef = ref<object | null>(null);
|
const assignedPositionRef = ref<object | null>(null);
|
||||||
|
|
||||||
const modalView = ref<boolean>(false);
|
const modalView = ref<boolean>(false);
|
||||||
function onClickViewPDF(file: any) {
|
|
||||||
pdfSrc.value = file.webkitRelativePath;
|
|
||||||
modalView.value = true;
|
|
||||||
}
|
|
||||||
|
|
||||||
const updateInput = (value: any) => {
|
/** function อัปเดท ผลงาน,ผู้เซ็นเอกสาร*/
|
||||||
|
function updateInput(value: any) {
|
||||||
const ref = {
|
const ref = {
|
||||||
commanderFullnameRef: commanderFullnameRef.value,
|
commanderFullnameRef: commanderFullnameRef.value,
|
||||||
commanderPositionRef: commanderPositionRef.value,
|
commanderPositionRef: commanderPositionRef.value,
|
||||||
|
|
@ -69,8 +73,15 @@ const updateInput = (value: any) => {
|
||||||
assignedPosition: assignedPositionRef.value,
|
assignedPosition: assignedPositionRef.value,
|
||||||
};
|
};
|
||||||
emit("update:form", value, ref);
|
emit("update:form", value, ref);
|
||||||
};
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* function เรียก Path อัปโหลดไฟล์
|
||||||
|
* @param volume เล่ม
|
||||||
|
* @param id ประเมิน
|
||||||
|
* @param type ชือไฟล์
|
||||||
|
* @param file ไฟล์
|
||||||
|
*/
|
||||||
async function fetchPathUpload(
|
async function fetchPathUpload(
|
||||||
volume: string,
|
volume: string,
|
||||||
id: string | undefined,
|
id: string | undefined,
|
||||||
|
|
@ -108,6 +119,11 @@ async function fetchPathUpload(
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @param uploadUrl ลิงก์อัปโหลด
|
||||||
|
* @param file ไฟล์
|
||||||
|
*/
|
||||||
async function uploadfile(uploadUrl: string, file: any) {
|
async function uploadfile(uploadUrl: string, file: any) {
|
||||||
await axios
|
await axios
|
||||||
.put(uploadUrl, file, {
|
.put(uploadUrl, file, {
|
||||||
|
|
@ -124,6 +140,10 @@ async function uploadfile(uploadUrl: string, file: any) {
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* function เรียกข้อมูล ผลงาน,ผู้เช็นเอกสาร
|
||||||
|
* @param id ประเมิน
|
||||||
|
*/
|
||||||
async function fetcheSigner(id: string) {
|
async function fetcheSigner(id: string) {
|
||||||
showLoader();
|
showLoader();
|
||||||
await http
|
await http
|
||||||
|
|
@ -148,27 +168,24 @@ async function fetcheSigner(id: string) {
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
// const dateStartPrepareDoc2 = ref<string | null>(date2Thai(new Date()));
|
|
||||||
const dateEndPrepareDoc2 = ref<string | null>(date2Thai(new Date()));
|
const dateEndPrepareDoc2 = ref<string | null>(date2Thai(new Date()));
|
||||||
|
/** functoin เรียกข้อมูลวันสุดท้ายของการส่งผลงาน*/
|
||||||
async function fetchCheckDate() {
|
async function fetchCheckDate() {
|
||||||
evaluateId.value &&
|
evaluateId.value &&
|
||||||
(await http
|
(await http
|
||||||
.get(config.API.evaluationCheckDate(evaluateId.value))
|
.get(config.API.evaluationCheckDate(evaluateId.value))
|
||||||
.then((res) => {
|
.then((res) => {
|
||||||
const data = res.data.result;
|
const data = res.data.result;
|
||||||
// dateStartPrepareDoc2.value = date2Thai(data.dateStartPrepareDoc2);
|
|
||||||
const endDate = new Date(data.dateEndAnnounce);
|
const endDate = new Date(data.dateEndAnnounce);
|
||||||
endDate.setDate(endDate.getDate() + 180);
|
endDate.setDate(endDate.getDate() + 180);
|
||||||
dateEndPrepareDoc2.value = date2Thai(endDate);
|
dateEndPrepareDoc2.value = date2Thai(endDate);
|
||||||
// dateEndPrepareDoc2.value = data.dateEndPrepareDoc2
|
|
||||||
// ? date2Thai(data.dateEndPrepareDoc2)
|
|
||||||
// : dateEndPrepareDoc2.value;
|
|
||||||
})
|
})
|
||||||
.catch((err) => {}));
|
.catch((err) => {}));
|
||||||
}
|
}
|
||||||
|
|
||||||
const downloadUrl = ref<string>("");
|
const downloadUrl = ref<string>("");
|
||||||
|
/** function เช็คไฟล์อัปโหลด*/
|
||||||
function checkDoc() {
|
function checkDoc() {
|
||||||
showLoader();
|
showLoader();
|
||||||
http
|
http
|
||||||
|
|
@ -178,9 +195,7 @@ function checkDoc() {
|
||||||
.then((res: any) => {
|
.then((res: any) => {
|
||||||
downloadUrl.value = res.data.downloadUrl;
|
downloadUrl.value = res.data.downloadUrl;
|
||||||
})
|
})
|
||||||
// .catch((e) => {
|
.catch(() => {})
|
||||||
// messageError($q, e);
|
|
||||||
// })
|
|
||||||
.finally(() => {
|
.finally(() => {
|
||||||
hideLoader();
|
hideLoader();
|
||||||
const ref = {
|
const ref = {
|
||||||
|
|
@ -199,6 +214,7 @@ function checkDoc() {
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/** hook lifecycle*/
|
||||||
onMounted(async () => {
|
onMounted(async () => {
|
||||||
if (keycloak.tokenParsed != null) {
|
if (keycloak.tokenParsed != null) {
|
||||||
formCommand.author = keycloak.tokenParsed.name;
|
formCommand.author = keycloak.tokenParsed.name;
|
||||||
|
|
@ -208,8 +224,6 @@ onMounted(async () => {
|
||||||
fetcheSigner(evaluateId.value);
|
fetcheSigner(evaluateId.value);
|
||||||
}
|
}
|
||||||
await fetchCheckDate();
|
await fetchCheckDate();
|
||||||
|
|
||||||
// props.evaluateId && (await fetchPathUpload("เล่ม 2", props.evaluateId));
|
|
||||||
});
|
});
|
||||||
|
|
||||||
watch(
|
watch(
|
||||||
|
|
@ -240,6 +254,7 @@ watch(
|
||||||
</div>
|
</div>
|
||||||
</q-banner>
|
</q-banner>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<!-- ผลงาน -->
|
<!-- ผลงาน -->
|
||||||
<div class="col-12">
|
<div class="col-12">
|
||||||
<q-card bordered style="border: 1px solid #d6dee1">
|
<q-card bordered style="border: 1px solid #d6dee1">
|
||||||
|
|
@ -249,9 +264,6 @@ watch(
|
||||||
<div class="col-12 q-pa-sm">
|
<div class="col-12 q-pa-sm">
|
||||||
<div class="row q-col-gutter-md col-12">
|
<div class="row q-col-gutter-md col-12">
|
||||||
<div class="col-xs-12 col-sm-12 row">
|
<div class="col-xs-12 col-sm-12 row">
|
||||||
<!-- <div class="text-weight-medium q-py-sm">
|
|
||||||
ผู้บังคับบัญชาชั้นต้น
|
|
||||||
</div> -->
|
|
||||||
<div class="row col-12 q-col-gutter-md q-pa-sm">
|
<div class="row col-12 q-col-gutter-md q-pa-sm">
|
||||||
<q-input
|
<q-input
|
||||||
:readonly="store.currentStep != 6"
|
:readonly="store.currentStep != 6"
|
||||||
|
|
@ -299,6 +311,7 @@ watch(
|
||||||
</q-card>
|
</q-card>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
<!-- อัปไฟล์ -->
|
||||||
<div class="col-6" v-if="store.statusUpload && store.currentStep === 6">
|
<div class="col-6" v-if="store.statusUpload && store.currentStep === 6">
|
||||||
<q-card bordered style="border: 1px solid #d6dee1">
|
<q-card bordered style="border: 1px solid #d6dee1">
|
||||||
<div class="text-weight-medium bg-grey-1 q-py-sm q-px-md">
|
<div class="text-weight-medium bg-grey-1 q-py-sm q-px-md">
|
||||||
|
|
@ -308,17 +321,6 @@ watch(
|
||||||
<div class="row">
|
<div class="row">
|
||||||
<div class="col-12 q-pa-sm">
|
<div class="col-12 q-pa-sm">
|
||||||
<div class="row q-col-gutter-md col-12">
|
<div class="row q-col-gutter-md col-12">
|
||||||
<!-- <div class="col-xs-12 col-sm-6 row">
|
|
||||||
<q-btn
|
|
||||||
class="col-12"
|
|
||||||
outline
|
|
||||||
icon="download"
|
|
||||||
label="ดาวน์โหลดต้นแบบ"
|
|
||||||
color="primary"
|
|
||||||
>
|
|
||||||
<q-tooltip> ดาวน์โหลดต้นแบบ </q-tooltip></q-btn
|
|
||||||
>
|
|
||||||
</div> -->
|
|
||||||
<div class="col-xs-12 col-sm-6 row">
|
<div class="col-xs-12 col-sm-6 row">
|
||||||
<q-btn
|
<q-btn
|
||||||
v-if="downloadUrl"
|
v-if="downloadUrl"
|
||||||
|
|
@ -380,6 +382,7 @@ watch(
|
||||||
</q-card>
|
</q-card>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
<!-- เลือกผู้เซ็นเอกสาร -->
|
||||||
<div class="col-12">
|
<div class="col-12">
|
||||||
<q-card bordered style="border: 1px solid #d6dee1">
|
<q-card bordered style="border: 1px solid #d6dee1">
|
||||||
<div class="text-weight-medium bg-grey-1 q-py-sm q-px-md">
|
<div class="text-weight-medium bg-grey-1 q-py-sm q-px-md">
|
||||||
|
|
|
||||||
|
|
@ -1,33 +1,30 @@
|
||||||
<script setup lang="ts">
|
<script setup lang="ts">
|
||||||
import { onMounted, ref } from "vue";
|
import { onMounted, ref } from "vue";
|
||||||
import { useRoute } from "vue-router";
|
import { useRoute } from "vue-router";
|
||||||
|
import { useQuasar } from "quasar";
|
||||||
import http from "@/plugins/http";
|
import http from "@/plugins/http";
|
||||||
import config from "@/app.config";
|
import config from "@/app.config";
|
||||||
import { useQuasar } from "quasar";
|
|
||||||
import axios from "axios";
|
import axios from "axios";
|
||||||
|
|
||||||
|
/** importStroe*/
|
||||||
import { useCounterMixin } from "@/stores/mixin";
|
import { useCounterMixin } from "@/stores/mixin";
|
||||||
import { useEvaluateStore } from "@/modules/06_evaluate/store";
|
|
||||||
|
|
||||||
const store = useEvaluateStore();
|
/** use*/
|
||||||
const mixin = useCounterMixin();
|
const mixin = useCounterMixin();
|
||||||
const $q = useQuasar();
|
const $q = useQuasar();
|
||||||
const route = useRoute();
|
const route = useRoute();
|
||||||
|
|
||||||
const evaluateId = ref<string>(route.params.id.toString());
|
|
||||||
|
|
||||||
const { showLoader, hideLoader, messageError } = mixin;
|
const { showLoader, hideLoader, messageError } = mixin;
|
||||||
|
|
||||||
const props = defineProps({
|
/** emit*/
|
||||||
evaluateId: {
|
|
||||||
type: String,
|
|
||||||
},
|
|
||||||
});
|
|
||||||
|
|
||||||
const emit = defineEmits(["update:file"]);
|
const emit = defineEmits(["update:file"]);
|
||||||
|
|
||||||
|
/** id ประเมิน*/
|
||||||
|
const evaluateId = ref<string>(route.params.id.toString());
|
||||||
|
|
||||||
const selectedItem = ref(1);
|
const selectedItem = ref(1);
|
||||||
|
|
||||||
|
/** function เรีกยเอกสาร*/
|
||||||
async function fetchDocument() {
|
async function fetchDocument() {
|
||||||
showLoader();
|
showLoader();
|
||||||
evaluateId.value &&
|
evaluateId.value &&
|
||||||
|
|
@ -47,6 +44,10 @@ async function fetchDocument() {
|
||||||
}));
|
}));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* function ดาวน์โหลดไฟล์
|
||||||
|
* @param url ลิงก์ดาวน์โหลดไฟล์
|
||||||
|
*/
|
||||||
async function downloadFile(url: string) {
|
async function downloadFile(url: string) {
|
||||||
await axios
|
await axios
|
||||||
.get(url, {
|
.get(url, {
|
||||||
|
|
@ -69,6 +70,7 @@ async function downloadFile(url: string) {
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/** HooK lifecycle*/
|
||||||
onMounted(async () => {
|
onMounted(async () => {
|
||||||
await fetchDocument();
|
await fetchDocument();
|
||||||
});
|
});
|
||||||
|
|
|
||||||
|
|
@ -1,28 +1,27 @@
|
||||||
<script setup lang="ts">
|
<script setup lang="ts">
|
||||||
import { ref, onMounted } from "vue";
|
import { ref, onMounted } from "vue";
|
||||||
import { useRoute } from "vue-router";
|
import { useRoute } from "vue-router";
|
||||||
|
import { useQuasar } from "quasar";
|
||||||
import axios from "axios";
|
import axios from "axios";
|
||||||
import http from "@/plugins/http";
|
import http from "@/plugins/http";
|
||||||
import config from "@/app.config";
|
import config from "@/app.config";
|
||||||
import { useQuasar } from "quasar";
|
|
||||||
import genReport from "@/plugins/genreport";
|
import genReport from "@/plugins/genreport";
|
||||||
|
|
||||||
import TableDirector from "@/modules/06_evaluate/components/directorandmeet/Table.vue";
|
/** importStore*/
|
||||||
import { useEvaluateStore } from "@/modules/06_evaluate/store";
|
import { useEvaluateStore } from "@/modules/06_evaluate/store";
|
||||||
|
|
||||||
import { useCounterMixin } from "@/stores/mixin";
|
import { useCounterMixin } from "@/stores/mixin";
|
||||||
|
|
||||||
|
/**use*/
|
||||||
const store = useEvaluateStore();
|
const store = useEvaluateStore();
|
||||||
const $q = useQuasar();
|
const $q = useQuasar();
|
||||||
const mixin = useCounterMixin();
|
const mixin = useCounterMixin();
|
||||||
const route = useRoute();
|
const route = useRoute();
|
||||||
|
|
||||||
const { showLoader, hideLoader, messageError, success, date2Thai } = mixin;
|
const { showLoader, hideLoader, messageError, success } = mixin;
|
||||||
|
|
||||||
const evaluateId = ref<string>(route.params.id.toString());
|
const evaluateId = ref<string>(route.params.id.toString());
|
||||||
|
|
||||||
const status = ref<string>("WAIT_CHECK_DOC_V2");
|
const status = ref<string>("WAIT_CHECK_DOC_V2");
|
||||||
const tabMenu = ref<string>("director");
|
|
||||||
|
|
||||||
const fileEvaluationEdit = ref<any>();
|
const fileEvaluationEdit = ref<any>();
|
||||||
|
|
||||||
|
|
@ -31,11 +30,6 @@ const numOfPages = ref<number>(0);
|
||||||
const page = ref<number>(1);
|
const page = ref<number>(1);
|
||||||
const pdfSrc = ref<any>();
|
const pdfSrc = ref<any>();
|
||||||
|
|
||||||
function onClickViewPDF(file: any) {
|
|
||||||
pdfSrc.value = file.webkitRelativePath;
|
|
||||||
modalView.value = true;
|
|
||||||
}
|
|
||||||
|
|
||||||
/** ไปหน้าต่อไปของรายงาน */
|
/** ไปหน้าต่อไปของรายงาน */
|
||||||
function nextPage() {
|
function nextPage() {
|
||||||
if (page.value < numOfPages.value) {
|
if (page.value < numOfPages.value) {
|
||||||
|
|
@ -50,49 +44,13 @@ function backPage() {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
async function onClickDowloadFile(
|
/**
|
||||||
tp: string,
|
* function เรียก Path อัปโหลดไฟล์
|
||||||
templateName: string,
|
* @param volume เล่ม
|
||||||
fileName: string
|
* @param id ประเมิน
|
||||||
) {
|
* @param type ชือไฟล์
|
||||||
const body = {
|
* @param file ไฟล์
|
||||||
template: tp,
|
*/
|
||||||
reportName: templateName,
|
|
||||||
data: {},
|
|
||||||
};
|
|
||||||
await genReport(body, fileName);
|
|
||||||
}
|
|
||||||
|
|
||||||
// const directorList = ref<any>();
|
|
||||||
// const meetingList = ref<any>();
|
|
||||||
|
|
||||||
// async function fetchDirector() {
|
|
||||||
// showLoader();
|
|
||||||
// evaluateId.value &&
|
|
||||||
// (await http
|
|
||||||
// .get(config.API.evaluationDirectorMeetring(evaluateId.value))
|
|
||||||
// .then((res) => {
|
|
||||||
// const directors = res.data.result.directors;
|
|
||||||
// const meetings = res.data.result.meetings;
|
|
||||||
// directorList.value = directors.map((e: any) => ({
|
|
||||||
// fullName: `${e.prefix}${e.firstName} ${e.lastName}`,
|
|
||||||
// position: e.position ?? "-",
|
|
||||||
// email: e.email ?? "-",
|
|
||||||
// phone: e.phone ?? "-",
|
|
||||||
// }));
|
|
||||||
// meetingList.value = meetings.map((e: any) => ({
|
|
||||||
// fullName: `${e.Prefix}${e.FirstName} ${e.LastName}`,
|
|
||||||
// dateMeeting: `${date2Thai(e.dateStart)} - ${date2Thai(e.dateEnd)}`,
|
|
||||||
// result: e.result ?? "-",
|
|
||||||
// duration: e.duration ?? "-",
|
|
||||||
// }));
|
|
||||||
// })
|
|
||||||
// .catch((err) => {})
|
|
||||||
// .finally(() => {
|
|
||||||
// hideLoader();
|
|
||||||
// }));
|
|
||||||
// }
|
|
||||||
|
|
||||||
async function fetchPathUpload(
|
async function fetchPathUpload(
|
||||||
volume: string,
|
volume: string,
|
||||||
id: string | undefined,
|
id: string | undefined,
|
||||||
|
|
@ -123,6 +81,11 @@ async function fetchPathUpload(
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @param uploadUrl ลิงก์อัปโหลด
|
||||||
|
* @param file ไฟล์
|
||||||
|
*/
|
||||||
async function uploadfile(uploadUrl: string, file: any) {
|
async function uploadfile(uploadUrl: string, file: any) {
|
||||||
await axios
|
await axios
|
||||||
.put(uploadUrl, file, {
|
.put(uploadUrl, file, {
|
||||||
|
|
@ -139,6 +102,7 @@ async function uploadfile(uploadUrl: string, file: any) {
|
||||||
}
|
}
|
||||||
|
|
||||||
const downloadUrl = ref<string>("");
|
const downloadUrl = ref<string>("");
|
||||||
|
/** function เช็คไฟล์อัปโหลด*/
|
||||||
function checkDoc() {
|
function checkDoc() {
|
||||||
showLoader();
|
showLoader();
|
||||||
http
|
http
|
||||||
|
|
@ -152,17 +116,16 @@ function checkDoc() {
|
||||||
.then((res: any) => {
|
.then((res: any) => {
|
||||||
downloadUrl.value = res.data.downloadUrl;
|
downloadUrl.value = res.data.downloadUrl;
|
||||||
})
|
})
|
||||||
// .catch((e) => {
|
.catch((e) => {
|
||||||
// messageError($q, e);
|
// messageError($q, e);
|
||||||
// })
|
})
|
||||||
.finally(() => {
|
.finally(() => {
|
||||||
hideLoader();
|
hideLoader();
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
onMounted(async () => {
|
onMounted(async () => {
|
||||||
// await fetchDirector();
|
await checkDoc();
|
||||||
checkDoc();
|
|
||||||
});
|
});
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,41 +1,33 @@
|
||||||
<script setup lang="ts">
|
<script setup lang="ts">
|
||||||
import { ref } from "vue";
|
import { ref } from "vue";
|
||||||
import { useQuasar } from "quasar";
|
import { useQuasar } from "quasar";
|
||||||
|
|
||||||
import { useEvaluateStore } from "@/modules/06_evaluate/store";
|
|
||||||
import { useCounterMixin } from "@/stores/mixin";
|
|
||||||
import env from "@/api";
|
import env from "@/api";
|
||||||
|
|
||||||
|
/** importStore*/
|
||||||
|
import { useEvaluateStore } from "@/modules/06_evaluate/store";
|
||||||
|
import { useCounterMixin } from "@/stores/mixin";
|
||||||
|
|
||||||
|
/** use*/
|
||||||
const mixin = useCounterMixin();
|
const mixin = useCounterMixin();
|
||||||
const stroe = useEvaluateStore();
|
const stroe = useEvaluateStore();
|
||||||
const $q = useQuasar();
|
const $q = useQuasar();
|
||||||
|
|
||||||
const { success } = mixin;
|
const { success } = mixin;
|
||||||
|
|
||||||
const link = ref<string>(env.LINK_EVALUATE_PUBLISH);
|
const link = ref<string>(env.LINK_EVALUATE_PUBLISH);
|
||||||
|
|
||||||
|
/** function คัดลอกชื้่อลิงก์*/
|
||||||
function copyLink() {
|
function copyLink() {
|
||||||
const linkById = `${link.value}/${stroe.evaluateId}`;
|
const linkById = `${link.value}/${stroe.evaluateId}`;
|
||||||
navigator.clipboard.writeText(linkById);
|
navigator.clipboard.writeText(linkById);
|
||||||
success($q, "คัดลอกสำเร็จ");
|
success($q, "คัดลอกสำเร็จ");
|
||||||
}
|
}
|
||||||
|
|
||||||
// async function onClickCopyLink() {
|
|
||||||
// const textarea = document.createElement("textarea");
|
|
||||||
// textarea.value = link.value;
|
|
||||||
// document.body.appendChild(textarea);
|
|
||||||
// textarea.select();
|
|
||||||
// document.execCommand("copy");
|
|
||||||
// success($q, "คัดลอกลิงค์สำเร็จ");
|
|
||||||
// }
|
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<template>
|
<template>
|
||||||
<div class="row">
|
<div class="row">
|
||||||
<div class="col-12 text-center">
|
<div class="col-12 text-center">
|
||||||
<!-- <div> -->
|
|
||||||
<p class="text-weight-bold q-mb-none">Public URL</p>
|
<p class="text-weight-bold q-mb-none">Public URL</p>
|
||||||
<!-- <a :href="link + '/' + id" target="_blank">{{ `${link}/${id}` }}</a> -->
|
|
||||||
<!-- </div> -->
|
|
||||||
|
|
||||||
<q-btn
|
<q-btn
|
||||||
class="q-mt-md"
|
class="q-mt-md"
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,7 @@
|
||||||
<script setup lang="ts">
|
<script setup lang="ts">
|
||||||
import { ref, reactive, onMounted } from "vue";
|
import { reactive, onMounted } from "vue";
|
||||||
|
import { useRoute } from "vue-router";
|
||||||
import { useQuasar } from "quasar";
|
import { useQuasar } from "quasar";
|
||||||
import { useRouter, useRoute } from "vue-router";
|
|
||||||
import http from "@/plugins/http";
|
import http from "@/plugins/http";
|
||||||
import config from "@/app.config";
|
import config from "@/app.config";
|
||||||
|
|
||||||
|
|
@ -30,7 +30,7 @@ const {
|
||||||
|
|
||||||
const props = defineProps({
|
const props = defineProps({
|
||||||
data: {
|
data: {
|
||||||
type: Array,
|
type: Object,
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
@ -490,7 +490,9 @@ onMounted(async () => {
|
||||||
|
|
||||||
<q-card bordered style="border: 1px solid #d6dee1">
|
<q-card bordered style="border: 1px solid #d6dee1">
|
||||||
<div class="text-weight-bold row items-center bg-grey-2">
|
<div class="text-weight-bold row items-center bg-grey-2">
|
||||||
<span class="q-ml-lg q-my-sm">ผลงานที่เคยเสนอขอประเมิน (ถ้ามี)</span>
|
<span class="q-ml-lg q-my-sm"
|
||||||
|
>ผลงานที่เคยเสนอขอประเมิน (ถ้ามี)</span
|
||||||
|
>
|
||||||
</div>
|
</div>
|
||||||
<q-separator />
|
<q-separator />
|
||||||
<div class="row q-pa-sm">
|
<div class="row q-pa-sm">
|
||||||
|
|
|
||||||
|
|
@ -1,3 +1,29 @@
|
||||||
|
interface PersonInformation {
|
||||||
|
assessments: any[];
|
||||||
|
birthDate: string;
|
||||||
|
certificates: any[];
|
||||||
|
educations: EducationForm[];
|
||||||
|
experience: null | any;
|
||||||
|
fullName: string;
|
||||||
|
govAge: string;
|
||||||
|
isEducationalQft: boolean;
|
||||||
|
isGovermantServiceHtr: boolean;
|
||||||
|
isHaveMinPeriodOrHoldPos: boolean;
|
||||||
|
isHaveProLicense: boolean;
|
||||||
|
isHaveSpecificQft: boolean;
|
||||||
|
isMinPeriodOfTenure: boolean;
|
||||||
|
isOperatingExp: boolean;
|
||||||
|
oc: string;
|
||||||
|
posNo: string;
|
||||||
|
position: string;
|
||||||
|
positionLevel: string;
|
||||||
|
prefix: string;
|
||||||
|
salaries: any[];
|
||||||
|
salary: string;
|
||||||
|
trainings: any[];
|
||||||
|
type: string;
|
||||||
|
}
|
||||||
|
|
||||||
interface FormSpec {
|
interface FormSpec {
|
||||||
isEducationalQft: boolean;
|
isEducationalQft: boolean;
|
||||||
isGovermantServiceHtr: boolean;
|
isGovermantServiceHtr: boolean;
|
||||||
|
|
@ -67,6 +93,7 @@ interface ListMenu {
|
||||||
}
|
}
|
||||||
|
|
||||||
export type {
|
export type {
|
||||||
|
PersonInformation,
|
||||||
FormCommand,
|
FormCommand,
|
||||||
FormCommandRef,
|
FormCommandRef,
|
||||||
FormSpec,
|
FormSpec,
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue