จัดโค้ดบรรจุ รายชื่อผู้สอบผ่าน

This commit is contained in:
setthawutttty 2023-11-13 13:32:26 +07:00
parent eb80e5e267
commit 9f9879202e
9 changed files with 527 additions and 411 deletions

View file

@ -3,6 +3,7 @@ import { ref, onMounted, watch, reactive, computed } from "vue";
import { useQuasar, QForm } from "quasar";
import type { QTableProps } from "quasar";
import { useCounterMixin } from "@/stores/mixin";
import Table from "@/modules/05_placement/components/PersonalList/TableView.vue";
import DialogCard from "@/modules/05_placement/components/PersonalList/TableDetail.vue";
import DialogFooter from "@/modules/05_placement/components/PersonalList/DialogFooter.vue";
@ -17,12 +18,14 @@ import router from "@/router";
let roleAdmin = ref<boolean>(false);
/** รับค่ามาจากหน้าหลัก */
const props = defineProps({
statCard: {
type: Function,
default: () => console.log("getStat"),
},
});
const edit = ref<boolean>(true);
const modal = ref<boolean>(false); //modal +
const editRow = ref<boolean>(false); //
@ -42,7 +45,32 @@ const myForm = ref<any>();
const files = ref<any>(null);
const mixin = useCounterMixin(); //
const $q = useQuasar(); // show dialog
const appointModal = ref<boolean>(false);
const getNumFile = ref(0);
const dataRes = ref<any>([]);
const personal = ref<any>([]);
const displayAdd = ref<boolean>(true);
const containStatus = ref<boolean>(false);
const modaladdlist = ref<boolean>(false);
const selected = ref<any>([]);
const personal_selected = ref<any>([]);
const filterlistAdd = ref<string>("");
const paging = ref<boolean>(true);
//
const checkSelected = computed(() => {
if (selected.value.length === 0) {
return true;
}
});
const pagination = ref({
page: 1,
rowsPerPage: 10,
});
const dataInfo = reactive({
reason: "",
reliefDoc: "",
});
const {
messageError,
showLoader,
@ -57,6 +85,7 @@ const examId = route.params.examId;
const examIdString = Array.isArray(examId) ? examId[0] : examId;
const personalId = ref<string>("");
/** แสดงข้อมูลตารางหลัก */
const visibleColumns = ref<any[]>([
"position",
"fullName",
@ -70,6 +99,10 @@ const visibleColumns = ref<any[]>([
"draft",
"positionCandidate",
]);
/**
* ตาราง งรายชอไปหนวยงาน
*/
const visibleColumnslist = ref<any>([
"fullName",
"examNumber",
@ -81,6 +114,7 @@ const visibleColumnslist = ref<any>([
"positionCandidate",
]);
/**หัวตาราง */
const columns = ref<QTableProps["columns"]>([
{
name: "position",
@ -172,8 +206,12 @@ const columns = ref<QTableProps["columns"]>([
a.localeCompare(b, undefined, { numeric: true, sensitivity: "base" }),
},
]);
//
const convertBmaOfficer = (val: string) => {
/**
* แปลงสถานะพนกงาน
* @param val type
*/
function convertBmaOfficer(val: string) {
switch (val) {
case "OFFICER":
return "ขรก.กทม. สามัญ";
@ -184,9 +222,13 @@ const convertBmaOfficer = (val: string) => {
default:
return "บุคคลภายนอก";
}
};
//
const convertContainStatus = (val: string) => {
}
/**
* แปลงสถานะบรรจ
* @param val type
*/
function convertContainStatus(val: string) {
switch (val) {
case "UN-CONTAIN":
return "ยังไม่บรรจุ";
@ -199,9 +241,13 @@ const convertContainStatus = (val: string) => {
default:
return "-";
}
};
//
const convertDraft = (val: boolean) => {
}
/**
* แปลงสถานะการสงรายช
* @param val true/false
*/
function convertDraft(val: boolean) {
switch (val) {
case false:
return "รอส่งตัว";
@ -210,9 +256,10 @@ const convertDraft = (val: boolean) => {
default:
return "-";
}
};
//
const getTable = async () => {
}
/**เรียกข้อมูลรายชื่อผู้สอบผ่าย */
async function getTable() {
showLoader();
await http
.get(config.API.personalList(examIdString))
@ -273,11 +320,10 @@ const getTable = async () => {
.finally(async () => {
hideLoader();
});
};
}
const appointModal = ref<boolean>(false);
//
const saveDeferment = async () => {
/**ยืนยันการผ่อนผัน */
async function saveDeferment() {
myForm.value.validate().then(async (result: boolean) => {
if (result) {
dialogConfirm(
@ -288,9 +334,9 @@ const saveDeferment = async () => {
);
}
});
};
// post
const postDeferment = async () => {
}
/**post ผ่อนผัน */
async function postDeferment() {
const formData = new FormData();
formData.append("personalId", personalId.value);
formData.append("note", userNote.value);
@ -311,9 +357,10 @@ const postDeferment = async () => {
modalDefermentDisclaim.value = false;
hideLoader();
});
};
//
const saveDisclaim = async () => {
}
/**ยืนยันการสละสิทธิ์ */
async function saveDisclaim() {
myForm.value.validate().then(async (result: boolean) => {
if (result) {
dialogConfirm(
@ -324,9 +371,10 @@ const saveDisclaim = async () => {
);
}
});
};
// post
const postDisclaimf = async () => {
}
/**post การสละสิทธิ์ */
async function postDisclaimf() {
const dataPost = {
note: userNote.value,
personId: personalId.value,
@ -347,33 +395,40 @@ const postDisclaimf = async () => {
modalDefermentDisclaim.value = false;
hideLoader();
});
};
}
const clickEditRow = () => {
/** เปิด dialog */
function clickEditRow() {
editRow.value = true;
};
}
const getClass = (val: boolean) => {
/** เปลี่ยน class true/false */
function getClass(val: boolean) {
return {
"full-width inputgreen cursor-pointer ": val,
"full-width cursor-pointer": !val,
};
};
//
const selectData = (pid: string, draft: string) => {
if (roleAdmin.value && draft === 'ส่งตัวแล้ว') {
}
/**
* เรยกดรายละเอยดขอม
* @param pid id personal
* @param draft status
*/
function selectData(pid: string, draft: string) {
if (roleAdmin.value && draft === "ส่งตัวแล้ว") {
personalId.value = pid;
modal.value = true;
} else {
router.push("/placement/personal-detail/" + pid);
}
};
const getNumFile = ref(0);
const dataInfo = reactive({
reason: "",
reliefDoc: "",
});
//
}
/**
* แกไขขอม
* @param props rows data
* @param action type
*/
const editDetail = (
props: PartialTableName,
action: "disclaim" | "deferment" | "defermentInfo" | "disclaimInfo"
@ -421,36 +476,42 @@ const editDetail = (
}
};
const dataRes = ref<any>([]);
const personal = ref<any>([]);
const openAppointModal = (pid: string) => {
/**
* เป dialog
* @param pid id personal
*/
function openAppointModal(pid: string) {
appointModal.value = true;
personalId.value = pid;
personal.value = dataRes.value.filter(
(e: any) => e.personalId == personalId.value
);
};
}
const clickCloseModalTree = async () => {
/** close dialog */
async function clickCloseModalTree() {
await getTable();
appointModal.value = false;
props.statCard();
};
}
const validateData = async () => {
/** validate */
async function validateData() {
checkValidate.value = true;
await myForm.value.validate().then((result: boolean) => {
if (result == false) {
checkValidate.value = false;
}
});
};
}
const clickCloseSendModal = () => {
/** ปิด dialog */
function clickCloseSendModal() {
modaladdlist.value = false;
};
}
const clickClose = async () => {
/** validate */
async function clickClose() {
userNote.value = "";
if (editRow.value == true) {
dialogConfirm(
@ -469,45 +530,10 @@ const clickClose = async () => {
modalwaitInfo.value = false;
modal.value = false;
}
};
const displayAdd = ref<boolean>(true);
onMounted(async () => {
if (keycloak.tokenParsed != null) {
roleAdmin.value = await keycloak.tokenParsed.role.includes("placement1");
if (roleAdmin.value === false) {
displayAdd.value = false;
visibleColumns.value = [
"position",
"fullName",
"examNumber",
"idCard",
"positionNumber",
"organizationName",
"reportingDate",
"bmaOfficer",
"statusName",
"positionCandidate",
];
}
}
await getTable();
});
}
const containStatus = ref<boolean>(false);
watch(containStatus, () => {
if (containStatus.value) {
rows.value = rowsAll.value.filter((x: any) => x.statusId == "CONTAIN");
} else {
rows.value = rowsAll.value.filter((x: any) => x.statusId != "CONTAIN");
}
});
const modaladdlist = ref<boolean>(false);
const selected = ref<any>([]);
const personal_selected = ref<any>([]);
const filterlistAdd = ref<string>("");
const paging = ref<boolean>(true);
//
const savelist = () => {
/** ยืนยันส่งราชชื่อไปหน่วยงาน */
function savelist() {
selected.value.map((e: any) => {
personal_selected.value.push(e.personalId);
});
@ -533,26 +559,50 @@ const savelist = () => {
"ต้องการยืนยันการส่งรายชื่อไปยังหน่วยงานหรือไม่?"
);
}
};
// popup
const handleModalAddListUpdate = (val: boolean) => {
}
/**
* เป popup งรายชอไปยงหนวยงาน
* @param val true/false
*/
function handleModalAddListUpdate(val: boolean) {
modaladdlist.value = val;
(selected.value = []), (personal_selected.value = []);
};
//
const checkSelected = computed(() => {
if (selected.value.length === 0) {
return true;
}
});
const paginationLabel = (start: number, end: number, total: number) => {
}
function paginationLabel(start: number, end: number, total: number) {
if (paging.value == true) return " " + start + "-" + end + " ใน " + total;
else return start + "-" + end + " ใน " + total;
};
}
const pagination = ref({
page: 1,
rowsPerPage: 10,
watch(containStatus, () => {
if (containStatus.value) {
rows.value = rowsAll.value.filter((x: any) => x.statusId == "CONTAIN");
} else {
rows.value = rowsAll.value.filter((x: any) => x.statusId != "CONTAIN");
}
});
onMounted(async () => {
if (keycloak.tokenParsed != null) {
roleAdmin.value = await keycloak.tokenParsed.role.includes("placement1");
if (roleAdmin.value === false) {
displayAdd.value = false;
visibleColumns.value = [
"position",
"fullName",
"examNumber",
"idCard",
"positionNumber",
"organizationName",
"reportingDate",
"bmaOfficer",
"statusName",
"positionCandidate",
];
}
}
await getTable();
});
</script>
<template>
@ -642,12 +692,14 @@ const pagination = ref({
</div>
</div>
</div>
<div v-else>
<div class="col-4">
<div class="text-weight-medium">-</div>
</div>
</div>
</template>
<template v-else-if="col.name === 'positionCandidate'">
<div
class="text-weight-medium"
@ -659,6 +711,7 @@ const pagination = ref({
{{ props.row.positionCandidate }}
</div>
</template>
<template
v-else-if="col.name === 'reportingDate' && col.value !== '-'"
>
@ -666,16 +719,19 @@ const pagination = ref({
{{ props.row.reportingDate }}
</div>
</template>
<template v-else-if="col.name === 'bmaOfficer'">
<div class="text-weight-medium">
{{ props.row.bmaOfficer !== null ? props.row.bmaOfficer : "-" }}
</div>
</template>
<template v-else-if="col.name === 'draft'">
<div class="text-weight-medium">
{{ props.row.draft }}
</div>
</template>
<template v-else-if="col.name === 'statusName'">
<div class="text-weight-medium">
{{ props.row.statusName }}
@ -738,6 +794,7 @@ const pagination = ref({
</q-item-section>
<q-item-section>ขอผอนผ</q-item-section>
</q-item>
<q-item
v-else-if="
props.row.deferment === true &&
@ -760,6 +817,7 @@ const pagination = ref({
</q-item-section>
<q-item-section>อมลการผอนผ</q-item-section>
</q-item>
<q-separator />
<q-item
v-if="
@ -783,6 +841,7 @@ const pagination = ref({
</q-item-section>
<q-item-section>สละสทธ</q-item-section>
</q-item>
<q-item
v-else-if="props.row.statusId === 'DISCLAIM'"
clickable