Merge branch 'develop' into devTee
This commit is contained in:
commit
defcfd56da
10 changed files with 125 additions and 98 deletions
|
|
@ -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}`,
|
||||
};
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
|
|
|
|||
|
|
@ -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>
|
||||
|
||||
|
|
|
|||
3
src/modules/08_KPI/components/Tab/04_Result.vue
Normal file
3
src/modules/08_KPI/components/Tab/04_Result.vue
Normal file
|
|
@ -0,0 +1,3 @@
|
|||
<template>
|
||||
<div class="q-pa-md">สรุปผลการประเมิน</div>
|
||||
</template>
|
||||
|
|
@ -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>
|
||||
|
|
|
|||
|
|
@ -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>
|
||||
|
|
|
|||
|
|
@ -47,7 +47,7 @@ const visibleColumns = ref<string[]>(
|
|||
"achievement",
|
||||
"evaluationResults",
|
||||
]
|
||||
: ["includingName", "target", "weight"]
|
||||
: ["includingName", "target", "point", "weight"]
|
||||
);
|
||||
const columns = ref<QTableProps["columns"]>([
|
||||
{
|
||||
|
|
|
|||
|
|
@ -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>("");
|
||||
|
|
|
|||
|
|
@ -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) {
|
||||
|
|
|
|||
|
|
@ -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 {
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue