page-aichat.page.html 1.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657
  1. <!-- page-aichat.page.html -->
  2. <ion-header [translucent]="true">
  3. <ion-toolbar class="header-bar">
  4. <ion-title class="app-title">AI助手</ion-title>
  5. <ion-icon name="sparkles" slot="end" class="header-icon"></ion-icon>
  6. </ion-toolbar>
  7. </ion-header>
  8. <ion-content [fullscreen]="true" class="chat-content">
  9. <!-- 消息容器 -->
  10. <div #messagesContainer class="messages-container">
  11. <div
  12. *ngFor="let message of messages"
  13. class="message-wrapper"
  14. [class.user]="!message.isAI"
  15. [@messageAnim]>
  16. <div class="message-bubble">
  17. <div class="message-text">{{ message.content }}</div>
  18. <div class="message-time">{{ message.time }}</div>
  19. </div>
  20. <div class="message-status" *ngIf="!message.isAI">
  21. <ion-icon
  22. [name]="message.status === 'sending' ? 'time' :
  23. message.status === 'sent' ? 'checkmark' :
  24. 'alert-circle'"
  25. class="status-icon"></ion-icon>
  26. </div>
  27. </div>
  28. </div>
  29. <!-- 输入区域 -->
  30. <div class="input-wrapper">
  31. <div class="input-box">
  32. <ion-textarea
  33. #messageInput
  34. [(ngModel)]="newMessage"
  35. (keyup.enter)="sendMessage()"
  36. placeholder="输入消息..."
  37. autoGrow
  38. rows="1"
  39. class="message-input"
  40. [class.focused]="isInputFocused"
  41. (ionFocus)="isInputFocused = true"
  42. (ionBlur)="isInputFocused = false">
  43. </ion-textarea>
  44. <ion-button
  45. class="send-button"
  46. (click)="sendMessage()"
  47. [disabled]="!canSend"
  48. shape="round">
  49. <ion-icon
  50. [name]="canSend ? 'paper-plane' : 'send-outline'"
  51. class="send-icon"></ion-icon>
  52. </ion-button>
  53. </div>
  54. </div>
  55. </ion-content>