From fff00257193fe96807f195a2a9d8ab82e94208d2 Mon Sep 17 00:00:00 2001 From: KamilM1205 Date: Fri, 2 Jan 2026 23:01:36 +0400 Subject: [PATCH] Fixed team page --- src/lib/services/api.js | 2 +- src/lib/services/teamService.js | 8 +- src/routes/(main)/team/+page.svelte | 1089 ++++++++++++++++++++++++++- src/routes/admin/+page.svelte | 10 +- vite.config.js | 11 +- 5 files changed, 1099 insertions(+), 21 deletions(-) diff --git a/src/lib/services/api.js b/src/lib/services/api.js index 7a710d5..3489fe6 100644 --- a/src/lib/services/api.js +++ b/src/lib/services/api.js @@ -6,7 +6,7 @@ const apiClient = axios.create({ timeout: 10000, headers: { 'Content-Type': 'application/json', - 'Origin': 'localhost:8080' + //'Origin': 'localhost:8080' } }); diff --git a/src/lib/services/teamService.js b/src/lib/services/teamService.js index e90d264..582a762 100644 --- a/src/lib/services/teamService.js +++ b/src/lib/services/teamService.js @@ -4,7 +4,7 @@ export const teamService = { // Получить всех членов команды async getTeamMembers() { try { - const response = await apiClient.get('/team'); + const response = await apiClient.get('/members/'); return response.data; } catch (error) { console.error('Error fetching team members:', error); @@ -27,9 +27,7 @@ export const teamService = { // Получить случайных членов команды для карусели async getRandomMembers(limit = 4) { try { - const response = await apiClient.get('/team/random', { - params: { limit } - }); + const response = await apiClient.get('/members/'); return response.data; } catch (error) { console.error('Error fetching random members:', error); @@ -107,4 +105,4 @@ function getMockTeamMembers() { motto: "Идеального кода не существует, но к нему нужно стремиться" } ]; -} \ No newline at end of file +} diff --git a/src/routes/(main)/team/+page.svelte b/src/routes/(main)/team/+page.svelte index 0ffc9dd..7bdf04a 100644 --- a/src/routes/(main)/team/+page.svelte +++ b/src/routes/(main)/team/+page.svelte @@ -1,12 +1,14 @@ +
@@ -157,11 +167,11 @@
{/each} + -
@@ -170,6 +180,7 @@ ПРОФИЛЬ:
+ {#if isSelected == true }
@@ -189,7 +200,6 @@
- -
{#if $activeTab === 'info'}
@@ -313,6 +322,7 @@ {/if}
+ {/if}
@@ -824,4 +834,1065 @@ padding: 20px; } } - \ No newline at end of file + +--> + + + +
+ + + +
+ +
+ КОМАНДА + {#if $isLoading} + [ЗАГРУЗКА...] + {:else if $hasTeamMembers} + [{$teamMembers.length}] + {/if} +
+ +
+ {#if $isLoading} + +
+
+

Загрузка данных команды...

+
+ + {:else if $error} + +
+
⚠️
+

{$error}

+ +
+ + {:else if !$hasTeamMembers} + +
+
👤
+

Данные команды отсутствуют

+

Попробуйте обновить страницу или проверьте подключение

+
+ + {:else} + +
+
+ {$teamMembers.length} + участников +
+
+ 2023 + год основания +
+
+ 10+ + проектов +
+
+ +
+ {#each $teamMembers as member (member.id || member.username || member_index)} +
selectMember(member)} + > +
+ {member.avatar || '👤'} +
+
+
+ {member.name || 'Без имени'} +
+
+ @{member.username || 'unknown'} +
+
+ {member.role || 'Участник команды'} +
+
+
+ {#if ($selectedMember?.id === member.id) || + ($selectedMember?.username === member.username) || + (!$selectedMember && member_index === 0)} + + {:else} + + {/if} +
+
+ {/each} +
+ {/if} +
+
+
+ + + + +
+ +
+ + ПРОФИЛЬ: + {#if $safeSelectedMember} + + {$safeSelectedMember.name || $safeSelectedMember.username || 'Неизвестный'} + + {/if} +
+ +
+ {#if $isLoading} + +
+
+

Загрузка профиля...

+
+ + {:else if $error} + +
+

Не удалось загрузить информацию о участнике

+
+ + {:else if !$safeSelectedMember || !$hasTeamMembers} + +
+
👈
+

Выберите участника команды

+

Нажмите на участника в списке слева, чтобы увидеть детальную информацию

+
+ + {:else} + +
+
+
+ {$safeSelectedMember.avatar || '👤'} +
+
+ {$safeSelectedMember.role || 'Участник команды'} +
+
+ +
+

+ {$safeSelectedMember.name || + $safeSelectedMember.username || + 'Неизвестный участник'} +

+
+ {$safeSelectedMember.specialty || 'Специализация не указана'} +
+
+ "{$safeSelectedMember.motto || 'Без девиза, просто работаю'}" +
+
+
+ + + + + +
+ {#if $activeTab === 'info'} +
+
+

👤 О себе

+

+ {$safeSelectedMember.description || + 'Описание отсутствует. Этот участник предпочитает рассказывать о себе через свою работу.'} +

+
+ +
+
+
👤
+
+
Username
+
+ @{$safeSelectedMember.username || 'unknown'} +
+
+
+ +
+
📅
+
+
В команде с
+
+ {$safeSelectedMember.joinDate || '2023'} +
+
+
+ +
+
🎯
+
+
Специализация
+
+ {$safeSelectedMember.specialty || 'Не указана'} +
+
+
+ +
+
💭
+
+
Девиз
+
+ "{$safeSelectedMember.motto || 'Без девиза'}" +
+
+
+
+
+ + {:else if $activeTab === 'skills'} +
+

Технические навыки

+ + {#if $safeSelectedMember.skills && $safeSelectedMember.skills.length > 0} +
+ {#each $safeSelectedMember.skills as skill} +
+ {skill} +
+
+
+
+ {/each} +
+ +
+

Сильные стороны

+
    +
  • Глубокие знания в своей области
  • +
  • Способность быстро обучаться новым технологиям
  • +
  • Внимание к деталям и качеству
  • +
  • Командная работа и коммуникация
  • +
+
+ {:else} +
+

Навыки не указаны. Этот участник - тайна для всех!

+
+ {/if} +
+ + {:else if $activeTab === 'projects'} +
+

Ключевые проекты

+ + {#if $safeSelectedMember.projects && $safeSelectedMember.projects.length > 0} +
+ {#each $safeSelectedMember.projects as project} +
+
📁
+
+

{project}

+

+ Активный проект под руководством + {$safeSelectedMember.name || $safeSelectedMember.username} +

+
+ В разработке + + Роль: {$safeSelectedMember.role || 'Участник'} + +
+
+
+ {/each} +
+ +
+

Вклад в команду

+

+ {$safeSelectedMember.name || 'Этот участник'} играет ключевую роль + в успехе наших проектов, привнося экспертизу в области + {($safeSelectedMember.specialty || 'разработки').toLowerCase()}. +

+
+ {:else} +
+

Проекты не указаны. Возможно, этот участник работает над чем-то секретным!

+
+ {/if} +
+ {/if} +
+ {/if} +
+
+
+ +
+
+ + diff --git a/src/routes/admin/+page.svelte b/src/routes/admin/+page.svelte index 9138981..942e74d 100644 --- a/src/routes/admin/+page.svelte +++ b/src/routes/admin/+page.svelte @@ -5,10 +5,10 @@ export const teamService = { try { const queryParams = new URLSearchParams(); - if (params.limit) queryParams.append('limit', params.limit); - if (params.page) queryParams.append('page', params.page); + // if (params.limit) queryParams.append('limit', params.limit); + // if (params.page) queryParams.append('page', params.page); - const url = `/team?${queryParams.toString()}`; + const url = `/members`; return await api.get(url); } catch (error) { console.error('Error fetching team:', error); @@ -18,10 +18,10 @@ export const teamService = { getTeamMember: async (id) => { try { - return await api.get(`/team?id=${id}`); + return await api.get(`/team/${id}`); } catch (error) { console.error('Error fetching team member:', error); throw error; } } -}; \ No newline at end of file +}; diff --git a/vite.config.js b/vite.config.js index bbf8c7d..dd76c3b 100644 --- a/vite.config.js +++ b/vite.config.js @@ -2,5 +2,14 @@ import { sveltekit } from '@sveltejs/kit/vite'; import { defineConfig } from 'vite'; export default defineConfig({ - plugins: [sveltekit()] + plugins: [sveltekit()], + server: { + proxy: { + '/api': { + target: 'http://localhost:8080', + changeOrigin: true, + secure: false, + } + } + } });