From 7d95116c2560b4fecf1432a7686cc747e61df4a1 Mon Sep 17 00:00:00 2001 From: "DESKTOP-1R2VSQH\\Lenovo ThinkPad E490" Date: Fri, 25 Jul 2025 15:08:35 +0700 Subject: [PATCH] fix fetch profilePosition --- src/interface/Main.ts | 84 ++++++++++++------- .../components/viewstep/viewStep1.vue | 62 ++++++++------ src/modules/07_appealComplain/views/Add.vue | 45 ++++++---- 3 files changed, 118 insertions(+), 73 deletions(-) diff --git a/src/interface/Main.ts b/src/interface/Main.ts index 6d31fa4..59249cb 100644 --- a/src/interface/Main.ts +++ b/src/interface/Main.ts @@ -36,35 +36,63 @@ interface InformationData { } interface DataProfile { - profileId: string | null; - prefix: string; - rank: string; - firstName: string; - lastName: string; - citizenId: string; - position: string; - posMaster: string | null; - posLevelName: string | null; - posLevelRank: string | null; - posLevelId: string | null; - posTypeName: string | null; - posTypeRank: string | null; - posTypeId: string | null; - posExecutiveName: string; - posExecutivePriority: string | null; - posExecutiveId: string | null; - rootId: string | null; - root: string; - child1Id: string | null; - child1: string | null; - child2Id: string | null; - child2: string | null; - child3Id: string | null; - child3: string | null; - child4Id: string | null; + amountSpecial: number; + avatar: string; + avatarName: string; + birthDate: string; + child1: string; + child1DnaId: string; + child1Id: string; + child1ShortName: string; + child2: string; + child2DnaId: string; + child2Id: string; + child2ShortName: string; + child3: string; + child3DnaId: string; + child3Id: string; + child3ShortName: string; child4: string | null; - node: string | null; - nodeId: string | null; + child4DnaId: string | null; + child4Id: string | null; + child4ShortName: string | null; + citizenId: string; + dateRetireLaw: string; + dateStart: string; + firstName: string; + isDirector: boolean; + isProbation: boolean; + keycloak: string; + lastName: string; + leaveDate: string | null; + node: number; + nodeDnaId: string; + nodeId: string; + nodeShortName: string; + posExecutiveId: string | null; + posExecutiveName: string | null; + posExecutivePriority: number | null; + posLevelId: string; + posLevelName: string; + posLevelRank: number; + posMaster: number; + posMasterNo: number; + posNo: string; + posTypeId: string; + posTypeName: string; + posTypeRank: number; + position: string; + positionArea: string | null; + positionExecutiveField: string | null; + prefix: string; + profileId: string; + profileType: string; + rank: string | null; + root: string; + rootDnaId: string; + rootId: string; + rootShortName: string; + salary: number; } export type { ProfileData, InformationData, DataProfile }; diff --git a/src/modules/06_evaluate/components/viewstep/viewStep1.vue b/src/modules/06_evaluate/components/viewstep/viewStep1.vue index 9077145..7834f54 100644 --- a/src/modules/06_evaluate/components/viewstep/viewStep1.vue +++ b/src/modules/06_evaluate/components/viewstep/viewStep1.vue @@ -9,8 +9,10 @@ import config from "@/app.config"; import { useCounterMixin } from "@/stores/mixin"; import { useEvaluateDetailStore } from "@/modules/06_evaluate/stores/evaluteDetail"; import { useEvaluateStore } from "@/modules/06_evaluate/store"; +import { useDataStore } from "@/stores/data"; /** importType*/ +import type { DataProfile } from "@/interface/Main"; import type { EducationForm, CertificatesForm, @@ -24,6 +26,7 @@ import HeaderDialog from "@/components/DialogHeader.vue"; const mixin = useCounterMixin(); const store = useEvaluateDetailStore(); const storeEva = useEvaluateStore(); +const storeData = useDataStore(); const $q = useQuasar(); const route = useRoute(); const { showLoader, hideLoader, messageError, date2Thai, findOrgNameHtml } = @@ -75,34 +78,39 @@ const formDetail = reactive({ /** function เรียกข้อมูลตรวจสอบคุณสมบัติ*/ async function fetchDetail() { - await http - .get(config.API.profilePosition()) - .then(async (res) => { - const data = await res.data.result; - formDetail.root = data.root; - formDetail.rootId = data.rootId; - formDetail.userId = data.id; - formDetail.citizenId = data.citizenId; - formDetail.prefix = data.prefix; - formDetail.fullName = `${data.firstName} ${data.lastName}`; - formDetail.firstName = data.firstName; - formDetail.lastName = data.lastName; - formDetail.position = data.position; - formDetail.oc = data.rootShortName; - formDetail.positionLevel = data.posLevelName; - formDetail.posNo = data.posNo ?? ""; - formDetail.birthDate = data.birthDate; - // formDetail.govAge = data.govAge; // ยังไม่มี - formDetail.salary = data.salary; - formDetail.posExecutive = data.posExecutive; - formDetail.positionArea = data.positionArea; - await fetchDataAllDetail(); + try { + if (!storeData.dataprofilePosition) { + const res = await http.get(config.API.profilePosition()); + await updateFormDetail(res.data.result); + } else { + await updateFormDetail(storeData.dataprofilePosition); + } + } catch (error) { + messageError($q, error); + } +} - emit("update:formDeital", formDetail); - }) - .catch((err) => { - messageError($q, err); - }); +async function updateFormDetail(data: DataProfile) { + formDetail.root = data.root; + formDetail.rootId = data.rootId; + formDetail.userId = data.profileId; + formDetail.citizenId = data.citizenId; + formDetail.prefix = data.prefix; + formDetail.fullName = `${data.firstName} ${data.lastName}`; + formDetail.firstName = data.firstName; + formDetail.lastName = data.lastName; + formDetail.position = data.position; + formDetail.oc = data.rootShortName; + formDetail.positionLevel = data.posLevelName; + formDetail.posNo = data.posNo ?? ""; + formDetail.birthDate = data.birthDate; + // formDetail.govAge = data.govAge; // ยังไม่มี + formDetail.salary = data.salary; + formDetail.posExecutive = data.posExecutiveName; + formDetail.positionArea = data.positionArea; + await fetchDataAllDetail(); + + emit("update:formDeital", formDetail); } async function fetchDataAllDetail() { diff --git a/src/modules/07_appealComplain/views/Add.vue b/src/modules/07_appealComplain/views/Add.vue index 10e55f5..dba72b8 100644 --- a/src/modules/07_appealComplain/views/Add.vue +++ b/src/modules/07_appealComplain/views/Add.vue @@ -6,15 +6,20 @@ import { useRouter, useRoute } from "vue-router"; import http from "@/plugins/http"; import config from "@/app.config"; import { useCounterMixin } from "@/stores/mixin"; +import { useDataStore } from "@/stores/data"; import Form from "@/modules/07_appealComplain/views/Form.vue"; + +import type { DataProfile } from "@/interface/Main"; import type { FormProfile, FormDataType, } from "@/modules/07_appealComplain/interface/response/mainType"; + const router = useRouter(); const $q = useQuasar(); const mixin = useCounterMixin(); +const storeData = useDataStore(); const { findOrgName, success, messageError, showLoader, hideLoader } = mixin; @@ -27,24 +32,28 @@ const formProfile = reactive({ }); /** ดึงข้อมูลจาก keycloak*/ -function getProFile() { - showLoader(); - http - .get(config.API.profilePosition()) - .then((res) => { - const data = res.data.result; - formProfile.profileId = data.profileId; - formProfile.fullname = `${data.prefix}${data.firstName} ${data.lastName}`; - formProfile.citizenId = data.citizenId; - formProfile.oc = findOrgName(data); - formProfile.position = data.position; - }) - .catch((e) => { - messageError($q, e); - }) - .finally(() => { - hideLoader(); - }); +async function getProFile() { + try { + showLoader(); + if (!storeData.dataprofilePosition) { + const res = await http.get(config.API.profilePosition()); + await updateFormProfile(res.data.result); + } else { + await updateFormProfile(storeData.dataprofilePosition); + } + } catch (error) { + messageError($q, error); + } finally { + hideLoader(); + } +} + +async function updateFormProfile(data: DataProfile) { + formProfile.profileId = data.profileId; + formProfile.fullname = `${data.prefix}${data.firstName} ${data.lastName}`; + formProfile.citizenId = data.citizenId; + formProfile.oc = findOrgName(data); + formProfile.position = data.position; } /**