инвентаризация
This commit is contained in:
commit
69672c8721
|
@ -43,6 +43,25 @@ class PartnerViewSet(viewsets.ModelViewSet):
|
|||
logger.error(e)
|
||||
return Response(status=status.HTTP_500_INTERNAL_SERVER_ERROR)
|
||||
|
||||
@action(detail=False, methods=["get"], url_path=r"external/(?P<cat_id>[^/.]+)")
|
||||
def get_remote_partner_one(self, request, cat_id):
|
||||
params = {
|
||||
"$format": "json",
|
||||
"$select": ",".join(["НаименованиеПолное", "Description", "Ref_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])
|
||||
)
|
||||
logger.info(remote_url)
|
||||
data = requests.get(remote_url, headers={"Authorization": settings.ODATA_AUTH})
|
||||
try:
|
||||
parsed_data = data.json()
|
||||
return Response(parsed_data)
|
||||
except Exception as e:
|
||||
logger.error(e)
|
||||
return Response(status=status.HTTP_500_INTERNAL_SERVER_ERROR)
|
||||
|
||||
|
||||
def get_depth_cat(id):
|
||||
params = {
|
||||
|
|
|
@ -11,8 +11,8 @@ export type ApiTypeBase =
|
|||
ApiPartner | ApiInventory | ApiElement;
|
||||
|
||||
|
||||
export type ApiPartner = { id: number, external_id: number }
|
||||
export type ApiInventory = { id: number, partner: number }
|
||||
export type ApiPartner = { id: number, external_id: number, name: string, total_inventory: number }
|
||||
export type ApiInventory = { id: number, partner: number, name: string }
|
||||
export type ApiElement = { id: number, external_id: string, element_id: number, photo: string, additional_text: string, inventory: number }
|
||||
export type ApiTypeExternal = {
|
||||
'НаименованиеПолное': string;
|
||||
|
|
|
@ -7,15 +7,32 @@ headers.append("Content-Type", "application/json");
|
|||
|
||||
const route = useRoute()
|
||||
|
||||
const { data } = await useFetch<ApiTypeList>(`${apiBase}/element?inventory_id=${route.params.inv_id}`, { headers })
|
||||
const inventory = ref()
|
||||
const elements = ref()
|
||||
onMounted(async () => {
|
||||
const inventory_data = await $fetch<ApiTypeList>(`${apiBase}/inventory/${route.params.inv_id}`, { headers })
|
||||
inventory.value = inventory_data
|
||||
|
||||
const elements_data = await $fetch<ApiTypeList>(`${apiBase}/element?inventory_id=${route.params.inv_id}`, { headers })
|
||||
elements.value = elements_data
|
||||
})
|
||||
</script>
|
||||
<template>
|
||||
<div class="mb-4">
|
||||
<UButton icon="i-heroicons-plus" :to="`/organization/p_${route.params.org_id}/i_${route.params.inv_id}/edit`">
|
||||
<UCard class="mb-4" v-if="inventory">
|
||||
<template #header>
|
||||
Инвентаризация <strong>{{ inventory.name }}</strong>
|
||||
</template>
|
||||
<ul class="flex flex-col gap-2">
|
||||
<li>Всего элементов: {{ inventory.total_elements }}</li>
|
||||
</ul>
|
||||
<template #footer>
|
||||
<UButton icon="i-heroicons-plus"
|
||||
:to="`/organization/p_${route.params.org_id}/i_${route.params.inv_id}/edit`">
|
||||
Добавить элемент</UButton>
|
||||
</div>
|
||||
</template>
|
||||
</UCard>
|
||||
<div class="mb-4">
|
||||
<UTable :rows="data?.results"
|
||||
<UTable :rows="elements?.results"
|
||||
:columns="makeColumns(['id', 'external_id', 'element_id', 'photo', 'additional_text'])" />
|
||||
</div>
|
||||
</template>
|
|
@ -1,16 +1,44 @@
|
|||
<script setup lang="ts">
|
||||
import { apiBase, makeColumns } from '~/helpers';
|
||||
import type { ApiTypeList } from '~/helpers';
|
||||
import type { ApiPartner, ApiTypeList } from '~/helpers';
|
||||
|
||||
const headers = new Headers();
|
||||
headers.append("Content-Type", "application/json");
|
||||
|
||||
const route = useRoute()
|
||||
|
||||
const { data } = await useFetch<ApiTypeList>(`${apiBase}/inventory?partner_id=${route.params.org_id}`, { headers })
|
||||
const partner = ref()
|
||||
const partnerRemote = ref()
|
||||
const inventory = ref()
|
||||
onMounted(async () => {
|
||||
const partner_data = await $fetch<ApiPartner>(`${apiBase}/partner/${route.params.org_id}`, { headers })
|
||||
partner.value = partner_data
|
||||
|
||||
const partnerRemote_data = await $fetch<ApiPartner>(`${apiBase}/partner/external/${partner_data.external_id}`, { headers })
|
||||
partnerRemote.value = partnerRemote_data
|
||||
|
||||
const inventory_data = await $fetch<ApiTypeList>(`${apiBase}/inventory?partner_id=${route.params.org_id}`, { headers })
|
||||
inventory.value = inventory_data
|
||||
})
|
||||
</script>
|
||||
<template>
|
||||
<UTable :rows="data?.results" :columns="makeColumns(['id', 'name', 'created_at', 'total_elements',])">
|
||||
<UCard class="mb-4" v-if="partner">
|
||||
<template #header>
|
||||
Контрагент <strong>{{ partner.name }}</strong>
|
||||
</template>
|
||||
<ul class="flex flex-col gap-2">
|
||||
<li>Всего инвентаризаций: {{ partner.total_inventory }}</li>
|
||||
<li>1C ID: {{ partner.external_id }}
|
||||
<ul class="p-4">
|
||||
<template v-for="(value, name) in partnerRemote">
|
||||
<li>{{ name }}: {{ value }}</li>
|
||||
</template>
|
||||
</ul>
|
||||
</li>
|
||||
</ul>
|
||||
</UCard>
|
||||
<div class="mb-4">
|
||||
<UTable :rows="inventory?.results" :columns="makeColumns(['id', 'name', 'created_at', 'total_elements',])">
|
||||
<template #name-data="{ row }">
|
||||
<NuxtLink :to="`/organization/p_${route.params.org_id}/i_${row.id}`">
|
||||
{{ row.name }}
|
||||
|
@ -20,4 +48,5 @@ const { data } = await useFetch<ApiTypeList>(`${apiBase}/inventory?partner_id=${
|
|||
{{ new Date(row.created_at).toLocaleString() }}
|
||||
</template>
|
||||
</UTable>
|
||||
</div>
|
||||
</template>
|
Loading…
Reference in New Issue