From f16d7e100e1d598a4e9b5f6931a2968c2f7133be Mon Sep 17 00:00:00 2001 From: waruneeauy Date: Mon, 11 Mar 2024 17:42:27 +0700 Subject: [PATCH] =?UTF-8?q?=E0=B9=80=E0=B8=9E=E0=B8=B4=E0=B9=88=E0=B8=A1?= =?UTF-8?q?=E0=B8=82=E0=B9=89=E0=B8=AD=E0=B8=A1=E0=B8=B9=E0=B8=A5=E0=B8=AB?= =?UTF-8?q?=E0=B8=A5=E0=B8=B1=E0=B8=81=E0=B8=95=E0=B8=B3=E0=B9=81=E0=B8=AB?= =?UTF-8?q?=E0=B8=99=E0=B9=88=E0=B8=87=E0=B8=A5=E0=B8=B9=E0=B8=81=E0=B8=88?= =?UTF-8?q?=E0=B9=89=E0=B8=B2=E0=B8=87=E0=B8=9B=E0=B8=A3=E0=B8=B0=E0=B8=88?= =?UTF-8?q?=E0=B8=B3,=20=E0=B9=80=E0=B8=9E=E0=B8=B4=E0=B9=88=E0=B8=A1=20pa?= =?UTF-8?q?ge=20=E0=B9=80=E0=B8=A5=E0=B8=B7=E0=B9=88=E0=B8=AD=E0=B8=99?= =?UTF-8?q?=E0=B9=80=E0=B8=87=E0=B8=B4=E0=B8=99=E0=B9=80=E0=B8=94=E0=B8=B7?= =?UTF-8?q?=E0=B8=AD=E0=B8=99=E0=B8=A5=E0=B8=B9=E0=B8=81=E0=B8=88=E0=B9=89?= =?UTF-8?q?=E0=B8=B2=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/request/main/main.ts | 15 +- .../position-employee/01ListPosition.vue | 393 ++++++++++++++ .../position-employee/02ListType.vue | 409 ++++++++++++++ .../position-employee/03ListLevel.vue | 30 ++ .../position-employee/05ListLevelDetail.vue | 499 ++++++++++++++++++ .../position-employee/DialogAddPosition.vue | 286 ++++++++++ .../components/position/01ListPosition.vue | 6 +- .../interface/request/position/index.ts | 32 +- src/modules/01_metadataNew/router.ts | 28 +- .../stores/positionEmployeeStore.ts | 34 ++ src/modules/01_metadataNew/views/position.vue | 4 +- .../01_metadataNew/views/positionEmployee.vue | 62 +++ .../04_registryNew/components/TableView.vue | 18 +- src/modules/04_registryNew/views/list.vue | 18 +- src/modules/13_salary/router.ts | 24 + .../13_salary/views/salaryEmployeeChart.vue | 3 + .../13_salary/views/salaryEmployeeLists.vue | 412 +++++++++++++++ src/modules/13_salary/views/salaryLists.vue | 36 +- 18 files changed, 2265 insertions(+), 44 deletions(-) create mode 100644 src/modules/01_metadataNew/components/position-employee/01ListPosition.vue create mode 100644 src/modules/01_metadataNew/components/position-employee/02ListType.vue create mode 100644 src/modules/01_metadataNew/components/position-employee/03ListLevel.vue create mode 100644 src/modules/01_metadataNew/components/position-employee/05ListLevelDetail.vue create mode 100644 src/modules/01_metadataNew/components/position-employee/DialogAddPosition.vue create mode 100644 src/modules/01_metadataNew/stores/positionEmployeeStore.ts create mode 100644 src/modules/01_metadataNew/views/positionEmployee.vue create mode 100644 src/modules/13_salary/views/salaryEmployeeChart.vue create mode 100644 src/modules/13_salary/views/salaryEmployeeLists.vue diff --git a/src/interface/request/main/main.ts b/src/interface/request/main/main.ts index 993046ed6..d2c993c4b 100644 --- a/src/interface/request/main/main.ts +++ b/src/interface/request/main/main.ts @@ -66,16 +66,21 @@ const menuList = readonly([ }, { key: 3.2, - label: "ข้อมูลตำแหน่ง", + label: "ข้อมูลตำแหน่งข้าราชการฯ", path: "masterPosition", }, { key: 3.3, + label: "ข้อมูลตำแหน่งลูกจ้างประจำ", + path: "masterPositionEmployee", + }, + { + key: 3.4, label: "ข้อมูลปฏิทินวันหยุด", path: "masterCalendarWork", }, { - key: 3.4, + key: 3.5, label: "ข้อมูลเครื่องราชอิสริยาภรณ์", path: "masterInsignia", }, @@ -623,13 +628,13 @@ const menuList = readonly([ children: [ { key: 12.1, - label: "ผังบัญชีเงินเดือนข้าราชการ", + label: "ผังบัญชีเงินเดือนข้าราชการฯ", path: "salaryChart", role: "salary", }, { key: 12.2, - label: "ผังบัญชีค่าจ้างลูกจ้าง", + label: "ผังบัญชีค่าจ้างลูกจ้างประจำ", path: "salaryEmployeeChart", role: "salary", }, @@ -641,7 +646,7 @@ const menuList = readonly([ }, { key: 12.4, - label: "เลื่อนเงินเดือนข้าราชการ", + label: "เลื่อนเงินเดือนข้าราชการฯ", path: "salaryLists", role: "salary", }, diff --git a/src/modules/01_metadataNew/components/position-employee/01ListPosition.vue b/src/modules/01_metadataNew/components/position-employee/01ListPosition.vue new file mode 100644 index 000000000..2f2f0af64 --- /dev/null +++ b/src/modules/01_metadataNew/components/position-employee/01ListPosition.vue @@ -0,0 +1,393 @@ + + diff --git a/src/modules/01_metadataNew/components/position-employee/02ListType.vue b/src/modules/01_metadataNew/components/position-employee/02ListType.vue new file mode 100644 index 000000000..ac710fe30 --- /dev/null +++ b/src/modules/01_metadataNew/components/position-employee/02ListType.vue @@ -0,0 +1,409 @@ + + + + + diff --git a/src/modules/01_metadataNew/components/position-employee/03ListLevel.vue b/src/modules/01_metadataNew/components/position-employee/03ListLevel.vue new file mode 100644 index 000000000..cd2b046b8 --- /dev/null +++ b/src/modules/01_metadataNew/components/position-employee/03ListLevel.vue @@ -0,0 +1,30 @@ + + + + + diff --git a/src/modules/01_metadataNew/components/position-employee/05ListLevelDetail.vue b/src/modules/01_metadataNew/components/position-employee/05ListLevelDetail.vue new file mode 100644 index 000000000..ed05bcdc4 --- /dev/null +++ b/src/modules/01_metadataNew/components/position-employee/05ListLevelDetail.vue @@ -0,0 +1,499 @@ + + + + + diff --git a/src/modules/01_metadataNew/components/position-employee/DialogAddPosition.vue b/src/modules/01_metadataNew/components/position-employee/DialogAddPosition.vue new file mode 100644 index 000000000..2da4369b0 --- /dev/null +++ b/src/modules/01_metadataNew/components/position-employee/DialogAddPosition.vue @@ -0,0 +1,286 @@ + + + diff --git a/src/modules/01_metadataNew/components/position/01ListPosition.vue b/src/modules/01_metadataNew/components/position/01ListPosition.vue index ce4df1e56..b82951a82 100644 --- a/src/modules/01_metadataNew/components/position/01ListPosition.vue +++ b/src/modules/01_metadataNew/components/position/01ListPosition.vue @@ -19,7 +19,7 @@ const levelOpsMain = ref([]); const dataLevel = ref(); const levelOps = ref([]); -const isSpecial = ref(false) +const isSpecial = ref(false); const formPositionSelect = reactive({ positionId: "", posTypeId: "", @@ -181,7 +181,7 @@ function copyDetiail(data: RowDetailPositions) { * @param data ข้อมูลตำแหน่ง */ function editDetiail(data: RowDetailPositions) { - console.log(data) + console.log(data); formPositionSelect.positionId = data.id; formPositionSelect.posTypeId = data.posTypeId; formPositionSelect.positionName = data.positionName; @@ -386,7 +386,7 @@ onMounted(() => { }}
- {{ col.value ? col.value:'-' }} + {{ col.value ? col.value : "-" }}
diff --git a/src/modules/01_metadataNew/interface/request/position/index.ts b/src/modules/01_metadataNew/interface/request/position/index.ts index 70a272cb9..098952d87 100644 --- a/src/modules/01_metadataNew/interface/request/position/index.ts +++ b/src/modules/01_metadataNew/interface/request/position/index.ts @@ -13,11 +13,18 @@ interface FormPositionSelectDialog { positionField: string; positionType: string; positionLevel: string; - positionExecutive: string|null; + positionExecutive: string | null; positionExecutiveField: string; positionArea: string; } +interface FormPositionEmployeeSelectDialog { + positionId: string; + positionName: string; + positionType: string; + positionLevel: string; +} + interface FormPositionSelectRef { positionName: object | null; positionField: object | null; @@ -28,6 +35,12 @@ interface FormPositionSelectRef { positionArea: object | null; [key: string]: any; } +interface FormPositionEmployeeSelectRef { + positionName: object | null; + positionType: object | null; + positionLevel: object | null; + [key: string]: any; +} interface FormExecutiveRef { posExecutiveName: object | null; posExecutivePriority: object | null; @@ -86,17 +99,24 @@ interface RowDetailPositions { } interface RowListForm { - id:string - posExecutiveName: string - posExecutivePriority: number|null + id: string; + posExecutiveName: string; + posExecutivePriority: number | null; } export type { - Pagination, DataOption, FormPositionSelect, FormPositionSelectRef, OptionType, OptionLevel, + Pagination, + DataOption, + FormPositionSelect, + FormPositionSelectRef, + OptionType, + OptionLevel, OptionExecutive, ListMenu, RowDetailPositions, RowListForm, FormPositionSelectDialog, - FormExecutiveRef + FormExecutiveRef, + FormPositionEmployeeSelectDialog, + FormPositionEmployeeSelectRef, }; diff --git a/src/modules/01_metadataNew/router.ts b/src/modules/01_metadataNew/router.ts index 50cb5bbc4..a3a31310f 100644 --- a/src/modules/01_metadataNew/router.ts +++ b/src/modules/01_metadataNew/router.ts @@ -10,6 +10,12 @@ const positionPage = () => import("@/modules/01_metadataNew/views/position.vue"); const positionLevelPage = () => import("@/modules/01_metadataNew/components/position/03ListLevel.vue"); +const positionEmployeePage = () => + import("@/modules/01_metadataNew/views/positionEmployee.vue"); +const positionEmployeeLevelPage = () => + import( + "@/modules/01_metadataNew/components/position-employee/03ListLevel.vue" + ); export default [ { @@ -68,7 +74,27 @@ export default [ component: positionLevelPage, meta: { Auth: true, - Key: [7], + Key: [9], + Role: "metadata", + }, + }, + { + path: "/master-data/position-employee", + name: "masterPositionEmployee", + component: positionEmployeePage, + meta: { + Auth: true, + Key: [8], + Role: "metadata", + }, + }, + { + path: "/master-data/position-employee/level/:id", + name: "masterPositionEmployeeLevel", + component: positionEmployeeLevelPage, + meta: { + Auth: true, + Key: [9], Role: "metadata", }, }, diff --git a/src/modules/01_metadataNew/stores/positionEmployeeStore.ts b/src/modules/01_metadataNew/stores/positionEmployeeStore.ts new file mode 100644 index 000000000..e3dea70ce --- /dev/null +++ b/src/modules/01_metadataNew/stores/positionEmployeeStore.ts @@ -0,0 +1,34 @@ +import { defineStore } from "pinia"; +import { ref } from "vue"; +import type { + DataResponse, + DataRow, +} from "../interface/response/position/ListType"; +import { useCounterMixin } from "@/stores/mixin"; + +const { date2Thai } = useCounterMixin(); + +export const usePositionEmployeeDataStore = defineStore( + "positionEmployeeStore", + () => { + const pathLocation = ref("list_position"); + const row = ref([]); + function save(data: DataResponse[], id: string) { + const list = data.map((e) => ({ + ...e, + posTypes: undefined, + posTypeId: e.posTypes?.id, + posTypeName: e.posTypes?.posTypeName, + posTypeRank: e.posTypes?.posTypeRank, + createdAt: e.createdAt ? date2Thai(e.createdAt) : "", + lastUpdatedAt: e.lastUpdatedAt ? date2Thai(e.lastUpdatedAt) : "", + })) satisfies DataRow[]; + row.value = list.filter((e) => e.posTypeId === id); + } + return { + save, + row, + pathLocation, + }; + } +); diff --git a/src/modules/01_metadataNew/views/position.vue b/src/modules/01_metadataNew/views/position.vue index 0c2ce6698..0bc59bb19 100644 --- a/src/modules/01_metadataNew/views/position.vue +++ b/src/modules/01_metadataNew/views/position.vue @@ -20,7 +20,9 @@ onMounted(() => { @@ -285,7 +285,11 @@ onMounted(async () => { class="custom-btn" >