瀏覽代碼

feat: all tab2 && tab3 && tab4

危齐晟 4 月之前
父節點
當前提交
822ca9087e

+ 19 - 3
poem-life-app/src/app/page-create/page-create.component.ts

@@ -1,3 +1,13 @@
+/*
+ * @Author: 危齐晟 1913361097@qq.com
+ * @Date: 2024-12-01 20:33:19
+ * @LastEditors: 危齐晟 1913361097@qq.com
+ * @LastEditTime: 2024-12-15 20:36:01
+ * @FilePath: \202226701045\poem-life-app\src\app\page-create\page-create.component.ts
+ * @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE
+ */
+import { routes } from './../tabs/tabs.routes';
+import { ActivatedRoute, Router } from '@angular/router';
 import { Component, OnInit } from '@angular/core';
 import { IonHeader, IonToolbar, IonTitle, IonContent,IonButton,IonTextarea,IonInput } from '@ionic/angular/standalone';
 /** 引用:从fmode-ng库引用FmodeChatCompletion类 */
@@ -14,19 +24,25 @@ import { FmodeChatCompletion,MarkdownPreviewModule} from 'fmode-ng';
 })
 export class PageCreateComponent  implements OnInit {
   isComplete: boolean = false;
-  ngOnInit(){
+  ngOnInit(){}
 
+  content: {title: string} = {title: '诗创'};
+  constructor(private ActivatedRoute: ActivatedRoute,private router: Router) {}
+  goBack(){
+    this.router.navigateByUrl('../tab4.html');
   }
-
-  constructor() {}
   // 用户输入提示词
   style:string = "诗句格式"
   styleInput(ev:any){
     this.style = ev.detail.value;
+    this.isComplete = false;
+    this.responseMsg = '';
   }
    userPrompt:string = "请描述你的诗歌需求"
   promptInput(ev:any){
     this.userPrompt = ev.detail.value;
+    this.isComplete = false;
+    this.responseMsg = '';
   }
   // 属性:组件内用于展示消息内容的变量
   responseMsg:any = ""

+ 65 - 12
poem-life-app/src/app/tab3/tab3.page.html

@@ -1,17 +1,70 @@
-<ion-header [translucent]="true">
-  <ion-toolbar>
-    <ion-title>
-      Tab 3
-    </ion-title>
-  </ion-toolbar>
-</ion-header>
-
 <ion-content [fullscreen]="true">
-  <ion-header collapse="condense">
+   <ion-header [translucent]="true">
     <ion-toolbar>
-      <ion-title size="large">Tab 3</ion-title>
+     <ion-buttons slot="start">
+      <ion-menu-button></ion-menu-button>
+     </ion-buttons>
+     <ion-buttons slot="end">
+      <ion-button><ion-icon name="search"></ion-icon></ion-button>
+      <ion-button><ion-icon name="ellipsis-horizontal"></ion-icon></ion-button>
+     </ion-buttons>
     </ion-toolbar>
-  </ion-header>
+   </ion-header>
+
+   <div class="profile-container">
+    <img src="../../assets/image/01/Vx_03.jpg" alt="背景图片" />
+
+    <div class="profile-card">
+     <img src="#" alt="头像" class="avatar" />
+     <h2>{{ profile.name }}</h2>
+     <p *ngIf="profile.vipStatus">VIP 开通VIP&gt;</p >
+     <p>{{ profile.level }}</p >
+    </div>
+
+    <div class="cards-container">
+     <div class="card">
+      <ion-icon name="time-outline"></ion-icon>
+      <p>浏览记录</p >
+     </div>
+     <div class="card">
+      <ion-icon name="download-outline"></ion-icon>
+      <p>我的下载</p >
+     </div>
+     <div class="card">
+      <ion-icon name="cart-outline"></ion-icon>
+      <p>我的购买</p >
+     </div>
+     <div class="card">
+      <ion-icon name="wallet-outline"></ion-icon>
+      <p>我的钱包</p >
+     </div>
+    </div>
+   </div>
+
+   <!-- 新增的喜欢和收藏按钮 -->
+   <div class="like-collection-buttons">
+    <div class="card">
+     <button (click)="toggleTabs('like')" class="action-button">喜欢</button>
+    </div>
+    <div class="card">
+     <button (click)="toggleTabs('collect')" class="action-button">收藏</button>
+    </div>
+   </div>
 
-  <app-explore-container name="Tab 3 page"></app-explore-container>
+   <div class="tabs-container" *ngIf="showTabs">
+      <ion-segment value="all">
+       <ion-segment-button (click)="setActiveTab('all')" [class.active]="activeTab === 'all'">
+        <ion-icon name="images-outline"></ion-icon>
+        <ion-label>全部</ion-label>
+       </ion-segment-button>
+       <ion-segment-button (click)="setActiveTab('image')" [class.active]="activeTab === 'image'">
+        <ion-icon name="image-outline"></ion-icon>
+        <ion-label>图文</ion-label>
+       </ion-segment-button>
+       <ion-segment-button (click)="setActiveTab('document')" [class.active]="activeTab === 'document'">
+        <ion-icon name="document-text-outline"></ion-icon>
+        <ion-label>文章</ion-label>
+       </ion-segment-button>
+      </ion-segment>
+     </div>
 </ion-content>

+ 141 - 0
poem-life-app/src/app/tab3/tab3.page.scss

@@ -0,0 +1,141 @@
+.profile-container {
+ position: relative;
+ overflow: hidden;
+ background-size: cover;
+ background-position: center;
+
+ img {
+width: 100%;
+height: 320px; /* 根据需要调整 */
+object-fit: cover;
+ }
+}
+
+.profile-card {
+ position: absolute;
+ top: 20px; /* 调整位置 */
+ left: 50%;
+ transform: translateX(-50%); /* 居中 */
+ padding: 20px;
+ background: rgba(0, 0, 0, 0.0); /* 半透明背景 */
+ color: white;
+ text-align: center;
+ border-radius: 10px;
+
+ .avatar {
+width: 70px; /* 保持宽度 */
+height: 70px; /* 修改为与宽度相等的高度 */
+border-radius: 50%; /* 圆形 */
+margin-bottom: 10px;
+border: 3px solid white;
+box-shadow: 0 0 10px rgba(0, 0, 0, 0.5);
+ }
+
+ h2 {
+font-size: 16px; /* 调整为较小的字体大小 */
+ }
+
+ p {
+font-size: 12px; /* 调整为较小的字体大小 */
+ }
+}
+
+.cards-container {
+ position: absolute; /* 使容器绝对定位 */
+ bottom: 20px; /* 距离底部的距离 */
+ left: 50%;
+ transform: translateX(-50%); /* 居中 */
+ display: flex;
+ justify-content: space-around; /* 水平排列 */
+ width: 90%; /* 设置宽度 */
+ padding: 10px 0; /* 上下内边距 */
+
+ .card {
+width: 80px; /* 设置宽度 */
+height: 60px; /* 设置高度 */
+background: rgba(255, 255, 255, 0.2); /* 半透明背景 */
+border-radius: 10px;
+padding: 5px; /* 内边距 */
+display: flex;
+flex-direction: column; /* 垂直排列内容 */
+align-items: center;
+gap: 2px; /* 减小间距 */
+color: black;
+font-size: 14px; /* 设置字体大小 */
+border: none;
+box-shadow: 0 2px 10px rgba(0, 0, 0, 0.3); /* 添加阴影效果 */
+transition: all 0.2s ease-in-out;
+
+ion-icon {
+ font-size: 32px; /* 设置图标大小 */
+ flex: 0 0 40%; /* 使图标占据盒子的40% */
+ display: flex; /* 使图标能够使用flex属性 */
+ justify-content: center; /* 水平居中图标 */
+ align-items: center; /* 垂直居中图标 */
+ width: 100%; /* 使图标宽度为100% */
+}
+
+p {
+ margin: 0; /* 去除默认的外边距 */
+}
+
+&:hover {
+ background: rgba(255, 255, 255, 1); /* 悬停时变为不透明 */
+}
+}
+}
+
+.tabs-container {
+ margin-top: 20px;
+ padding: 0 20px;
+
+ ion-segment {
+--background: rgba(255, 255, 255, 0.5);
+--border-width: 0;
+--padding-start: 0;
+--padding-end: 0;
+ }
+ion-segment-button {
+--indicator-background: transparent;
+--padding-top: 8px;
+--padding-bottom: 8px;
+--padding-start: 16px;
+--padding-end: 16px;
+
+&.active {
+ color: blue; /* 激活时文字变为蓝色 */
+ border-bottom: 2px solid blue; /* 激活时显示蓝色横线 */
+}
+ }
+}
+.like-collection-buttons {
+ display: flex;
+ justify-content: space-between; /* 水平排列并在两端对齐 */
+ width: 100%; /* 使容器宽度为100% */
+ margin-top: 10px; /* 与上方内容的间距 */
+
+ .card {
+flex: 0 0 calc(25%); /* 设置卡片宽度为页面宽度的25% */
+margin: 0 calc(12.5%); /* 左右间距为页面宽度的12.5% */
+background: rgba(255, 255, 255, 0.0); /* 半透明背景 */
+border-radius: 10px;
+padding: 10px; /* 内边距 */
+display: flex;
+align-items: center;
+justify-content: center;
+// box-shadow: 0 2px 10px rgba(0, 0, 0, 0.3); /* 添加阴影效果 */
+transition: background 0.2s ease-in-out;
+
+.action-button {
+ background: none; /* 无背景 */
+ border: none; /* 无边框 */
+ color: black; /* 字体颜色 */
+ font-size: 14px; /* 字体大小 */
+ cursor: pointer; /* 鼠标指针样式 */
+
+ &:hover {
+background: rgba(255, 255, 255, 0.5); /* 悬停时变为半透明 */
+ }
+}
+ }
+}

+ 40 - 3
poem-life-app/src/app/tab3/tab3.page.ts

@@ -1,14 +1,51 @@
 import { Component } from '@angular/core';
-import { IonHeader, IonToolbar, IonTitle, IonContent } from '@ionic/angular/standalone';
+// import { IonHeader, IonToolbar, IonTitle, IonContent } from '@ionic/angular/standalone';
 import { ExploreContainerComponent } from '../explore-container/explore-container.component';
+import { IonicModule } from '@ionic/angular';
+import { CommonModule } from '@angular/common';
+import { addIcons } from 'ionicons';
+import { bookmarkOutline, cartOutline, documentTextOutline, downloadOutline, ellipsisHorizontal, heartOutline, imageOutline, imagesOutline, search, timeOutline, walletOutline } from 'ionicons/icons';
+
 
 @Component({
   selector: 'app-tab3',
   templateUrl: 'tab3.page.html',
   styleUrls: ['tab3.page.scss'],
   standalone: true,
-  imports: [IonHeader, IonToolbar, IonTitle, IonContent, ExploreContainerComponent],
+  imports: [ExploreContainerComponent,
+    IonicModule,
+    CommonModule
+  ],
 })
 export class Tab3Page {
-  constructor() {}
+  profile = {
+    name: 'X',
+    level: 'X',
+    vipStatus: true,
+    buttons: [
+        { icon: 'time-outline', text: '浏览记录' },
+        { icon: 'download-outline', text: '我的下载' },
+        { icon: 'cart-outline', text: '我的购买' },
+        { icon: 'wallet-outline', text: '我的钱包' }
+    ],
+    tabs: [
+        { icon: 'images-outline', text: '全部' },
+        { icon: 'image-outline', text: '图文' },
+        { icon: 'document-text-outline', text: '文章' }
+    ]
+  };
+
+  showTabs = false;;
+  activeTab : string = 'all';
+  constructor() {
+    addIcons({search, ellipsisHorizontal, timeOutline, downloadOutline, cartOutline, walletOutline, heartOutline, bookmarkOutline, imageOutline, imagesOutline, documentTextOutline});
+  }
+
+  toggleTabs(action: string) {
+    this.showTabs =true;
+    this.activeTab = action === 'like' ? 'all' :'collect';
+  }
+  setActiveTab(tab:string) {
+   this.activeTab = tab;
+  }
 }