From 791a96ae03cf92478244127b294c1fe520d31e89 Mon Sep 17 00:00:00 2001
From: wwf <1971391498@qq.com>
Date: 星期六, 11 十月 2025 11:17:10 +0800
Subject: [PATCH] 优化

---
 entry/src/main/ets/pages/account/AccountPage.ets |  209 +++++++++++++++++++++++++++++++++++++++++++++++++--
 1 files changed, 198 insertions(+), 11 deletions(-)

diff --git a/entry/src/main/ets/pages/account/AccountPage.ets b/entry/src/main/ets/pages/account/AccountPage.ets
index dc6e525..9da5a55 100644
--- a/entry/src/main/ets/pages/account/AccountPage.ets
+++ b/entry/src/main/ets/pages/account/AccountPage.ets
@@ -1,9 +1,88 @@
+import { ComponentContent, promptAction, router } from "@kit.ArkUI"
+import { PromptActionClass } from '../../utils/PromptActionClass';
+import { http } from "@kit.NetworkKit";
+import { HttpResponseResult } from "../../data/HttpResponse";
+import { common } from "@kit.AbilityKit";
+import { DOMAIN } from "../../utils/config";
+
+export class UserInfo {
+  nickName: string = ''
+  mobilePhone: string = ''
+  age: string = ''
+  gender: string = ''
+  job: string = ''
+  preferJob: string = ''
+  introduce: string = ''
+}
 class accountListItem {
   title: string = ''
   icon: string | Resource = ''
 }
+class DialogParams {
+  text: string = "";
 
-@Entry
+  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)
+}
+
 @Component
 export struct AccountPage {
   @State ListItems: accountListItem[] = [
@@ -12,6 +91,52 @@
     { 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('娉ㄥ唽鎴愬姛')
+  @State userInfo: UserInfo = {
+    nickName: '',
+    mobilePhone: '',
+    age: '',
+    gender: '',
+    job: '',
+    preferJob: '',
+    introduce: '',
+  }
+  @Link selectIndex: number | undefined;
+
+  aboutToAppear(): void {
+    PromptActionClass.setContext(this.ctx);
+    PromptActionClass.setContentNode(this.contentNode);
+    PromptActionClass.setOptions({ alignment: DialogAlignment.Center, offset: { dx: 0, dy: 0 } });
+    this.getUserInfo()
+  }
+
+  getUserInfo() {
+    let httpRequest = http.createHttp();
+    httpRequest.request(
+      `${DOMAIN}/quiz-community/public/v1.0/users/userinfo`,
+      {
+        method: http.RequestMethod.GET,
+        header: { 'Content-Type': 'application/json', 'x-jwt-token': `Bearer ${AppStorage.get('x-jwt-token')}` },
+      },
+      (err, data) => {
+        console.log('response', '/users/userinfo')
+        console.log(JSON.stringify(data.result))
+        if (data.responseCode == 200) {
+          const resData = (typeof data.result == 'string' ? JSON.parse(data.result) : data.result) as HttpResponseResult<UserInfo>
+          if (resData.code == 200) {
+            this.userInfo = resData.data as UserInfo
+          } else {
+            promptAction.showToast({ message: resData.msg })
+          }
+        }
+      }
+    )
+  }
+
   build() {
     Column() {
       Text('涓汉涓績')
@@ -28,13 +153,13 @@
             .width(50)
             .height(50)
           Column() {
-            Text('鏉庡己')
+            Text(this.userInfo.nickName || '鏉庡己')
               .fontSize(16)
               .width('100%')
               .fontWeight(600)
               .fontColor(Color.Black)
               .textAlign(TextAlign.Start)
-            Text('鐢� | 28宀� | 鍓嶇寮�鍙戝伐绋嬪笀')
+            Text(`${this.userInfo.gender || '鐢�'} | ${this.userInfo.age || 28}宀� | ${this.userInfo.job || '鍓嶇寮�鍙戝伐绋嬪笀'}`)
               .fontColor('#333333')
               .fontSize(14)
               .width('100%')
@@ -46,10 +171,15 @@
           .justifyContent(FlexAlign.SpaceBetween)
           .layoutWeight(1)
           Image($r('app.media.chevron_right'))
-            .width(18)
-            .height(18)
+            .width(14)
+            .height(14)
         }
         .width('100%')
+        .onClick(() =>{
+          router.pushUrl({
+            url: 'pages/account/UserInfoPage'
+          })
+        })
 
         Column({ space: 16 }) {
           Row() {
@@ -64,14 +194,25 @@
               .backgroundColor(Color.White)
               .padding({ left: 10, right: 10, top: 4, bottom: 4 })
               .fontColor('#1756f4')
+              .onClick(() => {
+                this.selectIndex = 1
+              })
           }
           .width('100%')
           .justifyContent(FlexAlign.SpaceBetween)
 
-          Text('褰撳墠瀛︿範绾у埆锛氶潚閾�')
-            .width('100%')
-            .fontColor(Color.White)
-            .fontSize(14)
+          Row() {
+            Text('褰撳墠瀛︿範绾у埆锛氶潚閾�')
+              .fontColor(Color.White)
+              .fontSize(14)
+            Image($r('app.media.bronze_icon'))
+              .width(20)
+              .height(20)
+              .margin({ left: 6 })
+          }
+          .width('100%')
+          .justifyContent(FlexAlign.Start)
+
           Row() {
             Column({ space: 4 }) {
               Text('瀛︿範鏃堕暱')
@@ -122,6 +263,12 @@
             .fontWeight(500)
             .fontColor(Color.Black)
         }
+        .onClick(() => {
+          router.pushUrl({
+            url: 'pages/account/LearningRecordPage'
+          })
+        })
+
         Column({ space: 6 }) {
           Image($r('app.media.account_course'))
             .width(40)
@@ -131,8 +278,14 @@
             .fontWeight(500)
             .fontColor(Color.Black)
         }
+        .onClick(() => {
+          router.pushUrl({
+            url: 'pages/account/CourseCollection'
+          })
+        })
+
         Column({ space: 6 }) {
-          Image($r('app.media.account_jianli'))
+          Image($r('app.media.account_vitae'))
             .width(40)
             .height(40)
           Text('涓汉绠�鍘�')
@@ -140,6 +293,12 @@
             .fontWeight(500)
             .fontColor(Color.Black)
         }
+        .onClick(() => {
+          router.pushUrl({
+            url: 'pages/account/PersonVitae'
+          })
+        })
+
         Column({ space: 6 }) {
           Image($r('app.media.account_communicated'))
             .width(40)
@@ -149,6 +308,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 +341,25 @@
               }
               .width('100%')
               .padding(8)
+              .onClick(() => {
+                if (item.title == '闅愮璁剧疆') {
+                  router.pushUrl({
+                    url: 'pages/account/SettingPage'
+                  })
+                } else if (item.title == '娑堟伅閫氱煡') {
+                  router.pushUrl({
+                    url: 'pages/account/MessagePushPage'
+                  })
+                } 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 == '鍏充簬鎴戜滑') {
+                  router.pushUrl({
+                    url: 'pages/account/AboutPage'
+                  })
+                }
+              })
             }
           })
         }
@@ -199,10 +383,13 @@
           .width('100%')
           .fontColor(Color.White)
           .backgroundColor('#1761f4')
+          .onClick(() => {
+            (getContext(this) as common.UIAbilityContext)?.terminateSelf()
+          })
       }
       .padding(16)
       .width('100%')
-      .background(Color.White)
+      .backgroundColor(Color.White)
       .height(300)
 
     }

--
Gitblit v1.8.0