From d73b6f90267347ea29eee64c3677f9a9a11e410b Mon Sep 17 00:00:00 2001 From: Alexandrina-Kuzeleva Date: Fri, 5 Dec 2025 12:51:37 +0300 Subject: [PATCH] TEST UPD - /api/method/frappe.client.get DoesNotExistError --- frontend/src/pages/SchoolchildrenProfile.vue | 125 ++++++++++++++++--- 1 file changed, 105 insertions(+), 20 deletions(-) diff --git a/frontend/src/pages/SchoolchildrenProfile.vue b/frontend/src/pages/SchoolchildrenProfile.vue index 69679051..e8b1e0f4 100644 --- a/frontend/src/pages/SchoolchildrenProfile.vue +++ b/frontend/src/pages/SchoolchildrenProfile.vue @@ -54,19 +54,92 @@ - -
-
-
-
-
-
+ +
+ +
+
+
+
+ + + +
-
-

Ошибка загрузки данных школьника: {{ schoolProfile.error.message }}

-
+

Профиль школьника еще не заполнен

-
+

+ Чтобы получить доступ ко всем возможностям платформы, заполните информацию о себе. + Это поможет наставникам лучше понять ваши интересы и цели. +

+ +
+

+ + + + Заполнив профиль, вы получите: +

+
    +
  • + + + + Персонализированные рекомендации по обучению +
  • +
  • + + + + Подбор наставников по вашим интересам +
  • +
  • + + + + Доступ к закрытым мероприятиям и курсам +
  • +
+
+ + + +
+ +
+
+
+
+ + +
+
+
+
+
+ + +
+

Ошибка загрузки данных школьника: {{ schoolProfile.error.message }}

+
+ + +
@@ -444,6 +517,7 @@ import DOMPurify from 'dompurify' const { user } = sessionStore(); const $user = inject('$user'); +const schoolProfileNotFound = ref(false); // Логирование инициализации console.log('[DEBUG] Инициализация компонента:', { @@ -511,6 +585,10 @@ const schoolProfile = createResource({ }, auto: false, transform(data) { + if (!data) { + schoolProfileNotFound.value = true; + return null; + } let doc = data || {}; console.log('[DEBUG] Данные schoolProfile до трансформации:', doc); try { @@ -527,14 +605,20 @@ const schoolProfile = createResource({ onSuccess(data) { console.log('[DEBUG] Профиль школьника загружен:', data); }, - onError(error) { - console.error('[DEBUG] Ошибка загрузки профиля школьника:', error); - window.frappe?.msgprint({ - title: 'Ошибка', - message: 'Не удалось загрузить профиль школьника: ' + (error.message || 'Неизвестная ошибка'), - indicator: 'red', - }); - }, + onError(error) { + // Проверяем, является ли ошибка "не найдено" + if (error.exc_type === 'DoesNotExistError' || error.message?.includes('DoesNotExist')) { + console.log('[DEBUG] Профиль школьника не найден, создаем новый'); + schoolProfileNotFound.value = true; + } else { + console.error('[DEBUG] Ошибка загрузки профиля школьника:', error); + window.frappe?.msgprint({ + title: 'Ошибка', + message: 'Не удалось загрузить профиль школьника: ' + (error.message || 'Неизвестная ошибка'), + indicator: 'red', + }); + } + }, }); const form = ref({ @@ -736,6 +820,7 @@ async function saveProfile() { } editMode.value = false; + schoolProfileNotFound.value = false; if (window.frappe && window.frappe.msgprint) window.frappe.msgprint('Профиль сохранён'); console.log('[DEBUG] Профиль успешно сохранён'); } catch (e) { @@ -825,7 +910,7 @@ watch( () => schoolProfile.data, (newData, oldData) => { console.log('[DEBUG] Изменение schoolProfile.data:', { old: oldData, new: newData }); - if (newData && !editMode.value) { + if (newData && !editMode.value && !schoolProfileNotFound.value) { console.log('[DEBUG] Заполнение формы из schoolProfile'); fillFormFromProfile(); }