From d83046dcf5ef5390faf1733776314c2d52be949e Mon Sep 17 00:00:00 2001 From: Yro Boros Date: Tue, 3 Mar 2026 15:58:08 +1000 Subject: [PATCH] =?UTF-8?q?=D1=81=D0=B4=D0=B5=D0=BB=D0=B0=D0=BD=20=D0=BF?= =?UTF-8?q?=D0=B5=D1=80=D0=B5=D0=BA=D0=BB=D1=8E=D1=87=D0=B0=D1=82=D0=B5?= =?UTF-8?q?=D0=BB=D1=8C=20=D1=82=D0=B5=D0=BC=D1=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/App.vue | 59 +++++++++++++++++-------- src/assets/main.css | 22 +++++----- src/components/My_naw.vue | 46 ++++++++++++++++++++ src/components/Stat.vue | 62 +++++++++++++++++++++----- src/components/Status.vue | 34 +++++++++++++++ src/components/ThemeToggle.vue | 79 ++++++++++++++++++++++++++++++++++ src/components/Time.vue | 26 +++++------ 7 files changed, 276 insertions(+), 52 deletions(-) create mode 100644 src/components/Status.vue create mode 100644 src/components/ThemeToggle.vue diff --git a/src/App.vue b/src/App.vue index b1f3af1..a043328 100644 --- a/src/App.vue +++ b/src/App.vue @@ -3,53 +3,78 @@ import { onMounted, ref, watch } from "vue"; import My_naw from "./components/My_naw.vue"; import Section from "./components/Section.vue"; import Setings from "./components/Setings.vue"; +import Status from "./components/Status.vue"; import Authe from "./components/Authe.vue"; import axios from "axios"; + +// Инициализация темы при загрузке приложения +onMounted(() => { + const savedTheme = localStorage.getItem("theme"); + if (savedTheme === "dark") { + document.documentElement.classList.add("dark"); + } else if (savedTheme === "light") { + document.documentElement.classList.remove("dark"); + } else { + // Проверяем системные настройки + if (window.matchMedia("(prefers-color-scheme: dark)").matches) { + document.documentElement.classList.add("dark"); + } + } +}); + // Состояния страницы и данные для входа const currentPage = ref("admin-panel"); const items = ref([]); +const items_status = ref([]); // Универсальная функция для получения данных const fetchData = async (url, targetRef) => { try { - const { data } = await axios.get(url) - targetRef.value = data + const { data } = await axios.get(url); + targetRef.value = data; } catch (err) { - console.error(`Ошибка при получении данных с ${url}:`, err) + console.error(`Ошибка при получении данных с ${url}:`, err); } -} - +}; // Обертки для вызова -const loadItems = () => fetchData("http://45.129.78.228:8002/records_all", items) //http://127.0.0.1:8002/records_all http://45.129.78.228:8002/records_all +const loadItems = () => + fetchData("http://45.129.78.228:8002/records_all", items); //http://127.0.0.1:8002/records_all http://45.129.78.228:8002/records_all +const loadItems_status = () => + fetchData("http://127.0.0.1:8002/records_all_status", items_status); onMounted(() => { - loadItems() -}) + (loadItems(), loadItems_status()); +}); -watch(items, loadItems) +watch(items, loadItems); +watch(items_status, loadItems_status); function handleUpdate(newValue) { currentPage.value = newValue; // изменение значения в родителе } - diff --git a/src/assets/main.css b/src/assets/main.css index b2b3ede..c52ef8d 100644 --- a/src/assets/main.css +++ b/src/assets/main.css @@ -1,16 +1,14 @@ @import "tailwindcss"; -/* Для темной темы */ -@media (prefers-color-scheme: dark) { - body { - background: #111; - /* другие стили для темной темы */ - } +/* Включение dark mode через класс в Tailwind v4 */ +@custom-variant dark (&:where(.dark, .dark *)); + +/* Базовые стили для светлой темы */ +body { + background-color: #f3f4f6; } -/* Для светлой темы (по умолчанию или явно) */ -@media (prefers-color-scheme: light) { - body { - background: #ccc; /* или любой другой цвет */ - } -} \ No newline at end of file +/* Базовые стили для темной темы */ +.dark body { + background-color: #111827; +} diff --git a/src/components/My_naw.vue b/src/components/My_naw.vue index 63a26a2..bf322ce 100644 --- a/src/components/My_naw.vue +++ b/src/components/My_naw.vue @@ -1,5 +1,8 @@ \ No newline at end of file diff --git a/src/components/Stat.vue b/src/components/Stat.vue index d03384d..8c2a6f6 100644 --- a/src/components/Stat.vue +++ b/src/components/Stat.vue @@ -38,7 +38,24 @@ const viewed_b = async () => { { params: { url: props.url, - viewed: true, + viewed: !props.viewed, + }, + }, + ); + } catch (err) { + console.log(err); + } +}; + +const status_b = async () => { + try { + const response = await axios.post( + "http://127.0.0.1:8002/update_status_status", + null, + { + params: { + url: props.url, + status: !props.status, }, }, ); @@ -55,7 +72,11 @@ const download = async () => { }, responseType: "blob", }); - const blobUrl = window.URL.createObjectURL(new Blob([rez.data], { type: "application/vnd.openxmlformats-officedocument.wordprocessingml.document" })); + const blobUrl = window.URL.createObjectURL( + new Blob([rez.data], { + type: "application/vnd.openxmlformats-officedocument.wordprocessingml.document", + }), + ); const link = document.createElement("a"); // Принудительно добавляем .docx к имени файла let filename = props.title + ".docx"; @@ -102,7 +123,7 @@ onBeforeUnmount(() => {

{{ article_date }}

@@ -131,14 +152,35 @@ onBeforeUnmount(() => {
+
+ + + +
-