From cab4420aca36e1e10ccf88efc1e12d8a837006c6 Mon Sep 17 00:00:00 2001 From: oat Date: Fri, 2 Feb 2024 13:15:14 +0700 Subject: [PATCH 1/5] =?UTF-8?q?UI=20=E0=B8=82=E0=B9=89=E0=B8=AD=E0=B8=A1?= =?UTF-8?q?=E0=B8=B9=E0=B8=A5=E0=B8=9A=E0=B8=B8=E0=B8=84=E0=B8=84=E0=B8=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../components/personal/01ListPrefix.vue | 397 ++++++++++++++++- .../components/personal/02ListRank.vue | 408 +++++++++++++++++- .../components/personal/03ListBloodGroup.vue | 397 ++++++++++++++++- .../components/personal/04ListGender.vue | 397 ++++++++++++++++- .../components/personal/05ListReligion.vue | 397 ++++++++++++++++- .../personal/06ListRelationship.vue | 405 ++++++++++++++++- .../01_metadataNew/stores/personalStore.ts | 25 ++ 7 files changed, 2414 insertions(+), 12 deletions(-) create mode 100644 src/modules/01_metadataNew/stores/personalStore.ts diff --git a/src/modules/01_metadataNew/components/personal/01ListPrefix.vue b/src/modules/01_metadataNew/components/personal/01ListPrefix.vue index dd89f390e..ba01b3bed 100644 --- a/src/modules/01_metadataNew/components/personal/01ListPrefix.vue +++ b/src/modules/01_metadataNew/components/personal/01ListPrefix.vue @@ -1,3 +1,396 @@ + + \ No newline at end of file + + + เพิ่มข้อมูล + + +
+ + +
+
+ + + + + + + + +
+ + + + + + + +
+
+

สถานะการใช้งาน

+ +
+
+
+ + + + บันทึกข้อมูล + + + +
+
+ + + diff --git a/src/modules/01_metadataNew/components/personal/02ListRank.vue b/src/modules/01_metadataNew/components/personal/02ListRank.vue index c033171b7..610d59cef 100644 --- a/src/modules/01_metadataNew/components/personal/02ListRank.vue +++ b/src/modules/01_metadataNew/components/personal/02ListRank.vue @@ -1,3 +1,407 @@ + + \ No newline at end of file + + + เพิ่มข้อมูล + + +
+ + +
+
+ + + + + + + + +
+ + + + + + + +
+
+

สถานะการใช้งาน

+ +
+
+
+ + + + บันทึกข้อมูล + + + +
+
+ + + diff --git a/src/modules/01_metadataNew/components/personal/03ListBloodGroup.vue b/src/modules/01_metadataNew/components/personal/03ListBloodGroup.vue index 06e1e95ca..fa57a5735 100644 --- a/src/modules/01_metadataNew/components/personal/03ListBloodGroup.vue +++ b/src/modules/01_metadataNew/components/personal/03ListBloodGroup.vue @@ -1,3 +1,396 @@ + + \ No newline at end of file + + + เพิ่มข้อมูล + + +
+ + +
+
+ + + + + + + + +
+ + + + + + + +
+
+

สถานะการใช้งาน

+ +
+
+
+ + + + บันทึกข้อมูล + + + +
+
+ + + diff --git a/src/modules/01_metadataNew/components/personal/04ListGender.vue b/src/modules/01_metadataNew/components/personal/04ListGender.vue index fe540f2ec..ded75420b 100644 --- a/src/modules/01_metadataNew/components/personal/04ListGender.vue +++ b/src/modules/01_metadataNew/components/personal/04ListGender.vue @@ -1,3 +1,396 @@ + + \ No newline at end of file + + + เพิ่มข้อมูล + + +
+ + +
+
+ + + + + + + + +
+ + + + + + + +
+
+

สถานะการใช้งาน

+ +
+
+
+ + + + บันทึกข้อมูล + + + +
+
+ + + diff --git a/src/modules/01_metadataNew/components/personal/05ListReligion.vue b/src/modules/01_metadataNew/components/personal/05ListReligion.vue index a71807508..d0a3d1e64 100644 --- a/src/modules/01_metadataNew/components/personal/05ListReligion.vue +++ b/src/modules/01_metadataNew/components/personal/05ListReligion.vue @@ -1,3 +1,396 @@ + + \ No newline at end of file + + + เพิ่มข้อมูล + + +
+ + +
+
+ + + + + + + + +
+ + + + + + + +
+
+

สถานะการใช้งาน

+ +
+
+
+ + + + บันทึกข้อมูล + + + +
+
+ + + diff --git a/src/modules/01_metadataNew/components/personal/06ListRelationship.vue b/src/modules/01_metadataNew/components/personal/06ListRelationship.vue index 9a64c12af..f0052b4b3 100644 --- a/src/modules/01_metadataNew/components/personal/06ListRelationship.vue +++ b/src/modules/01_metadataNew/components/personal/06ListRelationship.vue @@ -1,3 +1,404 @@ + + \ No newline at end of file + + + เพิ่มข้อมูล + + +
+ + +
+
+ + + + + + + + +
+ + + + + + + +
+
+

สถานะการใช้งาน

+ +
+
+
+ + + + บันทึกข้อมูล + + + +
+
+ + + diff --git a/src/modules/01_metadataNew/stores/personalStore.ts b/src/modules/01_metadataNew/stores/personalStore.ts new file mode 100644 index 000000000..43aef4bdc --- /dev/null +++ b/src/modules/01_metadataNew/stores/personalStore.ts @@ -0,0 +1,25 @@ +import { defineStore } from "pinia"; +import { ref } from "vue"; +import type { + DataResponse, + DataRow, +} from "../interface/response/insignia/Insignia"; +import { useCounterMixin } from "@/stores/mixin"; + +const { date2Thai } = useCounterMixin(); + +export const usePersonalDataStore = defineStore("PersonalData", () => { + const row = ref([]); + function fetchData(data: DataResponse[]) { + const list = data.map((e) => ({ + ...e, + createdAt: e.createdAt ? date2Thai(e.createdAt) : "", + lastUpdatedAt: e.lastUpdatedAt ? date2Thai(e.lastUpdatedAt) : "", + })); + row.value = list; + } + return { + fetchData, + row, + }; +}); From 71763f43f3879111e874f602069440774727ea68 Mon Sep 17 00:00:00 2001 From: oat Date: Fri, 2 Feb 2024 13:54:39 +0700 Subject: [PATCH 2/5] =?UTF-8?q?=E0=B8=82=E0=B9=89=E0=B8=AD=E0=B8=A1?= =?UTF-8?q?=E0=B8=B9=E0=B8=A5=E0=B8=9A=E0=B8=B8=E0=B8=84=E0=B8=84=E0=B8=A5?= =?UTF-8?q?=20=E0=B9=83=E0=B8=8A=E0=B9=89dialog=E0=B8=A3=E0=B9=88=E0=B8=A7?= =?UTF-8?q?=E0=B8=A1=E0=B8=81=E0=B8=B1=E0=B8=99?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../components/personal/01ListPrefix.vue | 161 +-------------- .../components/personal/02ListRank.vue | 186 ++--------------- .../components/personal/03ListBloodGroup.vue | 163 ++------------- .../components/personal/04ListGender.vue | 165 ++------------- .../components/personal/05ListReligion.vue | 189 +++--------------- .../personal/06ListRelationship.vue | 167 ++-------------- .../components/personal/DialogForm.vue | 169 ++++++++++++++++ 7 files changed, 266 insertions(+), 934 deletions(-) diff --git a/src/modules/01_metadataNew/components/personal/01ListPrefix.vue b/src/modules/01_metadataNew/components/personal/01ListPrefix.vue index ba01b3bed..10c34609a 100644 --- a/src/modules/01_metadataNew/components/personal/01ListPrefix.vue +++ b/src/modules/01_metadataNew/components/personal/01ListPrefix.vue @@ -3,11 +3,12 @@ import { ref, onMounted } from "vue"; import type { QTableProps } from "quasar"; import { useCounterMixin } from "@/stores/mixin"; import { useRouter } from "vue-router"; -import { useInsigniaDataStore } from "@/modules/01_metadataNew/stores/InsigniaStore"; +import { usePersonalDataStore } from "@/modules/01_metadataNew/stores/personalStore"; import dialogHeader from "@/components/DialogHeader.vue"; import { useQuasar } from "quasar"; +import DialogForm from "@/modules/01_metadataNew/components/personal/DialogForm.vue"; -const store = useInsigniaDataStore(); +const store = usePersonalDataStore(); const router = useRouter(); const mixin = useCounterMixin(); const { dialogRemove, dialogConfirm } = mixin; @@ -77,6 +78,7 @@ const isActive = ref(false); const prefix = ref(""); const prefixRef = ref(null); const dialogStatus = ref(""); +const personalName = ref("คำนำหน้าชื่อ"); const visibleColumns = ref([ "prefix", "createdAt", @@ -118,31 +120,6 @@ function fetchData() { onMounted(async () => { fetchData(); }); - -function closeDialog() { - dialog.value = false; -} - -function validateForm() { - prefixRef.value.validate(); - onSubmit(); -} - -async function onSubmit() { - if (prefix.value.length > 0) { - dialogConfirm( - $q, - async () => { - console.log("สำเร็จ"); - closeDialog(); - prefix.value = ""; - isActive.value = false; - }, - "ยืนยันการบันทึกข้อมูล", - "ต้องการยืนยันการบันทึกข้อมูลนี้หรือไม่ ?" - ); - } -} - - -
- - - - - - - -
-
-

สถานะการใช้งาน

- -
-
-
- - - - บันทึกข้อมูล - - - -
-
+ - - diff --git a/src/modules/01_metadataNew/components/personal/02ListRank.vue b/src/modules/01_metadataNew/components/personal/02ListRank.vue index 610d59cef..4af44a565 100644 --- a/src/modules/01_metadataNew/components/personal/02ListRank.vue +++ b/src/modules/01_metadataNew/components/personal/02ListRank.vue @@ -6,6 +6,7 @@ import { useRouter } from "vue-router"; import { usePersonalDataStore } from "@/modules/01_metadataNew/stores/personalStore"; import dialogHeader from "@/components/DialogHeader.vue"; import { useQuasar } from "quasar"; +import DialogForm from "@/modules/01_metadataNew/components/personal/DialogForm.vue"; const store = usePersonalDataStore(); const router = useRouter(); @@ -17,7 +18,7 @@ const columns = ref([ align: "left", label: "ยศ", sortable: true, - field: "rank", + field: "name", headerStyle: "font-size: 14px", style: "font-size: 14px", sort: (a: string, b: string) => @@ -77,6 +78,7 @@ const isActive = ref(false); const rank = ref(""); const rankRef = ref(null); const dialogStatus = ref(""); +const personalName = ref("ยศ"); const visibleColumns = ref([ "rank", "createdAt", @@ -89,7 +91,7 @@ function fetchData() { const data = [ { id: "1", - rank: "ยศ1", + name: "ยศ 1", createdAt: new Date(), lastUpdatedAt: new Date(), lastUpdateFullName: "สาวิตรี ศรีสมัย", @@ -97,7 +99,7 @@ function fetchData() { }, { id: "2", - rank: "ยศ2", + name: "ยศ 2", createdAt: new Date(), lastUpdatedAt: new Date(), lastUpdateFullName: "System Administrator", @@ -105,28 +107,12 @@ function fetchData() { }, { id: "3", - rank: "ยศ3", + name: "ยศ 3", createdAt: new Date(), lastUpdatedAt: new Date(), lastUpdateFullName: "คณะกรรมการ ตรวจรับ", isActive: true, }, - { - id: "4", - rank: "ยศ4", - createdAt: new Date(), - lastUpdatedAt: new Date(), - lastUpdateFullName: "คณะกรรมการ ตรวจรับ", - isActive: false, - }, - { - id: "5", - rank: "ยศ5", - createdAt: new Date(), - lastUpdatedAt: new Date(), - lastUpdateFullName: "คณะกรรมการ ตรวจรับ", - isActive: false, - }, ]; store.fetchData(data); } @@ -134,30 +120,6 @@ function fetchData() { onMounted(async () => { fetchData(); }); - -function closeDialog() { - dialog.value = false; -} - -function validateForm() { - rankRef.value.validate(); - onSubmit(); -} - -async function onSubmit() { - if (rank.value.length > 0) { - dialogConfirm( - $q, - async () => { - closeDialog(); - rank.value = ""; - isActive.value = false; - }, - "ยืนยันการบันทึกข้อมูล", - "ต้องการยืนยันการบันทึกข้อมูลนี้หรือไม่ ?" - ); - } -} - - diff --git a/src/modules/01_metadataNew/components/personal/03ListBloodGroup.vue b/src/modules/01_metadataNew/components/personal/03ListBloodGroup.vue index fa57a5735..6b3b350b8 100644 --- a/src/modules/01_metadataNew/components/personal/03ListBloodGroup.vue +++ b/src/modules/01_metadataNew/components/personal/03ListBloodGroup.vue @@ -3,11 +3,12 @@ import { ref, onMounted } from "vue"; import type { QTableProps } from "quasar"; import { useCounterMixin } from "@/stores/mixin"; import { useRouter } from "vue-router"; -import { useInsigniaDataStore } from "@/modules/01_metadataNew/stores/InsigniaStore"; +import { usePersonalDataStore } from "@/modules/01_metadataNew/stores/personalStore"; import dialogHeader from "@/components/DialogHeader.vue"; import { useQuasar } from "quasar"; +import DialogForm from "@/modules/01_metadataNew/components/personal/DialogForm.vue"; -const store = useInsigniaDataStore(); +const store = usePersonalDataStore(); const router = useRouter(); const mixin = useCounterMixin(); const { dialogRemove, dialogConfirm } = mixin; @@ -77,6 +78,7 @@ const isActive = ref(false); const bloodGroup = ref(""); const bloodGroupRef = ref(null); const dialogStatus = ref(""); +const personalName = ref("กลุ่มเลือด"); const visibleColumns = ref([ "bloodGroup", "createdAt", @@ -109,7 +111,7 @@ function fetchData() { createdAt: new Date(), lastUpdatedAt: new Date(), lastUpdateFullName: "คณะกรรมการ ตรวจรับ", - isActive: false, + isActive: true, }, ]; store.fetchData(data); @@ -118,31 +120,6 @@ function fetchData() { onMounted(async () => { fetchData(); }); - -function closeDialog() { - dialog.value = false; -} - -function validateForm() { - bloodGroupRef.value.validate(); - onSubmit(); -} - -async function onSubmit() { - if (bloodGroup.value.length > 0) { - dialogConfirm( - $q, - async () => { - console.log("สำเร็จ"); - closeDialog(); - bloodGroup.value = ""; - isActive.value = false; - }, - "ยืนยันการบันทึกข้อมูล", - "ต้องการยืนยันการบันทึกข้อมูลนี้หรือไม่ ?" - ); - } -} - - -
- - - - - - - -
-
-

สถานะการใช้งาน

- -
-
-
- - - - บันทึกข้อมูล - - - -
-
+ - - diff --git a/src/modules/01_metadataNew/components/personal/04ListGender.vue b/src/modules/01_metadataNew/components/personal/04ListGender.vue index ded75420b..a16cf338a 100644 --- a/src/modules/01_metadataNew/components/personal/04ListGender.vue +++ b/src/modules/01_metadataNew/components/personal/04ListGender.vue @@ -3,11 +3,12 @@ import { ref, onMounted } from "vue"; import type { QTableProps } from "quasar"; import { useCounterMixin } from "@/stores/mixin"; import { useRouter } from "vue-router"; -import { useInsigniaDataStore } from "@/modules/01_metadataNew/stores/InsigniaStore"; +import { usePersonalDataStore } from "@/modules/01_metadataNew/stores/personalStore"; import dialogHeader from "@/components/DialogHeader.vue"; import { useQuasar } from "quasar"; +import DialogForm from "@/modules/01_metadataNew/components/personal/DialogForm.vue"; -const store = useInsigniaDataStore(); +const store = usePersonalDataStore(); const router = useRouter(); const mixin = useCounterMixin(); const { dialogRemove, dialogConfirm } = mixin; @@ -77,6 +78,7 @@ const isActive = ref(false); const gender = ref(""); const genderRef = ref(null); const dialogStatus = ref(""); +const personalName = ref("เพศ"); const visibleColumns = ref([ "gender", "createdAt", @@ -93,7 +95,7 @@ function fetchData() { createdAt: new Date(), lastUpdatedAt: new Date(), lastUpdateFullName: "สาวิตรี ศรีสมัย", - isActive: true, + isActive: false, }, { id: "2", @@ -101,7 +103,7 @@ function fetchData() { createdAt: new Date(), lastUpdatedAt: new Date(), lastUpdateFullName: "System Administrator", - isActive: false, + isActive: true, }, { id: "3", @@ -118,31 +120,6 @@ function fetchData() { onMounted(async () => { fetchData(); }); - -function closeDialog() { - dialog.value = false; -} - -function validateForm() { - genderRef.value.validate(); - onSubmit(); -} - -async function onSubmit() { - if (gender.value.length > 0) { - dialogConfirm( - $q, - async () => { - console.log("สำเร็จ"); - closeDialog(); - gender.value = ""; - isActive.value = false; - }, - "ยืนยันการบันทึกข้อมูล", - "ต้องการยืนยันการบันทึกข้อมูลนี้หรือไม่ ?" - ); - } -} - - -
- - - - - - - -
-
-

สถานะการใช้งาน

- -
-
-
- - - - บันทึกข้อมูล - - - -
-
+ - - diff --git a/src/modules/01_metadataNew/components/personal/05ListReligion.vue b/src/modules/01_metadataNew/components/personal/05ListReligion.vue index d0a3d1e64..1d24c2ec2 100644 --- a/src/modules/01_metadataNew/components/personal/05ListReligion.vue +++ b/src/modules/01_metadataNew/components/personal/05ListReligion.vue @@ -3,11 +3,12 @@ import { ref, onMounted } from "vue"; import type { QTableProps } from "quasar"; import { useCounterMixin } from "@/stores/mixin"; import { useRouter } from "vue-router"; -import { useInsigniaDataStore } from "@/modules/01_metadataNew/stores/InsigniaStore"; +import { usePersonalDataStore } from "@/modules/01_metadataNew/stores/personalStore"; import dialogHeader from "@/components/DialogHeader.vue"; import { useQuasar } from "quasar"; +import DialogForm from "@/modules/01_metadataNew/components/personal/DialogForm.vue"; -const store = useInsigniaDataStore(); +const store = usePersonalDataStore(); const router = useRouter(); const mixin = useCounterMixin(); const { dialogRemove, dialogConfirm } = mixin; @@ -77,6 +78,7 @@ const isActive = ref(false); const religion = ref(""); const religionRef = ref(null); const dialogStatus = ref(""); +const personalName = ref("ศาสนา"); const visibleColumns = ref([ "religion", "createdAt", @@ -89,28 +91,36 @@ function fetchData() { const data = [ { id: "1", - name: "พุทธศาสนา", + name: "อิสลาม", createdAt: new Date(), lastUpdatedAt: new Date(), lastUpdateFullName: "สาวิตรี ศรีสมัย", - isActive: true, - }, - { - id: "2", - name: "คริสต์ศาสนา", - createdAt: new Date(), - lastUpdatedAt: new Date(), - lastUpdateFullName: "System Administrator", isActive: false, }, + { + id: "2", + name: "พุทธ", + createdAt: new Date(), + lastUpdatedAt: new Date(), + lastUpdateFullName: "System Administrator", + isActive: true, + }, { id: "3", - name: "อิสลาม", + name: "ขงจื้อ", createdAt: new Date(), lastUpdatedAt: new Date(), lastUpdateFullName: "คณะกรรมการ ตรวจรับ", isActive: false, }, + { + id: "4", + name: "คริสต์", + createdAt: new Date(), + lastUpdatedAt: new Date(), + lastUpdateFullName: "คณะกรรมการ ตรวจรับ", + isActive: true, + }, ]; store.fetchData(data); } @@ -118,31 +128,6 @@ function fetchData() { onMounted(async () => { fetchData(); }); - -function closeDialog() { - dialog.value = false; -} - -function validateForm() { - religionRef.value.validate(); - onSubmit(); -} - -async function onSubmit() { - if (religion.value.length > 0) { - dialogConfirm( - $q, - async () => { - console.log("สำเร็จ"); - closeDialog(); - religion.value = ""; - isActive.value = false; - }, - "ยืนยันการบันทึกข้อมูล", - "ต้องการยืนยันการบันทึกข้อมูลนี้หรือไม่ ?" - ); - } -} - - -
- - - - - - - -
-
-

สถานะการใช้งาน

- -
-
-
- - - - บันทึกข้อมูล - - - -
-
+ - - diff --git a/src/modules/01_metadataNew/components/personal/06ListRelationship.vue b/src/modules/01_metadataNew/components/personal/06ListRelationship.vue index f0052b4b3..5f56c5cf5 100644 --- a/src/modules/01_metadataNew/components/personal/06ListRelationship.vue +++ b/src/modules/01_metadataNew/components/personal/06ListRelationship.vue @@ -3,11 +3,12 @@ import { ref, onMounted } from "vue"; import type { QTableProps } from "quasar"; import { useCounterMixin } from "@/stores/mixin"; import { useRouter } from "vue-router"; -import { useInsigniaDataStore } from "@/modules/01_metadataNew/stores/InsigniaStore"; +import { usePersonalDataStore } from "@/modules/01_metadataNew/stores/personalStore"; import dialogHeader from "@/components/DialogHeader.vue"; import { useQuasar } from "quasar"; +import DialogForm from "@/modules/01_metadataNew/components/personal/DialogForm.vue"; -const store = useInsigniaDataStore(); +const store = usePersonalDataStore(); const router = useRouter(); const mixin = useCounterMixin(); const { dialogRemove, dialogConfirm } = mixin; @@ -77,6 +78,7 @@ const isActive = ref(false); const relationship = ref(""); const relationshipRef = ref(null); const dialogStatus = ref(""); +const personalName = ref("สถานภาพ"); const visibleColumns = ref([ "relationship", "createdAt", @@ -89,7 +91,7 @@ function fetchData() { const data = [ { id: "1", - name: "สมรส", + name: "เคยสมรสแต่ไม่ทราบสถานภาพสมรส", createdAt: new Date(), lastUpdatedAt: new Date(), lastUpdateFullName: "สาวิตรี ศรีสมัย", @@ -97,7 +99,7 @@ function fetchData() { }, { id: "2", - name: "เคยสมรสแต่ไม่ทราบสถานภาพสมรส", + name: "สมรส", createdAt: new Date(), lastUpdatedAt: new Date(), lastUpdateFullName: "System Administrator", @@ -109,7 +111,7 @@ function fetchData() { createdAt: new Date(), lastUpdatedAt: new Date(), lastUpdateFullName: "คณะกรรมการ ตรวจรับ", - isActive: true, + isActive: false, }, { id: "4", @@ -126,31 +128,6 @@ function fetchData() { onMounted(async () => { fetchData(); }); - -function closeDialog() { - dialog.value = false; -} - -function validateForm() { - relationshipRef.value.validate(); - onSubmit(); -} - -async function onSubmit() { - if (relationship.value.length > 0) { - dialogConfirm( - $q, - async () => { - console.log("สำเร็จ"); - closeDialog(); - relationship.value = ""; - isActive.value = false; - }, - "ยืนยันการบันทึกข้อมูล", - "ต้องการยืนยันการบันทึกข้อมูลนี้หรือไม่ ?" - ); - } -} - - -
- - - - - - - -
-
-

สถานะการใช้งาน

- -
-
-
- - - - บันทึกข้อมูล - - - -
-
+ - - diff --git a/src/modules/01_metadataNew/components/personal/DialogForm.vue b/src/modules/01_metadataNew/components/personal/DialogForm.vue index e69de29bb..b7d9bf42b 100644 --- a/src/modules/01_metadataNew/components/personal/DialogForm.vue +++ b/src/modules/01_metadataNew/components/personal/DialogForm.vue @@ -0,0 +1,169 @@ + + + + + From 48b330b53ac0d1c3bb801f436212c388267f516b Mon Sep 17 00:00:00 2001 From: "DESKTOP-1R2VSQH\\Lenovo ThinkPad E490" Date: Fri, 2 Feb 2024 14:30:07 +0700 Subject: [PATCH 3/5] =?UTF-8?q?=E0=B8=A2=E0=B9=89=E0=B8=B2=E0=B8=A2?= =?UTF-8?q?=E0=B8=95=E0=B8=B3=E0=B9=81=E0=B8=AB=E0=B8=99=E0=B9=88=E0=B8=87?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/api/02_organizational/api.organization.ts | 1 + .../components/DialogMovePos.vue | 264 ++++++++++++++++++ .../components/listView.vue | 11 +- .../components/mainTree.vue | 3 +- .../components/tableTree.vue | 57 +++- .../interface/request/organizational.ts | 8 +- 6 files changed, 332 insertions(+), 12 deletions(-) create mode 100644 src/modules/02_organizationalNew/components/DialogMovePos.vue diff --git a/src/api/02_organizational/api.organization.ts b/src/api/02_organizational/api.organization.ts index 520ca9db7..fb85cff32 100644 --- a/src/api/02_organizational/api.organization.ts +++ b/src/api/02_organizational/api.organization.ts @@ -25,6 +25,7 @@ export default { orgPosMasterById: (id: string) => `${orgPos}/master/${id}`, orgPosMasterList: `${orgPos}/master/list`, orgPosSort: `${orgPos}/sort`, + orgPosMove: `${orgPos}/move`, organizationShortName: `${organization}/sort`, organizationPublishGet: `${organization}/get/publish`, }; diff --git a/src/modules/02_organizationalNew/components/DialogMovePos.vue b/src/modules/02_organizationalNew/components/DialogMovePos.vue new file mode 100644 index 000000000..fe44ad51a --- /dev/null +++ b/src/modules/02_organizationalNew/components/DialogMovePos.vue @@ -0,0 +1,264 @@ + + + + diff --git a/src/modules/02_organizationalNew/components/listView.vue b/src/modules/02_organizationalNew/components/listView.vue index 6eaf9a271..ec060f33d 100644 --- a/src/modules/02_organizationalNew/components/listView.vue +++ b/src/modules/02_organizationalNew/components/listView.vue @@ -32,6 +32,7 @@ const count = defineModel("count", { required: true }); const nodeId = ref(""); // id ของ Tree const orgLevel = ref(0); // levelTree const isLoad = ref(false); // loadTable +const selected = ref(""); const nodeData = ref(); const reqMaster = reactive({ id: "", @@ -51,14 +52,14 @@ const posMaster = ref([]); */ async function fetchDataTree(id: string) { showLoader(); - // const id = - // store.typeOrganizational === "current" ? store.activeId : store.draftId; - // id && + await http .get(config.API.orgByid(id.toString())) .then((res) => { const data = res.data.result; nodeTree.value = data; + selected.value = ""; + nodeId.value = ""; }) .catch((err) => { messageError($q, err); @@ -66,7 +67,6 @@ async function fetchDataTree(id: string) { .finally(() => { hideLoader(); }); - // console.log(nodeTree.value); } /** @@ -172,6 +172,7 @@ watch( v-model:nodeTree="nodeTree" v-model:nodeId="nodeId" v-model:isLoad="isLoad" + v-model:selected="selected" :fetchDataTree="fetchDataTree" :fetchDataTable="fetchDataTable" /> @@ -197,6 +198,7 @@ watch(
diff --git a/src/modules/02_organizationalNew/components/mainTree.vue b/src/modules/02_organizationalNew/components/mainTree.vue index 1f4cdfb8c..824db0407 100644 --- a/src/modules/02_organizationalNew/components/mainTree.vue +++ b/src/modules/02_organizationalNew/components/mainTree.vue @@ -86,6 +86,7 @@ const listAdd = ref([ const nodeTEST = defineModel("nodeTree", { default: [] }); const nodeId = defineModel("nodeId", { required: true }); const isLoad = defineModel("isLoad", { required: true }); +const selected = defineModel("selected", { required: true }); const filter = ref(""); const nodes = ref>([]); @@ -94,7 +95,7 @@ const lazy = ref(nodes); const expanded = ref>([]); const notFound = ref("ไม่พบข้อมูลที่ค้นหา"); const noData = ref("ไม่มีข้อมูล"); -const selected = ref(""); +// const selected = ref(""); const orgLevel = ref(0); const type = ref(0); const orgId = ref(""); diff --git a/src/modules/02_organizationalNew/components/tableTree.vue b/src/modules/02_organizationalNew/components/tableTree.vue index a59dc0125..f143b4837 100644 --- a/src/modules/02_organizationalNew/components/tableTree.vue +++ b/src/modules/02_organizationalNew/components/tableTree.vue @@ -17,6 +17,7 @@ import type { PosMaster2 } from "@/modules/02_organizationalNew/interface/respon import DialogFormPosotion from "@/modules/02_organizationalNew/components/DialogFormPosition.vue"; import DialogPositionDetail from "@/modules/02_organizationalNew/components/PositionDetail.vue"; import DialogSort from "@/modules/02_organizationalNew/components/DialogSortPosition.vue"; +import DialogMovePos from "@/modules/02_organizationalNew/components/DialogMovePos.vue"; /** importStore*/ import { useOrganizational } from "@/modules/02_organizationalNew/store/organizational"; @@ -33,20 +34,22 @@ const props = defineProps({ require: true, default: () => {}, }, + fetchDataTree: { + type: Function, + require: true, + default: () => {}, + }, }); -const dataSort = ref>([]); const modalSort = ref(false); -const showAllData = ref(false); -const currentPage = ref(1); +const nodeTree = defineModel("nodeTree", { required: true }); const orgLevel = defineModel("orgLevel", { required: true }); const treeId = defineModel("treeId", { required: true }); const reqMaster = defineModel("reqMaster", { required: true }); const totalPage = defineModel("totalPage", { required: true }); const posMaster = defineModel("posMaster", { required: true }); const stroe = useOrganizational(); -const filter = ref(""); const actionType = ref(""); const listMenu = ref([ { @@ -61,6 +64,12 @@ const listMenu = ref([ type: "DEL", color: "red", }, + { + label: "ย้ายตำแหน่ง", + icon: "mdi-cursor-move", + type: "MOVE", + color: "positive", + }, { label: "ดูรายละเอียด", icon: "mdi-eye", @@ -247,6 +256,15 @@ function onClickDelete(id: string) { function onClickSort() { modalSort.value = true; } + +const modalDialogMMove = ref(false); +const typeMove = ref(""); + +function onClickMovePos(id: string, type: string) { + modalDialogMMove.value = !modalDialogMMove.value; + typeMove.value = type; + rowId.value = id; +} function updatePagination(newPagination: NewPagination) { reqMaster.value.pageSize = newPagination.rowsPerPage; reqMaster.value.page = 1; @@ -278,6 +296,17 @@ function updatePagination(newPagination: NewPagination) { > จัดลำดับ + + + ย้ายตำแหน่ง +
@@ -395,6 +424,8 @@ function updatePagination(newPagination: NewPagination) { ? onClickPosition('EDIT', props.row.id) : item.type === 'DEL' ? onClickDelete(props.row.id) + : item.type === 'MOVE' + ? onClickMovePos(props.row.id, 'SINGER') : null " > @@ -502,6 +533,10 @@ function updatePagination(newPagination: NewPagination) { + + + + - - + + + + From a0959017c8248e5c487f81a19557b7e7d38ed742 Mon Sep 17 00:00:00 2001 From: waruneeta Date: Fri, 2 Feb 2024 14:50:19 +0700 Subject: [PATCH 5/5] =?UTF-8?q?=E0=B9=81=E0=B8=81=E0=B9=89=E0=B9=84?= =?UTF-8?q?=E0=B8=82=E0=B9=82=E0=B8=84=E0=B8=A3=E0=B8=87=E0=B8=AA=E0=B8=A3?= =?UTF-8?q?=E0=B9=89=E0=B8=B2=E0=B8=87?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../components/DialogNewStructure.vue | 47 +++++++++++-------- .../components/listView.vue | 30 +++++++++++- .../components/mainTree.vue | 22 ++++++--- .../interface/response/organizational.ts | 17 +++++-- .../store/organizational.ts | 23 ++++++++- .../02_organizationalNew/views/main.vue | 2 +- 6 files changed, 106 insertions(+), 35 deletions(-) diff --git a/src/modules/02_organizationalNew/components/DialogNewStructure.vue b/src/modules/02_organizationalNew/components/DialogNewStructure.vue index 113a38b66..4e5556634 100644 --- a/src/modules/02_organizationalNew/components/DialogNewStructure.vue +++ b/src/modules/02_organizationalNew/components/DialogNewStructure.vue @@ -90,26 +90,33 @@ function validateForm() { /** ฟังชั่น บันทึก */ function onSubmit() { - dialogConfirm($q, () => { - showLoader(); - http - .post(config.API.createOrganization, formData) - .then((res) => { - status.value = true; - store.typeOrganizational = "draft"; - store.draftId = res.data.result.id; - success($q, "บันทึกข้อมูลสำเร็จ"); - // props.fetchActive?.(); - }) - .catch((err) => { - messageError($q, err); - }) - .finally(async () => { - modal.value = await false; - await close(); - await hideLoader(); - }); - }); + dialogConfirm( + $q, + () => { + showLoader(); + http + .post(config.API.createOrganization, formData) + .then((res) => { + status.value = true; + store.typeOrganizational = "draft"; + store.draftId = res.data.result.id; + success($q, "บันทึกข้อมูลสำเร็จ"); + // props.fetchActive?.(); + }) + .catch((err) => { + messageError($q, err); + }) + .finally(async () => { + modal.value = await false; + await close(); + await hideLoader(); + }); + }, + "ยืนยันการเพิ่มโครงสร้าง", + store.draftId + ? "คุณมีแบบร่างอยู่หากคุณกดยืนยันระบบจะทำการลบแบบร่างเดิมและสร้างแบบร่างใหม่ ต้องการยืนยันการเพิ่มโครงสร้างนี้ใช่หรือไม่?" + : "ต้องการยืนยันการเพิ่มโครงสร้างนี้ใช่หรือไม่?" + ); } function close() { diff --git a/src/modules/02_organizationalNew/components/listView.vue b/src/modules/02_organizationalNew/components/listView.vue index ec060f33d..00bced78e 100644 --- a/src/modules/02_organizationalNew/components/listView.vue +++ b/src/modules/02_organizationalNew/components/listView.vue @@ -196,6 +196,28 @@ watch(
+ +
+
+
ตำแหน่งทั้งหมด
+ + +
+
+
ตำแหน่งที่มีคนครอง
+ + +
+
+
ตำแหน่งว่าง
+ + +
+
+ - + diff --git a/src/modules/02_organizationalNew/components/mainTree.vue b/src/modules/02_organizationalNew/components/mainTree.vue index 824db0407..052b4a5c2 100644 --- a/src/modules/02_organizationalNew/components/mainTree.vue +++ b/src/modules/02_organizationalNew/components/mainTree.vue @@ -100,14 +100,22 @@ const orgLevel = ref(0); const type = ref(0); const orgId = ref(""); -const updateSelected = (id: string, level: number) => { - store.treeId = id; - store.level = level; - if (id === nodeId.value) { +const updateSelected = (data: any) => { + store.treeId = data.orgTreeId; + store.level = data.orgLevel; + if (data.orgTreeId === nodeId.value) { nodeId.value = ""; } else { - nodeId.value = id ? id : ""; - id && props.fetchDataTable?.(id, level, true); + nodeId.value = data.orgTreeId ? data.orgTreeId : ""; + data.orgTreeId && + props.fetchDataTable?.(data.orgTreeId, data.orgLevel, true); + store.getSumPosition({ + totalPosition: data.totalPosition, + totalPositionCurrentUse: data.totalPositionCurrentUse, + totalPositionCurrentVacant: data.totalPositionCurrentVacant, + totalPositionNextUse: data.totalPositionNextUse, + totalPositionNextVacant: data.totalPositionNextVacant, + }); } }; @@ -353,7 +361,7 @@ onMounted(async () => {});
diff --git a/src/modules/02_organizationalNew/interface/response/organizational.ts b/src/modules/02_organizationalNew/interface/response/organizational.ts index e0a2b2927..8e1e922fb 100644 --- a/src/modules/02_organizationalNew/interface/response/organizational.ts +++ b/src/modules/02_organizationalNew/interface/response/organizational.ts @@ -3,8 +3,16 @@ interface DataActive { activeName: string; draftId: string; draftName: string; - isPublic: boolean, - orgPublishDate: Date | null, + isPublic: boolean; + orgPublishDate: Date | null; +} + +interface SumPosition { + totalPosition: number; + totalPositionCurrentUse: number; + totalPositionCurrentVacant: number; + totalPositionNextUse: number; + totalPositionNextVacant: number; } interface OrgTree { @@ -80,7 +88,7 @@ interface Position { interface PosMaster { id: string; // id อัตรากำลัง posmaster - orgShortname: string; // อักษรย่อตำแหน่ง + orgShortname: string; // อักษรย่อตำแหน่ง posMasterNoPrefix: string; // Prefix นำหน้าเลขที่ตำแหน่ง เป็น Optional (ไม่ใช่อักษรย่อของหน่วยงาน/ส่วนราชการ) posMasterNo: number | string; // เลขที่ตำแหน่ง เป็นตัวเลข posMasterNoSuffix: string | null; // Suffix หลังเลขที่ตำแหน่ง เช่น ช. @@ -114,7 +122,7 @@ interface Position2 { interface PosMaster2 { id: string; // id อัตรากำลัง posmaster - orgShortname: string; // อักษรย่อตำแหน่ง + orgShortname: string; // อักษรย่อตำแหน่ง posMasterNoPrefix: string; // Prefix นำหน้าเลขที่ตำแหน่ง เป็น Optional (ไม่ใช่อักษรย่อของหน่วยงาน/ส่วนราชการ) posMasterNo: number | string; // เลขที่ตำแหน่ง เป็นตัวเลข posMasterNoSuffix: string | null; // Suffix หลังเลขที่ตำแหน่ง เช่น ช. @@ -144,4 +152,5 @@ export type { PosMaster2, Position, Position2, + SumPosition }; diff --git a/src/modules/02_organizationalNew/store/organizational.ts b/src/modules/02_organizationalNew/store/organizational.ts index 1efed1c44..92648777f 100644 --- a/src/modules/02_organizationalNew/store/organizational.ts +++ b/src/modules/02_organizationalNew/store/organizational.ts @@ -1,10 +1,10 @@ import { defineStore } from "pinia"; -import { ref } from "vue"; +import { reactive, ref } from "vue"; /** importType*/ import type { DataActive, - Position, + SumPosition, PosMaster, } from "@/modules/02_organizationalNew/interface/response/organizational"; @@ -19,6 +19,23 @@ export const useOrganizational = defineStore("organizationalStore", () => { const level = ref(); const isPublic = ref(false); const orgPublishDate = ref(null); + const sumPosition = reactive({ + total: 0, + use: 0, + vacant: 0, + }); + + function getSumPosition(data: SumPosition) { + sumPosition.total = data.totalPosition; + sumPosition.use = + typeOrganizational.value == "draft" + ? data.totalPositionNextUse + : data.totalPositionCurrentUse; + sumPosition.vacant = + typeOrganizational.value == "draft" + ? data.totalPositionNextVacant + : data.totalPositionCurrentVacant; + } function fetchDataActive(data: DataActive) { activeId.value = data.activeId; @@ -100,5 +117,7 @@ export const useOrganizational = defineStore("organizationalStore", () => { isPublic, orgPublishDate, fetchPosMaster, + sumPosition, + getSumPosition, }; }); diff --git a/src/modules/02_organizationalNew/views/main.vue b/src/modules/02_organizationalNew/views/main.vue index 740689886..aff66a6dc 100644 --- a/src/modules/02_organizationalNew/views/main.vue +++ b/src/modules/02_organizationalNew/views/main.vue @@ -240,7 +240,7 @@ onMounted(async () => { - +