diff --git a/src/api/02_organizational/api.organization.ts b/src/api/02_organizational/api.organization.ts index 4cbb005c1..02f9e12d0 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/01_metadataNew/components/personal/01ListPrefix.vue b/src/modules/01_metadataNew/components/personal/01ListPrefix.vue index dd89f390e..7be892d64 100644 --- a/src/modules/01_metadataNew/components/personal/01ListPrefix.vue +++ b/src/modules/01_metadataNew/components/personal/01ListPrefix.vue @@ -1,3 +1,231 @@ + + \ 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..df9d09915 100644 --- a/src/modules/01_metadataNew/components/personal/02ListRank.vue +++ b/src/modules/01_metadataNew/components/personal/02ListRank.vue @@ -1,3 +1,231 @@ + + \ 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..d100c6d26 100644 --- a/src/modules/01_metadataNew/components/personal/03ListBloodGroup.vue +++ b/src/modules/01_metadataNew/components/personal/03ListBloodGroup.vue @@ -1,3 +1,231 @@ + + \ 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..915f14c2a 100644 --- a/src/modules/01_metadataNew/components/personal/04ListGender.vue +++ b/src/modules/01_metadataNew/components/personal/04ListGender.vue @@ -1,3 +1,231 @@ + + \ 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..cf79f1bb8 100644 --- a/src/modules/01_metadataNew/components/personal/05ListReligion.vue +++ b/src/modules/01_metadataNew/components/personal/05ListReligion.vue @@ -1,3 +1,238 @@ + + \ 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..78e0e2201 100644 --- a/src/modules/01_metadataNew/components/personal/06ListRelationship.vue +++ b/src/modules/01_metadataNew/components/personal/06ListRelationship.vue @@ -1,3 +1,238 @@ + + \ No newline at end of file + + + เพิ่มข้อมูล + + +
+ + +
+
+ + + + + + + + diff --git a/src/modules/01_metadataNew/components/personal/DialogForm.vue b/src/modules/01_metadataNew/components/personal/DialogForm.vue index e69de29bb..370429407 100644 --- a/src/modules/01_metadataNew/components/personal/DialogForm.vue +++ b/src/modules/01_metadataNew/components/personal/DialogForm.vue @@ -0,0 +1,86 @@ + + + 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, + }; +}); 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/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 6eaf9a271..00bced78e 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" /> @@ -195,8 +196,31 @@ watch(
+ +
+
+
ตำแหน่งทั้งหมด
+ + +
+
+
ตำแหน่งที่มีคนครอง
+ + +
+
+
ตำแหน่งว่าง
+ + +
+
+ @@ -217,4 +242,10 @@ watch(
- + diff --git a/src/modules/02_organizationalNew/components/mainTree.vue b/src/modules/02_organizationalNew/components/mainTree.vue index 1f4cdfb8c..052b4a5c2 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,19 +95,27 @@ 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(""); -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, + }); } }; @@ -352,7 +361,7 @@ onMounted(async () => {});
diff --git a/src/modules/02_organizationalNew/components/tableTree.vue b/src/modules/02_organizationalNew/components/tableTree.vue index a6d3f9eda..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) {
+ + + + - - - + + + + +