|
@@ -1,8 +1,7 @@
|
|
|
import { Component } from '@angular/core';
|
|
|
import { IonicModule } from '@ionic/angular';
|
|
|
import { FormsModule } from '@angular/forms';
|
|
|
-import { FmodeChatCompletion } from 'fmode-ng';
|
|
|
-import { CommonModule } from '@angular/common';
|
|
|
+
|
|
|
@Component({
|
|
|
selector: 'app-tab2',
|
|
|
templateUrl: 'tab2.page.html',
|
|
@@ -10,7 +9,7 @@ import { CommonModule } from '@angular/common';
|
|
|
standalone: true,
|
|
|
imports: [
|
|
|
IonicModule,
|
|
|
- FormsModule,CommonModule // 导入 FormsModule 来支持 ngModel 双向绑定
|
|
|
+ FormsModule // 导入 FormsModule 来支持 ngModel 双向绑定
|
|
|
]
|
|
|
})
|
|
|
export class Tab2Page {
|
|
@@ -18,7 +17,7 @@ export class Tab2Page {
|
|
|
userHeight: number = 170; // 默认身高
|
|
|
userWeight: number = 65; // 默认体重
|
|
|
userGoal: string = ''; // 健身目标
|
|
|
-
|
|
|
+ userInterest: string = ''; // 兴趣爱好
|
|
|
|
|
|
// 生成的运动计划
|
|
|
workoutPlan: string = '';
|
|
@@ -33,27 +32,75 @@ export class Tab2Page {
|
|
|
this.errorMessage = '';
|
|
|
|
|
|
// 检查用户输入是否完整
|
|
|
-
|
|
|
+ if (!this.userHeight || !this.userWeight || !this.userGoal || !this.userInterest) {
|
|
|
+ this.errorMessage = '请确保所有字段都已填写。';
|
|
|
+ return;
|
|
|
+ }
|
|
|
|
|
|
- // 生成模拟运动计划
|
|
|
- this.workoutPlan = this.generateMockWorkoutPlan(this.userGoal);
|
|
|
+ // 基于目标、身高、体重和兴趣生成运动计划
|
|
|
+ this.workoutPlan = this.createPersonalizedWorkoutPlan(
|
|
|
+ this.userGoal,
|
|
|
+ this.userHeight,
|
|
|
+ this.userWeight,
|
|
|
+ this.userInterest
|
|
|
+ );
|
|
|
|
|
|
+ // 如果没有生成运动计划,显示错误消息
|
|
|
if (!this.workoutPlan) {
|
|
|
this.errorMessage = '无法生成运动计划,请稍后再试。';
|
|
|
}
|
|
|
}
|
|
|
|
|
|
- // 模拟根据健身目标生成运动计划
|
|
|
- generateMockWorkoutPlan(goal: string): string {
|
|
|
+ // 生成个性化运动计划的函数
|
|
|
+ createPersonalizedWorkoutPlan(goal: string, height: number, weight: number, interest: string): string {
|
|
|
+ // 基于目标生成基础计划
|
|
|
+ let basePlan = this.getGoalBasedPlan(goal);
|
|
|
+
|
|
|
+ // 根据兴趣爱好调整运动计划
|
|
|
+ let adjustedPlan = this.adjustPlanBasedOnInterests(basePlan, interest);
|
|
|
+
|
|
|
+ // 结合身高和体重调整计划(例如,体重较重可能需要更多有氧训练等)
|
|
|
+ let finalPlan = this.adjustPlanBasedOnBodyMetrics(adjustedPlan, height, weight);
|
|
|
+
|
|
|
+ return finalPlan;
|
|
|
+ }
|
|
|
+
|
|
|
+ // 基于健身目标生成运动计划
|
|
|
+ getGoalBasedPlan(goal: string): string {
|
|
|
switch (goal) {
|
|
|
case '增肌':
|
|
|
- return '增肌计划:每周进行3次重量训练,结合有氧运动。包括卧推、深蹲、硬拉等基础动作。';
|
|
|
+ return '每周3次重量训练,重点训练大肌群,包括卧推、深蹲和硬拉。配合低强度有氧运动,如快走或慢跑。';
|
|
|
case '减脂':
|
|
|
- return '减脂计划:每周进行4次高强度间歇训练(HIIT),结合适量的有氧运动,如跑步、游泳等。';
|
|
|
+ return '每周4次有氧运动,如跑步、游泳或骑行,每次持续30-45分钟。配合2-3次力量训练,增强新陈代谢。';
|
|
|
case '保持体形':
|
|
|
- return '保持体形计划:每周进行3次中等强度的力量训练和2次有氧运动,保持体型的同时增强肌肉耐力。';
|
|
|
+ return '每周3次中等强度的力量训练,结合2-3次低强度有氧运动,如快走或瑜伽。';
|
|
|
default:
|
|
|
return '';
|
|
|
}
|
|
|
}
|
|
|
+
|
|
|
+ // 根据兴趣爱好调整运动计划
|
|
|
+ adjustPlanBasedOnInterests(plan: string, interests: string): string {
|
|
|
+ if (interests.includes('跑步')) {
|
|
|
+ plan += ' 如果你喜欢跑步,可以增加每周的跑步频率至3次,每次20-30分钟。';
|
|
|
+ }
|
|
|
+ if (interests.includes('游泳')) {
|
|
|
+ plan += ' 如果你喜欢游泳,可以用游泳替代有氧训练,保持每周至少2次,每次30分钟。';
|
|
|
+ }
|
|
|
+ if (interests.includes('瑜伽')) {
|
|
|
+ plan += ' 如果你喜欢瑜伽,可以增加每周1-2次瑜伽训练,有助于柔韧性和恢复。';
|
|
|
+ }
|
|
|
+ return plan;
|
|
|
+ }
|
|
|
+
|
|
|
+ // 根据身高和体重调整运动计划
|
|
|
+ adjustPlanBasedOnBodyMetrics(plan: string, height: number, weight: number): string {
|
|
|
+ if (weight > 80) {
|
|
|
+ plan += ' 由于体重大于80kg,建议增加每周有氧训练的频率,如慢跑或游泳,帮助减脂。';
|
|
|
+ }
|
|
|
+ if (height < 160) {
|
|
|
+ plan += ' 如果你的身高较矮,可能需要更多的核心训练来增强力量和稳定性。';
|
|
|
+ }
|
|
|
+ return plan;
|
|
|
+ }
|
|
|
}
|