From 58934e866678bd215cea9fb1adf3e144ca457354 Mon Sep 17 00:00:00 2001 From: aarizona Date: Wed, 29 May 2024 15:38:42 +0300 Subject: [PATCH] =?UTF-8?q?=D0=BF=D0=BE=D1=81=D0=BB=D0=B5=D0=B4=D0=BE?= =?UTF-8?q?=D0=B2=D0=B0=D1=82=D0=B5=D0=BB=D1=8C=D0=BD=D1=8B=D0=B9=20=D0=B2?= =?UTF-8?q?=D1=8B=D0=B1=D0=BE=D1=80=20=D0=BA=D0=B0=D1=82=D0=B5=D0=B3=D0=BE?= =?UTF-8?q?=D1=80=D0=B8=D0=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- back/inventory/views.py | 38 +++++++++++++++------------ front/pages/organization/new.vue | 45 +++++++++++++++++++++----------- 2 files changed, 51 insertions(+), 32 deletions(-) diff --git a/back/inventory/views.py b/back/inventory/views.py index f6fff40..1e0ed48 100644 --- a/back/inventory/views.py +++ b/back/inventory/views.py @@ -67,24 +67,28 @@ class ElementViewSet(viewsets.ModelViewSet): queryset = Element.objects.all() serializer_class = ElementSerializer - @action(detail=False, methods=["get"], url_path=r"external_categories") - def get_remote_categories(self, request): + @action( + detail=False, + methods=["get"], + url_path=r"external_categories", + ) + def get_remote_categories(self, request, cat_id=None): try: - all_categories = [] - categories = get_depth_cat("a6aadfe8-7e0f-11ee-ab5a-a47a2bd811cb") - for category in categories: - depth = get_depth_cat(category["Ref_Key"]) - if len(depth): - for cat2 in depth: - depth2 = get_depth_cat(cat2["Ref_Key"]) - if len(depth2): - for cat3 in depth2: - depth3 = get_depth_cat(cat3["Ref_Key"]) - all_categories.append(depth3) - else: - all_categories.append(depth2) - else: - all_categories.append(depth) + categories = get_depth_cat("87e91e07-7e10-11ee-ab5a-a47a2bd811cb") + categories.extend(get_depth_cat("20e1e6f6-a575-11ee-ab60-ec3c37e2e642")) + return Response(categories) + except Exception as e: + logger.error(e) + return Response(status=status.HTTP_500_INTERNAL_SERVER_ERROR) + + @action( + detail=False, + methods=["get"], + url_path=r"external_categories/(?P[^/.]+)", + ) + def get_remote_categories_child(self, request, cat_id=None): + try: + categories = get_depth_cat(cat_id) return Response(categories) except Exception as e: logger.error(e) diff --git a/front/pages/organization/new.vue b/front/pages/organization/new.vue index 2144873..ec48ee5 100644 --- a/front/pages/organization/new.vue +++ b/front/pages/organization/new.vue @@ -19,10 +19,10 @@ const searchInExternal = (q: string) => { return el.Description.toLowerCase().indexOf(q.toLowerCase()) !== -1 }).slice(0, 10) } -const externalCategory = ref() -const externalCategories = ref([]) +const externalCategoryValue = ref([]) +const externalCategories = ref([]) -const externalElement = ref() +const externalElementValue = ref() const externalElements = ref([]) const loadPartners = async () => { @@ -33,21 +33,33 @@ const loadPartners = async () => { } loading.value = false } +const loadCategories = async () => { + const lastCat = externalCategoryValue.value.at(-1) || '' + const { data } = await useFetch(`${apiBase}/element/external_categories/${lastCat}`) + if (data.value?.length) { + externalCategories.value.push(data.value) + } else { + await loadElements() + } +} const loadElements = async () => { - loading.value = true - const { data } = await useFetch(`${apiBase}/element/external/${externalCategory.value}`) + const lastCat = externalCategoryValue.value.at(-1) || '' + const { data } = await useFetch(`${apiBase}/element/external/${lastCat}`) if (data.value) { externalElements.value = data.value } - loading.value = false +} +const loadDeepCategories = async (i: number) => { + if ((i + 1) < externalCategoryValue.value.length) { + externalCategoryValue.value = externalCategoryValue.value.slice(0, i + 1) + externalCategories.value = externalCategories.value.slice(0, i + 1) + } + loadCategories() } onMounted(async () => { await loadPartners() - - const { data } = await useFetch(`${apiBase}/element/external_categories/`) - externalCategories.value = data.value + await loadCategories() }) -watch(externalCategory, loadElements)