|
|
@@ -4,44 +4,83 @@
|
|
|
</ion-toolbar>
|
|
|
</ion-header>
|
|
|
|
|
|
-<ion-content class="ion-padding" style="background-color: white;">
|
|
|
- <!-- 用户已登录状态 -->
|
|
|
+<ion-content class="ion-padding" style="background-color: #f5f5f5;">
|
|
|
+ <!-- 用户已登录状态 - 旅游APP风格 -->
|
|
|
@if(currentUser?.id) {
|
|
|
- <div class="profile-container">
|
|
|
- <!-- 头像和用户名 -->
|
|
|
- <div class="profile-header">
|
|
|
- <img src="/assets/tx.jpeg" alt="用户头像" class="profile-avatar">
|
|
|
- <h2 class="profile-name">{{ currentUser?.get("username") }}</h2>
|
|
|
+ <div class="travel-profile-container">
|
|
|
+ <!-- 顶部用户信息卡片 -->
|
|
|
+ <div class="user-card">
|
|
|
+ <div class="user-info">
|
|
|
+ <img src="https://randomuser.me/api/portraits/men/32.jpg" alt="用户头像" class="user-avatar">
|
|
|
+ <div class="user-details">
|
|
|
+ <h2>{{ currentUser?.get("username") }}</h2>
|
|
|
+ <p class="user-bio">热爱旅行,探索世界</p>
|
|
|
+ <div class="user-stats">
|
|
|
+ <div class="stat-item">
|
|
|
+ <span class="stat-number">12</span>
|
|
|
+ <span class="stat-label">关注</span>
|
|
|
+ </div>
|
|
|
+ <div class="stat-item">
|
|
|
+ <span class="stat-number">356</span>
|
|
|
+ <span class="stat-label">粉丝</span>
|
|
|
+ </div>
|
|
|
+ <div class="stat-item">
|
|
|
+ <span class="stat-number">24</span>
|
|
|
+ <span class="stat-label">足迹</span>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
</div>
|
|
|
|
|
|
- <!-- 功能列表 - 确保每个item只有一个右侧箭头 -->
|
|
|
- <ion-list lines="full" class="function-list">
|
|
|
- <ion-item button detail>
|
|
|
- <ion-icon slot="start" name="notifications-outline" color="medium"></ion-icon>
|
|
|
- <ion-label>通知</ion-label>
|
|
|
+ <!-- 快捷功能入口 -->
|
|
|
+ <div class="quick-actions">
|
|
|
+ <ion-button fill="clear" class="action-button" (click)="navigateTo('myTrips')">
|
|
|
+ <ion-icon slot="icon-only" name="airplane-outline"></ion-icon>
|
|
|
+ <span class="action-label">我的行程</span>
|
|
|
+ </ion-button>
|
|
|
+ <ion-button fill="clear" class="action-button" (click)="navigateTo('favorites')">
|
|
|
+ <ion-icon slot="icon-only" name="heart-outline"></ion-icon>
|
|
|
+ <span class="action-label">收藏</span>
|
|
|
+ </ion-button>
|
|
|
+ <ion-button fill="clear" class="action-button" (click)="navigateTo('reviews')">
|
|
|
+ <ion-icon slot="icon-only" name="pencil-outline"></ion-icon>
|
|
|
+ <span class="action-label">点评</span>
|
|
|
+ </ion-button>
|
|
|
+ <ion-button fill="clear" class="action-button" (click)="navigateTo('photos')">
|
|
|
+ <ion-icon slot="icon-only" name="camera-outline"></ion-icon>
|
|
|
+ <span class="action-label">相册</span>
|
|
|
+ </ion-button>
|
|
|
+ </div>
|
|
|
+
|
|
|
+ <!-- 功能列表 -->
|
|
|
+ <ion-list lines="none" class="travel-function-list">
|
|
|
+ <ion-item button detail (click)="navigateTo('settings')">
|
|
|
+ <ion-icon slot="start" name="settings-outline" color="medium"></ion-icon>
|
|
|
+ <ion-label>设置</ion-label>
|
|
|
</ion-item>
|
|
|
|
|
|
- <ion-item button detail>
|
|
|
- <ion-icon slot="start" name="people-outline" color="medium"></ion-icon>
|
|
|
- <ion-label>粉丝 <span class="fans-count">120</span></ion-label>
|
|
|
+ <ion-item button detail (click)="navigateTo('wallet')">
|
|
|
+ <ion-icon slot="start" name="wallet-outline" color="medium"></ion-icon>
|
|
|
+ <ion-label>钱包</ion-label>
|
|
|
</ion-item>
|
|
|
|
|
|
- <ion-item button detail>
|
|
|
- <ion-icon slot="start" name="bookmark-outline" color="medium"></ion-icon>
|
|
|
- <ion-label>收藏</ion-label>
|
|
|
+ <ion-item button detail (click)="navigateTo('coupons')">
|
|
|
+ <ion-icon slot="start" name="ticket-outline" color="medium"></ion-icon>
|
|
|
+ <ion-label>优惠券</ion-label>
|
|
|
+ <ion-badge slot="end" color="danger">3</ion-badge>
|
|
|
</ion-item>
|
|
|
|
|
|
- <ion-item button detail>
|
|
|
- <ion-icon slot="start" name="help-circle-outline" color="medium"></ion-icon>
|
|
|
- <ion-label>帮助</ion-label>
|
|
|
+ <ion-item button detail (click)="navigateTo('history')">
|
|
|
+ <ion-icon slot="start" name="time-outline" color="medium"></ion-icon>
|
|
|
+ <ion-label>浏览历史</ion-label>
|
|
|
</ion-item>
|
|
|
|
|
|
- <ion-item button detail>
|
|
|
- <ion-icon slot="start" name="mail-outline" color="medium"></ion-icon>
|
|
|
- <ion-label>联系我们</ion-label>
|
|
|
+ <ion-item button detail (click)="navigateTo('help')">
|
|
|
+ <ion-icon slot="start" name="help-circle-outline" color="medium"></ion-icon>
|
|
|
+ <ion-label>帮助中心</ion-label>
|
|
|
</ion-item>
|
|
|
|
|
|
- <!-- 编辑资料 -->
|
|
|
<ion-item button detail (click)="edit()">
|
|
|
<ion-icon slot="start" name="create-outline" color="medium"></ion-icon>
|
|
|
<ion-label>编辑资料</ion-label>
|
|
|
@@ -50,7 +89,7 @@
|
|
|
|
|
|
<!-- 退出登录按钮 -->
|
|
|
<div class="logout-button">
|
|
|
- <ion-button expand="block" color="primary" fill="outline" shape="round" (click)="logout()">
|
|
|
+ <ion-button expand="block" color="medium" fill="outline" shape="round" (click)="logout()">
|
|
|
<ion-icon name="log-out-outline" slot="start"></ion-icon>
|
|
|
退出登录
|
|
|
</ion-button>
|
|
|
@@ -58,18 +97,68 @@
|
|
|
</div>
|
|
|
}
|
|
|
|
|
|
- <!-- 用户未登录状态 -->
|
|
|
+ <!-- 用户未登录状态 - 保持不变 -->
|
|
|
@if(!currentUser?.id) {
|
|
|
- <div class="login-prompt">
|
|
|
- <div class="login-icon">
|
|
|
- <ion-icon name="lock-closed"></ion-icon>
|
|
|
+ <div class="auth-container">
|
|
|
+ <!-- 顶部欢迎语 -->
|
|
|
+ <div class="welcome-section">
|
|
|
+ <h1>欢迎回来</h1>
|
|
|
+ <p>登录后享受个性化体验</p>
|
|
|
+ </div>
|
|
|
+
|
|
|
+ <!-- 登录表单 -->
|
|
|
+ <div class="form-section">
|
|
|
+ <ion-item class="form-item">
|
|
|
+ <ion-icon slot="start" name="person-outline"></ion-icon>
|
|
|
+ <ion-input [(ngModel)]="loginForm.username" placeholder="手机号/用户名/邮箱" type="text"></ion-input>
|
|
|
+ </ion-item>
|
|
|
+
|
|
|
+ <ion-item class="form-item">
|
|
|
+ <ion-icon slot="start" name="lock-closed-outline"></ion-icon>
|
|
|
+ <ion-input [(ngModel)]="loginForm.password" placeholder="密码" type="password"></ion-input>
|
|
|
+ </ion-item>
|
|
|
+
|
|
|
+ <div class="action-row">
|
|
|
+ <ion-button fill="clear" size="small" color="medium" (click)="forgotPassword()">忘记密码</ion-button>
|
|
|
+ </div>
|
|
|
+
|
|
|
+ <ion-button expand="block" class="login-button" (click)="login()" [disabled]="!loginForm.username || !loginForm.password">
|
|
|
+ 登录
|
|
|
+ </ion-button>
|
|
|
+ </div>
|
|
|
+
|
|
|
+ <!-- 快速登录分隔线 -->
|
|
|
+ <div class="divider-section">
|
|
|
+ <div class="divider-line"></div>
|
|
|
+ <span class="divider-text">或</span>
|
|
|
+ <div class="divider-line"></div>
|
|
|
+ </div>
|
|
|
+
|
|
|
+ <!-- 第三方登录 -->
|
|
|
+ <div class="social-login">
|
|
|
+ <ion-button fill="clear" class="social-button wechat" (click)="loginWithWeChat()">
|
|
|
+ <ion-icon slot="icon-only" name="logo-wechat"></ion-icon>
|
|
|
+ </ion-button>
|
|
|
+ <ion-button fill="clear" class="social-button apple" (click)="loginWithApple()">
|
|
|
+ <ion-icon slot="icon-only" name="logo-apple"></ion-icon>
|
|
|
+ </ion-button>
|
|
|
+ <ion-button fill="clear" class="social-button google" (click)="loginWithGoogle()">
|
|
|
+ <ion-icon slot="icon-only" name="logo-google"></ion-icon>
|
|
|
+ </ion-button>
|
|
|
+ </div>
|
|
|
+
|
|
|
+ <!-- 注册引导 -->
|
|
|
+ <div class="register-section">
|
|
|
+ <p>还没有账号?</p>
|
|
|
+ <ion-button fill="clear" color="primary" (click)="goToRegister()">立即注册</ion-button>
|
|
|
+ </div>
|
|
|
+
|
|
|
+ <!-- 用户协议 -->
|
|
|
+ <div class="agreement-section">
|
|
|
+ <p class="agreement-text">
|
|
|
+ 登录即表示您同意<span class="highlight" (click)="openUserAgreement()">用户协议</span>和<span class="highlight" (click)="openPrivacyPolicy()">隐私政策</span>
|
|
|
+ </p>
|
|
|
</div>
|
|
|
- <h2>登录后体验更精彩</h2>
|
|
|
- <p class="prompt-text">与全世界的经历、人物和故事相遇</p>
|
|
|
- <ion-button expand="block" color="primary" shape="round" class="login-button" (click)="login()">
|
|
|
- <ion-icon name="log-in" slot="start"></ion-icon>
|
|
|
- 立即登录
|
|
|
- </ion-button>
|
|
|
</div>
|
|
|
}
|
|
|
</ion-content>
|