diff --git a/src/api/registry/api.registry.ts b/src/api/registry/api.registry.ts index 233cd1f3f..8647a7385 100644 --- a/src/api/registry/api.registry.ts +++ b/src/api/registry/api.registry.ts @@ -92,12 +92,21 @@ profileNewFamilyByFamilyId: (familyId: string) => profileNewFamilyeHisByFamilyId: (familyId: string) => `${registryNew}family/history/${familyId}`, - // ข้อมูลครอบครัว - profileNewDiscipline: `${registryNew}discipline`, - profileNewDisciplineByProfileId: (profileId: string) => - `${registryNew}discipline/${profileId}`, - profileNewDisciplineByDisciplineId: (disciplineId: string) => - `${registryNew}discipline/${disciplineId}`, - profileNewDisciplineHisByDisciplineId: (disciplineId: string) => - `${registryNew}discipline/history/${disciplineId}`, + // วินัย +profileNewDiscipline: `${registryNew}discipline`, +profileNewDisciplineByProfileId: (profileId: string) => +`${registryNew}discipline/${profileId}`, +profileNewDisciplineByDisciplineId: (disciplineId: string) => +`${registryNew}discipline/${disciplineId}`, +profileNewDisciplineHisByDisciplineId: (disciplineId: string) => +`${registryNew}discipline/history/${disciplineId}`, + + // ปฏิบัติราชการพิเศษ +profileNewDuty: `${registryNew}duty`, +profileNewDutyByProfileId: (profileId: string) => +`${registryNew}duty/${profileId}`, +profileNewDutyByDutyId: (dutyId: string) => +`${registryNew}duty/${dutyId}`, +profileNewDutyHisByDutyId: (dutyId: string) => +`${registryNew}duty/history/${dutyId}`, }; diff --git a/src/modules/04_registryNew/components/detail/Achievement/03_Insignia.vue b/src/modules/04_registryNew/components/detail/Achievement/03_Insignia.vue index e04a9d725..144f5f9c7 100644 --- a/src/modules/04_registryNew/components/detail/Achievement/03_Insignia.vue +++ b/src/modules/04_registryNew/components/detail/Achievement/03_Insignia.vue @@ -15,16 +15,13 @@ import type { DataOptionInsignia, InsigniaOps, } from "@/modules/04_registryNew/interface/index/Main"; -import type { - RequestItemsObject, - FormData, -} from "@/modules/04_registryNew/interface/request/Insignia"; +import type { RequestItemsObject } from "@/modules/04_registryNew/interface/request/Insignia"; import type { ResponseObject } from "@/modules/04_registryNew/interface/response/Insignia"; -import type { ResponseObject as Insignia } from "@/modules/07_insignia/interface/response/Main"; const $q = useQuasar(); const route = useRoute(); const store = useInsigniaDataStore(); +const { mapInsigniaOption } = store; const mixin = useCounterMixin(); const { date2Thai, @@ -39,27 +36,24 @@ const profileId = ref( route.params.id ? route.params.id.toString() : "" ); -const insigniaData = reactive({ - id: "", - isActive: true, +const id = ref(""); +const insigniaType = ref(""); +const insigniaForm = reactive({ year: 0, - receiveDate: null, - insigniaId: "", - insigniaType: "", no: "", - issue: "", - volumeNo: "", volume: "", section: "", page: "", + receiveDate: null, + insigniaId: "", dateAnnounce: null, - refCommandNo: "", + issue: "", + volumeNo: "", refCommandDate: null, + refCommandNo: "", note: "", }); -const editRow = ref(false); -const myForm = ref(); const isEdit = ref(false); const modal = ref(false); const modeView = ref("table"); @@ -117,10 +111,9 @@ const columns = ref([ align: "left", label: "ลำดับชั้น", sortable: true, - field: "insignia", + field: (v) => v.insignia.insigniaType.name, headerStyle: "font-size: 14px", style: "font-size: 14px", - format: (v) => v.name, sort: (a: string, b: string) => a.localeCompare(b, undefined, { numeric: true, sensitivity: "base" }), }, @@ -277,10 +270,9 @@ const columnsHistory = ref([ align: "left", label: "ลำดับชั้น", sortable: true, - field: "insignia", + field: (v) => v.insignia.insigniaType.name, headerStyle: "font-size: 14px", style: "font-size: 14px", - format: (v) => v.name, sort: (a: string, b: string) => a.localeCompare(b, undefined, { numeric: true, sensitivity: "base" }), }, @@ -464,16 +456,8 @@ async function fetchInsignia() { showLoader(); try { const res = await http.get(config.API.insigniaOrg); - const data = res.data.result; - store.insigniaOption = []; - data.map((r: Insignia) => { - store.insigniaOption.push({ - id: r.id.toString(), - name: r.name.toString() + ` (${r.shortName})`, - typeName: r.insigniaTypeName.toString(), - }); - }); + mapInsigniaOption(data); } catch (error) { messageError($q, error); } finally { @@ -485,27 +469,13 @@ async function addEditData(editStatus: boolean = false) { if (!profileId.value) return; const url = editStatus - ? config.API.profileNewInsignById(insigniaData.id) + ? config.API.profileNewInsignById(id.value) : config.API.profileNewInsign; const method = editStatus ? "patch" : "post"; const reqBody: RequestItemsObject = { + ...insigniaForm, profileId: editStatus ? undefined : profileId.value, - isActive: insigniaData.isActive, - year: insigniaData.year, - no: insigniaData.no, - volume: insigniaData.volume, - section: insigniaData.section, - page: insigniaData.page, - receiveDate: insigniaData.receiveDate, - insigniaId: insigniaData.insigniaId, - dateAnnounce: insigniaData.dateAnnounce, - issue: insigniaData.issue, - volumeNo: insigniaData.volumeNo, - refCommandDate: insigniaData.refCommandDate, - refCommandNo: insigniaData.refCommandNo, - note: insigniaData.note, }; - try { await http[method](url, reqBody); success($q, "บันทึกข้อมูลสำเร็จ"); @@ -517,62 +487,47 @@ async function addEditData(editStatus: boolean = false) { } } -async function clickDelete(dataId: string) { - try { - await http.delete(config.API.profileNewInsignById(dataId)); - success($q, "ลบข้อมูลสำเร็จ"); - await fetchData(); - modal.value = false; - } catch (error) { - messageError($q, error); - } finally { - hideLoader(); - } -} +// async function clickDelete(dataId: string) { +// try { +// await http.delete(config.API.profileNewInsignById(dataId)); +// success($q, "ลบข้อมูลสำเร็จ"); +// await fetchData(); +// modal.value = false; +// } catch (error) { +// messageError($q, error); +// } finally { +// hideLoader(); +// } +// } function onClickOpenDialog(editStatus: boolean = false, row?: ResponseObject) { modal.value = true; - editRow.value = false; isEdit.value = editStatus; if (editStatus && row) { - Object.assign(insigniaData, row); - insigniaData.year = row.year == 0 ? 0 : row.year; - insigniaData.dateAnnounce = row.dateAnnounce as Date; - insigniaData.refCommandDate = row.refCommandDate as Date; + id.value = row.id; + insigniaType.value = row.insignia.insigniaType.name; + insigniaForm.year = row.year; + insigniaForm.no = row.no; + insigniaForm.volume = row.volume; + insigniaForm.section = row.section; + insigniaForm.page = row.page; + insigniaForm.receiveDate = row.receiveDate; + insigniaForm.insigniaId = row.insigniaId; + insigniaForm.dateAnnounce = row.dateAnnounce; + insigniaForm.issue = row.issue; + insigniaForm.volumeNo = row.volumeNo; + insigniaForm.refCommandDate = row.refCommandDate; + insigniaForm.refCommandNo = row.refCommandNo; + insigniaForm.note = row.note; } else { - insigniaData.id = ""; - insigniaData.year = 0; - insigniaData.receiveDate = null; - insigniaData.insigniaId = ""; - insigniaData.insigniaType = ""; - insigniaData.no = ""; - insigniaData.issue = ""; - insigniaData.volumeNo = ""; - insigniaData.volume = ""; - insigniaData.section = ""; - insigniaData.page = ""; - insigniaData.dateAnnounce = null; - insigniaData.refCommandNo = ""; - insigniaData.refCommandDate = null; - insigniaData.note = ""; + clearData(); } } async function clickClose() { - if (editRow.value == true) { - dialogConfirm( - $q, - async () => { - modal.value = false; - editRow.value = false; - }, - "ข้อมูลมีการแก้ไข", - "ยืนยันที่จะปิดโดยไม่บันทึกใช่หรือไม่?" - ); - } else { - modal.value = false; - } + clearData(); + modal.value = false; } async function clickHistory(row: ResponseObject) { @@ -594,12 +549,8 @@ function onSubmit() { dialogConfirm( $q, async () => { - myForm.value?.validate().then(async (result: boolean) => { - if (result) { - addEditData(isEdit.value); - modal.value = false; - } - }); + addEditData(isEdit.value); + modal.value = false; }, "ยืนยันการบันทึกข้อมูล", "ต้องการยืนยันการบันทึกข้อมูลนี้หรือไม่ ?" @@ -620,17 +571,31 @@ function filterSelector(val: string, update: Function, refData: string) { } } -watch( - () => insigniaData.insigniaId, - () => { - const insigniaTypeFilter = Ops.value.insigniaOptions.filter( - (r: DataOptionInsignia) => r.id === insigniaData.insigniaId - ); - if (insigniaTypeFilter.length > 0) { - insigniaData.insigniaType = insigniaTypeFilter[0].typeName; - } +function insigniaTypeSelection() { + const insigniaTypeFilter = Ops.value.insigniaOptions.filter( + (r: DataOptionInsignia) => r.id === insigniaForm.insigniaId + ); + if (insigniaTypeFilter.length > 0) { + insigniaType.value = insigniaTypeFilter[0].typeName; } -); +} + +function clearData() { + id.value = ""; + (insigniaType.value = ""), (insigniaForm.year = 0); + insigniaForm.receiveDate = null; + insigniaForm.insigniaId = ""; + insigniaForm.no = ""; + insigniaForm.issue = ""; + insigniaForm.volumeNo = ""; + insigniaForm.volume = ""; + insigniaForm.section = ""; + insigniaForm.page = ""; + insigniaForm.dateAnnounce = null; + insigniaForm.refCommandNo = ""; + insigniaForm.refCommandDate = null; + insigniaForm.note = ""; +} onMounted(async () => { await fetchData(); @@ -834,7 +799,7 @@ onMounted(async () => { - + @@ -843,7 +808,7 @@ onMounted(async () => { {