From b25511805d30124396b30c387afce6ec720922d8 Mon Sep 17 00:00:00 2001 From: 107 <107@DESKTOP-UP8U7M2> Date: Fri, 23 May 2025 14:05:22 +0700 Subject: [PATCH] =?UTF-8?q?=D1=84=D0=B8=D0=BA=D1=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- index.html | 12 +++++++++- src/views/ProfileView.vue | 49 ++++++++++++++++++++++++++++++++------- 2 files changed, 52 insertions(+), 9 deletions(-) diff --git a/index.html b/index.html index 455daa3..e6dfa9b 100644 --- a/index.html +++ b/index.html @@ -6,7 +6,17 @@ DatingApp - + + diff --git a/src/views/ProfileView.vue b/src/views/ProfileView.vue index f4a9450..10c57cf 100644 --- a/src/views/ProfileView.vue +++ b/src/views/ProfileView.vue @@ -387,10 +387,22 @@ const toggleEditMode = () => { if (isEditMode.value) { // При входе в режим редактирования копируем данные профиля в редактируемый объект + // Преобразуем формат даты из ISO в yyyy-MM-dd + let formattedDate = ''; + if (profileData.value.dateOfBirth) { + try { + const date = new Date(profileData.value.dateOfBirth); + formattedDate = date.toISOString().split('T')[0]; // Получаем только yyyy-MM-dd часть + } catch (e) { + console.error('Ошибка форматирования даты:', e); + formattedDate = ''; + } + } + editableProfileData.value = { name: profileData.value.name || '', bio: profileData.value.bio || '', - dateOfBirth: profileData.value.dateOfBirth || '', + dateOfBirth: formattedDate, gender: profileData.value.gender || '', location: { city: profileData.value.location?.city || '', @@ -749,13 +761,22 @@ const saveProfileChanges = async () => { try { console.log('[ProfileView] Сохранение данных профиля:', editableProfileData.value); - - // Подготавливаем данные для отправки на сервер + // Подготавливаем данные для отправки на сервер const dataToUpdate = { ...editableProfileData.value }; - // Обрабатываем дату рождения - если это строка с датой, преобразуем в формат ISO + // Обрабатываем дату рождения - если это строка с датой в формате yyyy-MM-dd + // преобразуем её в полноценную дату (в формат ISO) if (dataToUpdate.dateOfBirth) { - // dateOfBirth уже в нужном формате из input type="date" + try { + // Получаем дату в формате ISO с поправкой на часовой пояс + const dateObj = new Date(dataToUpdate.dateOfBirth); + if (!isNaN(dateObj.getTime())) { // Проверяем, что дата валидна + dataToUpdate.dateOfBirth = dateObj.toISOString(); + } + } catch (e) { + console.error('[ProfileView] Ошибка обработки даты:', e); + // Оставляем как есть, если возникла ошибка + } console.log('[ProfileView] Дата рождения для отправки:', dataToUpdate.dateOfBirth); } @@ -787,10 +808,21 @@ const loadCities = async () => { try { // Используем правильный путь к файлу для Vite const response = await import('@/assets/russian-cities.json'); - cities = response.default || []; + const rawData = response.default || []; + + // Проверяем, что данные - массив строк + if (Array.isArray(rawData)) { + // Фильтруем и очищаем данные, оставляя только строки + cities = rawData.filter(city => typeof city === 'string'); + } else { + cities = []; + console.error('[ProfileView] Неверный формат данных городов:', typeof rawData); + } + console.log('[ProfileView] Загружен список городов:', cities.length); } catch (err) { console.error('[ProfileView] Ошибка при загрузке списка городов:', err); + cities = []; // Инициализируем пустым массивом в случае ошибки } }; @@ -807,11 +839,12 @@ const onCitySearch = () => { const query = citySearchQuery.value.toLowerCase().trim(); filteredCities.value = cities - .filter(city => city.toLowerCase().includes(query)) + .filter(city => typeof city === 'string' && city.toLowerCase().includes(query)) .slice(0, 10); // Ограничиваем количество результатов }; const selectCity = (city) => { + console.log('[ProfileView] Выбран город:', city, typeof city); citySearchQuery.value = city; if (!editableProfileData.value.location) { @@ -863,7 +896,7 @@ onMounted(async () => {