From ca91efbaa50d16cd2afb953cb8548708314baa98 Mon Sep 17 00:00:00 2001 From: setthawutttty Date: Wed, 7 Jun 2023 13:42:11 +0700 Subject: [PATCH] modal-detail --- .../05_placement/components/DialogFooter.vue | 90 ++ .../05_placement/components/DialogHeader.vue | 27 + .../components/PlacementTable.vue | 124 ++- .../components/PlacementTableView.vue | 781 +++++++++--------- .../interface/request/placement.ts | 16 +- src/modules/05_placement/store.ts | 29 +- 6 files changed, 634 insertions(+), 433 deletions(-) create mode 100644 src/modules/05_placement/components/DialogFooter.vue create mode 100644 src/modules/05_placement/components/DialogHeader.vue diff --git a/src/modules/05_placement/components/DialogFooter.vue b/src/modules/05_placement/components/DialogFooter.vue new file mode 100644 index 000000000..a99ee7515 --- /dev/null +++ b/src/modules/05_placement/components/DialogFooter.vue @@ -0,0 +1,90 @@ + + diff --git a/src/modules/05_placement/components/DialogHeader.vue b/src/modules/05_placement/components/DialogHeader.vue new file mode 100644 index 000000000..93aa1f86e --- /dev/null +++ b/src/modules/05_placement/components/DialogHeader.vue @@ -0,0 +1,27 @@ + + diff --git a/src/modules/05_placement/components/PlacementTable.vue b/src/modules/05_placement/components/PlacementTable.vue index ea850ef46..963a53664 100644 --- a/src/modules/05_placement/components/PlacementTable.vue +++ b/src/modules/05_placement/components/PlacementTable.vue @@ -3,11 +3,65 @@ import { ref, defineComponent, h } from "vue"; import Table from "@/modules/05_placement/components/PlacementTableView.vue"; import { useQuasar, QForm } from "quasar"; import type { TableName } from "@/modules/05_placement/interface/request/placement"; +import { usePlacementDataStore } from "@/modules/05_placement/store"; import type { QTableProps } from "quasar"; +import DialogHeader from "@/modules/05_placement/components/DialogHeader.vue"; +import DialogFooter from "@/modules/05_placement/components/DialogFooter.vue"; const editvisible = ref(false); const myForm = ref(null); const edit = ref(false); +const visibleColumns = ref([]); +const store = usePlacementDataStore(); +const filter = ref(""); +const { placementData } = store; +const editRow = ref(false); //เช็คมีการแก้ไขข้อมูล +const modal = ref(false); //modal add detail +const modalEdit = ref(false); //modal ที่แสดงใช้สำหรับแก้ไขหรือไม่ +const position = ref(); +const Name = ref(); +const ExamOrder = ref(); +const Unit = ref(); +const ReportingDate = ref(); +const BMAOfficer = ref(); +const Status = ref(); +const checkList = ref(); + const $q = useQuasar(); // show dialog + +const selectData = (props: TableName) => { + if (editvisible.value == true) { + editRow.value = false; + modalEdit.value = true; + modal.value = false; + edit.value = true; + position.value = props.position; + Name.value = props.Name; + ExamOrder.value = props.ExamOrder; + Unit.value = props.Unit; + ReportingDate.value = props.ReportingDate; + BMAOfficer.value = props.BMAOfficer; + Status.value = props.Status; + checkList.value = props.checkList; + }else{ + editRow.value = false; + modalEdit.value = true; + modal.value = true; + edit.value = true; + } +}; + +placementData.mappingPosition.columns.length == 0 + ? (visibleColumns.value = [ + "position", + "Name", + "ExamOrder", + "Unit", + "ReportingDate", + "BMAOfficer", + "Status", + "checkList", + ]) + : (visibleColumns.value = placementData.mappingPosition.columns); const columns = ref([ { name: "position", @@ -66,7 +120,7 @@ const columns = ref([ }, { name: "BMAOfficer", - align: "center", + align: "left", label: "ข้าราชการฯ กทม.", sortable: true, field: "BMAOfficer", @@ -77,7 +131,7 @@ const columns = ref([ }, { name: "Status", - align: "center", + align: "left", label: "สถานะการบรรจุ", sortable: true, field: "Status", @@ -87,7 +141,7 @@ const columns = ref([ a.localeCompare(b, undefined, { numeric: true, sensitivity: "base" }), }, ]); -const rows = [ +const rows = ref([ { position: 1, Name: "setthawut", @@ -96,6 +150,7 @@ const rows = [ ReportingDate: "30 พ.ค. 2566", //วันที่รายงานตัว BMAOfficer: true, Status: "บรรจุเเล้ว", + checkList:null }, { position: 1, @@ -105,6 +160,7 @@ const rows = [ ReportingDate: "30 พ.ค. 2566", //วันที่รายงานตัว BMAOfficer: true, Status: "ยังไม่บรรจุ", + checkList:null }, { position: 1, @@ -114,8 +170,9 @@ const rows = [ ReportingDate: "30 พ.ค. 2566", //วันที่รายงานตัว BMAOfficer: true, Status: "เตรียมบรรจุ", + checkList:null }, - + { position: 1, Name: "setthawut", @@ -124,17 +181,20 @@ const rows = [ ReportingDate: "30 พ.ค. 2566", //วันที่รายงานตัว BMAOfficer: true, Status: "เตรียมบรรจุ", + checkList:null }, - + { position: 1, - Name: "setthawut", + Name: "tee", ExamOrder: 1, Unit: "chamomind", ReportingDate: "30 พ.ค. 2566", //วันที่รายงานตัว BMAOfficer: true, Status: "เตรียมบรรจุ", - },{ + checkList:null + }, + { position: 1, Name: "setthawut", ExamOrder: 1, @@ -142,18 +202,37 @@ const rows = [ ReportingDate: "30 พ.ค. 2566", //วันที่รายงานตัว BMAOfficer: true, Status: "บรรจุเเล้ว", + checkList:null }, - -]; +]); const clickCancel = async () => { editvisible.value = false; }; +const clickClose = async () => { + if (editRow.value == true) { + $q.dialog({ + title: `ข้อมูลมีการแก้ไข`, + message: `ยืนยันที่จะปิดโดยไม่บันทึกใช่หรือไม่?`, + cancel: "ยกเลิก", + ok: "ยืนยัน", + persistent: true, + }).onOk(async () => { + modal.value = false; + }); + } else { + modal.value = false; + } +}; + + + + + + + + text + + + + + + diff --git a/src/modules/05_placement/components/PlacementTableView.vue b/src/modules/05_placement/components/PlacementTableView.vue index 5e6687ca8..f8efb9b9d 100644 --- a/src/modules/05_placement/components/PlacementTableView.vue +++ b/src/modules/05_placement/components/PlacementTableView.vue @@ -1,425 +1,398 @@ - - - \ No newline at end of file + props.deleted(); +}; + +const resetFilter = () => { + // reset ค่าที่ค้นหาเมื่อกดปุ่ม X ในกล่องค้นหา + emit("update:inputfilter", ""); + filterRef.value.focus(); +}; + + diff --git a/src/modules/05_placement/interface/request/placement.ts b/src/modules/05_placement/interface/request/placement.ts index ab12e8fd9..ceaa2bb80 100644 --- a/src/modules/05_placement/interface/request/placement.ts +++ b/src/modules/05_placement/interface/request/placement.ts @@ -1,5 +1,5 @@ interface TableName { - position: string; + position: number; Name: string; ExamOrder: number; Unit: string; @@ -10,20 +10,8 @@ interface TableName { } -interface RequestReport2 { - organizationShortNameId: string; - organizationOrganizationId: string; - positionNumId: string; - positionTypeId: string; - positionExecutiveId: string; - positionExecutiveSideId: string; - positionPathId: string; - positionPathSideId: string; - positionLevelId: string; - status: string | null; -} export type { TableName, - RequestReport2, + }; \ No newline at end of file diff --git a/src/modules/05_placement/store.ts b/src/modules/05_placement/store.ts index ed479e584..5b83b8716 100644 --- a/src/modules/05_placement/store.ts +++ b/src/modules/05_placement/store.ts @@ -1,5 +1,32 @@ import { defineStore } from "pinia"; - +import { ref, computed } from "vue"; export const useProfileDataStore = defineStore("placement", () => { return {}; }); +export const usePlacementDataStore = defineStore("placement", () => { + interface placement { + mappingPosition: { columns: String[] }; + } + const placementData = ref({ + mappingPosition: { columns: [] }, + }); + const changePlacementColumns = (system: String, val: String[]) => { + if (system == "mappingPosition") + placementData.value.mappingPosition.columns = val; + localStorage.setItem( + "placement", + JSON.stringify(placementData.value) + ); + }; + + if (localStorage.getItem("placement") !== null) { + placementData.value = JSON.parse( + localStorage.getItem("placement") || "{}" + ); + } + + return { + placementData, + changePlacementColumns, + }; +});