This commit is contained in:
2026-04-25 11:59:14 +08:00
parent a7cd16848c
commit 138a0dc288
26 changed files with 1665 additions and 215 deletions

View File

@@ -1,25 +1,23 @@
<template>
<div class="min-h-screen w-full flex items-center justify-center bg-gradient-to-br from-blue-50 via-indigo-50 to-purple-50 relative">
<div class="relative w-full max-w-[480px] auth-card px-8 py-10 flex flex-col justify-center min-h-[480px] sm:min-h-[400px] mx-4">
<!-- Logo与标题 -->
<div class="flex flex-col items-center mb-8">
<div class="w-16 h-16 flex items-center justify-center bg-gradient-to-br from-blue-600 to-indigo-600 rounded-2xl mb-4 shadow-lg">
<svg class="w-8 h-8 text-white" fill="none" stroke="currentColor" viewBox="0 0 24 24">
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M13 10V3L4 14h7v7l9-11h-7z" />
</svg>
<div class="auth-shell">
<div class="auth-main-grid">
<aside class="auth-brand-panel">
<img class="auth-brand-logo" src="@/assets/logo.png" alt="天远数据 Logo" />
<p class="auth-panel-kicker auth-panel-kicker-left">欢迎访问</p>
<h2 class="auth-brand-heading">账号中心</h2>
<p class="auth-brand-kicker">ENTERPRISE DATA CONSOLE</p>
<h1 class="auth-brand-title">天远数据控制台</h1>
<p class="auth-brand-subtitle">面向企业的数据服务平台提供稳定认证体系与安全访问能力</p>
</aside>
<section class="auth-form-panel">
<div class="auth-form-wrap px-8 py-10 sm:px-10 sm:py-12">
<router-view />
<div class="text-center text-xs text-gray-400 mt-8 pt-6 border-t border-gray-100">
&copy; 2026 天远数据控制台. All rights reserved.
</div>
</div>
<h1 class="auth-title mb-1">天远数据控制台</h1>
</div>
<!-- 内容区 -->
<div class="flex-1 flex flex-col justify-center">
<router-view />
</div>
<!-- 底部版权 -->
<div class="text-center text-xs text-gray-400 mt-8 pt-6 border-t border-gray-100">
&copy; 2024 天远数据控制台. All rights reserved.
</div>
</section>
</div>
</div>
</template>
@@ -29,34 +27,127 @@
</script>
<style scoped>
/* 性能优化:减少动画效果 */
@media (prefers-reduced-motion: reduce) {
* {
animation-duration: 0.01ms !important;
animation-iteration-count: 1 !important;
transition-duration: 0.01ms !important;
.auth-shell {
min-height: 100vh;
width: 100%;
padding: 20px;
background:
radial-gradient(1200px 460px at 10% -10%, rgba(30, 64, 175, 0.12), transparent 60%),
radial-gradient(1000px 500px at 100% 0%, rgba(51, 65, 85, 0.1), transparent 60%),
linear-gradient(150deg, #f8fbff 0%, #f5f8fd 45%, #f7f9fc 100%);
}
.auth-main-grid {
max-width: 1180px;
margin: 0 auto;
min-height: calc(100vh - 40px);
display: grid;
grid-template-columns: 1.1fr 0.9fr;
border-radius: 22px;
overflow: hidden;
box-shadow: 0 20px 52px rgba(15, 23, 42, 0.09);
border: 1px solid rgba(148, 163, 184, 0.16);
}
.auth-brand-panel {
padding: 56px 52px;
color: #fff;
background:
linear-gradient(rgba(148, 163, 184, 0.08) 1px, transparent 1px),
linear-gradient(90deg, rgba(148, 163, 184, 0.08) 1px, transparent 1px),
radial-gradient(500px 300px at 20% -10%, rgba(255, 255, 255, 0.16), transparent 60%),
linear-gradient(150deg, #0b1f3e 0%, #12305f 45%, #173e7a 100%);
background-size: 28px 28px, 28px 28px, auto, auto;
background-position: 0 0, 0 0, 0 0, 0 0;
display: flex;
flex-direction: column;
justify-content: flex-start;
align-items: flex-start;
}
.auth-brand-logo {
width: 58px;
height: 58px;
padding: 8px;
border-radius: 14px;
background: rgba(255, 255, 255, 0.94);
box-shadow: 0 10px 24px rgba(3, 7, 18, 0.28);
}
.auth-brand-kicker {
margin-top: 14px;
font-size: 11px;
letter-spacing: 0.16em;
color: rgba(255, 255, 255, 0.68);
font-weight: 600;
}
.auth-brand-heading {
margin-top: 8px;
font-size: 26px;
line-height: 1.3;
font-weight: 600;
}
.auth-brand-title {
margin-top: 18px;
font-size: 34px;
line-height: 1.2;
font-weight: 700;
}
.auth-brand-subtitle {
margin-top: 14px;
color: rgba(255, 255, 255, 0.8);
font-size: 14px;
line-height: 1.9;
max-width: 420px;
}
.auth-form-panel {
background: rgba(255, 255, 255, 0.94);
padding: 26px;
display: flex;
align-items: center;
}
.auth-form-wrap {
width: 100%;
}
.auth-panel-kicker {
margin-bottom: 6px;
color: #1e3a8a;
font-size: 13px;
font-weight: 600;
letter-spacing: 0.08em;
}
.auth-panel-kicker-left {
margin-top: 22px;
margin-bottom: 0;
color: rgba(255, 255, 255, 0.86);
}
@media (max-width: 960px) {
.auth-main-grid {
grid-template-columns: 1fr;
}
.auth-brand-panel {
padding: 32px 26px;
}
.auth-form-panel {
padding: 16px;
}
}
/* 性能优化:低端设备降级 */
@media (max-width: 640px) {
.min-h-\[480px\] {
min-height: 320px !important;
.auth-shell {
padding: 10px;
}
.px-8 {
padding-left: 1rem !important;
padding-right: 1rem !important;
}
.mx-4 {
margin-left: 0.5rem !important;
margin-right: 0.5rem !important;
}
}
/* 性能优化:简化背景渐变 */
@media (max-width: 768px), (max-device-pixel-ratio: 1) {
.bg-gradient-to-br {
background: #f8fafc !important;
.auth-main-grid {
min-height: calc(100vh - 20px);
border-radius: 18px;
}
}
</style>