From b8369c53c3d6119e9066414076ab39df21a37f3d Mon Sep 17 00:00:00 2001 From: Professional Date: Mon, 26 May 2025 15:37:26 +0700 Subject: [PATCH] =?UTF-8?q?=D1=84=D0=B8=D0=BA=D1=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/views/admin/AdminConversationDetail.vue | 34 +++++++----------- src/views/admin/AdminConversations.vue | 39 ++++++++++----------- src/views/admin/AdminReports.vue | 1 + 3 files changed, 31 insertions(+), 43 deletions(-) diff --git a/src/views/admin/AdminConversationDetail.vue b/src/views/admin/AdminConversationDetail.vue index 338c394..f5b8a54 100644 --- a/src/views/admin/AdminConversationDetail.vue +++ b/src/views/admin/AdminConversationDetail.vue @@ -483,6 +483,7 @@ h3 i { border-radius: 12px; box-shadow: 0 2px 8px rgba(0,0,0,0.08); padding: 1.5rem; + overflow-x: hidden; /* Добавляем скрытие горизонтального переполнения */ } .participants-list { @@ -490,6 +491,7 @@ h3 i { grid-template-columns: repeat(auto-fit, minmax(250px, 1fr)); gap: 1.5rem; max-width: 100%; + overflow: hidden; /* Скрываем переполнение */ } .participant-card { @@ -501,11 +503,8 @@ h3 i { border-radius: 10px; background-color: #f9f9f9; transition: all 0.2s ease; -} - -.participant-card:hover { - box-shadow: 0 4px 12px rgba(0,0,0,0.08); - transform: translateY(-2px); + max-width: 100%; /* Ограничиваем ширину */ + overflow: hidden; /* Скрываем переполнение */ } .participant-photo { @@ -517,24 +516,11 @@ h3 i { box-shadow: 0 2px 6px rgba(0,0,0,0.15); } -.participant-photo img { - width: 100%; - height: 100%; - object-fit: cover; -} - -.participant-photo.placeholder { - display: flex; - align-items: center; - justify-content: center; - background: linear-gradient(135deg, #ff3e68, #ff5252); - color: white; - font-weight: bold; -} - .participant-info { flex: 1; - min-width: 0; + min-width: 0; /* Важно для текста с переполнением */ + width: 100%; /* Занимает всё доступное пространство */ + overflow: hidden; /* Скрываем переполнение */ } .participant-name { @@ -545,7 +531,7 @@ h3 i { white-space: nowrap; overflow: hidden; text-overflow: ellipsis; - max-width: calc(100% - 20px); /* Оставляем немного места для отступа */ + max-width: 100%; /* Изменяем с calc(100% - 20px) на 100% */ } .participant-email { @@ -555,6 +541,7 @@ h3 i { white-space: nowrap; overflow: hidden; text-overflow: ellipsis; + max-width: 100%; /* Добавляем максимальную ширину */ } .btn { @@ -568,11 +555,14 @@ h3 i { align-items: center; gap: 0.5rem; transition: all 0.2s ease; + max-width: 100%; /* Ограничиваем ширину кнопки */ + overflow: hidden; /* Скрываем переполнение */ } .user-btn { background-color: rgba(25, 118, 210, 0.1); color: #1976d2; + width: 100%; /* Кнопка занимает всю доступную ширину */ } .user-btn:hover { diff --git a/src/views/admin/AdminConversations.vue b/src/views/admin/AdminConversations.vue index 4528ff1..502c7eb 100644 --- a/src/views/admin/AdminConversations.vue +++ b/src/views/admin/AdminConversations.vue @@ -7,8 +7,8 @@ type="text" v-model="searchUserId" placeholder="Поиск диалогов по ID пользователя..." + @input="debouncedSearch" /> -
@@ -144,6 +144,22 @@ export default { pages: 0 }); + // Таймер для debounce поиска + let searchTimer = null; + + const debouncedSearch = () => { + // Сбрасываем предыдущий таймер + if (searchTimer) { + clearTimeout(searchTimer); + } + + // Устанавливаем новый таймер (задержка 500мс) + searchTimer = setTimeout(() => { + currentPage.value = 1; // При новом поиске сбрасываем на первую страницу + loadConversations(); + }, 500); + }; + const loadConversations = async () => { loading.value = true; error.value = null; @@ -231,6 +247,7 @@ export default { currentPage, pagination, loadConversations, + debouncedSearch, // Добавляем новую функцию в return shortenId, formatDate, truncateText, @@ -270,7 +287,6 @@ h2::before { .search-bar { display: flex; - gap: 0.75rem; margin-bottom: 1.5rem; } @@ -281,20 +297,6 @@ h2::before { border-radius: 4px; } -.search-btn { - padding: 0 1.5rem; - background-color: #ff3e68; - color: white; - border: none; - border-radius: 4px; - cursor: pointer; - font-weight: 500; -} - -.search-btn:hover { - background-color: #e9365e; -} - .loading-indicator { display: flex; flex-direction: column; @@ -593,11 +595,6 @@ h2::before { gap: 0.5rem; } - .search-btn { - width: 100%; - padding: 0.75rem; - } - .pagination { flex-wrap: wrap; gap: 0.5rem; diff --git a/src/views/admin/AdminReports.vue b/src/views/admin/AdminReports.vue index cec5ea6..2bb8dd6 100644 --- a/src/views/admin/AdminReports.vue +++ b/src/views/admin/AdminReports.vue @@ -328,6 +328,7 @@ h2 { position: relative; padding-left: 0.5rem; display: inline-block; + font-size: 1.75rem; /* Добавлено свойство размера шрифта */ } h2::before {