diff --git a/src/modules/01_metadata/components/person/Blood.vue b/src/modules/01_metadata/components/person/Blood.vue index 70f5ef86a..f0c143882 100644 --- a/src/modules/01_metadata/components/person/Blood.vue +++ b/src/modules/01_metadata/components/person/Blood.vue @@ -209,7 +209,7 @@ const mixin = useCounterMixin(); const { success, dateText, messageError, showLoader, hideLoader } = mixin; const store = useManageDataStore(); const { manageData, changeManageColumns, getBlood, dataBlood } = store; -const rows = ref([]); //list data table +const rows = ref(dataBlood.data); //list data table const rowsHistory = ref([]); //select data history const rawHistory = ref([]); //raw data history const tittleHistory = ref("ประวัติแก้ไขกลุ่มเลือด"); // diff --git a/src/modules/01_metadata/components/person/Prefix.vue b/src/modules/01_metadata/components/person/Prefix.vue index 85f9bf5d4..4505e13b1 100644 --- a/src/modules/01_metadata/components/person/Prefix.vue +++ b/src/modules/01_metadata/components/person/Prefix.vue @@ -205,13 +205,8 @@ const { loaderPage } = dataStore; const mixin = useCounterMixin(); const { success, dateText, messageError, showLoader, hideLoader } = mixin; const store = useManageDataStore(); -const { - manageData, - changeManageColumns, - getPrefix, - dataPrefix, -} = store; -const rows = ref(dataPrefix); //list data table +const { manageData, changeManageColumns, getPrefix, dataPrefix } = store; +const rows = ref(dataPrefix.data); //list data table const rowsHistory = ref([]); //select data history const rawHistory = ref([]); //raw data history const tittleHistory = ref("ประวัติแก้ไขคำนำหน้า"); // diff --git a/src/modules/01_metadata/store.ts b/src/modules/01_metadata/store.ts index d98fdcdd1..6c4e92d56 100644 --- a/src/modules/01_metadata/store.ts +++ b/src/modules/01_metadata/store.ts @@ -5,12 +5,12 @@ import http from "@/plugins/http"; import config from "@/app.config"; import { useCounterMixin } from "@/stores/mixin"; import type { RequestItemsHistoryObject } from "@/modules/01_metadata/interface/request/person/Prefix"; -import type { RequestItemsHistoryObject as bloodResponse } from "@/modules/01_metadata/interface/request/person/Blood"; -import type { RequestItemsHistoryObject as genderResponse } from "@/modules/01_metadata/interface/request/person/Gender"; -import type { RequestItemsHistoryObject as religionResponse } from "@/modules/01_metadata/interface/request/person/Religion"; -import type { RequestItemsHistoryObject as relationshipResponse } from "@/modules/01_metadata/interface/request/person/Relationship"; -import type { RequestItemsHistoryObject as educationResponse } from "@/modules/01_metadata/interface/request/person/Education"; -import type { RequestItemsHistoryObject as provinceResponse } from "@/modules/01_metadata/interface/request/person/Province"; +import type { RequestItemsHistoryObject as RequestItemsBlood } from "@/modules/01_metadata/interface/request/person/Blood"; +import type { RequestItemsHistoryObject as RequestItemsGender } from "@/modules/01_metadata/interface/request/person/Gender"; +import type { RequestItemsHistoryObject as RequestItemsReligion } from "@/modules/01_metadata/interface/request/person/Religion"; +import type { RequestItemsHistoryObject as RequestItemsRelationship } from "@/modules/01_metadata/interface/request/person/Relationship"; +import type { RequestItemsHistoryObject as RequestItemsEducation } from "@/modules/01_metadata/interface/request/person/Education"; +import type { RequestItemsHistoryObject as RequestItemsProvince } from "@/modules/01_metadata/interface/request/person/Province"; import type { RequestItemsHistoryObject as InsigniaResponse } from "@/modules/01_metadata/interface/request/insignia/Insignia"; import type { RequestItemsHistoryObject as InsigniaTypeResponse } from "@/modules/01_metadata/interface/request/insignia/InsigniaType"; @@ -42,20 +42,96 @@ const mixin = useCounterMixin(); const { success, messageError, showLoader, hideLoader } = mixin; export const useManageDataStore = defineStore("manage", () => { - const dataPrefix = ref([]); //list data table - const draftPrefix = ref([]); //list data table - const dataBlood = ref([]); //list data table - const draftBlood = ref([]); //list data table - const dataGender = ref([]); //list data table - const draftGender = ref([]); //list data table - const dataReligion = ref([]); //list data table - const draftReligion = ref([]); //list data table - const dataRelationship = ref([]); //list data table - const draftRelationship = ref([]); //list data table - const dataEducation = ref([]); //list data table - const draftEducation = ref([]); //list data table - const dataProvince = ref([]); //list data table - const draftProvince = ref([]); //list data table + const dataPrefix = ref<{ + data: RequestItemsHistoryObject[]; + idversion: string; + version: string; + }>({ data: [], idversion: "", version: "published" }); //list data table + const draftPrefix = ref<{ + data: RequestItemsHistoryObject[]; + idversion: string; + version: string; + }>({ data: [], idversion: "", version: "published" }); //list data table + const dataBlood = ref<{ + data: RequestItemsBlood[]; + idversion: string; + version: string; + }>({ data: [], idversion: "", version: "published" }); //list data table + const draftBlood = ref<{ + data: RequestItemsBlood[]; + idversion: string; + version: string; + }>({ data: [], idversion: "", version: "published" }); //list data table + const dataGender = ref<{ + data: RequestItemsHistoryObject[]; + idversion: string; + version: string; + }>({ data: [], idversion: "", version: "published" }); //list data table + const draftGender = ref<{ + data: RequestItemsHistoryObject[]; + idversion: string; + version: string; + }>({ data: [], idversion: "", version: "published" }); //list data table + const dataReligion = ref<{ + data: RequestItemsHistoryObject[]; + idversion: string; + version: string; + }>({ data: [], idversion: "", version: "published" }); //list data table + const draftReligion = ref<{ + data: RequestItemsHistoryObject[]; + idversion: string; + version: string; + }>({ data: [], idversion: "", version: "published" }); //list data table + const dataRelationship = ref<{ + data: RequestItemsHistoryObject[]; + idversion: string; + version: string; + }>({ data: [], idversion: "", version: "published" }); //list data table + const draftRelationship = ref<{ + data: RequestItemsHistoryObject[]; + idversion: string; + version: string; + }>({ data: [], idversion: "", version: "published" }); //list data table + const dataEducation = ref<{ + data: RequestItemsHistoryObject[]; + idversion: string; + version: string; + }>({ data: [], idversion: "", version: "published" }); //list data table + const draftEducation = ref<{ + data: RequestItemsHistoryObject[]; + idversion: string; + version: string; + }>({ data: [], idversion: "", version: "published" }); //list data table + const dataProvince = ref<{ + data: RequestItemsHistoryObject[]; + idversion: string; + version: string; + }>({ data: [], idversion: "", version: "published" }); //list data table + const draftProvince = ref<{ + data: RequestItemsHistoryObject[]; + idversion: string; + version: string; + }>({ data: [], idversion: "", version: "published" }); //list data table + const dataDistrict = ref<{ + data: RequestItemsHistoryObject[]; + idversion: string; + version: string; + }>({ data: [], idversion: "", version: "published" }); //list data table + const draftDistrict = ref<{ + data: RequestItemsHistoryObject[]; + idversion: string; + version: string; + }>({ data: [], idversion: "", version: "published" }); //list data table + const dataSubDistrict = ref<{ + data: RequestItemsHistoryObject[]; + idversion: string; + version: string; + }>({ data: [], idversion: "", version: "published" }); //list data table + const draftSubDistrict = ref<{ + data: RequestItemsHistoryObject[]; + idversion: string; + version: string; + }>({ data: [], idversion: "", version: "published" }); //list data table const dataInsignia = ref([]); //list data table const draftInsignia = ref([]); //list data table @@ -116,6 +192,8 @@ export const useManageDataStore = defineStore("manage", () => { const storeIdVersion = ref(""); //id data ใน mongodb const storeVersion = ref("published"); //รายการข้อมูลล่าสุดได้เผยแพร่หรือยัง published=เผยแพร่แล้ว draft=ยังไม่เผยแพร่ + const storeIdVersionPrefix = ref(""); //id data ใน mongodb + const storeVersionPrefix = ref("published"); //รายการข้อมูลล่าสุดได้เผยแพร่หรือยัง published=เผยแพร่แล้ว draft=ยังไม่เผยแพร่ interface manage { link: number; person: { @@ -341,10 +419,216 @@ export const useManageDataStore = defineStore("manage", () => { } } + const getBlood = async ( + selector: boolean = false, + newFetch: boolean = false + ) => { + if (dataBlood.value.data.length === 0) { + await fetchBlood(true, selector); + return draftBlood.value; + } else { + if (newFetch) { + await fetchBlood(true, selector); + return draftBlood.value; + } else { + // เทียบ กรณี fetch data selector ไม่เหมือนกัน หรือ กรณี ดราฟ ดาต้า + if ( + JSON.stringify(dataBlood.value.data) == + JSON.stringify(draftBlood.value.data) + ) { + return draftBlood.value; + } else { + await fetchBlood(false, selector); + return draftBlood.value; + } + } + } + }; + const getGender = async ( + selector: boolean = false, + newFetch: boolean = false + ) => { + if (dataGender.value.data.length === 0) { + await fetchGender(true, selector); + return draftGender.value; + } else { + if (newFetch) { + await fetchGender(true, selector); + return draftGender.value; + } else { + // เทียบ กรณี fetch data selector ไม่เหมือนกัน หรือ กรณี ดราฟ ดาต้า + if ( + JSON.stringify(dataGender.value.data) == + JSON.stringify(draftGender.value.data) + ) { + return draftGender.value; + } else { + await fetchGender(false, selector); + return draftGender.value; + } + } + } + }; + const getReligion = async ( + selector: boolean = false, + newFetch: boolean = false + ) => { + if (dataReligion.value.data.length === 0) { + await fetchReligion(true, selector); + return draftReligion.value; + } else { + if (newFetch) { + await fetchReligion(true, selector); + return draftReligion.value; + } else { + // เทียบ กรณี fetch data selector ไม่เหมือนกัน หรือ กรณี ดราฟ ดาต้า + if ( + JSON.stringify(dataReligion.value.data) == + JSON.stringify(draftReligion.value.data) + ) { + return draftReligion.value; + } else { + await fetchReligion(false, selector); + return draftReligion.value; + } + } + } + }; + const getRelationship = async ( + selector: boolean = false, + newFetch: boolean = false + ) => { + if (dataRelationship.value.data.length === 0) { + await fetchRelationship(true, selector); + return draftRelationship.value; + } else { + if (newFetch) { + await fetchRelationship(true, selector); + return draftRelationship.value; + } else { + // เทียบ กรณี fetch data selector ไม่เหมือนกัน หรือ กรณี ดราฟ ดาต้า + if ( + JSON.stringify(dataRelationship.value.data) == + JSON.stringify(draftRelationship.value.data) + ) { + return draftRelationship.value; + } else { + await fetchRelationship(false, selector); + return draftRelationship.value; + } + } + } + }; + const getEducation = async ( + selector: boolean = false, + newFetch: boolean = false + ) => { + if (dataEducation.value.data.length === 0) { + await fetchEducation(true, selector); + return draftEducation.value; + } else { + if (newFetch) { + await fetchEducation(true, selector); + return draftEducation.value; + } else { + // เทียบ กรณี fetch data selector ไม่เหมือนกัน หรือ กรณี ดราฟ ดาต้า + if ( + JSON.stringify(dataEducation.value.data) == + JSON.stringify(draftEducation.value.data) + ) { + return draftEducation.value; + } else { + await fetchEducation(false, selector); + return draftEducation.value; + } + } + } + }; + const getProvince = async ( + selector: boolean = false, + newFetch: boolean = false + ) => { + if (dataProvince.value.data.length === 0) { + await fetchProvince(true, selector); + return draftProvince.value; + } else { + if (newFetch) { + await fetchProvince(true, selector); + return draftProvince.value; + } else { + // เทียบ กรณี fetch data selector ไม่เหมือนกัน หรือ กรณี ดราฟ ดาต้า + if ( + JSON.stringify(dataProvince.value.data) == + JSON.stringify(draftProvince.value.data) + ) { + return draftProvince.value; + } else { + await fetchProvince(false, selector); + return draftProvince.value; + } + } + } + }; + // const getDistrict = async ( + // selector: boolean = false, + // newFetch: boolean = false + // ) => { + // if (dataDistrict.value.data.length === 0) { + // // await fetchDistrict(true, selector); + // return draftDistrict.value; + // } else { + // if (newFetch) { + // // await fetchDistrict(true, selector); + // return draftDistrict.value; + // } else { + // // เทียบ กรณี fetch data selector ไม่เหมือนกัน หรือ กรณี ดราฟ ดาต้า + // if ( + // JSON.stringify(dataDistrict.value.data) == + // JSON.stringify(draftDistrict.value.data) + // ) { + // return draftDistrict.value; + // } else { + // // await fetchDistrict(false, selector); + // return draftDistrict.value; + // } + // } + // } + // }; + // const getSubDistrict = async ( + // selector: boolean = false, + // newFetch: boolean = false + // ) => { + // if (dataSubDistrict.value.data.length === 0) { + // // await fetchSubDistrict(true, selector); + // return draftSubDistrict.value; + // } else { + // if (newFetch) { + // // await fetchSubDistrict(true, selector); + // return draftSubDistrict.value; + // } else { + // // เทียบ กรณี fetch data selector ไม่เหมือนกัน หรือ กรณี ดราฟ ดาต้า + // if ( + // JSON.stringify(dataSubDistrict.value.data) == + // JSON.stringify(draftSubDistrict.value.data) + // ) { + // return draftSubDistrict.value; + // } else { + // // await fetchSubDistrict(false, selector); + // return draftSubDistrict.value; + // } + // } + // } + // }; + const getPrefix = async ( selector: boolean = false, newFetch: boolean = false ) => { +<<<<<<< HEAD + if (dataPrefix.value.data.length === 0) { + await fetchPrefix(true, selector); + return draftPrefix.value; +======= let apiPrefix = ""; if (selector) { apiPrefix = config.API.prefix; @@ -363,6 +647,7 @@ export const useManageDataStore = defineStore("manage", () => { version: storeVersion.value, idversion: storeIdVersion.value, }; +>>>>>>> e1a25d437df67812ecdc71d4ae29f9b555910106 } else { return { data: draftPrefix.value, @@ -530,6 +815,21 @@ export const useManageDataStore = defineStore("manage", () => { }; } else { if (newFetch) { +<<<<<<< HEAD + await fetchPrefix(true, selector); + return draftPrefix.value; + } else { + // เทียบ กรณี fetch data selector ไม่เหมือนกัน หรือ กรณี ดราฟ ดาต้า + if ( + JSON.stringify(dataPrefix.value.data) == + JSON.stringify(draftPrefix.value.data) + ) { + return draftPrefix.value; + } else { + await fetchPrefix(false, selector); + return draftPrefix.value; + } +======= await fetchProvince(true, selector); return { data: draftProvince.value, @@ -542,6 +842,7 @@ export const useManageDataStore = defineStore("manage", () => { version: storeVersion.value, idversion: storeIdVersion.value, }; +>>>>>>> e1a25d437df67812ecdc71d4ae29f9b555910106 } } }; @@ -834,6 +1135,369 @@ export const useManageDataStore = defineStore("manage", () => { }; } } + await http + .get(apiPrefix) + .then((res) => { + const data = res.data.result; + let rows: RequestItemsHistoryObject[] = []; + let version: string = ""; + let id: string = ""; + if (selector) { + version = ""; + id = ""; + data.map((e: RequestItemsHistoryObject) => { + rows.push({ + ...e, + }); + }); + } else { + version = data.version; //ตัวแปรที่บอกว่าข้อมูลเผยแพร่ไปหรือยัง published=เผยแพร่แล้ว draft=ยังไม่เผยแพร่ + id = data.id; //เลข id ใน mongodb + + data.items.map((e: RequestItemsHistoryObject) => { + rows.push({ + ...e, + }); + }); + } + + draftPrefix.value = { idversion: id, version: version, data: rows }; + if (loader) { + dataPrefix.value = { idversion: id, version: version, data: rows }; + } + }) + .catch((e) => { + messageError($q, e); + }) + .finally(() => { + if (loader) { + hideLoader(); + } + }); + }; + + const fetchBlood = async (loader: boolean, selector: boolean) => { + let apiBlood = ""; + if (loader) { + showLoader(); + } + if (selector) { + apiBlood = config.API.bloodGroup; + } else { + apiBlood = config.API.listBloodGroupHistory; + } + await http + .get(apiBlood) + .then((res) => { + const data = res.data.result; + let rows: RequestItemsBlood[] = []; + let version: string = ""; + let id: string = ""; + if (selector) { + version = ""; + id = ""; + data.map((e: RequestItemsBlood) => { + rows.push({ + ...e, + }); + }); + } else { + version = data.version; //ตัวแปรที่บอกว่าข้อมูลเผยแพร่ไปหรือยัง published=เผยแพร่แล้ว draft=ยังไม่เผยแพร่ + id = data.id; //เลข id ใน mongodb + data.items.map((e: RequestItemsBlood) => { + rows.push({ + ...e, + }); + }); + } + + draftBlood.value = { idversion: id, version: version, data: rows }; + if (loader) { + dataBlood.value = { idversion: id, version: version, data: rows }; + } + }) + .catch((e) => { + messageError($q, e); + }) + .finally(() => { + if (loader) { + hideLoader(); + } + }); + }; + + const fetchGender = async (loader: boolean, selector: boolean) => { + let apiGender = ""; + if (loader) { + showLoader(); + } + if (selector) { + apiGender = config.API.gender; + } else { + apiGender = config.API.listGenderHistory; + } + await http + .get(apiGender) + .then((res) => { + const data = res.data.result; + let rows: RequestItemsGender[] = []; + let version: string = ""; + let id: string = ""; + if (selector) { + version = ""; + id = ""; + data.map((e: RequestItemsGender) => { + rows.push({ + ...e, + }); + }); + } else { + version = data.version; //ตัวแปรที่บอกว่าข้อมูลเผยแพร่ไปหรือยัง published=เผยแพร่แล้ว draft=ยังไม่เผยแพร่ + id = data.id; //เลข id ใน mongodb + data.items.map((e: RequestItemsGender) => { + rows.push({ + ...e, + }); + }); + } + + draftGender.value = { idversion: id, version: version, data: rows }; + if (loader) { + dataGender.value = { idversion: id, version: version, data: rows }; + } + }) + .catch((e) => { + messageError($q, e); + }) + .finally(() => { + if (loader) { + hideLoader(); + } + }); + }; + + const fetchReligion = async (loader: boolean, selector: boolean) => { + let apiReligion = ""; + if (loader) { + showLoader(); + } + if (selector) { + apiReligion = config.API.religion; + } else { + apiReligion = config.API.listReligionHistory; + } + await http + .get(apiReligion) + .then((res) => { + const data = res.data.result; + let rows: RequestItemsReligion[] = []; + let version: string = ""; + let id: string = ""; + if (selector) { + version = ""; + id = ""; + data.map((e: RequestItemsReligion) => { + rows.push({ + ...e, + }); + }); + } else { + version = data.version; //ตัวแปรที่บอกว่าข้อมูลเผยแพร่ไปหรือยัง published=เผยแพร่แล้ว draft=ยังไม่เผยแพร่ + id = data.id; //เลข id ใน mongodb + data.items.map((e: RequestItemsReligion) => { + rows.push({ + ...e, + }); + }); + } + + draftReligion.value = { idversion: id, version: version, data: rows }; + if (loader) { + dataReligion.value = { idversion: id, version: version, data: rows }; + } + }) + .catch((e) => { + messageError($q, e); + }) + .finally(() => { + if (loader) { + hideLoader(); + } + }); + }; + + const fetchRelationship = async (loader: boolean, selector: boolean) => { + let apiRelationship = ""; + if (loader) { + showLoader(); + } + if (selector) { + apiRelationship = config.API.relationship; + } else { + apiRelationship = config.API.listRelationshipHistory; + } + await http + .get(apiRelationship) + .then((res) => { + const data = res.data.result; + let rows: RequestItemsRelationship[] = []; + let version: string = ""; + let id: string = ""; + if (selector) { + version = ""; + id = ""; + data.map((e: RequestItemsRelationship) => { + rows.push({ + ...e, + }); + }); + } else { + version = data.version; //ตัวแปรที่บอกว่าข้อมูลเผยแพร่ไปหรือยัง published=เผยแพร่แล้ว draft=ยังไม่เผยแพร่ + id = data.id; //เลข id ใน mongodb + data.items.map((e: RequestItemsRelationship) => { + rows.push({ + ...e, + }); + }); + } + + draftRelationship.value = { + idversion: id, + version: version, + data: rows, + }; + if (loader) { + dataRelationship.value = { + idversion: id, + version: version, + data: rows, + }; + } + }) + .catch((e) => { + messageError($q, e); + }) + .finally(() => { + if (loader) { + hideLoader(); + } + }); + }; + + const fetchEducation = async (loader: boolean, selector: boolean) => { + let apiEducation = ""; + if (loader) { + showLoader(); + } + if (selector) { + apiEducation = config.API.educationLevel; + } else { + apiEducation = config.API.listEducationLevelHistory; + } + await http + .get(apiEducation) + .then((res) => { + const data = res.data.result; + let rows: RequestItemsEducation[] = []; + let version: string = ""; + let id: string = ""; + if (selector) { + version = ""; + id = ""; + data.map((e: RequestItemsEducation) => { + rows.push({ + ...e, + }); + }); + } else { + version = data.version; //ตัวแปรที่บอกว่าข้อมูลเผยแพร่ไปหรือยัง published=เผยแพร่แล้ว draft=ยังไม่เผยแพร่ + id = data.id; //เลข id ใน mongodb + data.items.map((e: RequestItemsEducation) => { + rows.push({ + ...e, + }); + }); + } + + draftEducation.value = { + idversion: id, + version: version, + data: rows, + }; + if (loader) { + dataEducation.value = { + idversion: id, + version: version, + data: rows, + }; + } + }) + .catch((e) => { + messageError($q, e); + }) + .finally(() => { + if (loader) { + hideLoader(); + } + }); + }; + + const fetchProvince = async (loader: boolean, selector: boolean) => { + let apiProvince = ""; + if (loader) { + showLoader(); + } + if (selector) { + apiProvince = config.API.province; + } else { + apiProvince = config.API.listProvinceHistory; + } + await http + .get(apiProvince) + .then((res) => { + const data = res.data.result; + let rows: RequestItemsProvince[] = []; + let version: string = ""; + let id: string = ""; + if (selector) { + version = ""; + id = ""; + data.map((e: RequestItemsProvince) => { + rows.push({ + ...e, + }); + }); + } else { + version = data.version; //ตัวแปรที่บอกว่าข้อมูลเผยแพร่ไปหรือยัง published=เผยแพร่แล้ว draft=ยังไม่เผยแพร่ + id = data.id; //เลข id ใน mongodb + data.items.map((e: RequestItemsProvince) => { + rows.push({ + ...e, + }); + }); + } + + draftProvince.value = { + idversion: id, + version: version, + data: rows, + }; + if (loader) { + dataProvince.value = { + idversion: id, + version: version, + data: rows, + }; + } + }) + .catch((e) => { + messageError($q, e); + }) + .finally(() => { + if (loader) { + hideLoader(); + } + }); }; const getPositionExecutiveSide = async (