58 lines
1.5 KiB
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> |