Fix document upload

This commit is contained in:
Vova 2025-12-03 21:26:17 +03:00
parent 1d78a3e864
commit 5e591eaea9
5 changed files with 50 additions and 17 deletions

View File

@ -2,7 +2,7 @@ NODE_ENV=development
VITE_API_URL=https://joyworkdev.ru
VITE_LARAVEL_URL=https://llar.joyworkdev.ru
VITE_LARAVEL_API_URL=https://joyworkdev.ru
VITE_DEV_SESSION_ID=e74fad113507355529accbf75227afb8
VITE_DEV_SESSION_ID=e140a9d56a24f47046b9ab0953e5a9ee
VITE_DEV_REQUISITION_ID=17539
#VITE_BASIC_AUTH_USER=adminlogin
#VITE_BASIC_AUTH_PASS=adminpassword

View File

@ -88,6 +88,7 @@ const saveDealDoc = async () => {
} catch (error) {
console.error('Ошибка при загрузке документа:', error);
alert('Произошла ошибка при загрузке документа');
console.log('FormData entries:', [...formData.entries()]);
}
// try {

View File

@ -5,7 +5,7 @@
<img v-if="isImage" :src="fileUrl" alt="Превью документа" class="w-full h-full object-cover" />
<img v-else
:src="require('@/shared/assets/images/deal/deal-doc-icon.png')"
:src="defaultIconUrl"
:alt="fileExtension + ' документ'"
class="w-full h-full object-contain bg-gray-100" />
@ -34,6 +34,8 @@ import { useConfirm } from 'primevue/useconfirm';
import { useToast } from 'primevue/usetoast';
import { computed } from "vue";
import defaultIconUrl from '@/shared/assets/images/deal/deal-doc-icon.png';
const props = defineProps({
doc: {
type: Object,

View File

@ -1,4 +1,5 @@
import { laravel_api_instance, get_user_id } from '@/shared/api';
import axios from 'axios';
// Функция для получения куки по имени
const getCookie = (name) => {
@ -16,7 +17,6 @@ const fetchData = (endpoint, options = {}) => {
const { method = 'GET', data, params = {}, headers = {} } = options;
// Получаем PHPSESSID
//const sessionId = getCookie('PHPSESSID');
const isDev = import.meta.env.MODE === 'development';
const sessionId = isDev
@ -24,14 +24,9 @@ const fetchData = (endpoint, options = {}) => {
: getCookie('PHPSESSID');
//const sessionId = 'bfcf0cc168ec34cf8e26950cf1038dc2';
//const usernameDev = process.env.VUE_APP_BASIC_AUTH_USER;
//const passwordDev = process.env.VUE_APP_BASIC_AUTH_PASS;
//const authDev = btoa(`${usernameDev}:${passwordDev}`);
// Проверяем окружение
//const isDev = process.env.NODE_ENV === 'development';
//let authHeaders = {};
//Добавляем Basic Auth только в dev
@ -45,24 +40,53 @@ const fetchData = (endpoint, options = {}) => {
// }
// }
// Извлекаем путь из endpoint: например "/clients"
// Извлекаем путь из endpoint
const path = endpoint.replace(/^\//, '');
const isFormData = data instanceof FormData;
const finalHeaders = { ...headers };
console.log('[laravelApiService] fetchData вызван с endpoint:', endpoint);
console.log('[laravelApiService] Тип data:', data && data.constructor.name);
console.log('[laravelApiService] data instanceof FormData:', data instanceof FormData);
const isFormData = data instanceof FormData;
if (isFormData) {
delete finalHeaders['Content-Type'];
console.log('[laravelApiService] Используем directAxiosInstance для FormData');
const laravelApiUrl = 'http://llar.joyworkdev.ru/api';
// временный инстанс axios без Content-Type
const directAxiosInstance = axios.create({
baseURL: laravelApiUrl,
withCredentials: laravel_api_instance.defaults.withCredentials,
});
const finalHeaders = { ...headers };
if (sessionId) {
finalHeaders['X-Session-ID'] = sessionId;
}
logMessage("Sending FormData directly to Laravel API: " + laravelApiUrl + endpoint);
return directAxiosInstance({
url: endpoint,
method,
data,
headers: finalHeaders,
params,
});
}
console.log('[laravelApiService] Используем laravel_api_instance через deal/index.php');
const finalHeaders = { ...headers };
if (sessionId) {
finalHeaders['X-Session-ID'] = sessionId;
}
return laravel_api_instance({
//url: isDev ? '/deal/index.php' : endpoint,
url: '/deal/index.php',
method,
data,
headers: finalHeaders,
params: {
//user_id: get_user_id(),
path,
...params,
},
@ -70,6 +94,10 @@ const fetchData = (endpoint, options = {}) => {
});
};
function logMessage(message) {
console.log('[laravelApiService]', message);
}
export default {
fetchData,
};

View File

@ -27,12 +27,14 @@ export const dealsApi = {
* @returns {Promise} - Ответ сервера
*/
uploadDocument(formData) {
console.log('[dealsApi] uploadDocument вызван с FormData:', formData);
return laravelApi.fetchData('/documents', {
method: 'POST',
data: formData,
headers: {
'Content-Type': 'multipart/form-data', // Важно для FormData!
},
// headers: {
// 'Content-Type': 'multipart/form-data', // Важно для FormData!
// },
});
},