-
-
@@ -40,7 +51,7 @@ async function handleLogin() {
loading.value = true
try {
await authStore.login(form.username, form.password)
- ElMessage.success(`欢迎,${authStore.user?.name}`)
+ ElMessage.success(`欢迎回来,${authStore.user?.name || ''}`)
router.push('/')
} catch {
// 错误已在拦截器处理
@@ -54,22 +65,69 @@ async function handleLogin() {
.login-page {
min-height: 100vh;
display: flex;
+}
+
+/* 左侧品牌区 */
+.login-left {
+ flex: 1;
+ background: linear-gradient(135deg, #3370FF 0%, #2451B8 100%);
+ display: flex;
+ flex-direction: column;
+ justify-content: center;
+ padding: 80px;
+ color: #fff;
+}
+.brand { margin-bottom: 48px; }
+.brand-icon {
+ width: 48px; height: 48px;
+ border-radius: 12px;
+ background: rgba(255,255,255,0.2);
+ display: flex; align-items: center; justify-content: center;
+ font-size: 22px; font-weight: 700;
+ margin-bottom: 24px;
+ backdrop-filter: blur(10px);
+}
+.brand h1 { font-size: 32px; font-weight: 700; margin-bottom: 8px; }
+.brand p { font-size: 16px; opacity: 0.8; }
+.brand-features { display: flex; flex-direction: column; gap: 16px; }
+.feature {
+ display: flex; align-items: center; gap: 12px;
+ font-size: 15px; opacity: 0.9;
+}
+.dot {
+ width: 8px; height: 8px; border-radius: 50%; flex-shrink: 0;
+}
+.dot.blue { background: #7EB8FF; }
+.dot.green { background: #7DECA2; }
+.dot.orange { background: #FFB967; }
+
+/* 右侧登录区 */
+.login-right {
+ width: 480px;
+ display: flex;
align-items: center;
justify-content: center;
- background: linear-gradient(135deg, #1d1e2c 0%, #2d3a5c 100%);
+ background: var(--bg-page);
}
.login-card {
- width: 400px;
- padding: 40px;
- background: #fff;
- border-radius: 12px;
- box-shadow: 0 20px 60px rgba(0,0,0,0.3);
+ width: 360px;
}
-.login-header {
- text-align: center;
+.login-card h2 {
+ font-size: 24px;
+ font-weight: 700;
+ color: var(--text-primary);
+ margin-bottom: 8px;
+}
+.login-desc {
+ font-size: 14px;
+ color: var(--text-secondary);
margin-bottom: 32px;
}
-.login-header h1 { font-size: 24px; margin: 12px 0 4px; color: #1d1e2c; }
-.login-header p { color: #999; font-size: 14px; }
-.login-form { margin-top: 8px; }
+.login-form .el-form-item { margin-bottom: 20px; }
+.login-btn {
+ width: 100%;
+ height: 44px !important;
+ font-size: 15px !important;
+ border-radius: var(--radius-sm) !important;
+}
diff --git a/frontend/src/views/ProjectDetail.vue b/frontend/src/views/ProjectDetail.vue
index 33ee2e3..6b9a68c 100644
--- a/frontend/src/views/ProjectDetail.vue
+++ b/frontend/src/views/ProjectDetail.vue
@@ -1,91 +1,99 @@