diff --git a/src/api/02_organizational/api.organization.ts b/src/api/02_organizational/api.organization.ts index 41c50526d..df1c7be0b 100644 --- a/src/api/02_organizational/api.organization.ts +++ b/src/api/02_organizational/api.organization.ts @@ -69,4 +69,11 @@ export default { orgEmployeeTypeById: (id: string) => `${orgEmployeePos}/type/${id}`, orgEmployeelevel: `${orgEmployeePos}/level`, orgEmployeelevelById: (id: string) => `${orgEmployeePos}/level/${id}`, + + /** อัตรากำลังลูกจ้างประจำ*/ + orgSummaryEmp: `${orgEmployeePos}/summary`, + orgReportEmp: (report: string) => `${orgEmployeePos}/report/${report}`, + orgDeleteProfileEmp: (id: string) => `${orgEmployeePos}/profile/delete/${id}`, + orgPosMasterByIdEmp: (id: string) => `${orgEmployeePos}/master/${id}`, + orgPosMasterListEmp: `${orgEmployeePos}/master/list`, }; diff --git a/src/interface/request/main/main.ts b/src/interface/request/main/main.ts index d2c993c4b..8aacd7725 100644 --- a/src/interface/request/main/main.ts +++ b/src/interface/request/main/main.ts @@ -131,6 +131,14 @@ const menuList = readonly([ // }, // ], }, + { + key: 4, + icon: "o_groups", + activeIcon: "groups", + label: "อัตรากำลังลูกจ้างประจำฯ", + path: "positionEmployee", + role: "positionEmployee", + }, { key: 4, icon: "o_contact_page", diff --git a/src/modules/16_positionEmployee/components/DialogAddPosition.vue b/src/modules/16_positionEmployee/components/DialogAddPosition.vue new file mode 100644 index 000000000..363d0b29c --- /dev/null +++ b/src/modules/16_positionEmployee/components/DialogAddPosition.vue @@ -0,0 +1,441 @@ + + diff --git a/src/modules/16_positionEmployee/components/DialogFormPosition.vue b/src/modules/16_positionEmployee/components/DialogFormPosition.vue new file mode 100644 index 000000000..490fc1d22 --- /dev/null +++ b/src/modules/16_positionEmployee/components/DialogFormPosition.vue @@ -0,0 +1,980 @@ + + + + + diff --git a/src/modules/16_positionEmployee/components/DialogHistoryPos.vue b/src/modules/16_positionEmployee/components/DialogHistoryPos.vue new file mode 100644 index 000000000..7f1e3791e --- /dev/null +++ b/src/modules/16_positionEmployee/components/DialogHistoryPos.vue @@ -0,0 +1,168 @@ + + + + diff --git a/src/modules/16_positionEmployee/components/DialogMovePos.vue b/src/modules/16_positionEmployee/components/DialogMovePos.vue new file mode 100644 index 000000000..c63eb86ce --- /dev/null +++ b/src/modules/16_positionEmployee/components/DialogMovePos.vue @@ -0,0 +1,318 @@ + + + + diff --git a/src/modules/16_positionEmployee/components/DialogPositionDetail.vue b/src/modules/16_positionEmployee/components/DialogPositionDetail.vue new file mode 100644 index 000000000..2f4db32b4 --- /dev/null +++ b/src/modules/16_positionEmployee/components/DialogPositionDetail.vue @@ -0,0 +1,325 @@ + + diff --git a/src/modules/16_positionEmployee/components/DialogSelectPerson.vue b/src/modules/16_positionEmployee/components/DialogSelectPerson.vue new file mode 100644 index 000000000..99dc1566c --- /dev/null +++ b/src/modules/16_positionEmployee/components/DialogSelectPerson.vue @@ -0,0 +1,726 @@ + + + + + diff --git a/src/modules/16_positionEmployee/components/DialogSortPosition.vue b/src/modules/16_positionEmployee/components/DialogSortPosition.vue new file mode 100644 index 000000000..a205a1751 --- /dev/null +++ b/src/modules/16_positionEmployee/components/DialogSortPosition.vue @@ -0,0 +1,154 @@ + + diff --git a/src/modules/16_positionEmployee/components/DialogSuccession.vue b/src/modules/16_positionEmployee/components/DialogSuccession.vue new file mode 100644 index 000000000..c705207e3 --- /dev/null +++ b/src/modules/16_positionEmployee/components/DialogSuccession.vue @@ -0,0 +1,413 @@ + + + + + diff --git a/src/modules/16_positionEmployee/components/TreeMain.vue b/src/modules/16_positionEmployee/components/TreeMain.vue new file mode 100644 index 000000000..cdba203f6 --- /dev/null +++ b/src/modules/16_positionEmployee/components/TreeMain.vue @@ -0,0 +1,625 @@ + + + + + diff --git a/src/modules/16_positionEmployee/components/TreeTable.vue b/src/modules/16_positionEmployee/components/TreeTable.vue new file mode 100644 index 000000000..ce96087a0 --- /dev/null +++ b/src/modules/16_positionEmployee/components/TreeTable.vue @@ -0,0 +1,853 @@ + + + + + diff --git a/src/modules/16_positionEmployee/components/TreeView.vue b/src/modules/16_positionEmployee/components/TreeView.vue new file mode 100644 index 000000000..d82acc8b6 --- /dev/null +++ b/src/modules/16_positionEmployee/components/TreeView.vue @@ -0,0 +1,358 @@ + + + + + diff --git a/src/modules/16_positionEmployee/interface/index/Main.ts b/src/modules/16_positionEmployee/interface/index/Main.ts new file mode 100644 index 000000000..598a075b1 --- /dev/null +++ b/src/modules/16_positionEmployee/interface/index/Main.ts @@ -0,0 +1,146 @@ +interface Pagination { + rowsPerPage: number; +} + +interface DataOption { + id: string; + name: string; +} + +interface ListMenu { + label: string; + icon: string; + type: string; + color: string; +} + +interface FormDataAgency { + orgName: string; + orgShortName: string; + orgCode: string; + orgPhoneEx: string; + orgPhoneIn: string; + orgFax: string; + orgLevel: string; + orgLevelSub: string; +} + +interface FormDataPosition { + shortName: string; + prefixNo: string; + positionNo: string; + suffixNo: string; +} + +interface FormDataNewStructure { + orgRevisionId: string; + orgRevisionName: string; + typeDraft: string; +} + +interface FormAgencyRef { + orgName: object | null; + orgShortName: object | null; + orgCode: object | null; + // orgPhoneEx: object | null; + // orgPhoneIn: object | null; + // orgFax: object | null; + orgLevel: object | null; + [key: string]: any; +} + +interface FormPositionRef { + prefixNo: object | null; + positionNo: object | null; + [key: string]: any; +} + +interface FormDateTimeRef { + dateTime: object | null; + [key: string]: any; +} + +interface FormNewStructureRef { + orgRevisionName: object | null; + orgRevisionId: object | null; + type: object | null; + [key: string]: any; +} + +interface HistoryType { + orgRevisionId: string; + orgRevisionName: string; + orgRevisionIsCurrent: boolean; + orgRevisionIsDraft: boolean; + orgRevisionCreatedAt: Date | string; +} +interface HistoryPostType { + id: string; + name: string; + lastUpdatedAt: Date; + orgRevisionName: string; +} + +interface FormPositionSelect { + positionId: string; + positionName: string; + positionField: string; + positionType: string; + positionLevel: string; + positionExecutive: string; + positionExecutiveField: string; + positionArea: string; +} + +interface FormPositionSelectRef { + positionName: object | null; + positionField: object | null; + positionType: object | null; + positionLevel: object | null; + positionExecutive: object | null; + positionExecutiveField: object | null; + positionArea: object | null; + [key: string]: any; +} + +interface RowDetailPositions { + id: string; + positionId: string; + positionName: string; + positionField: string; + positionType: string; + positionLevel: string; + positionExecutive: string; + positionExecutiveField: string; + positionArea: string; + posTypeId: string; + posLevelId: string; + posExecutiveId: string; + isSpecial: boolean; +} + +interface NewPagination { + descending: boolean; + page: number; + rowsPerPage: number; + sortBy: string; +} + +export type { + Pagination, + DataOption, + FormDataAgency, + FormDataPosition, + FormAgencyRef, + FormPositionRef, + FormDateTimeRef, + FormDataNewStructure, + FormNewStructureRef, + HistoryType, + ListMenu, + FormPositionSelect, + RowDetailPositions, + HistoryPostType, + FormPositionSelectRef, + NewPagination, +}; diff --git a/src/modules/16_positionEmployee/interface/index/organizational.ts b/src/modules/16_positionEmployee/interface/index/organizational.ts new file mode 100644 index 000000000..f6f21bd60 --- /dev/null +++ b/src/modules/16_positionEmployee/interface/index/organizational.ts @@ -0,0 +1,107 @@ +interface DataPosition { + id: string; + orgRootId: string; + orgChild1Id: string | null; + orgChild2Id: string | null; + orgChild3Id: string | null; + orgChild4Id: string | null; + posMasterNoPrefix: string; + posMasterNo: string; + posMasterNoSuffix: string; + orgShortname: string; + positions: Position[]; + positionName: string; + positionField: string; + posTypeId: string; + posTypeName: string; + posLevelId: string; + posLevelName: string; + posExecutiveId: string; + posExecutiveName: string; + positionExecutiveField: string; + positionArea: string; + positionIsSelected: string | boolean; +} + +interface Position { + id: string; + positionName: string; + positionField: string; + posTypeId: string; + posTypeName: string; + posLevelId: string; + posLevelName: string; + posExecutiveId: string; + posExecutiveName: string; + positionExecutiveField: string; + positionArea: string; + positionIsSelected: boolean; +} + +interface FormDetailPosition { + positionNo: string; + positionType: string; + positionPathSide: string; + positionLine: string; + positionSide: string; + positionLevel: string; + positionExecutive: string; + positionExecutiveSide: string; + status: string; +} + +interface DataTree { + orgTreeId: string; + orgRootId?: string; + orgLevel: number; + orgName: string; + orgTreeName: string; + orgTreeShortName: string; + orgTreeCode: string; + orgCode: string; + orgTreeRank: string; + orgTreeOrder: number; + orgRootCode?: string; + orgTreePhoneEx: string; + orgTreePhoneIn: string; + orgTreeFax: string; + orgRevisionId: string; + orgRootName: string; + totalPosition: number; + totalPositionCurrentUse: number; + totalPositionCurrentVacant: number; + totalPositionNextUse: number; + totalPositionNextVacant: number; + totalRootPosition: number; + totalRootPositionCurrentUse: number; + totalRootPositionCurrentVacant: number; + totalRootPositionNextUse: number; + totalRootPositionNextVacant: number; + + children?: DataTree[]; +} + +interface SeaechResult { + id: string; + citizenId: string; + name: string; + posTypeName: string; + posLevelName: string; +} +interface FormPositionFilter { + positionNo: string; + positionType: string; + positionLevel: string; + personal: string; + position: string; + status: string; +} + +export type { + DataPosition, + Position, + FormDetailPosition, + DataTree, + SeaechResult, + FormPositionFilter, +}; diff --git a/src/modules/16_positionEmployee/interface/request/Main.ts b/src/modules/16_positionEmployee/interface/request/Main.ts new file mode 100644 index 000000000..b5eb23bd3 --- /dev/null +++ b/src/modules/16_positionEmployee/interface/request/Main.ts @@ -0,0 +1,14 @@ +interface DataSumCalendarObject { + id: number; + monthFull: String; + count: number; + color: String; +} + +interface DataListsObject { + id: number; + count: number; + name: string; +} + +export type { DataSumCalendarObject, DataListsObject }; diff --git a/src/modules/16_positionEmployee/interface/request/organizational.ts b/src/modules/16_positionEmployee/interface/request/organizational.ts new file mode 100644 index 000000000..074095c3d --- /dev/null +++ b/src/modules/16_positionEmployee/interface/request/organizational.ts @@ -0,0 +1,21 @@ +interface FilterMaster { + id: string; //*Id node + type: number; //*ประเภทnode + isAll: boolean; //*(true->ทั้งหมด, false->ในระดับตัวเอง) + page: number; //*หน้า + pageSize: number; //*จำนวนแถวต่อหน้า + keyword: string; //ข้อความที่ต้องการค้นหา + revisionId?: string +} +interface MovePos { + id: string; + type: number; + positionMaster: string[]; +} + +interface Inherit { + draftPositionId: string; + publishPositionId: string; +} + +export type { FilterMaster, MovePos, Inherit }; diff --git a/src/modules/16_positionEmployee/interface/response/organizational.ts b/src/modules/16_positionEmployee/interface/response/organizational.ts new file mode 100644 index 000000000..d674b5773 --- /dev/null +++ b/src/modules/16_positionEmployee/interface/response/organizational.ts @@ -0,0 +1,203 @@ +interface DataActive { + activeId: string; + activeName: string; + draftId: string; + draftName: string; + isPublic: boolean; + orgPublishDate: Date | null; +} + +interface SumPosition { + totalPosition: number; + totalPositionCurrentUse: number; + totalPositionCurrentVacant: number; + totalPositionNextUse: number; + totalPositionNextVacant: number; + totalRootPosition: number; + totalRootPositionCurrentUse: number; + totalRootPositionCurrentVacant: number; + totalRootPositionNextUse: number; + totalRootPositionNextVacant: number; +} + +interface OrgTree { + orgTreeId: string; + orgRootId: string; + orgLevel: number; + orgTreeName: string; + orgTreeShortName: string; + orgTreeCode: string; + orgCode: string; + orgTreeRank: string; + orgTreeOrder: number | null; + orgRootCode: string; + orgTreePhoneEx: string; + orgTreePhoneIn: string; + orgTreeFax: string; + orgRevisionId: string; + children: OrgTree[]; +} + +interface OrgRevision { + orgRevisionCreatedAt: string | null; + orgRevisionId: string; + orgRevisionIsCurrent: boolean; + orgRevisionIsDraft: boolean; + orgRevisionName: string; +} + +interface OptionType { + id: string; + posTypeName: string; +} + +interface OptionLevel { + id: string; + posLevelName: string; +} + +interface OptionExecutive { + id: string; + posExecutiveName: string; +} + +interface DataPosition { + id: string; + posExecutiveId: string; + posExecutiveName: string; + posLevelId: string; + posLevelName: string; + posTypeId: string; + posTypeName: string; + positionArea: string; + positionExecutiveField: string; + positionField: string; + positionIsSelected: boolean; + positionName: string; +} + +interface Position { + id: string; // id ตำแหน่ง + positionName: string; // ชื่อตำแหน่งในสายงาน (ชื่อตำแหน่ง) + positionField: string; // สายงาน + posTypeId: string; // ประเภทตำแหน่ง + posTypeName: string; // ประเภทตำแหน่ง + posLevelId: string; // ระดับตำแหน่ง + posLevelName: string; // ระดับตำแหน่ง + posExecutiveId: string; // ตำแหน่งทางการบริหาร + posExecutiveName: string; // ตำแหน่งทางการบริหาร + positionExecutiveField: string; // ด้านทางการบริหาร + positionArea: string; // ด้าน/สาขา + positionIsSelected: boolean; // เป็นตำแหน่งที่ถูกเลือกในรอบนั้น ๆ หรือไม่? +} + +interface PosMaster { + id: string; // id อัตรากำลัง posmaster + orgShortname: string; // อักษรย่อตำแหน่ง + posMasterNoPrefix: string; // Prefix นำหน้าเลขที่ตำแหน่ง เป็น Optional (ไม่ใช่อักษรย่อของหน่วยงาน/ส่วนราชการ) + posMasterNo: number | string; // เลขที่ตำแหน่ง เป็นตัวเลข + posMasterNoSuffix: string | null; // Suffix หลังเลขที่ตำแหน่ง เช่น ช. + positionName: string; // ชื่อตำแหน่งในสายงาน (ชื่อตำแหน่ง) + positionField: string; // สายงาน + posTypeId: string; // ประเภทตำแหน่ง + posTypeName: string; // ประเภทตำแหน่ง + posLevelId: string; // ระดับตำแหน่ง + posLevelName: string; // ระดับตำแหน่ง + posExecutiveId: string; // ตำแหน่งทางการบริหาร + posExecutiveName: string; // ตำแหน่งทางการบริหาร + positionExecutiveField: string; // ด้านทางการบริหาร + positionArea: string; // ด้าน/สาขา + positionIsSelected: boolean; // เป็นตำแหน่งที่ถูกเลือกในรอบนั้น ๆ หรือไม่? + fullNameCurrentHolder: string | null; + fullNameNextHolder: string | null; + positions: Position[]; // ตำแหน่ง + isSit: boolean; + profilePosition: string; + profilePostype: string; + profilePoslevel: string; +} +interface Position2 { + id: string; // id ตำแหน่ง + positionName: string; // ชื่อตำแหน่งในสายงาน (ชื่อตำแหน่ง) + positionField: string; // สายงาน + posTypeId: string; // ประเภทตำแหน่ง + posTypeName: string; // ประเภทตำแหน่ง + posLevelId: string; // ระดับตำแหน่ง + posLevelName: string; // ระดับตำแหน่ง + posExecutiveId: string; // ตำแหน่งทางการบริหาร + posExecutiveName: string; // ตำแหน่งทางการบริหาร + positionExecutiveField: string; // ด้านทางการบริหาร + positionArea: string; // ด้าน/สาขา + positionIsSelected: string; // เป็นตำแหน่งที่ถูกเลือกในรอบนั้น ๆ หรือไม่? +} + +interface PosMaster2 { + id: string; // id อัตรากำลัง posmaster + orgShortname: string; // อักษรย่อตำแหน่ง + posMasterNoPrefix: string; // Prefix นำหน้าเลขที่ตำแหน่ง เป็น Optional (ไม่ใช่อักษรย่อของหน่วยงาน/ส่วนราชการ) + posMasterNo: number | string; // เลขที่ตำแหน่ง เป็นตัวเลข + posMasterNoSuffix: string | null; // Suffix หลังเลขที่ตำแหน่ง เช่น ช. + positionName: string; // ชื่อตำแหน่งในสายงาน (ชื่อตำแหน่ง) + positionField: string; // สายงาน + posTypeId: string; // ประเภทตำแหน่ง + posTypeName: string; // ประเภทตำแหน่ง + posLevelId: string; // ระดับตำแหน่ง + posLevelName: string; // ระดับตำแหน่ง + posExecutiveId: string; // ตำแหน่งทางการบริหาร + posExecutiveName: string; // ตำแหน่งทางการบริหาร + positionExecutiveField: string; // ด้านทางการบริหาร + positionArea: string; // ด้าน/สาขา + positionIsSelected: string; // เป็นตำแหน่งที่ถูกเลือกในรอบนั้น ๆ หรือไม่? + positions: Position[]; // ตำแหน่ง +} + +interface HistoryPos { + id: string; //id node + orgShotName: string; //ชื่อย่อส่วนราชการ + lastUpdatedAt: Date; //วันที่แก้ไข + posMasterNoPrefix: string; //Prefix นำหน้าเลขที่ตำแหน่ง เป็น Optional (ไม่ใช่อักษรย่อของหน่วยงาน/ส่วนราชการ) + posMasterNo: number; //เลขที่ตำแหน่ง เป็นตัวเลข + posMasterNoSuffix: string; //Suffix หลังเลขที่ตำแหน่ง เช่น ช. +} + +interface SelectPerson { + citizenId: string; + firstName: string; + id: string; + lastName: string; + posLevel: string; + posType: string; + position: string; + prefix: string; +} + +interface PosLevels { + id: string; + posLevelAuthority: null; + posLevelName: string; + posLevelRank: number; +} +interface TypePos { + id: string; + PosLevels: PosLevels[]; + posTypeName: string; + posTypeRank: number; +} + +export type { + DataActive, + OrgTree, + OrgRevision, + OptionType, + OptionLevel, + OptionExecutive, + DataPosition, + PosMaster, + PosMaster2, + Position, + Position2, + SumPosition, + HistoryPos, + SelectPerson, + TypePos, +}; diff --git a/src/modules/16_positionEmployee/router.ts b/src/modules/16_positionEmployee/router.ts new file mode 100644 index 000000000..9865b0d11 --- /dev/null +++ b/src/modules/16_positionEmployee/router.ts @@ -0,0 +1,14 @@ +const mainPage = () => import("@/modules/16_positionEmployee/views/main.vue"); + +export default [ + { + path: "/position-employee", + name: "positionEmployee", + component: mainPage, + meta: { + Auth: true, + Key: [1], + Role: "positionEmployee", + }, + }, +]; diff --git a/src/modules/16_positionEmployee/store/organizational.ts b/src/modules/16_positionEmployee/store/organizational.ts new file mode 100644 index 000000000..087677863 --- /dev/null +++ b/src/modules/16_positionEmployee/store/organizational.ts @@ -0,0 +1,141 @@ +import { defineStore } from "pinia"; +import { reactive, ref } from "vue"; + +/** importType*/ +import type { + DataActive, + SumPosition, + PosMaster, +} from "@/modules/16_positionEmployee/interface/response/organizational"; + +export const usePositionEmp = defineStore("positionEmpStore", () => { + const typeOrganizational = ref("current"); + const statusView = ref("list"); + + const dataActive = ref(); + const activeId = ref(); + const draftId = ref(); + const historyId = ref(); + const treeId = ref(); + const level = ref(); + const isPublic = ref(false); + const orgPublishDate = ref(null); + const sumPosition = reactive({ + total: 0, + use: 0, + vacant: 0, + totalRoot: 0, + useRoot: 0, + vacantRoot: 0, + }); + + function getSumPosition(data: SumPosition) { + sumPosition.total = data.totalPosition; + sumPosition.totalRoot = data.totalRootPosition ? data.totalRootPosition : 0; + + if (typeOrganizational.value == "draft") { + sumPosition.use = data.totalPositionNextUse; + sumPosition.useRoot = data.totalRootPositionNextUse + ? data.totalRootPositionNextUse + : 0; + + sumPosition.vacant = data.totalPositionNextVacant; + sumPosition.vacantRoot = data.totalRootPositionNextVacant + ? data.totalRootPositionNextVacant + : 0; + } else { + sumPosition.use = data.totalPositionCurrentUse; + sumPosition.useRoot = data.totalRootPositionCurrentUse + ? data.totalRootPositionCurrentUse + : 0; + + sumPosition.vacant = data.totalPositionCurrentVacant; + sumPosition.vacantRoot = data.totalRootPositionCurrentVacant + ? data.totalRootPositionCurrentVacant + : 0; + } + } + + function fetchDataActive(data: DataActive) { + activeId.value = data.activeId; + draftId.value = data.draftId; + dataActive.value = data; + isPublic.value = data.isPublic; + orgPublishDate.value = data.orgPublishDate; + } + + function fetchPosMaster(data: PosMaster[]) { + const newPosMaster = data.map((e: PosMaster) => ({ + ...e, + positionIsSelected: + typeOrganizational.value === "draft" && e.fullNameNextHolder !== null + ? e.fullNameNextHolder + : typeOrganizational.value !== "draft" && + e.fullNameCurrentHolder !== null + ? e.fullNameCurrentHolder + : "ว่าง", + posMasterNo: + e.orgShortname + + e.posMasterNoPrefix + + e.posMasterNo + + e.posMasterNoSuffix, + positionName: e.isSit ? e.profilePosition : e.positionName, + posTypeName: e.isSit ? e.profilePostype : e.posTypeName, + posLevelName: e.isSit ? e.profilePoslevel : e.posLevelName, + posExecutiveName: e.posExecutiveName, + isSit: e.isSit, + })); + + return newPosMaster; + } + + function checkLevel(type: number) { + switch (type) { + case 0: + return "Root"; + case 1: + return "Child1"; + case 2: + return "Child2"; + case 3: + return "Child3"; + default: + return "Child4"; + } + } + + function convertType(type: string) { + switch (type) { + case "DEPARTMENT": + return "ระดับสำนัก"; + case "OFFICE": + return "ระดับกอง/สำนักงาน/ส่วนราชการ/โรงพยาบาล/เทียบเท่ากอง"; + case "DIVISION": + return "ระดับส่วน/กลุ่มภารกิจ"; + case "SECTION": + return "ระดับฝ่าย/กลุ่มงาน"; + default: + return "-"; + } + } + + return { + typeOrganizational, + statusView, + + // + fetchDataActive, + checkLevel, + convertType, + draftId, + activeId, + historyId, + treeId, + level, + isPublic, + orgPublishDate, + fetchPosMaster, + sumPosition, + getSumPosition, + }; +}); diff --git a/src/modules/16_positionEmployee/views/main.vue b/src/modules/16_positionEmployee/views/main.vue new file mode 100644 index 000000000..9093bf021 --- /dev/null +++ b/src/modules/16_positionEmployee/views/main.vue @@ -0,0 +1,82 @@ + + + + + diff --git a/src/router/index.ts b/src/router/index.ts index 2b49a0802..c40e5cc50 100644 --- a/src/router/index.ts +++ b/src/router/index.ts @@ -8,6 +8,7 @@ import ModuleMetadata from "@/modules/01_metadata/router"; import ModuleMetadataNew from "@/modules/01_metadataNew/router"; import ModuleOrganizational from "@/modules/02_organizational/router"; import ModuleOrganizationalNew from "@/modules/02_organizationalNew/router"; +import ModulePositionEmployee from "@/modules/16_positionEmployee/router"; import ModuleRecruiting from "@/modules/03_recruiting/router"; import ModuleRecruitingNew from "@/modules/04_registryNew/router"; import ModuleRegistry from "@/modules/04_registry/router"; @@ -49,6 +50,7 @@ const router = createRouter({ ...ModuleMetadataNew, ...ModuleOrganizational, ...ModuleOrganizationalNew, + ...ModulePositionEmployee, ...ModuleRecruiting, ...ModuleRecruitingNew, ...ModuleRegistry,