รายการลาออก

This commit is contained in:
DESKTOP-1R2VSQH\Lenovo ThinkPad E490 2025-05-23 17:36:55 +07:00
parent 045bd3aee6
commit 474a856eb0
11 changed files with 285 additions and 165 deletions

View file

@ -8,6 +8,7 @@ import http from "@/plugins/http";
import config from "@/app.config";
import genReport from "@/plugins/genreport";
import { useCounterMixin } from "@/stores/mixin";
import { useRoleWorkflowDataStore } from "@/stores/roleWorkflow";
import { checkPermission } from "@/utils/permissions";
import { useRetirementDataStore } from "@/modules/06_retirement/store/Main";
@ -34,6 +35,7 @@ const route = useRoute();
const router = useRouter();
const store = useRetirementDataStore();
const { fetchDataCheckIsoffice } = useRoleWorkflowDataStore();
const { convertStatusText } = store;
const checkRoutePermisson = ref<boolean>(route.name == "resignDetailbyid");
const mixin = useCounterMixin();
@ -43,7 +45,6 @@ const {
showLoader,
hideLoader,
success,
dialogConfirm,
dialogRemove,
} = mixin;
@ -54,6 +55,7 @@ const personId = ref<string>("");
const roleUser = ref<string>("");
const dataProfile = ref<DataProfile>();
const approveStep = ref<string>("");
const group = ref<string>("");
// const approveCheck = computed(() => {
// return (
@ -309,7 +311,10 @@ function diffDate() {
return false;
}
/** นำข้อมูลมาจาก API*/
/**
* งกนดงขอมลรายละเอยดการลาออก
* @param id id ของผใชงาน
*/
async function fetchData(id: string) {
showLoader();
await http
@ -346,6 +351,7 @@ async function fetchData(id: string) {
isDiscipline.value = data.isDiscipline;
statusCheck.value = data.status;
approveStep.value = data.approveStep;
group.value = data.group;
profileType.value = data.profileType;
keycloakUserId.value = data.keycloakUserId;
rowsApprover.value = {
@ -361,7 +367,11 @@ async function fetchData(id: string) {
});
}
/**Pop up */
/**
* งกนเป pop up อนญาตหรอยบย
* @param action action อนญาตหรอยบย
* @param type ประเภทผใชงาน
*/
function popUp(action: "pass" | "passNot", type: string) {
reasonReign.value = "";
dateBreak.value = null;
@ -370,7 +380,10 @@ function popUp(action: "pass" | "passNot", type: string) {
openModal();
}
//pop up
/**
* งกนยนยนการอนญาตหรอยบย
* @param type ประเภทผหาร
*/
function onSubmit(type: string) {
if (roleUser.value === "commander" && actionPass.value) {
confirmpopUp("/comander");
@ -396,7 +409,10 @@ function onSubmit(type: string) {
// }
}
//pop up
/**
* งกนยนยนการอนญาต
* @param path path สำหรบการอนญาต
*/
async function confirmpopUp(path: string) {
dialogConfirm(
$q,
@ -427,7 +443,10 @@ async function confirmpopUp(path: string) {
);
}
//pop up
/**
* งกนยนยนการยบย
* @param path path สำหรบการยบย
*/
async function rejectpopUp(path: string) {
dialogConfirm(
$q,
@ -459,9 +478,7 @@ async function rejectpopUp(path: string) {
);
}
/**
* กดยกเล
*/
/** ฟังก์ชันยกเลิกการแก้ไขข้อมูลเพื่อลงบัญชีแนบท้าย*/
async function clickCancel() {
edit.value = false;
const data = dataDetail.value;
@ -483,15 +500,14 @@ async function clickCancel() {
}
myForm.value?.resetValidation();
}
/**
* กดยกเล
*/
/** ฟังก์ชันยกเลิกการแก้ไขข้อมูลรายการตรวจสอบเงื่อนไขต่างๆ*/
async function clickCancelConditions() {
await fetchData(id.value);
conditions.value = false;
}
/** Function บันทึก รายการตรวจสอบเงื่อนไขต่างๆ*/
/** ฟังก์ชันบันทึกเงื่อนไขต่างๆ*/
function onSubmitConditions() {
dialogConfirm($q, () => {
showLoader();
@ -515,7 +531,7 @@ function onSubmitConditions() {
});
}
/** Function บันทึก ,แก้ไขข้อมูลเพื่อลงบัญชีแนบท้าย*/
/** ฟังก์ชันบันทึกข้อมูลเพื่อลงบัญชีแนบท้าย*/
function onSubmitAttached() {
dialogConfirm($q, () => {
const formData = new FormData();
@ -550,7 +566,7 @@ function onSubmitAttached() {
}
/**
* Function เพ Class เวลา Edit
* งกนเปลยน Class
* @param val เมอเปนEdit จะเปลยน Class
*/
function getClass(val: boolean) {
@ -560,16 +576,6 @@ function getClass(val: boolean) {
};
}
/** แปลง StatusOrder */
function statusOrder(val: boolean) {
switch (val) {
case true:
return "ยับยั้ง";
case false:
return "อนุญาต";
}
}
//
async function fileDownload(type: string, fileName: string) {
showLoader();
@ -673,7 +679,7 @@ async function downloadFiles(fileName: string) {
}
/**
* ลบไฟล
* งกลบไฟล
* @param id id file
*/
function removeFile(fileName: string) {
@ -719,47 +725,51 @@ function convertStatus(val: string) {
} else return val;
}
/** เปิด POP UP */
/**
* งกนเป modal เพมผงคบบญชา
* @param type งคบบญชา,อำนาจ
*/
function onAddPerson(type: string) {
modalAdd.value = true;
typeAdd.value = type;
}
/** ฟังก์ดึงข้อมูลผู้บังคับบัญชา*/
async function checkOfficer() {
http
.get(config.API.checkIsofficer + `SYS_RESIGN`)
.then(async (res) => {
isOfficer.value = await res.data.result.isOfficer;
isStaff.value = await res.data.result.isStaff;
})
.catch((e) => {
messageError($q, e);
})
.finally(() => {});
try {
const data = await fetchDataCheckIsoffice("SYS_RESIGN");
isOfficer.value = data.isOfficer;
isStaff.value = data.isStaff;
} catch (err) {
messageError($q, err);
}
}
/** ฟังก์ชันส่งไปพิจารณา*/
function onSend() {
dialogConfirm(
$q,
() => {
async () => {
showLoader();
http
await http
.get(config.API.sendApproveRetirement("", id.value))
.then(async (res) => {
await fetchFile();
await fetchData(id.value);
.then(async () => {
await Promise.all([fetchFile(), fetchData(id.value)]);
success($q, "ส่งไปพิจารณา");
})
.catch((e) => {
messageError($q, e);
})
.finally(() => {});
.finally(() => {
hideLoader();
});
},
"ยืนยันการส่งไปพิจารณา",
"ต้องการส่งไปพิจารณาใช่หรือไม่"
);
}
/** ฟังก์ชันดึงข้อมูลตำแหน่งจาก Keycloak*/
async function fetchKeycloakPosition() {
if (myProfileId.value == "") {
await http
@ -774,13 +784,13 @@ async function fetchKeycloakPosition() {
}
}
/** Hook */
/** hook ฟังก์ชันเมื่อโหลดคอมโพเนนต์*/
onMounted(async () => {
showLoader();
await Promise.all([
await fetchData(id.value),
await fetchKeycloakPosition(),
await checkOfficer(),
fetchData(id.value),
fetchKeycloakPosition(),
checkOfficer(),
fetchFile(),
]).finally(() => {
hideLoader();
@ -1025,11 +1035,11 @@ onMounted(async () => {
เงอนไขตางๆ
</div>
<q-space />
<!-- workflowRef?.permission.isUpdate && -->
<div
v-if="
!checkRoutePermisson && dataDetail.statusMain === 'WAITTING'
!checkRoutePermisson &&
((isStaff && group === '1.1' && approveStep === 'st1') ||
(isOfficer && group !== '1.1' && approveStep === 'st3'))
"
>
<div v-if="!conditions">
@ -1107,7 +1117,9 @@ onMounted(async () => {
<q-file
v-if="
!checkRoutePermisson && dataDetail.statusMain === 'WAITTING'
!checkRoutePermisson &&
((isStaff && group === '1.1' && approveStep === 'st1') ||
(isOfficer && group !== '1.1' && approveStep === 'st3'))
"
class="col-12"
for="#evidenceFiles"
@ -1164,7 +1176,12 @@ onMounted(async () => {
<q-btn
v-if="
!checkRoutePermisson &&
dataDetail.statusMain === 'WAITTING'
((isStaff &&
group === '1.1' &&
approveStep === 'st1') ||
(isOfficer &&
group !== '1.1' &&
approveStep === 'st3'))
"
dense
flat
@ -1243,8 +1260,13 @@ onMounted(async () => {
ผลการพจารณาของผงคบบญชา
</div>
<!-- วอยางเชคของ การลา -->
<q-btn
v-if="statusCheck == 'WAITTING' && (isOfficer || isStaff)"
v-if="
!checkRoutePermisson &&
((isStaff && group === '1.1' && approveStep === 'st1') ||
(isStaff && group !== '1.1' && approveStep === 'st1'))
"
flat
round
icon="add"
@ -1316,12 +1338,16 @@ onMounted(async () => {
<div
v-if="
props.row.approveStatus == 'PENDING' &&
props.row.comment == ''
props.row.comment == '' &&
approveStep === 'st2'
"
class="q-gutter-x-xs"
>
<q-btn
v-if="props.row.profileId === myProfileId"
v-if="
props.row.profileId === myProfileId &&
approveStep === 'st2'
"
outline
dense
color="primary"
@ -1331,7 +1357,10 @@ onMounted(async () => {
@click="popUp('pass', 'commander')"
/>
<q-btn
v-if="props.row.profileId === myProfileId"
v-if="
props.row.profileId === myProfileId &&
approveStep === 'st2'
"
outline
color="red"
dense
@ -1376,8 +1405,13 @@ onMounted(async () => {
<div class="q-pl-sm text-weight-bold text-dark">
ผลการพจารณาของผอำนาจ
</div>
<q-btn
v-if="statusCheck == 'WAITTING' && (isOfficer || isStaff)"
v-if="
!checkRoutePermisson &&
((isStaff && group === '1.1' && approveStep === 'st1') ||
(isOfficer && group !== '1.1' && approveStep === 'st3'))
"
flat
round
icon="add"
@ -1394,11 +1428,13 @@ onMounted(async () => {
<div
class="q-gutter-x-sm"
v-if="
approveStep == 'st3' &&
!checkRoutePermisson &&
rowsApprover &&
rowsApprover.approvers &&
rowsApprover.approvers[0]?.profileId == myProfileId &&
rowsApprover.approvers[0]?.approveStatus == 'PENDING'
rowsApprover.approvers[0]?.approveStatus == 'PENDING' &&
((group === '1.1' && approveStep === 'st3') ||
(group !== '1.1' && approveStep === 'st4'))
"
>
<q-btn
@ -1479,20 +1515,33 @@ onMounted(async () => {
<q-card
bordered
class="row col-12 text-dark q-mt-sm q-pa-sm"
v-if="statusCheck == 'WAITTING' && (isOfficer || isStaff)"
v-if="
!checkRoutePermisson &&
((isStaff && group === '1.1' && approveStep === 'st1') ||
(isStaff && group !== '1.1' && approveStep === 'st1') ||
(isOfficer && group !== '1.1' && approveStep === 'st3'))
"
>
<q-btn
@click="onSend"
:disable="
rowsApprover?.approvers.length == 0 ||
rowsApprover?.commanders.length == 0
(group === '1.1' &&
(rowsApprover?.approvers.length == 0 ||
rowsApprover?.commanders.length == 0)) ||
(group !== '1.1 ' &&
rowsApprover?.commanders.length == 0 &&
approveStep === 'st1') ||
(group !== '1.1 ' &&
rowsApprover?.approvers.length == 0 &&
approveStep === 'st3')
"
@click="onSend"
label="ส่งไปพิจารณา"
color="secondary"
class="q-ml-auto"
><q-tooltip>คลกเพอสงไปพจารณา</q-tooltip></q-btn
>
</q-card>
<!-- แกไขขอมลเพอลงบญชแนบทาย -->
<q-card bordered class="row col-12 text-dark q-mt-sm">
<q-form
@ -1510,7 +1559,12 @@ onMounted(async () => {
<!-- workflowRef?.permission.isUpdate && -->
<div
v-if="!checkRoutePermisson && dataDetail.statusMain === 'WAITTING'"
v-if="
!checkRoutePermisson &&
(dataDetail.statusMain === 'APPROVE' ||
dataDetail.statusMain === 'REJECT') &&
((isStaff && group === '1.1') || (isOfficer && group !== '1.1'))
"
>
<div class="q-gutter-sm" v-if="!edit">
<q-btn