hrms-mgt/src/modules/05_placement/components/probation/FormEvaluation/Template1Commader.vue

194 lines
5.3 KiB
Vue
Raw Normal View History

<script setup lang="ts">
import { ref, defineAsyncComponent, watch, onMounted, onUpdated } from "vue";
import { useCounterMixin } from "@/stores/mixin";
import { useQuasar } from "quasar";
import { useRoute, useRouter } from "vue-router";
import { useProbationDataStore } from "@/modules/05_placement/storeProbation";
import http from "@/plugins/http";
import config from "@/app.config";
2024-08-22 12:05:41 +07:00
import genReport from "@/plugins/genreport";
const Header = defineAsyncComponent(
() =>
import(
"@/modules/05_placement/components/probation/FormEvaluation/Header.vue"
)
);
const FormSaveResultCommader = defineAsyncComponent(
() =>
import(
"@/modules/05_placement/components/probation/FormEvaluation/FormSaveResultCommader.vue"
)
);
const router = useRouter();
const route = useRoute();
const checkRoutePermisson = ref<boolean>(route.name == "probationFormDetail");
const $q = useQuasar();
const probationStore = useProbationDataStore();
const { fecthdataAssign } = probationStore;
const mixin = useCounterMixin();
const { showLoader, hideLoader, messageError } = mixin;
const assignId = ref<string>(route.params.form.toString());
const personalId = ref<string>(route.params.personalId.toString());
const tab = ref<string>("save1");
const dataArrayNumber = ref<number>();
const dataRole = ref<string>("mentor");
2023-11-17 18:00:02 +07:00
/**
* get data
2024-06-14 11:06:31 +07:00
* @param id person id
2023-11-17 18:00:02 +07:00
*/
2024-06-14 11:06:31 +07:00
async function fecthAssign(id: string) {
showLoader();
await http
.get(config.API.formevaluateCommander(id))
.then(async (res: any) => {
2024-11-01 19:53:48 +07:00
await fecthdataAssign(res.data.result);
2024-07-03 22:52:40 +07:00
// fullname.value = res.data.person ? res.data.person.name : "";
dataArrayNumber.value = 1;
})
.catch((e: any) => {
2024-09-06 14:39:53 +07:00
// messageError($q, e);
})
.finally(() => {
2025-02-03 17:52:06 +07:00
hideLoader();
});
2024-06-14 11:06:31 +07:00
}
2023-11-17 18:00:02 +07:00
/**
* เปลยน tab
2024-06-14 11:06:31 +07:00
* @param tabVal type
2023-11-17 18:00:02 +07:00
*/
2024-06-14 11:06:31 +07:00
function changeTab(tabVal: string) {
tab.value = tabVal;
dataArrayNumber.value = Number(tabVal.charAt(4));
2024-06-14 11:06:31 +07:00
}
2023-11-17 18:00:02 +07:00
/** เปลี่ยน type file */
2024-06-14 11:06:31 +07:00
function downloadFile(response: any, filename: string) {
const link = document.createElement("a");
var fileName = filename;
link.href = window.URL.createObjectURL(new Blob([response.data]));
link.setAttribute("download", fileName);
document.body.appendChild(link);
link.click();
document.body.removeChild(link);
2024-06-14 11:06:31 +07:00
}
2023-11-17 18:00:02 +07:00
/**
* download file
* @param type type
*/
2024-06-14 11:06:31 +07:00
async function FileDownload(type: string) {
let numTab = probationStore.evaluate.find(
(e: any) => e.no === dataArrayNumber.value
);
//ผู้ดูเเล
if (dataRole.value == "mentor") {
showLoader();
await http
2025-11-28 12:02:19 +07:00
.get(config.API.reportEvaluateRecord2(type, numTab.id))
.then(async (res) => {
2024-08-22 12:05:41 +07:00
const data = res.data.result;
await genReport(
data,
`แบบบันทึกผล(ผู้บังคับบัญชา)_${probationStore.person.name}_ครั้งที่${numTab.no}`,
type
);
})
2024-06-14 11:06:31 +07:00
.catch(async (e) => {
messageError($q, JSON.parse(await e.response.data.text()));
})
.finally(() => {
hideLoader();
});
} else {
//ผุ้บังคับ
showLoader();
await http
2025-11-28 11:39:51 +07:00
.get(config.API.reportEvaluateRecord2(type, numTab.id))
.then(async (res) => {
2024-08-22 12:05:41 +07:00
const data = res.data.result;
await genReport(
data,
`แบบบันทึกผล(ผู้บังคับบัญชา)_${probationStore.person.name}_ครั้งที่${numTab.no}`,
type
);
})
2024-06-14 11:06:31 +07:00
.catch(async (e) => {
messageError($q, JSON.parse(await e.response.data.text()));
})
.finally(() => {
hideLoader();
});
}
2024-06-14 11:06:31 +07:00
}
2023-11-17 18:00:02 +07:00
/** เปลี่ยนหน้า เพิ่ม */
2024-06-14 11:06:31 +07:00
function addData() {
router.push(
`/probation/detail/addevaluacommander/${personalId.value}/${assignId.value}`
);
2024-06-14 11:06:31 +07:00
}
onMounted(async () => {
await fecthAssign(assignId.value);
});
</script>
<template>
<Header
v-if="probationStore.tabs.length > 0"
:change-tab="changeTab"
:add-data="addData"
:loop="probationStore.tabs.length"
:FileDownload="FileDownload"
2024-11-01 13:53:45 +07:00
:checkPermission="probationStore?.dataPermissions?.tab3?.isEdit as boolean"
2025-01-30 11:58:20 +07:00
:is-max="probationStore.tabs.length === 3"
/>
2025-11-28 11:39:51 +07:00
<q-tab-panels
v-model="tab"
animated
swipeable
vertical
transition-prev="jump-up"
transition-next="jump-up"
v-if="probationStore.tabs.length > 0"
class="mt"
>
<q-tab-panel
v-for="item in probationStore.evaluate"
:name="`save${item.no}`"
:key="item.no"
>
<FormSaveResultCommader
:fecthAssign="fecthAssign"
:tab="tab"
:data="probationStore.evaluate.find((x: any) => x.no === dataArrayNumber)"
action="edit"
/>
</q-tab-panel>
</q-tab-panels>
<div class="q-gutter-md" v-else-if="probationStore.tabs.length == 0">
<div class="flex justify-center items-center q-my-md q-gutter-md">
<q-btn
v-if="!checkRoutePermisson"
outline
color="primary"
label="สร้างแบบบันทึกผล"
@click="addData"
2024-11-01 13:53:45 +07:00
:disable="probationStore.dataPermissions?.tab3.isEdit == false"
/>
</div>
</div>
</template>
<style lang="scss" scoped>
.mt {
margin-top: 25px;
}
</style>