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,