Skip to content

Commit

Permalink
fix frontend
Browse files Browse the repository at this point in the history
  • Loading branch information
Alikohd committed Dec 20, 2024
1 parent b2702fd commit ae6fd1c
Show file tree
Hide file tree
Showing 4 changed files with 107 additions and 9 deletions.
88 changes: 88 additions & 0 deletions frontend/src/features/sidebar/ui/admin/UsersSection.vue
Original file line number Diff line number Diff line change
@@ -1,6 +1,94 @@
<template>
<div v-loading="isLoading">
<el-container v-if="!userInfoSectionClicked" direction="vertical" class="user-cards" style="gap: 15px;">
<!-- Кнопка для открытия/закрытия фильтров -->
<el-button @click="toggleFilters">
{{ isFilterOpened ? 'Закрыть фильтрацию и поиск' : 'Открыть фильтрацию и поиск' }}
</el-button>
<!-- Фильтрация и сортировка -->
<el-row v-if="isFilterOpened" style="margin-bottom: 20px; gap: 15px;" type="flex" justify="start">
<!-- Фильтр по имени -->
<el-col :span="6">
<el-input v-model="filters.name" placeholder="Фильтр по имени" clearable />
</el-col>

<!-- Фильтр по фамилии -->
<el-col :span="6">
<el-input v-model="filters.surname" placeholder="Фильтр по фамилии" clearable />
</el-col>

<!-- Фильтр по Email -->
<el-col :span="6">
<el-input v-model="filters.email" placeholder="Фильтр по Email" clearable />
</el-col>

<!-- Фильтр по телефону -->
<el-col :span="6">
<el-input v-model="filters.phoneNumber" placeholder="Фильтр по телефону" clearable />
</el-col>

<!-- Фильтр по ролям -->
<el-col :span="6">
<el-select v-model="filters.roles" placeholder="Фильтр по ролям" style="width: 100%;" multiple clearable>
<el-option label="Администратор" value="ROLE_ADMIN" />
<el-option label="Тренер" value="ROLE_TRAINER" />
<el-option label="Клиент" value="ROLE_USER" />
<!-- Добавьте другие роли по необходимости -->
</el-select>
</el-col>

<!-- Фильтр по полу -->
<el-col :span="6">
<el-select v-model="filters.gender" placeholder="Фильтр по полу" style="width: 100%;" clearable>
<el-option label="Мужчина" value="MALE" />
<el-option label="Женщина" value="FEMALE" />
<el-option label="Не указано" value="" />
</el-select>
</el-col>

<el-col>
<el-date-picker
v-model="filters.createdAt"
type="daterange"
range-separator="до"
start-placeholder="Начало"
end-placeholder="Конец"
format="DD.MM.YYYY"
clearable
/>
</el-col>

<!-- Фильтр по комментариям -->
<el-col :span="6">
<el-input v-model="filters.comment" placeholder="Фильтр по комментариям" clearable />
</el-col>

<!-- Сортировка по полям -->
<el-col :span="6">
<el-select v-model="sortBy" placeholder="Сортировать по" style="width: 100%;">
<el-option label="Имя" value="name" />
<el-option label="Фамилия" value="surname" />
<el-option label="Email" value="email" />
<el-option label="Телефон" value="phoneNumber" />
<el-option label="Роль" value="roles" />
<el-option label="Пол" value="gender" />
<el-option label="Комментарий" value="comment" />
</el-select>
</el-col>

<el-col :span="6">
<el-select v-model="sortOrder" placeholder="Порядок" style="width: 100%;">
<el-option label="По возрастанию" value="asc" />
<el-option label="По убыванию" value="desc" />
</el-select>
</el-col>

<!-- Кнопка сброса фильтров -->
<el-col :span="6">
<el-button type="primary" @click="resetFilters">Сбросить фильтры</el-button>
</el-col>
</el-row>
<spacer></spacer>
<!-- Карточки пользователей -->
<el-card v-for="user in filteredSortedUsers" :key="user.id" shadow="hover">
<el-container style="display: grid; grid-template-columns: 1fr auto">
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -76,15 +76,23 @@
<el-text type="primary">Дата окончания:</el-text> {{ formatDate(subscription.endDate) }}
</p>
<p>
<el-text type="primary">Оставшиеся дни:</el-text> {{ subscription.restDays }}
<el-text type="primary">
Оставшиеся дни:
</el-text>
{{ subscription.restDays >= 0 ? subscription.restDays : 'Истек' }}
</p>
<div style="display: flex; gap: 10px; margin-top: 15px">
<el-button @click="openExtendForm(subscription)" type="primary">
Продлить
</el-button>
<el-button @click="toggleFreeze" type="danger">
Заморозить
<el-button
v-if="subscription.status !== 'INACTIVE'"
@click="toggleFreeze"
type="danger"
>
{{ subscription.status === 'FREEZE' ? 'Разморозить' : 'Заморозить' }}
</el-button>

</div>
<!-- Форма продления -->
<el-card
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,7 @@ function formatStatistics(data: any) {
{ period: 'Сегодня', value: data.profitStatistics.today },
{ period: 'На этой неделе', value: data.profitStatistics.this_week },
{ period: 'В этом месяце', value: data.profitStatistics.this_month },
{ period: 'В прошлых месяцах', value: data.previous_months_profit.total || 0 }
{ period: 'В этом году', value: data.previous_months_profit.total || 0 }
];
}
Expand Down
12 changes: 7 additions & 5 deletions frontend/src/features/sidebar/ui/trainer/TrainReportsSection.vue
Original file line number Diff line number Diff line change
Expand Up @@ -144,13 +144,14 @@ const fetchStatistics = () => {
requestBody.dateRangeTo = dayjs(filters.value.dataRanges[1]).toISOString();
}
axiosInstance.post(`/trainers/${userInfo.value?.id}/statistics/trainings`, requestBody)
axiosInstance
.get(`/trainers/${userInfo.value?.id}/statistics/trainings`, {
params: { ...requestBody }
})
.then((res) => {
// Предполагается, что API возвращает данные в формате:
// { count: number, data: Array<{ date: string, time: string, clientCount: number, profit: number }> }
const data = res.data;
total.value = data.count;
statistics.value = data.data;
statistics.value = data.content; // Извлечение данных для таблицы
total.value = data.totalElements; // Установка общего количества элементов
})
.catch((error) => {
console.error('Ошибка при загрузке статистики:', error);
Expand All @@ -162,6 +163,7 @@ const fetchStatistics = () => {
});
};
// Обработка изменения страницы
const handlePageChange = (newPage: number) => {
currentPage.value = newPage;
Expand Down

0 comments on commit ae6fd1c

Please sign in to comment.