From e35edfeed74920ef9bb6f66bdb0a89ceaa4384e2 Mon Sep 17 00:00:00 2001 From: "DESKTOP-1R2VSQH\\Lenovo ThinkPad E490" Date: Mon, 11 Mar 2024 14:58:20 +0700 Subject: [PATCH 1/6] =?UTF-8?q?=E0=B8=A3=E0=B8=B2=E0=B8=A2=E0=B8=81?= =?UTF-8?q?=E0=B8=B2=E0=B8=A3=E0=B9=80=E0=B8=A5=E0=B8=B7=E0=B9=88=E0=B8=AD?= =?UTF-8?q?=E0=B8=99=E0=B9=80=E0=B8=87=E0=B8=B4=E0=B8=99=E0=B9=80=E0=B8=94?= =?UTF-8?q?=E0=B8=B7=E0=B8=AD=E0=B8=99=E0=B8=82=E0=B9=89=E0=B8=B2=E0=B8=A3?= =?UTF-8?q?=E0=B8=B2=E0=B8=8A=E0=B8=81=E0=B8=B2=E0=B8=A3=20=20=3D>=20?= =?UTF-8?q?=E0=B8=9B=E0=B8=A3=E0=B8=B1=E0=B8=9A=20body=20filter=20?= =?UTF-8?q?=E0=B8=A3=E0=B8=B2=E0=B8=A2=E0=B8=8A=E0=B8=B7=E0=B9=88=E0=B8=AD?= =?UTF-8?q?=E0=B8=A3=E0=B8=B2=E0=B8=8A=E0=B8=81=E0=B8=B2=E0=B8=A3=E0=B8=97?= =?UTF-8?q?=E0=B8=B5=E0=B9=88=E0=B9=80=E0=B8=A5=E0=B8=B7=E0=B9=88=E0=B8=AD?= =?UTF-8?q?=E0=B8=99=E0=B9=80=E0=B8=87=E0=B8=B4=E0=B8=99=E0=B9=80=E0=B8=94?= =?UTF-8?q?=E0=B8=B7=E0=B8=AD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../SalaryLists/DialogAddPerson.vue | 4 ++ .../13_salary/interface/index/SalaryList.ts | 2 + .../13_salary/store/SalaryListsStore.ts | 4 +- src/modules/13_salary/views/salaryLists.vue | 38 +++++++++++-------- 4 files changed, 31 insertions(+), 17 deletions(-) diff --git a/src/modules/13_salary/components/SalaryLists/DialogAddPerson.vue b/src/modules/13_salary/components/SalaryLists/DialogAddPerson.vue index 9e161c03c..6aaeefa4d 100644 --- a/src/modules/13_salary/components/SalaryLists/DialogAddPerson.vue +++ b/src/modules/13_salary/components/SalaryLists/DialogAddPerson.vue @@ -97,6 +97,8 @@ const formFilter = reactive({ pageSize: 10, keyword: "", rootId: "", + year: 0, + period: "", }); const maxPage = ref(1); @@ -111,6 +113,8 @@ function closeModal() { function fetchListPerson() { showLoader(); formFilter.rootId = store.rootId; + formFilter.period = store.roundMainCode; + formFilter.year = store.roundYear; http .post(config.API.salaryListPerson, formFilter) .then((res) => { diff --git a/src/modules/13_salary/interface/index/SalaryList.ts b/src/modules/13_salary/interface/index/SalaryList.ts index a490b5dff..0d62b7224 100644 --- a/src/modules/13_salary/interface/index/SalaryList.ts +++ b/src/modules/13_salary/interface/index/SalaryList.ts @@ -10,6 +10,8 @@ interface DataFilterPerson { pageSize: number; keyword: string; rootId: string; + year: number; + period: string; } export type { DataFilter, DataFilterPerson }; diff --git a/src/modules/13_salary/store/SalaryListsStore.ts b/src/modules/13_salary/store/SalaryListsStore.ts index 2b43dc022..ff11a843e 100644 --- a/src/modules/13_salary/store/SalaryListsStore.ts +++ b/src/modules/13_salary/store/SalaryListsStore.ts @@ -21,6 +21,7 @@ export const useSalaryListSDataStore = defineStore("salaryListStore", () => { const groupId = ref(""); const rootId = ref(""); const roundMainCode = ref(""); + const roundYear = ref(0); const roundCode = ref(""); const isClosedRound = ref(false); // การปิดรอบ /** List Menu*/ @@ -152,6 +153,7 @@ export const useSalaryListSDataStore = defineStore("salaryListStore", () => { groupOp, roundMainCode, remaining, - isClosedRound + isClosedRound, + roundYear, }; }); diff --git a/src/modules/13_salary/views/salaryLists.vue b/src/modules/13_salary/views/salaryLists.vue index aa126ca50..e2122f53a 100644 --- a/src/modules/13_salary/views/salaryLists.vue +++ b/src/modules/13_salary/views/salaryLists.vue @@ -4,7 +4,7 @@ import { useQuasar } from "quasar"; import config from "@/app.config"; import http from "@/plugins/http"; import ProcessStep from "@/modules/13_salary/components/SalaryLists/ProcessStep.vue"; -import PageDashBoard from '@/modules/13_salary/components/SalaryLists/Dashboard.vue' +import PageDashBoard from "@/modules/13_salary/components/SalaryLists/Dashboard.vue"; /** importType*/ import type { DataOption, @@ -63,6 +63,7 @@ function getRound() { revisionId: x.revisionId, shortCode: x.period, isClose: x.isClose, + year: x.year, name: (x.period === "OCT" ? "รอบตุลาคม " @@ -78,6 +79,7 @@ function getRound() { : ""); store.roundMainCode = roundFilter.value.shortCode; + store.roundYear = roundFilter.value.year; store.isClosedRound = roundFilter.value.isClose; await getSnap(roundFilter.value.shortCode); @@ -239,6 +241,7 @@ function fetchSalalyPeriod(rootId: string, periodId: string, snap: string) { async function onChangeRound() { // เก็บสถานะการปิดรอบในตัวแปร isClosedRound เพื่อใช้ในการเช็ค store.isClosedRound = roundFilter.value.isClose; + console.log(roundFilter.value); await getSnap(roundFilter.value.shortCode); await getAgency(roundFilter.value.revisionId); @@ -251,6 +254,7 @@ async function onChangeRound() { // ); store.tabType = "PENDING"; store.roundMainCode = roundFilter.value.shortCode; + store.roundYear = roundFilter.value.year; } else { isLoad.value = false; } @@ -271,7 +275,11 @@ async function onChangeSnap() { async function onChangeAgency() { store.rootId = agencyFilter.value; - if (agencyFilter.value !== 'ALL' && roundFilter.value.id && snapFilter.value) { + if ( + agencyFilter.value !== "ALL" && + roundFilter.value.id && + snapFilter.value + ) { await fetchSalalyPeriod( agencyFilter.value, roundFilter.value.id, @@ -394,20 +402,18 @@ onMounted(async () => { -->
- - - - -
- - ไม่มีข้อมูล - -
-
-
-
- -
+ + +
+ + ไม่มีข้อมูล + +
+
+ +
+ +
Date: Mon, 11 Mar 2024 15:58:36 +0700 Subject: [PATCH 2/6] =?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=82=E0=B9=89=E0=B8=AD?= =?UTF-8?q?=E0=B8=A1=E0=B8=B9=E0=B8=A5=E0=B8=84=E0=B8=A3=E0=B8=AD=E0=B8=9A?= =?UTF-8?q?=E0=B8=84=E0=B8=A3=E0=B8=B1=E0=B8=A7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../detail/PersonalInformation/04_Family.vue | 1151 ++++++++++++++++- 1 file changed, 1149 insertions(+), 2 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 ecfe8f03f..1c6623747 100644 --- a/src/modules/04_registryNew/components/detail/PersonalInformation/04_Family.vue +++ b/src/modules/04_registryNew/components/detail/PersonalInformation/04_Family.vue @@ -1,6 +1,1153 @@ - + + From f16d7e100e1d598a4e9b5f6931a2968c2f7133be Mon Sep 17 00:00:00 2001 From: waruneeauy Date: Mon, 11 Mar 2024 17:42:27 +0700 Subject: [PATCH 3/6] =?UTF-8?q?=E0=B9=80=E0=B8=9E=E0=B8=B4=E0=B9=88?= =?UTF-8?q?=E0=B8=A1=E0=B8=82=E0=B9=89=E0=B8=AD=E0=B8=A1=E0=B8=B9=E0=B8=A5?= =?UTF-8?q?=E0=B8=AB=E0=B8=A5=E0=B8=B1=E0=B8=81=E0=B8=95=E0=B8=B3=E0=B9=81?= =?UTF-8?q?=E0=B8=AB=E0=B8=99=E0=B9=88=E0=B8=87=E0=B8=A5=E0=B8=B9=E0=B8=81?= =?UTF-8?q?=E0=B8=88=E0=B9=89=E0=B8=B2=E0=B8=87=E0=B8=9B=E0=B8=A3=E0=B8=B0?= =?UTF-8?q?=E0=B8=88=E0=B8=B3,=20=E0=B9=80=E0=B8=9E=E0=B8=B4=E0=B9=88?= =?UTF-8?q?=E0=B8=A1=20page=20=E0=B9=80=E0=B8=A5=E0=B8=B7=E0=B9=88?= =?UTF-8?q?=E0=B8=AD=E0=B8=99=E0=B9=80=E0=B8=87=E0=B8=B4=E0=B8=99=E0=B9=80?= =?UTF-8?q?=E0=B8=94=E0=B8=B7=E0=B8=AD=E0=B8=99=E0=B8=A5=E0=B8=B9=E0=B8=81?= =?UTF-8?q?=E0=B8=88=E0=B9=89=E0=B8=B2=E0=B8=87=E0=B8=9B=E0=B8=A3=E0=B8=B0?= =?UTF-8?q?=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" >