Эх сурвалжийг харах

Merge branch 'master' of http://git.fmode.cn:3000/yuebuzu/s202226701018

惊鸿戏梦 4 сар өмнө
parent
commit
5147e0a600

+ 45 - 0
wisdom-app/src/app/page/page-ai-knowledge/page-ai-knowledge.component.html

@@ -0,0 +1,45 @@
+
+<ion-header [translucent]="true">
+  <ion-toolbar class="toolbar">
+    <div>
+      <ion-button (click)="backHome()" color="primary">{{back}}</ion-button>
+    </div>
+  </ion-toolbar>
+</ion-header>
+
+<ion-content [fullscreen]="true">
+  <div>
+    <ion-list>
+      <ion-item>
+        <!-- <ion-input label="输入你想了解的科普信息" placeholder="Enter text"></ion-input> -->
+        <ion-input  [value]="kepu" placeholder="请输入科普" (ionInput)="kepuInput($event)"></ion-input>
+      </ion-item>
+    </ion-list>
+  </div>
+  <ion-button (click)="doInqueryTask()">执行问诊任务集</ion-button>
+  <!-- 意境画面提示词 -->
+  <div class="desc">
+    {{PictureDescResult}}
+  </div>
+  <!-- 生成结果 -->
+  @if(images.length) {
+    @for(imageUrl of images;track imageUrl){
+      <img [src]="imageUrl" alt="图片" srcset="">
+    }
+
+    <h3>图片地址:
+      <span class="copyable">{{images.join(', ')}}</span>
+    </h3>
+
+  }
+  <!-- 生成状态 -->
+  @if(!images.length){
+    <!-- <h2 style="display: grid; place-items: center;">欢迎使用头像生成器</h2> -->
+    @if(imagineWork.progress!=0){
+      <h1 style="display: grid; place-items: center;">生成中:{{imagineWork.progress}}</h1>
+    }
+    <!-- <div style="display: grid; place-items: center;">
+      <img src="../../assets/image/头像生成器.png">
+    </div> -->
+  }
+</ion-content>

+ 0 - 0
wisdom-app/src/app/page/page-ai-knowledge/page-ai-knowledge.component.scss


+ 22 - 0
wisdom-app/src/app/page/page-ai-knowledge/page-ai-knowledge.component.spec.ts

@@ -0,0 +1,22 @@
+import { ComponentFixture, TestBed, waitForAsync } from '@angular/core/testing';
+
+import { PageAiKnowledgeComponent } from './page-ai-knowledge.component';
+
+describe('PageAiKnowledgeComponent', () => {
+  let component: PageAiKnowledgeComponent;
+  let fixture: ComponentFixture<PageAiKnowledgeComponent>;
+
+  beforeEach(waitForAsync(() => {
+    TestBed.configureTestingModule({
+      imports: [PageAiKnowledgeComponent],
+    }).compileComponents();
+
+    fixture = TestBed.createComponent(PageAiKnowledgeComponent);
+    component = fixture.componentInstance;
+    fixture.detectChanges();
+  }));
+
+  it('should create', () => {
+    expect(component).toBeTruthy();
+  });
+});

+ 111 - 0
wisdom-app/src/app/page/page-ai-knowledge/page-ai-knowledge.component.ts

@@ -0,0 +1,111 @@
+import { Component, OnInit } from '@angular/core';
+import { NgModel } from '@angular/forms';
+import { Router } from '@angular/router';
+import { IonButton, IonCard, IonCardContent, IonCardHeader, IonCardTitle, IonContent, IonHeader, IonIcon, IonInput, IonItem, IonLabel, IonList, IonToolbar, ModalController } from '@ionic/angular/standalone';
+import { CloudObject, CloudQuery, CloudUser } from 'src/lib/ncloud';
+import { CommonModule } from '@angular/common';
+import { TaskInqueryUserStory } from 'src/agent/tasks/inquiry/1.inquiry-user-story';
+import { TaskInqueryDoctorQuestion } from 'src/agent/tasks/inquiry/2.inquiry-doctor-question';
+import { TaskInqueryUserAnswer } from 'src/agent/tasks/inquiry/3.inquiry-user-answer';
+import { TaskExecutor } from 'src/agent/agent.start';
+import { AgentTaskStep } from 'src/agent/agent.task';
+import { DalleOptions, FmodeChatCompletion, ImagineWork } from 'fmode-ng';
+
+@Component({
+  selector: 'page-ai-knowledge',
+  templateUrl: './page-ai-knowledge.component.html',
+  styleUrls: ['./page-ai-knowledge.component.scss'],
+  standalone: true,
+  imports:[
+    IonHeader,IonToolbar,IonButton,IonContent,IonCard,IonCardTitle, IonCardHeader,
+    IonCardContent,CommonModule, IonInput,IonList, IonItem, IonLabel, IonIcon
+  ]
+})
+export class PageAiKnowledgeComponent  implements OnInit {
+
+  back: string = 'back'; //返回
+  backHome(){
+    this.router.navigate(['/tabs/tab2']);
+  }
+  gotouser(){
+
+  }
+
+  avatar : string = "";
+  currentUser : CloudUser | undefined ;
+  objectId : string = "";
+
+  constructor(
+    private router: Router,
+    private modalCtrl: ModalController,
+  ) {
+    this.loadData();
+     // 示例任务,自己生成图片后请存储新的ID 
+    //  this.imagineWork = new ImagineWork("");
+     this.imagineWork.fetchTask().then(work=>{
+       if(work){
+         this.imagineWork.id = work.id
+       }
+       this.images = this.imagineWork?.images;
+     })
+  }
+  allMessage : Array<CloudObject> = [];
+  async loadData(){
+    this.currentUser = new CloudUser();
+    this.avatar = this.currentUser.data["avatar"];
+    this.objectId = this.currentUser.data['objectId'];
+  }
+   
+  ngOnInit() {
+  }
+  kepu:string = ""
+  kepuInput(ev:any){
+    this.kepu = ev.detail.value;
+    console.log(this.kepu);
+  }
+  imagineWork:ImagineWork = new ImagineWork; // 图片生成
+  images:Array<string> = [] // 图片数组
+  PictureDescResult:string = `` // 画面描述结果
+  doInqueryTask(){
+    this.imagineWork = new ImagineWork();
+        if (this.kepu.length > 0){
+        // 文本生成
+        let PromptTemplate = `您是一名专业的医学教育工作者,擅长将晦涩难懂的医学名词转化为一些通俗易懂的话语,请您根据下面提供的内容,将其描述的画面、场景、人物、物品等用故事的方式表达并将内容压缩在五个画面中,直接写出画面,并且描述的画风以漫画的风格为主
+        需求如下:
+        ${this.kepu}
+        `
+        let completion = new FmodeChatCompletion([
+          {role:"system",content:""},
+          {role:"user",content:PromptTemplate}
+        ])
+        completion.sendCompletion().subscribe((message:any)=>{
+          // 打印消息体
+          console.log("消息体",message.content)
+          // 赋值消息内容给组件内属性
+          this.PictureDescResult = message.content
+          if(message?.complete){ // 判断message为完成状态,则设置isComplete为完成
+            for(let i = 0; i < 5; i++){
+              // 图片生成
+              let PicturePrompt = `${this.PictureDescResult}\n根据画面${i+1}:进行绘画,如果图片中有谈话内容,请以普通话为主,风格:画面不带任何其他文字。其中以中国漫画人物为主体,人物诙谐幽默,符合中国现代人审美。图片展示的内容要和前面提供的内容保持一致`
+              console.log(PicturePrompt)
+              let options:DalleOptions = {prompt:PicturePrompt}
+              this.imagineWork?.draw(options).subscribe(work=>{
+                console.log("imagineWork",work?.toJSON())
+                console.log("images",work?.get("images"))
+                if (work?.get("images")?.length){
+                  // 将生成的每一张图片存储到数组中
+                  this.images.push(work?.get("images")[0]);
+                  console.log("work?.get('images')",work?.get("images"))
+                }
+                console.log("this.images",this.images)
+              })
+            }
+          }
+        })
+      }
+      else{
+        this.kepu = "请提供您合理的健康知识,我将根据其意境为您创作一幅画面的简短描述。"
+      }
+  }
+
+}

+ 1 - 0
wisdom-app/src/app/page/page-inquiry/page-inquiry.component.html

@@ -20,6 +20,7 @@
   <div class="createai">
     <ion-button expand="block" (click)="createAI()" color="primary" slot="start">创建ai医生</ion-button>
   </div>
+  
   <!-- <h1>科室</h1>
   <ion-input  [value]="keshi" placeholder="请输入科室" (ionInput)="keshiInput($event)"></ion-input> -->
 

+ 1 - 0
wisdom-app/src/app/page/page-inquiry/page-inquiry.component.ts

@@ -30,6 +30,7 @@ addIcons({radioButtonOffOutline,reloadOutline,checkmarkCircleOutline,closeCircle
     IonAvatar
   ],
 })
+
 export class PageInquiryComponent  implements OnInit {
   createAI(){
     this.router.navigate(['/tabs/tab1']);

+ 16 - 16
wisdom-app/src/app/page/page-my-health/page-my-health.component.html

@@ -6,20 +6,20 @@
   </ion-toolbar>
 </ion-header>
 
-<ion-content>
-  <ion-card>
-    <ion-card-header>
-      <ion-card-title>我的档案</ion-card-title>
-    </ion-card-header>
-    <ion-card-content>
-      <ion-item>
-        <ion-label position="stacked"></ion-label>
-        <ion-input  placeholder="请输入姓名"></ion-input>
-      </ion-item>
-      <ion-item>
-        <ion-label position="stacked"></ion-label>
-        <ion-input  placeholder="请输入年龄"></ion-input>
-      </ion-item>
-    </ion-card-content>
-  </ion-card>
+<ion-content [fullscreen]="true">
+  <div>
+    <!-- <p>尊敬的用户:{{currentUser?.data[realname]}},您好!</p> -->
+     <ion-card *ngFor="let message of allMessage">
+       <ion-card-header>
+         <ion-card-title>就诊时间:{{message?.updatedAt}}</ion-card-title>
+       </ion-card-header>
+       <ion-card-content>
+        <p>就诊医生{{message.data["doctor"]}}</p>
+        <p>就诊部门{{message.data["depart"]}}</p>
+        <p>门诊名称{{message.data["title"]}}</p>
+        <p>就诊内容{{message.data["content"]}}</p>
+        <!-- <fm-markdown-preview class="content-style" [content]="responseMsg"></fm-markdown-preview> -->
+       </ion-card-content>
+     </ion-card>
+  </div>
 </ion-content>

+ 28 - 11
wisdom-app/src/app/page/page-my-health/page-my-health.component.ts

@@ -3,8 +3,8 @@ import { ModalController, IonModal, IonHeader, IonToolbar, IonTitle, IonContent,
 import { addIcons } from 'ionicons';
 import { airplane, bluetooth, call, wifi } from 'ionicons/icons';
 import { CommonModule } from '@angular/common';
-import { CloudObject, CloudQuery } from 'src/lib/ncloud';
-
+import { CloudObject, CloudQuery, CloudUser } from 'src/lib/ncloud';
+// import { FmMarkdownPreview } from 'fmode-ng';
 import { Router } from '@angular/router';
 addIcons({ airplane, bluetooth, call, wifi });
 @Component({
@@ -17,22 +17,39 @@ addIcons({ airplane, bluetooth, call, wifi });
       IonLabel,IonItem,IonList,IonAvatar,CommonModule,IonButton,
       IonSegment, IonSegmentButton,
       IonSegmentContent,IonSegmentView,IonCardContent, IonCardTitle, IonCardHeader,IonCard,
-      IonModal,IonIcon, IonButtons,IonInput
+      IonModal,IonIcon, IonButtons,IonInput,
+      // FmMarkdownPreview,
     ]
 })
 export class PageMyHealthComponent  implements OnInit {
 
+avatar : string = "../assets/imgs/avatar.png";
+  currentUser : CloudUser | undefined ;
+  objectId : string = "";
+
   constructor(
     private router: Router
-  ) { }
-
-  ngOnInit() {}
-  /**
-   * 返回上一页
-   */
-  back:string = "<";
-
+  ) {
+    
+  }
+  allMessage : Array<CloudObject> = [];
+  async loadData(){
+    this.currentUser = new CloudUser();
+    this.avatar = this.currentUser.data["avatar"];
+    this.objectId = this.currentUser.data['objectId'];
+    let query = new CloudQuery('Consultation');
+    this.allMessage = await query.find();
+    console.log("allMessage",this.allMessage);
+  }
+   
+  ngOnInit() {
+    this.loadData();
+  }
+  back:string = "back"
   backHome(){
     this.router.navigate(['/tabs/tab1']);
   }
+  gotouser(){
+
+  }
 }

+ 1 - 1
wisdom-app/src/app/tab1/tab1.page.html

@@ -50,7 +50,7 @@ node --max_old_space_size=8192 node_modules/@angular/cli/bin/ng serve -->
   </div>
 
    <!-- 轮播图区域 -->
-  <div class="carousel-container" style="border-radius: 25px;">
+  <div class="carousel-container" style="border-radius: 25px; margin: 5px auto;">
     <div class="carousel" [style.transform]="'translateX(-' + currentSlide * 100 + '%)'">
       <div class="slide" *ngFor="let image of images">
         <img [src]="image" alt="轮播图">

+ 11 - 10
wisdom-app/src/app/tab1/tab1.page.ts

@@ -12,8 +12,6 @@ import { documentText, chatbubbles, person, calendar, newspaper,
    medkit,clipboard, podium, videocam, people } from 'ionicons/icons';
 import { CloudObject, CloudQuery, CloudUser } from 'src/lib/ncloud';
 import { ChatPanelOptions, FmodeChat, FmodeChatMessage, openChatPanelModal } from 'fmode-ng';
-import { openUserLoginModal } from 'src/lib/user/modal-user-login/modal-user-login.component';
-import { ArticleCardComponent } from '../component/article-card/article-card.component';
 addIcons({ documentText, chatbubbles, person, calendar, newspaper,
    medkit,clipboard, podium, videocam, people
  });
@@ -151,7 +149,8 @@ export class Tab1Page {
     console.log(['route'])
     this.router.navigate(['/tabs/inquiry/ai'])
   }
-
+  
+  currentUser:CloudUser|undefined
    /** 示例:问诊根据doctor拼接提示词 */
    async openInquiry(doctor:any){
     // 验证用户登录
@@ -159,13 +158,15 @@ export class Tab1Page {
     let userPrompt = ``
     if(!currentUser?.id){
       console.log("用户未登录,请登录后重试");
-      let user = await openUserLoginModal(this.modalCtrl);
-      if(!user?.id){
-        return
-      }
-      currentUser = user;
+      // let user = await openUserLoginModal(this.modalCtrl);
+      // if(!user?.id){
+      //   return
+      // }
+      // currentUser = user;
+      this.router.navigate(['/tabs/tab4'])
+      return 
     }
-    
+    console.log("currentUser: ",currentUser)
     if(currentUser?.get("realname")){
       userPrompt += `当前来访的患者,姓名:${currentUser?.get("realname")}`
     }
@@ -184,7 +185,7 @@ export class Tab1Page {
     let dateStr = `${now.getFullYear()}-${now.getMonth()+1}-${now.getDate()}`
     // 对象权限的精确指定
     let ACL:any = {
-      "*":{read:false,write:false}
+      "*":{read:true,write:true}
     }
     if(currentUser?.id){
       ACL[currentUser?.id] = {read:true,write:true}

+ 17 - 1
wisdom-app/src/app/tab2/tab2.page.html

@@ -5,7 +5,7 @@
       placeholder="搜索" 
       class="custom-searchbar" 
       (ionInput)="searchProducts($event)">
-    </ion-searchbar>
+      </ion-searchbar>
     </div>
     <div class="header">
       <ion-card-header>
@@ -136,4 +136,20 @@
         <ion-button expand="block" (click)="copyLink()">复制链接</ion-button>
     </ion-content>
   </ion-modal>
+
+
+  
+  <ion-fab slot="fixed" vertical="bottom" horizontal="end">
+    <ion-fab-button>
+      <ion-icon name="chevron-up-circle"></ion-icon>
+    </ion-fab-button>
+    <ion-fab-list side="top">
+      <ion-fab-button>
+        <ion-icon name="document"></ion-icon>
+      </ion-fab-button>
+      <ion-fab-button (click)="openAiKnowledge()">
+        <ion-icon name="globe"></ion-icon>
+      </ion-fab-button>
+    </ion-fab-list>
+  </ion-fab>
 </ion-content>

+ 0 - 1
wisdom-app/src/app/tab2/tab2.page.scss

@@ -119,7 +119,6 @@ ion-segment-content {
 
 
 
-
 // .tabs {
 //   display: flex;
 //   justify-content: space-around;

+ 35 - 16
wisdom-app/src/app/tab2/tab2.page.ts

@@ -1,5 +1,5 @@
-import { Component, NgModule } from '@angular/core';
-import { ModalController, IonModal, IonHeader, IonToolbar, IonTitle, IonContent, IonList, IonItem, IonLabel, IonAvatar, IonButton, IonSegment, IonSegmentButton, IonSegmentContent, IonSegmentView, IonCardContent, IonCardTitle, IonCardHeader, IonCard, IonIcon, IonButtons, IonSearchbar } from '@ionic/angular/standalone';
+import { Component } from '@angular/core';
+import { ModalController, IonModal, IonHeader, IonToolbar, IonTitle, IonContent, IonList, IonItem, IonLabel, IonAvatar, IonButton, IonSegment, IonSegmentButton, IonSegmentContent, IonSegmentView, IonCardContent, IonCardTitle, IonCardHeader, IonCard, IonIcon, IonButtons, IonSearchbar, IonFab, IonFabButton, IonFabList } from '@ionic/angular/standalone';
 import { ExploreContainerComponent } from '../explore-container/explore-container.component';
 import { addIcons } from 'ionicons';
 import { airplane, bluetooth, call, wifi } from 'ionicons/icons';
@@ -8,8 +8,16 @@ import { CommonModule } from '@angular/common';
 import { CloudObject, CloudQuery } from 'src/lib/ncloud';
 import { NavigationLanComponent } from '../component/navigation-lan/navigation-lan.component';
 import { Router } from '@angular/router';
+import {
+  chevronDownCircle,
+  chevronForwardCircle,
+  chevronUpCircle,
+  colorPalette,
+  document,
+  globe,
+} from 'ionicons/icons';
 addIcons({ airplane, bluetooth, call, wifi });
-
+addIcons({ chevronDownCircle, chevronForwardCircle, chevronUpCircle, colorPalette, document, globe });
 @Component({
   selector: 'app-tab2',
   templateUrl: 'tab2.page.html',
@@ -20,7 +28,7 @@ addIcons({ airplane, bluetooth, call, wifi });
     IonLabel,IonItem,IonList,IonAvatar,ArticleCardComponent,CommonModule,IonButton,
     IonSegment, IonSegmentButton,NavigationLanComponent,
     IonSegmentContent,IonSegmentView,IonCardContent, IonCardTitle, IonCardHeader,IonCard,
-    IonModal,IonIcon, IonButtons, IonSearchbar
+    IonModal,IonIcon, IonButtons, IonSearchbar, IonFab, IonFabButton,IonFabList,
   ]
 })
 
@@ -60,20 +68,20 @@ export class Tab2Page {
   shareDetailModal() {
     this.shareDetail = true;
     // 在这里确保模态框的aria-hidden属性被正确处理
-    setTimeout(() => {
-      const modalElement = document.querySelector('ion-modal');
-      if (modalElement) {
-        modalElement.setAttribute('aria-hidden', 'false');
-      }
-    }, 0);
+    // setTimeout(() => {
+    //   const modalElement = document.querySelector('ion-modal');
+    //   if (modalElement) {
+    //     modalElement.setAttribute('aria-hidden', 'false');
+    //   }
+    // }, 0);
   }
   closeShareModal(){
     this.shareDetail = false;
       // 在这里确保模态框关闭时处理aria-hidden属性
-    const modalElement = document.querySelector('ion-modal');
-    if (modalElement) {
-      modalElement.setAttribute('aria-hidden', 'true');
-    }
+    // const modalElement = document.querySelector('ion-modal');
+    // if (modalElement) {
+    //   modalElement.setAttribute('aria-hidden', 'true');
+    // }
   }
   copyLink() {
     console.log('复制链接');
@@ -83,7 +91,9 @@ export class Tab2Page {
   constructor(
     private modalCtrl:ModalController,
     private router:Router,
-  ) { }
+  ) { 
+    this.loadCards(); // 初始化时加载所有科普信息
+  }
 
   cards: Array<CloudObject> = []; // 当前显示的分类卡片
   async typeChange(ev: any) {
@@ -98,8 +108,17 @@ export class Tab2Page {
     this.cards = this.allCards.filter((card) => card.get('category').toLowerCase().includes(this.type));
   }
 
+
+  publishHealthInfo() {
+    // 这里可以添加发布求医信息的逻辑
+    console.log('发布求医信息');
+  }
+
+  openAiKnowledge(){
+    this.router.navigate(['tabs/ai-knowledge']);
+  }
   ngOnInit() {
-    this.loadCards();
+
   }
 
 }

+ 2 - 0
wisdom-app/src/app/tab3/tab3.page.html

@@ -81,7 +81,9 @@
     <ion-button fill="clear" (click)="viewMore('special')">查看更多</ion-button>
   </div>
 </div>
+<div>
 
+</div>
 <!-- 商品卡片列表区域 -->
 <div class="product-container">
   <ng-container *ngFor="let product of products">

+ 1 - 1
wisdom-app/src/app/tab3/tab3.page.scss

@@ -116,7 +116,7 @@
 .product-image {
   width: 100%;
   height: 100%;
-  object-fit: cover;
+  // object-fit: cover;
 }
 
 .product-info {

+ 0 - 9
wisdom-app/src/app/tab4/tab4.page.html

@@ -11,10 +11,6 @@
   <ion-card>
     <!-- 未登录 -->
      @if(!currentUser?.id){
-       <!-- <ion-card-header>
-         <ion-card-title>请登录</ion-card-title>
-         <ion-card-subtitle>暂无信息</ion-card-subtitle>
-        </ion-card-header> -->
         <ion-content>
           <ion-card class="login-card">
               <ion-card-header>
@@ -26,15 +22,10 @@
                 <img src="../../assets/image/logo.png" alt="健康主题图片" class="responsive-image">
             </div>
           </ion-card>
-          
       </ion-content>
       }
         <!-- 已登录 -->
      @if(currentUser?.id){
-      <!-- <ion-card-header>
-        <ion-card-title>{{currentUser?.get("username")}}</ion-card-title>
-        <ion-card-subtitle>姓名:{{currentUser?.get("realname")||"-"}} 性别:{{currentUser?.get("gender")||"-"}} 年龄:{{currentUser?.get("age")||"-"}}</ion-card-subtitle>
-      </ion-card-header> -->
       <ion-card-header class="card-header">
         <img [src]="currentUser?.get('avatar')|| '../../assets/image/头像示例.png'" alt="头像" class="avatar" />
         <div class="user-info">

+ 2 - 0
wisdom-app/src/app/tabs/tabs.page.ts

@@ -12,6 +12,7 @@ import {
   timeOutline, cloudDownloadOutline, bagCheckOutline, cardOutline, searchOutline, menuOutline,
   addCircleOutline, addOutline, optionsOutline
 } from 'ionicons/icons';
+import { CloudUser } from 'src/lib/ncloud';
 @Component({
   selector: 'app-tabs',
   templateUrl: 'tabs.page.html',
@@ -35,4 +36,5 @@ export class TabsPage {
         cardOutline, searchOutline, menuOutline, addCircleOutline, addOutline, optionsOutline
       });
   }
+
 }

+ 7 - 0
wisdom-app/src/app/tabs/tabs.routes.ts

@@ -89,6 +89,13 @@ export const routes: Routes = [
             (m) => m.DrugCategoryPage
           ),
       },
+      {
+        path: 'ai-knowledge',
+        loadComponent: () =>
+          import('../page/page-ai-knowledge/page-ai-knowledge.component').then(
+            (m) => m.PageAiKnowledgeComponent
+          ),
+      },
       {
         path: '',
         redirectTo: '/tabs/tab4',

+ 1 - 1
wisdom-app/src/lib/ncloud.ts

@@ -16,7 +16,7 @@ export class CloudObject {
 
     set(json: Record<string, any>) {
         Object.keys(json).forEach(key => {
-            if (["objectId", "id", "createdAt", "updatedAt"].indexOf(key) > -1) {
+            if (["objectId", "id", "createdAt", "updatedAt", "ACL"].indexOf(key) > -1) {
                 return;
             }
             this.data[key] = json[key];

+ 2 - 1
wisdom-app/src/lib/user/modal-user-login/modal-user-login.component.ts

@@ -47,7 +47,8 @@ export class ModalUserLoginComponent  implements OnInit {
     let user:any = new CloudUser();
     user = await user.login(this.username,this.password);
     if(user?.id){
-       this.modalCtrl.dismiss(user,"confirm")
+       this.modalCtrl.dismiss(user,"confirm") // 
+       console.log("登录成功")
     }else{
       console.log("登录失败")
     }

+ 3 - 4
wisdom-server/migration/data.js

@@ -107,7 +107,6 @@ module.exports.DoctorList = [
   ]
 
 module.exports.DepartList = [
-
       {
         "objectId": "dept001",
         "name": "内科",
@@ -422,7 +421,7 @@ module.exports.HotDotList = [
 
 module.exports.DrugList = [
   {
-      "objectId": "drug001",
+      "objectId": "001",
       "name": "头孢克肟片",
       "price": "¥50",
       "image": "https://drug-platform.cdn.bcebos.com/online/drug/d1647832930805172776.png?x-bce-process=image/auto-orient,o_1/resize,w_1242,limit_1/quality,Q_85/format,f_auto",
@@ -434,7 +433,7 @@ module.exports.DrugList = [
       "taboo": "对头孢菌素过敏者禁用"
   },
   {
-      "objectId": "drug002",
+      "objectId": "002",
       "name": "布洛芬缓释胶囊",
       "price": "¥80",
       "image": "http://t14.baidu.com/it/u=775392130,3619143306&fm=224&app=112&f=JPEG?w=500&h=500",
@@ -446,7 +445,7 @@ module.exports.DrugList = [
       "taboo": "孕妇、哺乳期妇女慎用"
   },
   {
-      "objectId": "drug003",
+      "objectId": "003",
       "name": "氯雷他定片",
       "price": "¥30",
       "image": "https://drug-platform.cdn.bcebos.com/drug-platform/online/drug/d1708155468458393265.jpg?x-bce-process=image/auto-orient,o_1/resize,w_1242,limit_1/quality,Q_85/format,f_auto",