From ac42a8da7f10c4dec8b85840b234027138e4bc80 Mon Sep 17 00:00:00 2001 From: Arigii Date: Sat, 31 May 2025 11:41:28 +0500 Subject: [PATCH] =?UTF-8?q?=D1=81=D0=B4=D0=B5=D0=BB=D0=B0=D0=BB=20=D0=B2?= =?UTF-8?q?=D0=BA=D0=BB=D0=B0=D0=B4=D0=BA=D1=83=20=D0=BA=D0=BE=D0=BC=D0=B0?= =?UTF-8?q?=D0=BD=D0=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- WEB/src/api/teams/createTeam.js | 23 +++ WEB/src/api/teams/deleteTeam.js | 16 ++ WEB/src/api/teams/updateTeam.js | 20 +- WEB/src/main.js | 5 +- WEB/src/pages/AdminPage.vue | 314 ++++++++++++++++++++------------ 5 files changed, 257 insertions(+), 121 deletions(-) create mode 100644 WEB/src/api/teams/createTeam.js create mode 100644 WEB/src/api/teams/deleteTeam.js diff --git a/WEB/src/api/teams/createTeam.js b/WEB/src/api/teams/createTeam.js new file mode 100644 index 0000000..6f7c837 --- /dev/null +++ b/WEB/src/api/teams/createTeam.js @@ -0,0 +1,23 @@ +import axios from 'axios' +import CONFIG from '@/core/config.js' + +const createTeam = async (team) => { + try { + const token = localStorage.getItem('access_token') // или другой способ + const response = await axios.post( + `${CONFIG.BASE_URL}/teams`, + team, + { + withCredentials: true, + headers: { + Authorization: `Bearer ${token}` + } + } + ) + return response.data + } catch (error) { + throw new Error(error.response?.data?.detail || error.message) + } +} + +export default createTeam diff --git a/WEB/src/api/teams/deleteTeam.js b/WEB/src/api/teams/deleteTeam.js new file mode 100644 index 0000000..4203818 --- /dev/null +++ b/WEB/src/api/teams/deleteTeam.js @@ -0,0 +1,16 @@ +import axios from 'axios' +import CONFIG from '@/core/config.js' + +const deleteTeam = async (teamId) => { + try { + const response = await axios.delete( + `${CONFIG.BASE_URL}/teams/${teamId}`, + { withCredentials: true } + ) + return response.data + } catch (error) { + throw new Error(error.response?.data?.detail || error.message) + } +} + +export default deleteTeam diff --git a/WEB/src/api/teams/updateTeam.js b/WEB/src/api/teams/updateTeam.js index 3cfd514..7a07193 100644 --- a/WEB/src/api/teams/updateTeam.js +++ b/WEB/src/api/teams/updateTeam.js @@ -3,11 +3,25 @@ import CONFIG from '@/core/config.js' const updateTeam = async (team) => { try { + const token = localStorage.getItem('access_token') + + // Убираем id из тела запроса, он идет в URL + const { id, ...teamData } = team + + console.log('Отправляем на сервер:', teamData) + const response = await axios.put( - `${CONFIG.BASE_URL}/teams/${team.id}`, - team, - { withCredentials: true } + `${CONFIG.BASE_URL}/teams/${id}`, + teamData, + { + withCredentials: true, + headers: { + Authorization: `Bearer ${token}` + } + } ) + + console.log('Ответ от сервера:', response.data) return response.data } catch (error) { throw new Error(error.response?.data?.detail || error.message) diff --git a/WEB/src/main.js b/WEB/src/main.js index 31ad124..a905d72 100644 --- a/WEB/src/main.js +++ b/WEB/src/main.js @@ -24,7 +24,8 @@ import { QSeparator, QCardActions, QDialog, - QIcon + QIcon, + QSpace } from 'quasar' @@ -41,7 +42,7 @@ app.use(Quasar, { QInput, QBtn, QForm, QCard, QCardSection, QLayout, QPageContainer, QPage, QTabs, QTab, QTabPanels, QTabPanel, QHeader,QTable, - QSeparator, QCardActions, QDialog, QIcon + QSeparator, QCardActions, QDialog, QIcon, QSpace } }) diff --git a/WEB/src/pages/AdminPage.vue b/WEB/src/pages/AdminPage.vue index e412d94..eefb0f7 100644 --- a/WEB/src/pages/AdminPage.vue +++ b/WEB/src/pages/AdminPage.vue @@ -29,7 +29,7 @@ :rows="users" :columns="userColumns" row-key="id" - @row-click="openEdit('users', $event)" + @row-click="onRowClick" :loading="loadingUsers" dense flat @@ -40,12 +40,22 @@
+ +
+ + +
+ +
@@ -61,7 +72,7 @@ :rows="projects" :columns="projectColumns" row-key="id" - @row-click="openEdit('projects', $event)" + @row-click="onRowClick" :loading="loadingProjects" dense flat @@ -77,7 +88,7 @@ :rows="contests" :columns="contestColumns" row-key="id" - @row-click="openEdit('contests', $event)" + @row-click="onRowClick" :loading="loadingContests" dense flat @@ -92,54 +103,128 @@ -
Редактирование {{ dialogType }}
+
+ + + + + +
-
{{ dialogData }}
+ + + + + + + + + + + + +
+ + + + + +
+