فهرست منبع

update:tab2 page

cainiao-hue 3 ماه پیش
والد
کامیت
953906103c

+ 2 - 2
soul-app/src/app/consult-picture/consult-picture.component.html

@@ -1,7 +1,7 @@
 <ion-header [translucent]="true">
   <ion-toolbar>
     <ion-title>
-      示例:logo生成{{imagineWork?.progress || 0}}
+      示例:手机壁纸生成{{imagineWork?.progress || 0}}
     </ion-title> 
   </ion-toolbar>
 </ion-header>
@@ -9,7 +9,7 @@
 <ion-content [fullscreen]="true">
   <!-- 生成提示词 -->
   <ion-textarea [value]="userPrompt" (ionInput)="promptInput($event)" placeholder="图片提示词" autoGrow="true"></ion-textarea>
-  <ion-button (click)="createImage()" expand="block">生成logo</ion-button>
+  <ion-button (click)="createImage()" expand="block">生成414*896大小手机壁纸</ion-button>
   <!--logo画面提示词-->
 
   <div>

+ 2 - 2
soul-app/src/app/consult-picture/consult-picture.component.ts

@@ -16,7 +16,7 @@ import { DalleOptions, ImagineWork,FmodeChatCompletion } from 'fmode-ng';
 })
 export class ConsultPictureComponent  implements OnInit {
 
-  userPrompt:string = "app名称为...的logo,一个爱心,聊天气泡,易于识别,颜色方案应体现温暖感和清晰感,建议使用...色和...色等色调,极具美观性,可爱风格"
+  userPrompt:string = "生成一个414*896大小手机壁纸图片,在柔和的淡粉色和温暖的浅黄色交织中,油画风格,通过小爱心、小星星和小气泡点缀,营造出一种温馨和放松的氛围,让人感到心灵的宁静与舒适。"
   promptInput(ev:any){
     this.userPrompt = ev.detail.value;
   }
@@ -34,7 +34,7 @@ export class ConsultPictureComponent  implements OnInit {
   async createImage(){
     this.imagineWork = new ImagineWork();
     //文本生成
-    let PromptTemplate = `请你作为一名专业的设计师,结合logo的基础设计元素帮我设计一个贴切我项目的logo
+    let PromptTemplate = `请你作为一名专业的设计师,结合壁纸的基础设计元素帮我设计一个贴切我项目的手机壁纸
     要求如下:
     ${this.userPrompt}
     `

+ 13 - 1
soul-app/src/app/report-modal/report-modal.component.html

@@ -8,5 +8,17 @@
 </ion-header>
 
 <ion-content>
-  <pre>{{ report }}</pre> <!-- 显示报告内容 -->
+<section>
+  <ion-card>
+    <ion-list>
+      <ion-item *ngFor="let chatrecord of chatrecordList">
+        <ion-label>
+          <p style="font-size: 18px; line-height: 1.5; color: #333; margin: 8px 0;" *ngFor="let contentItem of chatrecord.get('content')">
+            {{ contentItem.content }}
+          </p>
+        </ion-label>
+      </ion-item>
+    </ion-list>
+  </ion-card>
+</section>
 </ion-content>

+ 17 - 49
soul-app/src/app/report-modal/report-modal.component.ts

@@ -1,64 +1,32 @@
-import { Component, OnInit,Input } from '@angular/core';
+import { CommonModule } from '@angular/common';
+import { Component, OnInit } from '@angular/core';
+import { Router } from '@angular/router';
+import { IonCard, IonItem, IonLabel, IonList } from '@ionic/angular/standalone';
 import { IonButton, IonButtons, IonContent, IonHeader, IonTitle, IonToolbar, ModalController } from '@ionic/angular/standalone';
+import { CloudObject, CloudQuery } from 'src/lib/ncloud';
 
 @Component({
   selector: 'app-report-modal',
   templateUrl: './report-modal.component.html',
   styleUrls: ['./report-modal.component.scss'],
   standalone: true,
-  imports: [IonHeader,IonToolbar,IonTitle,
-    IonButtons,IonButton,IonContent
+  imports: [IonHeader,IonToolbar,IonTitle,CommonModule,
+    IonButtons,IonButton,IonContent,IonCard,IonList,IonItem,IonLabel
   ],
 })
 export class ReportModalComponent  implements OnInit {
 
-  @Input() report: string=''; // 接收报告内容
-  @Input() consult: any; // 接收 Consult 对象
-
-  constructor(private modalCtrl: ModalController) {}
-
-  async generateReport() {
-    if (!this.consult) {
-      console.error('Consult对象未定义');
-      return;
-    }
-    let chatContent = this.consult.get('content') || [];
-    let report = "聊天记录报告\n\n";
-    
-    if (chatContent.length === 0) {
-      report += "没有聊天记录。\n\n";
-    } else {
-      chatContent.forEach((message: any, index: number) => {
-        report += `消息 ${index + 1}:\n\n`;
-        report += `内容: ${message.content}\n\n`;
-        
-        const sentiment = this.analyzeSentiment(message.content);
-        report += `心晴分析: ${sentiment}\n\n`;
-      });
-    }
-    
-    this.report = report; // 更新报告内容
-  }
-
-  analyzeSentiment(text: string): string {
-    if (text.includes("好") || text.includes("喜欢")) {
-      return "积极";
-    } else if (text.includes("坏") || text.includes("不喜欢")) {
-      return "消极";
-    } else {
-      return "中性";
-    }
-  }
-
+  constructor(private modalCtrl: ModalController,private router: Router) {}
   closeModal() {
-    //this.modalCtrl.dismiss(); // 关闭模态框
-    this.modalCtrl.dismiss({ report: this.report }); // 关闭模态框并返回报告内容
+    this.router.navigate(['tabs/tab3']);
   }
-
-  ionViewWillEnter() {
-    this.generateReport(); // 页面进入时生成报告
+  chatrecordList:Array<CloudObject>=[]
+  async loadChatRecordList(){
+    let query = new CloudQuery("ChatRecord");
+    this.chatrecordList = await query.find();
+    console.log(this.chatrecordList.map(record => record.get('content')));
+  }
+  ngOnInit() {
+    this.loadChatRecordList()
   }
-
-  ngOnInit() {}
-
 }

+ 0 - 1
soul-app/src/app/tab1/tab1.page.ts

@@ -88,7 +88,6 @@ export class Tab1Page {
     // 处理点击评价的逻辑
     // 验证用户登录
     let currentUser = new CloudUser();
-    let userPrompt = ``
     if(!currentUser?.id){
       console.log("用户未登录,请登录后重试")
       let user = await openUserLoginModal(this.modalCtrl)

+ 1 - 1
soul-app/src/app/tab2/README.md

@@ -36,4 +36,4 @@
     - 问题三: “如何改善人际关系?”
         - 建议: “多与他人沟通,倾听对方的感受。”
 ##### 请您作为一名专业的Ionic前端工程师,帮我运用ionic v7 或v8及以上的angular版本standalone模式编写,选择合适的ionic组件来重构以上产品页面的各个区域和内容,如果涉及到图形效果请用ion-icon。并给出整个页面的tab2.page.html代码还有tab2.page.ts代码
-# Tab2 页面数据库建表
+# Tab2 页面数据库建表

+ 0 - 1
soul-app/src/app/tab2/tab2.page.html

@@ -12,7 +12,6 @@
   </ion-toolbar>
 </ion-header>
 
-
 <ion-content>
   <!-- 智能陪聊区 -->
   <section>

+ 28 - 53
soul-app/src/app/tab2/tab2.page.scss

@@ -1,61 +1,36 @@
-/* 设置页面背景色 */
 ion-content {
-  --background: #f9f9f9; /* 设置内容背景色 */
+  background: transparent !important; /* 确保ion-content透明 */
+  color: var(--ion-text-color); /* 保持文本颜色 */
 }
+
+ion-card {
+  background: transparent ; /* 确保卡片背景透明 */
+}
+
+ion-item {
+  background: transparent ; /* 确保列表项背景透明 */
+  
+}
+
 ion-avatar {
-    width: 50px; /* 或者你需要的任何尺寸 */
-    height: 50px; /* 保持宽高一致,避免变形 */
-  }
-   
-  ion-avatar img {
-    width: 100%; /* 让图片填满avatar */
-    height: auto; /* 保持图片比例 */
-  }
-  .header-image {
-    width: 100%;
-    height: auto; /* 保持图片比例 */
-    border-radius: 50%; /* 可选:将图片设置为圆形 */
-  }
-    /* 设置搜索框的样式 */
-    ion-searchbar {
-      padding: 10px; /* 内边距 */
-      border-radius: 4px; /* 圆角 */
-      font-size: 16px; /* 字体大小 */
-    }
-    /* 设置卡片的样式 */
-  ion-card {
-    margin: 10px; /* 卡片之间的间距 */
-    border-radius: 10px; /* 圆角效果 */
-    box-shadow: 0 2px 10px rgba(0, 0, 0, 0.1); /* 阴影效果 */
-  }
-  ion-card-title {
-    font-weight:bold;
-  }
-  ion-card-header {
-    --background: #ffffff; /* 使用CSS变量设置背景颜色为白色 */
-    /* 或者,如果你不使用CSS变量,可以直接使用background-color属性 */
-    position: relative; /* 设置相对定位 */
-  }
-  ion-toolbar {
-    --background: #ffffff; /* 同样使用CSS变量,但通常不是必需的 */
-  }
-  /* 设置列表项的样式 */
-  ion-item {
-    margin: 5px 0; /* 列表项之间的间距 */
-  }
-  ion-button {
-    font-size: 15px; /* 增大字体大小 */
-    margin-top: 8px; /* 上间距,仅在需要时添加 */
-    text-transform: none; /* 按钮文字不变形 */
-    height: 35px;
+  width: 50px ; /* 或者你需要的任何尺寸 */
+  height: 50px ; /* 保持宽高一致,避免变形 */
 }
 
+ion-avatar img {
+  width: 100% ; /* 让图片填满avatar */
+  height: auto ; /* 保持图片比例 */
+}
 
-.custom-searchbar {
-  --border-radius: 20px; /* 调整弯曲程度 */
-  --background: #f0f0f0; /* 可以自定义背景颜色 */
+ion-searchbar {
+  padding: 10px ; /* 内边距 */
+  border-radius: 4px ; /* 圆角 */
+  font-size: 16px ; /* 字体大小 */
 }
-ion-label p {
-  font-size: 1em; /* 调整字体大小,可以根据需要修改 */
-  line-height: 1.5; /* 调整行间距,使文本更易读 */
+
+ion-button {
+  font-size: 15px ; /* 增大字体大小 */
+  margin-top: 8px ; /* 上间距,仅在需要时添加 */
+  text-transform: none ; /* 按钮文字不变形 */
+  height: 35px ;
 }

+ 2 - 47
soul-app/src/app/tab2/tab2.page.ts

@@ -93,7 +93,7 @@ export class Tab2Page {
     let ACL: any = {
         "*": { read: true, write: true }
     };
-    this.consult.set({
+    consult.set({
         title: `${partner.get('expertise') || ""}领域聊天记录${dateStr}-${partner.get('name')}`,
         [isConsult ? 'chatpartner' : 'chatcompanion']: partner.toPointer(),
         user: currentUser.toPointer(),
@@ -125,7 +125,7 @@ export class Tab2Page {
             let content: any = message?.content;
             // 更新 consult 对象的内容
             consult.set({
-                content: chat.messageList, // 直接存储数组
+                content: chat.messageList, // 存储用户消息
             });
             // 仅在内容发生变化时保存
             consult.save();
@@ -137,51 +137,6 @@ export class Tab2Page {
     openChatPanelModal(this.modalCtrl, options);
 }
 
-// async generateReport() {
-//   if (!this.consult) {
-//     console.error('Consult对象未定义');
-//     return;
-//   }
-//   let chatContent = this.consult.get('content') || [];
-//   // 检查 chatContent 是否有效
-//   let report = "聊天记录报告\n\n";
-//   if (chatContent.length === 0) {
-//       report += "没有聊天记录。\n\n";
-//   } else {
-//       chatContent.forEach((message: any, index: number) => {
-//           report += `消息 ${index + 1}:\n\n`;
-//           report += `内容: ${message.content}\n\n`;
-          
-//           // 假设有一个情感分析函数 analyzeSentiment
-//           const sentiment = this.analyzeSentiment(message.content);
-//           report += `心晴分析: ${sentiment}\n\n`;
-//       });
-//   }
-//   // 显示报告
-//   await this.showReportModal(report);
-//   }
-//   analyzeSentiment(text:String) {
-//     // 这里可以使用简单的关键词匹配或更复杂的模型来分析情感
-//     if (text.includes("好") || text.includes("喜欢")) {
-//         return "积极";
-//     } else if (text.includes("坏") || text.includes("不喜欢")) {
-//         return "消极";
-//     } else {
-//         return "中性";
-//     }
-//   }
-//   extractKeywords(text:String): string[] {
-//     // 这里可以实现简单的关键词提取逻辑
-//     return text.split(/\s+/).filter(word => word.length > 0); // 示例:提取长度大于0的单词
-//   }
-//   async showReportModal(report: string) {
-//     const modal = await this.modalCtrl.create({
-//       component: ReportModalComponent, // 你需要创建这个组件来显示报告
-//       componentProps: { report }
-//     });
-//     return await modal.present();
-//   }
-
   questions = [
     {
       title: '如何应对焦虑?',

+ 1 - 1
soul-app/src/app/tab3/tab3.page.html

@@ -64,7 +64,7 @@
 
     <!-- 我的报告 -->
     <ion-item (click)="openReportModal()">
-      <ion-icon name="heart-outline" slot="start"></ion-icon>
+      <ion-icon name="book-outline" slot="start"></ion-icon>
       <ion-label>我的报告</ion-label>
       <ion-icon name="chevron-forward-outline" slot="end"></ion-icon>
     </ion-item>

+ 4 - 33
soul-app/src/app/tab3/tab3.page.ts

@@ -8,7 +8,7 @@ import { ModalController } from '@ionic/angular/standalone';
 import { openUserEditModal } from 'src/lib/user/modal-user-edit/modal-user-edit.component';
 import { openInfoModal } from '../info-modal/info-modal.component';
 import { openIdentityVerificationModal } from 'src/lib/user/modal-identity-verification/modal-identity-verification.component';
-import { ReportModalComponent } from '../report-modal/report-modal.component';
+import { Router } from '@angular/router';
 
 @Component({
   selector: 'app-tab3',
@@ -24,7 +24,7 @@ import { ReportModalComponent } from '../report-modal/report-modal.component';
 export class Tab3Page {
 
   currentUser:CloudUser|undefined
-  constructor(private modalCtrl:ModalController) {
+  constructor(private modalCtrl:ModalController,private router: Router) {
     this.currentUser = new CloudUser();
   }
   async login(){
@@ -53,36 +53,7 @@ export class Tab3Page {
   identityVerificationModal(){
     openIdentityVerificationModal(this.modalCtrl)
   }
-
-  async openReportModal() {
-    const modal = await this.modalCtrl.create({
-      component: ReportModalComponent,
-      componentProps: {
-        consult: this.getConsultData() // 传递 Consult 对象
-      }
-    });
-    
-    await modal.present();
-    const { data } = await modal.onWillDismiss();
-    if (data) {
-      console.log('生成的报告:', data.report);
-    }
-  }
-
-  getConsultData() {
-    // 这里返回 Consult 对象的逻辑
-    return {
-      get: (key: string) => {
-        // 模拟返回聊天记录
-        if (key === 'content') {
-          return [
-            { content: '我喜欢这项服务!' },
-            { content: '这真是太棒了!' },
-            { content: '我不喜欢这个选项。' }
-          ];
-        }
-        return null;
-      }
-    };
+  openReportModal() {
+    this.router.navigate(['tabs/report-modal'])
   }
 }

+ 3 - 2
soul-app/src/app/tabs/tabs.page.ts

@@ -6,7 +6,8 @@ import { home, chatbubbles, person,chevronBack, headset, personOutline, shieldCh
    informationCircleOutline,
    chevronDown,
    chevronUp,
-   star, } from 'ionicons/icons';
+   star,
+   bookOutline, } from 'ionicons/icons';
 
 
 @Component({
@@ -21,7 +22,7 @@ export class TabsPage {
 
   constructor() {
     addIcons({ home, chatbubbles, person ,chevronBack,headset,personOutline,shieldCheckmarkOutline,chevronForwardOutline,heartOutline,notificationsOutline,
-      settingsOutline,informationCircleOutline,chevronDown,chevronUp,star});
+      settingsOutline,informationCircleOutline,chevronDown,chevronUp,star,bookOutline});
   }
 
 }

+ 5 - 0
soul-app/src/app/tabs/tabs.routes.ts

@@ -51,6 +51,11 @@ export const routes: Routes = [
         loadComponent: () =>
           import('../consult-picture/consult-picture.component').then((m) => m.ConsultPictureComponent),
       },
+      {
+        path: 'report-modal',
+        loadComponent: () =>
+          import('../report-modal/report-modal.component').then((m) => m.ReportModalComponent),
+      },
       {
         path: '',
         redirectTo: '/tabs/tab1',

+ 1 - 1
soul-app/src/app/user-evaluate/user-evaluate.component.html

@@ -21,7 +21,7 @@
       [value]="userData['rating']" 
       (ionChange)="userDataChange('rating', $event)" 
       label="星星数量" 
-      placeholder="请您输入星星数量(1-5)" 
+      placeholder="请您输入星星数量(整数1-5)" 
       min="1" 
       max="5"></ion-input>
   </ion-item>