-
-
- เพิ่มตำเเหน่ง
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+ icon="mdi-plus"
+ @click="popupAdd()"
+ >เพิ่มตำเเหน่ง
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
+
{
>
-
+
{
ลบข้อมูล
-
+
{{ props.rowIndex + 1 }}
@@ -415,11 +412,11 @@ onMounted(() => {
-
diff --git a/src/modules/01_metadata/components/position/02ListType.vue b/src/modules/01_metadata/components/position/02ListType.vue
index dd68b3bb..6dfdaeb9 100644
--- a/src/modules/01_metadata/components/position/02ListType.vue
+++ b/src/modules/01_metadata/components/position/02ListType.vue
@@ -1,25 +1,25 @@
@@ -277,20 +255,6 @@ async function onSubmit() {
>
แก้ไขข้อมูล
-
{{ col.value }}
@@ -301,15 +265,12 @@ async function onSubmit() {
-
+
-
+
diff --git a/src/modules/01_metadata/components/position/04ListExecutive.vue b/src/modules/01_metadata/components/position/03ListExecutive.vue
similarity index 69%
rename from src/modules/01_metadata/components/position/04ListExecutive.vue
rename to src/modules/01_metadata/components/position/03ListExecutive.vue
index 28ed5764..50f444ff 100644
--- a/src/modules/01_metadata/components/position/04ListExecutive.vue
+++ b/src/modules/01_metadata/components/position/03ListExecutive.vue
@@ -1,50 +1,22 @@
@@ -232,7 +206,7 @@ onMounted(() => {
-import { ref } from "vue";
-import { useRouter } from "vue-router";
-import ListLevelDetail from "@/modules/01_metadata/components/position/05ListLevelDetail.vue";
-
-const router = useRouter();
-const posName = ref("");
-
-
-
-
-
- รายการระดับของประเภทตำแหน่ง{{ posName }}
-
-
-
-
-
-
-
-
diff --git a/src/modules/01_metadata/components/position/05ListLevelDetail.vue b/src/modules/01_metadata/components/position/05ListLevelDetail.vue
deleted file mode 100644
index c8f622ab..00000000
--- a/src/modules/01_metadata/components/position/05ListLevelDetail.vue
+++ /dev/null
@@ -1,544 +0,0 @@
-
-
-
-
-
- {
- dialogStatus = 'create';
- dialog = true;
- posLevelName = '';
- posLevelRank = undefined;
- posLevelAuthority = '';
- }
- "
- >
- เพิ่มข้อมูล
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/src/modules/01_metadata/components/position/DialogAddExecutive.vue b/src/modules/01_metadata/components/position/DialogAddExecutive.vue
deleted file mode 100644
index 6b9d4a52..00000000
--- a/src/modules/01_metadata/components/position/DialogAddExecutive.vue
+++ /dev/null
@@ -1,214 +0,0 @@
-
-
-
-
-
-
-
-
-
diff --git a/src/modules/01_metadata/components/position/DialogFormExecutive.vue b/src/modules/01_metadata/components/position/DialogFormExecutive.vue
new file mode 100644
index 00000000..4b938ea0
--- /dev/null
+++ b/src/modules/01_metadata/components/position/DialogFormExecutive.vue
@@ -0,0 +1,175 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/modules/01_metadata/components/position/DialogAddPosition.vue b/src/modules/01_metadata/components/position/DialogFormPosition.vue
similarity index 51%
rename from src/modules/01_metadata/components/position/DialogAddPosition.vue
rename to src/modules/01_metadata/components/position/DialogFormPosition.vue
index c31ff092..de8b5d4e 100644
--- a/src/modules/01_metadata/components/position/DialogAddPosition.vue
+++ b/src/modules/01_metadata/components/position/DialogFormPosition.vue
@@ -1,8 +1,10 @@
-
+
@@ -301,7 +295,7 @@ function close() {
label="สายงาน"
lazy-rules
hide-bottom-space
- :rules="[(val) => !!val || `${'กรุณากรอกสายงาน'}`]"
+ :rules="[(val:string) => !!val || `${'กรุณากรอกสายงาน'}`]"
/>
@@ -320,7 +314,7 @@ function close() {
option-value="id"
lazy-rules
hide-bottom-space
- :rules="[(val) => !!val || `${'กรุณาเลือกประเภทตำแหน่ง'}`]"
+ :rules="[(val:string) => !!val || `${'กรุณาเลือกประเภทตำแหน่ง'}`]"
/>
@@ -339,7 +333,7 @@ function close() {
option-value="id"
lazy-rules
hide-bottom-space
- :rules="[(val) => !!val || `${'กรุณาเลือกระดับตำแหน่ง'}`]"
+ :rules="[(val:string) => !!val || `${'กรุณาเลือกระดับตำแหน่ง'}`]"
/>
diff --git a/src/modules/01_metadata/components/position/ListLevel.vue b/src/modules/01_metadata/components/position/ListLevel.vue
new file mode 100644
index 00000000..9297ad2c
--- /dev/null
+++ b/src/modules/01_metadata/components/position/ListLevel.vue
@@ -0,0 +1,485 @@
+
+
+
+
+
+ รายการระดับของประเภทตำแหน่ง{{ posName }}
+
+
+
+
+
+ {
+ dialogStatus = 'create';
+ dialog = true;
+ posLevelName = '';
+ posLevelRank = undefined;
+ posLevelAuthority = '';
+ }
+ "
+ >
+ เพิ่มข้อมูล
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ บันทึกข้อมูล
+
+
+
+
+
+
+
+
diff --git a/src/modules/01_metadata/interface/response/position/Main.ts b/src/modules/01_metadata/interface/response/position/Main.ts
new file mode 100644
index 00000000..7af19bb0
--- /dev/null
+++ b/src/modules/01_metadata/interface/response/position/Main.ts
@@ -0,0 +1,15 @@
+interface ResPosType {
+ id: string;
+ posTypeName: string;
+ posTypeRank: number;
+ posLevels: PosLevels[];
+}
+
+interface PosLevels {
+ id: string;
+ posLevelAuthority: string;
+ posLevelName: string;
+ posLevelRank: number;
+}
+
+export type { ResPosType };
diff --git a/src/modules/01_metadata/router.ts b/src/modules/01_metadata/router.ts
index 36a44a6a..c177ad07 100644
--- a/src/modules/01_metadata/router.ts
+++ b/src/modules/01_metadata/router.ts
@@ -16,7 +16,7 @@ const personalSubDistrict = () =>
const positionPage = () =>
import("@/modules/01_metadata/views/02_position.vue"); //ข้อมูลตำแหน่งข้าราชการ ฯ
const positionLevelPage = () =>
- import("@/modules/01_metadata/components/position/03ListLevel.vue"); //รายการระดับของประเภทตำแหน่งทั่วไป
+ import("@/modules/01_metadata/components/position/ListLevel.vue"); //รายการระดับของประเภทตำแหน่งทั่วไป
/**
* ข้อมูลตำแหน่งลูกจ้างประจำ
diff --git a/src/modules/01_metadata/stores/positionTypeStore.ts b/src/modules/01_metadata/stores/positionTypeStore.ts
index 255aa3a3..a9210f5e 100644
--- a/src/modules/01_metadata/stores/positionTypeStore.ts
+++ b/src/modules/01_metadata/stores/positionTypeStore.ts
@@ -1,17 +1,23 @@
import { defineStore } from "pinia";
import { ref } from "vue";
+
+import { useCounterMixin } from "@/stores/mixin";
+
import type {
DataResponse,
DataRow,
} from "../interface/response/position/ListType";
-import { useCounterMixin } from "@/stores/mixin";
const { date2Thai } = useCounterMixin();
export const usePositionTypeDataStore = defineStore("PositionTypeData", () => {
const row = ref
([]);
- function save(data: DataResponse[]) {
+ /**
+ * บันทึกข้อมูลลงใน row.value
+ * @param data ข้อมูลรายการจาก API
+ */
+ async function save(data: DataResponse[]) {
const list = data.map((e) => ({
...e,
posTypes: undefined,
diff --git a/src/modules/01_metadata/views/02_position.vue b/src/modules/01_metadata/views/02_position.vue
index 055108a1..2c4aa96e 100644
--- a/src/modules/01_metadata/views/02_position.vue
+++ b/src/modules/01_metadata/views/02_position.vue
@@ -1,15 +1,21 @@