fix: 重构登陆页面
This commit is contained in:
		
							parent
							
								
									cb302cf9c8
								
							
						
					
					
						commit
						0c0fc179c9
					
				| @ -52,4 +52,10 @@ export const JudgeTag = '[Judge]'; | ||||
| export const InitTableTag = '[InitTable]'; | ||||
| 
 | ||||
| //数据库操作 | ||||
| export const DbOperationTag = '[DbOperation]'; | ||||
| export const DbOperationTag = '[DbOperation]'; | ||||
| 
 | ||||
| //路线 | ||||
| export const RoadsTag = '[Roads]'; | ||||
| 
 | ||||
| //ExaminerLogin | ||||
| export const ExaminerLoginTag = '[ExaminerLogin]'; | ||||
| @ -24,6 +24,7 @@ export default class EntryAbility extends UIAbility { | ||||
|       if (data !== '' && data !== undefined) { | ||||
|         const result: EnvironmentConfigurationType = JSON.parse(data) | ||||
|         AppStorage.setOrCreate<EnvironmentConfigurationType>("EnvironmentConfiguration", result) | ||||
|         console.log("日志", result.isOpenLog) | ||||
|         if (result.isOpenLog) { | ||||
|           dConsole.init(result.isOpenLog) | ||||
|         } | ||||
| @ -73,7 +74,7 @@ export default class EntryAbility extends UIAbility { | ||||
|     AppStorage.setOrCreate('windowClass', windowClass) | ||||
|     await windowClass.setWindowLayoutFullScreen(true) | ||||
|     // await windowClass.setWindowSystemBarEnable([]) //全屏 | ||||
|     windowStage.loadContent('pages/Index', (err, data) => { | ||||
|     windowStage.loadContent('pages/ExaminerLogin', (err, data) => { | ||||
|       if (err.code) { | ||||
|         hilog.error(0x0000, 'testTag', 'Failed to load the content. Cause: %{public}s', JSON.stringify(err) ?? ''); | ||||
|         return; | ||||
|  | ||||
| @ -1,204 +1,221 @@ | ||||
| import router from '@ohos.router'; | ||||
| import TopLogo from './compontents/TopLogo'; | ||||
| import promptAction from '@ohos.promptAction'; | ||||
| import errorMsgDialog from './compontents/errorMsgDialog'; | ||||
| import imageBtn from './compontents/imageBtn'; | ||||
| import HeaderComponent from './compontents/Header'; | ||||
| import LoadingComponent from './compontents/Loading'; | ||||
| import Prompt from '@system.prompt'; | ||||
| import { ApiResponseType, CarInfoType, ExaminerLoginInfo } from '../model'; | ||||
| import CryptoJS from '@ohos/crypto-js'; | ||||
| import { UserLoginType } from '../model/ExaminerLogin'; | ||||
| import { BusinessError } from '@ohos.base'; | ||||
| import { examinerLogin } from '../api/login'; | ||||
| import { ApiResponseType, CarInfoType, ExaminerLoginInfo } from '../model/index'; | ||||
| import { CryptoJS } from '@ohos/crypto-js'; | ||||
| import router from '@ohos.router'; | ||||
| import { dConsole } from '../utils/LogWorker'; | ||||
| import { ExaminerLoginTag } from '../config'; | ||||
| 
 | ||||
| 
 | ||||
| @Entry | ||||
| @Component | ||||
| struct ExaminerLoginPage { | ||||
|   @State ratio: number = 1700 / 960 | ||||
|   @State url: string = '' | ||||
|   @State inputPlaceholderArr: string[] = ['用户账户', '密码']; | ||||
|   @State inputTextArr: string[] = ['', '']; | ||||
|   @State imgArr1: Resource[] = | ||||
|     [$r('app.media.1_nor'), $r('app.media.2_nor'), $r('app.media.3_nor'), $r('app.media.4_nor'), $r('app.media.5_nor'), | ||||
|       $r('app.media.6_nor'), $r('app.media.7_nor'), $r('app.media.8_nor'), $r('app.media.9_nor'), $r('app.media.0_nor'), | ||||
|       $r('app.media.x_nor'), $r('app.media.clear_nor'), $r('app.media.delete_nor'), $r('app.media.confirm_nor')] | ||||
|   @State currentInputIndex: number = 0 | ||||
|   @State limit: boolean = false | ||||
|   @State @Watch('outClick') outFlag: boolean = false; | ||||
|   // private vocObj = null; | ||||
|   private title = '' | ||||
|   private type = '2' | ||||
|   errorDialog: CustomDialogController = new CustomDialogController({ | ||||
|     builder: errorMsgDialog({ | ||||
|       title: this.title, | ||||
|       type: this.type, | ||||
|       cancel: () => { | ||||
|       }, | ||||
|       confirm: () => { | ||||
|       } | ||||
|   @State dataList: string[] = ["1", "2", "3", "4", "退格", "5", "6", "7", "8", "清空", "9", "0", "X"]; | ||||
|   @State userName: string = ""; | ||||
|   @State password: string = ""; | ||||
|   @State selectIndex: string = "0" | ||||
|   loadingDialog: CustomDialogController = new CustomDialogController({ | ||||
|     builder: LoadingComponent({ | ||||
|       text: "正在登录,请稍候..." | ||||
|     }), | ||||
|     customStyle: true, | ||||
|     alignment: DialogAlignment.Center, | ||||
|   }, | ||||
|   ) | ||||
|     autoCancel: false | ||||
|   }) | ||||
| 
 | ||||
|   build() { | ||||
|     Column() { | ||||
|       TopLogo({ outFlag: $outFlag }) | ||||
|     Flex({ | ||||
|       direction: FlexDirection.Column, | ||||
|     }) { | ||||
|       HeaderComponent({ | ||||
|         shortLogo: true, | ||||
|         shouBackArea: true | ||||
|       }) | ||||
|       Row() { | ||||
|         Text("请考官输入用户名和密码") | ||||
|           .fontSize(40) | ||||
|           .fontColor("#EF9335") | ||||
|           .width("100%") | ||||
|           .height(50) | ||||
|           .textAlign(TextAlign.Center) | ||||
|       } | ||||
| 
 | ||||
|       Column() { | ||||
|         Text('请考官输入用户名密码').fontColor('#FFAD33').fontSize(36 * this.ratio) | ||||
|         Row() { | ||||
|           ForEach(this.inputPlaceholderArr, (item: string, index: number) => { | ||||
|             Row() { | ||||
|               TextInput({ placeholder: `${item}`, text: this.inputTextArr[index] }) | ||||
|                 .fontSize(42 * this.ratio) | ||||
|                 .fontColor('white') | ||||
|                 .placeholderFont({ size: 42 * this.ratio }) | ||||
|                 .placeholderColor('gray') | ||||
|                 .caretColor('white') | ||||
|                 .backgroundColor('transparent') | ||||
|                 .width('90%') | ||||
|                 .margin({ left: '4%' }) | ||||
|                 .type(index === 0 ? InputType.Normal : InputType.Password) | ||||
|                 .focusable(false) | ||||
|                 .onClick(() => { | ||||
|                   this.currentInputIndex = index; | ||||
|                 }) | ||||
|           inputComponent({ | ||||
|             active: this.selectIndex === "0", | ||||
|             value: this.userName, | ||||
|             onSelect: () => { | ||||
|               this.selectIndex = "0" | ||||
|             } | ||||
|             .backgroundImage(this.currentInputIndex == index ? $r('app.media.kuang_pre') : $r('app.media.kuang_nor')) | ||||
|             .backgroundImageSize({ width: '100%', height: '100%' }) | ||||
|             .width('48%') | ||||
|             .height('14.9%') | ||||
|           }) | ||||
|         } | ||||
|         .width('90%') | ||||
|         .margin({ top: 25 * this.ratio }) //20 | ||||
|         .justifyContent(FlexAlign.SpaceBetween) | ||||
|           inputComponent({ | ||||
|             active: this.selectIndex === "1", | ||||
|             value: this.password, | ||||
|             placeholder: "请输入密码", | ||||
|             onSelect: () => { | ||||
|               this.selectIndex = "1" | ||||
|             }, | ||||
|           }) | ||||
|         }.width("100%").justifyContent(FlexAlign.SpaceBetween) | ||||
| 
 | ||||
|         Column() { | ||||
|           Flex({ | ||||
|             wrap: FlexWrap.Wrap, | ||||
|             justifyContent: FlexAlign.SpaceAround, | ||||
|             alignContent: FlexAlign.SpaceAround | ||||
|             direction: FlexDirection.Column | ||||
|           }) { | ||||
|             ForEach(this.imgArr1, (item: Resource, index: number) => { | ||||
|               if (index === this.imgArr1.length - 1) { | ||||
|                 imageBtn({ btnWidth: '38%', btnHeight: '24%', imgSrc: item }) | ||||
|                   .onClick(() => { | ||||
|                     if (this.inputTextArr[0].trim() == '' || this.inputTextArr[1].trim() == '') { | ||||
|                       promptAction.showToast({ | ||||
|                         message: '请输入用户名和密码', | ||||
|                         duration: 3000 | ||||
|                       }); | ||||
|                       return | ||||
|                     } | ||||
|                     if (this.limit) { | ||||
|                       return | ||||
|                     } | ||||
|                     const carInfo: CarInfoType = AppStorage.get<CarInfoType>('carInfo')! | ||||
|                     let password: string = CryptoJS.MD5(this.inputTextArr[1]).toString(); | ||||
|                     const param: UserLoginType = { | ||||
|                       carId: carInfo.carId as string, | ||||
|                       examinationRoomId: carInfo.examinationRoomId as string, | ||||
|                       username: this.inputTextArr[0], | ||||
|                       // password: Md5.Instance.get_md5(this.inputTextArr[1]) | ||||
|                       password | ||||
|                     } | ||||
|                     this.type = '2' | ||||
|                     this.errorDialog.open() | ||||
|                     this.limit = true | ||||
|                     try { | ||||
|                       // TODO | ||||
|                       examinerLogin(param).then((res: ApiResponseType) => { | ||||
|                         // AppStorage.setOrCreate('examinerInfo', res?.examinerLoginRsp?.body) | ||||
|                         dConsole.log('res?.examinerLoginRsp?.head?.resultCode', res?.examinerLoginRsp?.head?.resultCode, | ||||
|                           JSON.stringify(res)) | ||||
|                         this.errorDialog.close() | ||||
| 
 | ||||
|                         this.limit = false | ||||
|                         if (res?.examinerLoginRsp?.head?.resultCode == '1') { | ||||
|                           // this.type='1' | ||||
|                           // this.title=decodeURIComponent(res.examinerLoginRsp.head.resultMessage) | ||||
|                           // dConsole.log('this.titlt',this.title) | ||||
|                           // this.errorDialog.open() | ||||
|                           return | ||||
|                         } | ||||
|                         router.pushUrl({ | ||||
|                           url: 'pages/UserInfo', | ||||
|                           params: { | ||||
|                             type: 1 | ||||
|                           } | ||||
|                         }, router.RouterMode.Single); | ||||
| 
 | ||||
|                         dConsole.log('res11', JSON.stringify(res)) | ||||
|                         const examinerLoginInfo: ExaminerLoginInfo | undefined = res.examinerLoginRsp?.body; | ||||
|                         if (!examinerLoginInfo) { | ||||
|                           dConsole.error('examinerLoginRsp.body is undefined'); | ||||
|                           return; | ||||
|                         } | ||||
|                         examinerLoginInfo.username = this.inputTextArr[0] | ||||
|                         AppStorage.setOrCreate<ExaminerLoginInfo>('examinerInfo', examinerLoginInfo) | ||||
|                       }).catch((err: BusinessError) => { | ||||
|                         this.errorDialog.close() | ||||
|                         this.limit = false | ||||
|                       }) | ||||
|                     } catch (error) { | ||||
|                       this.errorDialog.close() | ||||
|                       this.limit = false | ||||
|                     } | ||||
| 
 | ||||
|                   }) | ||||
|               } else { | ||||
|                 imageBtn({ btnWidth: '18%', btnHeight: '24%', imgSrc: item }) | ||||
|                   .onClick(() => { | ||||
|                     this.url = '' | ||||
|                     if (index < 9) { | ||||
|                       this.inputTextArr[this.currentInputIndex] += (index + 1).toString() | ||||
|             Grid() { | ||||
|               ForEach(this.dataList, (item: string) => { | ||||
|                 GridItem() { | ||||
|                   btnComponent({ | ||||
|                     text: item | ||||
|                   }).onClick(() => { | ||||
|                     if (item === "退格") { | ||||
|                       if (this.selectIndex === "0") { | ||||
|                         this.userName = this.userName.slice(0, -1); | ||||
|                       } else { | ||||
|                         this.password = this.password.slice(0, -1); | ||||
|                       } | ||||
|                     } else if (item === "清空") { | ||||
|                       this.userName = ""; | ||||
|                       this.password = ""; | ||||
|                     } else if (item === "X") { | ||||
|                       this.selectIndex = "0"; | ||||
|                     } else { | ||||
|                       if (index === 9) { | ||||
|                         this.inputTextArr[this.currentInputIndex] += (0).toString() | ||||
|                       } | ||||
|                       if (index === 10) { | ||||
|                         this.inputTextArr[this.currentInputIndex] += 'X'; | ||||
|                       } else if (index === 11) { | ||||
|                         this.inputTextArr[this.currentInputIndex] = ''; | ||||
|                       } | ||||
|                       if (index === 12) { | ||||
|                         this.inputTextArr[this.currentInputIndex] = | ||||
|                           this.inputTextArr[this.currentInputIndex].slice(0, -1) | ||||
|                       if (this.selectIndex === "0") { | ||||
|                         this.userName += item; | ||||
|                       } else { | ||||
|                         this.password += item; | ||||
|                       } | ||||
|                     } | ||||
|                     dConsole.log(this.inputTextArr[this.currentInputIndex]) | ||||
|                   }) | ||||
|               } | ||||
|             }) | ||||
|                 } | ||||
|               }) | ||||
|               GridItem() { | ||||
|                 btnComponent({ | ||||
|                   text: "确定" | ||||
|                 }).onClick(async () => { | ||||
|                   if (this.userName === "" || this.password === "") { | ||||
|                     Prompt.showToast({ | ||||
|                       message: "用户名或密码不能为空", | ||||
|                       duration: 2000 | ||||
|                     }); | ||||
|                     return; | ||||
|                   } | ||||
|                   const carInfo: CarInfoType = AppStorage.get<CarInfoType>('carInfo')! | ||||
|                   let password: string = CryptoJS.MD5(this.password).toString(); | ||||
|                   const param: UserLoginType = { | ||||
|                     carId: carInfo.carId as string, | ||||
|                     examinationRoomId: carInfo.examinationRoomId as string, | ||||
|                     username: this.userName, | ||||
|                     password | ||||
|                   } | ||||
|                   this.loadingDialog.open(); | ||||
|                   try { | ||||
|                     const res: ApiResponseType = await examinerLogin(param) | ||||
|                     if (res?.examinerLoginRsp?.head?.resultCode == '1') { | ||||
|                       return | ||||
|                     } | ||||
|                     this.loadingDialog.close() | ||||
|                     router.pushUrl({ | ||||
|                       url: 'pages/UserInfo', | ||||
|                       params: { | ||||
|                         type: 1 | ||||
|                       } | ||||
|                     }, router.RouterMode.Single); | ||||
|                     const examinerLoginInfo: ExaminerLoginInfo | undefined = res.examinerLoginRsp?.body; | ||||
|                     if (!examinerLoginInfo) { | ||||
|                       dConsole.error(ExaminerLoginTag, 'examinerLoginRsp.body is undefined'); | ||||
|                       return; | ||||
|                     } | ||||
|                     examinerLoginInfo.username = this.userName | ||||
|                     AppStorage.setOrCreate<ExaminerLoginInfo>('examinerInfo', examinerLoginInfo) | ||||
|                   } catch (e) { | ||||
|                     this.loadingDialog.close(); | ||||
|                     dConsole.error(ExaminerLoginTag, 'examinerLogin error: ' + e); | ||||
|                     Prompt.showToast({ | ||||
|                       message: "登录失败,请稍后重试", | ||||
|                       duration: 2000 | ||||
|                     }); | ||||
|                   } | ||||
|                 }) | ||||
|               }.columnStart(4).columnEnd(5) | ||||
|             } | ||||
|             .columnsTemplate("1fr 1fr 1fr 1fr 1fr") | ||||
|             .rowsTemplate("1fr 1fr 1fr") | ||||
|             .height("100%") | ||||
|           } | ||||
|           .height('100%') | ||||
|         } | ||||
|         .margin({ top: 20 * this.ratio }) | ||||
|         .width('90%') | ||||
|         .height('62.7%') | ||||
|         .backgroundColor('#E5E3DF') | ||||
|         .borderRadius(20 * this.ratio) | ||||
|         .width("100%") | ||||
|         .flexGrow(1) | ||||
|         .flexShrink(1) | ||||
|         .backgroundColor("#E5E3DF") | ||||
|         .borderRadius(20) | ||||
|         .padding(20) | ||||
|         .margin({ | ||||
|           top: 20 | ||||
|         }) | ||||
|       }.width("100%").height("100%").padding(20) | ||||
|     }.backgroundColor("#232424").height("100%").width("100%").padding({ | ||||
|       bottom: 10 | ||||
|     }) | ||||
|   } | ||||
| } | ||||
| 
 | ||||
| @Component | ||||
| struct btnComponent { | ||||
|   @State text: string = "1"; | ||||
|   @State opacityNum: number = 1; | ||||
| 
 | ||||
|   build() { | ||||
|     Row() { | ||||
|       if (this.text != "确定" && this.text !== "退格" && this.text !== "清空") { | ||||
|         Text(this.text).fontSize(40).fontColor("#F0DEC5") | ||||
|       } | ||||
|       .margin({ top: -10 * this.ratio }) | ||||
|       .justifyContent(FlexAlign.SpaceAround) | ||||
|     } | ||||
|     .width('100%') | ||||
|     .height('100%') | ||||
|     .justifyContent(FlexAlign.SpaceBetween) | ||||
|     .backgroundImagePosition({ x: 0, y: 0 }) | ||||
|     .backgroundImage($r('app.media.index_bg')) | ||||
|     .backgroundImageSize({ width: '100%', height: '100%' }) | ||||
|     .backgroundImage(this.text === "确定" ? $r("app.media.queding_nor") : this.text === "退格" ? $r("app.media.delete_nor") : this.text === "清空" ? $r("app.media.clear_nor") : $r("app.media.nor_btn")) | ||||
|     .width("100%") | ||||
|     .height(160) | ||||
|     .backgroundImageSize({ | ||||
|       width: "100%", | ||||
|       height: "100%" | ||||
|     }) | ||||
|     .justifyContent(FlexAlign.Center) | ||||
|     .alignItems(VerticalAlign.Center) | ||||
|   } | ||||
| } | ||||
| 
 | ||||
|   aboutToAppear() { | ||||
|     this.url = '' | ||||
|   } | ||||
| @Component | ||||
| struct inputComponent { | ||||
|   @State placeholder: string = "请输入用户名"; | ||||
|   @Prop value: string = ""; | ||||
|   @Prop active: boolean = false; | ||||
|   onSelect: () => void = () => { | ||||
|   }; | ||||
| 
 | ||||
|   onPageShow() { | ||||
|   } | ||||
| 
 | ||||
|   outClick() { | ||||
|   build() { | ||||
|     Row() { | ||||
|       TextInput({ | ||||
|         text: this.value, | ||||
|         placeholder: this.placeholder | ||||
|       }) | ||||
|         .placeholderColor("#fff") | ||||
|         .onFocus(() => { | ||||
|           this.onSelect() | ||||
|         }) | ||||
|         .fontColor("#fff") | ||||
|         .fontSize(40) | ||||
|         .placeholderFont({ | ||||
|           size: 40 | ||||
|         }) | ||||
|         .margin({ | ||||
|           left: 20 | ||||
|         }) | ||||
|     }.backgroundImage( | ||||
|       this.active ? $r("app.media.kuang_pre") : $r("app.media.kuang_nor") | ||||
|     ).backgroundImageSize({ | ||||
|       width: "100%", | ||||
|       height: "100%" | ||||
|     }).width(750).height(100) | ||||
|   } | ||||
| } | ||||
| @ -5,6 +5,7 @@ export default struct BottomMessageComponent { | ||||
|   @Prop hasAuth: boolean | ||||
|   @Prop examCarNumber: string | ||||
|   versionClick?: () => void | ||||
|   @State count: number = 0 | ||||
| 
 | ||||
|   build() { | ||||
|     Flex( | ||||
| @ -17,14 +18,24 @@ export default struct BottomMessageComponent { | ||||
|         Text('V外壳:' + this.version).textCommonStyle() | ||||
|         Text('V评判:' + this.judgeVersion).textCommonStyle() | ||||
|         Text('授权信息:' + (this.hasAuth ? "已授权" : "未授权")).textCommonStyle() | ||||
|       }.gesture( | ||||
|         GestureGroup(GestureMode.Exclusive, | ||||
|           TapGesture({ count: 3 }) | ||||
|             .onAction(() => { | ||||
|               this.versionClick && this.versionClick() | ||||
|             }) | ||||
|         ) | ||||
|       ).alignItems(HorizontalAlign.Start) | ||||
|       }.alignItems(HorizontalAlign.Start) | ||||
|       .onClick(() => { | ||||
|         //   点击五次 | ||||
|         this.count++ | ||||
|         if (this.count >= 5) { | ||||
|           this.versionClick && this.versionClick() | ||||
|           this.count = 0 | ||||
|         } | ||||
|       }) | ||||
| 
 | ||||
|       // .gesture( | ||||
|       //   GestureGroup(GestureMode.Exclusive, | ||||
|       //     TapGesture({ count: 3 }) | ||||
|       //       .onAction(() => { | ||||
|       //         this.versionClick && this.versionClick() | ||||
|       //       }) | ||||
|       //   ) | ||||
|       // ) | ||||
| 
 | ||||
|       Text("考车号: " + this.examCarNumber).textCommonStyle() | ||||
|     }.width("100%") | ||||
|  | ||||
| @ -1,7 +1,9 @@ | ||||
| import TopLogo from './compontents/TopLogo'; | ||||
| import router from '@ohos.router'; | ||||
| import { MASYSTEMPARMType, RouteParamsType } from '../model'; | ||||
| import { GetSyncData } from '../utils/table/Operation'; | ||||
| import { dConsole } from '../utils/LogWorker'; | ||||
| import { RoadsTag } from '../config'; | ||||
| import HeaderComponent from './compontents/Header'; | ||||
| 
 | ||||
| const cBg = $rawfile('judge/km3/road/luxian_pre.png'); | ||||
| const lBg = $rawfile('judge/km3/road/luxian_nor.png'); | ||||
| @ -10,22 +12,37 @@ const lBg = $rawfile('judge/km3/road/luxian_nor.png'); | ||||
| @Entry | ||||
| @Component | ||||
| struct RoadsPage { | ||||
|   @State outFlag: boolean = false; | ||||
|   @State roadObj: number[] = []; | ||||
| 
 | ||||
|   async aboutToAppear() { | ||||
|     //读取systemparam表的no1等于4的 | ||||
|     const systemParms: Array<MASYSTEMPARMType> = await GetSyncData('MA_SYSTEMPARM') as MASYSTEMPARMType[]; | ||||
|     dConsole.log(RoadsTag, systemParms) | ||||
|     systemParms.forEach((systemParm: MASYSTEMPARMType) => { | ||||
|       if (systemParm.no1 == 4) { | ||||
|       if (systemParm.no1.toString() === "4") { | ||||
|         this.roadObj.push(systemParm.no2) | ||||
|       } | ||||
|     }) | ||||
|   } | ||||
| 
 | ||||
|   goJudge(wayno: number) { | ||||
|     let currentParams: RouteParamsType = router.getParams() as RouteParamsType; | ||||
|     router.replaceUrl({ | ||||
|       url: 'pages/Judge', | ||||
|       params: { | ||||
|         sczb: currentParams.sczb, | ||||
|         kfdm: currentParams.kfdm, | ||||
|         wayno, | ||||
|       } | ||||
|     }, router.RouterMode.Single); | ||||
|   } | ||||
| 
 | ||||
|   build() { | ||||
|     Column() { | ||||
|       TopLogo({ outFlag: $outFlag }) | ||||
|       HeaderComponent({ | ||||
|         shortLogo: true, | ||||
|         shouBackArea: true | ||||
|       }) | ||||
|       Flex({ wrap: FlexWrap.Wrap, direction: FlexDirection.Row, justifyContent: FlexAlign.Start }) { | ||||
|         List({}) { | ||||
|           ListItem() { | ||||
| @ -79,18 +96,5 @@ struct RoadsPage { | ||||
|     }.width('100%') | ||||
|     .height('100%') | ||||
|     .backgroundColor('#1A1A1A') | ||||
| 
 | ||||
|   } | ||||
| 
 | ||||
|   goJudge(wayno: number) { | ||||
|     let currentParams: RouteParamsType = router.getParams() as RouteParamsType; | ||||
|     router.replaceUrl({ | ||||
|       url: 'pages/Judge', | ||||
|       params: { | ||||
|         sczb: currentParams.sczb, | ||||
|         kfdm: currentParams.kfdm, | ||||
|         wayno, | ||||
|       } | ||||
|     }, router.RouterMode.Single); | ||||
|   } | ||||
| } | ||||
							
								
								
									
										38
									
								
								entry/src/main/ets/pages/compontents/Loading.ets
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										38
									
								
								entry/src/main/ets/pages/compontents/Loading.ets
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,38 @@ | ||||
| @CustomDialog | ||||
| export default struct LoadingComponent { | ||||
|   @Prop text: string = "" | ||||
|   @State angle: number = 0 | ||||
|   private controller?: CustomDialogController; | ||||
| 
 | ||||
|   aboutToAppear(): void { | ||||
|     // loading旋转动画 | ||||
|     animateTo({ | ||||
|       duration: 1500, | ||||
|       curve: Curve.Linear, | ||||
|       iterations: -1, | ||||
|       playMode: PlayMode.Normal, | ||||
|     }, () => { | ||||
|       this.angle += 360 | ||||
|     }) | ||||
|   } | ||||
| 
 | ||||
|   build() { | ||||
|     Column() { | ||||
|       Image($r('app.media.open_loading')) | ||||
|         .width(300) | ||||
|         .height(300) | ||||
|         .rotate({ | ||||
|           angle: this.angle, | ||||
|         }) | ||||
|       Text(this.text).fontSize(30).fontColor("#F4B44C").margin({ | ||||
|         top: 20 | ||||
|       }) | ||||
|     } | ||||
|     .width(500) | ||||
|     .height(500) | ||||
|     .justifyContent(FlexAlign.Center) | ||||
|     .alignItems(HorizontalAlign.Center) | ||||
|     .backgroundColor("#fff") | ||||
|     .borderRadius(20) | ||||
|   } | ||||
| } | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user