From d2422176868e6988b1854fcb3cfd1cd02402eb38 Mon Sep 17 00:00:00 2001 From: bakaECC <1064071566@qq.com> Date: Wed, 10 Dec 2025 18:06:31 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BC=98=E5=8C=96=E7=99=BB=E5=BD=95=E9=A1=B5?= =?UTF-8?q?=E6=A0=B7=E5=BC=8F=E5=B8=83=E5=B1=80=E5=92=8C=E5=8A=A8=E7=94=BB?= =?UTF-8?q?=E6=95=88=E6=9E=9C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/views/login/index.vue | 248 +++++++++++++++++++++++--------------- 1 file changed, 150 insertions(+), 98 deletions(-) diff --git a/src/views/login/index.vue b/src/views/login/index.vue index fc4220a..b7094eb 100644 --- a/src/views/login/index.vue +++ b/src/views/login/index.vue @@ -19,14 +19,6 @@
-
- -

凌能空间 · AI大模型 应用系统

-

- 面向航天任务的智能中台,支持知识与模型的协同编排。 -

-
-
@@ -249,17 +241,47 @@ export default defineComponent({ width: 100%; min-height: 100vh; overflow: hidden; - padding: 64px 24px; + padding: 72px 28px; display: flex; align-items: center; - background: radial-gradient(circle at 15% 20%, rgba(120, 190, 255, 0.2), transparent 25%), - radial-gradient(circle at 80% 10%, rgba(132, 165, 255, 0.16), transparent 22%), - linear-gradient(135deg, #f5f8ff 0%, #eef4ff 45%, #e9f3ff 100%); + background: radial-gradient(circle at 18% 22%, rgba(104, 173, 255, 0.2), transparent 30%), + radial-gradient(circle at 80% 14%, rgba(139, 92, 246, 0.12), transparent 26%), + radial-gradient(circle at 28% 82%, rgba(94, 234, 212, 0.12), transparent 24%), + linear-gradient(145deg, #f5f7fb 0%, #edf0f6 45%, #e7ebf2 100%); + + &::before, + &::after { + content: ''; + position: absolute; + inset: 0; + pointer-events: none; + mix-blend-mode: soft-light; + background: repeating-linear-gradient( + 90deg, + rgba(255, 255, 255, 0.04) 0, + rgba(255, 255, 255, 0.04) 1px, + transparent 1px, + transparent 22px + ), + repeating-linear-gradient( + 0deg, + rgba(255, 255, 255, 0.04) 0, + rgba(255, 255, 255, 0.04) 1px, + transparent 1px, + transparent 22px + ); + } + + &::after { + background: radial-gradient(circle at 40% 30%, rgba(255, 255, 255, 0.08), transparent 35%), + radial-gradient(circle at 65% 70%, rgba(255, 255, 255, 0.08), transparent 30%); + filter: blur(36px); + } // Blob 容器 .blob-container { position: absolute; - inset: 0; + inset: -12%; overflow: hidden; pointer-events: none; z-index: 0; @@ -268,8 +290,8 @@ export default defineComponent({ .blob { position: absolute; border-radius: 50%; - filter: blur(90px); - opacity: 0.55; + filter: blur(100px); + opacity: 0.46; pointer-events: none; mix-blend-mode: screen; } @@ -277,25 +299,25 @@ export default defineComponent({ .blob-1 { width: 520px; height: 520px; - background: linear-gradient(135deg, rgba(93, 156, 255, 0.22), rgba(141, 198, 255, 0.26)); - top: -160px; - right: -180px; + background: linear-gradient(135deg, rgba(93, 156, 255, 0.32), rgba(141, 198, 255, 0.24)); + top: -140px; + right: -160px; animation: blob-float 18s ease-in-out infinite; } .blob-2 { - width: 480px; - height: 480px; - background: linear-gradient(135deg, rgba(126, 211, 180, 0.2), rgba(121, 189, 255, 0.24)); - bottom: -150px; - left: -140px; + width: 500px; + height: 500px; + background: linear-gradient(135deg, rgba(126, 211, 180, 0.26), rgba(121, 189, 255, 0.22)); + bottom: -140px; + left: -120px; animation: blob-float-2 22s ease-in-out infinite; } .blob-3 { width: 420px; height: 420px; - background: linear-gradient(135deg, rgba(255, 214, 165, 0.24), rgba(161, 196, 253, 0.22)); + background: linear-gradient(135deg, rgba(255, 214, 165, 0.28), rgba(161, 196, 253, 0.22)); top: 48%; left: 50%; transform: translate(-50%, -50%); @@ -305,26 +327,11 @@ export default defineComponent({ .shell { position: relative; z-index: 10; - width: min(1200px, 100%); + width: min(520px, 100%); margin: 0 auto; - display: grid; - grid-template-columns: 1.2fr 1fr; - gap: 32px; - align-items: stretch; - } - - .brand-card { - padding: 32px; - border-radius: 24px; - background: linear-gradient(160deg, rgba(255, 255, 255, 0.9) 0%, rgba(255, 255, 255, 0.78) 100%); - border: 1px solid #e3eaf5; - box-shadow: 0 20px 60px rgba(47, 85, 151, 0.12), inset 0 1px 0 rgba(255, 255, 255, 0.9); - backdrop-filter: blur(16px); - -webkit-backdrop-filter: blur(16px); - color: #1f2b3d; display: flex; - flex-direction: column; - gap: 16px; + align-items: center; + justify-content: center; } .brand-chip { @@ -342,68 +349,78 @@ export default defineComponent({ .headline { margin: 0; - font-size: 32px; - font-weight: 800; - color: #0f172a; - line-height: 1.2; - text-shadow: none; + font-size: 0; } .subline { - margin: 0; - font-size: 15px; - color: #4b5563; - line-height: 1.7; + display: none; } .form { position: relative; z-index: 10; width: 100%; - padding: 36px 32px; + padding: 40px 36px; box-sizing: border-box; - background: #ffffff; - border: 1px solid #d7e0ef; - border-radius: 24px; + background: linear-gradient(180deg, rgba(255, 255, 255, 0.82) 0%, rgba(255, 255, 255, 0.94) 100%); + border: 1px solid rgba(120, 149, 203, 0.18); + border-radius: 26px; box-shadow: - 0 18px 60px rgba(0, 0, 0, 0.25), - inset 0 1px 0 rgba(255, 255, 255, 0.4); - transition: all 0.3s ease; + 0 24px 80px rgba(88, 112, 156, 0.22), + inset 0 1px 0 rgba(255, 255, 255, 0.8); + transition: all 0.35s ease; + overflow: hidden; + backdrop-filter: blur(10px); + -webkit-backdrop-filter: blur(10px); + + &::before { + content: ''; + position: absolute; + inset: -36%; + background: conic-gradient(from 140deg, rgba(99, 102, 241, 0.12), rgba(34, 211, 238, 0.16), rgba(45, 212, 191, 0.12), rgba(99, 102, 241, 0.12)); + transform: translate3d(0, 0, 0); + filter: blur(38px); + z-index: 0; + animation: form-glow 12s ease-in-out infinite; + opacity: 0.8; + } &:hover { + transform: translateY(-2px); box-shadow: - 0 22px 70px rgba(15, 23, 42, 0.16), - inset 0 1px 0 rgba(255, 255, 255, 0.95); + 0 28px 96px rgba(88, 112, 156, 0.26), + inset 0 1px 0 rgba(255, 255, 255, 0.88); } :deep { .el-input__wrapper { - background: #f3f6fb; - border: 1px solid #d7e0ef; - border-radius: 12px; + background: rgba(255, 255, 255, 0.72); + border: 1px solid rgba(120, 149, 203, 0.25); + border-radius: 14px; box-shadow: - 0 2px 10px rgba(0, 0, 0, 0.04), - inset 0 1px 0 rgba(255, 255, 255, 0.95); + 0 6px 18px rgba(36, 79, 140, 0.12), + inset 0 1px 0 rgba(255, 255, 255, 0.8); transition: all 0.25s ease; + backdrop-filter: blur(8px); &:hover { - background: #ffffff; - border-color: #c2cfe4; + border-color: rgba(120, 149, 203, 0.36); + background: rgba(255, 255, 255, 0.86); } &.is-focus { - background: #ffffff; - border-color: #4f8dfd; + background: rgba(255, 255, 255, 0.96); + border-color: #6aa6ff; box-shadow: - 0 6px 18px rgba(79, 141, 253, 0.18), - inset 0 1px 0 rgba(255, 255, 255, 0.95), - 0 0 0 3px rgba(79, 141, 253, 0.16); + 0 12px 28px rgba(106, 166, 255, 0.3), + inset 0 1px 0 rgba(255, 255, 255, 0.94), + 0 0 0 4px rgba(106, 166, 255, 0.22); } } .el-input__inner { color: #0f172a; - font-weight: 500; + font-weight: 600; &::placeholder { color: #6b7280; @@ -427,32 +444,34 @@ export default defineComponent({ } .form-meta { + position: relative; + z-index: 1; display: flex; justify-content: space-between; align-items: flex-start; gap: 12px; - margin-bottom: 16px; + margin-bottom: 18px; } .eyebrow { margin: 0; - color: #6b7280; + color: #6b7280; font-size: 12px; - letter-spacing: 0.06em; + letter-spacing: 0.08em; text-transform: uppercase; } .title { - color: #0f172a; + color: #0f172a; font-size: 26px; font-weight: 800; margin: 4px 0 6px; - text-shadow: 0 2px 8px rgba(0, 0, 0, 0.25); + text-shadow: 0 10px 18px rgba(74, 88, 126, 0.2); } .title-desc { margin: 0; - color: #4b5563; + color: #4b5563; font-size: 13px; } @@ -475,33 +494,37 @@ export default defineComponent({ .text { font-size: 16px; + position: relative; + z-index: 1; :deep(.el-input__inner) { - color: #0f172a; + color: #0f172a; height: 48px; line-height: 48px; &::placeholder { - color: #6b7280; + color: #6b7280; } } } .btn { + position: relative; + z-index: 1; width: 100%; - height: 48px; + height: 50px; font-size: 16px; - font-weight: 700; - border-radius: 12px; - background: linear-gradient(135deg, hsl(217 91% 60%) 0%, hsl(189 94% 50%) 100%); + font-weight: 750; + border-radius: 14px; + background: linear-gradient(135deg, #7bb6ff 0%, #6fe0c0 50%, #6ad5f3 100%); border: none; box-shadow: - 0 4px 16px rgba(56, 189, 248, 0.4), + 0 10px 28px rgba(111, 224, 192, 0.35), inset 0 1px 0 rgba(255, 255, 255, 0.3); transition: all 0.3s ease; &:hover:not(:disabled) { - transform: translateY(-2px); + transform: translateY(-2px) scale(1.01); box-shadow: - 0 8px 24px rgba(56, 189, 248, 0.5), + 0 16px 38px rgba(111, 224, 192, 0.42), inset 0 1px 0 rgba(255, 255, 255, 0.4); } @@ -511,12 +534,14 @@ export default defineComponent({ } .divider { + position: relative; + z-index: 1; display: flex; align-items: center; gap: 12px; - color: rgba(255, 255, 255, 0.6); + color: rgba(9, 8, 8, 0.7); font-size: 12px; - margin: 6px 0 12px; + margin: 10px 0 14px; &::before, &::after { @@ -528,20 +553,22 @@ export default defineComponent({ } .btn-sso { + position: relative; + z-index: 1; width: 100%; - height: 46px; - border-radius: 12px; - border: 1px solid rgba(255, 255, 255, 0.45); - color: #f8fbff; + height: 48px; + border-radius: 14px; + border: 1px solid rgba(120, 149, 203, 0.28); + color: #0f172a; font-weight: 700; letter-spacing: 0.02em; - background: rgba(255, 255, 255, 0.12); - box-shadow: 0 10px 30px rgba(0, 0, 0, 0.18); + background: linear-gradient(120deg, rgba(255, 255, 255, 0.92), rgba(255, 255, 255, 0.82)); + box-shadow: 0 10px 28px rgba(88, 112, 156, 0.18); transition: all 0.25s ease; &:hover { - background: rgba(255, 255, 255, 0.18); - border-color: rgba(255, 255, 255, 0.7); + background: rgba(255, 255, 255, 0.96); + border-color: rgba(120, 149, 203, 0.42); transform: translateY(-2px); } } @@ -582,6 +609,31 @@ export default defineComponent({ } } +@keyframes form-glow { + 0% { + transform: rotate(0deg) scale(1); + opacity: 0.9; + } + 50% { + transform: rotate(180deg) scale(1.06); + opacity: 1; + } + 100% { + transform: rotate(360deg) scale(1); + opacity: 0.9; + } +} + +@media (max-width: 1080px) { + .login { + padding: 60px 22px; + + .shell { + width: min(520px, 100%); + } + } +} + .change-lang { position: fixed; right: 20px;