From b347fd064e370b455bd5a359003aa36c1d55f198 Mon Sep 17 00:00:00 2001 From: "DESKTOP-1R2VSQH\\Lenovo ThinkPad E490" Date: Mon, 2 Dec 2024 11:26:26 +0700 Subject: [PATCH] kpi --- .../Tab/Dialog/01_FormIndicator.vue | 15 +- .../Tab/Dialog/04_FormCompetency.vue | 10 +- .../components/Tab/Dialog/DialogEvalute.vue | 125 +++++++++----- .../Tab/Dialog/DialogGovernment.vue | 2 +- .../components/results/tableIndividual.vue | 8 +- .../components/results/tableResults.vue | 10 +- src/modules/14_KPI/views/01_kpiRound.vue | 163 +++++++++--------- src/modules/14_KPI/views/02_kpiLists.vue | 14 +- src/modules/14_KPI/views/detailView.vue | 13 +- src/modules/14_KPI/views/report.vue | 6 +- 10 files changed, 193 insertions(+), 173 deletions(-) diff --git a/src/modules/14_KPI/components/Tab/Dialog/01_FormIndicator.vue b/src/modules/14_KPI/components/Tab/Dialog/01_FormIndicator.vue index 9afdba143..1a24bb6c7 100644 --- a/src/modules/14_KPI/components/Tab/Dialog/01_FormIndicator.vue +++ b/src/modules/14_KPI/components/Tab/Dialog/01_FormIndicator.vue @@ -108,6 +108,7 @@ function fetchListPlan() { formFilter.nodeId = store.dataProfile.nodeId; formFilter.node = store.dataProfile.node; formFilter.year = formFilter?.year ? formFilter.year.toString() : ""; + formFilter.keyword = formFilter.keyword.trim(); // const kpiPeriodId = store.dataEvaluation.kpiPeriodId; showLoader(); @@ -164,6 +165,8 @@ function fetchListRole() { formFilter.node = store.dataProfile.node; formFilter.year = formFilter?.year ? formFilter.year.toString() : ""; formFilter.position = store.dataProfile.position; + formFilter.keyword = formFilter.keyword.trim(); + showLoader(); http .post(config.API.kpiRole + `/search-kpi-role`, formFilter) @@ -218,8 +221,10 @@ function fetchListSpecial() { formFilter.node = store.dataProfile.node; formFilter.year = formFilter?.year ? formFilter.year.toString() : ""; + showLoader(); + const body = { - keyword: formFilter.keyword, + keyword: formFilter.keyword.trim(), period: formFilter.period, year: formFilter.year, pageSize: formFilter.pageSize, @@ -575,13 +580,7 @@ watch( @keydown.enter.prevent="fetchNewList()" > diff --git a/src/modules/14_KPI/components/Tab/Dialog/04_FormCompetency.vue b/src/modules/14_KPI/components/Tab/Dialog/04_FormCompetency.vue index dd518c9dc..4e760635d 100644 --- a/src/modules/14_KPI/components/Tab/Dialog/04_FormCompetency.vue +++ b/src/modules/14_KPI/components/Tab/Dialog/04_FormCompetency.vue @@ -212,7 +212,7 @@ function getData() { } /** ฟิลเตอร์ */ -function filterTxt(val: any) { +function filterTxt(val: string) { listTarget.value = listTargetMain.value.filter( (v: any) => v.name.indexOf(val) > -1 ); @@ -320,13 +320,7 @@ watch( @update:model-value="filterTxt" > diff --git a/src/modules/14_KPI/components/Tab/Dialog/DialogEvalute.vue b/src/modules/14_KPI/components/Tab/Dialog/DialogEvalute.vue index 2da533f73..6faac6049 100644 --- a/src/modules/14_KPI/components/Tab/Dialog/DialogEvalute.vue +++ b/src/modules/14_KPI/components/Tab/Dialog/DialogEvalute.vue @@ -36,14 +36,12 @@ const searchRules = ref(false); const selected = ref([]); const personId = ref(""); const modalPersonal = ref(false); -const searchRef = ref(null); const rows = ref([]); const type = ref("citizenId"); const search = ref(""); const typeOps = ref([ { id: "citizenId", name: "เลขประจำตัวประชาชน" }, - { id: "firstname", name: "ชื่อ" }, - { id: "lastname", name: "นามสกุล" }, + { id: "fullName", name: "ชื่อ-นามสกุล" }, ]); const modalDialog = defineModel("modal", { required: true }); @@ -152,6 +150,11 @@ function onCloseDialog() { selected.value = []; search.value = ""; type.value = "citizenId"; + roundDialgOp.value = []; + evaluatorIdMainOp.value = []; + commanderIdMainOp.value = []; + commanderHighMainOp.value = []; + isRoundClose.value = false; } /** ดึงข้อมูลตามรอบการประเมิน */ @@ -192,26 +195,26 @@ function fetchRoundOption() { * @param update function Quasar * @param refData เเยกประเภท */ -function filterOption(val: any, update: Function, refData: string) { +function filterOption(val: string, update: Function, refData: string) { switch (refData) { case "evaluatorIdOp": update(() => { evaluatorIdOp.value = evaluatorIdMainOp.value.filter( - (v: any) => v.name.indexOf(val) > -1 + (v: DataOption) => v.name.indexOf(val) > -1 ); }); break; case "commanderIdOp": update(() => { commanderIdOp.value = commanderIdMainOp.value.filter( - (v: any) => v.name.indexOf(val) > -1 + (v: DataOption) => v.name.indexOf(val) > -1 ); }); break; case "commanderHighOp": update(() => { commanderHighOp.value = commanderHighMainOp.value.filter( - (v: any) => v.name.indexOf(val) > -1 + (v: DataOption) => v.name.indexOf(val) > -1 ); }); break; @@ -229,37 +232,35 @@ function checkClosed() { async function searchInput(check: boolean) { if (check) { searchRules.value = check; - searchRef.value.validate(); - if (!searchRef.value.hasError) { - showLoader(); - const body = { - fieldName: type.value, - keyword: search.value, - }; - await http - .post( - config.API.orgSearchPersonal() + - `?page=${query.page}&pageSize=${query.pageSize}`, - body - ) - .then((res) => { - const data = res.data.result; - maxPage.value = Math.ceil(data.total / query.pageSize); - total.value = data.total; - rows.value = data.data; - }) - .catch((err) => { - messageError($q, err); - }) - .finally(() => { - hideLoader(); - }); - } - setTimeout(() => { - searchRules.value = false; - }, 100); + showLoader(); + const body = { + fieldName: type.value, + keyword: search.value.trim(), + }; + await http + .post( + config.API.orgSearchPersonal() + + `?page=${query.page}&pageSize=${query.pageSize}`, + body + ) + .then((res) => { + const data = res.data.result; + maxPage.value = Math.ceil(data.total / query.pageSize); + total.value = data.total; + + rows.value = data.data; + }) + .catch((err) => { + messageError($q, err); + }) + .finally(() => { + hideLoader(); + }); } + setTimeout(() => { + searchRules.value = false; + }, 100); } /** update เมื่อเปลี่ยน option */ @@ -356,6 +357,17 @@ async function updatePagination(initialPagination: NewPagination) { query.pageSize = initialPagination.rowsPerPage; } +/** + * class input + * @param val + */ +function classInput(val: boolean) { + return { + "full-width cursor-pointer ": val, + "full-width cursor-pointer inputgreen": !val, + }; +} + watch( () => modalDialog.value, (n) => { @@ -380,6 +392,7 @@ watch(
+
@@ -399,19 +412,16 @@ watch(
+
filterOption(inputValue, doneFn,'commanderHighOp' ) " > @@ -683,7 +714,7 @@ watch( รอบการประเมินนี้ปิดแล้ว
{ if (n == true) { getData(); - } + } else rows.value = []; } ); diff --git a/src/modules/14_KPI/components/results/tableIndividual.vue b/src/modules/14_KPI/components/results/tableIndividual.vue index 8085e24a6..42a7abea7 100644 --- a/src/modules/14_KPI/components/results/tableIndividual.vue +++ b/src/modules/14_KPI/components/results/tableIndividual.vue @@ -296,13 +296,7 @@ onMounted(async () => { @keydown.enter="onSearchData" > { @keydown.enter="onSearchData" > { outlined @clear="(result = ''), (resultOp = store.resultsOptions)" use-input + hide-selected + fill-input :clearable="result !== ''" @update:model-value="onSearchData()" input-debounce="0" diff --git a/src/modules/14_KPI/views/01_kpiRound.vue b/src/modules/14_KPI/views/01_kpiRound.vue index b4b8d30c2..2bfe6573f 100644 --- a/src/modules/14_KPI/views/01_kpiRound.vue +++ b/src/modules/14_KPI/views/01_kpiRound.vue @@ -356,9 +356,9 @@ onMounted(async () => {
รายการรอบการประเมินผลการปฏิบัติหน้าที่ราชการ
- - -
+ +
+
{ + เพิ่ม -
- -
+ + { style="min-width: 140px" />
- -
- - - - - +
+ + + + + +
diff --git a/src/modules/14_KPI/views/02_kpiLists.vue b/src/modules/14_KPI/views/02_kpiLists.vue index 736d34ff0..3b2191223 100644 --- a/src/modules/14_KPI/views/02_kpiLists.vue +++ b/src/modules/14_KPI/views/02_kpiLists.vue @@ -143,7 +143,7 @@ async function fetchList() { page: formQuery.page, pageSize: formQuery.pageSize, kpiPeriodId: store.formQuery.round, - keyword: store.formQuery.keyword, + keyword: store.formQuery.keyword.trim(), status: formQuery.status === "" ? undefined : formQuery.status, results: formQuery.results === "" ? undefined : formQuery.results, }; @@ -322,13 +322,7 @@ onMounted(async () => { @keydown.enter.prevent="changRound" > { outlined @update:model-value="(formQuery.page = 1), fetchList()" use-input + hide-selected + fill-input @clear=" (formQuery.status = ''), (statusOp = store.statusOptions) " @@ -413,6 +409,8 @@ onMounted(async () => { outlined @update:model-value="(formQuery.page = 1), fetchList()" use-input + hide-selected + fill-input @clear=" (formQuery.results = ''), (resultOp = store.resultsOptions) " diff --git a/src/modules/14_KPI/views/detailView.vue b/src/modules/14_KPI/views/detailView.vue index ced26c6e5..7a87cd9c0 100644 --- a/src/modules/14_KPI/views/detailView.vue +++ b/src/modules/14_KPI/views/detailView.vue @@ -409,7 +409,6 @@ async function fetchProfileEvaluator(id: string) { http .get(config.API.profilePosition + `/${id}`) .then((res) => { - console.log(res.data.result); const data = res.data.result; evaluator.value.fullName = data.prefix + data.firstName + " " + data.lastName; @@ -892,7 +891,9 @@ onUnmounted(() => { :rules="[ (val:string) => !!val || `${'กรุณาเลือกผู้ประเมิน'}`, ]" use-input - @filter="(inputValue:any, + hide-selected + fill-input + @filter="(inputValue:string, doneFn:Function) => filterOption(inputValue, doneFn,'evaluatorIdOp' ) " /> @@ -930,7 +931,9 @@ onUnmounted(() => { map-options class="inputgreen" use-input - @filter="(inputValue:any, + hide-selected + fill-input + @filter="(inputValue:string, doneFn:Function) => filterOption(inputValue, doneFn,'commanderIdOp' ) " > @@ -983,7 +986,9 @@ onUnmounted(() => { map-options use-input class="inputgreen" - @filter="(inputValue:any, + hide-selected + fill-input + @filter="(inputValue:string, doneFn:Function) => filterOption(inputValue, doneFn,'commanderHighOp' ) " > diff --git a/src/modules/14_KPI/views/report.vue b/src/modules/14_KPI/views/report.vue index 9fabdfa2b..11cfc7c8d 100644 --- a/src/modules/14_KPI/views/report.vue +++ b/src/modules/14_KPI/views/report.vue @@ -429,6 +429,7 @@ function onCloseModal() { * function fetch รายชื่อข้อมูลทะเบียนประวัติ */ function fetchListPerson() { + rowsPerson.value = [] showLoader(); let queryParams = { page: formFilter.page, @@ -796,13 +797,13 @@ onMounted(() => { class="bg-white" v-model="formFilter.searchKeyword" outlined - clearable hide-bottom-space dense label="คำค้น" > +