This commit is contained in:
Warunee Tamkoo 2024-01-31 18:20:28 +07:00
parent 764078488c
commit c7ea4e0e5b
2 changed files with 72 additions and 55 deletions

View file

@ -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();
}));
}
});

View file

@ -84,8 +84,8 @@ const listAdd = ref<ListMenu[]>([
]);
const nodeTEST = defineModel<OrgTree[]>("nodeTree", { default: [] });
const nodeId = defineModel<string>("nodeId", { require: true });
const isLoad = defineModel<boolean>("isLoad", { require: true });
const nodeId = defineModel<string>("nodeId", { required: true });
const isLoad = defineModel<boolean>("isLoad", { required: true });
const filter = ref<string>("");
const nodes = ref<Array<OrgTree>>([]);
@ -109,39 +109,15 @@ const updateSelected = (id: string, level: number) => {
};
const breakLoop = ref<boolean>(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
"
>