diff --git a/back/inventory/views.py b/back/inventory/views.py index 5e2c318..7ff0a92 100644 --- a/back/inventory/views.py +++ b/back/inventory/views.py @@ -88,7 +88,7 @@ class InventoryItemViewSet(viewsets.ModelViewSet): if partner is not None: queryset = queryset.filter(partner=partner) return queryset - + def create(self, request, **kwargs): data = request.data @@ -101,13 +101,13 @@ class InventoryItemViewSet(viewsets.ModelViewSet): name=data["partner_name"], ) partner_serializer = PartnerSerializer(partner_object, many=False) - + inventory_object = InventoryItem.objects.create( - partner=partner_object, - name=f"{data['partner_name']} {datetime.datetime.now()}", - ) + partner=partner_object, + name=f"{data['partner_name']} {datetime.datetime.now()}", + ) inventory_serializer = InventorySerializer(inventory_object, many=False) - + return Response( { "partner": partner_serializer.data, @@ -221,3 +221,23 @@ class ElementViewSet(viewsets.ModelViewSet): 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/id/(?P[^/.]+)") + def get_remote_element_by_id(self, request, pk=None, cat_id=None): + try: + params = { + "$format": "json", + "$select": ",".join(["Description", "Ref_Key", "Parent_Key"]), + } + remote_url = ( + f"https://1c.svs-tech.pro/UNF/odata/standard.odata/Catalog_Номенклатура(guid'{cat_id}')?" + + "&".join([f"{p}={params[p]}" for p in params]) + ) + data = requests.get( + remote_url, headers={"Authorization": settings.ODATA_AUTH} + ) + parsed_data = data.json() + return Response(parsed_data) + except Exception as e: + logger.error(e) + return Response(status=status.HTTP_500_INTERNAL_SERVER_ERROR) diff --git a/front/assets/main.scss b/front/assets/main.scss index 52ba909..324d6e7 100644 --- a/front/assets/main.scss +++ b/front/assets/main.scss @@ -25,6 +25,7 @@ .header { @apply col-span-12 flex gap-2 p-2.5; + .logo { @apply text-primary text-2xl } @@ -37,4 +38,16 @@ .content { @apply col-span-10 } + + dl { + // @apply grid grid-cols-4; + dt { + // @apply col-span-1 + } + dd { + @apply mb-2 + + } + + } } \ No newline at end of file diff --git a/front/components/edit.vue b/front/components/edit.vue index 74abff0..329a826 100644 --- a/front/components/edit.vue +++ b/front/components/edit.vue @@ -36,6 +36,21 @@ const external_data = reactive({ categories: [], element: [], }) + +const external_elements = reactive({}) +const loadOneElement = async (id: string) => { + const data = await $fetch(`${apiBase}/element/external/id/${id}`) + external_elements[id] = data.Description + +} +const getExternalElementName = (id: string) => { + if (!external_elements[id]) { + loadOneElement(id) + return id + } + return external_elements[id] +} + const elements = ref(props.elements) const validate = (state: any): FormError[] => { const errors = [] @@ -168,12 +183,12 @@ onMounted(async () => {

{{ external_data.partner?.find(el => el["Ref_Key"] == state.partner)?.Description }}