Bläddra i källkod

分批次接口

XUYangWei 2 månader sedan
förälder
incheckning
6ac8c24161
82 ändrade filer med 1009 tillägg och 683 borttagningar
  1. BIN
      AppScope/resources/base/media/app_icon.png
  2. 2 0
      commons/basic/Index.ets
  3. 1 1
      commons/basic/src/main/ets/apis/YTRequest.ets
  4. 47 202
      commons/basic/src/main/ets/apis/YTUserRequest.ets
  5. 22 6
      commons/basic/src/main/ets/components/dialog/BlessCustomDialog.ets
  6. 6 0
      commons/basic/src/main/ets/models/UserInfo.ets
  7. 18 1
      commons/basic/src/main/ets/models/index.ets
  8. 4 4
      commons/basic/src/main/ets/utils/YTRequest.ets
  9. BIN
      commons/basic/src/main/resources/base/media/dengguang.png
  10. BIN
      commons/basic/src/main/resources/base/media/dizuo.png
  11. BIN
      commons/basic/src/main/resources/base/media/fuqian0.png
  12. BIN
      commons/basic/src/main/resources/base/media/fuqian1.png
  13. BIN
      commons/basic/src/main/resources/base/media/fuqian10.png
  14. BIN
      commons/basic/src/main/resources/base/media/fuqian11.png
  15. BIN
      commons/basic/src/main/resources/base/media/fuqian2.png
  16. BIN
      commons/basic/src/main/resources/base/media/fuqian3.png
  17. BIN
      commons/basic/src/main/resources/base/media/fuqian4.png
  18. BIN
      commons/basic/src/main/resources/base/media/fuqian5.png
  19. BIN
      commons/basic/src/main/resources/base/media/fuqian6.png
  20. BIN
      commons/basic/src/main/resources/base/media/fuqian7.png
  21. BIN
      commons/basic/src/main/resources/base/media/fuqian8.png
  22. BIN
      commons/basic/src/main/resources/base/media/fuqian9.png
  23. BIN
      commons/basic/src/main/resources/base/media/ic_back.png
  24. BIN
      commons/basic/src/main/resources/base/media/quxiao.png
  25. BIN
      commons/basic/src/main/resources/base/media/shengying.png
  26. BIN
      commons/basic/src/main/resources/base/media/shezhix.png
  27. BIN
      commons/basic/src/main/resources/base/media/suoxiao.png
  28. BIN
      commons/basic/src/main/resources/base/media/zhendong.png
  29. 114 12
      features/feature/src/main/ets/view/FragranceSettingView.ets
  30. 234 85
      features/feature/src/main/ets/view/FragranceView.ets
  31. 442 329
      features/feature/src/main/ets/view/MainView.ets
  32. BIN
      features/feature/src/main/resources/base/media/huo1.png
  33. BIN
      features/feature/src/main/resources/base/media/huo2.png
  34. BIN
      features/feature/src/main/resources/base/media/huo3.png
  35. BIN
      features/feature/src/main/resources/base/media/huo4.png
  36. BIN
      features/feature/src/main/resources/base/media/huo5.png
  37. BIN
      features/feature/src/main/resources/base/media/three_Fra_1.png
  38. BIN
      features/feature/src/main/resources/base/media/three_Fra_10.png
  39. BIN
      features/feature/src/main/resources/base/media/three_Fra_11.png
  40. BIN
      features/feature/src/main/resources/base/media/three_Fra_12.png
  41. BIN
      features/feature/src/main/resources/base/media/three_Fra_13.png
  42. BIN
      features/feature/src/main/resources/base/media/three_Fra_14.png
  43. BIN
      features/feature/src/main/resources/base/media/three_Fra_15.png
  44. BIN
      features/feature/src/main/resources/base/media/three_Fra_16.png
  45. BIN
      features/feature/src/main/resources/base/media/three_Fra_17.png
  46. BIN
      features/feature/src/main/resources/base/media/three_Fra_18.png
  47. BIN
      features/feature/src/main/resources/base/media/three_Fra_19.png
  48. BIN
      features/feature/src/main/resources/base/media/three_Fra_2.png
  49. BIN
      features/feature/src/main/resources/base/media/three_Fra_20.png
  50. BIN
      features/feature/src/main/resources/base/media/three_Fra_21.png
  51. BIN
      features/feature/src/main/resources/base/media/three_Fra_3.png
  52. BIN
      features/feature/src/main/resources/base/media/three_Fra_4.png
  53. BIN
      features/feature/src/main/resources/base/media/three_Fra_5.png
  54. BIN
      features/feature/src/main/resources/base/media/three_Fra_6.png
  55. BIN
      features/feature/src/main/resources/base/media/three_Fra_7.png
  56. BIN
      features/feature/src/main/resources/base/media/three_Fra_8.png
  57. BIN
      features/feature/src/main/resources/base/media/three_Fra_9.png
  58. 19 1
      features/user/src/main/ets/pages/AboutUS.ets
  59. 25 5
      features/user/src/main/ets/pages/Privacy.ets
  60. 17 1
      features/user/src/main/ets/pages/SettingPage.ets
  61. 20 3
      features/user/src/main/ets/pages/UserAgreement.ets
  62. 24 21
      features/user/src/main/ets/views/Mine.ets
  63. BIN
      features/user/src/main/resources/base/media/about.png
  64. BIN
      features/user/src/main/resources/base/media/ic_back.png
  65. BIN
      features/user/src/main/resources/base/media/login.png
  66. BIN
      features/user/src/main/resources/base/media/mertime.png
  67. BIN
      features/user/src/main/resources/base/media/share.png
  68. BIN
      features/user/src/main/resources/base/media/sugest.png
  69. BIN
      features/user/src/main/resources/base/media/tuichu.png
  70. 3 0
      products/entry/src/main/ets/entryability/EntryAbility.ets
  71. 11 12
      products/entry/src/main/ets/pages/Index.ets
  72. BIN
      products/entry/src/main/resources/base/media/home_sel.png
  73. BIN
      products/entry/src/main/resources/base/media/home_unsel.png
  74. BIN
      products/entry/src/main/resources/base/media/homes.png
  75. BIN
      products/entry/src/main/resources/base/media/homeuns.png
  76. BIN
      products/entry/src/main/resources/base/media/my_sel.png
  77. BIN
      products/entry/src/main/resources/base/media/my_unsel.png
  78. BIN
      products/entry/src/main/resources/base/media/mys.png
  79. BIN
      products/entry/src/main/resources/base/media/myuns.png
  80. BIN
      products/entry/src/main/resources/base/media/secand_sel.png
  81. BIN
      products/entry/src/main/resources/base/media/secand_unsel.png
  82. BIN
      products/entry/src/main/resources/base/media/startIcon.png

BIN
AppScope/resources/base/media/app_icon.png


+ 2 - 0
commons/basic/Index.ets

@@ -55,8 +55,10 @@ export { BasicType } from './src/main/ets/models/index'
 export * from '@mumu/crop'
 export {avPlayerManager} from './src/main/ets/utils/AVPlayerManager'
 export {AppStorageKeyFishCollect} from './src/main/ets/constants/index'
+export {BlessCustomCustomDialog} from './src/main/ets/components/dialog/BlessCustomDialog'
 
 export * from './src/main/ets/models'
+export {Params}from './src/main/ets/models'
 export{Vibration} from './src/main/ets/utils/VibrationUtils'
 export {bigWheelDB,BigWheel}from './src/main/ets/utils/BigWheelDB'
 

+ 1 - 1
commons/basic/src/main/ets/apis/YTRequest.ets

@@ -14,7 +14,7 @@ import { promptAction } from '@kit.ArkUI';
 
 // export const baseURL: string = 'https://hm-test.ytpm.net/prod-api'
 
-export const baseURL: string = 'http://192.168.1.160:48097'
+export const baseURL: string = 'http://8.139.252.157:9009'
 // export const baseURL: string = 'https://hm.ytpm.net/prod-decision/decisionApUser'
 // export const baseURL:string='https://hm.ytpm.net/prod-decision'
 export const instance = axios.create({

+ 47 - 202
commons/basic/src/main/ets/apis/YTUserRequest.ets

@@ -1,6 +1,6 @@
 import { IBestToast } from '@ibestservices/ibest-ui'
 import { AppStorageKeyCollect } from '../constants'
-import { ReqString, ResultCallBack } from '../models'
+import { Params, ReqString, ResultCallBack } from '../models'
 import { LoginCollect } from '../models/LoginCollect'
 import { UserInfo, userInfo } from '../models/UserInfo'
 import { yTRouter } from '../utils/YTRouter'
@@ -17,7 +17,7 @@ export class YTUserRequest extends YTRequest {
   //获取验证码
   static getLoginCaptcha(phonenumber: string, result: ResultCallBack<LoginCollect>) {
     YTUserRequest.post<LoginCollect, LoginCollect>(
-      `/decisionApUser/sendSmsCode`,
+      `/api/woodenfish/member/sendSmsCode`,
       new LoginCollect('login')
         .setPhonenumber(phonenumber)
     )
@@ -32,9 +32,9 @@ export class YTUserRequest extends YTRequest {
   //验证码登录
   static phonenumberLogin(param: LoginCollect, result?: ResultCallBack<UserInfo>) {
     if (param.getUuid() !== undefined) {
-      YTUserRequest.post<ReqString, LoginCollect>(`/decisionApUser/phoneLogin`, param)
+      YTUserRequest.post<ReqString, LoginCollect>(`/api/woodenfish/member/phoneLogin`, param)
         .then(res => {
-          userInfo.setToken(res[AppStorageKeyCollect.TOKEN])
+          userInfo.setToken(res[AppStorageKeyCollect.TOKEN] as string)
           YTUserRequest.refreshUserInfo((res) => {
             IBestToast.show({ message: '登录成功' })
             yTRouter.routerBack()
@@ -49,9 +49,9 @@ export class YTUserRequest extends YTRequest {
   //注册
   static register(param: LoginCollect) {
     if (param.getUuid() !== undefined) {
-      YTUserRequest.post<ReqString, LoginCollect>(`/decisionApUser/phoneSave`, param)
+      YTUserRequest.post<ReqString, LoginCollect>(`/api/woodenfish/member/phoneSave`, param)
         .then(res => {
-          userInfo.setToken(res[AppStorageKeyCollect.TOKEN])
+          userInfo.setToken(res[AppStorageKeyCollect.TOKEN] as string)
           YTUserRequest.refreshUserInfo(() => {
             IBestToast.show({ message: '注册成功' })
             yTRouter.routerBack()
@@ -64,9 +64,9 @@ export class YTUserRequest extends YTRequest {
 
   //密码登录
   static passwordLogin(param: LoginCollect, result?: ResultCallBack<UserInfo>) {
-    YTUserRequest.post<ReqString, LoginCollect>(`/decisionApUser/passwordLogin`, param)
+    YTUserRequest.post<ReqString, LoginCollect>(`/api/woodenfish/member/passwordLogin`, param)
       .then(res => {
-        userInfo.setToken(res[AppStorageKeyCollect.TOKEN])
+        userInfo.setToken(res[AppStorageKeyCollect.TOKEN] as string)
         YTUserRequest.refreshUserInfo((res) => {
           IBestToast.show({ message: '登录成功' })
           yTRouter.routerBack()
@@ -77,7 +77,7 @@ export class YTUserRequest extends YTRequest {
 
   //重置密码
   static resetPassword(param: LoginCollect, result?: ResultCallBack<undefined>) {
-    YTUserRequest.post<ReqString, LoginCollect>(`/decisionApUser/resetPwd`, param)
+    YTUserRequest.post<ReqString, LoginCollect>(`/api/woodenfish/member/resetPwd`, param)
       .then(() => {
         result?.()
       })
@@ -96,10 +96,10 @@ export class YTUserRequest extends YTRequest {
       HuaweiAuthPlugin.requestAuth()
         .then(code => {
           instance.setCode(code!)
-          YTUserRequest.post<ReqString, LoginCollect>(`/decisionApUser/hmLogin`,
+          YTUserRequest.post<ReqString, LoginCollect>(`/api/woodenfish/member/hmLogin`,
             instance)
             .then(data => {
-              const token = data['token']
+              const token = data['token'] as string
               userInfo.setToken(token)
               YTUserRequest.changeNickname('华为用户',()=>{})
               YTUserRequest.refreshUserInfo((userInfo) => {
@@ -128,7 +128,7 @@ export class YTUserRequest extends YTRequest {
 
   //刷新用户信息
   static refreshUserInfo(result?: ResultCallBack<UserInfo>) {
-    YTUserRequest.post<UserInfo, null>(`/decisionApUser/info`)
+    YTUserRequest.post<UserInfo, null>(`/api/woodenfish/member/info`)
       .then(res => {
         userInfo.setUserInfoAndLogin(res)
         YTLog.info(userInfo)
@@ -152,7 +152,7 @@ export class YTUserRequest extends YTRequest {
       }
     })
       .then(res => {
-        const url = res['url']
+        const url = res['url'] as string
         success(url)
       })
   }
@@ -172,7 +172,7 @@ export class YTUserRequest extends YTRequest {
     })
       .then(res => {
         const url = res['url']
-        YTUserRequest.post<null, ReqString>(`/decisionApUser/modifyMemberIcon`,
+        YTUserRequest.post<null, ReqString>(`/api/woodenfish/member/modifyMemberIcon`,
           { 'memberIcon': url })
           .then(() => {
             success()
@@ -189,7 +189,7 @@ export class YTUserRequest extends YTRequest {
 
   // 修改用户昵称
   static changeNickname(name: string, success: () => void) {
-    YTUserRequest.post<null, ReqString>(`/decisionApUser/modifyMemberName`,
+    YTUserRequest.post<null, ReqString>(`/api/woodenfish/member/modifyMemberName`,
       { 'memberName': name })
       .then(() => {
         YTUserRequest.refreshUserInfo(() => {
@@ -200,7 +200,7 @@ export class YTUserRequest extends YTRequest {
 
   //问题反馈
   static questionBack(des: string, createBy: string) {
-    YTUserRequest.post<null, ReqString>(`/decisionBack/saveQuestion`, {
+    YTUserRequest.post<null, ReqString>(`/api/woodenfish/question/saveQuestion`, {
       'backQuestion': des,
       'createBy': createBy,
       // 'createTime': new YTDate().formatDate(),
@@ -219,10 +219,10 @@ export class YTUserRequest extends YTRequest {
   //用户设置界面的密码重置
   //获取验证码
   static getMyCaptcha(phonenumber: string, success: (res: string) => void, fail: (err: Error) => void) {
-    YTRequest.post<ReqString, ReqString>(`/decisionApUser/sendSmsCode`,
+    YTRequest.post<ReqString, ReqString>(`/api/woodenfish/member/sendSmsCode`,
       { 'phonenumber': phonenumber })
       .then(res => {
-        success(res['uuid'])
+        success(res['uuid'] as string)
       })
       .catch((err: Error) => {
         IBestToast.show({
@@ -235,7 +235,7 @@ export class YTUserRequest extends YTRequest {
   static resetMyPassword(param: ReqString,callback?:()=>void) {
     const uuid = AppStorage.get<string>('resetPassword'+'uuid')
     if (uuid !== undefined) {
-      YTRequest.post<ReqString, ReqString>(`/decisionApUser/resetPwd`, {
+      YTRequest.post<ReqString, ReqString>(`/api/woodenfish/member/resetPwd`, {
         'phonenumber': param['phonenumber'],
         'password': param['password'],
         'smsCode': param['smsCode'],
@@ -265,110 +265,35 @@ export class YTUserRequest extends YTRequest {
     }
   }
 
-
-
-  //抛硬币接口
-  static getTossCoinResult(result: ResultCallBack<ReqString>){
-    YTUserRequest.get<ReqString>(`/decisionCoinRecord/throwCoin`)
-      .then((res) => {
-        result(res as ReqString)
-      })
-      .catch((e: Error) => {
-        YTLog.error(e)
-      })
-  }
-
-  //获取最近得抛硬币一次接口
-
-  static getNearTossCoinResult(result: ResultCallBack<ReqString>){
-    YTUserRequest.get<ReqString>(` /decisionCoinRecord/queryByLastCoinRecord`)
-      .then((res) => {
-        result(res)
-      })
-      .catch((e: Error) => {
-        YTLog.error(e)
-      })
-  }
-
-  //获取筛子结果,获取最近得一次记录
-
-  static getRollDiceResult(diceCount:number,result: ResultCallBack<ReqString>){
-    YTUserRequest.get<ReqString>(`/decisionDiceRecord/rollDice?diceCount=${diceCount}`)
-      .then((res) => {
-        result(res)
-      })
-      .catch((e: Error) => {
-        YTLog.error(e)
-      })
-  }
-
-  static getNearRollDiceResult(result: ResultCallBack<ReqString>){
-    YTUserRequest.get<ReqString>(`/decisionDiceRecord/queryByDiceRecord`)
-      .then((res) => {
-        result(res)
-      })
-      .catch((e: Error) => {
-        YTLog.error(e)
-      })
-  }
-
-  //吃什么
-
-  static getEatResult(result: ResultCallBack<ReqString>){
-    YTUserRequest.get<ReqString>(`/decisionFoodRecord/randomFood`)
-      .then((res) => {
-        result(res)
-      })
-      .catch((e: Error) => {
-        YTLog.error(e)
-      })
+  //敲击木鱼
+  static knockingFish(){
+    YTUserRequest.get<null>(`/api/woodenfish/config/knocking`)
   }
 
-  static getNearEatResult(result: ResultCallBack<ReqString>){
-    YTUserRequest.get<ReqString>(`/decisionFoodRecord/queryByFoodRecord`)
-      .then((res) => {
-        result(res)
-      })
-      .catch((e: Error) => {
-        YTLog.error(e)
-      })
+  //重置木鱼
+  static resetFish(){
+    YTUserRequest.get<null>(`/api/woodenfish/config/reset`)
   }
-
-
-  //随机数
-
-  static getNumberResult(count:number,maxValue:number,minValue:number,result: ResultCallBack<ReqString>){
-    YTUserRequest.get<ReqString>(`/decisionRandomNumberRecord/generateRandomNumbers?count=${count}&maxValue=${maxValue}&minValue=${minValue}`)
-      .then((res) => {
-        result(res)
-      })
-      .catch((e: Error) => {
-        YTLog.error(e)
-      })
-  }
-
-  static getNearNumberResult(result: ResultCallBack<ReqString>){
-    YTUserRequest.get<ReqString>(`/decisionRandomNumberRecord/queryLastRecord`)
-      .then((res) => {
-        result(res)
+  //修改烧香配置表
+  static updateFishFra(param:Params, success: (res: string) => void, fail: (err: Error) => void) {
+    YTRequest.post<ReqString, ReqString>(`/api/woodenfish/config/modify`,
+      {
+        "countdownHour": param.countdownHour as number,
+        "countdownTime": param.countdownTime as number,
+        "fixedNum": param.fixedNum as number,
+        "fixedTime": param.fixedTime as number,
+        "incenseCharacters": param.incenseCharacters as string,
+        "incenseNum": param.incenseNum as number,
+        "incenseTime": param.incenseTime as number,
+        "infiniteTime": param.infiniteTime as number,
+        "luckValue": param.luckValue as number,
+        "meritsValue": param.meritsValue as number,
+        "suspensionCharacters": param.suspensionCharacters as string,
+        "timbreId": param.timbreId as number,
+        "woodenfishModel": param.woodenfishModel as number
       })
-      .catch((e: Error) => {
-        YTLog.error(e)
-      })
-  }
-
-
-  //转盘,重复
-  static allowRepeat(params:ReqString, success: (res: string) => void, fail: (err: Error) => void) {
-    YTRequest.post<ReqString, ReqString>(`/decisionTurntableConfig/allowRepeat`,
-      { 'id': params['id'],
-        'allowRepeat':params['allowRepeat']
-      }
-      )
       .then(res => {
 
-        //data:"只能传0,1",不能为0
-        success(res['data'])
       })
       .catch((err: Error) => {
         IBestToast.show({
@@ -377,93 +302,13 @@ export class YTUserRequest extends YTRequest {
         })
       })
   }
-  //旋转时长修改
-  static rotateTime(params:ReqString, success: (res: string) => void, fail: (err: Error) => void) {
-    YTRequest.post<ReqString, ReqString>(`/decisionTurntableConfig/rotateTime`,
-      { 'id': params['id'],
-        'spinDuration':params['spinDuration']
-      }
-    )
-      .then(res => {
 
-        //data:"6",不能为0 一样
-        success(res['data'])
-      })
-      .catch((err: Error) => {
-        IBestToast.show({
-          message:err.message,
-          duration:500
-        })
-      })
-  }
-
-  //转盘选项修改
-
-  static updateBach(params:ReqString, success: (res: string) => void, fail: (err: Error) => void) {
-    YTRequest.post<ReqString, ReqString>(`/decisionTurntableOption/updateBach`,
-      { 'id': params['id'],
-        'spinDuration':params['spinDuration']
-      }
-    )
-      .then(res => {
-
-        //data:"6",不能为0 一样
-        success(res['data'])
-      })
-      .catch((err: Error) => {
-        IBestToast.show({
-          message:err.message,
-          duration:500
-        })
-      })
-  }
-
-
-  //重置选项
-  // static reset(params:ReqString, success: (res: string) => void, fail: (err: Error) => void) {
-  //   YTRequest.post<ReqString, ReqString>(`/decisionTurntableOption/reset`,
-  //     { 'turntableId': params['turntableId'],
-  //     }
-  //   )
-  //     .then(res => {
-  //       //data:true
-  //       //操作成功
-  //
-  //     })
-  //     .catch((err: Error) => {
-  //       IBestToast.show({
-  //         message:err.message,
-  //         duration:500
-  //       })
-  //     })
-  // }
-
-  //转一转
-  static bigWheelSave(params:ReqString, success: (res: string) => void, fail: (err: Error) => void) {
-    YTRequest.post<ReqString, ReqString>(`/decisionTurntableRecord/save`,
-      { 'turntableId': params['turntableId'],
-        'optionId':params['optionId'],
-        // 'optionName':params['optionName'],
-      }
-    )
-      .then(res => {
-        //data:true
-        //操作成功
-
-      })
-      .catch((err: Error) => {
-        IBestToast.show({
-          message:err.message,
-          duration:500
-        })
-      })
+  //获取配置表
+  static getFishFra(success:(param:Params)=>void){
+    YTUserRequest.get<Params>(`/api/woodenfish/config/selectConfigByUserId`).then((res)=>{
+     success(res)
+    })
   }
 
 
-
-
-
-
-
-
 }

+ 22 - 6
commons/basic/src/main/ets/components/dialog/BlessCustomDialog.ets

@@ -1,16 +1,32 @@
+import { photoAccessHelper } from "@kit.MediaLibraryKit"
+
 @CustomDialog
 export struct BlessCustomCustomDialog {
   controller: CustomDialogController
-  @State img:ResourceStr=""
+  @State imgIndex:number=0
   build() {
     Column({space:21}){
-      Stack() {
-        Image(this.img).width(270)
-      }
-      Image($r('app.media.img')).width(32).onClick(()=>{
-        this.controller.close()
+      Column() {
+        Column({space:20}) {
+          Image($r(`app.media.fuqian${this.imgIndex}`)).width(270)
 
+          Text('保存图片')
+            .padding({left:56,right:56,top:14,bottom:14})
+            .borderRadius(24)
+            .backgroundColor('rgba(250, 222, 113, 1)')
+            .fontColor('rgba(0, 0, 0, 0.95)')
+            .onClick(()=>{
+
+            })
+        }.height('100%')
+        .justifyContent(FlexAlign.Center)
+      }.width(307).height(586).borderRadius(20).backgroundColor('rgba(252, 253, 237, 1)')
+      Image($r('app.media.img')).width(32).onClick(() => {
+        this.controller.close()
       })
+
+
+
     }.width('100%')
     .height('100%')
     .backgroundColor('rgba(0, 0, 0, 0.6)')

+ 6 - 0
commons/basic/src/main/ets/models/UserInfo.ets

@@ -17,6 +17,7 @@ export class UserInfo {
   private aiCount?: number
   private userId?: number
   private memberScore?: number
+  private  meritsTotal?: string
 
   private constructor() {
   }
@@ -48,6 +49,7 @@ export class UserInfo {
     userInfo.memberScore = _userInfo.memberScore
     userInfo.aiCount = _userInfo.aiCount
     userInfo.memberPhone = _userInfo.memberPhone
+    userInfo.meritsTotal=_userInfo.meritsTotal
     emitter.emit('refreshList')
     AppStorage.setOrCreate(UserInfo.KEY, userInfo)
   }
@@ -65,6 +67,7 @@ export class UserInfo {
     userInfo.memberScore = undefined
     userInfo.aiCount = undefined
     userInfo.memberPhone = undefined
+    userInfo.meritsTotal=undefined
     AppStorage.setOrCreate(UserInfo.KEY, userInfo)
     AppStorage.setOrCreate(AppStorageKeyCollect.TOKEN, undefined)
   }
@@ -145,6 +148,9 @@ export class UserInfo {
   getPhoneNumber() {
     return userInfo.memberPhone
   }
+  getMerit(){
+    return userInfo.meritsTotal
+  }
 
   setPhoneNumber(phoneNumber: string) {
     userInfo.memberPhone = phoneNumber

+ 18 - 1
commons/basic/src/main/ets/models/index.ets

@@ -15,7 +15,7 @@ export interface BasicType<T> {
   finally?: () => void
 }
 
-export type ReqString = Record<string, string>
+export type ReqString = Record<string, string|number>
 
 export interface AvoidType {
   top?: number,
@@ -41,6 +41,23 @@ export interface DelPhotoParam {
   type: 'bill' | 'header' | 'image'
 }
 
+export interface Params{
+  countdownHour?: number, //倒计时模式时间
+  countdownTime?: number,  //倒计时模式间隔时长
+  fixedNum?: number, //固定模式敲击次数
+  fixedTime?: number, //固定模式间隔时长
+  id?: number,
+  incenseCharacters?: string, //点香悬浮文字json格式
+  incenseNum?: number,  //点香数量
+  incenseTime?: number, //点香时间
+  infiniteTime?: number, //无限模式间隔时长
+  luckValue?: number, //集福数
+  meritsValue?: number, //功德数
+  suspensionCharacters?: string, //木鱼悬浮文字
+  timbreId?: number, //音色id
+  woodenfishModel?: number  //木鱼模式(1结束,2无限,3次数,4倒计时)
+}
+
 /**
  * @description 结果回调函数的类型别名
  * @param res 结果输出

+ 4 - 4
commons/basic/src/main/ets/utils/YTRequest.ets

@@ -84,7 +84,7 @@ export class YTRequest {
     YTRequest.post<ReqString, ReqString>(`/${YTRequest.productName}/sendSmsCode`,
       { 'phonenumber': phonenumber })
       .then(res => {
-        success(res['uuid'])
+        success(res['uuid'] as string)
       })
       .catch((err: Error) => {
         fail(err)
@@ -101,7 +101,7 @@ export class YTRequest {
         'uuid': uuid
       })
         .then(res => {
-          userInfo.setToken(res[AppStorageKeyCollect.TOKEN])
+          userInfo.setToken(res[AppStorageKeyCollect.TOKEN] as string)
           YTRequest.refreshUserInfo(() => {
             IBestToast.show({ message: '登录成功' })
             yTRouter.routerBack()
@@ -119,7 +119,7 @@ export class YTRequest {
           YTRequest.post<ReqString, ReqString>(`/${YTRequest.productName}/hmLogin`,
             { 'code': res } as ReqString)
             .then(data => {
-              const token = data['token']
+              const token = data['token'] as string
               userInfo.setToken(token)
               YTRequest.refreshUserInfo((userInfo) => {
                 // YTLog.info(userInfo)
@@ -171,7 +171,7 @@ export class YTRequest {
       }
     })
       .then(res => {
-        const url = res['url']
+        const url = res['url'] as string
         success(url)
       })
   }

BIN
commons/basic/src/main/resources/base/media/dengguang.png


BIN
commons/basic/src/main/resources/base/media/dizuo.png


BIN
commons/basic/src/main/resources/base/media/fuqian0.png


BIN
commons/basic/src/main/resources/base/media/fuqian1.png


BIN
commons/basic/src/main/resources/base/media/fuqian10.png


BIN
commons/basic/src/main/resources/base/media/fuqian11.png


BIN
commons/basic/src/main/resources/base/media/fuqian2.png


BIN
commons/basic/src/main/resources/base/media/fuqian3.png


BIN
commons/basic/src/main/resources/base/media/fuqian4.png


BIN
commons/basic/src/main/resources/base/media/fuqian5.png


BIN
commons/basic/src/main/resources/base/media/fuqian6.png


BIN
commons/basic/src/main/resources/base/media/fuqian7.png


BIN
commons/basic/src/main/resources/base/media/fuqian8.png


BIN
commons/basic/src/main/resources/base/media/fuqian9.png


BIN
commons/basic/src/main/resources/base/media/ic_back.png


BIN
commons/basic/src/main/resources/base/media/quxiao.png


BIN
commons/basic/src/main/resources/base/media/shengying.png


BIN
commons/basic/src/main/resources/base/media/shezhix.png


BIN
commons/basic/src/main/resources/base/media/suoxiao.png


BIN
commons/basic/src/main/resources/base/media/zhendong.png


+ 114 - 12
features/feature/src/main/ets/view/FragranceSettingView.ets

@@ -14,6 +14,10 @@ function FragranceSettingBuilder() {
 struct FragranceSettingView {
   @StorageLink(AppStorageKeyFishCollect.TEXTARR)
   textArr:string[]=[]
+  @State
+  currSelectNumber:number=1
+  @State
+  currSelectTimeNumber:number=1
   build() {
     Column() {
       YTHeader({title:'设置'})
@@ -25,28 +29,35 @@ struct FragranceSettingView {
           Text('悬浮文字').fontColor(Color.White)
         }.width('100%')
         .justifyContent(FlexAlign.Start)
-
-        ForEach(this.textArr,(item:string,index:number)=>{
-          TextInputCom({
-            text:item,
-            changeText:(value:string)=>{
-              this.textArr[index]=value
+        List({space:20}){
+          ForEach(this.textArr,(item:string,index:number)=>{
+            ListItem() {
+              TextInputCom({
+                text: item,
+                changeText: (value: string) => {
+                  this.textArr[index] = value
+                }
+              })
             }
           })
-        })
+        }.layoutWeight(1).scrollBar(BarState.Off)
+
+
 
         //取消
         Column(){
+          Text('+').fontColor(Color.White)
 
-          Image($r('app.media.muyu')).width(20)
-        }.width(50)
-        .height(50)
+          // Image($r('app.media.muyu')).width(20)
+        }.width(73)
+        .height(40)
+        .borderRadius(8)
         .justifyContent(FlexAlign.Center)
         .backgroundColor('#646561')
         .onClick(()=>{
-          if(this.textArr.length>7){
+          if(this.textArr.length>6){
             IBestToast.show({
-              message:'最多支持行文本'
+              message:'最多支持行文本'
             })
             return
           }
@@ -56,6 +67,7 @@ struct FragranceSettingView {
 
 
       }.width('100%')
+      .layoutWeight(1)
       .backgroundColor('#3f3f3f')
       .padding({left:10,right:10,top:20,bottom:20})
       .borderRadius(15)
@@ -64,19 +76,109 @@ struct FragranceSettingView {
       //上香数量
       Column({space:20}){
 
+        Row() {
+          Text('上香数量').fontColor(Color.White)
+        }.width('100%')
+        .justifyContent(FlexAlign.Start)
+
+        Row(){
+          Text('数量').fontColor(Color.White)
+
+          Row(){
+
+            Text('一支')
+              .layoutWeight(1)
+              .height('100%')
+              .textAlign(TextAlign.Center)
+              .borderRadius(8)
+              .backgroundColor(this.currSelectNumber==1?'#FADE71':Color.Transparent)
+              .onClick(()=>{
+            this.currSelectNumber=1
+            })
+            Text('三支')
+              .layoutWeight(1)
+              .textAlign(TextAlign.Center)
+              .height('100%')
+              .borderRadius(8)
+              .backgroundColor(this.currSelectNumber==3?'#FADE71':Color.Transparent)
+              .onClick(()=>{
+              this.currSelectNumber=3
+            })
+
+          }.width(106)
+          .height(38)
+          .backgroundColor('#646561')
+          .borderRadius(8)
+
+        }.width('100%')
+
+        .justifyContent(FlexAlign.SpaceBetween)
+
       }.width('100%')
       .backgroundColor('#3f3f3f')
+      .margin({bottom:20})
       .padding({left:10,right:10,top:20,bottom:20})
       .borderRadius(15)
       .height(150)
       //燃尽时间
       Column({space:20}){
 
+        Row() {
+          Text('燃尽时间').fontColor(Color.White)
+        }.width('100%')
+        .justifyContent(FlexAlign.Start)
+
+
+          Row(){
+            Text('10分钟')
+              .width(62)
+              .height(30)
+              .fontSize(14)
+              .textAlign(TextAlign.Center)
+              .borderRadius(8)
+              .margin({right:20})
+              .fontColor(this.currSelectTimeNumber==1?Color.Black:'rgba(255, 255, 255, 0.4)')
+              .backgroundColor(this.currSelectTimeNumber==1?'#FADE71':Color.Transparent)
+              .onClick(()=>{
+                this.currSelectTimeNumber=1
+              })
+            Text('30分钟')
+              .width(62)
+              .height(30)
+              .fontSize(14)
+              .textAlign(TextAlign.Center)
+              .margin({right:20})
+              .borderRadius(8)
+              .fontColor(this.currSelectTimeNumber==2?Color.Black:'rgba(255, 255, 255, 0.4)')
+              .backgroundColor(this.currSelectTimeNumber==2?'#FADE71':Color.Transparent)
+              .onClick(()=>{
+                this.currSelectTimeNumber=2
+              })
+
+            Text('不限时')
+              .width(62)
+              .height(30)
+              .fontSize(14)
+              .height('100%')
+              .margin({right:20})
+              .textAlign(TextAlign.Center)
+              .borderRadius(8)
+              .fontColor(this.currSelectTimeNumber==3?Color.Black:'rgba(255, 255, 255, 0.4)')
+              .backgroundColor(this.currSelectTimeNumber==3?'#FADE71':Color.Transparent)
+              .onClick(()=>{
+                this.currSelectTimeNumber=3
+              })
+
+          }.width('100%')
+          .height(30)
+          .justifyContent(FlexAlign.Start)
+
       }.width('100%')
       .backgroundColor('#3f3f3f')
       .padding({left:10,right:10,top:20,bottom:20})
       .borderRadius(15)
       .height(150)
+      .margin({bottom:20})
 
 
 

+ 234 - 85
features/feature/src/main/ets/view/FragranceView.ets

@@ -1,4 +1,5 @@
 import { AppStorageKeyFishCollect, YTHeader, yTRouter } from 'basic';
+import { promptAction } from '@kit.ArkUI';
 
 @Component
 export struct FragranceView{
@@ -8,7 +9,7 @@ export struct FragranceView{
   private averageAngle: number = 0
   private radius1: number = 50
   private radius2: number =1
-  private img: number = 80
+  private img: number = 90
   private isRotate:boolean = true;//按下暂停转动
   @State widAr:Array<number> = [this.radius1,this.radius1,this.radius1,this.radius1,this.radius1]
   @State heiAr:Array<number> = [this.radius2,this.radius2,this.radius2,this.radius2,this.radius2]
@@ -36,15 +37,30 @@ export struct FragranceView{
 
   }, 100)
 
-  FragranceImages: ImageFrameInfo[] =Array.from<string>({length:23}).map<ImageFrameInfo>((v:string,index:number)=>{
+  images: ImageFrameInfo[] =Array.from<string>({length:20}).map<ImageFrameInfo>((v:string,index:number)=>{
     return {
-      src: $r(`app.media.fragrance${index}`),
+      src: $r(`app.media.three_Fra_${index+1}`),
     }
   })
-  //烟
-  @State FragranceState:AnimationStatus = AnimationStatus.Initial
-  //香
-  @State FraState:AnimationStatus = AnimationStatus.Initial
+  images2: ImageFrameInfo[] =Array.from<string>({length:5}).map<ImageFrameInfo>((v:string,index:number)=>{
+    return {
+      src: $r(`app.media.huo${index+1}`),
+    }
+  })
+
+  image3: ImageFrameInfo[] =Array.from<string>({length:25}).map<ImageFrameInfo>((v:string,index:number)=>{
+    return {
+      src: $r(`app.media.fragrance${index+1}`),
+    }
+  })
+
+
+  @State state:AnimationStatus = AnimationStatus.Initial
+
+  @State moveY:number=0
+  @State time:number=0
+  @State interId:number=0
+  @State isShow:boolean=false
 
   // aboutToAppear(): void {
   //
@@ -68,104 +84,237 @@ export struct FragranceView{
 
   build() {
     Column(){
+      //文字环绕
+      Stack() {
+        Image($r('[basic].media.dengguang')).width('100%').height('100%')
+        Image($r('[basic].media.dizuo')).width(256).height(60).margin({top:450})
+
+
+        Stack({alignContent:Alignment.Top}) {
+          RelativeContainer() {
+            // ForEach(this.textArr,(item:string,index:number)=>{
+            //   Column() {
+            //     Text(item)
+            //       .width(this.img)
+            //       .height(this.img)
+            //       .fontColor(Color.White)
+            //   }.position({ x: this.widAr[index], y: this.heiAr[index] })
+            // })
+            Column() {
+              Text('天天吃饭')
+                .fontSize(20)
+                .width(this.img)
+                .height(this.img)
+                .fontColor(Color.White)
+
+            }.position({ x: this.widAr[0], y: this.heiAr[0] })
+
+
+            Column() {
+              Text('天天向上')
+                .fontSize(20)
+                .width(this.img)
+                .height(this.img)
+                .fontColor(Color.White)
+
+            }.position({ x: this.widAr[1], y: this.heiAr[1] })
+
+            Column() {
+              Text('清纯男大')
+                .fontSize(20)
+                .width(this.img)
+                .height(this.img)
+                .fontColor(Color.White)
+
+            }.position({ x: this.widAr[2], y: this.heiAr[2] })
+
+            Column() {
+              Text('官人梧州')
+                .fontSize(20)
+                .width(this.img)
+                .height(this.img)
+                .fontColor(Color.White)
+
+            }.position({ x: this.widAr[3], y: this.heiAr[3] })
+
+            Column() {
+              Text('年年岁岁')
+                .fontSize(20)
+                .width(this.img)
+                .height(this.img)
+                .fontColor(Color.White)
+
+            }.position({ x: this.widAr[4], y: this.heiAr[4] })
+            Column() {
+              Text('平平安安')
+                .fontSize(20)
+                .width(this.img)
+                .height(this.img)
+                .fontColor(Color.White)
+
+            }.position({ x: this.widAr[5], y: this.heiAr[5] })
+
+          }.width(300)
+          .height(350)
+          .margin({top:44,left:20})
+          .onAreaChange((oldValue: Area, newValue: Area) => {
+            this.radius1 = new Number(newValue.width).valueOf() / 3
+            this.radius2 = new Number(newValue.height).valueOf() / 4
+          })
+        }.width('100%')
+        .height('100%')
 
-        Stack() {
-          Column() {
-            RelativeContainer() {
-              // ForEach(this.textArr,(item:string,index:number)=>{
-              //   Column() {
-              //     Text(item)
-              //       .width(this.img)
-              //       .height(this.img)
-              //       .fontColor(Color.White)
-              //   }.position({ x: this.widAr[index], y: this.heiAr[index] })
-              // })
-
-              Column() {
-                Text('天天向上')
-                  .width(this.img)
-                  .height(this.img)
-                  .fontColor(Color.White)
-
-              }.position({ x: this.widAr[1], y: this.heiAr[1] })
-
-              Column() {
-                Text('清纯男大')
-                  .width(this.img)
-                  .height(this.img)
-                  .fontColor(Color.White)
-
-              }.position({ x: this.widAr[2], y: this.heiAr[2] })
-
-              Column() {
-                Text('官人梧州')
-                  .width(this.img)
-                  .height(this.img)
-                  .fontColor(Color.White)
-
-              }.position({ x: this.widAr[3], y: this.heiAr[3] })
-
-              Column() {
-                Text('年年岁岁')
-                  .width(this.img)
-                  .height(this.img)
-                  .fontColor(Color.White)
-
-              }.position({ x: this.widAr[4], y: this.heiAr[4] })
-            }.width(250).height(200)
-            .onAreaChange((oldValue: Area, newValue: Area) => {
-              this.radius1 = new Number(newValue.width).valueOf() / 3
-              this.radius2 = new Number(newValue.height).valueOf() / 4
-            })
-          }.width('100%')
+      Stack(){
+        ImageAnimator()
+          .width('100%')
           .height('100%')
-          .alignItems(HorizontalAlign.Center)
+          // .animatorFancy()// 抽取公共属性
+          .images(this.images)// 动画数组
+          .duration(this.images.length * 1000)// 持续
+          .state(this.state)// 动画状态
+          .iterations(-1) // 播放次数
 
-        }.width('100%')
-        .height(200)
 
+        //火
+        ImageAnimator()
+          .width('100%')
+          .height('100%')
+          // .animatorFancy()// 抽取公共属性
+          .images(this.images2)// 动画数组
+          .duration(this.images2.length * 100)// 持续
+          .state(AnimationStatus.Running)// 动画状态
+          .iterations(-1) // 播放次数
 
-          // Column() {
-          //
-          // }.width(5)
-          // .height(300)
-          // .backgroundColor(Color.Pink)
 
-          Row() {
+        if(this.isShow) {
+          Stack() {
             ImageAnimator()
-              .width(100)
-              .height(300)
-              .images(this.FragranceImages)// 动画数组
-              .duration(this.FragranceImages.length * 150)// 持续
-              .state(this.FragranceState)// 动画状态
-              .backgroundColor(Color.Black)
+              .width('100%')
+              .height('100%')
+              .images(this.image3)// 动画数组
+              .duration(this.image3.length * 100)// 持续
+              .state(AnimationStatus.Running)// 动画状态
               .iterations(-1) // 播放次数
 
+            ImageAnimator()
+              .width('100%')
+              .height('100%')
+              .margin({ right: 35 })
+              .images(this.image3)// 动画数组
+              .duration(this.image3.length * 100)// 持续
+              .state(AnimationStatus.Running)// 动画状态
+              .iterations(-1) // 播放次数
 
+            ImageAnimator()
+              .width('100%')
+              .height('100%')
+              .margin({ left: 35 })
+              .images(this.image3)// 动画数组
+              .duration(this.image3.length * 100)// 持续
+              .state(AnimationStatus.Running)// 动画状态
+              .iterations(-1) // 播放次数
 
             // ImageAnimator()
-            //   .width(100)
-            //   .height(300)
-            //   .images(this.FragranceImages)// 动画数组
-            //   .duration(this.FragranceImages.length * 100)// 持续
-            //   .state(this.FragranceState)// 动画状态
+            //   .width('100%')
+            //   .height('100%')
+            //     // .animatorFancy()// 抽取公共属性
+            //   .images(this.images2)// 动画数组
+            //   .duration(this.images2.length * 100)// 持续
+            //   .state(AnimationStatus.Running)// 动画状态
             //   .iterations(-1) // 播放次数
 
 
+          }.width('100%')
+          .height('100%')
+          .translate({
+            y: this.moveY
+          })
+        }
+
+        // 按钮控制区域
+        Row({space:20}){
+          Button('启动').onClick(()=>{
+            this.isShow=true
+            this.state=AnimationStatus.Running
+            this.interId=setInterval(()=>{
+              //2秒,20张,170 0.1秒一----10
+              //20秒 20张 170 1秒一张 0.9
+              //60秒  20张 170 3秒一张 170
+              //另外一种解决办法,根据照片的分布来设置位置position
+              //170 20张 第一张170 第二张160,10分钟,每半分钟一个状态移动位置
+              this.time=this.time+1
+              this.moveY=this.moveY+this.time*1
+            },1000)
+            setTimeout(()=>{
+              clearInterval(this.interId)
+              this.isShow=false
+            },20000)
+
+          })
+          Button('暂停').onClick(()=>{
+            this.state=AnimationStatus.Paused
+          })
+          Button('停止').onClick(()=>{
+            this.state=AnimationStatus.Stopped
+            this.moveY=0
+            this.time=0
+            this.isShow=false
+            clearTimeout(this.interId)
+          })
+          Button('XX').onClick(()=>{
+            promptAction.showToast({
+              message:this.moveY.toString()
+            })
+          })
+          // Button('xxxxx').onClick(()=>{
+          //
+          // })
+        }
+
+
+      }
+
+        Row(){
+          Column(){
+
+          }.width(24).height(24)
+
+          Row({space:32}){
+            Text(`30:00`).fontColor($r('[basic].color.login_main_yellow'))
+
+            Text('重置')
+              .borderRadius(20)
+              .padding({
+                left: 6,
+                right: 6,
+                top: 4,
+                bottom: 4
+              })
+              .backgroundColor($r('[basic].color.login_main_yellow'))
+              .fontColor(Color.Black)
+              .onClick(() => {
+              })
+
+
           }
 
+          Image($r('[basic].media.shezhix')).width(24).onClick(()=>{
+            yTRouter.router2FragranceSettingPage()
+          })
+
+        }.width('100%')
+        .margin({bottom:640})
+        .padding({left:16,right:16})
+        .justifyContent(FlexAlign.SpaceBetween)
+
+
+      }.width('100%')
+      .height('100%')
+
+
 
 
-        Button('xxx').onClick(() => {
-          this.FragranceState = AnimationStatus.Running
-        })
-        Button('xxx').onClick(() => {
-          this.FragranceState = AnimationStatus.Stopped
-        })
 
-        Button('xxxxx').onClick(()=>{
-          yTRouter.router2FragranceSettingPage()
-        })
 
     }.width('100%')
     .height('100%')

+ 442 - 329
features/feature/src/main/ets/view/MainView.ets

@@ -1,8 +1,12 @@
-import { AppStorageKeyFishCollect, avPlayerManager, Vibration, YTAvoid, YTHeader, yTRouter } from 'basic';
+import { AppStorageKeyFishCollect, avPlayerManager,
+  BlessCustomCustomDialog,
+  Vibration, YTAvoid, YTHeader, yTRouter,
+  YTUserRequest } from 'basic';
 import { faceDetector } from '@kit.CoreVisionKit';
 import { trustedAppService } from '@kit.DeviceSecurityKit';
 import { promptAction } from '@kit.ArkUI';
 import { Cell } from '../models';
+import { it } from '@ohos/hypium';
 
 
 @Component
@@ -38,7 +42,7 @@ export struct MainView{
   @State isAnimation:boolean=false
   //进度条
   @State currentMerit:number=0
-  @State totalMerit:number=500
+  @State totalMerit:number=10
 
   //时间间隔
   @State time:number=1000
@@ -46,6 +50,19 @@ export struct MainView{
   @State isShowTimeManger:boolean=false
   @State valueTime:number=10
 
+
+
+
+  dialogController: CustomDialogController=new CustomDialogController({
+    builder:BlessCustomCustomDialog({
+      imgIndex:Math.floor(Math.random()*12)
+    }),
+    alignment:DialogAlignment.Center,
+    customStyle:true,
+    width:'100%',
+    height:'100%',
+  })
+
   //开启关闭音乐
   async openMusic(){
     await avPlayerManager.playByRawSrc('music3.mp3')
@@ -55,6 +72,13 @@ export struct MainView{
     await avPlayerManager.stop()
   }
 
+  //功德满足情况弹窗
+  // openDialog(currNumber:number,totalNumber:number){
+  //   if(currNumber==totalNumber){
+  //     this.dialogController.open()
+  //   }
+  // }
+
   //点击动画
   onclikMerit(){
     if(this.isAnimation){
@@ -68,6 +92,10 @@ export struct MainView{
     }
     this.isAnimation=true
     this.currentMerit++
+    // this.openDialog(this.currentIndex,this.totalMerit)
+    if(this.currentMerit==this.totalMerit){
+      this.dialogController.open()
+    }
     let index = this.indexCount % this.count; // 计算当前滚动的索引
     this.indexCount++; // 更新索引计数器
     animateToImmediately({
@@ -98,32 +126,33 @@ export struct MainView{
   @Builder
   timeMangerBuilder(){
     Column(){
+      Row(){
+        Image($r('[basic].media.quxiao')).width(20).onClick(()=>{
+          this.isShowTimeManger = false
+        })
+
+      }.width('100%')
+      .justifyContent(FlexAlign.End)
+      Row(){
+
+        Text('自动敲击设置').fontColor(Color.White).fontSize(20)
+      }.width('100%')
+      .justifyContent(FlexAlign.Center)
+      .margin({bottom:20})
       Stack({alignContent:Alignment.Top}) {
         Tabs({ barPosition: BarPosition.Start, controller: this.tabsController  }) {
           TabContent() {
             Column() {
-              Text('敲击间隔时长(1-10秒)')
-
-              Row() {
-                TextInput()
-                  .width(70)
-                  .height(40)
-                  .padding(0)
-                  .type(InputType.Number) // 设置输入类型为数字
-                  .textAlign(TextAlign.Center)
-                  .borderRadius(4)
-                  .backgroundColor(Color.Gray)
-
-                Text('秒')
-              }
-            }
+              Column({ space: 16 }) {
+                Row() {
+                  Text() {
+                    Span('敲击间隔时长').fontSize(16)
+                    Span('(1-10秒)').fontSize(12)
+                  }.fontColor(Color.White)
+                }.width('100%')
+                .justifyContent(FlexAlign.Start)
 
-          }.tabBar('无限')
 
-          TabContent() {
-            Column() {
-              Column() {
-                Text('敲击次数(1-9999次)')
                 Row() {
                   TextInput()
                     .width(70)
@@ -133,64 +162,133 @@ export struct MainView{
                     .textAlign(TextAlign.Center)
                     .borderRadius(4)
                     .backgroundColor(Color.Gray)
+                    .margin({ right: 5 })
 
-                  Text('秒')
-                }
+                  Text('秒').fontColor('rgba(250, 222, 113, 1)')
+                }.width('100%').justifyContent(FlexAlign.Center)
               }
+              .width('100%')
+              .height(136)
+              .borderRadius(8)
+              .padding(20)
+              .backgroundColor('rgba(77, 77, 77, 1)')
+
+            }.layoutWeight(1).justifyContent(FlexAlign.Start)
+          }.tabBar('无限').layoutWeight(1)
+          TabContent() {
+            Column(){
+            Column({space:16}) {
+              Row(){
+                Text() {
+                  Span('敲击次数').fontSize(16)
+                  Span('(1-9999次)').fontSize(12)
+                }.fontColor(Color.White)
+              }.width('100%')
+              .justifyContent(FlexAlign.Start)
 
-              Column() {
-                Text('敲击间隔时长(1-10秒)')
-                Row() {
-                  TextInput()
-                    .width(70)
-                    .height(40)
-                    .padding(0)
-                    .type(InputType.Number) // 设置输入类型为数字
-                    .textAlign(TextAlign.Center)
-                    .borderRadius(4)
-                    .backgroundColor(Color.Gray)
 
-                  Text('秒')
-                }
-              }
+              Row() {
+                TextInput()
+                  .width(70)
+                  .height(40)
+                  .padding(0)
+                  .type(InputType.Number) // 设置输入类型为数字
+                  .textAlign(TextAlign.Center)
+                  .borderRadius(4)
+                  .backgroundColor(Color.Gray)
+                  .margin({right:5})
 
-            }
+                Text('秒').fontColor('rgba(250, 222, 113, 1)')
+              }.width('100%').justifyContent(FlexAlign.Center)
+
+              Row(){
+                Text() {
+                  Span('敲击间隔时长').fontSize(16)
+                  Span('(1-10秒)').fontSize(12)
+                }.fontColor(Color.White)
+              }.width('100%')
+              .justifyContent(FlexAlign.Start)
 
-          }.tabBar('固定次数')
 
+              Row() {
+                TextInput()
+                  .width(70)
+                  .height(40)
+                  .padding(0)
+                  .type(InputType.Number) // 设置输入类型为数字
+                  .textAlign(TextAlign.Center)
+                  .borderRadius(4)
+                  .backgroundColor(Color.Gray)
+                  .margin({right:5})
+
+                Text('秒').fontColor('rgba(250, 222, 113, 1)')
+              }.width('100%').justifyContent(FlexAlign.Center)
+
+            }.width('100%').height(210).borderRadius(8).padding(20).backgroundColor('rgba(77, 77, 77, 1)')
+            }.layoutWeight(1).justifyContent(FlexAlign.Start)
+          }.tabBar('固定次数').layoutWeight(1)
           TabContent() {
-            Column() {
-              Column() {
-                Text('倒计时(1-9999次)')
-                Stack() {
-                  Progress({ value: this.valueTime, total: 70, type: ProgressType.Linear }).backgroundColor('#4c4c4c')
-                  Row({space:30}){
-                    ForEach([0,10,20,30,40,50,60,70],(item:number,index:number)=>{
-                      Column(){
-                      }.width(10)
-                      .height(10)
+            Column(){
+            Column({space:16}) {
+              Column({space:16}) {
+                Row(){
+                  Text() {
+                    Span('倒计时').fontSize(16)
+                    Span('(1-9999次)').fontSize(12)
+                  }.fontColor(Color.White)
+                }.width('100%')
+                .justifyContent(FlexAlign.Start)
+                Stack({alignContent:Alignment.TopStart}) {
+                  Progress({ value: this.valueTime, total: 60, type: ProgressType.Linear }).width(290).height(16).backgroundColor('rgba(255, 255, 255, 0.55)').margin({left:14})
+                  Row({space:17}){
+                    ForEach([0,10,20,30,40,50,60],(item:number,index:number)=> {
+
+                      Column() {
+                      Column() {
+                      }
+                      .width(16)
+                      .height(16)
                       .borderRadius('50%')
-                      .onClick(()=>{
-                        if(index!=7){
+                      .onClick(() => {
+                        if (index != 6) {
+                          this.valueTime = item  //比实际小10
+                        } else {
                           this.valueTime=item
-                        }else{
-                          this.currentIndex=3
+                          this.currentIndex = 3
                           this.tabsController.changeIndex(this.currentIndex)
                         }
 
                       })
-                      .backgroundColor(Color.Yellow)
-                      // .backgroundColor(this.valueTime>=item?Color.Yellow:Color.White)
+                      .backgroundColor(this.valueTime == item ? Color.Yellow : Color.White)
+                        Column() {
+                          if (item != 60) {
+                            Text(item + "分钟")
+                              .fontSize(10)
+                              .fontColor(this.valueTime == item ? Color.White : 'rgba(255, 255, 255, 0.55)')
+                          } else {
+                            Text('自定义')
+                              .fontSize(10)
+                              .fontColor(this.valueTime == item ? Color.White : 'rgba(255, 255, 255, 0.55)')
+                          }
+                        }
+                    }.alignItems(HorizontalAlign.Start)
                     })
 
 
                   }.width('100%')
 
                 }
+
               }
 
-              Column() {
-                Text('敲击间隔时长(1-10秒)')
+              Column({space:16}) {
+                Row(){
+                  Text() {
+                    Span('敲击次数').fontSize(16)
+                    Span('(1-9999次)').fontSize(12)
+                  }.fontColor(Color.White)
+                }.width('100%')
+                .justifyContent(FlexAlign.Start)
                 Row() {
                   TextInput()
                     .width(70)
@@ -201,15 +299,17 @@ export struct MainView{
                     .borderRadius(4)
                     .backgroundColor(Color.Gray)
 
-                  Text('秒')
+                  Text('秒').fontColor('rgba(250, 222, 113, 1)')
                 }
               }
 
-            }
+            }.width('100%').borderRadius(8).padding(20).backgroundColor('rgba(77, 77, 77, 1)')
 
+            }.layoutWeight(1).justifyContent(FlexAlign.Start)
 
-          }.tabBar('倒计时')
+          }.tabBar('倒计时').layoutWeight(1)
           TabContent() {
+            Column(){
             Column() {
               Text('自定义时间')
               Row() {
@@ -222,18 +322,21 @@ export struct MainView{
                   .borderRadius(4)
                   .backgroundColor(Color.Gray)
 
-                Text('秒')
+                Text('秒').fontColor('rgba(250, 222, 113, 1)')
               }
             }
-          }.tabBar('自定义')
+            }.layoutWeight(1).justifyContent(FlexAlign.Start)
+          }.tabBar('自定义').layoutWeight(1)
 
-        }.width('100%').barHeight(0)
+        }.width('100%').margin({top:20}).barHeight(0)
         Row(){
           Text('无限')
             .layoutWeight(1)
+            .textAlign(TextAlign.Center)
             .borderRadius(10)
-            .height(30)
-            .backgroundColor(this.currentIndex==0?Color.Green:Color.Transparent)
+            .height(40)
+            .fontColor(this.currentIndex==0?Color.Black:'rgba(255, 255, 255, 0.35)')
+            .backgroundColor(this.currentIndex==0?'rgba(250, 222, 113, 1)':Color.Transparent)
             .onClick(()=>{
             this.currentIndex=0
             this.tabsController.changeIndex(this.currentIndex)
@@ -241,9 +344,11 @@ export struct MainView{
           })
           Text('固定次数')
             .layoutWeight(1)
+            .textAlign(TextAlign.Center)
             .borderRadius(10)
-            .height(30)
-            .backgroundColor(this.currentIndex==1?Color.Green:Color.Transparent).onClick(()=>{
+            .height(40)
+            .fontColor(this.currentIndex==1?Color.Black:'rgba(255, 255, 255, 0.35)')
+            .backgroundColor(this.currentIndex==1?'rgba(250, 222, 113, 1)':Color.Transparent).onClick(()=>{
             this.currentIndex=1
             this.tabsController.changeIndex(this.currentIndex)
 
@@ -251,8 +356,10 @@ export struct MainView{
           Text('倒计时')
             .layoutWeight(1)
             .borderRadius(10)
-            .height(30)
-            .backgroundColor((this.currentIndex==2||this.currentIndex==3)?Color.Green:Color.Transparent)
+            .textAlign(TextAlign.Center)
+            .height(40)
+            .fontColor((this.currentIndex==2||this.currentIndex==3)?Color.Black:'rgba(255, 255, 255, 0.35)')
+            .backgroundColor((this.currentIndex==2||this.currentIndex==3)?'rgba(250, 222, 113, 1)':Color.Transparent)
             .onClick(()=>{
             this.currentIndex=2
             this.tabsController.changeIndex(this.currentIndex)
@@ -261,15 +368,15 @@ export struct MainView{
 
         }.width('100%')
         .borderRadius(10)
-        .height(30)
-        .backgroundColor(Color.Pink)
-      }
+        .height(40)
+        .backgroundColor('rgba(77, 77, 77, 1)')
+      }.layoutWeight(1)
 
 
     }.width('100%')
     .height('100%')
     .padding(20)
-    .backgroundColor(Color.White)
+    .backgroundColor('rgba(25, 25, 25, 1)')
 
   }
 
@@ -278,281 +385,287 @@ export struct MainView{
     for (let i = 0; i < this.count; i++) {
       this.list.push(new Cell()); // 初始化 Cell 数组
     }
-  }
-
-  build() {
-    Column() {
 
+    YTUserRequest.getFishFra((res)=>{
+      promptAction.showToast({
+        message:JSON.stringify(res)
+      })
+    })
 
-      Stack({alignContent:Alignment.Bottom}) {
-        Column() {
-          if (this.isShowMessage) {
+  }
 
-            Row() {
-              Column({ space: 20 }) {
-                //积功德+清零
-                Row() {
-                  Text() {
-                    Span('积功德: ').fontColor(Color.White).fontSize(18)
-                    Span(`${this.currentMerit}`).fontSize(18).fontColor($r('[basic].color.login_main_yellow'))
-                  }.margin({ left: 50 })
+  build() {
+    Stack() {
+      Image($r('[basic].media.dengguang')).width('100%').height('100%')
+      Image($r('[basic].media.dizuo')).width(256).height(60).margin({top:460})
+      Column() {
+        Stack({ alignContent: Alignment.Bottom }) {
+          Column() {
+            if (this.isShowMessage) {
 
+              Row() {
+                Column({ space: 20 }) {
+                  //积功德+清零
                   Row() {
-                    Text('清零')
-                      .borderRadius(20)
-                      .padding({
-                        left: 6,
-                        right: 6,
-                        top: 4,
-                        bottom: 4
-                      })
-                      .backgroundColor($r('[basic].color.login_main_yellow'))
-                      .fontColor(Color.Black)
-                      .onClick(() => {
-                        this.currentMerit = 0
-                      })
-
+                    Text() {
+                      Span('积功德: ').fontColor(Color.White).fontSize(18)
+                      Span(`${this.currentMerit}`).fontSize(18).fontColor($r('[basic].color.login_main_yellow'))
+                    }.margin({ left: 50 })
+
+                    Row() {
+                      Text('清零')
+                        .borderRadius(20)
+                        .fontSize(14)
+                        .padding({
+                          left: 8,
+                          right: 8,
+                          top: 5,
+                          bottom: 5
+                        })
+                        .backgroundColor($r('[basic].color.login_main_yellow'))
+                        .fontColor('rgba(0, 0, 0, 0.95)')
+                        .onClick(() => {
+                          this.currentMerit = 0
+                        })
 
-                  }
 
-                }.width('100%').justifyContent(FlexAlign.SpaceAround)
+                    }
 
-                //进度条
-                Column() {
-                  Stack({ alignContent: Alignment.Center }) {
-                    Progress({ value: this.currentMerit, total: this.totalMerit, type: ProgressType.Ring })
-                      .width(80).color('#3dbbd1')
-                      .style({ strokeWidth: 6, shadow: true })
-                      .backgroundColor(Color.White)
-                    Text('集福').fontSize(20).fontColor(Color.White)
-                  }.margin({ left: 10 })
+                  }.width('100%').justifyContent(FlexAlign.SpaceAround)
 
-                  Text() {
-                    Span(`${this.currentMerit}`).fontColor($r('[basic].color.login_main_yellow'))
-                    Span(`/${this.totalMerit}`)
-                  }.fontColor(Color.White).margin({ left: 10 }).width(80).textAlign(TextAlign.Center)
-
-                }.width('100%').justifyContent(FlexAlign.Start).alignItems(HorizontalAlign.Start)
-              }.layoutWeight(1)
-
-              //右边的按钮
-
-              Column({ space: 20 }) {
-                Image($r('app.media.muyu')).width(30).onClick(() => {
-                  this.isShowSilder = !this.isShowSilder
-                })
-                if (this.isShowSilder) {
-                  //是否开启声音
-                  Image($r('app.media.muyu')).width(30).onClick(() => {
-                    this.isOpenMusic = !this.isOpenMusic
-                  })
-                  //是否开启震动
-                  Image($r('app.media.muyu')).width(30).onClick(() => {
-                    this.isOpenVibration = !this.isOpenVibration
+                  //进度条
+                  Column() {
+                    Stack({ alignContent: Alignment.Center }) {
+                      Progress({ value: this.currentMerit, total: this.totalMerit, type: ProgressType.Ring })
+                        .width(80).color('rgba(61, 186, 208, 1)')
+                        .style({ strokeWidth: 7, shadow: true })
+                        .backgroundColor(Color.White)
+                      Text('集福').fontSize(20).fontColor('rgba(252, 253, 237, 1)')
+                    }.margin({ left: 10 })
+
+                    Text() {
+                      Span(`${this.currentMerit}`).fontColor($r('[basic].color.login_main_yellow'))
+                      Span(`/${this.totalMerit}`)
+                    }.fontColor(Color.White).margin({ left: 10 }).width(80).textAlign(TextAlign.Center)
+
+                  }.width('100%').justifyContent(FlexAlign.Start).alignItems(HorizontalAlign.Start)
+                }.layoutWeight(1)
+
+                //右边的按钮
+
+                Column({ space: 20 }) {
+                  Image($r('[basic].media.shezhix')).width(32).onClick(() => {
+                    this.isShowSilder = !this.isShowSilder
                   })
+                  if (this.isShowSilder) {
+                    //是否开启声音
+                    Image($r('[basic].media.zhendong')).width(32).onClick(() => {
+                      this.isOpenMusic = !this.isOpenMusic
+                    })
+                    //是否开启震动
+                    Image($r('[basic].media.shengying')).width(32).onClick(() => {
+                      this.isOpenVibration = !this.isOpenVibration
+                    })
 
-                  Column() {
                     Column() {
-                      Text(this.isAuto ? '自动' : '手动')
-                        .padding({
-                          left: 3,
-                          right: 3,
-                          top: 10,
-                          bottom: 10
-                        })
-                        .margin({ bottom: 10 })
-                        .backgroundColor('#252111')
-                        .fontColor(Color.White)
-                        .onClick(() => {
-                          this.isAuto = !this.isAuto
-                          //如果是本来自动,再点击就是手动,不需要设置任何东西
-                          // if (!this.isHand) {
-                          //   this.isHand = true
-                          // } else {
-                          //   //如果本来是手动,再点击就是自动,就需要设置东西
-                          //   this.isHand = false
-                          // }
-                        })
-                      if (this.isAuto) {
-                        Column({ space: 10 }) {
-                          Text('结束')
-                            .padding({
-                              left: 3,
-                              right: 3,
-                              top: 10,
-                              bottom: 10
-                            })
-                            .fontColor(Color.White)
-                            .backgroundColor('#252111')
-                            .onClick(() => {
-                              this.isAuto = !this.isAuto
-                            })
-                          Text('设置')
-                            .padding({
-                              left: 3,
-                              right: 3,
-                              top: 10,
-                              bottom: 10
-                            })
-                            .fontColor(Color.White)
-                            .backgroundColor('#252111')
-                            .bindSheet($$this.isShowTimeManger, this.timeMangerBuilder(), {
-                              width: '100%',
-                              height: 400,
-                              showClose: false,
-                            })
-                            .onClick(() => {
-                              this.isShowTimeManger = true
-                            })
-                          Text('设置2')
-                            .padding({
-                              left: 3,
-                              right: 3,
-                              top: 10,
-                              bottom: 10
-                            })
-                            .fontColor(Color.White)
-                            .backgroundColor('#252111')
-                            .onClick(() => {
-                              //去往设置页面
-                              yTRouter.router2FishSettingPage()
-                            })
+                      Column() {
+                        Text(this.isAuto ? '自动' : '手动')
+                          .padding({
+                            left: 3,
+                            right: 3,
+                            top: 10,
+                            bottom: 10
+                          })
+                          .margin({ bottom: 10 })
+                          .backgroundColor('#252111')
+                          .fontColor(Color.White)
+                          .onClick(() => {
+                            this.isAuto = !this.isAuto
+                            //如果是本来自动,再点击就是手动,不需要设置任何东西
+                            // if (!this.isHand) {
+                            //   this.isHand = true
+                            // } else {
+                            //   //如果本来是手动,再点击就是自动,就需要设置东西
+                            //   this.isHand = false
+                            // }
+                          })
+                        if (this.isAuto) {
+                          Column({ space: 10 }) {
+                            Text('结束')
+                              .padding({
+                                left: 3,
+                                right: 3,
+                                top: 10,
+                                bottom: 10
+                              })
+                              .fontColor(Color.White)
+                              .backgroundColor('#252111')
+                              .onClick(() => {
+                                this.isAuto = !this.isAuto
+                              })
+                            Text('无限')
+                              .padding({
+                                left: 3,
+                                right: 3,
+                                top: 10,
+                                bottom: 10
+                              })
+                              .fontColor(Color.White)
+                              .backgroundColor('#252111')
+                              .bindSheet($$this.isShowTimeManger, this.timeMangerBuilder(), {
+                                width: '100%',
+                                height: 400,
+                                showClose: false,
+                              })
+                              .onClick(() => {
+                                this.isShowTimeManger = true
+                              })
+                            Text('设置')
+                              .padding({
+                                left: 3,
+                                right: 3,
+                                top: 10,
+                                bottom: 10
+                              })
+                              .fontColor(Color.White)
+                              .backgroundColor('#252111')
+                              .onClick(() => {
+                                //去往设置页面
+                                yTRouter.router2FishSettingPage()
+                              })
+                          }
                         }
                       }
                     }
                   }
-                }
 
-              }.width(50)
-              .justifyContent(FlexAlign.Center)
-              .alignItems(HorizontalAlign.End)
+                }.width(50)
+                .justifyContent(FlexAlign.Center)
+                .alignItems(HorizontalAlign.End)
 
-            }.width('100%')
-            .height(300)
-
-            .alignItems(VerticalAlign.Top)
-          }
-        }
-        .height('100%')
-        .margin({ top: 20 })
-
-        Column() {
-          Stack() { // 创建一个堆栈布局容器
-            ForEach(this.list, (item: Cell, _index: number) => { // 遍历 list 中的每一个 Cell
-              Text(item.value)// 显示 Cell 中的文字
-                .fontColor(Color.White)// 设置文字颜色为白色
-                .fontSize('50lpx')// 设置文字大小
-                .translate({ x: 0, y: `${item.y}lpx` })// 设置文字的垂直偏移量
-                .opacity(item.opacity) // 设置文字的透明度
-            })
+              }.width('100%')
+              .height(400)
+              .alignItems(VerticalAlign.Top)
+            }
           }
-          .width(200) //
-          .height(100)
-          .align(Alignment.BottomEnd)
-          Image(this.image)
-            .width(200)
-            .height(200)
-            .objectFit(ImageFit.Contain)
-            .clickEffect({
-              // 点击效果配置
-              scale: 0.5, // 缩放比例
-              level: ClickEffectLevel.LIGHT // 效果级别
-            })
-            .onClick(() => { // 点击图片时触发的回调
-              this.onclikMerit()
-            })
-
-          Row(){
-
-            Image($r('app.media.muyu')).width(30).onClick(()=>{
-              this.isShowMessage=!this.isShowMessage
-            })
-          }.width('100%')
-          .margin({top:50})
-          .justifyContent(FlexAlign.End)
-        }
-        .width('100%')
-        .margin({bottom:20})
-
-      }.height('100%')
-
-      // Row(){
-      //   Button('改变文字').onClick(()=>{
-      //     this.list.forEach(item=>{item.value='吴亮+1'})
-      //   })
-      //   Button('敲击时长间隔1秒').onClick(()=>{
-      //     this.time=1000
-      //
-      //   })
-      //   Button('固定10次').onClick(()=>{
-      //     //自动敲击
-      //     const a=setInterval(()=>{
-      //       this.onclikMerit()
-      //
-      //     },this.time)
-      //     const b=setTimeout(()=>{
-      //       clearInterval(a)
-      //       clearTimeout(b)
-      //     },this.time*10)
-      //
-      //
-      //   })
-      //   Button('倒计时规定时间').onClick(()=>{
-      //     this.onclikMerit()
-      //     const a=setInterval(()=>{
-      //       this.onclikMerit()
-      //     },this.time)
-      //     const b=setTimeout(()=>{
-      //       clearInterval(a)
-      //       clearTimeout(b)
-      //     },10000)
-      //
-      //   })
-      // }
-      //
-      // Button('xxx').bindSheet($$this.isShowTimeManger,this.timeMangerBuilder(),{
-      //   width:'100%',
-      //   height:400,
-      //   showClose:false
-      // }).onClick(()=>{
-      //   this.isShowTimeManger=true
-      // })
-      //
-      // Button('震动').onClick(()=>{
-      //   Vibration.startVibration()
-      // })
-
-
-      // Stack() {
-      //   Progress({ value: this.valueTime, total: 70, type: ProgressType.Linear }).backgroundColor(Color.White)
-      //   Row({space:30}){
-      //     ForEach([0,10,20,30,40,50,60,70],(item:number)=>{
-      //       Column(){
-      //       }.width(10)
-      //       .height(10)
-      //       .borderRadius('50%')
-      //       .onClick(()=>{
-      //         this.valueTime=item
-      //       })
-      //       .backgroundColor(this.valueTime>=item?Color.Pink:Color.White)
-      //     })
-      //
-      //
-      //   }.width('100%')
-      //
-      // }
-
-
-
+          .height('100%')
+          .margin({ top: 20 })
+
+          Column() {
+            Stack() { // 创建一个堆栈布局容器
+              ForEach(this.list, (item: Cell, _index: number) => { // 遍历 list 中的每一个 Cell
+                Text(item.value)// 显示 Cell 中的文字
+                  .fontColor(Color.White)// 设置文字颜色为白色
+                  .fontSize('50lpx')// 设置文字大小
+                  .translate({ x: 0, y: `${item.y}lpx` })// 设置文字的垂直偏移量
+                  .opacity(item.opacity) // 设置文字的透明度
+              })
+            }
+            .width(200) //
+            .height(70)
+            .align(Alignment.BottomEnd)
+
+            Image(this.image)
+              .width(200)
+              .height(200)
+              .objectFit(ImageFit.Contain)
+              .clickEffect({
+                // 点击效果配置
+                scale: 0.5, // 缩放比例
+                level: ClickEffectLevel.LIGHT // 效果级别
+              })
+              .onClick(() => { // 点击图片时触发的回调
+                this.onclikMerit()
+              })
 
+            Row() {
 
-    }.width('100%')
-    .height('100%')
-    .padding({
-      top:this.top,
-      left:16,
-      right:16
-    })
-    .backgroundColor(Color.Black)
+              Image($r('[basic].media.suoxiao')).width(24).onClick(() => {
+                this.isShowMessage = !this.isShowMessage
+              })
+            }.width('100%')
+            .margin({ top: 50 })
+            .justifyContent(FlexAlign.End)
+          }
+          .width('100%')
+          .margin({ bottom: 20 })
+
+        }.height('100%')
+
+        // Row(){
+        //   Button('改变文字').onClick(()=>{
+        //     this.list.forEach(item=>{item.value='吴亮+1'})
+        //   })
+        //   Button('敲击时长间隔1秒').onClick(()=>{
+        //     this.time=1000
+        //
+        //   })
+        //   Button('固定10次').onClick(()=>{
+        //     //自动敲击
+        //     const a=setInterval(()=>{
+        //       this.onclikMerit()
+        //
+        //     },this.time)
+        //     const b=setTimeout(()=>{
+        //       clearInterval(a)
+        //       clearTimeout(b)
+        //     },this.time*10)
+        //
+        //
+        //   })
+        //   Button('倒计时规定时间').onClick(()=>{
+        //     this.onclikMerit()
+        //     const a=setInterval(()=>{
+        //       this.onclikMerit()
+        //     },this.time)
+        //     const b=setTimeout(()=>{
+        //       clearInterval(a)
+        //       clearTimeout(b)
+        //     },10000)
+        //
+        //   })
+        // }
+        //
+        // Button('xxx').bindSheet($$this.isShowTimeManger,this.timeMangerBuilder(),{
+        //   width:'100%',
+        //   height:400,
+        //   showClose:false
+        // }).onClick(()=>{
+        //   this.isShowTimeManger=true
+        // })
+        //
+        // Button('震动').onClick(()=>{
+        //   Vibration.startVibration()
+        // })
+
+
+        // Stack() {
+        //   Progress({ value: this.valueTime, total: 70, type: ProgressType.Linear }).backgroundColor(Color.White)
+        //   Row({space:30}){
+        //     ForEach([0,10,20,30,40,50,60,70],(item:number)=>{
+        //       Column(){
+        //       }.width(10)
+        //       .height(10)
+        //       .borderRadius('50%')
+        //       .onClick(()=>{
+        //         this.valueTime=item
+        //       })
+        //       .backgroundColor(this.valueTime>=item?Color.Pink:Color.White)
+        //     })
+        //
+        //
+        //   }.width('100%')
+        //
+        // }
+
+
+      }.width('100%')
+      .height('100%')
+      .padding({
+        top: this.top + 22,
+        left: 20,
+        right: 20
+      })
+    }.backgroundColor(Color.Black)
   }
 }

BIN
features/feature/src/main/resources/base/media/huo1.png


BIN
features/feature/src/main/resources/base/media/huo2.png


BIN
features/feature/src/main/resources/base/media/huo3.png


BIN
features/feature/src/main/resources/base/media/huo4.png


BIN
features/feature/src/main/resources/base/media/huo5.png


BIN
features/feature/src/main/resources/base/media/three_Fra_1.png


BIN
features/feature/src/main/resources/base/media/three_Fra_10.png


BIN
features/feature/src/main/resources/base/media/three_Fra_11.png


BIN
features/feature/src/main/resources/base/media/three_Fra_12.png


BIN
features/feature/src/main/resources/base/media/three_Fra_13.png


BIN
features/feature/src/main/resources/base/media/three_Fra_14.png


BIN
features/feature/src/main/resources/base/media/three_Fra_15.png


BIN
features/feature/src/main/resources/base/media/three_Fra_16.png


BIN
features/feature/src/main/resources/base/media/three_Fra_17.png


BIN
features/feature/src/main/resources/base/media/three_Fra_18.png


BIN
features/feature/src/main/resources/base/media/three_Fra_19.png


BIN
features/feature/src/main/resources/base/media/three_Fra_2.png


BIN
features/feature/src/main/resources/base/media/three_Fra_20.png


BIN
features/feature/src/main/resources/base/media/three_Fra_21.png


BIN
features/feature/src/main/resources/base/media/three_Fra_3.png


BIN
features/feature/src/main/resources/base/media/three_Fra_4.png


BIN
features/feature/src/main/resources/base/media/three_Fra_5.png


BIN
features/feature/src/main/resources/base/media/three_Fra_6.png


BIN
features/feature/src/main/resources/base/media/three_Fra_7.png


BIN
features/feature/src/main/resources/base/media/three_Fra_8.png


BIN
features/feature/src/main/resources/base/media/three_Fra_9.png


+ 19 - 1
features/user/src/main/ets/pages/AboutUS.ets

@@ -18,6 +18,7 @@ export struct AboutUS {
   ICPRecordNumber: string = '19019164号-5A'
   listData: string[] = ['用户协议', '隐私政策']
   @State versionName: string = ''
+  @StorageProp(YTAvoid.SAFE_TOP_KEY) safeTop:number=0
 
   async aboutToAppear() {
     const res = await bundleManager.getBundleInfoForSelf(bundleManager.BundleFlag.GET_BUNDLE_INFO_DEFAULT)
@@ -26,7 +27,24 @@ export struct AboutUS {
 
   build() {
     Column() {
-      YTHeader({ title: "关于我们" })
+      Row() {
+        Image($r('app.media.ic_back'))
+          .width(24)
+          .margin({ left: 16 })
+          .onClick(()=>{
+            yTRouter.routerBack()
+
+          })
+        Text('关于我们')
+        Column(){
+
+        }.width(24)
+        .height(24)
+      }
+      .width('100%')
+      .justifyContent(FlexAlign.SpaceBetween)
+      .height(44 + this.safeTop)
+      .padding({ top: this.safeTop })
 
       Column() {
         Image($r('[basic].media.app_icon'))

+ 25 - 5
features/user/src/main/ets/pages/Privacy.ets

@@ -1,4 +1,4 @@
-import { YTAvoid, YTHeader } from 'basic';
+import { YTAvoid, YTHeader, yTRouter } from 'basic';
 import { webview } from '@kit.ArkWeb';
 
 
@@ -14,20 +14,40 @@ function PrivacyBuilder() {
 export struct Privacy {
   @State content: string = '';
   @StorageProp(YTAvoid.SAFE_BOTTOM_KEY) safeBottom: number = 0
+  @StorageProp(YTAvoid.SAFE_TOP_KEY) safeTop:number=0
   private webviewController: WebviewController = new webview.WebviewController()
 
   build() {
 
     Column() {
-      YTHeader({ title: "隐私政策" })
+
+
+        Row() {
+            Image($r('app.media.ic_back'))
+              .width(24)
+              .margin({ left: 16 })
+              .onClick(()=>{
+                yTRouter.routerBack()
+
+              })
+          Text('隐私政策')
+          Column(){
+
+          }.width(24)
+          .height(24)
+        }
+        .width('100%')
+        .justifyContent(FlexAlign.SpaceBetween)
+       .height(44 + this.safeTop)
+       .padding({ top: this.safeTop })
       Web({
-        src: "https://hm-test.ytpm.net/decisionPrivacy",
+        src: "https://hm-test.ytpm.net/woodenfishPrivatePolicy",
         controller: this.webviewController,
         renderMode: RenderMode.ASYNC_RENDER // 设置渲染模式
-      }).padding(20)
+      }).margin({bottom:40})
     }
     .width('100%')
     .height('100%')
-    .padding({ bottom: this.safeBottom })
+    .padding({left:20,right:20,bottom:40})
   }
 }

+ 17 - 1
features/user/src/main/ets/pages/SettingPage.ets

@@ -127,7 +127,23 @@ struct SettingPage {
 
   build() {
     Column() {
-      YTHeader({ title: '用户设置' })
+      Row() {
+        Image($r('app.media.ic_back'))
+          .width(24)
+          .margin({ left: 16 })
+          .onClick(()=>{
+            yTRouter.routerBack()
+          })
+        Text('用户设置')
+        Column(){
+
+        }.width(24)
+        .height(24)
+      }
+      .width('100%')
+      .justifyContent(FlexAlign.SpaceBetween)
+      .height(44 + this.safeTop)
+      .padding({ top: this.safeTop })
       if (!this.isShowPassWordReSet) {
         Column() {
           ForEach(this.reviseBuilderArr, (item: BasicType<undefined>, index) => {

+ 20 - 3
features/user/src/main/ets/pages/UserAgreement.ets

@@ -1,5 +1,5 @@
 import { webview } from '@kit.ArkWeb'
-import { YTHeader } from 'basic'
+import { YTAvoid, YTHeader, yTRouter } from 'basic'
 
 @Builder
 function userAgreementBuilder() {
@@ -12,12 +12,29 @@ function userAgreementBuilder() {
 @Component
 struct UserAgreementPage {
   private webviewController: WebviewController = new webview.WebviewController()
+  @StorageProp(YTAvoid.SAFE_TOP_KEY) safeTop:number=0
 
   build() {
     Column() {
-      YTHeader({ title: '用户协议' })
+      Row() {
+        Image($r('app.media.ic_back'))
+          .width(24)
+          .margin({ left: 16 })
+          .onClick(()=>{
+            yTRouter.routerBack()
+          })
+        Text('隐私政策')
+        Column(){
+
+        }.width(24)
+        .height(24)
+      }
+      .width('100%')
+      .justifyContent(FlexAlign.SpaceBetween)
+      .height(44 + this.safeTop)
+      .padding({ top: this.safeTop })
       Web({
-        src: "https://hm-test.ytpm.net/decisionUserAgreent",
+        src: "https://hm-test.ytpm.net/woodenfishUserAgreement",
         controller: this.webviewController,
         renderMode: RenderMode.ASYNC_RENDER // 设置渲染模式
       })

+ 24 - 21
features/user/src/main/ets/views/Mine.ets

@@ -1,4 +1,4 @@
-import { BasicType, IBestToast, userInfo, UserInfo, YTAvoid, YTLog, yTRouter } from "basic"
+import { BasicType, IBestToast, userInfo, UserInfo, YTAvoid, YTLog, yTRouter, YTUserRequest } from "basic"
 import { common, Want } from "@kit.AbilityKit"
 import { BusinessError } from "@kit.BasicServicesKit"
 import { BUNDLE_NAME } from "BuildProfile"
@@ -22,18 +22,19 @@ export struct Mine {
   @State isAutoBackImg:boolean=false
   setArr: Array<BasicType<undefined>> = [
     {
-      acSrc:$r('app.media.sharefri'),
+      acSrc:$r('app.media.share'),
       text: '分享给好友',
       click: () => {
-
         this.shareData()
-
-
       },
       src: $r('app.media.rightxx')
     },
     {
-      acSrc:$r('app.media.sugestion'),
+      acSrc:$r('app.media.mertime'),
+      text: '累计功德',
+    },
+    {
+      acSrc:$r('app.media.sugest'),
       text: '意见反馈',
       click: () => {
         if (this.userInfo.checkLogin()) {
@@ -64,7 +65,7 @@ export struct Mine {
     //   src: $r('app.media.rightxx')
     // },
     {
-      acSrc:$r('app.media.abountwo'),
+      acSrc:$r('app.media.about'),
       text: '关于我们',
       click: () => {
         yTRouter.router2AboutUS()
@@ -72,7 +73,7 @@ export struct Mine {
       src: $r('app.media.rightxx')
     },
     {
-      acSrc:$r('app.media.backzhanghao'),
+      acSrc:$r('app.media.tuichu'),
       text: '退出账号',
       click: () => {
         this.userInfo.logout()
@@ -115,7 +116,7 @@ export struct Mine {
     Column() {
       Row(){
 
-        Text('我的').fontSize(18).fontWeight(700).fontColor('#000')
+        Text('我的').fontSize(18).fontWeight(700).fontColor('#fff')
 
 
       }.width('100%').justifyContent(FlexAlign.Center)
@@ -136,7 +137,7 @@ export struct Mine {
           Text(this.userInfo.getName() ?? this.userInfo.getPhoneNumber() ?? this.userInfo.getId()?.toString() ??
             '未登录')
             .fontSize(18)
-            .fontColor('#FF1C1C1C')
+            .fontColor(Color.White)
             .fontWeight(500)
           // Text() {
           //   Span('ID:' + (this.userInfo.getId()?.toString().padStart(8, '0') ?? '00000000'))
@@ -163,8 +164,8 @@ export struct Mine {
         Text('用户设置')
           .fontSize(14)
           .padding({left:14,right:14,top:4,bottom:4})
-          .fontColor('#707376')
-          .border({width:1,color:'#c6cacf'})
+          .fontColor('rgba(250, 222, 113, 1)')
+          .border({width:1,color:'rgba(250, 222, 113, 1)'})
           .borderRadius(15)
           .margin({top:8})  //(68,32  )
           .onClick(()=>{
@@ -188,7 +189,6 @@ export struct Mine {
       Column(){
         // ShowBannerAd()
         Column() {
-
           List({space:5}) {
             ForEach(this.setArr, (item: BasicType<undefined>, index) => {
               ListItem() {
@@ -196,7 +196,7 @@ export struct Mine {
                   Row({space:10}) {
                     Image(item.acSrc).width(24)
                     Text(item.text)
-                      .fontWeight(500).fontColor('#FF1C1C1C')
+                      .fontWeight(500).fontColor(Color.White)
                   }
                   // if (index==0) {
                   //   // Row() {
@@ -210,22 +210,28 @@ export struct Mine {
                   //   // }
                   // }
                   // else {
+                  if(index!=1){
                     Image($r('app.media.rightxx'))
                       .width(24)
                       .aspectRatio(1)
+                  }else{
+                    Row(){
+                      Text(this.userInfo.getMerit()?.toString()).fontColor('rgba(250, 222, 113, 1)')
+                    }
+                  }
+
                   // }
                 }
                 .width('100%')
-                .backgroundColor(Color.White)
                 .height(56)
                 .padding({left:10,right:10})
                 .justifyContent(FlexAlign.SpaceBetween)
                 .onClick(() => {
                   item.click?.()
                 })
-              }
+              }.backgroundColor('rgba(120, 120, 120, 1)').borderRadius(8)
             })
-          }
+          }.margin({top:32})
           // .divider({ strokeWidth: 1, color: '#1A1C1C1C'})
           .width('100%')
         }
@@ -233,16 +239,13 @@ export struct Mine {
         .layoutWeight(1)
         .width('100%')
       }.width('100%')
-      .backgroundColor('#f7f7f7')
       .borderRadius({topLeft:20,topRight:20})
+      .backgroundColor('rgba(63, 63, 63, 1)')
       .layoutWeight(1)
       .padding({ left: 16, right: 16 })
 
     }.width('100%')
     .height('100%')
     .backgroundColor(Color.Black)
-    .backgroundImage($r('[basic].media.backimgNumber'))
-    .backgroundImageSize({width:'100%',height:"100%"})
-
   }
 }

BIN
features/user/src/main/resources/base/media/about.png


BIN
features/user/src/main/resources/base/media/ic_back.png


BIN
features/user/src/main/resources/base/media/login.png


BIN
features/user/src/main/resources/base/media/mertime.png


BIN
features/user/src/main/resources/base/media/share.png


BIN
features/user/src/main/resources/base/media/sugest.png


BIN
features/user/src/main/resources/base/media/tuichu.png


+ 3 - 0
products/entry/src/main/ets/entryability/EntryAbility.ets

@@ -91,6 +91,9 @@ export default class EntryAbility extends UIAbility {
       // })
       const windowClass = windowStage.getMainWindowSync()
       windowClass.setWindowLayoutFullScreen(true)
+      windowClass.setWindowSystemBarProperties({
+        statusBarContentColor:'#ffffff'
+      })
       const top = windowClass.getWindowAvoidArea(window.AvoidAreaType.TYPE_SYSTEM).topRect.height
       const bottom = windowClass.getWindowAvoidArea(window.AvoidAreaType.TYPE_NAVIGATION_INDICATOR).bottomRect.height
       YTAvoid.setAvoid({

+ 11 - 12
products/entry/src/main/ets/pages/Index.ets

@@ -10,19 +10,19 @@ struct Index {
   //tabs展示内容
   contentList: BasicType<undefined>[] = [
     {
-      text: '工具',
-      src: $r('app.media.homeuns'),
-      acSrc: $r('app.media.homes')
+      text: '木鱼',
+      acSrc: $r('app.media.home_sel'),
+      src: $r('app.media.home_unsel')
     },
     {
-      text: '香',
-      src: $r('app.media.homeuns'),
-      acSrc: $r('app.media.homes')
+      text: '香',
+      acSrc: $r('app.media.secand_sel'),
+      src: $r('app.media.secand_unsel')
     },
     {
-      text: '我',
-      src: $r('app.media.myuns'),
-      acSrc: $r('app.media.mys')
+      text: '我',
+      acSrc: $r('app.media.my_sel'),
+      src: $r('app.media.my_unsel')
     }
   ]
   tabsController: TabsController = new TabsController()
@@ -71,7 +71,7 @@ struct Index {
       }
       .width('100%')
       .height('100%')
-      .backgroundColor(Color.White)
+      .backgroundColor(Color.Black)
 
     }
     .mode(NavigationMode.Stack)
@@ -86,8 +86,7 @@ struct Index {
       Text(item.text)
         .fontSize($r('[basic].float.page_text_font_size_10'))
         .lineHeight(16)
-        .fontColor(this.currentIndex == item.index ? $r('[basic].color.main_ac_color_dark') :
-        $r('[basic].color.main_na_color'))
+        .fontColor(this.currentIndex == item.index ? $r('[basic].color.login_main_yellow') :'rgba(250, 222, 113, 0.4)')
 
     }
     .margin({ top: 5 })

BIN
products/entry/src/main/resources/base/media/home_sel.png


BIN
products/entry/src/main/resources/base/media/home_unsel.png


BIN
products/entry/src/main/resources/base/media/homes.png


BIN
products/entry/src/main/resources/base/media/homeuns.png


BIN
products/entry/src/main/resources/base/media/my_sel.png


BIN
products/entry/src/main/resources/base/media/my_unsel.png


BIN
products/entry/src/main/resources/base/media/mys.png


BIN
products/entry/src/main/resources/base/media/myuns.png


BIN
products/entry/src/main/resources/base/media/secand_sel.png


BIN
products/entry/src/main/resources/base/media/secand_unsel.png


BIN
products/entry/src/main/resources/base/media/startIcon.png