Browse Source

Merge branch 'master' of http://git.fmode.cn:3000/4u/workspace

cainiao-hue 3 months ago
parent
commit
2b67c3d259
38 changed files with 1684 additions and 9 deletions
  1. 28 0
      .history/soul-app/src/app/info-modal/info-modal.component_20241221201127.html
  2. 39 0
      .history/soul-app/src/app/info-modal/info-modal.component_20241222161105.html
  3. 92 0
      .history/soul-app/src/app/tab3/tab3.page_20241222152027.html
  4. 92 0
      .history/soul-app/src/app/tab3/tab3.page_20241222153543.html
  5. 92 0
      .history/soul-app/src/app/tab3/tab3.page_20241222153648.html
  6. 92 0
      .history/soul-app/src/app/tab3/tab3.page_20241222153706.html
  7. 55 0
      .history/soul-app/src/app/tab3/tab3.page_20241222154131.ts
  8. 55 0
      .history/soul-app/src/app/tab3/tab3.page_20241222155745.ts
  9. 92 0
      .history/soul-app/src/app/tab3/tab3.page_20241222155746.html
  10. 27 0
      .history/soul-app/src/app/tabs/tabs.page_20241222153001.ts
  11. 3 0
      .history/soul-app/src/lib/user/modal-identity-verification/modal-identity-verification.component_20241222153957.html
  12. 0 0
      .history/soul-app/src/lib/user/modal-identity-verification/modal-identity-verification.component_20241222153957.scss
  13. 15 0
      .history/soul-app/src/lib/user/modal-identity-verification/modal-identity-verification.component_20241222153957.ts
  14. 45 0
      .history/soul-app/src/lib/user/modal-identity-verification/modal-identity-verification.component_20241222154547.html
  15. 74 0
      .history/soul-app/src/lib/user/modal-identity-verification/modal-identity-verification.component_20241222154551.ts
  16. 74 0
      .history/soul-app/src/lib/user/modal-identity-verification/modal-identity-verification.component_20241222154616.ts
  17. 76 0
      .history/soul-app/src/lib/user/modal-identity-verification/modal-identity-verification.component_20241222155740.ts
  18. 78 0
      .history/soul-app/src/lib/user/modal-identity-verification/modal-identity-verification.component_20241222160455.ts
  19. 49 0
      .history/soul-app/src/lib/user/modal-identity-verification/modal-identity-verification.component_20241222161648.html
  20. 80 0
      .history/soul-app/src/lib/user/modal-identity-verification/modal-identity-verification.component_20241222161849.ts
  21. 49 0
      .history/soul-app/src/lib/user/modal-identity-verification/modal-identity-verification.component_20241222163743.html
  22. 49 0
      .history/soul-app/src/lib/user/modal-identity-verification/modal-identity-verification.component_20241222163859.html
  23. 49 0
      .history/soul-app/src/lib/user/modal-identity-verification/modal-identity-verification.component_20241222163930.html
  24. 4 0
      .history/soul-app/src/lib/user/modal-identity-verification/modal-identity-verification.component_20241222164022.scss
  25. 4 0
      .history/soul-app/src/lib/user/modal-identity-verification/modal-identity-verification.component_20241222164059.scss
  26. 49 0
      .history/soul-app/src/lib/user/modal-identity-verification/modal-identity-verification.component_20241222164217.html
  27. 0 0
      .history/soul-app/src/lib/user/modal-identity-verification/modal-identity-verification.component_20241222164500.scss
  28. 49 0
      .history/soul-app/src/lib/user/modal-identity-verification/modal-identity-verification.component_20241222164504.html
  29. 49 0
      .history/soul-app/src/lib/user/modal-identity-verification/modal-identity-verification.component_20241222164538.html
  30. 46 0
      .history/soul-app/src/lib/user/modal-identity-verification/modal-identity-verification.component_20241222164715.html
  31. 11 0
      soul-app/src/app/info-modal/info-modal.component.html
  32. 13 7
      soul-app/src/app/tab3/tab3.page.html
  33. 4 0
      soul-app/src/app/tab3/tab3.page.ts
  34. 2 2
      soul-app/src/app/tabs/tabs.page.ts
  35. 46 0
      soul-app/src/lib/user/modal-identity-verification/modal-identity-verification.component.html
  36. 0 0
      soul-app/src/lib/user/modal-identity-verification/modal-identity-verification.component.scss
  37. 22 0
      soul-app/src/lib/user/modal-identity-verification/modal-identity-verification.component.spec.ts
  38. 80 0
      soul-app/src/lib/user/modal-identity-verification/modal-identity-verification.component.ts

+ 28 - 0
.history/soul-app/src/app/info-modal/info-modal.component_20241221201127.html

@@ -0,0 +1,28 @@
+<!-- 用户登录状态 -->
+<ion-card>
+  <ion-card-header>
+    <ion-card-title>
+      用户名:{{currentUser?.get("username")}}
+    </ion-card-title>
+   </ion-card-header>
+<ion-card-content>
+  <ion-item>
+    <ion-label>姓名: {{ userData['realname'] }}</ion-label>
+  </ion-item>
+  <ion-item>
+    <ion-label>昵称: {{ userData['username'] }}</ion-label>
+  </ion-item>
+  <ion-item>
+    <ion-label>年龄: {{ userData['age'] }}</ion-label>
+  </ion-item>
+  <ion-item>
+    <ion-label>性别: {{ userData['gender'] }}</ion-label>
+  </ion-item>
+  <ion-item>
+    <ion-label>邮箱: {{ userData['email'] }}</ion-label>
+  </ion-item>
+  <ion-item>
+    <ion-label>手机号: {{ userData['account'] }}</ion-label>
+  </ion-item>
+</ion-card-content>
+</ion-card>

+ 39 - 0
.history/soul-app/src/app/info-modal/info-modal.component_20241222161105.html

@@ -0,0 +1,39 @@
+<!-- 用户登录状态 -->
+<ion-card>
+  <ion-card-header>
+    <ion-card-title>
+      用户名:{{currentUser?.get("username")}}
+    </ion-card-title>
+   </ion-card-header>
+<ion-card-content>
+  <ion-item>
+    <ion-label>姓名: {{ userData['realname'] }}</ion-label>
+  </ion-item>
+  <ion-item>
+    <ion-label>昵称: {{ userData['username'] }}</ion-label>
+  </ion-item>
+  <ion-item>
+    <ion-label>年龄: {{ userData['age'] }}</ion-label>
+  </ion-item>
+  <ion-item>
+    <ion-label>性别: {{ userData['gender'] }}</ion-label>
+  </ion-item>
+  <ion-item>
+    <ion-label>学校: {{ userData['school'] || '--' }}</ion-label>
+  </ion-item>
+  <ion-item>
+    <ion-label>身份: {{ userData['identity'] || '--' }}</ion-label>
+  </ion-item>
+  <ion-item>
+    <ion-label>
+      {{ userData['identity'] === 'student' ? (userData['studentID'] || '--') : (userData['teacherID'] || '--') }}
+    </ion-label>
+  </ion-item>
+  <ion-item>
+    <ion-label>邮箱: {{ userData['email'] }}</ion-label>
+  </ion-item>
+  <ion-item>
+    <ion-label>手机号: {{ userData['account'] }}</ion-label>
+  </ion-item>
+</ion-card-content>
+</ion-card>

+ 92 - 0
.history/soul-app/src/app/tab3/tab3.page_20241222152027.html

@@ -0,0 +1,92 @@
+<ion-header [translucent]="true">
+  <ion-toolbar>
+    <ion-title>
+      我的
+    </ion-title>
+  </ion-toolbar>
+</ion-header>
+
+<ion-content [fullscreen]="true">
+
+
+  <!-- 用户登录状态 -->
+  <ion-card>
+    <!-- 未登录 -->
+     @if(!currentUser?.id){
+       <ion-card-header>
+         <ion-card-title>未登录,请先登录</ion-card-title>
+        </ion-card-header>
+      }
+        <!-- 已登录 -->
+     @if(currentUser?.id){
+      <ion-card-header>
+        <div style="display: flex; align-items: center;">
+          <img src="{{currentUser?.get('avatar')}}" alt="头像" style="width: 50px; height: 50px; border-radius: 50%; margin-right: 10px;">
+          <div>
+            <ion-card-title>{{currentUser?.get("username")}} </ion-card-title>
+            <ion-card-subtitle style="font-size: 16px;">性别: {{currentUser?.get("gender") || "-"}} 年龄: {{currentUser?.get("age") || "-"}}</ion-card-subtitle>
+          </div>
+        </div>
+
+      </ion-card-header>
+      }
+      <ion-card-content>
+      @if(!currentUser?.id){
+        <div style="display: flex; justify-content: space-between;">
+          <!--<ion-button expand="block"  color="danger" (click)="signup()" style="flex: 1; margin-right: 5px;">注册</ion-button>-->
+          <ion-button expand="block"  color="danger" (click)="login()" style="flex: 1; margin-left: 5px;">登录</ion-button>
+        </div>
+      }
+     @if(currentUser?.id){
+      <div style="display: flex; justify-content: space-between;">
+      <ion-button expand="block"  color="danger" (click)="editUser()" style="flex: 1; margin-right: 5px;">编辑资料</ion-button>
+      <ion-button expand="block"  color="danger" (click)="logout()" style="flex: 1; margin-right: 5px;">登出</ion-button>
+      </div>
+    }
+    </ion-card-content>
+  </ion-card>
+
+  <!-- 功能列表 -->
+  <ion-list>
+    <!-- 个人信息设置 -->
+    <ion-item>
+      <ion-icon name="person-outline" slot="start"></ion-icon>
+      <ion-label>个人信息</ion-label>
+      <ion-icon name="chevron-forward-outline" slot="end"></ion-icon>
+    </ion-item>
+
+    <!-- 我的收藏 -->
+    <ion-item>
+      <ion-icon name="heart-outline" slot="start"></ion-icon>
+      <ion-label>我的收藏</ion-label>
+      <ion-icon name="chevron-forward-outline" slot="end"></ion-icon>
+    </ion-item>
+
+    <!-- 消息通知 -->
+    <ion-item>
+      <ion-icon name="notifications-outline" slot="start"></ion-icon>
+      <ion-label>消息通知</ion-label>
+      <ion-icon name="chevron-forward-outline" slot="end"></ion-icon>
+    </ion-item>
+    <!-- 身份认证 -->
+    <ion-item>
+      <ion-icon name="shield-checkmark-outline" slot="start"></ion-icon>
+      <ion-label>身份认证</ion-label>
+      <ion-icon name="chevron-forward-outline" slot="end"></ion-icon>
+    </ion-item>
+    <!-- 系统设置 -->
+    <ion-item>
+      <ion-icon name="settings-outline" slot="start"></ion-icon>
+      <ion-label>系统设置</ion-label>
+      <ion-icon name="chevron-forward-outline" slot="end"></ion-icon>
+    </ion-item>
+
+    <!-- 关于我们 -->
+    <ion-item>
+      <ion-icon name="information-circle-outline" slot="start"></ion-icon>
+      <ion-label>关于我们</ion-label>
+      <ion-icon name="chevron-forward-outline" slot="end"></ion-icon>
+    </ion-item>
+  </ion-list>
+
+</ion-content>

+ 92 - 0
.history/soul-app/src/app/tab3/tab3.page_20241222153543.html

@@ -0,0 +1,92 @@
+<ion-header [translucent]="true">
+  <ion-toolbar>
+    <ion-title>
+      我的
+    </ion-title>
+  </ion-toolbar>
+</ion-header>
+
+<ion-content [fullscreen]="true">
+
+
+  <!-- 用户登录状态 -->
+  <ion-card>
+    <!-- 未登录 -->
+     @if(!currentUser?.id){
+       <ion-card-header>
+         <ion-card-title>未登录,请先登录</ion-card-title>
+        </ion-card-header>
+      }
+        <!-- 已登录 -->
+     @if(currentUser?.id){
+      <ion-card-header>
+        <div style="display: flex; align-items: center;">
+          <img src="{{currentUser?.get('avatar')}}" alt="头像" style="width: 50px; height: 50px; border-radius: 50%; margin-right: 10px;">
+          <div>
+            <ion-card-title>{{currentUser?.get("username")}} </ion-card-title>
+            <ion-card-subtitle style="font-size: 16px;">性别: {{currentUser?.get("gender") || "-"}} 年龄: {{currentUser?.get("age") || "-"}}</ion-card-subtitle>
+          </div>
+        </div>
+
+      </ion-card-header>
+      }
+      <ion-card-content>
+      @if(!currentUser?.id){
+        <div style="display: flex; justify-content: space-between;">
+          <!--<ion-button expand="block"  color="danger" (click)="signup()" style="flex: 1; margin-right: 5px;">注册</ion-button>-->
+          <ion-button expand="block"  color="danger" (click)="login()" style="flex: 1; margin-left: 5px;">登录</ion-button>
+        </div>
+      }
+     @if(currentUser?.id){
+      <div style="display: flex; justify-content: space-between;">
+      <ion-button expand="block"  color="danger" (click)="editUser()" style="flex: 1; margin-right: 5px;">编辑资料</ion-button>
+      <ion-button expand="block"  color="danger" (click)="logout()" style="flex: 1; margin-right: 5px;">登出</ion-button>
+      </div>
+    }
+    </ion-card-content>
+  </ion-card>
+
+  <!-- 功能列表 -->
+  <ion-list>
+    <!-- 个人信息设置 -->
+    <ion-item>
+      <ion-icon name="person-outline" slot="start" (click)="presentInfoModal()"></ion-icon>
+      <ion-label>个人信息</ion-label>
+      <ion-icon name="chevron-forward-outline" slot="end"></ion-icon>
+    </ion-item>
+
+    <!-- 我的收藏 -->
+    <ion-item>
+      <ion-icon name="heart-outline" slot="start"></ion-icon>
+      <ion-label>我的收藏</ion-label>
+      <ion-icon name="chevron-forward-outline" slot="end"></ion-icon>
+    </ion-item>
+
+    <!-- 消息通知 -->
+    <ion-item>
+      <ion-icon name="notifications-outline" slot="start"></ion-icon>
+      <ion-label>消息通知</ion-label>
+      <ion-icon name="chevron-forward-outline" slot="end"></ion-icon>
+    </ion-item>
+    <!-- 身份认证 -->
+    <ion-item>
+      <ion-icon name="shield-checkmark-outline" slot="start"></ion-icon>
+      <ion-label>身份认证</ion-label>
+      <ion-icon name="chevron-forward-outline" slot="end"></ion-icon>
+    </ion-item>
+    <!-- 系统设置 -->
+    <ion-item>
+      <ion-icon name="settings-outline" slot="start"></ion-icon>
+      <ion-label>系统设置</ion-label>
+      <ion-icon name="chevron-forward-outline" slot="end"></ion-icon>
+    </ion-item>
+
+    <!-- 关于我们 -->
+    <ion-item>
+      <ion-icon name="information-circle-outline" slot="start"></ion-icon>
+      <ion-label>关于我们</ion-label>
+      <ion-icon name="chevron-forward-outline" slot="end"></ion-icon>
+    </ion-item>
+  </ion-list>
+
+</ion-content>

+ 92 - 0
.history/soul-app/src/app/tab3/tab3.page_20241222153648.html

@@ -0,0 +1,92 @@
+<ion-header [translucent]="true">
+  <ion-toolbar>
+    <ion-title>
+      我的
+    </ion-title>
+  </ion-toolbar>
+</ion-header>
+
+<ion-content [fullscreen]="true">
+
+
+  <!-- 用户登录状态 -->
+  <ion-card>
+    <!-- 未登录 -->
+     @if(!currentUser?.id){
+       <ion-card-header>
+         <ion-card-title>未登录,请先登录</ion-card-title>
+        </ion-card-header>
+      }
+        <!-- 已登录 -->
+     @if(currentUser?.id){
+      <ion-card-header>
+        <div style="display: flex; align-items: center;">
+          <img src="{{currentUser?.get('avatar')}}" alt="头像" style="width: 50px; height: 50px; border-radius: 50%; margin-right: 10px;">
+          <div>
+            <ion-card-title>{{currentUser?.get("username")}} </ion-card-title>
+            <ion-card-subtitle style="font-size: 16px;">性别: {{currentUser?.get("gender") || "-"}} 年龄: {{currentUser?.get("age") || "-"}}</ion-card-subtitle>
+          </div>
+        </div>
+
+      </ion-card-header>
+      }
+      <ion-card-content>
+      @if(!currentUser?.id){
+        <div style="display: flex; justify-content: space-between;">
+          <!--<ion-button expand="block"  color="danger" (click)="signup()" style="flex: 1; margin-right: 5px;">注册</ion-button>-->
+          <ion-button expand="block"  color="danger" (click)="login()" style="flex: 1; margin-left: 5px;">登录</ion-button>
+        </div>
+      }
+     @if(currentUser?.id){
+      <div style="display: flex; justify-content: space-between;">
+      <ion-button expand="block"  color="danger" (click)="editUser()" style="flex: 1; margin-right: 5px;">编辑资料</ion-button>
+      <ion-button expand="block"  color="danger" (click)="logout()" style="flex: 1; margin-right: 5px;">登出</ion-button>
+      </div>
+    }
+    </ion-card-content>
+  </ion-card>
+
+  <!-- 功能列表 -->
+  <ion-list>
+    <!-- 个人信息设置 -->
+    <ion-item (click)="presentInfoModal()">
+      <ion-icon name="person-outline" slot="start"></ion-icon>
+      <ion-label>个人信息</ion-label>
+      <ion-icon name="chevron-forward-outline" slot="end"></ion-icon>
+    </ion-item>
+
+    <!-- 我的收藏 -->
+    <ion-item>
+      <ion-icon name="heart-outline" slot="start"></ion-icon>
+      <ion-label>我的收藏</ion-label>
+      <ion-icon name="chevron-forward-outline" slot="end"></ion-icon>
+    </ion-item>
+
+    <!-- 消息通知 -->
+    <ion-item>
+      <ion-icon name="notifications-outline" slot="start"></ion-icon>
+      <ion-label>消息通知</ion-label>
+      <ion-icon name="chevron-forward-outline" slot="end"></ion-icon>
+    </ion-item>
+    <!-- 身份认证 -->
+    <ion-item (click)="goToIdentityVerification()">
+      <ion-icon name="shield-checkmark-outline" slot="start"></ion-icon>
+      <ion-label>身份认证</ion-label>
+      <ion-icon name="chevron-forward-outline" slot="end"></ion-icon>
+    </ion-item>
+    <!-- 系统设置 -->
+    <ion-item>
+      <ion-icon name="settings-outline" slot="start"></ion-icon>
+      <ion-label>系统设置</ion-label>
+      <ion-icon name="chevron-forward-outline" slot="end"></ion-icon>
+    </ion-item>
+
+    <!-- 关于我们 -->
+    <ion-item>
+      <ion-icon name="information-circle-outline" slot="start"></ion-icon>
+      <ion-label>关于我们</ion-label>
+      <ion-icon name="chevron-forward-outline" slot="end"></ion-icon>
+    </ion-item>
+  </ion-list>
+
+</ion-content>

+ 92 - 0
.history/soul-app/src/app/tab3/tab3.page_20241222153706.html

@@ -0,0 +1,92 @@
+<ion-header [translucent]="true">
+  <ion-toolbar>
+    <ion-title>
+      我的
+    </ion-title>
+  </ion-toolbar>
+</ion-header>
+
+<ion-content [fullscreen]="true">
+
+
+  <!-- 用户登录状态 -->
+  <ion-card>
+    <!-- 未登录 -->
+     @if(!currentUser?.id){
+       <ion-card-header>
+         <ion-card-title>未登录,请先登录</ion-card-title>
+        </ion-card-header>
+      }
+        <!-- 已登录 -->
+     @if(currentUser?.id){
+      <ion-card-header>
+        <div style="display: flex; align-items: center;">
+          <img src="{{currentUser?.get('avatar')}}" alt="头像" style="width: 50px; height: 50px; border-radius: 50%; margin-right: 10px;">
+          <div>
+            <ion-card-title>{{currentUser?.get("username")}} </ion-card-title>
+            <ion-card-subtitle style="font-size: 16px;">性别: {{currentUser?.get("gender") || "-"}} 年龄: {{currentUser?.get("age") || "-"}}</ion-card-subtitle>
+          </div>
+        </div>
+
+      </ion-card-header>
+      }
+      <ion-card-content>
+      @if(!currentUser?.id){
+        <div style="display: flex; justify-content: space-between;">
+          <!--<ion-button expand="block"  color="danger" (click)="signup()" style="flex: 1; margin-right: 5px;">注册</ion-button>-->
+          <ion-button expand="block"  color="danger" (click)="login()" style="flex: 1; margin-left: 5px;">登录</ion-button>
+        </div>
+      }
+     @if(currentUser?.id){
+      <div style="display: flex; justify-content: space-between;">
+      <ion-button expand="block"  color="danger" (click)="editUser()" style="flex: 1; margin-right: 5px;">编辑资料</ion-button>
+      <ion-button expand="block"  color="danger" (click)="logout()" style="flex: 1; margin-right: 5px;">登出</ion-button>
+      </div>
+    }
+    </ion-card-content>
+  </ion-card>
+
+  <!-- 功能列表 -->
+  <ion-list>
+    <!-- 个人信息设置 -->
+    <ion-item (click)="presentInfoModal()">
+      <ion-icon name="person-outline" slot="start"></ion-icon>
+      <ion-label>个人信息</ion-label>
+      <ion-icon name="chevron-forward-outline" slot="end"></ion-icon>
+    </ion-item>
+
+    <!-- 我的收藏 -->
+    <ion-item>
+      <ion-icon name="heart-outline" slot="start"></ion-icon>
+      <ion-label>我的收藏</ion-label>
+      <ion-icon name="chevron-forward-outline" slot="end"></ion-icon>
+    </ion-item>
+
+    <!-- 消息通知 -->
+    <ion-item>
+      <ion-icon name="notifications-outline" slot="start"></ion-icon>
+      <ion-label>消息通知</ion-label>
+      <ion-icon name="chevron-forward-outline" slot="end"></ion-icon>
+    </ion-item>
+    <!-- 身份认证 -->
+    <ion-item >
+      <ion-icon name="shield-checkmark-outline" slot="start"></ion-icon>
+      <ion-label>身份认证</ion-label>
+      <ion-icon name="chevron-forward-outline" slot="end"></ion-icon>
+    </ion-item>
+    <!-- 系统设置 -->
+    <ion-item>
+      <ion-icon name="settings-outline" slot="start"></ion-icon>
+      <ion-label>系统设置</ion-label>
+      <ion-icon name="chevron-forward-outline" slot="end"></ion-icon>
+    </ion-item>
+
+    <!-- 关于我们 -->
+    <ion-item>
+      <ion-icon name="information-circle-outline" slot="start"></ion-icon>
+      <ion-label>关于我们</ion-label>
+      <ion-icon name="chevron-forward-outline" slot="end"></ion-icon>
+    </ion-item>
+  </ion-list>
+
+</ion-content>

+ 55 - 0
.history/soul-app/src/app/tab3/tab3.page_20241222154131.ts

@@ -0,0 +1,55 @@
+import { Component, CUSTOM_ELEMENTS_SCHEMA } from '@angular/core';
+import { IonHeader, IonToolbar, IonTitle, IonContent, IonList,IonItem,IonIcon,IonLabel,IonButton,IonAvatar,
+  IonCard,IonCardContent, IonCardHeader, IonCardSubtitle, IonCardTitle} from '@ionic/angular/standalone';
+import { ExploreContainerComponent } from '../explore-container/explore-container.component';
+import { CloudUser } from 'src/lib/ncloud';
+import { openUserLoginModal } from 'src/lib/user/modal-user-login/modal-user-login.component';
+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 { openUserIdentityVerificationModal } from 'src/lib/user/modal-identity-verification/modal-identity-verification.component';
+
+@Component({
+  selector: 'app-tab3',
+  templateUrl: 'tab3.page.html',
+  styleUrls: ['tab3.page.scss'],
+  standalone: true,
+  imports: [IonHeader,IonToolbar,IonTitle,IonContent,IonList,IonItem,IonIcon,IonLabel,IonButton,IonAvatar,
+    IonCard,IonCardContent,IonCardHeader,IonCardTitle,IonCardSubtitle,
+    ExploreContainerComponent
+  ],
+  schemas: [CUSTOM_ELEMENTS_SCHEMA]
+  })
+export class Tab3Page {
+
+  currentUser:CloudUser|undefined
+  constructor(private modalCtrl:ModalController) {
+    this.currentUser = new CloudUser();
+  }
+  async login(){
+    //弹出登录窗口
+    let user = await openUserLoginModal(this.modalCtrl);
+    if(user?.id){
+      this.currentUser = user
+    }
+  }
+  async signup(){
+    //弹出注册窗口
+    let user = await openUserLoginModal(this.modalCtrl,"signup");
+    if(user?.id){
+      this.currentUser = user
+    }
+  }
+  logout(){
+    this.currentUser?.logout();
+  }
+  editUser(){
+    openUserEditModal(this.modalCtrl)
+  }
+  presentInfoModal(){
+    openInfoModal(this.modalCtrl)
+  }
+  identityVerificationModal(){
+    openUserIdentityVerificationModal(this.modalCtrl)
+  }
+}

+ 55 - 0
.history/soul-app/src/app/tab3/tab3.page_20241222155745.ts

@@ -0,0 +1,55 @@
+import { Component, CUSTOM_ELEMENTS_SCHEMA } from '@angular/core';
+import { IonHeader, IonToolbar, IonTitle, IonContent, IonList,IonItem,IonIcon,IonLabel,IonButton,IonAvatar,
+  IonCard,IonCardContent, IonCardHeader, IonCardSubtitle, IonCardTitle} from '@ionic/angular/standalone';
+import { ExploreContainerComponent } from '../explore-container/explore-container.component';
+import { CloudUser } from 'src/lib/ncloud';
+import { openUserLoginModal } from 'src/lib/user/modal-user-login/modal-user-login.component';
+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';
+
+@Component({
+  selector: 'app-tab3',
+  templateUrl: 'tab3.page.html',
+  styleUrls: ['tab3.page.scss'],
+  standalone: true,
+  imports: [IonHeader,IonToolbar,IonTitle,IonContent,IonList,IonItem,IonIcon,IonLabel,IonButton,IonAvatar,
+    IonCard,IonCardContent,IonCardHeader,IonCardTitle,IonCardSubtitle,
+    ExploreContainerComponent
+  ],
+  schemas: [CUSTOM_ELEMENTS_SCHEMA]
+  })
+export class Tab3Page {
+
+  currentUser:CloudUser|undefined
+  constructor(private modalCtrl:ModalController) {
+    this.currentUser = new CloudUser();
+  }
+  async login(){
+    //弹出登录窗口
+    let user = await openUserLoginModal(this.modalCtrl);
+    if(user?.id){
+      this.currentUser = user
+    }
+  }
+  async signup(){
+    //弹出注册窗口
+    let user = await openUserLoginModal(this.modalCtrl,"signup");
+    if(user?.id){
+      this.currentUser = user
+    }
+  }
+  logout(){
+    this.currentUser?.logout();
+  }
+  editUser(){
+    openUserEditModal(this.modalCtrl)
+  }
+  presentInfoModal(){
+    openInfoModal(this.modalCtrl)
+  }
+  identityVerificationModal(){
+    openIdentityVerificationModal(this.modalCtrl)
+  }
+}

+ 92 - 0
.history/soul-app/src/app/tab3/tab3.page_20241222155746.html

@@ -0,0 +1,92 @@
+<ion-header [translucent]="true">
+  <ion-toolbar>
+    <ion-title>
+      我的
+    </ion-title>
+  </ion-toolbar>
+</ion-header>
+
+<ion-content [fullscreen]="true">
+
+
+  <!-- 用户登录状态 -->
+  <ion-card>
+    <!-- 未登录 -->
+     @if(!currentUser?.id){
+       <ion-card-header>
+         <ion-card-title>未登录,请先登录</ion-card-title>
+        </ion-card-header>
+      }
+        <!-- 已登录 -->
+     @if(currentUser?.id){
+      <ion-card-header>
+        <div style="display: flex; align-items: center;">
+          <img src="{{currentUser?.get('avatar')}}" alt="头像" style="width: 50px; height: 50px; border-radius: 50%; margin-right: 10px;">
+          <div>
+            <ion-card-title>{{currentUser?.get("username")}} </ion-card-title>
+            <ion-card-subtitle style="font-size: 16px;">性别: {{currentUser?.get("gender") || "-"}} 年龄: {{currentUser?.get("age") || "-"}}</ion-card-subtitle>
+          </div>
+        </div>
+
+      </ion-card-header>
+      }
+      <ion-card-content>
+      @if(!currentUser?.id){
+        <div style="display: flex; justify-content: space-between;">
+          <!--<ion-button expand="block"  color="danger" (click)="signup()" style="flex: 1; margin-right: 5px;">注册</ion-button>-->
+          <ion-button expand="block"  color="danger" (click)="login()" style="flex: 1; margin-left: 5px;">登录</ion-button>
+        </div>
+      }
+     @if(currentUser?.id){
+      <div style="display: flex; justify-content: space-between;">
+      <ion-button expand="block"  color="danger" (click)="editUser()" style="flex: 1; margin-right: 5px;">编辑资料</ion-button>
+      <ion-button expand="block"  color="danger" (click)="logout()" style="flex: 1; margin-right: 5px;">登出</ion-button>
+      </div>
+    }
+    </ion-card-content>
+  </ion-card>
+
+  <!-- 功能列表 -->
+  <ion-list>
+    <!-- 个人信息设置 -->
+    <ion-item (click)="presentInfoModal()">
+      <ion-icon name="person-outline" slot="start"></ion-icon>
+      <ion-label>个人信息</ion-label>
+      <ion-icon name="chevron-forward-outline" slot="end"></ion-icon>
+    </ion-item>
+
+    <!-- 我的收藏 -->
+    <ion-item>
+      <ion-icon name="heart-outline" slot="start"></ion-icon>
+      <ion-label>我的收藏</ion-label>
+      <ion-icon name="chevron-forward-outline" slot="end"></ion-icon>
+    </ion-item>
+
+    <!-- 消息通知 -->
+    <ion-item>
+      <ion-icon name="notifications-outline" slot="start"></ion-icon>
+      <ion-label>消息通知</ion-label>
+      <ion-icon name="chevron-forward-outline" slot="end"></ion-icon>
+    </ion-item>
+    <!-- 身份认证 -->
+    <ion-item (click)="identityVerificationModal()">
+      <ion-icon name="shield-checkmark-outline" slot="start"></ion-icon>
+      <ion-label>身份认证</ion-label>
+      <ion-icon name="chevron-forward-outline" slot="end"></ion-icon>
+    </ion-item>
+    <!-- 系统设置 -->
+    <ion-item>
+      <ion-icon name="settings-outline" slot="start"></ion-icon>
+      <ion-label>系统设置</ion-label>
+      <ion-icon name="chevron-forward-outline" slot="end"></ion-icon>
+    </ion-item>
+
+    <!-- 关于我们 -->
+    <ion-item>
+      <ion-icon name="information-circle-outline" slot="start"></ion-icon>
+      <ion-label>关于我们</ion-label>
+      <ion-icon name="chevron-forward-outline" slot="end"></ion-icon>
+    </ion-item>
+  </ion-list>
+
+</ion-content>

+ 27 - 0
.history/soul-app/src/app/tabs/tabs.page_20241222153001.ts

@@ -0,0 +1,27 @@
+import { Component, EnvironmentInjector, inject } from '@angular/core';
+import { IonTabs, IonTabBar, IonTabButton, IonTitle,IonIcon, IonLabel } from '@ionic/angular/standalone';
+import { addIcons } from 'ionicons';
+import { home, chatbubbles, person,chevronBack, headset, personOutline, shieldCheckmarkOutline,chevronForwardOutline, heartOutline, notificationsOutline,
+   settingsOutline,
+   informationCircleOutline,
+   chevronDown,
+   chevronUp,
+   star, } from 'ionicons/icons';
+
+
+@Component({
+  selector: 'app-tabs',
+  templateUrl: 'tabs.page.html',
+  styleUrls: ['tabs.page.scss'],
+  standalone: true,
+  imports: [IonTabs, IonTabBar, IonTabButton, IonIcon, IonLabel,IonTitle],
+})
+export class TabsPage {
+  public environmentInjector = inject(EnvironmentInjector);
+
+  constructor() {
+    addIcons({ home, chatbubbles, person ,chevronBack,headset,personOutline,shieldCheckmarkOutline,chevronForwardOutline,heartOutline,notificationsOutline,
+      settingsOutline,informationCircleOutline,chevronDown,chevronUp,star});
+  }
+
+}

+ 3 - 0
.history/soul-app/src/lib/user/modal-identity-verification/modal-identity-verification.component_20241222153957.html

@@ -0,0 +1,3 @@
+<p>
+  modal-identity-verification works!
+</p>

+ 0 - 0
.history/soul-app/src/lib/user/modal-identity-verification/modal-identity-verification.component_20241222153957.scss


+ 15 - 0
.history/soul-app/src/lib/user/modal-identity-verification/modal-identity-verification.component_20241222153957.ts

@@ -0,0 +1,15 @@
+import { Component, OnInit } from '@angular/core';
+
+@Component({
+  selector: 'app-modal-identity-verification',
+  templateUrl: './modal-identity-verification.component.html',
+  styleUrls: ['./modal-identity-verification.component.scss'],
+  standalone: true,
+})
+export class ModalIdentityVerificationComponent  implements OnInit {
+
+  constructor() { }
+
+  ngOnInit() {}
+
+}

+ 45 - 0
.history/soul-app/src/lib/user/modal-identity-verification/modal-identity-verification.component_20241222154547.html

@@ -0,0 +1,45 @@
+<ion-card>
+  <ion-card-header>
+    <ion-card-title>身份认证</ion-card-title>
+    <ion-card-subtitle>请填写您的身份信息</ion-card-subtitle>
+  </ion-card-header>
+  <ion-card-content>
+    <!-- 学校输入 -->
+    <ion-item>
+      <ion-label position="stacked">学校</ion-label>
+      <ion-input [(ngModel)]="userData.school" placeholder="请输入学校名称"></ion-input>
+    </ion-item>
+
+    <!-- 身份选择 -->
+    <ion-item>
+      <ion-label>身份</ion-label>
+      <ion-select [(ngModel)]="userData.identity" (ionChange)="onIdentityChange()">
+        <ion-select-option value="student">学生</ion-select-option>
+        <ion-select-option value="teacher">教师</ion-select-option>
+      </ion-select>
+    </ion-item>
+
+    <!-- 学生信息 -->
+    <div *ngIf="userData.identity === 'student'">
+      <ion-item>
+        <ion-label position="stacked">学号</ion-label>
+        <ion-input [(ngModel)]="userData.studentID" placeholder="请输入学号"></ion-input>
+      </ion-item>
+      <ion-item>
+        <ion-label position="stacked">学院</ion-label>
+        <ion-input [(ngModel)]="userData.department" placeholder="请输入学院名称"></ion-input>
+      </ion-item>
+    </div>
+
+    <!-- 教师信息 -->
+    <div *ngIf="userData.identity === 'teacher'">
+      <ion-item>
+        <ion-label position="stacked">工号</ion-label>
+        <ion-input [(ngModel)]="userData.teacherID" placeholder="请输入工号"></ion-input>
+      </ion-item>
+    </div>
+
+    <ion-button expand="block" color="danger" (click)="save()">保存</ion-button>
+    <ion-button expand="block" color="light" (click)="cancel()">取消</ion-button>
+  </ion-card-content>
+</ion-card>

+ 74 - 0
.history/soul-app/src/lib/user/modal-identity-verification/modal-identity-verification.component_20241222154551.ts

@@ -0,0 +1,74 @@
+import { OnInit } from '@angular/core';
+import { Component } from '@angular/core';
+import { ModalController, IonInput, IonItem, IonLabel, IonButton, IonCard, IonCardHeader, IonCardTitle, IonCardSubtitle, IonCardContent } from '@ionic/angular/standalone';
+import { CloudUser } from 'src/lib/ncloud';
+
+@Component({
+  selector: 'app-user-identity-verification-modal',
+  templateUrl: './user-identity-verification-modal.html',
+  styleUrls: ['./user-identity-verification-modal.scss'],
+  standalone: true,
+  imports: [
+    IonCard,
+    IonCardHeader,
+    IonCardTitle,
+    IonCardSubtitle,
+    IonCardContent,
+    IonButton,
+    IonInput,
+    IonItem,
+    IonLabel
+  ],
+})
+export class UserIdentityVerificationModal implements OnInit {
+  currentUser: CloudUser | undefined;
+  userData: any = {
+    school: '',
+    identity: '',
+    studentID: '',
+    department: '',
+    teacherID: ''
+  };
+
+  constructor(private modalCtrl: ModalController) {
+    this.currentUser = new CloudUser();
+  }
+
+  ngOnInit() {}
+
+  onIdentityChange() {
+    // 根据身份选择进行处理
+    if (this.userData.identity === 'student') {
+      this.userData.teacherID = ''; // 清空教师ID字段
+    } else if (this.userData.identity === 'teacher') {
+      this.userData.studentID = ''; // 清空学号字段
+      this.userData.department = ''; // 清空学院字段
+    }
+  }
+
+  async save() {
+    this.currentUser?.set(this.userData);
+    await this.currentUser?.save();
+    this.modalCtrl.dismiss(this.currentUser, "confirm");
+  }
+
+  cancel() {
+    this.modalCtrl.dismiss(null, "cancel");
+  }
+}
+
+export async function openUserIdentityVerificationModal(modalCtrl: ModalController): Promise<CloudUser | null> {
+  const modal = await modalCtrl.create({
+    component: UserIdentityVerificationModal,
+    breakpoints: [0.7, 1.0],
+    initialBreakpoint: 0.7
+  });
+  modal.present();
+
+  const { data, role } = await modal.onWillDismiss();
+
+  if (role === 'confirm') {
+    return data;
+  }
+  return null;
+}

+ 74 - 0
.history/soul-app/src/lib/user/modal-identity-verification/modal-identity-verification.component_20241222154616.ts

@@ -0,0 +1,74 @@
+import { OnInit } from '@angular/core';
+import { Component } from '@angular/core';
+import { ModalController, IonInput, IonItem, IonLabel, IonButton, IonCard, IonCardHeader, IonCardTitle, IonCardSubtitle, IonCardContent } from '@ionic/angular/standalone';
+import { CloudUser } from 'src/lib/ncloud';
+
+@Component({
+  selector: 'app-user-identity-verification-modal',
+  templateUrl: './user-identity-verification-modal.html',
+  styleUrls: ['./user-identity-verification-modal.scss'],
+  standalone: true,
+  imports: [
+    IonCard,
+    IonCardHeader,
+    IonCardTitle,
+    IonCardSubtitle,
+    IonCardContent,
+    IonButton,
+    IonInput,
+    IonItem,
+    IonLabel
+  ],
+})
+export class IdentityVerificationModal implements OnInit {
+  currentUser: CloudUser | undefined;
+  userData: any = {
+    school: '',
+    identity: '',
+    studentID: '',
+    department: '',
+    teacherID: ''
+  };
+
+  constructor(private modalCtrl: ModalController) {
+    this.currentUser = new CloudUser();
+  }
+
+  ngOnInit() {}
+
+  onIdentityChange() {
+    // 根据身份选择进行处理
+    if (this.userData.identity === 'student') {
+      this.userData.teacherID = ''; // 清空教师ID字段
+    } else if (this.userData.identity === 'teacher') {
+      this.userData.studentID = ''; // 清空学号字段
+      this.userData.department = ''; // 清空学院字段
+    }
+  }
+
+  async save() {
+    this.currentUser?.set(this.userData);
+    await this.currentUser?.save();
+    this.modalCtrl.dismiss(this.currentUser, "confirm");
+  }
+
+  cancel() {
+    this.modalCtrl.dismiss(null, "cancel");
+  }
+}
+
+export async function openUserIdentityVerificationModal(modalCtrl: ModalController): Promise<CloudUser | null> {
+  const modal = await modalCtrl.create({
+    component: IdentityVerificationModal,
+    breakpoints: [0.7, 1.0],
+    initialBreakpoint: 0.7
+  });
+  modal.present();
+
+  const { data, role } = await modal.onWillDismiss();
+
+  if (role === 'confirm') {
+    return data;
+  }
+  return null;
+}

+ 76 - 0
.history/soul-app/src/lib/user/modal-identity-verification/modal-identity-verification.component_20241222155740.ts

@@ -0,0 +1,76 @@
+import { OnInit } from '@angular/core';
+import { Component } from '@angular/core';
+import { ModalController, IonInput, IonItem, IonLabel, IonButton, IonCard, IonCardHeader, IonCardTitle, IonCardSubtitle, IonCardContent, IonSelect, IonSelectOption } from '@ionic/angular/standalone';
+import { CloudUser } from 'src/lib/ncloud';
+
+@Component({
+  selector: 'app-modal-identity-verification',
+  templateUrl: './modal-identity-verification.component.html',
+  styleUrls: ['./modal-identity-verification.component.scss'],
+  standalone: true,
+  imports: [
+    IonCard,
+    IonCardHeader,
+    IonCardTitle,
+    IonCardSubtitle,
+    IonCardContent,
+    IonButton,
+    IonInput,
+    IonItem,
+    IonLabel,
+    IonSelect,
+    IonSelectOption
+  ],
+})
+export class ModalIdentityVerificationComponent implements OnInit {
+  currentUser: CloudUser | undefined;
+  userData: any = {
+    school: '',
+    identity: '',
+    studentID: '',
+    department: '',
+    teacherID: ''
+  };
+
+  constructor(private modalCtrl: ModalController) {
+    this.currentUser = new CloudUser();
+  }
+
+  ngOnInit() {}
+
+  onIdentityChange() {
+    // 根据身份选择进行处理
+    if (this.userData.identity === 'student') {
+      this.userData.teacherID = ''; // 清空教师ID字段
+    } else if (this.userData.identity === 'teacher') {
+      this.userData.studentID = ''; // 清空学号字段
+      this.userData.department = ''; // 清空学院字段
+    }
+  }
+
+  async save() {
+    this.currentUser?.set(this.userData);
+    await this.currentUser?.save();
+    this.modalCtrl.dismiss(this.currentUser, "confirm");
+  }
+
+  cancel() {
+    this.modalCtrl.dismiss(null, "cancel");
+  }
+}
+
+export async function openIdentityVerificationModal(modalCtrl: ModalController): Promise<CloudUser | null> {
+  const modal = await modalCtrl.create({
+    component: ModalIdentityVerificationComponent,
+    breakpoints: [0.7, 1.0],
+    initialBreakpoint: 0.7
+  });
+  modal.present();
+
+  const { data, role } = await modal.onWillDismiss();
+
+  if (role === 'confirm') {
+    return data;
+  }
+  return null;
+}

+ 78 - 0
.history/soul-app/src/lib/user/modal-identity-verification/modal-identity-verification.component_20241222160455.ts

@@ -0,0 +1,78 @@
+import { OnInit } from '@angular/core';
+import { Component } from '@angular/core';
+import { ModalController, IonInput, IonItem, IonLabel, IonButton, IonCard, IonCardHeader, IonCardTitle, IonCardSubtitle, IonCardContent, IonSelect, IonSelectOption } from '@ionic/angular/standalone';
+import { CloudUser } from 'src/lib/ncloud';
+import { FormsModule } from '@angular/forms'; // 导入 FormsModule
+
+@Component({
+  selector: 'app-modal-identity-verification',
+  templateUrl: './modal-identity-verification.component.html',
+  styleUrls: ['./modal-identity-verification.component.scss'],
+  standalone: true,
+  imports: [
+    IonCard,
+    IonCardHeader,
+    IonCardTitle,
+    IonCardSubtitle,
+    IonCardContent,
+    IonButton,
+    IonInput,
+    IonItem,
+    IonLabel,
+    IonSelect,
+    IonSelectOption,
+    FormsModule,
+  ],
+})
+export class ModalIdentityVerificationComponent implements OnInit {
+  currentUser: CloudUser | undefined;
+  userData: any = {
+    school: '',
+    identity: '',
+    studentID: '',
+    department: '',
+    teacherID: ''
+  };
+
+  constructor(private modalCtrl: ModalController) {
+    this.currentUser = new CloudUser();
+  }
+
+  ngOnInit() {}
+
+  onIdentityChange() {
+    // 根据身份选择进行处理
+    if (this.userData.identity === 'student') {
+      this.userData.teacherID = ''; // 清空教师ID字段
+    } else if (this.userData.identity === 'teacher') {
+      this.userData.studentID = ''; // 清空学号字段
+      this.userData.department = ''; // 清空学院字段
+    }
+  }
+
+  async save() {
+    this.currentUser?.set(this.userData);
+    await this.currentUser?.save();
+    this.modalCtrl.dismiss(this.currentUser, "confirm");
+  }
+
+  cancel() {
+    this.modalCtrl.dismiss(null, "cancel");
+  }
+}
+
+export async function openIdentityVerificationModal(modalCtrl: ModalController): Promise<CloudUser | null> {
+  const modal = await modalCtrl.create({
+    component: ModalIdentityVerificationComponent,
+    breakpoints: [0.7, 1.0],
+    initialBreakpoint: 0.7
+  });
+  modal.present();
+
+  const { data, role } = await modal.onWillDismiss();
+
+  if (role === 'confirm') {
+    return data;
+  }
+  return null;
+}

+ 49 - 0
.history/soul-app/src/lib/user/modal-identity-verification/modal-identity-verification.component_20241222161648.html

@@ -0,0 +1,49 @@
+<ion-card>
+  <ion-card-header>
+    <ion-card-title>身份认证</ion-card-title>
+    <ion-card-subtitle>请填写您的身份信息</ion-card-subtitle>
+  </ion-card-header>
+  <ion-card-content>
+    <!-- 学校输入 -->
+    <ion-item>
+      <ion-label position="stacked">学校</ion-label>
+      <ion-input [(ngModel)]="userData.school" placeholder="请输入学校名称"></ion-input>
+    </ion-item>
+
+    <!-- 身份选择 -->
+    <ion-item>
+      <ion-label>身份</ion-label>
+      <ion-segment [(ngModel)]="userData.identity" (ionChange)="onIdentityChange()">
+        <ion-segment-button value="student">
+          学生
+        </ion-segment-button>
+        <ion-segment-button value="teacher">
+          教师
+        </ion-segment-button>
+      </ion-segment>
+    </ion-item>
+    
+    <!-- 学生信息 -->
+    <div *ngIf="userData.identity === 'student'">
+      <ion-item>
+        <ion-label position="stacked">学号</ion-label>
+        <ion-input [(ngModel)]="userData.studentID" placeholder="请输入学号"></ion-input>
+      </ion-item>
+      <ion-item>
+        <ion-label position="stacked">学院</ion-label>
+        <ion-input [(ngModel)]="userData.department" placeholder="请输入学院名称"></ion-input>
+      </ion-item>
+    </div>
+    
+    <!-- 教师信息 -->
+    <div *ngIf="userData.identity === 'teacher'">
+      <ion-item>
+        <ion-label position="stacked">工号</ion-label>
+        <ion-input [(ngModel)]="userData.teacherID" placeholder="请输入工号"></ion-input>
+      </ion-item>
+    </div>
+
+    <ion-button expand="block" color="danger" (click)="save()">保存</ion-button>
+    <ion-button expand="block" color="light" (click)="cancel()">取消</ion-button>
+  </ion-card-content>
+</ion-card>

+ 80 - 0
.history/soul-app/src/lib/user/modal-identity-verification/modal-identity-verification.component_20241222161849.ts

@@ -0,0 +1,80 @@
+import { OnInit } from '@angular/core';
+import { Component } from '@angular/core';
+import { ModalController, IonInput, IonItem, IonLabel, IonSegment,  IonButton, IonCard, IonSegmentButton,IonCardHeader, IonCardTitle, IonCardSubtitle, IonCardContent, IonSelect, IonSelectOption } from '@ionic/angular/standalone';
+import { CloudUser } from 'src/lib/ncloud';
+import { FormsModule } from '@angular/forms'; // 导入 FormsModule
+
+@Component({
+  selector: 'app-modal-identity-verification',
+  templateUrl: './modal-identity-verification.component.html',
+  styleUrls: ['./modal-identity-verification.component.scss'],
+  standalone: true,
+  imports: [
+    IonCard,
+    IonCardHeader,
+    IonCardTitle,
+    IonCardSubtitle,
+    IonCardContent,
+    IonSegment,  
+    IonSegmentButton,
+    IonButton,
+    IonInput,
+    IonItem,
+    IonLabel,
+    IonSelect,
+    IonSelectOption,
+    FormsModule,
+  ],
+})
+export class ModalIdentityVerificationComponent implements OnInit {
+  currentUser: CloudUser | undefined;
+  userData: any = {
+    school: '',
+    identity: '',
+    studentID: '',
+    department: '',
+    teacherID: ''
+  };
+
+  constructor(private modalCtrl: ModalController) {
+    this.currentUser = new CloudUser();
+  }
+
+  ngOnInit() {}
+
+  onIdentityChange() {
+    // 根据身份选择进行处理
+    if (this.userData.identity === 'student') {
+      this.userData.teacherID = ''; // 清空教师ID字段
+    } else if (this.userData.identity === 'teacher') {
+      this.userData.studentID = ''; // 清空学号字段
+      this.userData.department = ''; // 清空学院字段
+    }
+  }
+
+  async save() {
+    this.currentUser?.set(this.userData);
+    await this.currentUser?.save();
+    this.modalCtrl.dismiss(this.currentUser, "confirm");
+  }
+
+  cancel() {
+    this.modalCtrl.dismiss(null, "cancel");
+  }
+}
+
+export async function openIdentityVerificationModal(modalCtrl: ModalController): Promise<CloudUser | null> {
+  const modal = await modalCtrl.create({
+    component: ModalIdentityVerificationComponent,
+    breakpoints: [0.7, 1.0],
+    initialBreakpoint: 0.7
+  });
+  modal.present();
+
+  const { data, role } = await modal.onWillDismiss();
+
+  if (role === 'confirm') {
+    return data;
+  }
+  return null;
+}

+ 49 - 0
.history/soul-app/src/lib/user/modal-identity-verification/modal-identity-verification.component_20241222163743.html

@@ -0,0 +1,49 @@
+<ion-card>
+  <ion-card-header>
+    <ion-card-title>身份认证</ion-card-title>
+    <ion-card-subtitle>请填写您的身份信息</ion-card-subtitle>
+  </ion-card-header>
+  <ion-card-content>
+    <!-- 学校输入 -->
+    <ion-item>
+      <ion-label position="stacked">学校</ion-label>
+      <ion-input [(ngModel)]="userData.school" placeholder="请输入学校名称"></ion-input>
+    </ion-item>
+
+    <!-- 身份选择 -->
+    <ion-item>
+      <ion-label>身份</ion-label>
+      <ion-segment [(ngModel)]="userData.identity" (ionChange)="onIdentityChange()">
+        <ion-segment-button value="student">
+          学生
+        </ion-segment-button>
+        <ion-segment-button value="teacher">
+          教师
+        </ion-segment-button>
+      </ion-segment>
+    </ion-item>
+    
+    <!-- 学生信息 -->
+    <div *ngIf="userData.identity === 'student'" style="margin-top: 10px;">
+      <ion-item>
+        <ion-label position="stacked">学号</ion-label>
+        <ion-input [(ngModel)]="userData.studentID" placeholder="请输入学号"></ion-input>
+      </ion-item>
+      <ion-item>
+        <ion-label position="stacked">学院</ion-label>
+        <ion-input [(ngModel)]="userData.department" placeholder="请输入学院名称"></ion-input>
+      </ion-item>
+    </div>
+    
+    <!-- 教师信息 -->
+    <div *ngIf="userData.identity === 'teacher'" style="margin-top: 10px;">
+      <ion-item>
+        <ion-label position="stacked">工号</ion-label>
+        <ion-input [(ngModel)]="userData.teacherID" placeholder="请输入工号"></ion-input>
+      </ion-item>
+    </div>
+
+    <ion-button expand="block" color="danger" (click)="save()">保存</ion-button>
+    <ion-button expand="block" color="light" (click)="cancel()">取消</ion-button>
+  </ion-card-content>
+</ion-card>

+ 49 - 0
.history/soul-app/src/lib/user/modal-identity-verification/modal-identity-verification.component_20241222163859.html

@@ -0,0 +1,49 @@
+<ion-card>
+  <ion-card-header>
+    <ion-card-title>身份认证</ion-card-title>
+    <ion-card-subtitle>请填写您的身份信息</ion-card-subtitle>
+  </ion-card-header>
+  <ion-card-content>
+    <!-- 学校输入 -->
+    <ion-item>
+      <ion-label position="stacked">学校</ion-label>
+      <ion-input [(ngModel)]="userData.school" placeholder="请输入学校名称"></ion-input>
+    </ion-item>
+
+    <!-- 身份选择 -->
+    <ion-item>
+      <ion-label>身份</ion-label>
+      <ion-segment [(ngModel)]="userData.identity" (ionChange)="onIdentityChange()">
+        <ion-segment-button value="student">
+          学生
+        </ion-segment-button>
+        <ion-segment-button value="teacher">
+          教师
+        </ion-segment-button>
+      </ion-segment>
+    </ion-item>
+    
+    <!-- 学生信息 -->
+    <div *ngIf="userData.identity === 'student'">
+      <ion-item>
+        <ion-label position="stacked">学号</ion-label>
+        <ion-input [(ngModel)]="userData.studentID" placeholder="请输入学号"></ion-input>
+      </ion-item>
+      <ion-item>
+        <ion-label position="stacked">学院</ion-label>
+        <ion-input [(ngModel)]="userData.department" placeholder="请输入学院名称"></ion-input>
+      </ion-item>
+    </div>
+    
+    <!-- 教师信息 -->
+    <div *ngIf="userData.identity === 'teacher'">
+      <ion-item>
+        <ion-label position="stacked">工号</ion-label>
+        <ion-input [(ngModel)]="userData.teacherID" placeholder="请输入工号"></ion-input>
+      </ion-item>
+    </div>
+
+    <ion-button expand="block" color="danger" (click)="save()">保存</ion-button>
+    <ion-button expand="block" color="light" (click)="cancel()">取消</ion-button>
+  </ion-card-content>
+</ion-card>

+ 49 - 0
.history/soul-app/src/lib/user/modal-identity-verification/modal-identity-verification.component_20241222163930.html

@@ -0,0 +1,49 @@
+<ion-card>
+  <ion-card-header>
+    <ion-card-title>身份认证</ion-card-title>
+    <ion-card-subtitle>请填写您的身份信息</ion-card-subtitle>
+  </ion-card-header>
+  <ion-card-content>
+    <!-- 学校输入 -->
+    <ion-item>
+      <ion-label position="stacked">学校</ion-label>
+      <ion-input [(ngModel)]="userData.school" placeholder="请输入学校名称"></ion-input>
+    </ion-item>
+
+    <!-- 身份选择 -->
+    <ion-item>
+      <ion-label>身份</ion-label>
+      <ion-segment [(ngModel)]="userData.identity" (ionChange)="onIdentityChange()">
+        <ion-segment-button value="student">
+          学生
+        </ion-segment-button>
+        <ion-segment-button value="teacher">
+          教师
+        </ion-segment-button>
+      </ion-segment>
+    </ion-item>
+    
+    <!-- 学生信息 -->
+    <div *ngIf="userData.identity === 'student'" class="input-section">
+      <ion-item>
+        <ion-label position="stacked">学号</ion-label>
+        <ion-input [(ngModel)]="userData.studentID" placeholder="请输入学号"></ion-input>
+      </ion-item>
+      <ion-item>
+        <ion-label position="stacked">学院</ion-label>
+        <ion-input [(ngModel)]="userData.department" placeholder="请输入学院名称"></ion-input>
+      </ion-item>
+    </div>
+    
+    <!-- 教师信息 -->
+    <div *ngIf="userData.identity === 'teacher'" class="input-section">
+      <ion-item>
+        <ion-label position="stacked">工号</ion-label>
+        <ion-input [(ngModel)]="userData.teacherID" placeholder="请输入工号"></ion-input>
+      </ion-item>
+    </div>
+
+    <ion-button expand="block" color="danger" (click)="save()">保存</ion-button>
+    <ion-button expand="block" color="light" (click)="cancel()">取消</ion-button>
+  </ion-card-content>
+</ion-card>

+ 4 - 0
.history/soul-app/src/lib/user/modal-identity-verification/modal-identity-verification.component_20241222164022.scss

@@ -0,0 +1,4 @@
+.input-section {
+    margin-top: 10px;
+    height: auto;
+  }

+ 4 - 0
.history/soul-app/src/lib/user/modal-identity-verification/modal-identity-verification.component_20241222164059.scss

@@ -0,0 +1,4 @@
+.input-section {
+    margin-top: 10px;
+    height: 50px;
+  }

+ 49 - 0
.history/soul-app/src/lib/user/modal-identity-verification/modal-identity-verification.component_20241222164217.html

@@ -0,0 +1,49 @@
+<ion-card>
+  <ion-card-header>
+    <ion-card-title>身份认证</ion-card-title>
+    <ion-card-subtitle>请填写您的身份信息</ion-card-subtitle>
+  </ion-card-header>
+  <ion-card-content>
+    <!-- 学校输入 -->
+    <ion-item>
+      <ion-label position="stacked">学校</ion-label>
+      <ion-input [(ngModel)]="userData.school" placeholder="请输入学校名称"></ion-input>
+    </ion-item>
+
+    <!-- 身份选择 -->
+    <ion-item>
+      <ion-label>身份</ion-label>
+      <ion-segment [(ngModel)]="userData.identity" (ionChange)="onIdentityChange()">
+        <ion-segment-button value="student">
+          学生
+        </ion-segment-button>
+        <ion-segment-button value="teacher">
+          教师
+        </ion-segment-button>
+      </ion-segment>
+    </ion-item>
+    
+    <!-- 学生信息 -->
+    
+      <ion-item>
+        <ion-label position="stacked">学号</ion-label>
+        <ion-input [(ngModel)]="userData.studentID" placeholder="请输入学号"></ion-input>
+      </ion-item>
+      <ion-item>
+        <ion-label position="stacked">学院</ion-label>
+        <ion-input [(ngModel)]="userData.department" placeholder="请输入学院名称"></ion-input>
+      </ion-item>
+    
+    
+    <!-- 教师信息 -->
+    <div *ngIf="userData.identity === 'teacher'" class="input-section">
+      <ion-item>
+        <ion-label position="stacked">工号</ion-label>
+        <ion-input [(ngModel)]="userData.teacherID" placeholder="请输入工号"></ion-input>
+      </ion-item>
+    </div>
+
+    <ion-button expand="block" color="danger" (click)="save()">保存</ion-button>
+    <ion-button expand="block" color="light" (click)="cancel()">取消</ion-button>
+  </ion-card-content>
+</ion-card>

+ 0 - 0
.history/soul-app/src/lib/user/modal-identity-verification/modal-identity-verification.component_20241222164500.scss


+ 49 - 0
.history/soul-app/src/lib/user/modal-identity-verification/modal-identity-verification.component_20241222164504.html

@@ -0,0 +1,49 @@
+<ion-card>
+  <ion-card-header>
+    <ion-card-title>身份认证</ion-card-title>
+    <ion-card-subtitle>请填写您的身份信息</ion-card-subtitle>
+  </ion-card-header>
+  <ion-card-content>
+    <!-- 学校输入 -->
+    <ion-item>
+      <ion-label position="stacked">学校</ion-label>
+      <ion-input [(ngModel)]="userData.school" placeholder="请输入学校名称"></ion-input>
+    </ion-item>
+
+    <!-- 身份选择 -->
+    <ion-item>
+      <ion-label>身份</ion-label>
+      <ion-segment [(ngModel)]="userData.identity" (ionChange)="onIdentityChange()">
+        <ion-segment-button value="student">
+          学生
+        </ion-segment-button>
+        <ion-segment-button value="teacher">
+          教师
+        </ion-segment-button>
+      </ion-segment>
+    </ion-item>
+    
+    <!-- 学生信息 -->
+    
+      <ion-item *ngIf="userData.identity === 'student'">
+        <ion-label position="stacked">学号</ion-label>
+        <ion-input [(ngModel)]="userData.studentID" placeholder="请输入学号"></ion-input>
+      </ion-item>
+      <ion-item>
+        <ion-label position="stacked">学院</ion-label>
+        <ion-input [(ngModel)]="userData.department" placeholder="请输入学院名称"></ion-input>
+      </ion-item>
+    
+    
+    <!-- 教师信息 -->
+    
+      <ion-item *ngIf="userData.identity === 'teacher'">
+        <ion-label position="stacked">工号</ion-label>
+        <ion-input [(ngModel)]="userData.teacherID" placeholder="请输入工号"></ion-input>
+      </ion-item>
+   
+
+    <ion-button expand="block" color="danger" (click)="save()">保存</ion-button>
+    <ion-button expand="block" color="light" (click)="cancel()">取消</ion-button>
+  </ion-card-content>
+</ion-card>

+ 49 - 0
.history/soul-app/src/lib/user/modal-identity-verification/modal-identity-verification.component_20241222164538.html

@@ -0,0 +1,49 @@
+<ion-card>
+  <ion-card-header>
+    <ion-card-title>身份认证</ion-card-title>
+    <ion-card-subtitle>请填写您的身份信息</ion-card-subtitle>
+  </ion-card-header>
+  <ion-card-content>
+    <!-- 学校输入 -->
+    <ion-item>
+      <ion-label position="stacked">学校</ion-label>
+      <ion-input [(ngModel)]="userData.school" placeholder="请输入学校名称"></ion-input>
+    </ion-item>
+
+    <!-- 身份选择 -->
+    <ion-item>
+      <ion-label>身份</ion-label>
+      <ion-segment [(ngModel)]="userData.identity" (ionChange)="onIdentityChange()">
+        <ion-segment-button value="student">
+          学生
+        </ion-segment-button>
+        <ion-segment-button value="teacher">
+          教师
+        </ion-segment-button>
+      </ion-segment>
+    </ion-item>
+    
+    <!-- 学生信息 -->
+    
+      <ion-item *ngIf="userData.identity === 'student'">
+        <ion-label position="stacked">学号</ion-label>
+        <ion-input [(ngModel)]="userData.studentID" placeholder="请输入学号"></ion-input>
+      </ion-item>
+      <ion-item *ngIf="userData.identity === 'student'">
+        <ion-label position="stacked">学院</ion-label>
+        <ion-input [(ngModel)]="userData.department" placeholder="请输入学院名称"></ion-input>
+      </ion-item>
+    
+    
+    <!-- 教师信息 -->
+    
+      <ion-item *ngIf="userData.identity === 'teacher'">
+        <ion-label position="stacked">工号</ion-label>
+        <ion-input [(ngModel)]="userData.teacherID" placeholder="请输入工号"></ion-input>
+      </ion-item>
+   
+
+    <ion-button expand="block" color="danger" (click)="save()">保存</ion-button>
+    <ion-button expand="block" color="light" (click)="cancel()">取消</ion-button>
+  </ion-card-content>
+</ion-card>

+ 46 - 0
.history/soul-app/src/lib/user/modal-identity-verification/modal-identity-verification.component_20241222164715.html

@@ -0,0 +1,46 @@
+<ion-card>
+  <ion-card-header>
+    <ion-card-title>身份认证</ion-card-title>
+    <ion-card-subtitle>请填写您的身份信息</ion-card-subtitle>
+  </ion-card-header>
+  <ion-card-content>
+    <!-- 学校输入 -->
+    <ion-item>
+      <ion-label position="stacked">学校</ion-label>
+      <ion-input [(ngModel)]="userData.school" placeholder="请输入学校名称"></ion-input>
+    </ion-item>
+
+    <ion-item>
+      <ion-label>身份</ion-label>
+      <ion-segment [(ngModel)]="userData.identity" (ionChange)="onIdentityChange()">
+        <ion-segment-button value="student">
+          学生
+        </ion-segment-button>
+        <ion-segment-button value="teacher">
+          教师
+        </ion-segment-button>
+      </ion-segment>
+    </ion-item>
+    
+    <!-- 学号输入框 -->
+    <ion-item *ngIf="userData.identity === 'student'">
+      <ion-label position="stacked">学号</ion-label>
+      <ion-input [(ngModel)]="userData.studentID" placeholder="请输入学号"></ion-input>
+    </ion-item>
+    
+    <!-- 学院输入框 -->
+    <ion-item *ngIf="userData.identity === 'student'">
+      <ion-label position="stacked">学院</ion-label>
+      <ion-input [(ngModel)]="userData.department" placeholder="请输入学院名称"></ion-input>
+    </ion-item>
+    
+    <!-- 工号输入框 -->
+    <ion-item *ngIf="userData.identity === 'teacher'">
+      <ion-label position="stacked">工号</ion-label>
+      <ion-input [(ngModel)]="userData.teacherID" placeholder="请输入工号"></ion-input>
+    </ion-item>
+    
+    <ion-button expand="block" color="danger" (click)="save()">保存</ion-button>
+    <ion-button expand="block" color="light" (click)="cancel()">取消</ion-button>
+  </ion-card-content>
+</ion-card>

+ 11 - 0
soul-app/src/app/info-modal/info-modal.component.html

@@ -18,6 +18,17 @@
   <ion-item>
     <ion-label>性别: {{ userData['gender'] }}</ion-label>
   </ion-item>
+  <ion-item>
+    <ion-label>学校: {{ userData['school'] || '--' }}</ion-label>
+  </ion-item>
+  <ion-item>
+    <ion-label>身份: {{ userData['identity'] || '--' }}</ion-label>
+  </ion-item>
+  <ion-item>
+    <ion-label>
+      {{ userData['identity'] === 'student' ? (userData['studentID'] || '--') : (userData['teacherID'] || '--') }}
+    </ion-label>
+  </ion-item>
   <ion-item>
     <ion-label>邮箱: {{ userData['email'] }}</ion-label>
   </ion-item>

+ 13 - 7
soul-app/src/app/tab3/tab3.page.html

@@ -7,6 +7,8 @@
 </ion-header>
 
 <ion-content [fullscreen]="true">
+
+
   <!-- 用户登录状态 -->
   <ion-card>
     <!-- 未登录 -->
@@ -25,12 +27,13 @@
             <ion-card-subtitle style="font-size: 16px;">性别: {{currentUser?.get("gender") || "-"}} 年龄: {{currentUser?.get("age") || "-"}}</ion-card-subtitle>
           </div>
         </div>
+
       </ion-card-header>
       }
       <ion-card-content>
       @if(!currentUser?.id){
         <div style="display: flex; justify-content: space-between;">
-          <ion-button expand="block"  color="danger" (click)="signup()" style="flex: 1; margin-right: 5px;">注册</ion-button>
+          <!--<ion-button expand="block"  color="danger" (click)="signup()" style="flex: 1; margin-right: 5px;">注册</ion-button>-->
           <ion-button expand="block"  color="danger" (click)="login()" style="flex: 1; margin-left: 5px;">登录</ion-button>
         </div>
       }
@@ -42,15 +45,14 @@
     }
     </ion-card-content>
   </ion-card>
-  
+
   <!-- 功能列表 -->
-  <ion-card>
   <ion-list>
     <!-- 个人信息设置 -->
-    <ion-item>
+    <ion-item (click)="presentInfoModal()">
       <ion-icon name="person-outline" slot="start"></ion-icon>
       <ion-label>个人信息</ion-label>
-      <ion-icon name="chevron-forward-outline" slot="end" (click)="presentInfoModal()"></ion-icon>
+      <ion-icon name="chevron-forward-outline" slot="end"></ion-icon>
     </ion-item>
 
     <!-- 我的收藏 -->
@@ -66,7 +68,12 @@
       <ion-label>消息通知</ion-label>
       <ion-icon name="chevron-forward-outline" slot="end"></ion-icon>
     </ion-item>
-
+    <!-- 身份认证 -->
+    <ion-item (click)="identityVerificationModal()">
+      <ion-icon name="shield-checkmark-outline" slot="start"></ion-icon>
+      <ion-label>身份认证</ion-label>
+      <ion-icon name="chevron-forward-outline" slot="end"></ion-icon>
+    </ion-item>
     <!-- 系统设置 -->
     <ion-item>
       <ion-icon name="settings-outline" slot="start"></ion-icon>
@@ -81,6 +88,5 @@
       <ion-icon name="chevron-forward-outline" slot="end"></ion-icon>
     </ion-item>
   </ion-list>
-</ion-card>
 
 </ion-content>

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

@@ -7,6 +7,7 @@ import { openUserLoginModal } from 'src/lib/user/modal-user-login/modal-user-log
 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';
 
 @Component({
   selector: 'app-tab3',
@@ -48,4 +49,7 @@ export class Tab3Page {
   presentInfoModal(){
     openInfoModal(this.modalCtrl)
   }
+  identityVerificationModal(){
+    openIdentityVerificationModal(this.modalCtrl)
+  }
 }

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

@@ -1,7 +1,7 @@
 import { Component, EnvironmentInjector, inject } from '@angular/core';
 import { IonTabs, IonTabBar, IonTabButton, IonTitle,IonIcon, IonLabel } from '@ionic/angular/standalone';
 import { addIcons } from 'ionicons';
-import { home, chatbubbles, person,chevronBack, headset, personOutline, chevronForwardOutline, heartOutline, notificationsOutline,
+import { home, chatbubbles, person,chevronBack, headset, personOutline, shieldCheckmarkOutline,chevronForwardOutline, heartOutline, notificationsOutline,
    settingsOutline,
    informationCircleOutline,
    chevronDown,
@@ -20,7 +20,7 @@ export class TabsPage {
   public environmentInjector = inject(EnvironmentInjector);
 
   constructor() {
-    addIcons({ home, chatbubbles, person ,chevronBack,headset,personOutline,chevronForwardOutline,heartOutline,notificationsOutline,
+    addIcons({ home, chatbubbles, person ,chevronBack,headset,personOutline,shieldCheckmarkOutline,chevronForwardOutline,heartOutline,notificationsOutline,
       settingsOutline,informationCircleOutline,chevronDown,chevronUp,star});
   }
 

+ 46 - 0
soul-app/src/lib/user/modal-identity-verification/modal-identity-verification.component.html

@@ -0,0 +1,46 @@
+<ion-card>
+  <ion-card-header>
+    <ion-card-title>身份认证</ion-card-title>
+    <ion-card-subtitle>请填写您的身份信息</ion-card-subtitle>
+  </ion-card-header>
+  <ion-card-content>
+    <!-- 学校输入 -->
+    <ion-item>
+      <ion-label position="stacked">学校</ion-label>
+      <ion-input [(ngModel)]="userData.school" placeholder="请输入学校名称"></ion-input>
+    </ion-item>
+
+    <ion-item>
+      <ion-label>身份</ion-label>
+      <ion-segment [(ngModel)]="userData.identity" (ionChange)="onIdentityChange()">
+        <ion-segment-button value="student">
+          学生
+        </ion-segment-button>
+        <ion-segment-button value="teacher">
+          教师
+        </ion-segment-button>
+      </ion-segment>
+    </ion-item>
+    
+    <!-- 学号输入框 -->
+    <ion-item *ngIf="userData.identity === 'student'">
+      <ion-label position="stacked">学号</ion-label>
+      <ion-input [(ngModel)]="userData.studentID" placeholder="请输入学号"></ion-input>
+    </ion-item>
+    
+    <!-- 学院输入框 -->
+    <ion-item *ngIf="userData.identity === 'student'">
+      <ion-label position="stacked">学院</ion-label>
+      <ion-input [(ngModel)]="userData.department" placeholder="请输入学院名称"></ion-input>
+    </ion-item>
+    
+    <!-- 工号输入框 -->
+    <ion-item *ngIf="userData.identity === 'teacher'">
+      <ion-label position="stacked">工号</ion-label>
+      <ion-input [(ngModel)]="userData.teacherID" placeholder="请输入工号"></ion-input>
+    </ion-item>
+    
+    <ion-button expand="block" color="danger" (click)="save()">保存</ion-button>
+    <ion-button expand="block" color="light" (click)="cancel()">取消</ion-button>
+  </ion-card-content>
+</ion-card>

+ 0 - 0
soul-app/src/lib/user/modal-identity-verification/modal-identity-verification.component.scss


+ 22 - 0
soul-app/src/lib/user/modal-identity-verification/modal-identity-verification.component.spec.ts

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

+ 80 - 0
soul-app/src/lib/user/modal-identity-verification/modal-identity-verification.component.ts

@@ -0,0 +1,80 @@
+import { OnInit } from '@angular/core';
+import { Component } from '@angular/core';
+import { ModalController, IonInput, IonItem, IonLabel, IonSegment,  IonButton, IonCard, IonSegmentButton,IonCardHeader, IonCardTitle, IonCardSubtitle, IonCardContent, IonSelect, IonSelectOption } from '@ionic/angular/standalone';
+import { CloudUser } from 'src/lib/ncloud';
+import { FormsModule } from '@angular/forms'; // 导入 FormsModule
+
+@Component({
+  selector: 'app-modal-identity-verification',
+  templateUrl: './modal-identity-verification.component.html',
+  styleUrls: ['./modal-identity-verification.component.scss'],
+  standalone: true,
+  imports: [
+    IonCard,
+    IonCardHeader,
+    IonCardTitle,
+    IonCardSubtitle,
+    IonCardContent,
+    IonSegment,  
+    IonSegmentButton,
+    IonButton,
+    IonInput,
+    IonItem,
+    IonLabel,
+    IonSelect,
+    IonSelectOption,
+    FormsModule,
+  ],
+})
+export class ModalIdentityVerificationComponent implements OnInit {
+  currentUser: CloudUser | undefined;
+  userData: any = {
+    school: '',
+    identity: '',
+    studentID: '',
+    department: '',
+    teacherID: ''
+  };
+
+  constructor(private modalCtrl: ModalController) {
+    this.currentUser = new CloudUser();
+  }
+
+  ngOnInit() {}
+
+  onIdentityChange() {
+    // 根据身份选择进行处理
+    if (this.userData.identity === 'student') {
+      this.userData.teacherID = ''; // 清空教师ID字段
+    } else if (this.userData.identity === 'teacher') {
+      this.userData.studentID = ''; // 清空学号字段
+      this.userData.department = ''; // 清空学院字段
+    }
+  }
+
+  async save() {
+    this.currentUser?.set(this.userData);
+    await this.currentUser?.save();
+    this.modalCtrl.dismiss(this.currentUser, "confirm");
+  }
+
+  cancel() {
+    this.modalCtrl.dismiss(null, "cancel");
+  }
+}
+
+export async function openIdentityVerificationModal(modalCtrl: ModalController): Promise<CloudUser | null> {
+  const modal = await modalCtrl.create({
+    component: ModalIdentityVerificationComponent,
+    breakpoints: [0.7, 1.0],
+    initialBreakpoint: 0.7
+  });
+  modal.present();
+
+  const { data, role } = await modal.onWillDismiss();
+
+  if (role === 'confirm') {
+    return data;
+  }
+  return null;
+}