Merge branch 'develop' into devTee

This commit is contained in:
setthawutttty 2025-01-30 17:54:52 +07:00
commit 6941a6e4d6
6 changed files with 112 additions and 30 deletions

View file

@ -1,39 +1,55 @@
<script setup lang="ts">
import { ref, watch } from "vue";
import { useCounterMixin } from "@/stores/mixin";
import { useQuasar, type QTableProps } from "quasar";
import http from "@/plugins/http";
import config from "@/app.config";
import { useRegistryNewDataStore } from "@/modules/04_registryPerson/store";
import { useRoute } from "vue-router";
import type { DataLeave } from "@/modules/04_registryPerson/interface/index/leave";
import DialogHeader from "@/components/DialogHeader.vue";
const storeRegistry = useRegistryNewDataStore();
const modal = defineModel<boolean>("modal", { required: true });
const route = useRoute();
const $q = useQuasar();
const mixin = useCounterMixin();
const {
showLoader,
hideLoader,
messageError,
date2Thai,
pathRegistryEmp,
onSearchDataTable,
} = mixin;
const { date2Thai } = mixin;
const empType = ref<string>(pathRegistryEmp(route.name?.toString() ?? ""));
const profileId = ref<string>(route.params.id.toString()); //id profile
const props = defineProps({
data: {
type: Object,
default: () => ({
leaveDate: null,
leaveType: "",
leaveReason: "",
leaveCommandNo: "",
}),
},
});
const data = ref<{ date: Date; type: string; reson: string; document: string }>(
{
date: new Date(),
type: "ออกจากราชการ",
reson: "พ้นจากราชการด้วยสาเหตุ : ออกจากราชการ",
document: "test",
const data = ref<DataLeave>({
date: null,
type: "",
reson: "",
document: "",
});
watch(modal, (val) => {
if (val) {
data.value = {
date: props.data?.leaveDate,
type: storeRegistry.convertTypeRetired(props.data?.leaveType),
reson: props.data?.leaveReason,
document: props.data?.leaveCommandNo,
};
} else {
data.value = {
date: null,
type: "",
reson: "",
document: "",
};
}
);
});
</script>
<template>

View file

@ -53,6 +53,13 @@ interface MyObjectRef {
[key: string]: any;
}
interface DataLeave {
date: Date | null;
type: string;
reson: string;
document: string;
}
export type {
DetailData,
FormFilter,
@ -60,4 +67,5 @@ export type {
DataOption,
ResponseTotalObject,
MyObjectRef,
DataLeave,
};

View file

@ -81,6 +81,34 @@ export const useRegistryNewDataStore = defineStore("registryNew", () => {
node: "เลือกหน่วยงาน",
});
function convertTypeRetired(val: string) {
const newVal = val?.toLocaleUpperCase();
switch (newVal) {
case "RETIRE":
return "เกษียณ ";
case "RETIRE_RESIGN":
return "ลาออก ";
case "RETIRE_DECEASED":
return "ถึงแก่กรรม ";
case "RETIRE_OUT":
return "ให้ออกจากราชการ ";
case "DISCIPLINE_RESULT_REMOVE":
return "ปลดออกจากราชการ ";
case "DISCIPLINE_RESULT_DISMISS":
return "ไล่ออกจากราชการ ";
case "DISCIPLINE_SUSPEND":
return "ถูกพักจากราชการ ";
case "PROBATION_REPORT":
return "ไม่ผ่านทดลองงาน ";
case "PLACEMENT_TRANSFER":
return "โอนออก ";
case "RETIRE_RESIGN_EMP":
return "ให้ออกจากราชการ(ลูกจ้าง) ";
default:
return "";
}
}
return {
fetchType,
fetchLevel,
@ -96,5 +124,6 @@ export const useRegistryNewDataStore = defineStore("registryNew", () => {
isLeave,
tabs,
tabsManu,
convertTypeRetired,
};
});

View file

@ -1,5 +1,5 @@
<script setup lang="ts">
import { ref, onMounted, computed } from "vue";
import { ref, onMounted, computed, defineAsyncComponent } from "vue";
import { useQuasar } from "quasar";
import { useRoute, useRouter } from "vue-router";
@ -27,7 +27,10 @@ import type { ResponseObject } from "@/modules/04_registryPerson/interface/respo
import CardNotPermission from "@/components/CardNotPermission.vue";
import DialogHeader from "@/components/DialogHeader.vue";
import TabMain from "@/modules/04_registryPerson/components/detail/TabMain.vue";
import DialogRetired from "@/modules/04_registryPerson/components/DialogRetired.vue";
const DialogRetired = defineAsyncComponent(
() => import("@/modules/04_registryPerson/components/DialogRetired.vue")
);
/** use*/
const $q = useQuasar();
@ -354,8 +357,7 @@ async function fetchDataPersonal() {
await http
.get(config.API.registryNewByProfileId(profileId.value, empType.value))
.then(async (res) => {
formDetail.value = res.data.result;
formDetail.value = await res.data.result;
storeRegistry.isLeave = res.data.result.isLeave;
if (res.data.result.leaveReason) {
@ -514,7 +516,13 @@ function outPost() {
await http
.post(config.API.retirementOut, formData)
.then(async () => {
await router.push(`${empType.value === "-employee" ? `/retirementEmployee`:`/retirement/dismiss-order`}`);
await router.push(
`${
empType.value === "-employee"
? `/retirementEmployee`
: `/retirement/dismiss-order`
}`
);
await success($q, "ดำเนินการสำเร็จ");
})
.catch((e) => {
@ -1186,7 +1194,7 @@ onMounted(async () => {
</q-dialog>
<!-- Dialog อมลการพนจากราชการ -->
<DialogRetired v-model:modal="modalDialogRetired" />
<DialogRetired v-model:modal="modalDialogRetired" :data="formDetail" />
</template>
<style scoped>

View file

@ -881,6 +881,8 @@ onMounted(async () => {
? probationStore.dataPermissions?.tab6.isEdit
: false
"
:round="props.tab?.charAt(4)"
:pass-result="result"
/>
</div>

View file

@ -23,6 +23,9 @@ const {
const group = defineModel<string>("group", { required: true });
const isCheckFile = defineModel<boolean>("isCheckFile", { required: true });
const round = defineModel<string>("round", { default: "" });
const passResult = defineModel<number>("passResult", { default: 0 });
const checkRoutePermisson = defineModel<boolean>("checkRoutePermisson", {
required: true,
});
@ -72,8 +75,13 @@ async function uploadFileURL(uploadUrl: string) {
},
})
.then(async () => {
await success($q, "อัปโหลดไฟล์สำเร็จ");
if (round.value === "2") {
await onUpdateStatusAssign();
} else if (passResult.value === 2) {
await onUpdateStatusAssign();
}
file.value = null;
await success($q, "อัปโหลดไฟล์สำเร็จ");
await fetchCheckfile();
})
.catch((err) => {
@ -116,6 +124,17 @@ async function onDownloadFile() {
});
}
async function onUpdateStatusAssign() {
http
.patch(
config.API.createformReport(assignId.value) +
`&evaluate_no=${round.value}`
)
.catch((err) => {
messageError($q, err);
});
}
onMounted(() => {
fetchCheckfile();
});