web/front/components/table/drawing.vue

58 lines
1.5 KiB
Vue

<script setup>
defineProps({
drawingData: {
type: Array,
required: true
}
})
// Форматируем чертежи под TableItem
function formatDrawings(item) {
return item.drawings.reduce((acc, drawing) => {
acc[drawing.name] = drawing.path
return acc
}, {})
}
// Проверяем, есть ли спецификации
function hasSpecifications(item) {
return item.specifications && Array.isArray(item.specifications) && item.specifications.length > 0
}
// Форматируем спецификации под TableItem
function formatSpecifications(item) {
if (!hasSpecifications(item)) return {}
return item.specifications.reduce((acc, spec) => {
acc[spec.name] = spec.path
return acc
}, {})
}
</script>
<template>
<div class="mt-6">
<h3 class="text-xl font-semibold mb-4">Результат: Чертежи и спецификации</h3>
<div v-for="item in drawingData" :key="item.document_name" class="mb-6 border p-4 rounded shadow-sm bg-white">
<h4 class="font-medium text-lg">{{ item.document_name }}</h4>
<!-- Чертежи -->
<TableItem
caption="Чертежи:"
:items="formatDrawings(item)"
label-key="Название"
label-value="Путь"
/>
<!-- Спецификации -->
<TableItem
v-if="hasSpecifications(item)"
caption="Спецификации:"
:items="formatSpecifications(item)"
label-key="Название"
label-value="Путь"
/>
</div>
</div>
</template>