From 539a1cefb00ec66eb5db722f01515aa658bc9fa8 Mon Sep 17 00:00:00 2001 From: riefive Date: Fri, 3 Oct 2025 10:54:35 +0700 Subject: [PATCH] feat(division): create tree item converter for division --- app/components/content/division/list.vue | 1 + app/handlers/_shared.handler.ts | 18 ++++++++++++++++++ app/models/_model.ts | 7 +++++++ 3 files changed, 26 insertions(+) diff --git a/app/components/content/division/list.vue b/app/components/content/division/list.vue index d759192e..fe69d30e 100644 --- a/app/components/content/division/list.vue +++ b/app/components/content/division/list.vue @@ -50,6 +50,7 @@ const { const result = await getDivisions({ search: params.search, // page: params['page-number'] || 0, + includes: 'parent,childrens', }) return { success: result.success || false, body: result.body || {} } }, diff --git a/app/handlers/_shared.handler.ts b/app/handlers/_shared.handler.ts index 2b0056f4..838b8c66 100644 --- a/app/handlers/_shared.handler.ts +++ b/app/handlers/_shared.handler.ts @@ -6,6 +6,7 @@ import type { Installation } from '~/models/installation' import type { Specialist } from '~/models/specialist' import type { Uom } from '~/models/uom' import type { Unit } from '~/models/unit' +import type { TreeItem } from '~/models/_model' // constants import { encounterClassCodes } from '~/lib/constants' @@ -124,3 +125,20 @@ export const getUomList = async () => { uoms.value = currentUoms.map((uom: Uom) => ({ value: uom.code || uom.erp_id, label: uom.name })) } } + +/** + * Convert division response (with childrens) to TreeItem[] + * @param divisions Array of division objects from API + * @returns TreeItem[] + */ +export function convertDivisionToTreeItems(divisions: any[]): TreeItem[] { + return divisions.map((division) => ({ + value: division.id ? String(division.id) : division.code, + label: division.name, + hasChildren: Array.isArray(division.childrens) && division.childrens.length > 0, + children: + Array.isArray(division.childrens) && division.childrens.length > 0 + ? convertDivisionToTreeItems(division.childrens) + : undefined, + })) +} diff --git a/app/models/_model.ts b/app/models/_model.ts index b5f09a71..d41c54a7 100644 --- a/app/models/_model.ts +++ b/app/models/_model.ts @@ -14,6 +14,13 @@ export interface PaginationMeta { source: string } +export interface TreeItem { + value: string + label: string + hasChildren: boolean + children?: TreeItem[] +} + export interface Base { name: string code: string