From 95bf1a852e90e2d0c79ca724afb33f2033ce3841 Mon Sep 17 00:00:00 2001 From: mofeng-git Date: Thu, 26 Mar 2026 22:45:28 +0800 Subject: [PATCH] =?UTF-8?q?feat(web):=20=E7=99=BB=E5=BD=95=E9=A1=B5?= =?UTF-8?q?=E6=94=B9=E4=B8=BA=E5=BC=95=E5=AF=BC=E5=8D=A1=E7=89=87=E6=A0=B7?= =?UTF-8?q?=E5=BC=8F=E5=B9=B6=E5=A2=9E=E5=8A=A0=E8=AF=AD=E8=A8=80=E5=88=87?= =?UTF-8?q?=E6=8D=A2=E6=8C=89=E9=92=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- web/src/views/LoginView.vue | 156 ++++++++++++++++++++++-------------- 1 file changed, 96 insertions(+), 60 deletions(-) diff --git a/web/src/views/LoginView.vue b/web/src/views/LoginView.vue index 720118b6..40ec0d99 100644 --- a/web/src/views/LoginView.vue +++ b/web/src/views/LoginView.vue @@ -3,19 +3,41 @@ import { ref } from 'vue' import { useRouter, useRoute } from 'vue-router' import { useI18n } from 'vue-i18n' import { useAuthStore } from '@/stores/auth' -import { Monitor, Lock, Eye, EyeOff, User } from 'lucide-vue-next' +import { + supportedLanguages, + setLanguage, + getCurrentLanguage, + type SupportedLocale, +} from '@/i18n' +import { Button } from '@/components/ui/button' +import { Input } from '@/components/ui/input' +import { Label } from '@/components/ui/label' +import { Card, CardContent, CardDescription, CardHeader, CardTitle } from '@/components/ui/card' +import { + DropdownMenu, + DropdownMenuContent, + DropdownMenuItem, + DropdownMenuTrigger, +} from '@/components/ui/dropdown-menu' +import { Monitor, Lock, Eye, EyeOff, User, Languages } from 'lucide-vue-next' const { t } = useI18n() const router = useRouter() const route = useRoute() const authStore = useAuthStore() +const currentLanguage = ref(getCurrentLanguage()) const username = ref('') const password = ref('') const showPassword = ref(false) const loading = ref(false) const error = ref('') +function switchLanguage(lang: SupportedLocale) { + currentLanguage.value = lang + setLanguage(lang) +} + async function handleLogin() { if (!username.value) { error.value = t('auth.enterUsername') @@ -40,76 +62,90 @@ async function handleLogin() { loading.value = false } - -function handleKeydown(e: KeyboardEvent) { - if (e.key === 'Enter') { - handleLogin() - } -}