Files
tyapi-frontend/src/layouts/AuthLayout.vue
2026-04-25 11:59:14 +08:00

154 lines
3.6 KiB
Vue
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<template>
<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>
</section>
</div>
</div>
</template>
<script setup>
// 认证布局组件
</script>
<style scoped>
.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) {
.auth-shell {
padding: 10px;
}
.auth-main-grid {
min-height: calc(100vh - 20px);
border-radius: 18px;
}
}
</style>