소스 검색

feat: cunsult for sport

Fmode 5 일 전
부모
커밋
cd1643dd67
6개의 변경된 파일162개의 추가작업 그리고 0개의 파일을 삭제
  1. 20 0
      src/app/tab2/tab2.page.html
  2. 142 0
      src/app/tab2/tab2.page.ts
  3. BIN
      src/assets/avatars/jiaolian1.jpg
  4. BIN
      src/assets/icon/jz.jpg
  5. BIN
      src/assets/icon/yy.jpg
  6. BIN
      src/assets/icon/zj.jpg

+ 20 - 0
src/app/tab2/tab2.page.html

@@ -77,5 +77,25 @@
         </ion-card>
       </ion-col>
     </ion-row>
+
+    <ion-row>
+      <ion-col size="12">
+        <ion-card class="special-feature" button>
+          <ion-card-header>
+            <ion-icon name="medical" color="danger" class="feature-icon"></ion-icon>
+            <ion-card-title>运动健身服务</ion-card-title>
+            <ion-card-subtitle>专业健身咨询</ion-card-subtitle>
+          </ion-card-header>
+          <ion-card-content>
+            请联系我们私教咨询。
+          </ion-card-content>
+          <ion-button (click)="openConsult()" fill="clear" expand="block" color="danger">
+            开始咨询
+            <ion-icon slot="end" name="medkit"></ion-icon>
+          </ion-button>
+        </ion-card>
+      </ion-col>
+    </ion-row>
+
   </ion-grid>
 </ion-content>

+ 142 - 0
src/app/tab2/tab2.page.ts

@@ -207,7 +207,149 @@ export class Tab2Page {
     }
     openChatPanelModal(this.modalCtrl,options)
   }
+openConsult(chatId?:string){
+    localStorage.setItem("company","E4KpGvTEto")
+    let options:ChatPanelOptions = {
+      roleId:"2DXJkRsjXK", // 预设,无需更改
+      // chatId:chatId, // 若存在,则恢复会话。若不存在,则开启新会话
+      onChatInit:(chat:FmodeChat)=>{
+        console.log("onChatInit");
+        console.log("Chat类",chat);
+        console.log("预设角色",chat.role);
+        // 角色名称
+        chat.role.set("name","宋珀尔");
+        // 角色称号
+        chat.role.set("title","专业教练");
+        // 角色描述
+        chat.role.set("desc","一名亲切和蔼的健身教练,宋珀尔,年龄26岁");
+        // 角色标签
+        chat.role.set("tags",['跑步', '动感单车']);
+        // 角色头像
+        chat.role.set("avatar","/assets/avatars/jiaolian1.jpg")
+        // 角色提示词
+        chat.role.set("prompt",`
+# 角色设定
+您是一名亲切和蔼的健身教练,宋珀尔,年龄26岁,需要您解答用户健身方面的专业问题。
+`);
+        // 对话灵感分类
+        let promptCates = [
+          {
+            "img": "/assets/icon/yy.jpg",
+            "name": "有氧"
+          },
+          {
+            "img": "/assets/icon/jz.jpg",
+            "name": "减脂"
+          },
+          {
+            "img": "/assets/icon/zj.jpg",
+            "name": "增肌"
+          }
+        ]
+        setTimeout(() => {
+          chat.role.set("promptCates",promptCates)
+        }, 500);
+        // 对话灵感列表
+        let promptList = [
+          {
+            cate:"有氧",img:"/assets/icon/yy.jpg",
+            messageList:[
+            "有氧运动多久才能有效减脂?",  
+            "跑步和游泳哪个减肥效果更好?",  
+            "空腹有氧真的更燃脂吗?",  
+            "有氧运动会不会掉肌肉?",  
+            "心率控制在多少才能高效燃脂?",  
+            "每天做有氧运动会不会过度疲劳?",  
+            "有氧运动前要不要吃东西?",  
+            "椭圆机和跑步机哪个更适合新手?",  
+            "跳绳会不会伤膝盖?",  
+            "有氧运动后怎么补充能量?"  
+          ]
+          },
+          {
+            cate:"减脂",img:"/assets/icon/jz.jpg",
+            messageList:[
+              "减脂一定要做有氧吗?",  
+              "为什么体重没变但看起来瘦了?",  
+              "局部减脂(如瘦肚子)真的存在吗?",  
+              "减脂期每天应该吃多少热量?",  
+              "低碳饮食和低脂饮食哪个更适合减脂?",  
+              "为什么运动后体重反而增加了?",  
+              "减脂期可以吃零食吗?",  
+              "平台期怎么突破?",  
+              "晚上吃东西会不会更容易长胖?",  
+              "减脂期要不要计算蛋白质摄入?"  
+            ]
+          },
+          {
+            cate:"增肌",img:"/assets/icon/zj.jpg",
+            messageList: [
+            "增肌一定要喝蛋白粉吗?",  
+            "为什么练了很久肌肉不长?",  
+            "增肌期可以同时减脂吗?",  
+            "训练后多久补充蛋白质最有效?",  
+            "增肌需要每天练同一个部位吗?",  
+            "徒手训练(如俯卧撑)能有效增肌吗?",  
+            "增肌期体重不增长是怎么回事?",  
+            "肌肉酸痛还能继续练吗?",  
+            "增肌训练每组做多少次最合适?",  
+            "睡眠对增肌的影响有多大?"  
+          ]
+          },
+        ]
+        let ChatPrompt = Parse.Object.extend("ChatPrompt");
+        setTimeout(() => {
+          chat.promptList = promptList.map(item=>{
+            let prompt = new ChatPrompt();
+            prompt.set(item);
+            prompt.img = item.img;
+            return prompt;
+          })
+        }, 500);
+
+        // 功能按钮区域预设
+        chat.leftButtons = [
+          { // 提示 当角色配置预设提示词时 显示
+           title:"话题灵感", // 按钮标题
+           showTitle:true, // 是否显示标题文字
+           icon:"color-wand-outline", // 标题icon图标
+           onClick:()=>{ // 按钮点击事件
+               chat.isPromptModalOpen = true
+           },
+           show:()=>{ // 按钮显示条件
+             return chat?.promptList?.length // 存在话题提示词时显示
+           }
+         },
+      ]
 
+      },
+      onMessage:(chat:FmodeChat,message:FmodeChatMessage)=>{
+        console.log("onMessage",message)
+        let content:any = message?.content
+        if(typeof content == "string"){
+          // 根据阶段标记判断下一步处理过程
+          if (content.includes('[导诊完成]')) {
+            // 进入问诊环节
+            console.log('进入问诊环节');
+          } else if (content.includes('[问诊完成]')) {
+            // 进入检查环节
+            console.log('进入检查环节');
+          } else if (content.includes('[检查完成]')) {
+            // 进入诊断与处方环节
+            console.log('进入诊断与处方环节');
+          } else if (content.includes('[处方完成]')) {
+            // 结束会话或其他逻辑
+            console.log('结束会话');
+          }
+        }
+      },
+      onChatSaved:(chat:FmodeChat)=>{
+        // chat?.chatSession?.id 本次会话的 chatId
+        console.log("onChatSaved",chat,chat?.chatSession,chat?.chatSession?.id)
+      }
+    }
+    openChatPanelModal(this.modalCtrl,options)
+  }
   /**
    * 开始聊天
    */

BIN
src/assets/avatars/jiaolian1.jpg


BIN
src/assets/icon/jz.jpg


BIN
src/assets/icon/yy.jpg


BIN
src/assets/icon/zj.jpg