ประเมินบบุคคล => permission คำขอประเมิน

This commit is contained in:
DESKTOP-1R2VSQH\Lenovo ThinkPad E490 2024-08-05 09:49:09 +07:00
parent d3b2733ad5
commit 5d83ef2e4f
5 changed files with 316 additions and 234 deletions

View file

@ -1,5 +1,6 @@
<script setup lang="ts"> <script setup lang="ts">
import { ref, onMounted } from "vue"; import { ref, onMounted } from "vue";
import { checkPermission } from "@/utils/permissions";
import { useRoute } from "vue-router"; import { useRoute } from "vue-router";
import { useQuasar } from "quasar"; import { useQuasar } from "quasar";
import axios from "axios"; import axios from "axios";
@ -429,14 +430,14 @@ onMounted(async () => {
</div> </div>
<!-- ประกาศผลการคดเลอกบคคล (เอกสารหมายเลข 10) --> <!-- ประกาศผลการคดเลอกบคคล (เอกสารหมายเลข 10) -->
<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 <div
class="text-weight-medium row col-12 bg-grey-1 q-py-sm q-px-md items-center" class="text-weight-medium row col-12 bg-grey-1 q-py-sm q-px-md items-center"
> >
<div>ประกาศผลการคดเลอกบคคล (เอกสารหมายเลข 10)</div> <div>ประกาศผลการคดเลอกบคคล (เอกสารหมายเลข 10)</div>
<q-space /> <q-space />
<div v-if="store.currentStep == 4"> <div v-if="store.currentStep == 4 ">
<q-btn <q-btn
icon="download" icon="download"
color="indigo" color="indigo"
@ -472,7 +473,7 @@ onMounted(async () => {
</div> </div>
<div class="col-12" v-if="store.currentStep == 4"><q-separator /></div> <div class="col-12" v-if="store.currentStep == 4"><q-separator /></div>
<div class="row"> <div class="row">
<div class="col-12 q-pa-sm" v-if="store.currentStep == 4"> <div class="col-12 q-pa-sm" v-if="store.currentStep == 4 && checkPermission($route)?.attrIsUpdate">
<q-file <q-file
ref="fileEvaluationUploadRef" ref="fileEvaluationUploadRef"
v-model="fileEvaluationUpload" v-model="fileEvaluationUpload"
@ -507,7 +508,7 @@ onMounted(async () => {
</div> </div>
<!-- ดตอผขอประเม --> <!-- ดตอผขอประเม -->
<div class="col-12" v-if="store.currentStep == 4"> <div class="col-12" v-if="store.currentStep == 4 && checkPermission($route)?.attrIsUpdate">
<div class="q-mt-xs q-gutter-md" align="right"> <div class="q-mt-xs q-gutter-md" align="right">
<q-btn label="ติดต่อผู้ขอประเมิน" color="info" @click="openPopUp" /> <q-btn label="ติดต่อผู้ขอประเมิน" color="info" @click="openPopUp" />
<q-btn <q-btn

View file

@ -1,6 +1,7 @@
<script setup lang="ts"> <script setup lang="ts">
import { ref, onMounted } from "vue"; import { ref, onMounted } from "vue";
import { useCounterMixin } from "@/stores/mixin"; import { useCounterMixin } from "@/stores/mixin";
import { checkPermission } from "@/utils/permissions";
import { useQuasar } from "quasar"; import { useQuasar } from "quasar";
import { useRoute } from "vue-router"; import { useRoute } from "vue-router";
import axios from "axios"; import axios from "axios";
@ -307,6 +308,7 @@ onMounted(async () => {
</q-list> </q-list>
</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 <div
@ -331,7 +333,10 @@ onMounted(async () => {
</div> </div>
</div> </div>
<div class="col-12" v-if="store.currentStep == 5"><q-separator /></div> <div class="col-12" v-if="store.currentStep == 5"><q-separator /></div>
<div class="col-12 q-pa-sm" v-if="store.currentStep == 5"> <div
class="col-12 q-pa-sm"
v-if="store.currentStep == 5 && checkPermission($route)?.attrIsUpdate"
>
<q-file <q-file
ref="fileEvaluation5Ref" ref="fileEvaluation5Ref"
v-model="fileEvaluation5" v-model="fileEvaluation5"
@ -365,7 +370,10 @@ onMounted(async () => {
</q-card> </q-card>
</div> </div>
<div class="col-12" v-if="store.currentStep == 5"> <div
class="col-12"
v-if="store.currentStep == 5 && checkPermission($route)?.attrIsUpdate"
>
<div class="q-mr-sm" align="right"> <div class="q-mr-sm" align="right">
<q-btn <q-btn
unelevated unelevated

View file

@ -1,5 +1,6 @@
<script setup lang="ts"> <script setup lang="ts">
import { onMounted, ref } from "vue"; import { onMounted, ref } from "vue";
import { checkPermission } from "@/utils/permissions";
import { useRoute } from "vue-router"; import { useRoute } from "vue-router";
import { useQuasar } from "quasar"; import { useQuasar } from "quasar";
import axios from "axios"; import axios from "axios";
@ -371,17 +372,20 @@ onMounted(async () => {
<div class="row q-col-gutter-sm col-12"> <div class="row q-col-gutter-sm col-12">
<div class="col-6"> <div class="col-6">
<q-card bordered style="border: 1px solid #d6dee1"> <q-card bordered style="border: 1px solid #d6dee1">
<div class="col-12 row items-center text-weight-medium bg-grey-1 q-py-sm q-px-sm"> <div
class="col-12 row items-center text-weight-medium bg-grey-1 q-py-sm q-px-sm"
>
<div class="col-xs-12 col-sm-9"> <div class="col-xs-12 col-sm-9">
แบบตรวจสอบความถกตองครบถวนของขอมลประกอบการประเมนผลงาน แบบตรวจสอบความถกตองครบถวนของขอมลประกอบการประเมนผลงาน
(เอกสารแบบ ) (เอกสารแบบ )
</div> </div>
<q-space/> <q-space />
<div class="col-xs-12 col-sm-3 row justify-end"> <div class="col-xs-12 col-sm-3 row justify-end">
<div v-if="store.currentStep == 8"> <div v-if="store.currentStep == 8">
<q-btn <q-btn
class="col-12" class="col-12"
flat dense flat
dense
icon="download" icon="download"
color="indigo" color="indigo"
@click=" @click="
@ -411,8 +415,16 @@ onMounted(async () => {
</div> </div>
</div> </div>
</div> </div>
<div class="col-12" v-if="store.currentStep == 8"><q-separator /></div> <div class="col-12" v-if="store.currentStep == 8">
<div class="row col-12 q-pa-sm" v-if="store.currentStep == 8"> <q-separator />
</div>
<div
class="row col-12 q-pa-sm"
v-if="
store.currentStep == 8 &&
checkPermission($route)?.attrIsUpdate
"
>
<div class="row col-12"> <div class="row col-12">
<q-file <q-file
ref="fileEvaluation81Ref" ref="fileEvaluation81Ref"
@ -448,27 +460,28 @@ onMounted(async () => {
" "
><q-tooltip>ปโหลดไฟล</q-tooltip></q-btn ><q-tooltip>ปโหลดไฟล</q-tooltip></q-btn
> >
</template> </template>
</q-file> </q-file>
</div> </div>
</div> </div>
</q-card> </q-card>
</div> </div>
<div class="col-6"> <div class="col-6">
<q-card bordered style="border: 1px solid #d6dee1"> <q-card bordered style="border: 1px solid #d6dee1">
<div class="col-12 row items-center text-weight-medium bg-grey-1 q-py-sm q-px-sm"> <div
class="col-12 row items-center text-weight-medium bg-grey-1 q-py-sm q-px-sm"
>
<div class="col-xs-12 col-sm-9"> <div class="col-xs-12 col-sm-9">
ญชแสดงการร-งผลงาน (เอกสารหมายเลข 15) ญชแสดงการร-งผลงาน (เอกสารหมายเลข 15)
</div> </div>
<q-space/> <q-space />
<div class="col-xs-12 col-sm-3 row justify-end"> <div class="col-xs-12 col-sm-3 row justify-end">
<div <div v-if="store.currentStep == 8">
v-if="store.currentStep == 8"
>
<q-btn <q-btn
class="col-12" class="col-12"
flat dense flat
dense
icon="download" icon="download"
color="indigo" color="indigo"
@click=" @click="
@ -488,7 +501,8 @@ onMounted(async () => {
:href="downloadFile2" :href="downloadFile2"
target="_blank" target="_blank"
class="col-12" class="col-12"
flat dense flat
dense
icon="visibility" icon="visibility"
color="blue" color="blue"
> >
@ -497,8 +511,16 @@ onMounted(async () => {
</div> </div>
</div> </div>
</div> </div>
<div class="col-12" v-if="store.currentStep == 8"><q-separator /></div> <div class="col-12" v-if="store.currentStep == 8">
<div class="col-12 q-pa-sm" v-if="store.currentStep == 8"> <q-separator />
</div>
<div
class="col-12 q-pa-sm"
v-if="
store.currentStep == 8 &&
checkPermission($route)?.attrIsUpdate
"
>
<div class="row col-12"> <div class="row col-12">
<q-file <q-file
ref="fileEvaluation82Ref" ref="fileEvaluation82Ref"
@ -540,13 +562,16 @@ onMounted(async () => {
</div> </div>
</q-card> </q-card>
</div> </div>
<div class="col-6"> <div class="col-6">
<q-card bordered style="border: 1px solid #d6dee1"> <q-card bordered style="border: 1px solid #d6dee1">
<div class="col-12 row items-center text-weight-medium bg-grey-1 q-py-sm q-px-sm"> <div
class="col-12 row items-center text-weight-medium bg-grey-1 q-py-sm q-px-sm"
>
<div class="col-xs-12 col-sm-9"> <div class="col-xs-12 col-sm-9">
แบบประเมนผลงาน (เอกสารหมายเลข 16) แบบประเมนผลงาน (เอกสารหมายเลข 16)
</div> </div>
<q-space/> <q-space />
<div class="col-xs-12 col-sm-3 row justify-end"> <div class="col-xs-12 col-sm-3 row justify-end">
<div v-if="store.currentStep == 8"> <div v-if="store.currentStep == 8">
<q-btn <q-btn
@ -572,7 +597,8 @@ onMounted(async () => {
:href="downloadFile3" :href="downloadFile3"
target="_blank" target="_blank"
class="col-12" class="col-12"
flat dense flat
dense
icon="visibility" icon="visibility"
color="blue" color="blue"
> >
@ -581,8 +607,16 @@ onMounted(async () => {
</div> </div>
</div> </div>
</div> </div>
<div class="col-12" v-if="store.currentStep == 8"><q-separator /></div> <div class="col-12" v-if="store.currentStep == 8">
<div class="col-12 q-pa-sm" v-if="store.currentStep == 8"> <q-separator />
</div>
<div
class="col-12 q-pa-sm"
v-if="
store.currentStep == 8 &&
checkPermission($route)?.attrIsUpdate
"
>
<div class="row col-12"> <div class="row col-12">
<q-file <q-file
ref="fileEvaluation83Ref" ref="fileEvaluation83Ref"
@ -626,18 +660,19 @@ onMounted(async () => {
</div> </div>
<div class="col-6"> <div class="col-6">
<q-card bordered style="border: 1px solid #d6dee1"> <q-card bordered style="border: 1px solid #d6dee1">
<div class="col-12 row items-center text-weight-medium bg-grey-1 q-py-sm q-px-sm"> <div
class="col-12 row items-center text-weight-medium bg-grey-1 q-py-sm q-px-sm"
>
<div class="col-xs-12 col-sm-9"> <div class="col-xs-12 col-sm-9">
แบบแสดงการประเมนผลงาน (เอกสารหมายเลข 17) แบบแสดงการประเมนผลงาน (เอกสารหมายเลข 17)
</div> </div>
<q-space/> <q-space />
<div class="col-xs-12 col-sm-3 row justify-end"> <div class="col-xs-12 col-sm-3 row justify-end">
<div <div v-if="store.currentStep == 8">
v-if="store.currentStep == 8"
>
<q-btn <q-btn
class="col-12" class="col-12"
flat dense flat
dense
icon="download" icon="download"
color="indigo" color="indigo"
@click=" @click="
@ -657,7 +692,8 @@ onMounted(async () => {
:href="downloadFile4" :href="downloadFile4"
target="_blank" target="_blank"
class="col-12" class="col-12"
flat dense flat
dense
icon="visibility" icon="visibility"
color="blue" color="blue"
> >
@ -666,8 +702,16 @@ onMounted(async () => {
</div> </div>
</div> </div>
</div> </div>
<div class="col-12" v-if="store.currentStep == 8"><q-separator /></div> <div class="col-12" v-if="store.currentStep == 8">
<div class="col-12 q-pa-sm" v-if="store.currentStep == 8"> <q-separator />
</div>
<div
class="col-12 q-pa-sm"
v-if="
store.currentStep == 8 &&
checkPermission($route)?.attrIsUpdate
"
>
<div class="row col-12"> <div class="row col-12">
<q-file <q-file
ref="fileEvaluation84Ref" ref="fileEvaluation84Ref"
@ -711,18 +755,19 @@ onMounted(async () => {
</div> </div>
<div class="col-6"> <div class="col-6">
<q-card bordered style="border: 1px solid #d6dee1"> <q-card bordered style="border: 1px solid #d6dee1">
<div class="col-12 row items-center text-weight-medium bg-grey-1 q-py-sm q-px-sm"> <div
class="col-12 row items-center text-weight-medium bg-grey-1 q-py-sm q-px-sm"
>
<div class="col-xs-12 col-sm-9"> <div class="col-xs-12 col-sm-9">
แบบรายงานผลการประเมนบคคล (เอกสารหมายเลข 18) แบบรายงานผลการประเมนบคคล (เอกสารหมายเลข 18)
</div> </div>
<q-space/> <q-space />
<div class="col-xs-12 col-sm-3 row justify-end"> <div class="col-xs-12 col-sm-3 row justify-end">
<div <div v-if="store.currentStep == 8">
v-if="store.currentStep == 8"
>
<q-btn <q-btn
class="col-12" class="col-12"
flat dense flat
dense
icon="download" icon="download"
color="indigo" color="indigo"
@click=" @click="
@ -742,7 +787,8 @@ onMounted(async () => {
:href="downloadFile5" :href="downloadFile5"
target="_blank" target="_blank"
class="col-12" class="col-12"
flat dense flat
dense
icon="visibility" icon="visibility"
color="blue" color="blue"
> >
@ -751,8 +797,16 @@ onMounted(async () => {
</div> </div>
</div> </div>
</div> </div>
<div class="col-12" v-if="store.currentStep == 8"><q-separator /></div> <div class="col-12" v-if="store.currentStep == 8">
<div class="col-12 q-pa-sm" v-if="store.currentStep == 8"> <q-separator />
</div>
<div
class="col-12 q-pa-sm"
v-if="
store.currentStep == 8 &&
checkPermission($route)?.attrIsUpdate
"
>
<div class="row q-col-gutter-md col-12"> <div class="row q-col-gutter-md col-12">
<div class="row col-12"> <div class="row col-12">
<q-file <q-file
@ -798,15 +852,18 @@ onMounted(async () => {
</div> </div>
<div class="col-6"> <div class="col-6">
<q-card bordered style="border: 1px solid #d6dee1"> <q-card bordered style="border: 1px solid #d6dee1">
<div class="col-12 row items-center text-weight-medium bg-grey-1 q-py-sm q-px-sm"> <div
class="col-12 row items-center text-weight-medium bg-grey-1 q-py-sm q-px-sm"
>
<div class="col-xs-12 col-sm-9"> <div class="col-xs-12 col-sm-9">
แบบสรปผลการประเม (เอกสารแบบ ) แบบสรปผลการประเม (เอกสารแบบ )
</div> </div>
<q-space/> <q-space />
<div class="col-xs-12 col-sm-3 row justify-end"> <div class="col-xs-12 col-sm-3 row justify-end">
<div v-if="store.currentStep == 8"> <div v-if="store.currentStep == 8">
<q-btn <q-btn
flat dense flat
dense
icon="download" icon="download"
color="indigo" color="indigo"
@click=" @click="
@ -826,7 +883,8 @@ onMounted(async () => {
:href="downloadFile6" :href="downloadFile6"
target="_blank" target="_blank"
class="col-12" class="col-12"
flat dense flat
dense
icon="visibility" icon="visibility"
color="blue" color="blue"
> >
@ -835,8 +893,16 @@ onMounted(async () => {
</div> </div>
</div> </div>
</div> </div>
<div class="col-12" v-if="store.currentStep == 8"><q-separator /></div> <div class="col-12" v-if="store.currentStep == 8">
<div class="col-12 q-pa-sm" v-if="store.currentStep == 8"> <q-separator />
</div>
<div
class="col-12 q-pa-sm"
v-if="
store.currentStep == 8 &&
checkPermission($route)?.attrIsUpdate
"
>
<div class="row col-12"> <div class="row col-12">
<q-file <q-file
ref="fileEvaluation86Ref" ref="fileEvaluation86Ref"
@ -884,9 +950,11 @@ onMounted(async () => {
</div> </div>
<div v-if="downloadDocEditUrl != ''" class="col-12"> <div v-if="downloadDocEditUrl != ''" class="col-12">
<q-card bordered style="border: 1px solid #d6dee1"> <q-card bordered style="border: 1px solid #d6dee1">
<div class="col-12 row items-center text-weight-medium bg-grey-1 q-py-sm q-px-md"> <div
class="col-12 row items-center text-weight-medium bg-grey-1 q-py-sm q-px-md"
>
<div>เอกสารเล 2 (ฉบบแกไข)</div> <div>เอกสารเล 2 (ฉบบแกไข)</div>
<q-space/> <q-space />
<div v-if="downloadDocEditUrl !== ''"> <div v-if="downloadDocEditUrl !== ''">
<q-btn <q-btn
:href="downloadDocEditUrl" :href="downloadDocEditUrl"
@ -904,7 +972,10 @@ onMounted(async () => {
</q-card> </q-card>
</div> </div>
<div v-if="store.currentStep == 8" class="col-12"> <div
v-if="store.currentStep == 8 && checkPermission($route)?.attrIsUpdate"
class="col-12"
>
<div align="right"> <div align="right">
<q-btn <q-btn
unelevated unelevated

View file

@ -1,5 +1,6 @@
<script setup lang="ts"> <script setup lang="ts">
import { ref, onMounted, defineProps, watch } from "vue"; import { ref, defineProps, watch } from "vue";
import { checkPermission } from "@/utils/permissions";
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 { useQuasar } from "quasar";
@ -93,12 +94,12 @@ const listDirector = ref<any>([]);
async function onClickAdd() { async function onClickAdd() {
modalAddDirector.value = true; modalAddDirector.value = true;
getList() getList();
} }
function onClickClose() { function onClickClose() {
modalAddDirector.value = false; modalAddDirector.value = false;
props.fetchdata() props.fetchdata();
} }
/** /**
@ -155,9 +156,9 @@ async function getList() {
prefix: item.prefix, prefix: item.prefix,
firstName: item.firstName, firstName: item.firstName,
lastName: item.lastName, lastName: item.lastName,
phone: item.phone == '' ? '-' : item.phone, phone: item.phone == "" ? "-" : item.phone,
email: item.email == '' ? '-' : item.email, email: item.email == "" ? "-" : item.email,
position: item.position == '' ? '-' : item.position, position: item.position == "" ? "-" : item.position,
})); }));
}) })
.catch((e) => { .catch((e) => {
@ -177,15 +178,14 @@ watch(
prefix: item.prefix, prefix: item.prefix,
firstName: item.firstName, firstName: item.firstName,
lastName: item.lastName, lastName: item.lastName,
phone: item.phone == '' ? '-' : item.phone, phone: item.phone == "" ? "-" : item.phone,
email: item.email == '' ? '-' : item.email, email: item.email == "" ? "-" : item.email,
position: item.position == '' ? '-' : item.position, position: item.position == "" ? "-" : item.position,
positionName: item.positionName == '-' ? '-' : item.positionName, positionName: item.positionName == "-" ? "-" : item.positionName,
})); }));
} }
} }
); );
</script> </script>
<template> <template>
@ -195,6 +195,7 @@ watch(
> >
กรรมการ กรรมการ
<q-btn <q-btn
v-if="checkPermission($route)?.attrIsUpdate"
size="12px" size="12px"
flat flat
round round

View file

@ -1,5 +1,6 @@
<script setup lang="ts"> <script setup lang="ts">
import { ref, onMounted, watch, defineProps } from "vue"; import { ref, onMounted, watch, defineProps } from "vue";
import { checkPermission } from "@/utils/permissions";
import type { QTableProps } from "quasar"; import type { QTableProps } from "quasar";
import { useQuasar } from "quasar"; import { useQuasar } from "quasar";
import { useRoute } from "vue-router"; import { useRoute } from "vue-router";
@ -119,12 +120,12 @@ const listMeet = ref<any>([]);
function onClickAdd() { function onClickAdd() {
modalAdd.value = true; modalAdd.value = true;
getList() getList();
} }
function onClickClose() { function onClickClose() {
modalAdd.value = false; modalAdd.value = false;
props.fetchdata() props.fetchdata();
} }
/** /**
@ -177,8 +178,8 @@ async function getList() {
lastUpdateUserId: item.lastUpdateUserId, lastUpdateUserId: item.lastUpdateUserId,
createdFullName: item.createdFullName, createdFullName: item.createdFullName,
lastUpdateFullName: item.lastUpdateFullName, lastUpdateFullName: item.lastUpdateFullName,
title: item.title ? item.title :'-', title: item.title ? item.title : "-",
round: item.round ? item.round : '-', round: item.round ? item.round : "-",
date: `${date2Thai(item.dateStart as Date, false, true)} - ${date2Thai( date: `${date2Thai(item.dateStart as Date, false, true)} - ${date2Thai(
item.dateEnd as Date, item.dateEnd as Date,
false, false,
@ -208,8 +209,8 @@ watch(
true true
)}`, )}`,
dateStart: item.dateStart, dateStart: item.dateStart,
title: item.title ? item.title : '-', title: item.title ? item.title : "-",
round: item.round ? item.round : '-', round: item.round ? item.round : "-",
dateEnd: item.dateEnd, dateEnd: item.dateEnd,
result: item.result, result: item.result,
timePeriod: item.duration, timePeriod: item.duration,
@ -217,7 +218,6 @@ watch(
} }
} }
); );
</script> </script>
<template> <template>
<q-card bordered class="row col-12" style="border: 1px solid #d6dee1"> <q-card bordered class="row col-12" style="border: 1px solid #d6dee1">
@ -226,6 +226,7 @@ watch(
> >
การประช การประช
<q-btn <q-btn
v-if="checkPermission($route)?.attrIsUpdate"
size="12px" size="12px"
flat flat
round round