From 7f2343d38fa048f6ce179ea0ab2c1a04f41a213c Mon Sep 17 00:00:00 2001
From: wwf <1971391498@qq.com>
Date: 星期四, 09 十月 2025 18:05:11 +0800
Subject: [PATCH] 功能完善

---
 entry/src/main/resources/base/media/message_note.png                       |    0 
 entry/src/main/resources/base/media/classification_detail_cloudservice.png |    0 
 entry/src/main/resources/base/media/classification_detail_safety.png       |    0 
 entry/src/main/resources/base/media/account_vitae.png                      |    0 
 entry/src/main/ets/pages/MainPage.ets                                      |    2 
 entry/src/main/resources/base/media/classification_detail_AI.png           |    0 
 entry/src/main/resources/base/media/message_circle.png                     |    0 
 entry/src/main/ets/pages/account/CourseCollection.ets                      |  126 ++++++
 entry/src/main/resources/base/media/message_pencil.png                     |    0 
 entry/src/main/ets/pages/account/AboutPage.ets                             |  112 +++++
 entry/src/main/resources/base/profile/main_pages.json                      |    7 
 entry/src/main/ets/pages/account/UserInfoPage.ets                          |  115 +++++
 entry/src/main/ets/pages/home/Home.ets                                     |  233 ++++++++---
 entry/src/main/ets/pages/account/AccountPage.ets                           |  106 +++++
 entry/src/main/ets/pages/account/SettingPage.ets                           |   70 +++
 entry/src/main/resources/base/media/classification_detail_cloudcalc.png    |    0 
 entry/src/main/ets/pages/home/ClassificationDetail.ets                     |   63 ++-
 entry/src/main/ets/pages/account/LearningRecordPage.ets                    |   98 ++++
 entry/src/main/resources/base/media/message_gift.png                       |    0 
 entry/src/main/resources/base/media/classification_detail_link.png         |    0 
 entry/src/main/ets/pages/account/MessagePushPage.ets                       |   98 ++++
 entry/src/main/resources/base/media/classification_detail_roc.png          |    0 
 entry/src/main/ets/pages/account/PersonVitae.ets                           |   25 +
 entry/src/main/resources/base/media/classification_detail_bigdata.png      |    0 
 entry/src/main/resources/base/media/classification_detail_storage.png      |    0 
 entry/src/main/ets/pages/home/BannerDetail.ets                             |   83 ++-
 entry/src/main/resources/base/media/person_vitae.png                       |    0 
 oh-package-lock.json5                                                      |   37 +
 oh-package.json5                                                           |    8 
 entry/src/main/ets/pages/login/LoginPage.ets                               |    5 
 entry/src/main/resources/base/media/classification_detail_shutong.png      |    0 
 31 files changed, 1,061 insertions(+), 127 deletions(-)

diff --git a/entry/src/main/ets/pages/MainPage.ets b/entry/src/main/ets/pages/MainPage.ets
index 1e8946a..4d99409 100644
--- a/entry/src/main/ets/pages/MainPage.ets
+++ b/entry/src/main/ets/pages/MainPage.ets
@@ -20,7 +20,7 @@
     { icon: 'tabs_message_icon', title: '娑堟伅' },
     { icon: 'tabs_account_icon', title: '鎴戠殑' }
   ]
-  @State selectIndex: number = 3
+  @State selectIndex: number = 0
   private tabController: TabsController = new TabsController()
 
   @Builder tabItem(icon: ResourceStr,title: string,index: number){
diff --git a/entry/src/main/ets/pages/account/AboutPage.ets b/entry/src/main/ets/pages/account/AboutPage.ets
new file mode 100644
index 0000000..8634909
--- /dev/null
+++ b/entry/src/main/ets/pages/account/AboutPage.ets
@@ -0,0 +1,112 @@
+
+@Entry
+@Component
+export struct AboutPage {
+  build() {
+    Column() {
+      Row() {
+        Image($r('app.media.left_icon'))
+          .width(20)
+          .height(20)
+        Text('鍏充簬')
+          .fontSize(18)
+          .fontWeight(700)
+
+        Row()
+      }
+      .width('100%')
+      .padding(10)
+      .justifyContent(FlexAlign.SpaceBetween)
+
+      Divider()
+
+      Column() {
+        Column({ space: 10 }) {
+          Image($r('app.media.logo'))
+            .width(60)
+            .height(60)
+          Text('瀛﹁仒鍚岃')
+            .fontSize(14)
+            .fontWeight(500)
+            .fontColor(Color.Black)
+          Text('褰撳墠鐗堟湰 V2.1.2')
+            .fontSize(14)
+            .fontWeight(500)
+            .fontColor('#999999')
+        }
+        .width('100%')
+        .height('30%')
+        .padding({ top: 50 })
+
+        Column() {
+          Divider()
+            .margin({ bottom: 6 })
+          List({ space: 10, initialIndex: 0 }){
+            ListItem() {
+              Row() {
+                Text('妫�娴嬫洿鏂�')
+                  .fontSize(14)
+                  .fontWeight(500)
+                  .layoutWeight(1)
+                Image($r('app.media.chevron_right'))
+                  .width(12)
+                  .height(12)
+              }
+              .width('100%')
+              .padding(8)
+            }
+            ListItem() {
+              Row() {
+                Text('鍘昏瘎鍒�')
+                  .fontSize(14)
+                  .fontWeight(500)
+                  .layoutWeight(1)
+                Image($r('app.media.chevron_right'))
+                  .width(12)
+                  .height(12)
+              }
+              .width('100%')
+              .padding(8)
+            }
+            ListItem() {
+              Row() {
+                Text('鐢ㄦ埛鍗忚')
+                  .fontSize(14)
+                  .fontWeight(500)
+                  .layoutWeight(1)
+                Image($r('app.media.chevron_right'))
+                  .width(12)
+                  .height(12)
+              }
+              .width('100%')
+              .padding(8)
+            }
+            ListItem() {
+              Row() {
+                Text('闅愮鏀跨瓥')
+                  .fontSize(14)
+                  .fontWeight(500)
+                  .layoutWeight(1)
+                Image($r('app.media.chevron_right'))
+                  .width(12)
+                  .height(12)
+              }
+              .width('100%')
+              .padding(8)
+            }
+          }
+          .listDirection(Axis.Vertical) // 鎺掑垪鏂瑰悜
+          .scrollBar(BarState.Off)
+          .friction(0.6)
+          .edgeEffect(EdgeEffect.Spring)
+          .width('100%')
+          .divider({strokeWidth: 1,color: '#f0f0f0'})
+        }
+        .padding(16)
+      }
+      .padding({ top: 10 })
+      .width('100%')
+      .height('100%')
+    }
+  }
+}
\ No newline at end of file
diff --git a/entry/src/main/ets/pages/account/AccountPage.ets b/entry/src/main/ets/pages/account/AccountPage.ets
index dc6e525..556bb32 100644
--- a/entry/src/main/ets/pages/account/AccountPage.ets
+++ b/entry/src/main/ets/pages/account/AccountPage.ets
@@ -1,6 +1,73 @@
+import { ComponentContent, router } from "@kit.ArkUI"
+import { PromptActionClass } from '../../utils/PromptActionClass';
+
 class accountListItem {
   title: string = ''
   icon: string | Resource = ''
+}
+class DialogParams {
+  text: string = "";
+
+  constructor(text: string) {
+    this.text = text;
+  }
+}
+@Builder
+function buildText(params: DialogParams) {
+  Column({ space: 12 }) {
+    Text('宸叉矡閫�')
+      .width('100%')
+      .fontSize(18)
+      .fontWeight(700)
+      .textAlign(TextAlign.Center)
+    Text('4')
+      .fontSize(26)
+      .fontWeight(700)
+      .fontColor('#1761f4')
+      .width('100%')
+      .textAlign(TextAlign.Center)
+    Text('绱娌熼�氬矖浣嶆暟')
+      .fontSize(14)
+      .fontColor('#666666')
+    Text('鎮ㄦ槸鑱屽満涓殑涓祦鐮ユ煴')
+      .width('100%')
+      .textAlign(TextAlign.Center)
+      .padding(16)
+      .fontSize(14)
+      .fontColor(Color.Black)
+      .fontWeight(500)
+      .backgroundColor('#f6f7fa')
+  }
+  .width(300)
+  .padding(20)
+  .borderRadius(14)
+  .backgroundColor(Color.White)
+}
+
+@Builder
+function buildText1(params: DialogParams) {
+  Column({ space: 12 }) {
+    Text('甯姪涓績')
+      .width('100%')
+      .fontSize(18)
+      .fontWeight(700)
+      .fontColor(Color.Black)
+      .textAlign(TextAlign.Center)
+    Text('400-100-1212')
+      .fontSize(26)
+      .fontWeight(700)
+      .fontColor(Color.Black)
+      .width('100%')
+      .textAlign(TextAlign.Center)
+    Button('鎷ㄦ墦鐢佃瘽')
+      .width('100%')
+      .type(ButtonType.Normal)
+      .borderRadius(8)
+  }
+  .width(300)
+  .padding(20)
+  .borderRadius(14)
+  .backgroundColor(Color.White)
 }
 
 @Entry
@@ -12,6 +79,17 @@
     { title: '甯姪涓績', icon: $r('app.media.account_help') },
     { title: '鍏充簬鎴戜滑', icon: $r('app.media.account_info') },
   ]
+  @State dialogMessage: string = '娉ㄥ唽鎴愬姛';
+  private ctx: UIContext = this.getUIContext();
+  private contentNode: ComponentContent<Object> =
+    new ComponentContent(this.ctx, wrapBuilder(buildText), new DialogParams((this.dialogMessage)));
+  params: DialogParams = new DialogParams('娉ㄥ唽鎴愬姛')
+
+  aboutToAppear(): void {
+    PromptActionClass.setContext(this.ctx);
+    PromptActionClass.setContentNode(this.contentNode);
+    PromptActionClass.setOptions({ alignment: DialogAlignment.Center, offset: { dx: 0, dy: 0 } });
+  }
   build() {
     Column() {
       Text('涓汉涓績')
@@ -50,6 +128,11 @@
             .height(18)
         }
         .width('100%')
+        .onClick(() =>{
+          router.pushUrl({
+            url: ''
+          })
+        })
 
         Column({ space: 16 }) {
           Row() {
@@ -132,7 +215,7 @@
             .fontColor(Color.Black)
         }
         Column({ space: 6 }) {
-          Image($r('app.media.account_jianli'))
+          Image($r('app.media.account_vitae'))
             .width(40)
             .height(40)
           Text('涓汉绠�鍘�')
@@ -149,6 +232,12 @@
             .fontWeight(500)
             .fontColor(Color.Black)
         }
+        .onClick(() => {
+          console.log('鐐瑰嚮')
+          this.contentNode = new ComponentContent(this.ctx, wrapBuilder(buildText), new DialogParams((this.dialogMessage)));
+          PromptActionClass.setContentNode(this.contentNode);
+          PromptActionClass.openDialog()
+        })
       }
       .width('100%')
       .backgroundColor(Color.White)
@@ -176,6 +265,21 @@
               }
               .width('100%')
               .padding(8)
+              .onClick(() => {
+                if (item.title == '闅愮璁剧疆') {
+                  router.pushUrl({
+                    url: ''
+                  })
+                } else if (item.title == '娑堟伅閫氱煡') {
+
+                } else if (item.title == '甯姪涓績') {
+                  this.contentNode = new ComponentContent(this.ctx, wrapBuilder(buildText1), new DialogParams((this.dialogMessage)));
+                  PromptActionClass.setContentNode(this.contentNode);
+                  PromptActionClass.openDialog()
+                } else if (item.title == '鍏充簬鎴戜滑') {
+
+                }
+              })
             }
           })
         }
diff --git a/entry/src/main/ets/pages/account/CourseCollection.ets b/entry/src/main/ets/pages/account/CourseCollection.ets
new file mode 100644
index 0000000..39afb2f
--- /dev/null
+++ b/entry/src/main/ets/pages/account/CourseCollection.ets
@@ -0,0 +1,126 @@
+
+class Course {
+  title: string = ''
+  desc: string = ''
+  count: string = ''
+  time: string = ''
+  difficult: string = ''
+}
+@Entry
+@Component
+export struct CourseCollection {
+  @State courseList: Course[] = [
+    { title: '闆跺熀纭�鍒颁紒涓氱骇椤圭洰瀹炴垬', 'desc': '閽堝闆跺熀纭�灏忕櫧鎴栨兂鍗囩骇鎶�鏈爤鐨勫墠绔粠涓氳�咃紝浠庢牳蹇冭娉曞叆鎵嬶紝閫愭娣卞叆Vue3缁勪欢寮�鍙戞墦浠跺紑鍙戜欢寮�鍙�', count: '800', time: '01:30:23', difficult: '绠�鍗�' },
+    { title: '闆跺熀纭�鍒颁紒涓氱骇椤圭洰瀹炴垬', 'desc': '閽堝闆跺熀纭�灏忕櫧鎴栨兂鍗囩骇鎶�鏈爤鐨勫墠绔粠涓氳�咃紝浠庢牳蹇冭娉曞叆鎵嬶紝閫愭娣卞叆Vue3缁勪欢寮�鍙戞墦浠跺紑鍙戜欢寮�鍙�', count: '800', time: '01:30:23', difficult: '绠�鍗�' },
+    { title: 'Java楂樼骇锛欽VM娣卞害璋冧紭涓嶫VM娣卞害璋冧紭', 'desc': '閽堝闆跺熀纭�灏忕櫧鎴栨兂鍗囩骇鎶�鏈爤鐨勫墠绔粠涓氳�咃紝浠庢牳蹇冭娉曞叆鎵嬶紝閫愭娣卞叆Vue3缁勪欢寮�鍙戞墦浠跺紑鍙戜欢寮�鍙�', count: '800', time: '01:30:23', difficult: '绠�鍗�' },
+    { title: '闆跺熀纭�鍒颁紒涓氱骇椤圭洰瀹炴垬', 'desc': '閽堝闆跺熀纭�灏忕櫧鎴栨兂鍗囩骇鎶�鏈爤鐨勫墠绔粠涓氳�咃紝浠庢牳蹇冭娉曞叆鎵嬶紝閫愭娣卞叆Vue3缁勪欢寮�鍙戞墦浠跺紑鍙戜欢寮�鍙�', count: '800', time: '01:30:23', difficult: '绠�鍗�' },
+    { title: '闆跺熀纭�鍒颁紒涓氱骇椤圭洰瀹炴垬', 'desc': '閽堝闆跺熀纭�灏忕櫧鎴栨兂鍗囩骇鎶�鏈爤鐨勫墠绔粠涓氳�咃紝浠庢牳蹇冭娉曞叆鎵嬶紝閫愭娣卞叆Vue3缁勪欢寮�鍙戞墦浠跺紑鍙戜欢寮�鍙�', count: '800', time: '01:30:23', difficult: '绠�鍗�' },
+    { title: '闆跺熀纭�鍒颁紒涓氱骇椤圭洰瀹炴垬', 'desc': '閽堝闆跺熀纭�灏忕櫧鎴栨兂鍗囩骇鎶�鏈爤鐨勫墠绔粠涓氳�咃紝浠庢牳蹇冭娉曞叆鎵嬶紝閫愭娣卞叆Vue3缁勪欢寮�鍙戞墦浠跺紑鍙戜欢寮�鍙�', count: '800', time: '01:30:23', difficult: '绠�鍗�' },
+    { title: '闆跺熀纭�鍒颁紒涓氱骇椤圭洰瀹炴垬', 'desc': '閽堝闆跺熀纭�灏忕櫧鎴栨兂鍗囩骇鎶�鏈爤鐨勫墠绔粠涓氳�咃紝浠庢牳蹇冭娉曞叆鎵嬶紝閫愭娣卞叆Vue3缁勪欢寮�鍙戞墦浠跺紑鍙戜欢寮�鍙�', count: '800', time: '01:30:23', difficult: '绠�鍗�' },
+    { title: '闆跺熀纭�鍒颁紒涓氱骇椤圭洰瀹炴垬', 'desc': '閽堝闆跺熀纭�灏忕櫧鎴栨兂鍗囩骇鎶�鏈爤鐨勫墠绔粠涓氳�咃紝浠庢牳蹇冭娉曞叆鎵嬶紝閫愭娣卞叆Vue3缁勪欢寮�鍙戞墦浠跺紑鍙戜欢寮�鍙�', count: '800', time: '01:30:23', difficult: '绠�鍗�' },
+    { title: '闆跺熀纭�鍒颁紒涓氱骇椤圭洰瀹炴垬', 'desc': '閽堝闆跺熀纭�灏忕櫧鎴栨兂鍗囩骇鎶�鏈爤鐨勫墠绔粠涓氳�咃紝浠庢牳蹇冭娉曞叆鎵嬶紝閫愭娣卞叆Vue3缁勪欢寮�鍙戞墦浠跺紑鍙戜欢寮�鍙�', count: '800', time: '01:30:23', difficult: '绠�鍗�' },
+    { title: '闆跺熀纭�鍒颁紒涓氱骇椤圭洰瀹炴垬', 'desc': '閽堝闆跺熀纭�灏忕櫧鎴栨兂鍗囩骇鎶�鏈爤鐨勫墠绔粠涓氳�咃紝浠庢牳蹇冭娉曞叆鎵嬶紝閫愭娣卞叆Vue3缁勪欢寮�鍙戞墦浠跺紑鍙戜欢寮�鍙�', count: '800', time: '01:30:23', difficult: '绠�鍗�' },
+    { title: '闆跺熀纭�鍒颁紒涓氱骇椤圭洰瀹炴垬', 'desc': '閽堝闆跺熀纭�灏忕櫧鎴栨兂鍗囩骇鎶�鏈爤鐨勫墠绔粠涓氳�咃紝浠庢牳蹇冭娉曞叆鎵嬶紝閫愭娣卞叆Vue3缁勪欢寮�鍙戞墦浠跺紑鍙戜欢寮�鍙�', count: '800', time: '01:30:23', difficult: '绠�鍗�' },
+    { title: '闆跺熀纭�鍒颁紒涓氱骇椤圭洰瀹炴垬', 'desc': '閽堝闆跺熀纭�灏忕櫧鎴栨兂鍗囩骇鎶�鏈爤鐨勫墠绔粠涓氳�咃紝浠庢牳蹇冭娉曞叆鎵嬶紝閫愭娣卞叆Vue3缁勪欢寮�鍙戞墦浠跺紑鍙戜欢寮�鍙�', count: '800', time: '01:30:23', difficult: '绠�鍗�' },
+    { title: '闆跺熀纭�鍒颁紒涓氱骇椤圭洰瀹炴垬', 'desc': '閽堝闆跺熀纭�灏忕櫧鎴栨兂鍗囩骇鎶�鏈爤鐨勫墠绔粠涓氳�咃紝浠庢牳蹇冭娉曞叆鎵嬶紝閫愭娣卞叆Vue3缁勪欢寮�鍙戞墦浠跺紑鍙戜欢寮�鍙�', count: '800', time: '01:30:23', difficult: '绠�鍗�' },
+    { title: '闆跺熀纭�鍒颁紒涓氱骇椤圭洰瀹炴垬', 'desc': '閽堝闆跺熀纭�灏忕櫧鎴栨兂鍗囩骇鎶�鏈爤鐨勫墠绔粠涓氳�咃紝浠庢牳蹇冭娉曞叆鎵嬶紝閫愭娣卞叆Vue3缁勪欢寮�鍙戞墦浠跺紑鍙戜欢寮�鍙�', count: '800', time: '01:30:23', difficult: '绠�鍗�' },
+    { title: '闆跺熀纭�鍒颁紒涓氱骇椤圭洰瀹炴垬', 'desc': '閽堝闆跺熀纭�灏忕櫧鎴栨兂鍗囩骇鎶�鏈爤鐨勫墠绔粠涓氳�咃紝浠庢牳蹇冭娉曞叆鎵嬶紝閫愭娣卞叆Vue3缁勪欢寮�鍙戞墦浠跺紑鍙戜欢寮�鍙�', count: '800', time: '01:30:23', difficult: '绠�鍗�' },
+    { title: '闆跺熀纭�鍒颁紒涓氱骇椤圭洰瀹炴垬', 'desc': '閽堝闆跺熀纭�灏忕櫧鎴栨兂鍗囩骇鎶�鏈爤鐨勫墠绔粠涓氳�咃紝浠庢牳蹇冭娉曞叆鎵嬶紝閫愭娣卞叆Vue3缁勪欢寮�鍙戞墦浠跺紑鍙戜欢寮�鍙�', count: '800', time: '01:30:23', difficult: '绠�鍗�' },
+
+  ]
+  build() {
+    Column() {
+      Row() {
+        Image($r('app.media.left_icon'))
+          .width(20)
+          .height(20)
+        Text('璇剧▼鏀惰棌')
+          .fontSize(18)
+          .fontWeight(700)
+        Row()
+      }
+      .width('100%')
+      .padding(10)
+      .justifyContent(FlexAlign.SpaceBetween)
+
+      Divider()
+
+      Column() {
+        List({ space: 10, initialIndex: 0 }) {
+          ForEach(this.courseList, (item: Course, index: number) => {
+            ListItem() {
+              Row({ space: 10 }) {
+                Column() {
+                  Text(item.title)
+                    .fontSize(14)
+                    .fontWeight(800)
+                    .maxLines(1)
+                    .textOverflow({ overflow: TextOverflow.Ellipsis })
+                  Text(item.desc)
+                    .fontSize(12)
+                    .fontColor('#666666')
+                    .maxLines(2)
+                    .textOverflow({ overflow: TextOverflow.Ellipsis })
+                  Row() {
+                    Row({ space: 2 }) {
+                      Image($r('app.media.person_icon'))
+                        .width(10)
+                        .height(10)
+                      Text(item.count)
+                        .fontSize(10)
+                        .fontColor('#666666')
+                    }
+                    Row({ space: 2 }) {
+                      Image($r('app.media.video_icon'))
+                        .width(10)
+                        .height(10)
+                      Text(item.time)
+                        .fontSize(10)
+                        .fontColor('#666666')
+                    }
+                    Text() {
+                      Span('璇剧▼闅惧害: ')
+                      Span(item.difficult)
+                    }
+                    .fontSize(10)
+                    .fontColor('#666666')
+                  }
+                  .width('100%')
+                  .justifyContent(FlexAlign.SpaceBetween)
+                }
+                .layoutWeight(0)
+                .width(170)
+                .height('100%')
+                .justifyContent(FlexAlign.SpaceBetween)
+                .alignItems(HorizontalAlign.Start)
+                Image($r('app.media.active_list_img'))
+                  .aspectRatio(16/9)
+                  .height('100%')
+                  .layoutWeight(1)
+              }
+              .width('100%')
+              .height(100)
+              .padding(10)
+              .justifyContent(FlexAlign.SpaceBetween)
+              .border({ width: 1, style: BorderStyle.Solid, color: '#f2f2f2' })
+              .borderRadius(10)
+            }
+          }, (index: number) => index.toString())
+        }
+        .listDirection(Axis.Vertical) // 鎺掑垪鏂瑰悜
+        .scrollBar(BarState.Off)
+        .friction(0.6)
+        .edgeEffect(EdgeEffect.Spring)
+        .width('100%')
+        .height('100%')
+
+      }
+      .padding(16)
+
+
+
+    }
+    .width('100%')
+    .height('100%')
+  }
+}
\ No newline at end of file
diff --git a/entry/src/main/ets/pages/account/LearningRecordPage.ets b/entry/src/main/ets/pages/account/LearningRecordPage.ets
new file mode 100644
index 0000000..ed49d4c
--- /dev/null
+++ b/entry/src/main/ets/pages/account/LearningRecordPage.ets
@@ -0,0 +1,98 @@
+import { McLineChart, Options } from '@mcui/mccharts'
+
+@Entry
+@Component
+export struct LearningRecordPage {
+  @State maxData: number[] = [0, 0, 0, 5, 0, 5, 0]
+  // 鍒濆鍖栨暟鎹�
+  @State seriesOption: Options = new Options({
+    xAxis:{
+      data:['09-01','09-02','09-03','09-04','09-05','09-06','09-07']
+    },
+    yAxis:{
+      name:'鍒嗛挓'
+    },
+    series:[
+      {
+        name:'瀛︿範鏃堕暱',
+        data: this.maxData
+      }
+    ]
+  })
+
+  build() {
+    Column() {
+      Row() {
+        Image($r('app.media.left_icon'))
+          .width(20)
+          .height(20)
+        Text('瀛︿範璁板綍')
+          .fontSize(18)
+          .fontWeight(700)
+        Row()
+      }
+      .width('100%')
+      .padding(10)
+      .justifyContent(FlexAlign.SpaceBetween)
+
+      Divider()
+
+      Column({ space: 20 }) {
+        Row() {
+          Column({ space: 12 }) {
+            Text('鎬诲涔犳椂闀�')
+              .fontColor('#666666')
+              .fontSize(14)
+            Text() {
+              Span('10')
+                .fontSize(20)
+                .fontWeight(700)
+                .fontColor('#1761f4')
+              Span(' 鍒嗛挓')
+                .fontSize(12)
+            }
+          }
+          Column({ space: 12 }) {
+            Text('浠婃棩瀛︿範鏃堕暱')
+              .fontColor('#666666')
+              .fontSize(14)
+            Text() {
+              Span('0')
+                .fontSize(20)
+                .fontWeight(700)
+                .fontColor('#1761f4')
+              Span(' 鍒嗛挓')
+                .fontSize(12)
+            }
+          }
+        }
+        .width('100%')
+        .justifyContent(FlexAlign.SpaceEvenly)
+        .padding(20)
+        .borderRadius(10)
+        .shadow({ radius: 10, color: '#dcdcdc' })
+
+        Text('杩戜竴鍛ㄥ涔犳椂闀跨粺璁�')
+          .fontSize(14)
+          .fontColor(Color.Black)
+          .fontWeight(500)
+          .width('100%')
+
+        Column(){
+          McLineChart({
+            options: this.seriesOption
+          })
+        }
+        .width('100%')
+        .height(200)
+
+      }
+      .padding(16)
+
+
+
+    }
+    .width('100%')
+    .height('100%')
+  }
+}
\ No newline at end of file
diff --git a/entry/src/main/ets/pages/account/MessagePushPage.ets b/entry/src/main/ets/pages/account/MessagePushPage.ets
new file mode 100644
index 0000000..d88e397
--- /dev/null
+++ b/entry/src/main/ets/pages/account/MessagePushPage.ets
@@ -0,0 +1,98 @@
+
+class MessageItem {
+  icon: string | Resource = ''
+  title: string = ''
+  desc: string = ''
+  time: string = ''
+  isRead: boolean = false
+}
+
+@Entry
+@Component
+export struct MessagePushPage {
+  @State messagePushFlag: boolean = false
+  @State autoUpdateFlag: boolean = false
+  @State messageList: MessageItem[] = [
+    { icon: $r('app.media.message_note'), title: '璇剧▼鎻愰啋', desc: '鎮ㄦ姤鍚嶇殑銆婂叏鏍堝紑鍙戯細鍓嶅悗绔墦閫氬疄鎴樸��', time: '09-01 12:55', isRead: false },
+    { icon: $r('app.media.message_gift'), title: '绂忚娲鹃�佸畼', desc: '鎮ㄨ幏寰椾簡涓�寮犱环鍊�100鍏冪殑璇剧▼鎶垫墸鍒革紝鎮ㄥ彲浠ヤ粠', time: '09-01 10:55', isRead: true },
+    { icon: $r('app.media.message_pencil'), title: '瀹樻柟閫氱煡', desc: '鏈钩鍙板皢浜�09-01 00 瀵瑰钩鍙拌繘琛岀淮鎶わ紝璇峰悇浣嶇敤鎴�', time: '08-31 10:55', isRead: true }
+  ]
+  build() {
+    Column() {
+      Row() {
+        Image($r('app.media.left_icon'))
+          .width(20)
+          .height(20)
+        Text('娑堟伅閫氱煡')
+          .fontSize(18)
+          .fontWeight(700)
+        Row()
+      }
+      .width('100%')
+      .padding(10)
+      .justifyContent(FlexAlign.SpaceBetween)
+
+      Divider()
+
+      Column() {
+        List({ space: 10, initialIndex: 0 }){
+          ForEach(this.messageList, (item: MessageItem) => {
+            ListItem() {
+              Row() {
+                Image(item.icon)
+                  .width(40)
+                  .height(40)
+                Column({ space: 10 }) {
+                  Row() {
+                    Text(item.title)
+                      .fontSize(14)
+                      .fontWeight(500)
+                      .fontColor(Color.Black)
+                    Text(item.time)
+                      .fontSize(12)
+                      .fontWeight(500)
+                      .margin({ left: 10 })
+                      .fontColor('#666666')
+                  }
+                  .width('100%')
+
+                  Text(item.desc)
+                    .width('100%')
+                    .fontSize(12)
+                    .maxLines(1)
+                    .fontColor('#666666')
+                    .textOverflow({ overflow: TextOverflow.Ellipsis })
+                }
+                .width(260)
+                .margin({ left: 10 })
+
+                if (!item.isRead) {
+                  Image($r('app.media.message_circle'))
+                    .width(10)
+                    .height(10)
+                }
+              }
+              .width('100%')
+              .height(80)
+              .padding({ left: 16,right: 16, top: 4, bottom: 4 })
+              .borderRadius(10)
+              .backgroundColor(Color.White)
+              .onClick(() => {
+              })
+            }
+          })
+        }
+        .listDirection(Axis.Vertical) // 鎺掑垪鏂瑰悜
+        .scrollBar(BarState.Off)
+        .friction(0.6)
+        .edgeEffect(EdgeEffect.Spring)
+        .width('100%')
+        .divider({strokeWidth: 1,color: '#f0f0f0'})
+      }
+      .padding({ top: 10 })
+      .backgroundColor('#f5f5f7')
+      .width('100%')
+      .height('100%')
+    }
+  }
+}
\ No newline at end of file
diff --git a/entry/src/main/ets/pages/account/PersonVitae.ets b/entry/src/main/ets/pages/account/PersonVitae.ets
new file mode 100644
index 0000000..e57b128
--- /dev/null
+++ b/entry/src/main/ets/pages/account/PersonVitae.ets
@@ -0,0 +1,25 @@
+@Entry
+@Component
+export struct CourseCollection {
+  build() {
+    Column() {
+      Row() {
+        Image($r('app.media.left_icon'))
+          .width(20)
+          .height(20)
+        Text('涓汉绠�鍘�')
+          .fontSize(18)
+          .fontWeight(700)
+        Row()
+      }
+      .width('100%')
+      .padding(10)
+      .justifyContent(FlexAlign.SpaceBetween)
+
+      Divider()
+
+      Image($r('app.media.person_vitae'))
+        .width('100%')
+    }
+  }
+}
\ No newline at end of file
diff --git a/entry/src/main/ets/pages/account/SettingPage.ets b/entry/src/main/ets/pages/account/SettingPage.ets
new file mode 100644
index 0000000..4812ebe
--- /dev/null
+++ b/entry/src/main/ets/pages/account/SettingPage.ets
@@ -0,0 +1,70 @@
+@Entry
+@Component
+export struct SettingPage {
+  @State messagePushFlag: boolean = false
+  @State autoUpdateFlag: boolean = false
+  build() {
+    Column() {
+      Row() {
+        Image($r('app.media.left_icon'))
+          .width(20)
+          .height(20)
+        Text('闅愮璁剧疆')
+          .fontSize(18)
+          .fontWeight(700)
+        Row()
+      }
+      .width('100%')
+      .padding(10)
+      .justifyContent(FlexAlign.SpaceBetween)
+
+      Divider()
+
+      Column() {
+        Row() {
+          Column({ space: 10 }) {
+            Text('鏄惁寮�鍚秷鎭帹閫�')
+              .fontColor(Color.Black)
+              .width('100%')
+            Text(`鎮ㄥ凡缁�${this.messagePushFlag?'寮�鍚�':'鍏抽棴'}娑堟伅鎺ㄩ�乣)
+              .fontSize(12)
+              .fontColor('#666666')
+              .width('100%')
+          }
+          .layoutWeight(1)
+          Toggle({ type: ToggleType.Switch, isOn: this.messagePushFlag })
+            .selectedColor('#007DFF')
+            .switchPointColor('#FFFFFF')
+            .onChange(() => {
+              this.messagePushFlag = !this.messagePushFlag
+            })
+        }
+        Divider().margin({ top: 20, bottom: 20 })
+          .color('#ededed')
+
+        Row() {
+          Column({ space: 10 }) {
+            Text('鏄惁寮�鍚嚜鍔ㄦ洿鏂�')
+              .fontColor(Color.Black)
+              .width('100%')
+            Text(`鎮ㄥ凡缁�${this.autoUpdateFlag?'寮�鍚�':'鍏抽棴'}鑷姩鏇存柊`)
+              .fontSize(12)
+              .fontColor('#666666')
+              .width('100%')
+          }
+          .layoutWeight(1)
+          Toggle({ type: ToggleType.Switch, isOn: this.autoUpdateFlag })
+            .selectedColor('#007DFF')
+            .switchPointColor('#FFFFFF')
+            .onChange(() => {
+              this.autoUpdateFlag = !this.autoUpdateFlag
+            })
+        }
+      }
+      .padding(16)
+      .width('100%')
+      .height('100%')
+
+    }
+  }
+}
\ No newline at end of file
diff --git a/entry/src/main/ets/pages/account/UserInfoPage.ets b/entry/src/main/ets/pages/account/UserInfoPage.ets
new file mode 100644
index 0000000..fe4f735
--- /dev/null
+++ b/entry/src/main/ets/pages/account/UserInfoPage.ets
@@ -0,0 +1,115 @@
+@Entry
+@Component
+export struct UserInfo {
+  @State nickName: string = ''
+  @State gender: string = ''
+  @State age: string = ''
+  @State preferJob: string = ''
+  @State job: string = ''
+  @State introduce: string = ''
+
+  build() {
+    Column() {
+      Row() {
+        Image($r('app.media.left_icon'))
+          .width(20)
+          .height(20)
+        Text('涓汉淇℃伅')
+          .fontSize(18)
+          .fontWeight(700)
+        Row()
+      }
+      .width('100%')
+      .padding(10)
+      .justifyContent(FlexAlign.SpaceBetween)
+
+      Divider()
+
+      Column({ space: 14 }) {
+        Column() {
+          Text(`鏄电О`)
+            .fontSize(14)
+            .fontColor('#666666')
+            .width('100%')
+          TextInput({ placeholder: '璇疯緭鍏�', text: this.nickName })
+            .placeholderFont({ size: 14 })
+            .showUnderline(true)
+            .margin({ top: -6 })
+        }
+
+        Column() {
+          Text(`鎬у埆`)
+            .fontSize(14)
+            .fontColor('#666666')
+            .width('100%')
+          TextInput({ placeholder: '璇疯緭鍏�', text: this.gender })
+            .placeholderFont({ size: 14 })
+            .showUnderline(true)
+            .margin({ top: -6 })
+        }
+
+        Column() {
+          Text(`骞撮緞`)
+            .fontSize(14)
+            .fontColor('#666666')
+            .width('100%')
+          TextInput({ placeholder: '璇疯緭鍏�', text: this.age })
+            .placeholderFont({ size: 14 })
+            .showUnderline(true)
+            .margin({ top: -6 })
+        }
+
+        Column() {
+          Text(`鑱屼笟`)
+            .fontSize(14)
+            .fontColor('#666666')
+            .width('100%')
+          TextInput({ placeholder: '璇疯緭鍏�', text: this.job })
+            .placeholderFont({ size: 14 })
+            .showUnderline(true)
+            .margin({ top: -6 })
+        }
+
+        Column() {
+          Text(`蹇冧华鑱屼笟`)
+            .fontSize(14)
+            .fontColor('#666666')
+            .width('100%')
+          TextInput({ placeholder: '璇疯緭鍏�', text: this.preferJob })
+            .placeholderFont({ size: 14 })
+            .showUnderline(true)
+            .margin({ top: -6 })
+        }
+
+        Column() {
+          Text(`涓汉绠�浠媊)
+            .fontColor('#666666')
+            .fontSize(14)
+            .width('100%')
+          TextArea({ placeholder: '浠嬬粛涓�涓嬩綘鑷繁鍚', text: this.job })
+            .placeholderFont({ size: 14 })
+            .backgroundColor('#fff')
+            .border({ width: 1, color: '#666666' })
+            .borderRadius(5)
+            .minLines(10)
+            .maxLength(200)
+            .showCounter(true)
+            .margin({ top: 10 })
+        }
+
+        Button('淇濆瓨')
+          .fontSize(14)
+          .height(36)
+          .type(ButtonType.Normal)
+          .borderRadius(6)
+          .width('100%')
+          .fontColor(Color.White)
+          .backgroundColor('#1761f4')
+
+      }
+      .height('100%')
+      .width('100%')
+      .padding(16)
+    }
+  }
+}
\ No newline at end of file
diff --git a/entry/src/main/ets/pages/home/BannerDetail.ets b/entry/src/main/ets/pages/home/BannerDetail.ets
index 8b2a858..832260e 100644
--- a/entry/src/main/ets/pages/home/BannerDetail.ets
+++ b/entry/src/main/ets/pages/home/BannerDetail.ets
@@ -1,17 +1,61 @@
-import { router } from "@kit.ArkUI";
+import { promptAction, router } from "@kit.ArkUI";
+import { http } from "@kit.NetworkKit";
+import { HttpResponseResult } from "../../data/HttpResponse";
+import { LvMarkdownIn } from "@luvi/lv-markdown-in"
+
+class BannerInfo {
+  pic: string = ''
+  content: string = ''
+}
 
 @Entry
 @Component
-export struct BannerDetail {
-  @State index: number = 0;
+struct BannerDetail {
+  @State bannerId: string = '';
+  @State bannerInfo: BannerInfo = {
+    pic: '',
+    content: ''
+  }
   aboutToAppear(): void {
     interface Params {
-      index: number
+      bannerId: string
     }
     const params: Params = router.getParams() as Params
     if (params) {
-      this.index = params.index
+      this.bannerId = params.bannerId
+      console.log('bannerId', this.bannerId)
+      this.getDetail()
     }
+
+  }
+
+  getDetail() {
+    interface PostData  {
+      bannerId: string,
+    }
+    let postData: PostData = {
+      bannerId: this.bannerId
+    }
+    let httpRequest = http.createHttp();
+    httpRequest.request(
+      `http://192.168.20.70:8080/quiz-community/public/v1.0/home/slideshows/details?bannerId=${this.bannerId}`,
+      {
+        method: http.RequestMethod.GET,
+        header: { 'Content-Type': 'application/json', 'x-jwt-token': `Bearer ${AppStorage.get('x-jwt-token')}` },
+      },
+      (err, data) => {
+        console.log('response', '/home/slideshows/details')
+        console.log(JSON.stringify(data.result))
+        if (data.responseCode == 200) {
+          const resData = (typeof data.result == 'string' ? JSON.parse(data.result) : data.result) as HttpResponseResult<BannerInfo>
+          if (resData.code == 200) {
+            this.bannerInfo = resData.data as BannerInfo
+          } else {
+            promptAction.showToast({ message: resData.msg })
+          }
+        }
+      }
+    )
   }
 
   build() {
@@ -20,6 +64,9 @@
         Image($r('app.media.left_icon'))
           .width(20)
           .height(20)
+          .onClick(() => {
+            router.back()
+          })
         Text('璇︽儏椤�')
           .fontSize(18)
           .fontWeight(700)
@@ -29,31 +76,13 @@
       .padding(10)
       .justifyContent(FlexAlign.SpaceBetween)
 
-      Image($r('app.media.image1'))
+      Image(this.bannerInfo.pic)
         .width('100%')
         .height(150)
 
-      Column({ space: 10 }) {
-        Text('鍗庝负[1+X]銆婄綉缁滅郴缁熷缓璁句笌杩愮淮銆�')
-          .fontWeight(800)
-          .width('100%')
-
-        Text('璇剧▼浠嬬粛')
-          .width('100%')
-          .fontSize(14)
-          .fontWeight(800)
-          .margin({ top: 10 })
-
-        Text('鏈绋嬫槸璁$畻鏈虹綉缁滄妧鏈�侀�氫俊鎶�鏈瓑涓撲笟鐨勪笓涓氭牳蹇冭绋嬶紝鏃ㄥ湪鍩瑰吇瀛︾敓鐨勭綉缁滄妧鏈亴涓氳兘鍔涖�佽亴涓氱礌鍏诲拰鍒涙柊鑳藉姏銆�' +
-          '\n閲囩敤椤圭洰寮忓疄璁暀瀛︼紝閫氳繃寮曞叆涓�涓惊搴忔笎杩涚殑浼佷笟缃戠粶缁勫缓妗堜緥锛岃瀛︾敓鍦ㄦā鎷熺湡瀹炲満鏅腑鎺屾彙涓皬鍨嬩紒涓氱綉缁滅粍寤虹殑鐭ヨ瘑鍜岃兘鍔�' +
-          '鏁欐潗鍐呭瑕嗙洊鍗庝负鈥�1+X鈥濊瘉涔﹁�冭瘯瑕佹眰锛屽寘鍚ぇ閲忓疄鎿嶇粌涔犮��')
-          .width('100%')
-          .fontSize(13)
-          .lineHeight(20)
-      }
-      .padding(14)
-
-
+      LvMarkdownIn({ text: this.bannerInfo.content.toString() })
+        .width('100%')
+        .height(560)
 
     }
     .width('100%')
diff --git a/entry/src/main/ets/pages/home/ClassificationDetail.ets b/entry/src/main/ets/pages/home/ClassificationDetail.ets
index 411f606..8bed77c 100644
--- a/entry/src/main/ets/pages/home/ClassificationDetail.ets
+++ b/entry/src/main/ets/pages/home/ClassificationDetail.ets
@@ -1,15 +1,43 @@
-import { router } from "@kit.ArkUI"
+import { promptAction, router } from "@kit.ArkUI"
+import { http } from "@kit.NetworkKit"
+import { LvMarkdownIn } from "@luvi/lv-markdown-in"
+import { HttpResponseResult } from "../../data/HttpResponse"
 
 @Entry
 @Component
 export struct ClassificationDetail {
-  @State title: string = ''
+  @State moduleName: string = ''
+  @State content: string = ''
   aboutToAppear(): void {
     interface Params {
-      title: string
+      moduleName: string
     }
     const params = router.getParams() as Params
-    this.title = params.title
+    this.moduleName = params.moduleName
+    this.getDetail()
+  }
+
+  getDetail() {
+    let httpRequest = http.createHttp();
+    httpRequest.request(
+      `http://192.168.20.70:8080/quiz-community/public/v1.0/home/module/details?moduleName=${this.moduleName}`,
+      {
+        method: http.RequestMethod.GET,
+        header: { 'Content-Type': 'application/json', 'x-jwt-token': `Bearer ${AppStorage.get('x-jwt-token')}` },
+      },
+      (err, data) => {
+        console.log('response', '/home/module/details')
+        console.log(JSON.stringify(data.result))
+        if (data.responseCode == 200) {
+          const resData = (typeof data.result == 'string' ? JSON.parse(data.result) : data.result) as HttpResponseResult<string>
+          if (resData.code == 200) {
+            this.content = resData.data || ''
+          } else {
+            promptAction.showToast({ message: resData.msg })
+          }
+        }
+      }
+    )
   }
 
   build() {
@@ -18,6 +46,9 @@
         Image($r('app.media.left_icon'))
           .width(20)
           .height(20)
+          .onClick(() => {
+            router.back()
+          })
         Text('璇︽儏椤�')
           .fontSize(18)
           .fontWeight(700)
@@ -27,26 +58,14 @@
       .padding(10)
       .justifyContent(FlexAlign.SpaceBetween)
 
-      Image($r('app.media.image1'))
-        .width('100%')
-        .height(180)
-
-      Column({ space: 10 }) {
-
-        Text('璇︽儏浠嬬粛')
+      if (this.moduleName) {
+        Image($r(`app.media.classification_detail_${this.moduleName}`))
           .width('100%')
-          .fontSize(14)
-          .fontWeight(800)
-          .margin({ top: 10 })
-
-        Text('鏈绋嬫槸璁$畻鏈虹綉缁滄妧鏈�侀�氫俊鎶�鏈瓑涓撲笟鐨勪笓涓氭牳蹇冭绋嬶紝鏃ㄥ湪鍩瑰吇瀛︾敓鐨勭綉缁滄妧鏈亴涓氳兘鍔涖�佽亴涓氱礌鍏诲拰鍒涙柊鑳藉姏銆�' +
-          '\n閲囩敤椤圭洰寮忓疄璁暀瀛︼紝閫氳繃寮曞叆涓�涓惊搴忔笎杩涚殑浼佷笟缃戠粶缁勫缓妗堜緥锛岃瀛︾敓鍦ㄦā鎷熺湡瀹炲満鏅腑鎺屾彙涓皬鍨嬩紒涓氱綉缁滅粍寤虹殑鐭ヨ瘑鍜岃兘鍔�' +
-          '鏁欐潗鍐呭瑕嗙洊鍗庝负鈥�1+X鈥濊瘉涔﹁�冭瘯瑕佹眰锛屽寘鍚ぇ閲忓疄鎿嶇粌涔犮��')
-          .width('100%')
-          .fontSize(13)
-          .lineHeight(20)
+          .height(180)
       }
-      .padding(14)
+      LvMarkdownIn({ text: this.content.toString() })
+        .width('100%')
+        .height(560)
     }
     .width('100%')
     .height('100%')
diff --git a/entry/src/main/ets/pages/home/Home.ets b/entry/src/main/ets/pages/home/Home.ets
index 47cf6dd..e97d195 100644
--- a/entry/src/main/ets/pages/home/Home.ets
+++ b/entry/src/main/ets/pages/home/Home.ets
@@ -1,79 +1,83 @@
-import { router } from "@kit.ArkUI"
+import { promptAction, router } from "@kit.ArkUI"
+import http from '@ohos.net.http';
+import { HttpResponseResult } from "../../data/HttpResponse";
+import { JSON } from "@kit.ArkTS";
 
 class TabBarBase {
   title: string = ''
 }
+class SwiperItem {
+  pic: string = ''
+  id: string = ''
+  sort: number = 0
+}
+
 class Classification {
   title: string = ''
+  value: string = ''
   icon: ResourceStr = ''
 }
 class Activity {
-  title: string = ''
-  timeScope: string = ''
-  signupCount: number = 0
-  statusText: string = ''
+  id: string = ''
+  name: string = ''
+  pic: string = ''
+  startDate: string = ''
+  endTime: string = ''
+  signupCount: string = ''
+  status: string = ''
 }
 class Course {
-  title: string = ''
-  desc: string = ''
-  count: string = ''
-  time: string = ''
-  difficult: string = ''
+  name: string = ''
+  pic: string = ''
+  description: string = ''
+  playCount: number = 0
+  duration: number = 0
+  difficulty: number = 0
 }
 
 @Entry
 @Component
 export struct Home {
   @State pageHeight: number = 0
-  @State activeIndex:number = 1
+  @State activeIndex:number = 0
   @State tabList: TabBarBase[] = [
     { title: '棣栭〉' },
     { title: '璇剧▼' }
   ]
   private tabController: TabsController = new TabsController()
-  @State swiperList: ResourceStr[] = [
-    $r('app.media.image1'),
-    $r('app.media.image1'),
-    $r('app.media.image1'),
-  ]
+  @State swiperList: SwiperItem[] = []
   @State swiperIndex: number = 0
   //TabBar鏍峰紡
   @State classificationList: Classification[] = [
-    { title: '鏁伴��', icon: $r('app.media.classification_shutong') },
-    { title: '瀹夊叏', icon: $r('app.media.classification_safety') },
-    { title: '浜戣绠�', icon: $r('app.media.classification_cloudcalc') },
-    { title: '瀛樺偍', icon: $r('app.media.classification_storage') },
-    { title: '椴查箯', icon: $r('app.media.classification_roc') },
-    { title: 'AI', icon: $r('app.media.classification_AI') },
-    { title: '杩炴帴', icon: $r('app.media.classification_link') },
-    { title: '澶ф暟鎹�', icon: $r('app.media.classification_bigdata') },
-    { title: '浜戞湇鍔�', icon: $r('app.media.classification_cloudservice') },
-    { title: '鏇村', icon: $r('app.media.classification_more') },
+    { title: '鏁伴��', value: 'shutong', icon: $r('app.media.classification_shutong') },
+    { title: '瀹夊叏', value: 'safety', icon: $r('app.media.classification_safety') },
+    { title: '浜戣绠�', value: 'cloudcalc', icon: $r('app.media.classification_cloudcalc') },
+    { title: '瀛樺偍', value: 'storage', icon: $r('app.media.classification_storage') },
+    { title: '椴查箯', value: 'roc', icon: $r('app.media.classification_roc') },
+    { title: 'AI', value: 'AI', icon: $r('app.media.classification_AI') },
+    { title: '杩炴帴', value: 'link', icon: $r('app.media.classification_link') },
+    { title: '澶ф暟鎹�', value: 'bigdata', icon: $r('app.media.classification_bigdata') },
+    { title: '浜戞湇鍔�', value: 'cloudservice', icon: $r('app.media.classification_cloudservice') },
+    { title: '鏇村', value: '', icon: $r('app.media.classification_more') },
   ]
-  @State activityList: Activity[] = [
-    { title: '鍖椾含浜哄伐鏅鸿兘IE', timeScope: '20250520-20250620', signupCount: 80, statusText: '鎶ュ悕涓�' },
-    { title: '鍖椾含浜哄伐鏅鸿兘IE', timeScope: '20250520-20250620', signupCount: 80, statusText: '杩涜涓�' },
-    { title: '鍖椾含浜哄伐鏅鸿兘IE', timeScope: '20250520-20250620', signupCount: 80, statusText: '宸茬粨鏉�' },
-    { title: '鍖椾含浜哄伐鏅鸿兘IE', timeScope: '20250520-20250620', signupCount: 80, statusText: '鎶ュ悕涓�' },
-    { title: '鍖椾含浜哄伐鏅鸿兘IE', timeScope: '20250520-20250620', signupCount: 80, statusText: '宸茬粨鏉�' },
-  ]
+  @State activityList: Activity[] = []
   @State courseList: Course[] = [
-    { title: '闆跺熀纭�鍒颁紒涓氱骇椤圭洰瀹炴垬', 'desc': '閽堝闆跺熀纭�灏忕櫧鎴栨兂鍗囩骇鎶�鏈爤鐨勫墠绔粠涓氳�咃紝浠庢牳蹇冭娉曞叆鎵嬶紝閫愭娣卞叆Vue3缁勪欢寮�鍙戞墦浠跺紑鍙戜欢寮�鍙�', count: '800', time: '01:30:23', difficult: '绠�鍗�' },
-    { title: '闆跺熀纭�鍒颁紒涓氱骇椤圭洰瀹炴垬', 'desc': '閽堝闆跺熀纭�灏忕櫧鎴栨兂鍗囩骇鎶�鏈爤鐨勫墠绔粠涓氳�咃紝浠庢牳蹇冭娉曞叆鎵嬶紝閫愭娣卞叆Vue3缁勪欢寮�鍙戞墦浠跺紑鍙戜欢寮�鍙�', count: '800', time: '01:30:23', difficult: '绠�鍗�' },
-    { title: 'Java楂樼骇锛欽VM娣卞害璋冧紭涓嶫VM娣卞害璋冧紭', 'desc': '閽堝闆跺熀纭�灏忕櫧鎴栨兂鍗囩骇鎶�鏈爤鐨勫墠绔粠涓氳�咃紝浠庢牳蹇冭娉曞叆鎵嬶紝閫愭娣卞叆Vue3缁勪欢寮�鍙戞墦浠跺紑鍙戜欢寮�鍙�', count: '800', time: '01:30:23', difficult: '绠�鍗�' },
-    { title: '闆跺熀纭�鍒颁紒涓氱骇椤圭洰瀹炴垬', 'desc': '閽堝闆跺熀纭�灏忕櫧鎴栨兂鍗囩骇鎶�鏈爤鐨勫墠绔粠涓氳�咃紝浠庢牳蹇冭娉曞叆鎵嬶紝閫愭娣卞叆Vue3缁勪欢寮�鍙戞墦浠跺紑鍙戜欢寮�鍙�', count: '800', time: '01:30:23', difficult: '绠�鍗�' },
-    { title: '闆跺熀纭�鍒颁紒涓氱骇椤圭洰瀹炴垬', 'desc': '閽堝闆跺熀纭�灏忕櫧鎴栨兂鍗囩骇鎶�鏈爤鐨勫墠绔粠涓氳�咃紝浠庢牳蹇冭娉曞叆鎵嬶紝閫愭娣卞叆Vue3缁勪欢寮�鍙戞墦浠跺紑鍙戜欢寮�鍙�', count: '800', time: '01:30:23', difficult: '绠�鍗�' },
-    { title: '闆跺熀纭�鍒颁紒涓氱骇椤圭洰瀹炴垬', 'desc': '閽堝闆跺熀纭�灏忕櫧鎴栨兂鍗囩骇鎶�鏈爤鐨勫墠绔粠涓氳�咃紝浠庢牳蹇冭娉曞叆鎵嬶紝閫愭娣卞叆Vue3缁勪欢寮�鍙戞墦浠跺紑鍙戜欢寮�鍙�', count: '800', time: '01:30:23', difficult: '绠�鍗�' },
-    { title: '闆跺熀纭�鍒颁紒涓氱骇椤圭洰瀹炴垬', 'desc': '閽堝闆跺熀纭�灏忕櫧鎴栨兂鍗囩骇鎶�鏈爤鐨勫墠绔粠涓氳�咃紝浠庢牳蹇冭娉曞叆鎵嬶紝閫愭娣卞叆Vue3缁勪欢寮�鍙戞墦浠跺紑鍙戜欢寮�鍙�', count: '800', time: '01:30:23', difficult: '绠�鍗�' },
-    { title: '闆跺熀纭�鍒颁紒涓氱骇椤圭洰瀹炴垬', 'desc': '閽堝闆跺熀纭�灏忕櫧鎴栨兂鍗囩骇鎶�鏈爤鐨勫墠绔粠涓氳�咃紝浠庢牳蹇冭娉曞叆鎵嬶紝閫愭娣卞叆Vue3缁勪欢寮�鍙戞墦浠跺紑鍙戜欢寮�鍙�', count: '800', time: '01:30:23', difficult: '绠�鍗�' },
-    { title: '闆跺熀纭�鍒颁紒涓氱骇椤圭洰瀹炴垬', 'desc': '閽堝闆跺熀纭�灏忕櫧鎴栨兂鍗囩骇鎶�鏈爤鐨勫墠绔粠涓氳�咃紝浠庢牳蹇冭娉曞叆鎵嬶紝閫愭娣卞叆Vue3缁勪欢寮�鍙戞墦浠跺紑鍙戜欢寮�鍙�', count: '800', time: '01:30:23', difficult: '绠�鍗�' },
-    { title: '闆跺熀纭�鍒颁紒涓氱骇椤圭洰瀹炴垬', 'desc': '閽堝闆跺熀纭�灏忕櫧鎴栨兂鍗囩骇鎶�鏈爤鐨勫墠绔粠涓氳�咃紝浠庢牳蹇冭娉曞叆鎵嬶紝閫愭娣卞叆Vue3缁勪欢寮�鍙戞墦浠跺紑鍙戜欢寮�鍙�', count: '800', time: '01:30:23', difficult: '绠�鍗�' },
-    { title: '闆跺熀纭�鍒颁紒涓氱骇椤圭洰瀹炴垬', 'desc': '閽堝闆跺熀纭�灏忕櫧鎴栨兂鍗囩骇鎶�鏈爤鐨勫墠绔粠涓氳�咃紝浠庢牳蹇冭娉曞叆鎵嬶紝閫愭娣卞叆Vue3缁勪欢寮�鍙戞墦浠跺紑鍙戜欢寮�鍙�', count: '800', time: '01:30:23', difficult: '绠�鍗�' },
-    { title: '闆跺熀纭�鍒颁紒涓氱骇椤圭洰瀹炴垬', 'desc': '閽堝闆跺熀纭�灏忕櫧鎴栨兂鍗囩骇鎶�鏈爤鐨勫墠绔粠涓氳�咃紝浠庢牳蹇冭娉曞叆鎵嬶紝閫愭娣卞叆Vue3缁勪欢寮�鍙戞墦浠跺紑鍙戜欢寮�鍙�', count: '800', time: '01:30:23', difficult: '绠�鍗�' },
-    { title: '闆跺熀纭�鍒颁紒涓氱骇椤圭洰瀹炴垬', 'desc': '閽堝闆跺熀纭�灏忕櫧鎴栨兂鍗囩骇鎶�鏈爤鐨勫墠绔粠涓氳�咃紝浠庢牳蹇冭娉曞叆鎵嬶紝閫愭娣卞叆Vue3缁勪欢寮�鍙戞墦浠跺紑鍙戜欢寮�鍙�', count: '800', time: '01:30:23', difficult: '绠�鍗�' },
-    { title: '闆跺熀纭�鍒颁紒涓氱骇椤圭洰瀹炴垬', 'desc': '閽堝闆跺熀纭�灏忕櫧鎴栨兂鍗囩骇鎶�鏈爤鐨勫墠绔粠涓氳�咃紝浠庢牳蹇冭娉曞叆鎵嬶紝閫愭娣卞叆Vue3缁勪欢寮�鍙戞墦浠跺紑鍙戜欢寮�鍙�', count: '800', time: '01:30:23', difficult: '绠�鍗�' },
-    { title: '闆跺熀纭�鍒颁紒涓氱骇椤圭洰瀹炴垬', 'desc': '閽堝闆跺熀纭�灏忕櫧鎴栨兂鍗囩骇鎶�鏈爤鐨勫墠绔粠涓氳�咃紝浠庢牳蹇冭娉曞叆鎵嬶紝閫愭娣卞叆Vue3缁勪欢寮�鍙戞墦浠跺紑鍙戜欢寮�鍙�', count: '800', time: '01:30:23', difficult: '绠�鍗�' },
-    { title: '闆跺熀纭�鍒颁紒涓氱骇椤圭洰瀹炴垬', 'desc': '閽堝闆跺熀纭�灏忕櫧鎴栨兂鍗囩骇鎶�鏈爤鐨勫墠绔粠涓氳�咃紝浠庢牳蹇冭娉曞叆鎵嬶紝閫愭娣卞叆Vue3缁勪欢寮�鍙戞墦浠跺紑鍙戜欢寮�鍙�', count: '800', time: '01:30:23', difficult: '绠�鍗�' },
+    // { title: '闆跺熀纭�鍒颁紒涓氱骇椤圭洰瀹炴垬', 'desc': '閽堝闆跺熀纭�灏忕櫧鎴栨兂鍗囩骇鎶�鏈爤鐨勫墠绔粠涓氳�咃紝浠庢牳蹇冭娉曞叆鎵嬶紝閫愭娣卞叆Vue3缁勪欢寮�鍙戞墦浠跺紑鍙戜欢寮�鍙�', count: '800', time: '01:30:23', difficult: '绠�鍗�' },
+    // { title: '闆跺熀纭�鍒颁紒涓氱骇椤圭洰瀹炴垬', 'desc': '閽堝闆跺熀纭�灏忕櫧鎴栨兂鍗囩骇鎶�鏈爤鐨勫墠绔粠涓氳�咃紝浠庢牳蹇冭娉曞叆鎵嬶紝閫愭娣卞叆Vue3缁勪欢寮�鍙戞墦浠跺紑鍙戜欢寮�鍙�', count: '800', time: '01:30:23', difficult: '绠�鍗�' },
+    // { title: 'Java楂樼骇锛欽VM娣卞害璋冧紭涓嶫VM娣卞害璋冧紭', 'desc': '閽堝闆跺熀纭�灏忕櫧鎴栨兂鍗囩骇鎶�鏈爤鐨勫墠绔粠涓氳�咃紝浠庢牳蹇冭娉曞叆鎵嬶紝閫愭娣卞叆Vue3缁勪欢寮�鍙戞墦浠跺紑鍙戜欢寮�鍙�', count: '800', time: '01:30:23', difficult: '绠�鍗�' },
+    // { title: '闆跺熀纭�鍒颁紒涓氱骇椤圭洰瀹炴垬', 'desc': '閽堝闆跺熀纭�灏忕櫧鎴栨兂鍗囩骇鎶�鏈爤鐨勫墠绔粠涓氳�咃紝浠庢牳蹇冭娉曞叆鎵嬶紝閫愭娣卞叆Vue3缁勪欢寮�鍙戞墦浠跺紑鍙戜欢寮�鍙�', count: '800', time: '01:30:23', difficult: '绠�鍗�' },
+    // { title: '闆跺熀纭�鍒颁紒涓氱骇椤圭洰瀹炴垬', 'desc': '閽堝闆跺熀纭�灏忕櫧鎴栨兂鍗囩骇鎶�鏈爤鐨勫墠绔粠涓氳�咃紝浠庢牳蹇冭娉曞叆鎵嬶紝閫愭娣卞叆Vue3缁勪欢寮�鍙戞墦浠跺紑鍙戜欢寮�鍙�', count: '800', time: '01:30:23', difficult: '绠�鍗�' },
+    // { title: '闆跺熀纭�鍒颁紒涓氱骇椤圭洰瀹炴垬', 'desc': '閽堝闆跺熀纭�灏忕櫧鎴栨兂鍗囩骇鎶�鏈爤鐨勫墠绔粠涓氳�咃紝浠庢牳蹇冭娉曞叆鎵嬶紝閫愭娣卞叆Vue3缁勪欢寮�鍙戞墦浠跺紑鍙戜欢寮�鍙�', count: '800', time: '01:30:23', difficult: '绠�鍗�' },
+    // { title: '闆跺熀纭�鍒颁紒涓氱骇椤圭洰瀹炴垬', 'desc': '閽堝闆跺熀纭�灏忕櫧鎴栨兂鍗囩骇鎶�鏈爤鐨勫墠绔粠涓氳�咃紝浠庢牳蹇冭娉曞叆鎵嬶紝閫愭娣卞叆Vue3缁勪欢寮�鍙戞墦浠跺紑鍙戜欢寮�鍙�', count: '800', time: '01:30:23', difficult: '绠�鍗�' },
+    // { title: '闆跺熀纭�鍒颁紒涓氱骇椤圭洰瀹炴垬', 'desc': '閽堝闆跺熀纭�灏忕櫧鎴栨兂鍗囩骇鎶�鏈爤鐨勫墠绔粠涓氳�咃紝浠庢牳蹇冭娉曞叆鎵嬶紝閫愭娣卞叆Vue3缁勪欢寮�鍙戞墦浠跺紑鍙戜欢寮�鍙�', count: '800', time: '01:30:23', difficult: '绠�鍗�' },
+    // { title: '闆跺熀纭�鍒颁紒涓氱骇椤圭洰瀹炴垬', 'desc': '閽堝闆跺熀纭�灏忕櫧鎴栨兂鍗囩骇鎶�鏈爤鐨勫墠绔粠涓氳�咃紝浠庢牳蹇冭娉曞叆鎵嬶紝閫愭娣卞叆Vue3缁勪欢寮�鍙戞墦浠跺紑鍙戜欢寮�鍙�', count: '800', time: '01:30:23', difficult: '绠�鍗�' },
+    // { title: '闆跺熀纭�鍒颁紒涓氱骇椤圭洰瀹炴垬', 'desc': '閽堝闆跺熀纭�灏忕櫧鎴栨兂鍗囩骇鎶�鏈爤鐨勫墠绔粠涓氳�咃紝浠庢牳蹇冭娉曞叆鎵嬶紝閫愭娣卞叆Vue3缁勪欢寮�鍙戞墦浠跺紑鍙戜欢寮�鍙�', count: '800', time: '01:30:23', difficult: '绠�鍗�' },
+    // { title: '闆跺熀纭�鍒颁紒涓氱骇椤圭洰瀹炴垬', 'desc': '閽堝闆跺熀纭�灏忕櫧鎴栨兂鍗囩骇鎶�鏈爤鐨勫墠绔粠涓氳�咃紝浠庢牳蹇冭娉曞叆鎵嬶紝閫愭娣卞叆Vue3缁勪欢寮�鍙戞墦浠跺紑鍙戜欢寮�鍙�', count: '800', time: '01:30:23', difficult: '绠�鍗�' },
+    // { title: '闆跺熀纭�鍒颁紒涓氱骇椤圭洰瀹炴垬', 'desc': '閽堝闆跺熀纭�灏忕櫧鎴栨兂鍗囩骇鎶�鏈爤鐨勫墠绔粠涓氳�咃紝浠庢牳蹇冭娉曞叆鎵嬶紝閫愭娣卞叆Vue3缁勪欢寮�鍙戞墦浠跺紑鍙戜欢寮�鍙�', count: '800', time: '01:30:23', difficult: '绠�鍗�' },
+    // { title: '闆跺熀纭�鍒颁紒涓氱骇椤圭洰瀹炴垬', 'desc': '閽堝闆跺熀纭�灏忕櫧鎴栨兂鍗囩骇鎶�鏈爤鐨勫墠绔粠涓氳�咃紝浠庢牳蹇冭娉曞叆鎵嬶紝閫愭娣卞叆Vue3缁勪欢寮�鍙戞墦浠跺紑鍙戜欢寮�鍙�', count: '800', time: '01:30:23', difficult: '绠�鍗�' },
+    // { title: '闆跺熀纭�鍒颁紒涓氱骇椤圭洰瀹炴垬', 'desc': '閽堝闆跺熀纭�灏忕櫧鎴栨兂鍗囩骇鎶�鏈爤鐨勫墠绔粠涓氳�咃紝浠庢牳蹇冭娉曞叆鎵嬶紝閫愭娣卞叆Vue3缁勪欢寮�鍙戞墦浠跺紑鍙戜欢寮�鍙�', count: '800', time: '01:30:23', difficult: '绠�鍗�' },
+    // { title: '闆跺熀纭�鍒颁紒涓氱骇椤圭洰瀹炴垬', 'desc': '閽堝闆跺熀纭�灏忕櫧鎴栨兂鍗囩骇鎶�鏈爤鐨勫墠绔粠涓氳�咃紝浠庢牳蹇冭娉曞叆鎵嬶紝閫愭娣卞叆Vue3缁勪欢寮�鍙戞墦浠跺紑鍙戜欢寮�鍙�', count: '800', time: '01:30:23', difficult: '绠�鍗�' },
+    // { title: '闆跺熀纭�鍒颁紒涓氱骇椤圭洰瀹炴垬', 'desc': '閽堝闆跺熀纭�灏忕櫧鎴栨兂鍗囩骇鎶�鏈爤鐨勫墠绔粠涓氳�咃紝浠庢牳蹇冭娉曞叆鎵嬶紝閫愭娣卞叆Vue3缁勪欢寮�鍙戞墦浠跺紑鍙戜欢寮�鍙�', count: '800', time: '01:30:23', difficult: '绠�鍗�' },
 
   ]
 
@@ -93,24 +97,110 @@
 
   getTagFontColor(statusText: string) {
     switch (statusText) {
-      case '鎶ュ悕涓�':
+      case 'signup':
         return '#10920e'
-      case '杩涜涓�':
+      case 'training':
         return '#ffa100'
       default :
         return '#666666'
     }
   }
 
-  getTagBgColor(statusText: string) {
-    switch (statusText) {
-      case '鎶ュ悕涓�':
+  getTagBgColor(status: string) {
+    switch (status) {
+      case 'signup':
         return '#d5f2db'
-      case '杩涜涓�':
+      case 'training':
         return '#fff0cc'
       default :
         return '#ebebeb'
     }
+  }
+
+  getStatusText(status: string) {
+    if (status == 'signup') {
+      return '鎶ュ悕涓�'
+    } else if (status == 'training') {
+      return '杩涜涓�'
+    } else if (status == 'finished') {
+      return '宸茬粨鏉�'
+    }
+    return ''
+  }
+
+  aboutToAppear(): void {
+    this.getBannerList()
+    this.getActivityList()
+    this.getCourseList()
+  }
+
+  getBannerList() {
+    let httpRequest = http.createHttp();
+    httpRequest.request(
+      "http://192.168.20.70:8080/quiz-community/public/v1.0/home/slideshows",
+      {
+        method: http.RequestMethod.GET,
+        header: { 'Content-Type': 'application/json', 'x-jwt-token': `Bearer ${AppStorage.get('x-jwt-token')}` },
+      },
+      (err, data) => {
+        console.log('response', '/home/slideshows')
+        console.log(JSON.stringify(data.result))
+        if (data.responseCode == 200) {
+          const resData = (typeof data.result == 'string' ? JSON.parse(data.result) : data.result) as HttpResponseResult<SwiperItem[]>
+          if (resData.code == 200) {
+            this.swiperList = resData.data || []
+          } else {
+            promptAction.showToast({ message: resData.msg })
+          }
+        }
+      }
+    )
+  }
+
+  getActivityList() {
+    let httpRequest = http.createHttp();
+    httpRequest.request(
+      "http://192.168.20.70:8080/quiz-community/public/v1.0/home/hotTraining",
+      {
+        method: http.RequestMethod.GET,
+        header: { 'Content-Type': 'application/json', 'x-jwt-token': `Bearer ${AppStorage.get('x-jwt-token')}` },
+      },
+      (err, data) => {
+        console.log('response', '/home/hotTraining')
+        console.log(JSON.stringify(data.result))
+        if (data.responseCode == 200) {
+          const resData = (typeof data.result == 'string' ? JSON.parse(data.result) : data.result) as HttpResponseResult<Activity[]>
+          if (resData.code == 200) {
+            this.activityList = resData.data || []
+          } else {
+            promptAction.showToast({ message: resData.msg })
+          }
+        }
+      }
+    )
+  }
+
+  getCourseList() {
+    let httpRequest = http.createHttp();
+    httpRequest.request(
+      "http://192.168.20.70:8080/quiz-community/public/v1.0/home/courses",
+      {
+        method: http.RequestMethod.GET,
+        header: { 'Content-Type': 'application/json', 'x-jwt-token': `Bearer ${AppStorage.get('x-jwt-token')}` },
+      },
+      (err, data) => {
+        console.log('response', '/home/courses')
+        console.log(JSON.stringify(data.result))
+        if (data.responseCode == 200) {
+          const resData = (typeof data.result == 'string' ? JSON.parse(data.result) : data.result) as HttpResponseResult<Course[]>
+          if (resData.code == 200) {
+            this.courseList = resData.data || []
+          } else {
+            promptAction.showToast({ message: resData.msg })
+          }
+        }
+      }
+    )
   }
 
   build() {
@@ -127,16 +217,16 @@
             TabContent() {
               Column({ space: 10 }){
                 Swiper() {
-                  ForEach(this.swiperList, (item: Resource) => {
-                    Image(item)
+                  ForEach(this.swiperList, (item: SwiperItem) => {
+                    Image(item.pic)
                       .width('100%')
                       .height(120)
                       .backgroundColor(0xAFEEEE)
                       .onClick(() => {
-                        this.getUIContext().getRouter().pushUrl({
+                        router.push({
                           url: 'pages/home/BannerDetail',
                           params: {
-                            id: index
+                            bannerId: item.id
                           }
                         })
                       })
@@ -169,10 +259,11 @@
                           .fontWeight(500)
                       }
                       .onClick(() => {
+                        if (!item.value) return
                         router.pushUrl({
                           url: 'pages/home/ClassificationDetail',
                           params: {
-                            title: item.title
+                            moduleName: item.value
                           }
                         })
                       })
@@ -202,14 +293,14 @@
                     ListItem() {
                       Row() {
                         Column({ space: 6 }) {
-                          Text(item.title)
+                          Text(item.name)
                             .fontSize(12)
                             .fontWeight(500)
                           Row() {
                             Image($r('app.media.date_icon'))
                               .width(12)
                               .height(12)
-                            Text(item.timeScope)
+                            Text(`${item.startDate}-${item.endTime}`)
                               .fontSize(10)
                               .fontColor('#676767')
                               .margin({ left: 4 })
@@ -217,13 +308,13 @@
                           Text(`${item.signupCount || 0}浜哄凡鎶ュ悕`)
                             .fontSize(10)
                             .fontColor('#676767')
-                          Text(item.statusText)
+                          Text(this.getStatusText(item.status))
                             .fontSize(10)
                             .fontWeight(500)
                             .padding(6)
                             .borderRadius(10)
-                            .fontColor(this.getTagFontColor(item.statusText))
-                            .backgroundColor(this.getTagBgColor(item.statusText))
+                            .fontColor(this.getTagFontColor(item.status))
+                            .backgroundColor(this.getTagBgColor(item.status))
                         }
                         .height('100%')
                         .justifyContent(FlexAlign.Start)
@@ -253,7 +344,7 @@
                 .divider({ strokeWidth: 1, color: '#e8e8e8' }) // 姣忚涔嬮棿鐨勫垎鐣岀嚎
                 .edgeEffect(EdgeEffect.Spring)
                 .width('100%')
-                .height(300)
+                .height(360)
               }
               .height('100%')
             }
@@ -284,12 +375,12 @@
                     ListItem() {
                       Row({ space: 10 }) {
                         Column() {
-                          Text(item.title)
+                          Text(item.name)
                             .fontSize(14)
                             .fontWeight(800)
                             .maxLines(1)
                             .textOverflow({ overflow: TextOverflow.Ellipsis })
-                          Text(item.desc)
+                          Text(item.description)
                             .fontSize(12)
                             .fontColor('#666666')
                             .maxLines(2)
@@ -299,7 +390,7 @@
                               Image($r('app.media.person_icon'))
                                 .width(10)
                                 .height(10)
-                              Text(item.count)
+                              Text(`${item.playCount}`)
                                 .fontSize(10)
                                 .fontColor('#666666')
                             }
@@ -307,13 +398,13 @@
                               Image($r('app.media.video_icon'))
                                 .width(10)
                                 .height(10)
-                              Text(item.time)
+                              Text(`${item.duration}`)
                                 .fontSize(10)
                                 .fontColor('#666666')
                             }
                             Text() {
                               Span('璇剧▼闅惧害: ')
-                              Span(item.difficult)
+                              Span(`${item.difficulty}`)
                             }
                             .fontSize(10)
                             .fontColor('#666666')
diff --git a/entry/src/main/ets/pages/login/LoginPage.ets b/entry/src/main/ets/pages/login/LoginPage.ets
index 60e1a7b..aad009d 100644
--- a/entry/src/main/ets/pages/login/LoginPage.ets
+++ b/entry/src/main/ets/pages/login/LoginPage.ets
@@ -1,5 +1,5 @@
 import { UserInfoBase } from '../../data/UserInfoBase'
-import { promptAction } from '@kit.ArkUI'
+import { promptAction, router } from '@kit.ArkUI'
 import PreferencesUtils from '../../utils/PreferencesUtils'
 import http from '@ohos.net.http';
 import { HttpResponseResult } from '../../data/HttpResponse';
@@ -86,6 +86,9 @@
             PreferencesUtils.putPreferences('UserInfo','user',JSON.stringify(this.userInfoData))
             AppStorage.SetOrCreate('x-jwt-token', resData.data?.token)
             promptAction.showToast({ message: '鐧诲綍鎴愬姛' })
+            router.push({
+              url: 'pages/MainPage'
+            })
           } else {
             promptAction.showToast({ message: resData.msg })
           }
diff --git a/entry/src/main/resources/base/media/account_jianli.png b/entry/src/main/resources/base/media/account_vitae.png
similarity index 100%
rename from entry/src/main/resources/base/media/account_jianli.png
rename to entry/src/main/resources/base/media/account_vitae.png
Binary files differ
diff --git a/entry/src/main/resources/base/media/classification_detail_AI.png b/entry/src/main/resources/base/media/classification_detail_AI.png
new file mode 100644
index 0000000..7f4a024
--- /dev/null
+++ b/entry/src/main/resources/base/media/classification_detail_AI.png
Binary files differ
diff --git a/entry/src/main/resources/base/media/classification_detail_bigdata.png b/entry/src/main/resources/base/media/classification_detail_bigdata.png
new file mode 100644
index 0000000..04580cf
--- /dev/null
+++ b/entry/src/main/resources/base/media/classification_detail_bigdata.png
Binary files differ
diff --git a/entry/src/main/resources/base/media/classification_detail_cloudcalc.png b/entry/src/main/resources/base/media/classification_detail_cloudcalc.png
new file mode 100644
index 0000000..8b513cd
--- /dev/null
+++ b/entry/src/main/resources/base/media/classification_detail_cloudcalc.png
Binary files differ
diff --git a/entry/src/main/resources/base/media/classification_detail_cloudservice.png b/entry/src/main/resources/base/media/classification_detail_cloudservice.png
new file mode 100644
index 0000000..26d22c0
--- /dev/null
+++ b/entry/src/main/resources/base/media/classification_detail_cloudservice.png
Binary files differ
diff --git a/entry/src/main/resources/base/media/classification_detail_link.png b/entry/src/main/resources/base/media/classification_detail_link.png
new file mode 100644
index 0000000..6890037
--- /dev/null
+++ b/entry/src/main/resources/base/media/classification_detail_link.png
Binary files differ
diff --git a/entry/src/main/resources/base/media/classification_detail_roc.png b/entry/src/main/resources/base/media/classification_detail_roc.png
new file mode 100644
index 0000000..3d1235d
--- /dev/null
+++ b/entry/src/main/resources/base/media/classification_detail_roc.png
Binary files differ
diff --git a/entry/src/main/resources/base/media/classification_detail_safety.png b/entry/src/main/resources/base/media/classification_detail_safety.png
new file mode 100644
index 0000000..bb4ee76
--- /dev/null
+++ b/entry/src/main/resources/base/media/classification_detail_safety.png
Binary files differ
diff --git a/entry/src/main/resources/base/media/classification_detail_shutong.png b/entry/src/main/resources/base/media/classification_detail_shutong.png
new file mode 100644
index 0000000..aa2b0fb
--- /dev/null
+++ b/entry/src/main/resources/base/media/classification_detail_shutong.png
Binary files differ
diff --git a/entry/src/main/resources/base/media/classification_detail_storage.png b/entry/src/main/resources/base/media/classification_detail_storage.png
new file mode 100644
index 0000000..ffba71a
--- /dev/null
+++ b/entry/src/main/resources/base/media/classification_detail_storage.png
Binary files differ
diff --git a/entry/src/main/resources/base/media/message_circle.png b/entry/src/main/resources/base/media/message_circle.png
new file mode 100644
index 0000000..e4dbdf3
--- /dev/null
+++ b/entry/src/main/resources/base/media/message_circle.png
Binary files differ
diff --git a/entry/src/main/resources/base/media/message_gift.png b/entry/src/main/resources/base/media/message_gift.png
new file mode 100644
index 0000000..6d2f160
--- /dev/null
+++ b/entry/src/main/resources/base/media/message_gift.png
Binary files differ
diff --git a/entry/src/main/resources/base/media/message_note.png b/entry/src/main/resources/base/media/message_note.png
new file mode 100644
index 0000000..60b2a47
--- /dev/null
+++ b/entry/src/main/resources/base/media/message_note.png
Binary files differ
diff --git a/entry/src/main/resources/base/media/message_pencil.png b/entry/src/main/resources/base/media/message_pencil.png
new file mode 100644
index 0000000..9fa072c
--- /dev/null
+++ b/entry/src/main/resources/base/media/message_pencil.png
Binary files differ
diff --git a/entry/src/main/resources/base/media/person_vitae.png b/entry/src/main/resources/base/media/person_vitae.png
new file mode 100644
index 0000000..8492f6c
--- /dev/null
+++ b/entry/src/main/resources/base/media/person_vitae.png
Binary files differ
diff --git a/entry/src/main/resources/base/profile/main_pages.json b/entry/src/main/resources/base/profile/main_pages.json
index d66fa06..6dbbd39 100644
--- a/entry/src/main/resources/base/profile/main_pages.json
+++ b/entry/src/main/resources/base/profile/main_pages.json
@@ -10,6 +10,11 @@
     "pages/home/ActiveDetail",
     "pages/search/SearchPage",
     "pages/message/MessagePage",
-    "pages/message/MessageDetailsPage"
+    "pages/message/MessageDetailsPage",
+    "pages/account/UserInfoPage",
+    "pages/account/LearningRecordPage",
+    "pages/account/SettingPage",
+    "pages/account/MessagePushPage",
+    "pages/account/AboutPage"
   ]
 }
diff --git a/oh-package-lock.json5 b/oh-package-lock.json5
index 9b8016a..b239958 100644
--- a/oh-package-lock.json5
+++ b/oh-package-lock.json5
@@ -6,10 +6,38 @@
   "lockfileVersion": 3,
   "ATTENTION": "THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY.",
   "specifiers": {
+    "@luvi/html2md@^1.0.0": "@luvi/html2md@1.0.3",
+    "@luvi/lv-markdown-in@^2.0.15": "@luvi/lv-markdown-in@2.0.15",
+    "@mcui/mccharts@^2.8.9": "@mcui/mccharts@2.8.9",
     "@ohos/hamock@1.0.0": "@ohos/hamock@1.0.0",
-    "@ohos/hypium@1.0.21": "@ohos/hypium@1.0.21"
+    "@ohos/hypium@1.0.21": "@ohos/hypium@1.0.21",
+    "@wuyan/hm_chart@^2.0.4": "@wuyan/hm_chart@2.0.4"
   },
   "packages": {
+    "@luvi/html2md@1.0.3": {
+      "name": "",
+      "version": "1.0.3",
+      "integrity": "sha512-BBa2FqQKQ48dBmG+n2z63IGpbIV4Gc/g5Qj1FGssZ6ki+DHqYknZ46FRVRJeKtrfmCjYoiiKx5FtBjOuqnwbtA==",
+      "resolved": "https://ohpm.openharmony.cn/ohpm/@luvi/html2md/-/html2md-1.0.3.har",
+      "registryType": "ohpm"
+    },
+    "@luvi/lv-markdown-in@2.0.15": {
+      "name": "",
+      "version": "2.0.15",
+      "integrity": "sha512-PSM3/BybA7QkYwiRUaxmsMdzBXyyz3AAQmdy84PzdTLo0t8AH7oOo4j01C6LvvnX0OzaQ6T3pFIpMOUqGxWEZg==",
+      "resolved": "https://ohpm.openharmony.cn/ohpm/@luvi/lv-markdown-in/-/lv-markdown-in-2.0.15.har",
+      "registryType": "ohpm",
+      "dependencies": {
+        "@luvi/html2md": "^1.0.0"
+      }
+    },
+    "@mcui/mccharts@2.8.9": {
+      "name": "",
+      "version": "2.8.9",
+      "integrity": "sha512-mdpzc6TlYlR/xV+OH3u0Jq5s1UeND8EKQuyXUdtjPMozffrbitPWJcp5N4Fji9v1xs8d/WP62OKnbp79iWMtHA==",
+      "resolved": "https://ohpm.openharmony.cn/ohpm/@mcui/mccharts/-/mccharts-2.8.9.har",
+      "registryType": "ohpm"
+    },
     "@ohos/hamock@1.0.0": {
       "name": "",
       "version": "1.0.0",
@@ -23,6 +51,13 @@
       "integrity": "sha512-iyKGMXxE+9PpCkqEwu0VykN/7hNpb+QOeIuHwkmZnxOpI+dFZt6yhPB7k89EgV1MiSK/ieV/hMjr5Z2mWwRfMQ==",
       "resolved": "https://ohpm.openharmony.cn/ohpm/@ohos/hypium/-/hypium-1.0.21.har",
       "registryType": "ohpm"
+    },
+    "@wuyan/hm_chart@2.0.4": {
+      "name": "",
+      "version": "2.0.4",
+      "integrity": "sha512-fjyE05RpY0splKSNe5HWA4XHcQ4hZFyoKsJCQu27H8B7AvzCp3UcO5Y+Gsb+hfmg5kItNzVl3RkwUZ2klX2ffg==",
+      "resolved": "https://ohpm.openharmony.cn/ohpm/@wuyan/hm_chart/-/hm_chart-2.0.4.har",
+      "registryType": "ohpm"
     }
   }
 }
\ No newline at end of file
diff --git a/oh-package.json5 b/oh-package.json5
index a8aff0c..2dd7c28 100644
--- a/oh-package.json5
+++ b/oh-package.json5
@@ -2,9 +2,13 @@
   "modelVersion": "5.0.5",
   "description": "Please describe the basic information.",
   "dependencies": {
+    "@wuyan/hm_chart": "^2.0.4",
+    "@mcui/mccharts": "^2.8.9",
+    "@luvi/lv-markdown-in": "^2.0.15"
   },
   "devDependencies": {
     "@ohos/hypium": "1.0.21",
     "@ohos/hamock": "1.0.0"
-  }
-}
+  },
+  "dynamicDependencies": {}
+}
\ No newline at end of file

--
Gitblit v1.8.0