hrms-mgt/src/modules/05_placement/components/PersonalList/Detail.vue

126 lines
4 KiB
Vue
Raw Normal View History

2023-06-06 14:32:36 +07:00
<script setup lang="ts">
2023-07-12 17:21:27 +07:00
import { onMounted, ref } from "vue";
2023-06-06 14:32:36 +07:00
import { defineAsyncComponent } from "@vue/runtime-core";
import { useRouter, useRoute } from "vue-router";
import cardTop from "@/modules/05_placement/components/PersonalList/StatCard.vue";
2023-07-07 09:55:03 +07:00
import keycloak from "@/plugins/keycloak";
2023-07-11 17:55:06 +07:00
import http from "@/plugins/http";
import config from "@/app.config";
2023-07-12 16:50:01 +07:00
import { useCounterMixin } from "@/stores/mixin"
import { useQuasar } from "quasar"
import { usePlacementDataStore } from "@/modules/05_placement/store";
const DataStore = usePlacementDataStore();
2023-07-07 09:55:03 +07:00
2023-07-12 16:50:01 +07:00
const $q = useQuasar
const mixin = useCounterMixin()
const { messageError, showLoader, hideLoader } = mixin
2023-07-07 09:55:03 +07:00
let roleAdmin = ref<boolean>(false);
const router = useRouter();
2023-07-11 17:55:06 +07:00
const route = useRoute();
const examId = route.params.examId;
2023-07-12 17:21:27 +07:00
const year = ref<string>("");
const round = ref<string>("");
const title = ref<string>("");
const examData = ref<any>();
2023-06-06 14:32:36 +07:00
const AddTablePosition = defineAsyncComponent(
() => import("@/modules/05_placement/components/PersonalList/Table.vue")
2023-06-06 14:32:36 +07:00
);
const stat = ref<any>({
2023-07-11 17:55:06 +07:00
total: 0,
unContain: 0,
prepareContain: 0,
contain: 0,
disclaim: 0,
});
2023-07-07 09:55:03 +07:00
2023-07-11 17:55:06 +07:00
const getStat = async () => {
const examIdString = Array.isArray(examId) ? examId[0] : examId;
2023-07-12 16:50:01 +07:00
await http
.get(config.API.getStatCard(examIdString))
.then((res) => {
const statCard = res.data.result;
// อัปเดตค่าในตัวแปร stat
stat.value = {
total: statCard.total,
unContain: statCard.unContain,
prepareContain: statCard.prepareContain,
contain: statCard.contain,
disclaim: statCard.disclaim,
};
2023-07-12 17:21:27 +07:00
console.log("🚀 ~ file: Table.vue:96 ~ getStatCard ~ data:", statCard);
})
.catch((e) => {
messageError($q, e);
})
2023-07-11 17:55:06 +07:00
};
2023-07-07 09:55:03 +07:00
onMounted(async () => {
if (DataStore.DataMainOrig.length == 0) {
await fetchPlacementData();
}
if (keycloak.tokenParsed != null) {
roleAdmin.value = await keycloak.tokenParsed.role.includes("placement1");
}
await getStat()
examData.value = await DataStore.DataMainOrig.find((x: any) => x.id == examId);
title.value = examData.value.examRound;
round.value = examData.value.examOrder;
year.value = examData.value.fiscalYear;
2023-07-07 09:55:03 +07:00
});
2023-07-12 16:50:01 +07:00
const fetchPlacementData = async () => {
showLoader();
http
.get(config.API.MainDetail(0))
.then(async (res) => {
DataStore.DataMainOrig = res.data.result;
})
.catch((e) => {
console.log(e);
})
.finally(() => {
hideLoader();
});
};
2023-06-06 14:32:36 +07:00
</script>
2023-06-02 09:43:28 +07:00
<template>
2023-06-06 14:32:36 +07:00
<div class="col-xs-12 col-sm-12 col-md-8 col-lg-8 row">
<div class="toptitle">
<q-btn icon="mdi-arrow-left" unelevated round dense flat color="primary" class="q-mr-sm" @click="router.go(-1)" />
รายชอผสอบในรอบ {{ title }} ครงท {{ round }} {{ year }}
</div>
<q-card bordered class="q-py-sm row col-12">
2023-06-06 14:32:36 +07:00
<div class="col-12 row bg-white">
<div class="fit q-px-md q-py-sm">
2023-06-06 14:32:36 +07:00
<div class="row col-12 q-col-gutter-md fit">
<cardTop :amount="stat.total" label="จำนวนทั้งหมด" color="#016987" />
<cardTop v-if="roleAdmin" :amount="stat.unContain" label="จำนวนที่ยังไม่บรรจุ" color="#02A998" />
<cardTop :amount="stat.prepareContain" label="จำนวนที่เตรียมบรรจุ" color="#2EA0FF" />
<cardTop :amount="stat.contain" label="จำนวนที่บรรจุแล้ว" color="#4154B3" />
<cardTop :amount="stat.disclaim" label="จำนวนที่สละสิทธิ์" color="#FF5C5F" />
</div>
2023-06-06 14:32:36 +07:00
</div>
</div>
</q-card>
2023-06-06 14:32:36 +07:00
</div>
<q-card flat bordered class="col-12 q-mt-sm q-pt-sm">
<div>
<AddTablePosition :statCard="getStat" class="q-pa-none" @get-stat="getStat" />
2023-06-06 14:32:36 +07:00
</div>
</q-card>
2023-06-02 09:43:28 +07:00
</template>
2023-06-06 14:32:36 +07:00
<style lang="scss">
.cardNum {
border-radius: 5px;
padding-left: 8px;
}
</style>