Merge branch 'develop' into devTee

This commit is contained in:
STW_TTTY\stwtt 2024-06-19 10:48:37 +07:00
commit defcfd56da
10 changed files with 125 additions and 98 deletions

View file

@ -1,14 +1,24 @@
import env from "../index"
import env from "../index";
const appeal = `${env.API_URI}/discipline/complaint_appeal`
const profile = `${env.API_URI}/profile/keycloak`
const appeal = `${env.API_URI}/discipline/complaint_appeal`;
const profile = `${env.API_URI}/profile/keycloak`;
export default {
profileBykeycloak:()=>`${profile}`,
appealMainList:(status: string, type: string, year: number, page: number, pageSize: number, keyword: string)=>`${appeal}/user?status=${status}&type=${type}&year=${year}&page=${page}&pageSize=${pageSize}&keyword=${keyword}`,
appealAdd:()=>`${appeal}`,
profileBykeycloak: () => `${profile}`,
positionBykeycloak: () => `${env.API_URI}/org/profile/keycloak/position`,
appealByID:(id:string)=>`${appeal}/${id}`,
appealMainList: (
status: string,
type: string,
year: number,
page: number,
pageSize: number,
keyword: string
) =>
`${appeal}/user?status=${status}&type=${type}&year=${year}&page=${page}&pageSize=${pageSize}&keyword=${keyword}`,
appealAdd: () => `${appeal}`,
appealByPrintReport:(id:string)=>`${appeal}/report/${id}`
}
appealByID: (id: string) => `${appeal}/${id}`,
appealByPrintReport: (id: string) => `${appeal}/report/${id}`,
};

View file

@ -12,7 +12,7 @@ const router = useRouter();
const $q = useQuasar();
const mixin = useCounterMixin();
const { fails, success, messageError, showLoader, hideLoader } = mixin;
const { findOrgName, success, messageError, showLoader, hideLoader } = mixin;
const formProfile = reactive<any>({
profileId: "",
@ -24,13 +24,13 @@ const formProfile = reactive<any>({
function getProFile() {
showLoader();
http
.get(config.API.profileBykeycloak())
.get(config.API.positionBykeycloak())
.then((res) => {
const data = res.data.result;
formProfile.profileId = data.id;
formProfile.profileId = data.profileId;
formProfile.fullname = `${data.prefix}${data.firstName} ${data.lastName}`;
formProfile.citizenId = data.citizenId;
formProfile.oc = data.oc;
formProfile.oc = findOrgName(data);
formProfile.position = data.position;
})
.catch((e) => {
@ -53,9 +53,9 @@ function onSubmit(data: any) {
formData.append("title", data.title);
formData.append("description", data.description);
formData.append("type", data.type);
formData.append("year", '');
formData.append("caseType", '');
formData.append("caseNumber", '');
formData.append("year", "");
formData.append("caseType", "");
formData.append("caseNumber", "");
formData.append("file", data.files);
formData.append("oc", data.oc);
formData.append("position", data.position);

View file

@ -119,7 +119,11 @@ function onClickApprove(type: string = "") {
:visible-columns="visibleColumns"
v-model:pagination="pagination"
@update:pagination="props.updatePagination"
selection="multiple"
:selection="
store.tabMainevaluator === '5' || store.tabMainevaluator === '6'
? 'none'
: 'multiple'
"
v-model:selected="store.selected"
>
<template v-slot:header-selection="scope">
@ -218,17 +222,7 @@ function onClickApprove(type: string = "") {
</div>
<div class="row justify-end q-mt-md q-gutter-sm">
<q-btn
v-if="store.tabMainevaluator === '5'"
color="orange"
label="ไม่ผ่านการประเมิน"
@click="onClickApprove('NOTPASSED')"
/>
<q-btn
:color="store.tabMainevaluator === '5' ? 'green' : 'public'"
:label="store.tabMainevaluator === '5' ? 'ผ่านการประเมิน' : 'อนุมัติ'"
@click="onClickApprove('PASSED')"
/>
<q-btn color="public" label="อนุมัติ" @click="onClickApprove('PASSED')" />
</div>
</template>

View file

@ -0,0 +1,3 @@
<template>
<div class="q-pa-md">สรปผลการประเม</div>
</template>

View file

@ -13,7 +13,7 @@ const store = useKpiDataStore();
const route = useRoute();
const router = useRouter();
const id = ref<string>(route.params.id as string)
const id = ref<string>(route.params.id as string);
const work = ref<boolean>(false);
const $q = useQuasar();
const mixin = useCounterMixin();
@ -29,35 +29,37 @@ const {
} = mixin;
const modal = defineModel<boolean>("modal", { required: true });
const isProbation = defineModel<boolean>("isProbation", { required: true });
function close() {
modal.value = false;
}
function getData() {
showLoader();
http
.get(config.API.orgPosition+`/${store.dataProfile.profileId}`)
.then((res) => {
const data = res.data.result.isProbation;
work.value = data;
})
.catch((e) => {
messageError($q, e);
})
.finally(() => {
hideLoader();
});
}
watch(
() => modal.value,
(n) => {
if (n == true) {
getData();
}
}
);
// function getData() {
// showLoader();
// http
// .get(config.API.orgPosition+`/${store.dataProfile.profileId}`)
// .then((res) => {
// const data = res.data.result.isProbation;
// work.value = data;
// })
// .catch((e) => {
// messageError($q, e);
// })
// .finally(() => {
// hideLoader();
// });
// }
// watch(
// () => modal.value,
// (n) => {
// if (n == true) {
// getData();
// }
// }
// );
</script>
<template>
<q-dialog persistent v-model="modal">
<q-card bordered style="min-width: 20vw">
@ -66,7 +68,9 @@ watch(
<q-card-section class="q-pa-sm">
<div class="row">
<div class="col-12 text-center bg-grey-1 q-pa-md rounded-borders">
<span class="text-weight-bold text-teal">{{work ? `อยู่ระหว่างทดลองงาน`:'พ้นจากการทดลองงาน'}}</span>
<span class="text-weight-bold text-teal">{{
isProbation ? `อยู่ระหว่างทดลองงาน` : "-"
}}</span>
</div>
</div>
</q-card-section>

View file

@ -4,7 +4,7 @@ import { useKpiDataStore } from "@/modules/08_KPI/store";
import { useRoute } from "vue-router";
import Assessment from "@/modules/08_KPI/components/Tab/01_Assessment.vue";
import Evaluator from "@/modules/08_KPI/components/Tab/02_Evaluator.vue";
import Result from "@/modules/08_KPI/components/Tab/04_Result.vue";
import CommanderAbove from "@/modules/08_KPI/components/Tab/03_CommanderAbove.vue";
import CommanderAboveOneStep from "@/modules/08_KPI/components/Tab/04_CommanderAboveOneStep.vue";
import File from "@/modules/08_KPI/components/Tab/05_File.vue";
@ -25,6 +25,10 @@ const itemsTab = ref<any>([
name: "3",
label: "รายงานผลสำเร็จของงาน",
},
{
name: "4",
label: "สรุปผลการประเมิน",
},
{
name: "5",
label: "ไฟล์เอกสาร",
@ -59,6 +63,7 @@ const splitterModel = ref<number>(12);
label="รายงานผลสำเร็จของงาน"
:disable="store.tabOpen < 3"
/>
<q-tab name="4" label="สรุปผลการประเมิน" />
<q-tab name="5" label="ไฟล์เอกสาร" />
</q-tabs>
</template>
@ -81,7 +86,7 @@ const splitterModel = ref<number>(12);
<Assessment v-if="store.tabMain === '1'" />
<Assessment v-if="store.tabMain === '2'" :type="'evaluator'" />
<Assessment v-if="store.tabMain === '3'" :type="'commander'" />
<Assessment v-if="store.tabMain === '4'" :type="'commanderHigh'" />
<Result v-if="store.tabMain === '4'" :type="'result'" />
<File v-if="store.tabMain === '5'" />
</q-tab-panel>
</q-tab-panels>

View file

@ -47,7 +47,7 @@ const visibleColumns = ref<string[]>(
"achievement",
"evaluationResults",
]
: ["includingName", "target", "weight"]
: ["includingName", "target", "point", "weight"]
);
const columns = ref<QTableProps["columns"]>([
{

View file

@ -108,7 +108,7 @@ const columns = ref<QTableProps["columns"]>([
const visibleColumns = ref<string[]>(
store.tabOpen === 3 && store.tabMain === "3"
? ["name", "level", "point", "weight", "summary"]
: ["name", "level", "weight"]
: ["name", "level", "point", "weight"]
);
const typeCompetency = ref<string>("");

View file

@ -130,31 +130,37 @@ export const useKpiDataStore = defineStore("KPIDate", () => {
}
async function checkCompetency() {
const position = await dataEvaluation.value.position;
const executiveName = await dataEvaluation.value.posExecutiveName;
// const position = await dataEvaluation.value.position;
// const executiveName = await dataEvaluation.value.posExecutiveName;
const posTypeName = dataEvaluation.value.posTypeName;
const posLevelName = dataEvaluation.value.posLevelName;
if (
position == "ผู้ตรวจราชการกรุงเทพมหานคร" ||
position == "ผู้ตรวจราชการ"
) {
// if (
// position == "ผู้ตรวจราชการกรุงเทพมหานคร" ||
// position == "ผู้ตรวจราชการ"
// ) {
// competencyType.value = competencyType.value.filter(
// (x: DataOptions) => x.id == "HEAD" || x.id == "INSPECTOR"
// );
// } else if (position == "ผู้อำนวยการเขต") {
// competencyType.value = competencyType.value.filter(
// (x: DataOptions) => x.id == "HEAD" || x.id == "DIRECTOR"
// );
// } else {
if (posTypeName == "อำนวยการ" || posTypeName == "บริหาร") {
competencyType.value = competencyType.value.filter(
(x: DataOptions) => x.id == "HEAD" || x.id == "INSPECTOR"
);
} else if (position == "ผู้อำนวยการเขต") {
competencyType.value = competencyType.value.filter(
(x: DataOptions) => x.id == "HEAD" || x.id == "DIRECTOR"
(x: DataOptions) =>
x.id == "HEAD" ||
x.id == "EXECUTIVE" ||
x.id == "INSPECTOR" ||
x.id == "DIRECTOR"
);
} else {
if (executiveName == null) {
competencyType.value = competencyType.value.filter(
(x: DataOptions) => x.id == "HEAD" || x.id == "GROUP"
);
} else {
competencyType.value = competencyType.value.filter(
(x: DataOptions) => x.id == "HEAD" || x.id == "EXECUTIVE"
);
}
competencyType.value = competencyType.value.filter(
(x: DataOptions) => x.id == "HEAD" || x.id == "GROUP"
);
}
// }
}
const defaultCompetencyCoreLevel = ref<number>();
@ -231,18 +237,18 @@ export const useKpiDataStore = defineStore("KPIDate", () => {
const rolePerson = ref<string>("USER"); //"USER" | "EVALUATOR" | "COMMANDER", "COMMANDERHIGH"
const tabOpen = ref<number>(1);
async function checkStep() {
const role =
dataEvaluation.value.profileId == await dataProfile.value.profileId
? "USER"
: dataEvaluation.value.evaluatorId == await dataProfile.value.profileId
? "EVALUATOR"
: dataEvaluation.value.commanderId == await dataProfile.value.profileId
? "COMMANDER"
: dataEvaluation.value.commanderHighId == await dataProfile.value.profileId
? "COMMANDERHIGH"
: "";
console.log("🚀 ~ checkStep ~ role:", role)
const role = await (dataEvaluation.value.profileId ==
dataProfile.value.profileId
? "USER"
: dataEvaluation.value.evaluatorId == (await dataProfile.value.profileId)
? "EVALUATOR"
: dataEvaluation.value.commanderId == (await dataProfile.value.profileId)
? "COMMANDER"
: dataEvaluation.value.commanderHighId ==
(await dataProfile.value.profileId)
? "COMMANDERHIGH"
: "");
// console.log("🚀 ~ checkStep ~ role:", role);
rolePerson.value = role;
switch (dataEvaluation.value.evaluationStatus) {

View file

@ -63,7 +63,7 @@ async function fetchEvaluation() {
.get(config.API.kpiEvaluation + `/${id.value}`)
.then(async (res) => {
const data = res.data.result;
console.log("🚀 ~ .then ~ data:", data)
// console.log("🚀 ~ .then ~ data:", data);
store.dataEvaluation = await data;
formProfile.status = store.convertStatus(data.evaluationStatus);
@ -89,10 +89,10 @@ async function fetchEvaluation() {
async function getProfile() {
await http
.get(config.API.profilePosition())
.get(config.API.orgPosition + `/${store.dataEvaluation.profileId}`)
.then(async (res) => {
const data = res.data.result;
store.dataProfile = await data;
const data = await res.data.result;
store.dataProfile = data;
})
.catch((e) => {
messageError($q, e);
@ -252,8 +252,8 @@ function filterOption(val: any, update: Function, refData: string) {
// }
async function getAll() {
await getProfile();
await fetchEvaluation();
await getProfile();
await getOrgOp();
await store.checkStep();
}
@ -335,7 +335,7 @@ function sendToCommander() {
messageError($q, e);
})
.finally(() => {
hideLoader()
hideLoader();
});
});
}
@ -418,7 +418,8 @@ onMounted(async () => {
store.indicatorWeightTotal != 100) ||
(store.dataEvaluation.posExecutiveName != null &&
(store.indicatorWeight1Total != 100 ||
store.indicatorWeight2Total != 20)) && store.dataEvaluation.evaluationStatus == 'NEW'
store.indicatorWeight2Total != 20) &&
store.dataEvaluation.evaluationStatus == 'NEW')
"
class="text-red"
>*ำหน(อยละ) ผลสมฤทธของงานไมกตอง</span
@ -465,7 +466,8 @@ onMounted(async () => {
<q-btn
v-if="
store.rolePerson == 'USER' &&
store.dataEvaluation.evaluationStatus == 'EVALUATING' && store.tabMain == '3'
store.dataEvaluation.evaluationStatus == 'EVALUATING' &&
store.tabMain == '3'
"
unelevated
round
@ -831,7 +833,10 @@ onMounted(async () => {
</q-dialog> -->
<DialogGovernment v-model:modal="modalGovernment" />
<DialogStatus v-model:modal="modalStatus" />
<DialogStatus
v-model:modal="modalStatus"
v-model:is-probation="store.dataProfile.isProbation"
/>
</template>
<style>
.bg-toolbar {