Fix upload documents
This commit is contained in:
parent
b1ae591b88
commit
f3143b4651
@ -371,8 +371,8 @@
|
|||||||
:urlLaravel="urlLaravel"
|
:urlLaravel="urlLaravel"
|
||||||
@remove="removeDoc"
|
@remove="removeDoc"
|
||||||
/>
|
/>
|
||||||
<div class="w-full sm:w-1/2 md:w-1/3 lg:w-1/4">
|
<div class="w-full sm:w-1/2 md:w-1/3 lg:w-1/4 pr-4 mb-4">
|
||||||
<button @click="openModalDealDoc" class="w-full h-full p-6 rounded flex flex-col items-center justify-center add-deal-doc-button">
|
<button @click="openModalDealDoc" class="w-full h-full p-4 rounded flex flex-col items-center justify-center add-deal-doc-button">
|
||||||
<img src="@/shared/assets/icons/plus-green.svg" alt="Добавить документ" class="w-6 h-6">
|
<img src="@/shared/assets/icons/plus-green.svg" alt="Добавить документ" class="w-6 h-6">
|
||||||
<p>Добавить документ</p>
|
<p>Добавить документ</p>
|
||||||
</button>
|
</button>
|
||||||
@ -651,6 +651,7 @@ async function loadDealData(dealId) {
|
|||||||
id: doc.id,
|
id: doc.id,
|
||||||
name: doc.name,
|
name: doc.name,
|
||||||
file: doc.file,
|
file: doc.file,
|
||||||
|
thumbnail: doc.thumbnail,
|
||||||
created_at: doc.created_at
|
created_at: doc.created_at
|
||||||
}));
|
}));
|
||||||
} else {
|
} else {
|
||||||
|
|||||||
@ -77,9 +77,10 @@
|
|||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script setup>
|
<script setup>
|
||||||
import {inject, ref} from 'vue';
|
import { inject, ref } from 'vue';
|
||||||
//import { useLaravelApi } from '@/composables/useLaravelApi';
|
//import { useLaravelApi } from '@/composables/useLaravelApi';
|
||||||
import { dealsApi } from '@/shared/api/deal';
|
import { dealsApi } from '@/shared/api/deal';
|
||||||
|
import { generateThumbnail } from '@/shared/utils/generateThumbnail';
|
||||||
import InputText from "primevue/inputtext";
|
import InputText from "primevue/inputtext";
|
||||||
import FileUpload from 'primevue/fileupload';
|
import FileUpload from 'primevue/fileupload';
|
||||||
import Button from 'primevue/button';
|
import Button from 'primevue/button';
|
||||||
@ -139,8 +140,6 @@ const saveDealDoc = async () => {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
//const { fetchData } = useLaravelApi();
|
|
||||||
|
|
||||||
// Создаем FormData для отправки файла
|
// Создаем FormData для отправки файла
|
||||||
const formData = new FormData();
|
const formData = new FormData();
|
||||||
formData.append('name', documentName.value);
|
formData.append('name', documentName.value);
|
||||||
@ -148,8 +147,17 @@ const saveDealDoc = async () => {
|
|||||||
if (props.deal.id) {
|
if (props.deal.id) {
|
||||||
formData.append('target_id', props.deal.id);
|
formData.append('target_id', props.deal.id);
|
||||||
}
|
}
|
||||||
|
formData.append('target_type', 10);
|
||||||
|
|
||||||
formData.append('target_type', 10); // Пример значения
|
// Генерируем thumbnail
|
||||||
|
try {
|
||||||
|
const thumbnail = await generateThumbnail(selectedFile.value);
|
||||||
|
if (thumbnail) {
|
||||||
|
formData.append('thumbnail', thumbnail.blob, 'thumb.' + thumbnail.extension);
|
||||||
|
}
|
||||||
|
} catch (e) {
|
||||||
|
console.error('[DocAddModal] Thumbnail generation failed:', e);
|
||||||
|
}
|
||||||
|
|
||||||
try {
|
try {
|
||||||
const response = await dealsApi.uploadDocument(formData);
|
const response = await dealsApi.uploadDocument(formData);
|
||||||
@ -160,27 +168,10 @@ const saveDealDoc = async () => {
|
|||||||
life: 3000
|
life: 3000
|
||||||
});
|
});
|
||||||
dialogRef.value.close(response.data.data)
|
dialogRef.value.close(response.data.data)
|
||||||
//closeModal();
|
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
console.error('Ошибка при загрузке документа:', error);
|
console.error('Ошибка при загрузке документа:', error);
|
||||||
alert('Произошла ошибка при загрузке документа');
|
alert('Произошла ошибка при загрузке документа');
|
||||||
}
|
}
|
||||||
|
|
||||||
// try {
|
|
||||||
// const response = await fetchData('/documents', {
|
|
||||||
// method: 'POST',
|
|
||||||
// data: formData,
|
|
||||||
// });
|
|
||||||
//
|
|
||||||
// // Передаем документ в родительский компонент
|
|
||||||
// emit('select', response.data.data);
|
|
||||||
//
|
|
||||||
// // Закрываем модальное окно
|
|
||||||
// closeModal();
|
|
||||||
// } catch (error) {
|
|
||||||
// console.error('Ошибка при загрузке документа:', error);
|
|
||||||
// alert('Произошла ошибка при загрузке документа');
|
|
||||||
// }
|
|
||||||
};
|
};
|
||||||
|
|
||||||
</script>
|
</script>
|
||||||
|
|||||||
@ -1,14 +1,13 @@
|
|||||||
<template>
|
<template>
|
||||||
<div class="w-full sm:w-1/2 md:w-1/3 lg:w-1/4 pr-4">
|
<div class="w-full sm:w-1/2 md:w-1/3 lg:w-1/4 pr-4 mb-4">
|
||||||
<div class="document-card p-4 rounded flex">
|
<div class="document-card p-4 rounded flex">
|
||||||
<div class="deal-document-thumbnail w-16 h-16 shrink-0 rounded-lg overflow-hidden">
|
<div class="deal-document-thumbnail w-16 h-16 shrink-0 rounded-lg overflow-hidden">
|
||||||
<img v-if="isImage" :src="fileUrl" alt="Превью документа" class="w-full h-full object-cover" />
|
<img v-if="hasThumbnail" :src="thumbnailUrl" alt="Миниатюра документа" class="w-full h-full object-cover" />
|
||||||
|
<img v-else-if="isImage" :src="fileUrl" alt="Превью документа" class="w-full h-full object-cover" />
|
||||||
<img v-else
|
<img v-else
|
||||||
:src="defaultIconUrl"
|
:src="defaultIconUrl"
|
||||||
:alt="fileExtension + ' документ'"
|
:alt="fileExtension + ' документ'"
|
||||||
class="w-full h-full object-contain bg-gray-100" />
|
class="w-full h-full object-contain bg-gray-100" />
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<!-- Название документа -->
|
<!-- Название документа -->
|
||||||
@ -54,6 +53,15 @@ const fileUrl = computed(() => {
|
|||||||
return `${props.urlLaravel}/storage/${props.doc.file}`;
|
return `${props.urlLaravel}/storage/${props.doc.file}`;
|
||||||
});
|
});
|
||||||
|
|
||||||
|
const hasThumbnail = computed(() => {
|
||||||
|
return !!props.doc.thumbnail;
|
||||||
|
});
|
||||||
|
|
||||||
|
const thumbnailUrl = computed(() => {
|
||||||
|
if (!props.doc.thumbnail) return '';
|
||||||
|
return `${props.urlLaravel}/storage/${props.doc.thumbnail}`;
|
||||||
|
});
|
||||||
|
|
||||||
// // Проверка, является ли файл изображением
|
// // Проверка, является ли файл изображением
|
||||||
const isImage = computed(() => {
|
const isImage = computed(() => {
|
||||||
if (!props.doc.file) return false;
|
if (!props.doc.file) return false;
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user