แก้ไขประเมิน

This commit is contained in:
Warunee Tamkoo 2023-12-23 10:20:41 +07:00
parent a07cc6d2a2
commit b984caaa3c
10 changed files with 121 additions and 29 deletions

View file

@ -8,6 +8,9 @@ export default {
evaluationMain: (page: number, pageSize: number, keyword: string) => evaluationMain: (page: number, pageSize: number, keyword: string) =>
`${evaluation}?page=${page}&pageSize=${pageSize}&keyword=${keyword}`, `${evaluation}?page=${page}&pageSize=${pageSize}&keyword=${keyword}`,
evaluateGetDetail: (id: string) => `${evaluation}/check-spec/${id}`,
meeting: () => `${evaluation}/meeting`, meeting: () => `${evaluation}/meeting`,
meetingById: (id: string) => `${evaluation}/meeting/${id}`, meetingById: (id: string) => `${evaluation}/meeting/${id}`,
meetingFilebyId: (volume: string, id: string) => meetingFilebyId: (volume: string, id: string) =>
@ -15,22 +18,28 @@ export default {
meetingFileDowloadbyId: (volume: string, id: string, file: string) => meetingFileDowloadbyId: (volume: string, id: string, file: string) =>
`${evaluation}/document/${volume}/${id}/${file}`, `${evaluation}/document/${volume}/${id}/${file}`,
evaluationFilebyId:(volume:string,id:string,file:string) => `${evaluationFile}/${volume}/${id}/${file}`, evaluationFilebyId: (volume: string, id: string, file: string) =>
evaluationFileListbyId:(volume:string,id:string) => `${evaluationFile}/${volume}/${id}`, `${evaluationFile}/${volume}/${id}/${file}`,
evaluationApproveDoc1:(id:string)=>`${evaluation}/doc1/approve/${id}`, evaluationFileListbyId: (volume: string, id: string) =>
`${evaluationFile}/${volume}/${id}`,
evaluationApproveDoc1: (id: string) => `${evaluation}/doc1/approve/${id}`,
evaluationHistory: (id: string) => `${evaluation}/step-history/${id}`, evaluationHistory: (id: string) => `${evaluation}/step-history/${id}`,
evaluationDateAnnounce:(id:string) => `${evaluation}/check-date/${id}`, evaluationDateAnnounce: (id: string) => `${evaluation}/check-date/${id}`,
evaluationSigner:(id:string,num:number) => `${evaluation}/doc${num}-signer/${id}`, evaluationSigner: (id: string, num: number) =>
`${evaluation}/doc${num}-signer/${id}`,
evaluationSentToContact:(id:string) => `${evaluation}/contact/user/${id}`, evaluationSentToContact: (id: string) => `${evaluation}/contact/user/${id}`,
evaluationPatchData:(volume:string,id:string,file:string) => `${evaluationFile}/${volume}/${id}/${file}`, evaluationPatchData: (volume: string, id: string, file: string) =>
`${evaluationFile}/${volume}/${id}/${file}`,
evaluationChooseDirectors:(id:string) => `${evaluation}/choose-directors/${id}`, evaluationChooseDirectors: (id: string) =>
evaluationChooseMeeting:(id:string) => `${evaluation}/choose-meetings/${id}`, `${evaluation}/choose-directors/${id}`,
evaluationChooseMeeting: (id: string) =>
`${evaluation}/choose-meetings/${id}`,
evaluationListData:(id:string) =>`${evaluation}/director-meeting/${id}` evaluationListData: (id: string) => `${evaluation}/director-meeting/${id}`,
}; };

View file

@ -35,6 +35,14 @@ const mixin = useCounterMixin();
const { dialogConfirm } = mixin; const { dialogConfirm } = mixin;
const $q = useQuasar(); const $q = useQuasar();
const props = defineProps({
data: {
type: Object,
default: {},
},
});
const modalHistory = ref<boolean>(false); const modalHistory = ref<boolean>(false);
const externalLink = const externalLink =
"https://accreditation.ocsc.go.th/accreditation/search/curriculum"; "https://accreditation.ocsc.go.th/accreditation/search/curriculum";
@ -186,7 +194,7 @@ onMounted(() => {
<div class="row q-col-gutter-md"> <div class="row q-col-gutter-md">
<div class="col-xs-12 col-sm-3"> <div class="col-xs-12 col-sm-3">
<div class="toptitle"> <div class="toptitle">
ประเมนชำนาญการ {{ props.data && props.data?.type == 'SPECIAL_EXPERT' ? 'ประเมินชำนาญการพิเศษ' : 'ประเมินชำนาญการ' }}
<q-btn <q-btn
flat flat
@ -223,7 +231,7 @@ onMounted(() => {
> >
<q-card flat bordered class="col-12"> <q-card flat bordered class="col-12">
<q-card-section> <q-card-section>
<Step1 v-if="store.step === 1" /> <Step1 v-if="store.step === 1" :data="props.data"/>
<Step2 v-if="store.step === 2" @update:form="updateformCommand" /> <Step2 v-if="store.step === 2" @update:form="updateformCommand" />
<Step3 v-if="store.step === 3" :step="store.step" /> <Step3 v-if="store.step === 3" :step="store.step" />
<Step4 v-if="store.step === 4" /> <Step4 v-if="store.step === 4" />
@ -241,7 +249,7 @@ onMounted(() => {
> >
<q-card flat bordered class="col-12"> <q-card flat bordered class="col-12">
<q-card-section> <q-card-section>
<ViewStep1 v-if="store.step === 1" /> <ViewStep1 v-if="store.step === 1" :data="data"/>
<ViewStep3 v-if="store.step === 3" /> <ViewStep3 v-if="store.step === 3" />
<ViewStep7 v-if="store.step === 7" /> </q-card-section <ViewStep7 v-if="store.step === 7" /> </q-card-section
></q-card> ></q-card>

View file

@ -22,9 +22,12 @@ const director = ref<any[]>();
const meeting = ref<any[]>(); const meeting = ref<any[]>();
const $q = useQuasar(); const $q = useQuasar();
// onMounted(() => { const props = defineProps({
// store.step = 1; data: {
// }); type: Object,
default: {},
},
});
function getList() { function getList() {
showLoader(); showLoader();
@ -42,6 +45,7 @@ function getList() {
hideLoader(); hideLoader();
}); });
} }
onMounted(() => { onMounted(() => {
getList(); getList();
}); });
@ -52,8 +56,8 @@ onMounted(() => {
<div class="toptitle">กรรมการและการประช</div> <div class="toptitle">กรรมการและการประช</div>
<div class="row col-12 q-gutter-md"> <div class="row col-12 q-gutter-md">
<CardDirector :data="director"/> <CardDirector :data="director" :fetchdata="getList" />
<CardMeet :data="meeting"/> <CardMeet :data="meeting" :fetchdata="getList" />
</div> </div>
</div> </div>
</template> </template>

View file

@ -1,5 +1,12 @@
<script setup lang="ts"> <script setup lang="ts">
import { reactive } from "vue"; import { onMounted, reactive, watch } from "vue";
const props = defineProps({
data: {
type: Object,
default: {},
},
});
const formData = reactive<any>({ const formData = reactive<any>({
isEducationalQft: false, // isEducationalQft: false, //
@ -10,6 +17,18 @@ const formData = reactive<any>({
isHaveProLicense: false, // isHaveProLicense: false, //
isHaveMinPeriodOrHoldPos: false, // ] isHaveMinPeriodOrHoldPos: false, // ]
}); });
watch(props, () => {
if (props.data) {
formData.isEducationalQft = props.data.isEducationalQft;
formData.isGovermantServiceHtr = props.data.isGovermantServiceHtr;
formData.isOperatingExp = props.data.isOperatingExp;
formData.isMinPeriodOfTenure = props.data.isMinPeriodOfTenure;
formData.isHaveSpecificQft = props.data.isHaveSpecificQft;
formData.isHaveProLicense = props.data.isHaveProLicense;
formData.isHaveMinPeriodOrHoldPos = props.data.isHaveMinPeriodOrHoldPos;
}
});
</script> </script>
<template> <template>
@ -17,6 +36,7 @@ const formData = reactive<any>({
<q-item v-ripple> <q-item v-ripple>
<q-item-section avatar> <q-item-section avatar>
<q-checkbox <q-checkbox
disable
keep-color keep-color
color="primary" color="primary"
v-model="formData.isEducationalQft" v-model="formData.isEducationalQft"
@ -29,6 +49,7 @@ const formData = reactive<any>({
<q-item v-ripple> <q-item v-ripple>
<q-item-section avatar> <q-item-section avatar>
<q-checkbox <q-checkbox
disable
keep-color keep-color
color="primary" color="primary"
v-model="formData.isGovermantServiceHtr" v-model="formData.isGovermantServiceHtr"
@ -41,6 +62,7 @@ const formData = reactive<any>({
<q-item v-ripple> <q-item v-ripple>
<q-item-section avatar> <q-item-section avatar>
<q-checkbox <q-checkbox
disabled
keep-color keep-color
color="primary" color="primary"
v-model="formData.isOperatingExp" v-model="formData.isOperatingExp"
@ -53,6 +75,7 @@ const formData = reactive<any>({
<q-item v-ripple> <q-item v-ripple>
<q-item-section avatar> <q-item-section avatar>
<q-checkbox <q-checkbox
disable
keep-color keep-color
color="primary" color="primary"
v-model="formData.isMinPeriodOfTenure" v-model="formData.isMinPeriodOfTenure"
@ -67,6 +90,7 @@ const formData = reactive<any>({
<q-item v-ripple> <q-item v-ripple>
<q-item-section avatar> <q-item-section avatar>
<q-checkbox <q-checkbox
disable
keep-color keep-color
color="primary" color="primary"
v-model="formData.isHaveSpecificQft" v-model="formData.isHaveSpecificQft"
@ -82,6 +106,7 @@ const formData = reactive<any>({
<q-item v-ripple> <q-item v-ripple>
<q-item-section avatar> <q-item-section avatar>
<q-checkbox <q-checkbox
disable
keep-color keep-color
color="primary" color="primary"
v-model="formData.isHaveProLicense" v-model="formData.isHaveProLicense"
@ -98,6 +123,7 @@ const formData = reactive<any>({
<q-item v-ripple> <q-item v-ripple>
<q-item-section avatar> <q-item-section avatar>
<q-checkbox <q-checkbox
disable
keep-color keep-color
color="primary" color="primary"
v-model="formData.isHaveMinPeriodOrHoldPos" v-model="formData.isHaveMinPeriodOrHoldPos"

View file

@ -27,6 +27,10 @@ const props = defineProps({
type: Array, type: Array,
default: [], default: [],
}, },
fetchdata: {
type: Function,
default: () => "",
}
}); });
const { showLoader, hideLoader, messageError, dialogConfirm } = mixin; const { showLoader, hideLoader, messageError, dialogConfirm } = mixin;
@ -144,8 +148,6 @@ async function updatePaging(rpp: number, p: number) {
*/ */
function returnDirector(data: any) { function returnDirector(data: any) {
const dataList = data.map((item: any) => item.id); const dataList = data.map((item: any) => item.id);
console.log(dataList);
dialogConfirm($q, () => { dialogConfirm($q, () => {
showLoader(); showLoader();
http http
@ -160,6 +162,7 @@ function returnDirector(data: any) {
}) })
.finally(() => { .finally(() => {
hideLoader(); hideLoader();
props.fetchdata()
onClickClose(); onClickClose();
}); });
}); });

View file

@ -17,6 +17,10 @@ const props = defineProps({
type: Array, type: Array,
default: [], default: [],
}, },
fetchdata: {
type: Function,
default: () => "",
}
}); });
const { showLoader, hideLoader, messageError, dialogConfirm, date2Thai } = const { showLoader, hideLoader, messageError, dialogConfirm, date2Thai } =
mixin; mixin;
@ -118,6 +122,7 @@ function returnData(data: any) {
}) })
.finally(() => { .finally(() => {
hideLoader(); hideLoader();
props.fetchdata()
onClickClose(); onClickClose();
}); });
}); });

View file

@ -169,7 +169,7 @@ watch(
<template> <template>
<q-dialog v-model="props.Modal" persistent> <q-dialog v-model="props.Modal" persistent>
<q-card style="width: 1200px; max-width: 80vw"> <q-card style="width: 1200px; max-width: 80vw">
<DialogHeader title="เลือกรายชื่อกรรมการ" :close="clickClose" /> <DialogHeader tittle="เลือกรายชื่อกรรมการ" :close="clickClose" />
<q-separator /> <q-separator />
<q-card-section> <q-card-section>
<q-input <q-input

View file

@ -171,7 +171,7 @@ watch(
<template> <template>
<q-dialog v-model="props.Modal" persistent> <q-dialog v-model="props.Modal" persistent>
<q-card style="width: 1200px; max-width: 80vw"> <q-card style="width: 1200px; max-width: 80vw">
<DialogHeader title="เลือกรายชื่อกรรมการ" :close="clickClose" /> <DialogHeader tittle="เลือกการประชุม" :close="clickClose" />
<q-separator /> <q-separator />
<q-card-section> <q-card-section>
<q-input <q-input

View file

@ -3,6 +3,13 @@ import TableData from "@/modules/12_evaluatePersonal/components/Detail/viewstep/
import { useEvaluateDetailStore } from "@/modules/12_evaluatePersonal/store/EvaluateDetail"; import { useEvaluateDetailStore } from "@/modules/12_evaluatePersonal/store/EvaluateDetail";
const props = defineProps({
data: {
type: Object,
default: {},
},
});
const store = useEvaluateDetailStore(); const store = useEvaluateDetailStore();
const { const {
columnsLicense, columnsLicense,
@ -27,7 +34,7 @@ const {
<q-input <q-input
borderless borderless
readonly readonly
model-value="นาย" :model-value="data.prefix"
label="คำนำหน้าชื่อ" label="คำนำหน้าชื่อ"
/> />
</div> </div>
@ -36,7 +43,7 @@ const {
<q-input <q-input
borderless borderless
readonly readonly
model-value="ธนพนธ์ แสงจันทร์" :model-value="data.fullName"
label="ชื่อ - นามสกุล" label="ชื่อ - นามสกุล"
/> />
</div> </div>

View file

@ -1,7 +1,9 @@
<script setup lang="ts"> <script setup lang="ts">
import { ref, onMounted } from "vue"; import { ref, onMounted } from "vue";
import { useQuasar } from "quasar"; import { useQuasar } from "quasar";
import { useRouter } from "vue-router"; import { useRoute, useRouter } from "vue-router";
import { useCounterMixin } from "@/stores/mixin";
import http from "@/plugins/http"; import http from "@/plugins/http";
import config from "@/app.config"; import config from "@/app.config";
@ -10,9 +12,35 @@ import Tab2 from "@/modules/12_evaluatePersonal/components/Detail/Tab2.vue"; //
import { useEvaluateDetailStore } from "@/modules/12_evaluatePersonal/store/EvaluateDetail"; import { useEvaluateDetailStore } from "@/modules/12_evaluatePersonal/store/EvaluateDetail";
const mixin = useCounterMixin();
const { showLoader, hideLoader, messageError } = mixin;
const store = useEvaluateDetailStore(); const store = useEvaluateDetailStore();
const router = useRouter(); const router = useRouter();
const $q = useQuasar(); const $q = useQuasar();
const route = useRoute();
const id = ref<string>(route.params.id as string);
const data = ref<any>({});
function getData() {
showLoader();
http
.get(config.API.evaluateGetDetail(id.value))
.then((res: any) => {
data.value = res.data.result;
})
.catch((e) => {
messageError($q, e);
})
.finally(() => {
hideLoader();
});
}
onMounted(() => {
getData();
});
</script> </script>
<template> <template>
@ -28,7 +56,9 @@ const $q = useQuasar();
class="q-mr-sm" class="q-mr-sm"
@click="router.go(-1)" @click="router.go(-1)"
/> />
<div>รายละเอยดการประเมนของ นาวสาววาร แตมค</div> <div>
รายละเอยดการประเมนบคคลของ {{ `${data.prefix}${data.fullName}` }}
</div>
</div> </div>
</div> </div>
<q-card flat bordered class="col-12 q-mt-sm q-pt-sm q-pa-md"> <q-card flat bordered class="col-12 q-mt-sm q-pt-sm q-pa-md">
@ -51,9 +81,9 @@ const $q = useQuasar();
</q-tabs> </q-tabs>
<q-separator /> <q-separator />
<q-tab-panels v-model="store.tabMenu" animated> <q-tab-panels v-model="store.tabMenu" animated>
<q-tab-panel name="1"> <Tab1 /></q-tab-panel> <q-tab-panel name="1"> <Tab1 :data="data" /></q-tab-panel>
<q-tab-panel name="2"> <Tab2 /></q-tab-panel> <q-tab-panel name="2"> <Tab2 :data="data" /></q-tab-panel>
</q-tab-panels> </q-tab-panels>
</q-card> </q-card>
</q-card> </q-card>