diff --git a/src/modules/02_organizationalNew/components/DialogFormAgency.vue b/src/modules/02_organizationalNew/components/DialogFormAgency.vue index 9fe36ba6b..b547feb1e 100644 --- a/src/modules/02_organizationalNew/components/DialogFormAgency.vue +++ b/src/modules/02_organizationalNew/components/DialogFormAgency.vue @@ -29,6 +29,7 @@ const props = defineProps({ fetchDataTree: { type: Function, require: true, + default: () => "", }, dataNode: { type: Object, @@ -106,7 +107,6 @@ function validateForm() { /** ฟังชั่น บันทึก */ function onSubmit() { - console.log(level.value); dialogConfirm($q, async () => { // showLoader(); const type = store.checkLevel(level.value); @@ -142,15 +142,13 @@ function onSubmit() { await http .post(config.API.createOrgLevel(type.toLocaleLowerCase()), body) .then((res) => { - console.log(res); success($q, "บันทึกข้อมูลสำเร็จ"); }) .catch((err) => { - console.log(err); messageError($q, err); }) - .finally(async () => { - await props.fetchDataTree?.(); + .finally(() => { + props.fetchDataTree(); closeClear(); hideLoader(); }); @@ -166,7 +164,12 @@ function onSubmit() { ) .then((res) => { console.log(res); - props.edit?.(props.dataNode?.orgTreeId, type, body, props.dataNode?.orgRootCode); + props.edit?.( + props.dataNode?.orgTreeId, + type, + body, + props.dataNode?.orgRootCode + ); success($q, "บันทึกข้อมูลสำเร็จ"); }) .catch((err) => { @@ -175,8 +178,8 @@ function onSubmit() { }) .finally(async () => { // await props.fetchDataTree?.(); - closeClear(); - hideLoader(); + closeClear(); + hideLoader(); })); } }); diff --git a/src/modules/02_organizationalNew/components/mainTree.vue b/src/modules/02_organizationalNew/components/mainTree.vue index 846c3f70d..b5d552cf5 100644 --- a/src/modules/02_organizationalNew/components/mainTree.vue +++ b/src/modules/02_organizationalNew/components/mainTree.vue @@ -84,8 +84,8 @@ const listAdd = ref([ ]); const nodeTEST = defineModel("nodeTree", { default: [] }); -const nodeId = defineModel("nodeId", { require: true }); -const isLoad = defineModel("isLoad", { require: true }); +const nodeId = defineModel("nodeId", { required: true }); +const isLoad = defineModel("isLoad", { required: true }); const filter = ref(""); const nodes = ref>([]); @@ -109,39 +109,15 @@ const updateSelected = (id: string, level: number) => { }; const breakLoop = ref(false); -async function edit(id: string, type: string, data: any) { - const data2 = { - orgName: data[`org${type}Name`], - orgShortName: data[`org${type}ShortName`], - orgCode: data[`org${type}Code`], - orgPhoneEx: data[`org${type}PhoneEx`], - orgPhoneIn: data[`org${type}PhoneIn`], - orgFax: data[`org${type}Fax`], - orgLevel: data[`org${type}Rank`], - }; - +async function edit(id: string, type: string, data: any, orgRootCode: string) { breakLoop.value = false; - - // Usage const targetNodeId = id; - const replacementNode = { - orgTreeName: data2.orgName, - orgTreeShortName: data2.orgShortName, - orgCode: data2.orgCode, - orgTreePhoneEx: data2.orgPhoneEx, - orgTreePhoneIn: data2.orgPhoneIn, - orgTreeFax: data2.orgFax, - orgTreeRank: data2.orgLevel, - }; for (let index = 0; index < nodes.value.length; index++) { const element = nodes.value[index]; - if (type !== "edit") { - searchAndReplace(element, targetNodeId, replacementNode); - } else deleteNode(element, targetNodeId); - console.log("index===>", index); - console.log("breakLoop===>", breakLoop.value); + searchAndReplace(element, targetNodeId, data, type, orgRootCode); + if (breakLoop.value) break; } } @@ -149,32 +125,63 @@ async function edit(id: string, type: string, data: any) { function searchAndReplace( treeNode: any, organizationId: string, - replacementObject: any + data: any, + type: string, + orgRootCode: string ) { if (treeNode.orgTreeId === organizationId) { - Object.assign(treeNode, replacementObject); + let newData = { + ...treeNode, + orgTreeName: data[`org${type}Name`], + orgTreeShortName: data[`org${type}ShortName`], + orgCode: + data.orgRootRank == "DEPARTMENT" + ? data[`org${type}Code`] + "00" + : orgRootCode + data[`org${type}Code`], + orgTreeCode: data[`org${type}Code`], + orgTreePhoneEx: data[`org${type}PhoneEx`], + orgTreePhoneIn: data[`org${type}PhoneIn`], + orgTreeFax: data[`org${type}Fax`], + orgTreeRank: data[`org${type}Rank`], + }; + + Object.assign(treeNode, newData); breakLoop.value = true; } else if (treeNode.children) { for (const child of treeNode.children) { - searchAndReplace(child, organizationId, replacementObject); + searchAndReplace(child, organizationId, data, type, orgRootCode); } } } -function deleteNode(treeNode: any, organizationId: any): boolean { - // console.log("tttttttttttttt", treeNode.orgTreeId, organizationId); +async function deleteUpdate(rootId: string, treeId: string) { + breakLoop.value = false; + if (rootId) { + for (let index = 0; index < nodes.value.length; index++) { + const element = nodes.value[index]; + deleteNode(element, rootId, treeId); - if (treeNode.orgTreeId === organizationId) { - treeNode.children = []; + if (breakLoop.value) break; + } + } else { + console.log("rootId===>", rootId); + console.log("treeId===>", treeId); + nodes.value = nodes.value.filter((x: any) => x.orgTreeId != treeId); + } +} + +function deleteNode(treeNode: any, rootId: string, treeId: string): boolean { + if (treeNode.orgTreeId === rootId) { + let newData = { + ...treeNode, + children: [], + }; + Object.assign(treeNode, newData); breakLoop.value = true; } else if (treeNode.children) { - for (let i = 0; i < treeNode.children.length; i++) { - const child = treeNode.children[i]; - if (deleteNode(child, organizationId)) { - treeNode.children.splice(i, 1); - i--; // ลดค่า i เพราะที่ลบข้อมูล - } + for (const child of treeNode.children) { + deleteNode(child, rootId, treeId); } } @@ -210,17 +217,16 @@ async function onClickEdit(node: OrgTree) { dataNode.value = node; } -async function onClickDel(type: number, id: string) { +async function onClickDel(type: number, id: string, rootId: string) { const level = store.checkLevel(type); dialogRemove($q, async () => { - // edit(id, "edit", {}); showLoader(); await http .delete(config.API.orgLevelByid(level.toLocaleLowerCase(), id)) .then(() => { success($q, "ลบข้อมูลสำเร็จ"); - // edit(id, "edit", {}); + deleteUpdate(rootId, id); }) .catch((err) => { messageError($q, err); @@ -390,7 +396,11 @@ onMounted(async () => {}); : item.type === 'DETAIL' ? onClickDetail(prop.node.orgTreeId, prop.node.orgLevel) : item.type === 'DEL' - ? onClickDel(prop.node.orgLevel, prop.node.orgTreeId) + ? onClickDel( + prop.node.orgLevel, + prop.node.orgTreeId, + prop.node.orgRootId + ) : item.type === 'SORT' ? onClickSort(prop.node.orgRootId) : item.type === 'HISTORY' @@ -462,7 +472,11 @@ onMounted(async () => {}); : item.type === 'DETAIL' ? onClickDetail(prop.node.orgTreeId, prop.node.orgLevel) : item.type === 'DEL' - ? onClickDel(prop.node.orgLevel, prop.node.orgTreeId) + ? onClickDel( + prop.node.orgLevel, + prop.node.orgTreeId, + prop.node.orgRootId + ) : null " >