This commit is contained in:
DESKTOP-1R2VSQH\Lenovo ThinkPad E490 2025-04-08 18:08:03 +07:00
parent 96ad297224
commit ddceed4e51
8 changed files with 614 additions and 91 deletions

View file

@ -0,0 +1,437 @@
divdivdiv
<script setup lang="ts">
import { ref, reactive, onMounted } from "vue";
import { useRouter, useRoute } from "vue-router";
import { useQuasar } from "quasar";
import http from "@/plugins/http";
import config from "@/app.config";
import { useCounterMixin } from "@/stores/mixin";
const $q = useQuasar();
const router = useRouter();
const route = useRoute();
const { messageError, showLoader, hideLoader } = useCounterMixin();
const evaluateId = ref<string>(route.params.id as string);
const formData = reactive<any>({
id: "",
subject: "", //
author: "", //
commanderFullname: "", //
commanderPosition: "", //
commanderAboveFullname: "", // 1
commanderAbovePosition: "", // 1
});
const downloadFile1 = ref<string>("");
const downloadFile2 = ref<string>("");
const downloadFile3 = ref<string>("");
const downloadFile4 = ref<string>("");
const downloadFile5 = ref<string>("");
const downloadFile6 = ref<string>("");
const subjectRef = ref<Object | null>(null);
const authorRef = ref<Object | null>(null);
const commanderFullnameRef = ref<Object | null>(null);
const commanderPositionRef = ref<Object | null>(null);
const commanderAboveFullnameRef = ref<Object | null>(null);
const commanderAbovePositionRef = ref<Object | null>(null);
/**
* function ดาวนโหลดไฟล
* @param fileName อไฟล
*/
async function downloadFile(fileName: string) {
await http
.get(
config.API.meetingFileDowloadbyId(
"ประเมินเชี่ยวชาญ",
evaluateId.value,
fileName
)
)
.then((res) => {
if (fileName === "1-แบบพิจารณาคุณสมบัติบุคคล") {
downloadFile1.value = res.data.downloadUrl;
} else if (fileName === "2-แบบแสดงรายละเอียดการเสนอผลงาน") {
downloadFile2.value = res.data.downloadUrl;
} else if (
fileName ===
"3-แบบตรวจสอบความถูกต้องครบถ้วนของข้อมูลเพื่อประกอบการคัดเลือกบุคคล (เอกสารแบบ ก)"
) {
downloadFile3.value = res.data.downloadUrl;
} else if (fileName === "4-แบบประเมินคุณลักษณะบุคคล") {
downloadFile4.value = res.data.downloadUrl;
} else if (
fileName === "5-แบบสรุปข้อมูลของผู้ขอรับการคัดเลือก (เอกสารหมายเลข 9)"
) {
downloadFile5.value = res.data.downloadUrl;
} else if (fileName === "6-ผลงานที่จะส่งประเมิน (เอกสารหมายเลข 11)") {
downloadFile6.value = res.data.downloadUrl;
}
});
}
async function fetchData() {
await http
.get(config.API.evaluationSigner(evaluateId.value, 1))
.then((res) => {
const data = res.data.result;
formData.id = data.id;
formData.commanderFullname = data.commanderFullname;
formData.commanderPosition = data.commanderPosition;
formData.commanderAboveFullname = data.commanderAboveFullname;
formData.commanderAbovePosition = data.commanderAbovePosition;
formData.author = data.author;
formData.subject = data.subject;
})
.catch((e) => {
messageError($q, e);
});
}
onMounted(async () => {
showLoader();
try {
await Promise.all([
fetchData(),
[
"1-แบบพิจารณาคุณสมบัติบุคคล",
"2-แบบแสดงรายละเอียดการเสนอผลงาน",
"3-แบบตรวจสอบความถูกต้องครบถ้วนของข้อมูลเพื่อประกอบการคัดเลือกบุคคล (เอกสารแบบ ก)",
"4-แบบประเมินคุณลักษณะบุคคล",
"5-แบบสรุปข้อมูลของผู้ขอรับการคัดเลือก (เอกสารหมายเลข 9)",
"6-ผลงานที่จะส่งประเมิน (เอกสารหมายเลข 11)",
].forEach((fileName) => downloadFile(fileName)),
]);
} catch (err) {
messageError($q, err);
} finally {
hideLoader();
}
});
</script>
<template>
<div class="col-xs-12 col-sm-12 col-md-11">
<div class="toptitle col-12 row items-center">
<q-btn
icon="mdi-arrow-left"
unelevated
round
dense
flat
color="primary"
class="q-mr-sm"
@click="router.go(-1)"
/>
<div>ประเมนเชยวชาญ</div>
</div>
</div>
<div class="col-xs-12 col-sm-12 col-md-11 row q-col-gutter-md">
<div class="col-12">
<q-card bordered>
<div class="col-12 row q-pa-md q-col-gutter-y-md">
<div class="col-12">
<q-card bordered class="col-12">
<div class="text-weight-medium bg-grey-1 col-12 q-py-sm q-px-md">
ผลงาน
<br />
</div>
<div class="col-12"><q-separator /></div>
<div class="col-12 q-pa-sm">
<div class="row q-col-gutter-sm">
<q-input
ref="subjectRef"
dense
readonly
class="col-xs-12 col-sm-6"
outlined
label="ชื่อผลงาน"
v-model="formData.subject"
:rules="[(val:string) => !!val || `${'กรุณากรอกชื่อผลงาน'}`]"
lazy-rules
hide-bottom-space
/>
<q-input
ref="authorRef"
class="col-xs-12 col-sm-6"
dense
readonly
outlined
v-model="formData.author"
label="เจ้าของผลงาน"
:rules="[
(val:string) => !!val || `${'กรุณากรอกเจ้าของผลงาน'}`,
]"
lazy-rules
hide-bottom-space
/>
</div>
</div>
</q-card>
</div>
<!-- เลอกผเซนเอกสาร -->
<div class="col-12">
<q-card bordered class="col-12">
<div class="text-weight-medium bg-grey-1 q-py-sm q-px-md">
เลอกผเซนเอกสาร
</div>
<div class="col-12"><q-separator /></div>
<div class="col-12 q-pa-sm">
<div class="row q-col-gutter-sm">
<div class="col-xs-12 col-sm-12 row">
<div class="text-weight-medium q-pt-xs q-pl-sm">
งคบบญชาชนต
</div>
<div class="row col-12 q-col-gutter-sm q-pa-sm">
<q-input
ref="commanderFullnameRef"
dense
class="col-xs-12 col-sm-6"
readonly
outlined
label="ชื่อ-นามสกุล"
v-model="formData.commanderFullname"
:rules="[
(val:string) => !!val || `${'กรุณากรอกชื่อ-นามสกุล'}`,
]"
lazy-rules
hide-bottom-space
/>
<q-input
ref="commanderPositionRef"
class="col-xs-12 col-sm-6"
readonly
dense
outlined
v-model="formData.commanderPosition"
label="ตำแหน่ง"
:rules="[(val:string) => !!val || `${'กรุณากรอกตำแหน่ง'}`]"
lazy-rules
hide-bottom-space
/>
</div>
</div>
</div>
<div class="row q-col-gutter-sm col-12">
<div class="col-xs-12 col-sm-12 row">
<div class="text-weight-medium q-pl-sm q-pt-sm">
งคบบญชาเหนอขนไป 1 ระด
</div>
<div class="row col-12 q-col-gutter-md q-pa-sm">
<q-input
ref="commanderAboveFullnameRef"
dense
class="col-xs-12 col-sm-6"
outlined
readonly
v-model="formData.commanderAboveFullname"
label="ชื่อ-นามสกุล"
:rules="[
(val:string) => !!val || `${'กรุณากรอกชื่อ-นามสกุล'}`,
]"
lazy-rules
hide-bottom-space
/>
<q-input
ref="commanderAbovePositionRef"
class="col-xs-12 col-sm-6"
dense
readonly
outlined
v-model="formData.commanderAbovePosition"
label="ตำแหน่ง"
:rules="[(val:string) => !!val || `${'กรุณากรอกตำแหน่ง'}`]"
lazy-rules
hide-bottom-space
/>
</div>
</div>
</div>
</div>
</q-card>
</div>
<div class="col-12">
<div class="row q-col-gutter-sm">
<!-- แบบพจารณาคณสมบคคล -->
<div class="col-6">
<q-card bordered>
<div
class="text-weight-medium bg-grey-1 q-py-sm q-pl-md q-pr-sm col-12 row items-center"
>
<div>แบบพจารณาคณสมบคคล</div>
<q-space />
<div>
<q-btn
v-if="downloadFile1 != ''"
:href="downloadFile1"
target="_blank"
class="q-ml-sm"
color="blue"
flat
dense
icon="visibility"
>
<q-tooltip> ไฟลเอกสาร </q-tooltip></q-btn
>
</div>
</div>
<div class="col-12"><q-separator /></div>
</q-card>
</div>
<!-- แบบแสดงรายละเอยดการเสนอผลงาน -->
<div class="col-6">
<q-card bordered>
<div
class="text-weight-medium bg-grey-1 q-py-sm q-pl-md q-pr-sm col-12 row items-center"
>
<div>แบบแสดงรายละเอยดการเสนอผลงาน</div>
<q-space />
<div>
<q-btn
v-if="downloadFile2 != ''"
:href="downloadFile2"
target="_blank"
class="q-ml-sm"
color="blue"
flat
dense
icon="visibility"
>
<q-tooltip> ไฟลเอกสาร </q-tooltip></q-btn
>
</div>
</div>
<div class="col-12"><q-separator /></div>
</q-card>
</div>
<!-- แบบตรวจสอบความถกตองครบถวนของขอมลเพอประกอบการคดเลอกบคคล (เอกสารแบบ ) -->
<div class="col-6">
<q-card bordered>
<div
class="col-12 row text-weight-medium bg-grey-1 q-py-sm q-pl-md q-pr-sm no-wrap"
>
<div>
แบบตรวจสอบความถกตองครบถวนของขอมลเพอประกอบการคดเลอกบคคล
(เอกสารแบบ .)
</div>
<q-space />
<div v-if="downloadFile3 != ''">
<q-btn
:href="downloadFile3"
target="_blank"
flat
dense
icon="visibility"
class="q-ml-sm"
color="blue"
>
<q-tooltip> ไฟลเอกสาร </q-tooltip></q-btn
>
</div>
</div>
<div class="col-12"><q-separator /></div>
</q-card>
</div>
<!-- แบบสรปขอมลของผขอรบการคดเลอก (เอกสารหมายเลข 9) -->
<div class="col-6">
<q-card bordered>
<div
class="col-12 row text-weight-medium bg-grey-1 q-py-sm q-pl-md q-pr-sm no-wrap"
>
<div class="col-7">
แบบสรปขอมลของผขอรบการคดเลอก (เอกสารหมายเลข 9)
</div>
<q-space />
<div>
<q-btn
v-if="downloadFile5 != ''"
:href="downloadFile5"
target="_blank"
flat
dense
icon="visibility"
class="q-ml-sm"
color="blue"
>
<q-tooltip> ไฟลเอกสาร </q-tooltip></q-btn
>
</div>
</div>
<div class="col-12"><q-separator /></div>
</q-card>
</div>
<!-- แบบประเมนคณลกษณะบคคล -->
<div class="col-6">
<q-card bordered>
<div
class="col-12 row text-weight-medium bg-grey-1 q-py-sm q-pl-md q-pr-sm items-center"
>
<div>แบบประเมนคณลกษณะบคคล</div>
<q-space />
<div>
<q-btn
v-if="downloadFile4 != ''"
:href="downloadFile4"
target="_blank"
flat
dense
icon="visibility"
class="q-ml-sm"
color="blue"
>
<q-tooltip> ไฟลเอกสาร </q-tooltip></q-btn
>
</div>
</div>
<div class="col-12"><q-separator /></div>
</q-card>
</div>
<!--ผลงานทจะสงประเม (เอกสารหมายเลข 11) -->
<div class="col-6">
<q-card bordered>
<div
class="col-12 row text-weight-medium bg-grey-1 q-py-sm q-pl-md q-pr-sm items-center"
>
<div>ผลงานทจะสงประเม (เอกสารหมายเลข 11)</div>
<q-space />
<div>
<q-btn
v-if="downloadFile6 != ''"
:href="downloadFile6"
target="_blank"
flat
dense
icon="visibility"
class="q-ml-sm"
color="blue"
>
<q-tooltip> ไฟลเอกสาร </q-tooltip></q-btn
>
</div>
</div>
<div class="col-12"><q-separator /></div>
</q-card>
</div>
</div>
</div>
</div>
</q-card>
</div>
</div>
</template>

View file

@ -43,7 +43,7 @@ const page = ref<number>(1); //หน้า
const total = ref<number>(0); //
const filter = ref<string>(""); //
const pageSize = ref<number>(10); //
const filterRef = ref<HTMLInputElement | null>(null);
//
const selectedStatus = ref<string[]>([
"CHECK_SPEC",
@ -95,17 +95,6 @@ function filterFn() {
fetchEvaluteList();
}
/**
* functrion างคนหาD
*/
function resetFilter() {
filter.value = "";
fetchEvaluteList();
if (filterRef.value) {
filterRef.value.focus();
}
}
/**
* function เรยกรายการคำขอประเมนD
*/
@ -137,8 +126,13 @@ async function fetchEvaluteList() {
* funcition redirectToDetail
* @param id รายการคำขอประเม
*/
function Detailpage(id: string) {
router.push(`/evaluate/detail/${id}`);
function Detailpage(id: string, type: string) {
//
if (type === "EXPERTISE") {
router.push(`/evaluate/detail-expertise/${id}`);
} else {
router.push(`/evaluate/detail/${id}`);
}
}
/**
@ -378,7 +372,7 @@ onMounted(async () => {
round
color="info"
icon="mdi-eye"
@click.stop.prevent="Detailpage(props.row.id)"
@click.stop.prevent="Detailpage(props.row.id, props.row.type)"
>
<q-tooltip>รายละเอยด</q-tooltip>
</q-btn>