From a617553a9292e6fe1a66d34ffc56036398deab2f Mon Sep 17 00:00:00 2001 From: puriphatt Date: Tue, 12 Mar 2024 13:15:39 +0700 Subject: [PATCH 1/9] =?UTF-8?q?=E0=B8=97=E0=B8=B0=E0=B9=80=E0=B8=9A?= =?UTF-8?q?=E0=B8=B5=E0=B8=A2=E0=B8=99=E0=B8=9B=E0=B8=A3=E0=B8=B0=E0=B8=A7?= =?UTF-8?q?=E0=B8=B1=E0=B8=95=E0=B8=B4:=20=E0=B8=9B=E0=B8=A3=E0=B8=B0?= =?UTF-8?q?=E0=B8=A7=E0=B8=B1=E0=B8=95=E0=B8=B4=E0=B8=81=E0=B8=B2=E0=B8=A3?= =?UTF-8?q?=E0=B9=80=E0=B8=9B=E0=B8=A5=E0=B8=B5=E0=B9=88=E0=B8=A2=E0=B8=99?= =?UTF-8?q?=E0=B8=8A=E0=B8=B7=E0=B9=88=E0=B8=AD-=E0=B8=AA=E0=B8=81?= =?UTF-8?q?=E0=B8=B8=E0=B8=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../02_NameChangeHistory.vue | 432 +++++++++++++++++- 1 file changed, 429 insertions(+), 3 deletions(-) diff --git a/src/modules/04_registryNew/components/detail/PersonalInformation/02_NameChangeHistory.vue b/src/modules/04_registryNew/components/detail/PersonalInformation/02_NameChangeHistory.vue index e24c62a13..624cd5b60 100644 --- a/src/modules/04_registryNew/components/detail/PersonalInformation/02_NameChangeHistory.vue +++ b/src/modules/04_registryNew/components/detail/PersonalInformation/02_NameChangeHistory.vue @@ -1,6 +1,432 @@ - + - + From 7703fa374c06ef1154ef1ecbef427d010952ed53 Mon Sep 17 00:00:00 2001 From: waruneeauy Date: Tue, 12 Mar 2024 13:20:17 +0700 Subject: [PATCH 2/9] =?UTF-8?q?=E0=B8=9B=E0=B8=A3=E0=B8=B1=E0=B8=9A?= =?UTF-8?q?=E0=B9=81=E0=B8=81=E0=B9=89=E0=B9=84=E0=B8=82=E0=B8=82=E0=B9=89?= =?UTF-8?q?=E0=B8=AD=E0=B8=A1=E0=B8=B9=E0=B8=A5=E0=B8=AB=E0=B8=A5=E0=B8=B1?= =?UTF-8?q?=E0=B8=81=E0=B8=95=E0=B8=B3=E0=B9=81=E0=B8=AB=E0=B8=99=E0=B9=88?= =?UTF-8?q?=E0=B8=87=E0=B8=A5=E0=B8=B9=E0=B8=81=E0=B8=88=E0=B9=89=E0=B8=B2?= =?UTF-8?q?=E0=B8=87=E0=B8=9B=E0=B8=A3=E0=B8=B0=E0=B8=88=E0=B8=B3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/interface/main.ts | 6 + .../position-employee/02ListType.vue | 169 +++++++++++------- .../position-employee/05ListLevelDetail.vue | 120 +++++++------ .../components/position/05ListLevelDetail.vue | 169 +++++++++++------- src/modules/01_metadataNew/stores/main.ts | 30 ++++ .../stores/positionEmployeeStore.ts | 5 + .../stores/positionListStore.ts | 6 + 7 files changed, 321 insertions(+), 184 deletions(-) create mode 100644 src/interface/main.ts create mode 100644 src/modules/01_metadataNew/stores/main.ts diff --git a/src/interface/main.ts b/src/interface/main.ts new file mode 100644 index 000000000..cb2e79ee5 --- /dev/null +++ b/src/interface/main.ts @@ -0,0 +1,6 @@ +interface DataOption { + id: string; + label: string; +} + +export type { DataOption }; diff --git a/src/modules/01_metadataNew/components/position-employee/02ListType.vue b/src/modules/01_metadataNew/components/position-employee/02ListType.vue index ac710fe30..3de9086b8 100644 --- a/src/modules/01_metadataNew/components/position-employee/02ListType.vue +++ b/src/modules/01_metadataNew/components/position-employee/02ListType.vue @@ -32,17 +32,17 @@ const columns = [ sort: (a: string, b: string) => a.localeCompare(b, undefined, { numeric: true, sensitivity: "base" }), }, - // { - // name: "posTypeRank", - // align: "left", - // label: "ระดับตำแหน่ง", - // sortable: true, - // field: "posTypeRank", - // headerStyle: "font-size: 14px", - // style: "font-size: 14px", - // sort: (a: string, b: string) => - // a.localeCompare(b, undefined, { numeric: true, sensitivity: "base" }), - // }, + { + name: "posTypeRank", + align: "left", + label: "ระดับกลุ่มงาน", + sortable: true, + field: "posTypeRank", + headerStyle: "font-size: 14px", + style: "font-size: 14px", + sort: (a: string, b: string) => + a.localeCompare(b, undefined, { numeric: true, sensitivity: "base" }), + }, { name: "createdAt", align: "left", @@ -85,11 +85,14 @@ const filterKeyword = ref(""); const dialog = ref(false); const posTypeName = ref(""); const posTypeNameRef = ref(null); +const posTypeShortName = ref(""); +const posTypeShortNameRef = ref(null); const posTypeRank = ref(); const posTypeRankRef = ref(null); const dialogStatus = ref(""); const visibleColumns = ref([ "posTypeName", + "posTypeShortName", "posTypeRank", // "createdAt", // "lastUpdatedAt", @@ -97,39 +100,59 @@ const visibleColumns = ref([ ]); async function fetchData() { - // showLoader(); - // await http - // .get(config.API.orgPosType) - // .then(async (res) => { - // store.save(res.data.result); - // }) - // .catch((err) => { - // messageError($q, err); - // }) - // .finally(() => { - // hideLoader(); - // }); + showLoader(); + await http + .get(config.API.orgPosType) + .then(async (res) => { + store.save(res.data.result); + }) + .catch((err) => { + messageError($q, err); + }) + .finally(() => { + hideLoader(); + }); } async function addData() { - await http.post(config.API.orgPosType, { - posTypeName: posTypeName.value, - posTypeRank: posTypeRank.value, - }); - fetchData(); + await http + .post(config.API.orgPosType, { + posTypeName: posTypeName.value, + posTypeShortName: posTypeShortName.value, + posTypeRank: posTypeRank.value, + }) + .then(() => { + fetchData(); + }) + .catch((err) => { + messageError($q, err); + }); } async function editData(id: string) { - await http.put(config.API.orgPosTypeId(id), { - posTypeName: posTypeName.value, - posTypeRank: posTypeRank.value, - }); - fetchData(); + await http + .put(config.API.orgPosTypeId(id), { + posTypeName: posTypeName.value, + posTypeShortName: posTypeShortName.value, + posTypeRank: posTypeRank.value, + }) + .then(() => { + fetchData(); + }) + .catch((err) => { + messageError($q, err); + }); } async function deleteData(id: string) { - await http.delete(config.API.orgPosTypeId(id)); - fetchData(); + await http + .delete(config.API.orgPosTypeId(id)) + .then(() => { + fetchData(); + }) + .catch((err) => { + messageError($q, err); + }); } onMounted(async () => { @@ -276,7 +299,7 @@ async function onSubmit() { - +
- - - + +
+ +
+ +
+ +
+ +
+ +
diff --git a/src/modules/01_metadataNew/components/position-employee/05ListLevelDetail.vue b/src/modules/01_metadataNew/components/position-employee/05ListLevelDetail.vue index ed05bcdc4..5fb09ee4d 100644 --- a/src/modules/01_metadataNew/components/position-employee/05ListLevelDetail.vue +++ b/src/modules/01_metadataNew/components/position-employee/05ListLevelDetail.vue @@ -5,12 +5,15 @@ import { useCounterMixin } from "@/stores/mixin"; import { useRouter, useRoute } from "vue-router"; import { usePositionEmployeeDataStore } from "@/modules/01_metadataNew/stores/positionEmployeeStore"; import { usePositionTypeDataStore } from "@/modules/01_metadataNew/stores/positionTypeStore"; +import { useMainOptionDataStore } from "@/modules/01_metadataNew/stores/main"; + import dialogHeader from "@/components/DialogHeader.vue"; import { useQuasar } from "quasar"; import http from "@/plugins/http"; import config from "@/app.config"; const store = usePositionEmployeeDataStore(); const storeName = usePositionTypeDataStore(); +const storeOption = useMainOptionDataStore(); const router = useRouter(); const mixin = useCounterMixin(); @@ -345,7 +348,7 @@ async function fetchName() { - + - - - - - + +
+ +
+ + + +
+ +
+ +
+ +
diff --git a/src/modules/01_metadataNew/components/position/05ListLevelDetail.vue b/src/modules/01_metadataNew/components/position/05ListLevelDetail.vue index 8e06eb140..b4f7a0f34 100644 --- a/src/modules/01_metadataNew/components/position/05ListLevelDetail.vue +++ b/src/modules/01_metadataNew/components/position/05ListLevelDetail.vue @@ -4,12 +4,14 @@ import type { QInput, QTableProps } from "quasar"; import { useCounterMixin } from "@/stores/mixin"; import { useRouter, useRoute } from "vue-router"; import { usePositionDataStore } from "@/modules/01_metadataNew/stores/positionListStore"; +import { useMainOptionDataStore } from "@/modules/01_metadataNew/stores/main"; import { usePositionTypeDataStore } from "@/modules/01_metadataNew/stores/positionTypeStore"; import dialogHeader from "@/components/DialogHeader.vue"; import { useQuasar } from "quasar"; import http from "@/plugins/http"; import config from "@/app.config"; const store = usePositionDataStore(); +const storeOption = useMainOptionDataStore(); const storeName = usePositionTypeDataStore(); const router = useRouter(); const mixin = useCounterMixin(); @@ -153,30 +155,48 @@ async function fetchData() { } async function addData() { - await http.post(config.API.orgPosLevel, { - posLevelName: posLevelName.value, - posLevelRank: posLevelRank.value, - posLevelAuthority: - posLevelAuthority.value == "" ? "" : posLevelAuthority.value, - posTypeId: id.value, - }); - fetchData(); + await http + .post(config.API.orgPosLevel, { + posLevelName: posLevelName.value, + posLevelRank: posLevelRank.value, + posLevelAuthority: + posLevelAuthority.value == "" ? "" : posLevelAuthority.value, + posTypeId: id.value, + }) + .then(() => { + fetchData(); + }) + .catch((err) => { + messageError($q, err); + }); } async function editData(editId: string) { - await http.put(config.API.orgPosLevelId(editId), { - posLevelName: posLevelName.value, - posLevelRank: posLevelRank.value, - posLevelAuthority: - posLevelAuthority.value == "" ? "" : posLevelAuthority.value, - posTypeId: id.value, - }); - fetchData(); + await http + .put(config.API.orgPosLevelId(editId), { + posLevelName: posLevelName.value, + posLevelRank: posLevelRank.value, + posLevelAuthority: + posLevelAuthority.value == "" ? "" : posLevelAuthority.value, + posTypeId: id.value, + }) + .then(() => { + fetchData(); + }) + .catch((err) => { + messageError($q, err); + }); } async function deleteData(id: string) { - await http.delete(config.API.orgPosLevelId(id)); - fetchData(); + await http + .delete(config.API.orgPosLevelId(id)) + .then(() => { + fetchData(); + }) + .catch((err) => { + messageError($q, err); + }); } onMounted(async () => { @@ -345,7 +365,7 @@ async function fetchName() { - + - - - - - + +
+ +
+ +
+ +
+ +
+ +
+ +
+ +
diff --git a/src/modules/01_metadataNew/stores/main.ts b/src/modules/01_metadataNew/stores/main.ts new file mode 100644 index 000000000..b0d36f090 --- /dev/null +++ b/src/modules/01_metadataNew/stores/main.ts @@ -0,0 +1,30 @@ +import { defineStore } from "pinia"; +import { ref } from "vue"; +import type { DataOption } from "@/interface/main"; + +export const useMainOptionDataStore = defineStore("MainOptionData", () => { + const posLevelAuthorityOption = ref([ + { + id: "HEAD", + label: "หัวหน้าหน่วยงาน", + }, + { + id: "DEPUTY", + label: "ปลัด", + }, + { + id: "GOVERNOR", + label: "ผู้ว่าฯ", + }, + ]); + + function posLevelAuthorityConvert(val: string) { + return posLevelAuthorityOption.value.find((x: DataOption) => x.id === val) + ?.label; + } + + return { + posLevelAuthorityOption, + posLevelAuthorityConvert, + }; +}); diff --git a/src/modules/01_metadataNew/stores/positionEmployeeStore.ts b/src/modules/01_metadataNew/stores/positionEmployeeStore.ts index e3dea70ce..297426e1b 100644 --- a/src/modules/01_metadataNew/stores/positionEmployeeStore.ts +++ b/src/modules/01_metadataNew/stores/positionEmployeeStore.ts @@ -5,6 +5,8 @@ import type { DataRow, } from "../interface/response/position/ListType"; import { useCounterMixin } from "@/stores/mixin"; +import { useMainOptionDataStore } from "@/modules/01_metadataNew/stores/main"; +const storeOption = useMainOptionDataStore(); const { date2Thai } = useCounterMixin(); @@ -22,6 +24,9 @@ export const usePositionEmployeeDataStore = defineStore( posTypeRank: e.posTypes?.posTypeRank, createdAt: e.createdAt ? date2Thai(e.createdAt) : "", lastUpdatedAt: e.lastUpdatedAt ? date2Thai(e.lastUpdatedAt) : "", + posLevelAuthority: e.posLevelAuthority + ? storeOption.posLevelAuthorityConvert(e.posLevelAuthority) + : "-", })) satisfies DataRow[]; row.value = list.filter((e) => e.posTypeId === id); } diff --git a/src/modules/01_metadataNew/stores/positionListStore.ts b/src/modules/01_metadataNew/stores/positionListStore.ts index 17afb8238..c61f8ac74 100644 --- a/src/modules/01_metadataNew/stores/positionListStore.ts +++ b/src/modules/01_metadataNew/stores/positionListStore.ts @@ -4,7 +4,9 @@ import type { DataResponse, DataRow, } from "../interface/response/position/ListType"; +import { useMainOptionDataStore } from "@/modules/01_metadataNew/stores/main"; import { useCounterMixin } from "@/stores/mixin"; +const storeOption = useMainOptionDataStore(); const { date2Thai } = useCounterMixin(); @@ -20,9 +22,13 @@ export const usePositionDataStore = defineStore("PositionData", () => { posTypeRank: e.posTypes?.posTypeRank, createdAt: e.createdAt ? date2Thai(e.createdAt) : "", lastUpdatedAt: e.lastUpdatedAt ? date2Thai(e.lastUpdatedAt) : "", + posLevelAuthority: e.posLevelAuthority + ? storeOption.posLevelAuthorityConvert(e.posLevelAuthority) + : "-", })) satisfies DataRow[]; row.value = list.filter((e) => e.posTypeId === id); } + return { save, row, From d99b4595fac3e11783a8723c8e5916ea53e6f259 Mon Sep 17 00:00:00 2001 From: Methapon2001 <61303214+Methapon2001@users.noreply.github.com> Date: Tue, 12 Mar 2024 13:25:31 +0700 Subject: [PATCH 3/9] fix(profile/salary): empty input clear selected value --- src/modules/04_registry/components/Salary.vue | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/src/modules/04_registry/components/Salary.vue b/src/modules/04_registry/components/Salary.vue index 4d81a9fe8..751eae415 100644 --- a/src/modules/04_registry/components/Salary.vue +++ b/src/modules/04_registry/components/Salary.vue @@ -1277,7 +1277,13 @@ function inputPositionLevel(v: string) { } function inputPositionLevelBlur() { - if (tempPositionLevelInput.value === formDataSalary.levelPosition) return; + if ( + !tempPositionLevelInput.value || + tempPositionLevelInput.value === formDataSalary.levelPosition + ) { + tempPositionLevelInput.value = ""; + return; + } if ( !optionStore.optipnLevel.some( From 8777cf4e931406ba17bcaeb7df5816f8f16a572c Mon Sep 17 00:00:00 2001 From: oat_dev Date: Tue, 12 Mar 2024 14:00:04 +0700 Subject: [PATCH 4/9] =?UTF-8?q?=E0=B8=97=E0=B8=B0=E0=B9=80=E0=B8=9A?= =?UTF-8?q?=E0=B8=B5=E0=B8=A2=E0=B8=99=E0=B8=9B=E0=B8=A3=E0=B8=B0=E0=B8=A7?= =?UTF-8?q?=E0=B8=B1=E0=B8=95=E0=B8=B4:=20UI=20=E0=B8=9B=E0=B8=A3=E0=B8=B0?= =?UTF-8?q?=E0=B8=A7=E0=B8=B1=E0=B8=95=E0=B8=B4=E0=B8=81=E0=B8=B2=E0=B8=A3?= =?UTF-8?q?=E0=B8=A8=E0=B8=B6=E0=B8=81=E0=B8=A9=E0=B8=B2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../detail/PersonalInformation/04_Family.vue | 67 +- .../PersonalInformation/05_Education.vue | 817 +++++++++++++++++- 2 files changed, 848 insertions(+), 36 deletions(-) diff --git a/src/modules/04_registryNew/components/detail/PersonalInformation/04_Family.vue b/src/modules/04_registryNew/components/detail/PersonalInformation/04_Family.vue index 1c6623747..de10f5f84 100644 --- a/src/modules/04_registryNew/components/detail/PersonalInformation/04_Family.vue +++ b/src/modules/04_registryNew/components/detail/PersonalInformation/04_Family.vue @@ -6,7 +6,7 @@ import { QForm, useQuasar } from "quasar"; const mixin = useCounterMixin(); const $q = useQuasar(); -const { dialogConfirm, success, messageError, showLoader, hideLoader } = mixin; +const { dialogConfirm } = mixin; const formRef = ref(null); @@ -16,7 +16,7 @@ const fatherPrefixRef = ref(null); const fatherFirstNameRef = ref(null); const fatherLastNameRef = ref(null); const fatherData = reactive({ - isHaveInfo: "0", + isHaveInfo: 0, isDead: false, citizenId: null, prefix: null, @@ -26,7 +26,7 @@ const fatherData = reactive({ job: null, }); const motherData = reactive({ - isHaveInfo: "0", + isHaveInfo: 0, isDead: false, citizenId: null, prefix: null, @@ -36,7 +36,7 @@ const motherData = reactive({ job: null, }); const spouseData = reactive({ - isHave: "0", + isHave: 0, isDead: false, citizenId: null, prefix: null, @@ -69,7 +69,6 @@ function closeHistoryDialog() { } function validateForm() { - console.log("test"); onSubmit(); } @@ -105,8 +104,8 @@ function deleteChildren(items: any) { -
{ " :label="`${'ถึงวันที่'}`" clearable + bg-color="white" @clear="clearDateExam2" > -
@@ -1237,6 +1235,7 @@ onMounted(async () => { @filter="filterFnCaretaker" use-input behavior="menu" + bg-color="white" > -
+
{ @filter="filterFnCaretaker2" use-input behavior="menu" + bg-color="white" >