浏览代码

update tab1

15179588180 7 月之前
父节点
当前提交
9d5e590008
共有 2 个文件被更改,包括 160 次插入77 次删除
  1. 54 58
      smarteat-app/src/app/tab1/tab1.page.html
  2. 106 19
      smarteat-app/src/app/tab1/tab1.page.ts

+ 54 - 58
smarteat-app/src/app/tab1/tab1.page.html

@@ -1,11 +1,10 @@
-
-  <ion-toolbar >
-    <ion-searchbar class="custom-searchbar" placeholder="搜索食物、食谱、餐厅" show-clear-button="focus"></ion-searchbar>
-  </ion-toolbar>
+<ion-toolbar>
+  <ion-searchbar class="custom-searchbar" placeholder="搜索食物、食谱、餐厅" show-clear-button="focus"></ion-searchbar>
+</ion-toolbar>
 
 <ion-content [fullscreen]="true">
-   <!-- 轮播图区域 -->
-   <div class="carousel-container" style="border-radius: 25px; margin: 5px auto;">
+  <!-- 轮播图区域 -->
+  <div class="carousel-container" style="border-radius: 25px; margin: 5px auto;">
     <div class="carousel" [style.transform]="'translateX(-' + currentSlide * 100 + '%)'">
       <div class="slide" *ngFor="let image of images">
         <img [src]="image" alt="轮播图">
@@ -22,58 +21,55 @@
     </div>
   </div>
 
-<!-- 推荐健康建议 -->
-<ion-card>
-<ion-card-header>
-  
-  <ion-card-title>
-    <ion-icon  slot="start" name="leaf-outline"></ion-icon>
-    健康建议
-  </ion-card-title>
-</ion-card-header>
-<ion-card-content>
-  <ion-button (click)="goHealthTips()" >
-    <!-- <ion-icon  slot="start" name="leaf-outline"></ion-icon> -->
-    今日饮食建议
-  </ion-button>
-  <p>关注每日健康饮食,提供实时饮食建议。</p>
-</ion-card-content>
-</ion-card>
+  <!-- 推荐健康建议 -->
+  <ion-card>
+    <ion-card-header>
+      <ion-card-title>
+        <ion-icon slot="start" name="leaf-outline"></ion-icon>
+        健康建议
+      </ion-card-title>
+    </ion-card-header>
+    <ion-card-content>
+      <ion-button (click)="goHealthTips()">
+        今日饮食建议
+      </ion-button>
+      <p>{{ responseMsg }}</p> <!-- 显示 AI 生成的饮食建议 -->
+    </ion-card-content>
+  </ion-card>
 
-<!-- 快速入口 -->
-<ion-grid>
-<ion-row>
-  <ion-col size="12">
-    <ion-button  >
-      <ion-icon slot="start" name="document-outline"></ion-icon>
-      健康目标管理
-    </ion-button>
-  </ion-col>
-</ion-row>
-<ion-row>
-  <ion-col size="12">
-    <ion-button  >
-      <ion-icon slot="start" name="storefront-outline"></ion-icon>
-      外卖推荐
-    </ion-button>
-  </ion-col>
-</ion-row>
-</ion-grid>
+  <!-- 快速入口 -->
+  <ion-grid>
+    <ion-row>
+      <ion-col size="12">
+        <ion-button>
+          <ion-icon slot="start" name="document-outline"></ion-icon>
+          健康目标管理
+        </ion-button>
+      </ion-col>
+    </ion-row>
+    <ion-row>
+      <ion-col size="12">
+        <ion-button>
+          <ion-icon slot="start" name="storefront-outline"></ion-icon>
+          外卖推荐
+        </ion-button>
+      </ion-col>
+    </ion-row>
+  </ion-grid>
 
-<!-- 推荐食谱 -->
-<ion-card>
-<ion-card-header>
-  <ion-card-title>
-    <ion-icon slot="start" name="albums-outline"></ion-icon>
-    今日推荐食谱
-  </ion-card-title>
-</ion-card-header>
-<ion-card-content>
-  <ion-button  >
-    <!-- <ion-icon slot="start" name="albums-outline"></ion-icon> -->
-    查看推荐食谱
-  </ion-button>
-  <p>根据你的饮食偏好,智能推荐今日食谱。</p>
-</ion-card-content>
-</ion-card>
+  <!-- 推荐食谱 -->
+  <ion-card>
+    <ion-card-header>
+      <ion-card-title>
+        <ion-icon slot="start" name="albums-outline"></ion-icon>
+        今日推荐食谱
+      </ion-card-title>
+    </ion-card-header>
+    <ion-card-content>
+      <ion-button (click)="viewRecommendedRecipes()">
+        查看推荐食谱
+      </ion-button>
+      <p>{{ recipeMsg }}</p> <!-- 显示 AI 生成的推荐食谱 -->
+    </ion-card-content>
+  </ion-card>
 </ion-content>

+ 106 - 19
smarteat-app/src/app/tab1/tab1.page.ts

@@ -1,29 +1,30 @@
-import { Component, CUSTOM_ELEMENTS_SCHEMA } from '@angular/core';
+import { Component, OnInit,CUSTOM_ELEMENTS_SCHEMA} from '@angular/core';
+import { Router } from '@angular/router';
+import { CloudSeUser } from 'src/lib/cloudSeuser'; // 引入 CloudSeUser 类
+import { FmodeChatCompletion } from 'fmode-ng'; // 引入 FmodeChatCompletion
 import { addIcons } from 'ionicons';
 import { albumsOutline, documentOutline, leafOutline, scanOutline, storefrontOutline } from 'ionicons/icons';
-import { IonButton, IonCard, IonCardContent, IonCardHeader, IonCol, IonContent, IonGrid, IonHeader, IonIcon, IonInput, IonRow, IonTextarea, IonTitle, IonToolbar } from '@ionic/angular/standalone';
-import { Router } from '@angular/router';
-import { CommonModule } from '@angular/common';  // 导入 CommonModule
-
+import { IonButton, IonCard, IonCardContent, IonCardHeader, IonCol, IonContent, IonHeader, IonIcon, IonInput, IonRow, IonTextarea, IonTitle, IonToolbar, IonGrid, IonCardTitle, IonSearchbar,} from '@ionic/angular/standalone'; // 导入 Ionic 组件
+import { CommonModule } from '@angular/common'; // 导入 CommonModule
 
 @Component({
   selector: 'app-tab1',
   templateUrl: 'tab1.page.html',
   styleUrls: ['tab1.page.scss'],
-  standalone: true, // 使用 standalone 组件
-  imports: [ 
-    CommonModule,IonContent, IonHeader, IonTitle, IonToolbar, 
-    IonButton,IonTextarea,IonInput,IonCard,IonCardContent,IonGrid,IonRow,IonCol,IonIcon,
-    IonCardHeader,
-  ],  // 通过 IonicModule 导入所有 Ionic 组件
-  schemas: [CUSTOM_ELEMENTS_SCHEMA], 
+  standalone: true,  // 使用 standalone 组件
+  imports: [
+    CommonModule, IonContent, IonHeader, IonTitle, IonToolbar, 
+    IonButton, IonTextarea, IonInput, IonCard, IonCardContent, IonGrid, IonRow, IonCol, IonIcon,
+    IonCardHeader,IonCardTitle,IonSearchbar
+  ],
 })
-export class Tab1Page {
+export class Tab1Page implements OnInit {
+  private cloudSeUser: CloudSeUser; // 引入 CloudSeUser 实例
+
+  userInfo: any = null; // 用户信息
+  responseMsg: string = ""; // 用于存储 AI 生成的饮食建议
+  recipeMsg: string = ""; // 用于存储 AI 生成的推荐食谱
 
-  constructor(private router: Router) {
-    addIcons({scanOutline, documentOutline, storefrontOutline,albumsOutline,leafOutline});
-  }
-  
   // 存储图片的数组
   images = [
     'https://example.com/image1.jpg',
@@ -35,6 +36,91 @@ export class Tab1Page {
   // 当前显示的幻灯片索引
   currentSlide: number = 0;
 
+  constructor(private router: Router) {
+    addIcons({ scanOutline, documentOutline, storefrontOutline, albumsOutline, leafOutline });
+    this.cloudSeUser = new CloudSeUser();
+  }
+
+  ngOnInit(): void {
+    this.loadUserData(); // 页面初始化时加载用户数据
+  }
+
+  // 从 seUser 表加载当前用户数据
+  async loadUserData() {
+    try {
+        const userData = await this.cloudSeUser.getCurrentUserInfo();
+        if (userData) {
+            // 使用 get 方法逐个提取字段
+            this.userInfo = {
+                name: userData.get('name') || '',
+                email: userData.get('email') || '',
+                phone: userData.get('phone') || '',
+                age: userData.get('age') || null,
+                gender: userData.get('gender') || '',
+                height: userData.get('height') || null,
+                weight: userData.get('weight') || null,
+                activityLevel: userData.get('activityLevel') || '',
+                dietPreference: userData.get('dietPreference') || '',
+                dietGroup: userData.get('dietGroup') || '',
+                avatar: userData.get('avatar') || null,
+                allergies: userData.get('allergies') || '',
+            };
+        }
+    } catch (error) {
+        console.error('加载用户数据失败', error);
+    }
+}
+
+  // 获取健康建议
+  async goHealthTips() {
+    if (!this.userInfo) return;
+
+    const { height, weight, activityLevel, dietPreference, dietGroup } = this.userInfo;
+    const newPrompt = `
+      你是一名专业的饮食营养规划师。根据以下用户信息,请提供今日的饮食建议:
+      身高:${height} cm
+      体重:${weight} kg
+      活动水平:${activityLevel}
+      饮食偏好:${dietPreference}
+      饮食类型:${dietGroup}
+    `;
+
+    const completion = new FmodeChatCompletion([
+      { role: "system", content: "" },
+      { role: "user", content: newPrompt }
+    ]);
+
+    completion.sendCompletion().subscribe((message: any) => {
+      console.log(message.content);
+      this.responseMsg = message.content; // 更新健康建议
+    });
+  }
+
+  // 查看推荐食谱
+  async viewRecommendedRecipes() {
+    if (!this.userInfo) return;
+
+    const { height, weight, activityLevel, dietPreference, dietGroup } = this.userInfo;
+    const newPrompt = `
+      你是一名专业的饮食营养规划师。根据以下用户信息,请推荐今日的食谱:
+      身高:${height} cm
+      体重:${weight} kg
+      活动水平:${activityLevel}
+      饮食偏好:${dietPreference}
+      饮食类型:${dietGroup}
+    `;
+
+    const completion = new FmodeChatCompletion([
+      { role: "system", content: "" },
+      { role: "user", content: newPrompt }
+    ]);
+
+    completion.sendCompletion().subscribe((message: any) => {
+      console.log(message.content);
+      this.recipeMsg = message.content; // 更新推荐食谱
+    });
+  }
+
   // 前一个幻灯片
   prevSlide() {
     if (this.currentSlide > 0) {
@@ -58,7 +144,8 @@ export class Tab1Page {
     this.currentSlide = index;
   }
 
-  goHealthTips(){
-    this.router.navigate([`/tabs/tips`])
+  // 跳转到饮食建议页面
+  goHealthTipsPage() {
+    this.router.navigate([`/tabs/tips`]);
   }
 }