tab3.page.ts 4.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154
  1. import { Component , OnInit} from '@angular/core';
  2. import { ActivatedRoute } from '@angular/router';//xinzeng
  3. import { HttpClient } from '@angular/common/http';
  4. // 引用FmodeChatCompletion类
  5. import { TestChatCompletion, TestChatMessage } from './class-test-chat-completion';
  6. import { TestRxjsChatCompletion } from './class-rxjs-chat-completion';
  7. import { ModalController } from '@ionic/angular';
  8. import { ModalSuccessPage } from '../modal-success/modal-success.page';
  9. import { AlertController } from '@ionic/angular';
  10. @Component({
  11. selector: 'app-tab3',
  12. templateUrl: 'tab3.page.html',
  13. styleUrls: ['tab3.page.scss']
  14. })
  15. export class Tab3Page implements OnInit {
  16. transportType: 'recommend' | 'custom' = 'recommend';
  17. selectedCarrier: string = 'carrier1';
  18. selectedMethod: string = 'method1';
  19. //下面是从
  20. submittedData: any = null;
  21. messageList:Array<TestChatMessage> = []
  22. userInput:string = ""
  23. aiTransportAdvice: string = ''; // 用于存储AI的建议
  24. constructor(
  25. private route: ActivatedRoute,
  26. private http: HttpClient, // 注入HttpClient服务
  27. public modalCtrl: ModalController,
  28. private alertController: AlertController // 注入 AlertController
  29. ) {}
  30. ngOnInit() {
  31. // 使用 queryParams 来获取数据
  32. this.route.queryParams.subscribe(params => {
  33. const data = params['submittedData'];
  34. if (data) {
  35. this.submittedData = JSON.parse(decodeURIComponent(data));
  36. }
  37. });
  38. }
  39. confirmInfo() {
  40. console.log('信息已确认');
  41. // 确认信息的逻辑
  42. }
  43. async showAlert() {
  44. const alert = await this.alertController.create({
  45. header: '确认信息',
  46. message: '确认信息成功',
  47. mode: 'ios', // 可以根据需要选择 'md', 'ios'
  48. backdropDismiss: false, // 禁止点击背景关闭警告框
  49. buttons: [
  50. {
  51. text: '关闭',
  52. handler: () => {
  53. // 点击确定后的操作
  54. }
  55. }
  56. ],
  57. cssClass: 'custom-alert' // 自定义 CSS 类
  58. });
  59. await alert.present();
  60. }
  61. modifyInfo() {
  62. console.log('信息将被修改');
  63. // 修改信息的逻辑
  64. }
  65. AIadaptation(){
  66. let GuhiPromoptTemplate = `
  67. 你能够分析物品的类别,尺寸,发送地址和接受地址,找到最佳的现代运输方式。请根据以下信息找到最佳的一种的运输方式:
  68. ${JSON.stringify(this.submittedData)}。
  69. 请根据以上要求并且格式要严格。
  70. 请回答,并按照以下格式返回
  71. 你收到的物品信息:
  72. 运输公司:
  73. 运输方式:
  74. 预计花费时间:
  75. `
  76. this.messageList.push({
  77. role:"user",
  78. content: GuhiPromoptTemplate
  79. })
  80. // this.completion.createCompletionByStream()
  81. // messageList在competion内部,已经赋予了完整的message
  82. // 下方暴露出来的可订阅内容,主要是用于关键字过滤,或者其他开发逻辑的续写
  83. let testChatCompletion = new TestRxjsChatCompletion(this.messageList);
  84. testChatCompletion.createCompletionByStream().subscribe({
  85. next: ({ content, cumulativeContent, done }) => {
  86. console.log(`Content: ${content}`);
  87. console.log(`Cumulative Content: ${cumulativeContent}`);
  88. if (done) {
  89. this.aiTransportAdvice = cumulativeContent; // 更新aiTransportAdvice属性
  90. console.log('Stream completed');
  91. }
  92. },
  93. error: err => console.error(err),
  94. complete: () => console.log('Observable completed')
  95. });
  96. }
  97. //点击确认跳转
  98. confirmTransport() {
  99. console.log('运输方式已确认');
  100. // 显示提交成功模态
  101. this.presentSuccessModal();
  102. }
  103. async presentSuccessModal() {
  104. const modal = await this.modalCtrl.create({
  105. component: ModalSuccessPage,
  106. cssClass: 'my-custom-class'
  107. });
  108. return await modal.present();
  109. }
  110. sendMessage(){
  111. this.messageList.push({
  112. role:"user",
  113. content: this.userInput
  114. })
  115. this.userInput = ""
  116. // this.completion.createCompletionByStream()
  117. // messageList在competion内部,已经赋予了完整的message
  118. // 下方暴露出来的可订阅内容,主要是用于关键字过滤,或者其他开发逻辑的续写
  119. let testChatCompletion = new TestRxjsChatCompletion(this.messageList);
  120. testChatCompletion.createCompletionByStream().subscribe({
  121. next: ({ content, cumulativeContent, done }) => {
  122. console.log(`Content: ${content}`);
  123. console.log(`Cumulative Content: ${cumulativeContent}`);
  124. if (done) {
  125. console.log('Stream completed');
  126. }
  127. },
  128. error: err => console.error(err),
  129. complete: () => console.log('Observable completed')
  130. });
  131. }
  132. }