รายการการประเมินผลการปฏิบัติราชการระดับบุคคล => ผูก API

This commit is contained in:
DESKTOP-1R2VSQH\Lenovo ThinkPad E490 2024-05-13 14:38:55 +07:00
parent 03ea92dbe9
commit aa63c96cba
7 changed files with 219 additions and 57 deletions

View file

@ -3,13 +3,20 @@ import { ref } from "vue";
import { useRouter } from "vue-router";
import type { QTableProps } from "quasar";
import type { ResEvaluatorAssessor } from "@/modules/08_KPI/interface/response/index";
import type { FormQuery } from "@/modules/08_KPI/interface/request/index";
const router = useRouter();
const visibleColumns = defineModel<string[]>("visibleColumns", {});
const columns = defineModel<QTableProps["columns"]>("columns", {});
const rows = defineModel<any[]>("rows", {});
const formQuery = defineModel<any>("formQuery", {});
const total = defineModel<number>("total", {});
const maxPage = defineModel<number>("maxPage", {});
const visibleColumns = defineModel<string[]>("visibleColumns", {
required: true,
});
const columns = defineModel<QTableProps["columns"]>("columns", {
required: true,
});
const rows = defineModel<ResEvaluatorAssessor[]>("rows", { required: true });
const formQuery = defineModel<FormQuery>("formQuery", { required: true });
const total = defineModel<number>("total", { required: true });
const maxPage = defineModel<number>("maxPage", { required: true });
const props = defineProps({
updatePagination: { type: Function },

View file

@ -1,23 +1,45 @@
<script setup lang="ts">
import { ref } from "vue";
import { useQuasar } from "quasar";
import { useRouter } from "vue-router";
import config from "@/app.config";
import http from "@/plugins/http";
import type { QTableProps } from "quasar";
import type { FormQuery } from "@/modules/08_KPI/interface/request/index";
import type { ResEvaluatorAssessor } from "@/modules/08_KPI/interface/response/index";
import { useCounterMixin } from "@/stores/mixin";
import { useKpiDataStore } from "@/modules/08_KPI/store";
const $q = useQuasar();
const router = useRouter();
const visibleColumns = defineModel<string[]>("visibleColumns", {});
const columns = defineModel<QTableProps["columns"]>("columns", {});
const rows = defineModel<any[]>("rows", {});
const formQuery = defineModel<any>("formQuery", {});
const total = defineModel<number>("total", {});
const maxPage = defineModel<number>("maxPage", {});
const store = useKpiDataStore();
const {
showLoader,
hideLoader,
messageError,
dialogConfirm,
dialogMessageNotify,
success,
} = useCounterMixin();
const visibleColumns = defineModel<string[]>("visibleColumns", {
required: true,
});
const columns = defineModel<QTableProps["columns"]>("columns", {
required: true,
});
const rows = defineModel<ResEvaluatorAssessor[]>("rows", { required: true });
const formQuery = defineModel<FormQuery>("formQuery", { required: true });
const total = defineModel<number>("total", { required: true });
const maxPage = defineModel<number>("maxPage", { required: true });
const props = defineProps({
updatePagination: { type: Function },
fetchList: { type: Function },
});
const selected = ref([]);
function redirectViewDetail(id: string) {
router.push(`/KPI-evaluator/${id}`);
}
@ -29,13 +51,60 @@ const pagination = ref({
rowsPerPage: 10,
});
function test() {
console.log(selected.value);
function onClickApprove(type: string = "") {
if (store.selected.length !== 0) {
const userIds = store.selected.map((user: ResEvaluatorAssessor) => user.id);
dialogConfirm(
$q,
() => {
showLoader();
const url =
store.tabMainevaluator === "2" || store.tabMainevaluator === "4"
? "change-status"
: store.tabMainevaluator === "3"
? "req-edit"
: "result-status";
const body = {
status:
store.tabMainevaluator === "2"
? "APPROVE"
: store.tabMainevaluator === "3"
? "DONE"
: store.tabMainevaluator === "4"
? "EVALUATING"
: store.tabMainevaluator === "5"
? type
: undefined,
id: userIds,
};
http
.post(config.API.kpiEvaluation + `/admin/${url}`, body)
.then(() => {
store.selected = [];
props.fetchList?.();
success(
$q,
store.tabMainevaluator === "5"
? "ยืนยันการประเมินสำเร็จ"
: "อนุมัติสำเร็จ"
);
})
.catch((err) => {
messageError($q, err);
})
.finally(() => {
hideLoader();
});
},
store.tabMainevaluator === "5" ? "ยืนยันการประเมิน" : "ยืนยันการอนุมัติ"
);
} else {
dialogMessageNotify($q, "เลือกอย่างน้อย 1 รายการ");
}
}
</script>
<template>
<!-- <q-btn @click="test" /> -->
<div class="col-12">
<d-table
ref="table"
@ -51,7 +120,7 @@ function test() {
v-model:pagination="pagination"
@update:pagination="props.updatePagination"
selection="multiple"
v-model:selected="selected"
v-model:selected="store.selected"
>
<template v-slot:header-selection="scope">
<q-checkbox keep-color color="primary" dense v-model="scope.selected" />
@ -99,6 +168,20 @@ function test() {
</template>
</d-table>
</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')"
/>
</div>
</template>
<style scoped></style>