diff --git a/src/components/deal/DealModal.vue b/src/components/deal/DealModal.vue
index 660df93..730750e 100644
--- a/src/components/deal/DealModal.vue
+++ b/src/components/deal/DealModal.vue
@@ -1129,14 +1129,28 @@ const addDoc = (doc) => {
// Удалить документ
const removeDoc = async (docId) => {
+ const doc = selectedDocs.value.find(d => d.id === docId);
+ selectedDocs.value = selectedDocs.value.filter(d => d.id !== docId);
+
try {
- await deleteData(`/documents/${docId}`, {
- method: 'DELETE'
+ const { fetchData } = useLaravelApi();
+ await fetchData(`/documents/${docId}`, {
+ method: 'PUT',
+ data: { soft_delete: true },
+ });
+ toast.add({
+ severity: 'success',
+ summary: 'Документ удалён',
+ detail: doc ? `«${doc.name}» удалён` : 'Документ удалён',
+ life: 3000
});
- selectedDocs.value = selectedDocs.value.filter(doc => doc.id !== docId);
} catch (error) {
- console.error('Ошибка при удалении документа:', error);
- throw error;
+ toast.add({
+ severity: 'warn',
+ summary: 'Документ убран из списка',
+ detail: 'Не удалось удалить на сервере, будет удалён при сохранении',
+ life: 3000
+ });
}
};
@@ -1322,9 +1336,7 @@ const saveDeal = async () => {
...deal.value,
deal_date: formattedDate,
employees: selectedEmployees.value.map(employee => employee.id),
- //side_one_clients: sideOneClients.map(client => client.id),
- //side_two_clients: sideTwoClients.map(client => client.id),
- //documents: selectedDocs.value.map(doc => doc.id),
+ documents: selectedDocs.value.map(doc => doc.id),
};
try {
@@ -1337,10 +1349,12 @@ const saveDeal = async () => {
});
if (response.data.success) {
+ const docCount = selectedDocs.value.length;
+ const docText = docCount > 0 ? ` (${docCount} док.)` : '';
toast.add({
severity: 'success',
summary: 'Успех',
- detail: String(response.data.message || (isEditing.value ? 'Сделка успешно обновлена' : 'Сделка успешно создана')),
+ detail: String(response.data.message || (isEditing.value ? 'Сделка обновлена' : 'Сделка создана') + docText),
life: 3000,
});
diff --git a/src/components/deal/addEdit/DocAddModal.vue b/src/components/deal/addEdit/DocAddModal.vue
index f11c514..b1eb0e7 100644
--- a/src/components/deal/addEdit/DocAddModal.vue
+++ b/src/components/deal/addEdit/DocAddModal.vue
@@ -5,7 +5,7 @@
-
+
+ @clear="selectedFile = null"
+ >
+
+
+
+
+
+
+
+
+
+
![]()
+
{{ files[0].name }}
+
+
+
+
+
+ Перетащите файл сюда или нажмите "Выбрать"
+
+
@@ -58,6 +82,12 @@ import {inject, ref} from 'vue';
import { dealsApi } from '@/shared/api/deal';
import InputText from "primevue/inputtext";
import FileUpload from 'primevue/fileupload';
+import Button from 'primevue/button';
+import defaultDocIcon from '@/shared/assets/images/deal/deal-doc-icon.png';
+import plusIcon from '@/shared/assets/icons/plus-green.svg';
+import sendIcon from '@/shared/assets/icons/send.svg';
+import closeIcon from '@/shared/assets/icons/close.svg';
+import {useToast} from 'primevue/usetoast';
// const props = defineProps({
// deal: {
@@ -68,17 +98,24 @@ import FileUpload from 'primevue/fileupload';
const dialogRef = inject('dialogRef');
const props = dialogRef.value.data;
+const toast = useToast();
//const emit = defineEmits(['close', 'select']);
// Реактивные переменные для названия и файла
const documentName = ref('');
const selectedFile = ref(null);
+const fileUploadRef = ref(null);
+
+const onUploadClick = () => {
+ if (fileUploadRef.value) {
+ fileUploadRef.value.upload();
+ }
+};
// Событие выбора файла
const onFileSelect = (event) => {
selectedFile.value = event.files[0];
- console.log(selectedFile);
};
@@ -92,10 +129,13 @@ const closeModal = () => {
};
// Сохранение документа
-const saveDealDoc = async (event) => {
- console.log('saveDealDoc вызван', event);
- if (!documentName.value || !selectedFile.value) {
- alert('Пожалуйста, заполните все поля');
+const saveDealDoc = async () => {
+ if (!documentName.value) {
+ alert('Заполните название документа');
+ return;
+ }
+ if (!selectedFile.value) {
+ alert('Выберите файл');
return;
}
@@ -113,7 +153,12 @@ const saveDealDoc = async (event) => {
try {
const response = await dealsApi.uploadDocument(formData);
- //emit('select', response.data.data);
+ toast.add({
+ severity: 'success',
+ summary: 'Документ загружен',
+ detail: `«${documentName.value}» успешно добавлен`,
+ life: 3000
+ });
dialogRef.value.close(response.data.data)
//closeModal();
} catch (error) {
diff --git a/src/components/deal/addEdit/DocsCard.vue b/src/components/deal/addEdit/DocsCard.vue
index 28841b7..ebe4b01 100644
--- a/src/components/deal/addEdit/DocsCard.vue
+++ b/src/components/deal/addEdit/DocsCard.vue
@@ -87,19 +87,8 @@ const confirmDelete = (event) => {
accept: async () => {
try {
emit('remove', props.doc.id);
- toast.add({
- severity: 'success',
- summary: 'Успешно',
- detail: 'Документ удален',
- life: 3000
- });
} catch (error) {
- toast.add({
- severity: 'error',
- summary: 'Ошибка',
- detail: 'Не удалось удалить документ',
- life: 3000
- });
+ console.error('Ошибка при удалении документа:', error);
}
},
reject: () => {