@@ -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();
}