From c812273f1b4a2ce869cec91944c4926022a7ac37 Mon Sep 17 00:00:00 2001 From: Arigii Date: Sat, 31 May 2025 17:35:20 +0500 Subject: [PATCH] =?UTF-8?q?=D1=83=D0=B1=D1=80=D0=B0=D0=BB=20=D0=BF=D0=BE?= =?UTF-8?q?=D0=BA=D0=B0=20=D0=BD=D0=B5=D0=BD=D1=83=D0=B6=D0=BD=D1=83=D1=8E?= =?UTF-8?q?=20=D0=BC=D0=BE=D0=B4=D1=83=D0=BB=D1=8C=D0=BD=D0=BE=D1=81=D1=82?= =?UTF-8?q?=D1=8C,=20=D0=B8=D0=B7=D0=BC=D0=B5=D0=BD=D0=B8=D0=BB=20=D0=B3?= =?UTF-8?q?=D0=BB=D0=B0=D0=B2=D0=BD=D1=83=D1=8E=20=D1=81=D1=82=D1=80=D0=B0?= =?UTF-8?q?=D0=BD=D0=B8=D1=86=D1=83,=20=D0=BB=D0=BE=D0=B3=D0=B8=D0=BD=20?= =?UTF-8?q?=D0=B8=20=D0=B0=D0=B4=D0=BC=D0=B8=D0=BD=D0=BA=D1=83?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- WEB/src/App.vue | 15 +- WEB/src/components/SharedDialogWrapper.vue | 26 -- WEB/src/components/dialogs/ContestDialog.vue | 37 -- WEB/src/components/dialogs/ProjectDialog.vue | 36 -- WEB/src/components/dialogs/TeamDialog.vue | 37 -- WEB/src/components/dialogs/UserDialog.vue | 36 -- WEB/src/main.js | 13 +- WEB/src/pages/AdminPage.vue | 37 +- WEB/src/pages/HomePage.vue | 347 +++++++++++++++++-- WEB/src/pages/LoginPage.vue | 25 +- 10 files changed, 368 insertions(+), 241 deletions(-) delete mode 100644 WEB/src/components/SharedDialogWrapper.vue delete mode 100644 WEB/src/components/dialogs/ContestDialog.vue delete mode 100644 WEB/src/components/dialogs/ProjectDialog.vue delete mode 100644 WEB/src/components/dialogs/TeamDialog.vue delete mode 100644 WEB/src/components/dialogs/UserDialog.vue diff --git a/WEB/src/App.vue b/WEB/src/App.vue index 9b1015e..e9207a8 100644 --- a/WEB/src/App.vue +++ b/WEB/src/App.vue @@ -1,9 +1,16 @@ + + + - + + + + + diff --git a/WEB/src/components/SharedDialogWrapper.vue b/WEB/src/components/SharedDialogWrapper.vue deleted file mode 100644 index ba28848..0000000 --- a/WEB/src/components/SharedDialogWrapper.vue +++ /dev/null @@ -1,26 +0,0 @@ - - - diff --git a/WEB/src/components/dialogs/ContestDialog.vue b/WEB/src/components/dialogs/ContestDialog.vue deleted file mode 100644 index bfb3c2f..0000000 --- a/WEB/src/components/dialogs/ContestDialog.vue +++ /dev/null @@ -1,37 +0,0 @@ - - - diff --git a/WEB/src/components/dialogs/ProjectDialog.vue b/WEB/src/components/dialogs/ProjectDialog.vue deleted file mode 100644 index e3b1242..0000000 --- a/WEB/src/components/dialogs/ProjectDialog.vue +++ /dev/null @@ -1,36 +0,0 @@ - - - diff --git a/WEB/src/components/dialogs/TeamDialog.vue b/WEB/src/components/dialogs/TeamDialog.vue deleted file mode 100644 index eec20ed..0000000 --- a/WEB/src/components/dialogs/TeamDialog.vue +++ /dev/null @@ -1,37 +0,0 @@ - - - diff --git a/WEB/src/components/dialogs/UserDialog.vue b/WEB/src/components/dialogs/UserDialog.vue deleted file mode 100644 index 9bfc80e..0000000 --- a/WEB/src/components/dialogs/UserDialog.vue +++ /dev/null @@ -1,36 +0,0 @@ - - - diff --git a/WEB/src/main.js b/WEB/src/main.js index a905d72..ccd84a5 100644 --- a/WEB/src/main.js +++ b/WEB/src/main.js @@ -25,7 +25,12 @@ import { QCardActions, QDialog, QIcon, - QSpace + QSpace, + QAvatar, + QTooltip, + QBanner, + QSlideTransition, + Ripple } from 'quasar' @@ -42,7 +47,11 @@ app.use(Quasar, { QInput, QBtn, QForm, QCard, QCardSection, QLayout, QPageContainer, QPage, QTabs, QTab, QTabPanels, QTabPanel, QHeader,QTable, - QSeparator, QCardActions, QDialog, QIcon, QSpace + QSeparator, QCardActions, QDialog, QIcon, QSpace, + QAvatar, QTooltip, QBanner, QSlideTransition + }, + directives: { + Ripple } }) diff --git a/WEB/src/pages/AdminPage.vue b/WEB/src/pages/AdminPage.vue index 22f9df2..de61057 100644 --- a/WEB/src/pages/AdminPage.vue +++ b/WEB/src/pages/AdminPage.vue @@ -24,6 +24,13 @@
+
+ +
-
-
-
+
+ +
+
+ +
@@ -238,10 +256,9 @@ const teamColumns = [ const projects = ref([]) const loadingProjects = ref(false) const projectColumns = [ - { name: 'name', label: 'Название проекта', field: 'name', sortable: true }, - { name: 'summary', label: 'Описание', field: 'summary', sortable: true }, - { name: 'deadline', label: 'Дедлайн', field: 'deadline', sortable: true }, - // добавьте нужные поля + { name: 'title', label: 'Название проекта', field: 'title', sortable: true }, + { name: 'description', label: 'Описание', field: 'description', sortable: true }, + { name: 'repository_url', label: 'Репозиторий', field: 'repository_url', sortable: true }, ] // Общие состояния для диалогов diff --git a/WEB/src/pages/HomePage.vue b/WEB/src/pages/HomePage.vue index 0e81331..0251249 100644 --- a/WEB/src/pages/HomePage.vue +++ b/WEB/src/pages/HomePage.vue @@ -1,46 +1,329 @@ + + - - \ No newline at end of file +.team-logo:hover { + transform: scale(1.1); + box-shadow: 0 0 14px #a287ffaa; +} + +.team-name-card { + border-radius: 20px; + background: #ede9fe; + box-shadow: + 0 8px 24px rgba(124, 58, 237, 0.18), + 0 2px 8px rgba(124, 58, 237, 0.12); + max-width: 900px; +} + +.violet-card { + border-radius: 22px; + background: #ede9fe; + box-shadow: + 0 8px 24px rgba(124, 58, 237, 0.18), + 0 2px 8px rgba(124, 58, 237, 0.12); + transition: box-shadow 0.3s ease, transform 0.3s ease; +} + +.violet-card:hover { + box-shadow: + 0 14px 40px rgba(124, 58, 237, 0.30), + 0 6px 16px rgba(124, 58, 237, 0.20); + transform: translateY(-6px); + cursor: pointer; +} + +.member-card, .contest-card { + min-height: 140px; + padding: 8px 12px; + display: flex; + flex-direction: column; + justify-content: center; +} + +.horizontal-scroll { + display: flex; + overflow-x: auto; + padding-bottom: 6px; + -webkit-overflow-scrolling: touch; +} +.horizontal-scroll::-webkit-scrollbar { + height: 6px; +} +.horizontal-scroll::-webkit-scrollbar-thumb { + background: rgba(124, 58, 237, 0.4); + border-radius: 3px; +} + +.activity-card { + max-width: 920px; + border-radius: 20px; + padding: 16px; +} + +.activity-container { + /* align-items: center; */ +} + +.dates-column { + display: flex; + flex-direction: column; + justify-content: flex-start; + color: #5e35b1; + font-weight: 600; + user-select: none; + font-size: 11px; +} + +.activity-date { + margin-bottom: 4px; + text-align: right; + white-space: nowrap; +} + +.activity-grid { + display: flex; + flex-wrap: nowrap; + overflow-x: auto; + user-select: none; + scrollbar-width: thin; + scrollbar-color: rgba(124, 58, 237, 0.4) transparent; +} +.activity-grid::-webkit-scrollbar { + height: 10px; +} +.activity-grid::-webkit-scrollbar-thumb { + background: rgba(124, 58, 237, 0.4); + border-radius: 5px; +} + +.activity-square { + width: 16px; + height: 16px; + border-radius: 4px; + margin-right: 2px; + box-shadow: 0 0 3px rgba(124, 58, 237, 0.3); + cursor: default; + transition: background-color 0.3s ease; +} + +.commits-list { + background: #f5f3ff; + border-radius: 12px; + padding: 8px 12px; + font-family: 'Courier New', Courier, monospace; + color: #4b0082; + box-shadow: inset 0 0 6px #c7b3f7; +} +.commit-item strong { + color: #7c3aed; +} + diff --git a/WEB/src/pages/LoginPage.vue b/WEB/src/pages/LoginPage.vue index 5ae0083..a849e0d 100644 --- a/WEB/src/pages/LoginPage.vue +++ b/WEB/src/pages/LoginPage.vue @@ -61,20 +61,16 @@ const authorisation = async () => { icon: 'check_circle' }) - console.log('Role ID:', roleId) if (roleId === 1) { - console.log('Переход на /admin') - router.push('/admin') + await router.push('/admin') } else { - console.log('Переход на /') - router.push('/') + await router.push('/') } - if (roleId === 1) { - router.push('/admin') + await router.push('/admin') } else { - router.push('/') + await router.push('/') } } catch (error) { Notify.create({ @@ -230,13 +226,6 @@ const authorisation = async () => { 100% { transform: translateX(calc(-1 * var(--marquee-width, 370px))); } } -.q-input, -.q-field__control, -.q-field__native, -.q-field__inner { - border-radius: 14px !important; -} - .btn-rounded { border-radius: 16px; } @@ -279,12 +268,6 @@ const authorisation = async () => { background: #ede9fe !important; } -.lavender-input .q-field__control, -.lavender-input .q-field__native, -.lavender-input .q-field__inner { - background: #f6f0ff !important; -} - .text-violet-strong { color: #4f046f; }