From 7d1bfd33ff0a67a1606d2be99bab12258bc48037 Mon Sep 17 00:00:00 2001 From: "DESKTOP-1R2VSQH\\Lenovo ThinkPad E490" Date: Tue, 9 Jun 2026 17:39:55 +0700 Subject: [PATCH] fix: normalizeTreeData --- src/stores/structureTree.ts | 25 +++++++++++++++++++++++-- 1 file changed, 23 insertions(+), 2 deletions(-) diff --git a/src/stores/structureTree.ts b/src/stores/structureTree.ts index d509f637c..3d8e4dd72 100644 --- a/src/stores/structureTree.ts +++ b/src/stores/structureTree.ts @@ -13,6 +13,27 @@ import type { const { showLoader, hideLoader } = useCounterMixin(); +/** + * ฟังก์ชันแปลงข้อมูลโครงสร้างให้มี children array สำหรับทุกโหนด + * เพื่อป้องกันปัญหา q-tree เมื่อ children เป็น undefined + */ +function normalizeTreeData(nodes: DataStructureTree[]): DataStructureTree[] { + return nodes.map((node) => { + // Set children to [] for orgLevel: 4, otherwise recurse if children exist + const normalizedChildren = + node.orgLevel === 4 + ? [] + : node.children + ? normalizeTreeData(node.children) + : node.children; + + return { + ...node, + children: normalizedChildren, + }; + }); +} + export const useStructureTree = defineStore("structureTree", () => { const activeId = ref(""); const dataStore = ref<{ [key: string]: DataStructureTree[] }>({}); @@ -27,11 +48,11 @@ export const useStructureTree = defineStore("structureTree", () => { */ async function fetchStructureTree(sysKey: string, isLoad: boolean = false) { if (dataStore.value[sysKey]) { - return dataStore.value[sysKey] || []; + return normalizeTreeData(dataStore.value[sysKey]) || []; } else { activeId.value === "" && (await fetchActive()); const data = await fetchData(sysKey, isLoad); - return data || []; + return normalizeTreeData(data || []); } }