HarmonyOS实现登录页面

1、新建登录页面Login.ets

ps: 选择Page!!! 请注意 这类不要选择ArkTsFile  因为你的登录页面是需要显示在页面的入口文件(这类的入口文件并不是前一章说的index.ets的项目入口文件  这个入口文件是....自己理解吧) 如果你创建的页面是个组件(那就可以直接选择ArkTsFile)如果你不小心选择了ArkTsFile 就在下图吧你的页面路径加进去

2、代码

import { GetToken } from  '../api/passport/index'
import router from '@ohos.router'
@Entry
@Component
struct Login {
  // 选择的登录类型
  @State loginType: number = 0
  // 输入的手机号
  @State userPhone: string = ''
  // 输入的密码
  @State userPassWord: string = ''
  // 点击登录的回调
  private loginUser = async () => {
    if (!this.userPhone || !this.userPassWord) {
      // 弹框组件 自带的 不需要引入
      AlertDialog.show(
        {
          title: '温馨提示',
          message: '请输入手机号或者密码',
          autoCancel: true,
          alignment: DialogAlignment.Center,
          gridCount: 3,
          confirm: {
            value: '确认',
            action: () => {
              console.info('Button-clicking callback')
            }
          },
          cancel: () => {
            console.info('Closed callbacks')
          }
        }
      )
    } else {
      // 发送请求
      // const res = await GetToken('123')GetDict
      AppStorage.Set<string>('token', '')
      PersistentStorage.PersistProp('token', 'eyJhbGciOiJSUzI1NiIsImtpZCI6IjYwNDI2RUQ3MDhDRTdFNEEzRjY0MDE4Q0ZDREY1N0QyIiwidHlwIjoiYXQrand0In0.eyJpc3MiOiJodHRwczovL2FwaS1kZXYua2FuZ2Z4LmNvbS9wYXNzcG9ydCIsIm5iZiI6MTcwMzU4NTAwNywiaWF0IjoxNzAzNTg1MDA3LCJleHAiOjE3MDQ4ODEwMDcsImF1ZCI6WyJiZmYiLCJjYXJvdXNlbCIsImNsb3VkaW5mcmEiLCJjb21tdW5pdHkiLCJjb25zdWx0IiwiY29udGVudCIsImRpY3Rpb25hcnkiLCJnZW5lcmF0b3IiLCJpZGVudGl0eSIsImltdjIiLCJpb3RtYW5hZ2VyIiwibWVzc2FnZSIsIm9yZGVyIiwicmVjb3JkIiwicmVmZXJyYWwiLCJzYXRpc2ZhY3RvcnkiLCJzaG9wIiwic3VwZXJ2aXNpb24iLCJzdXBwb3J0IiwidGVuYW50LWhic3p5eSIsInRyYWluaW5nIiwidmlzaXQiLCJodHRwczovL2FwaS1kZXYua2FuZ2Z4LmNvbS9wYXNzcG9ydC9yZXNvdXJjZXMiXSwic2NvcGUiOlsiYmZmIiwiY2Fyb3VzZWwiLCJjbG91ZGluZnJhIiwiY29tbXVuaXR5IiwiY29uc3VsdCIsImNvbnRlbnQiLCJkaWN0aW9uYXJ5IiwiZ2VuZXJhdG9yIiwiaWRlbnRpdHkiLCJpbXYyIiwiaW90bWFuYWdlciIsIm1lc3NhZ2UiLCJvcGVuaWQiLCJvcmRlciIsInByb2ZpbGUiLCJyZWNvcmQiLCJyZWZlcnJhbCIsInNhdGlzZmFjdG9yeSIsInNob3AiLCJzdXBlcnZpc2lvbiIsInN1cHBsaWVyLWVicmFpbiIsInN1cHBvcnQiLCJ0ZW5hbnQtaGJzenl5IiwidHJhaW5pbmciLCJ2aXNpdCIsIm9mZmxpbmVfYWNjZXNzIl0sImFtciI6WyJwd2QiXSwiY2xpZW50X2lkIjoiUGxhdGZvcm1PZldlYiIsInN1YiI6ImVmM2NkMDQ3LWJlYTgtNGYzMS1hOTMwLWFjYzUwMTM0ZGU2ZiIsImF1dGhfdGltZSI6MTcwMzU4NTAwNywiaWRwIjoibG9jYWwiLCJnZW5kZXIiOiJcdTc1MzciLCJiaXJ0aGRhdGUiOiIiLCJwaWN0dXJlIjoiIiwidXNlcl9uYW1lIjoiYWRtaW4iLCJwaG9uZV9udW1iZXIiOiIxODIyNzYxNTY4MSIsIm5hbWUiOiJcdThEODVcdTdFQTdcdTdCQTFcdTc0MDZcdTU0NTgiLCJuaWNrbmFtZSI6IlVzZXJfVTgzVlJKRTMxIiwicm9sZSI6WyJzdXBlck9wZXJhdGUiLCJzdG9yYWdlIiwib3BlcmF0aW9ucyIsInByb21vdGVyIiwic2FsZXMiLCJhc3Npc3RhbnQiLCJmaW5hbmNlIiwiYXNzaXN0RG9jdG9yIiwic3VwZXJBZG1pbiJdLCJqdGkiOiIwODEwNzQ4QjIwMEVERDA4MkFDRjFFOUU1MTVDNURFNiJ9.YngHWl3qbi8TVhUqNSxbdqypVWYm0VZ7mxyQOgva549ztTcZqV9Q9_n0wQ3-Ey6JpTsc3EsGf0BiWGb5MOdYUg_5_Cp7L2d5B3h9E1NV7L4Ehs1595DTEHfDbFj0sXvvv77-5zp26AlivxA629k_bA4gwzszdaHkf4ktCb_IdUEObxocoe-WFxxMWcDKg1BuBb6sTSyC2HqkKi1UfGSP8-Py4Ejzk6ZK-BSinMfzI2OhjlDS0Y8vDLGadXmaDGWo_VGW58cO4M3uBS1dShhj80EMaGb7nzNv14Jj-8JSK70vsXHX3Ebw-1jC-CbAdPOtgj1pUMyqAi8-y_OeAcx4ow')
      router.replaceUrl({ url: 'pages/Home' })
    }
  }
  build() {
    // Column 列布局
    Column() {
      // Row 行布局
      Row() {
        // Text 文本组件
        Text('注册')
          .fontColor('#29B7A3')
          .fontSize(20)
      }
      .margin({
        top: 10
      })
      .alignSelf(ItemAlign.End)

      // Image 图片组件
      Image($r('app.media.logo'))
        .width(106)
        .height(106)
        .margin({
          top: 60,
          bottom: 10
        })
      Text('康复行')
        .fontSize(20)
        .fontColor('#333333')

      Row() {
        Column() {
          Text('密码登录')
            .fontColor('#333333')
            .fontWeight(this.loginType === 0 ? FontWeight.Bold : '')
            .fontSize(22)
          if (this.loginType === 0) {
            Row().width(40).backgroundColor('#29B7A3').height(5)
          }
        }
        .onClick(() => {
          this.loginType = 0
        })
        .margin({
          right: 60
        })

        Column() {
          Text('验证码登录')
            .fontColor('#333333')
            .fontWeight(this.loginType === 1 ? FontWeight.Bold : '')
            .fontSize(22)
          if (this.loginType === 1) {
            Row().width(40).backgroundColor('#29B7A3').height(5)
          }
        }
        .onClick(() => {
          this.loginType = 1
        })
      }
      .margin({
        top: 20
      })
      .alignItems(VerticalAlign.Top)

      Column({space: 10}) {
        // TextInput 输入框组件
        TextInput({ text: this.userPhone, placeholder: '请输入手机号'})
          .width('80%')
          .height(40)
          .type(InputType.PhoneNumber)
          .onChange((e) => { // 必须要写这个才能实现啊数据绑定
            this.userPhone = e
          })
        TextInput({ text: this.userPassWord, placeholder: '请输入密码'})
          .width('80%')
          .height(40)
          .type(InputType.Password)
          .onChange((e) => {
            this.userPassWord = e
          })
      }
      .margin({
        top: 30
      })

      Row() {
        Button('登录', { type: ButtonType.Normal, stateEffect: true })
          .borderRadius(8)
          .backgroundColor(0x317aff)
          .type(ButtonType.Capsule)
          .width('80%')
          .backgroundColor('#29B7A3')
          .onClick(this.loginUser)
      }
      .margin({
        top: 60
      })

      Blank()

      Row() {
        Text('我已阅读并同意')
        Text('用户协议').fontColor('#29B7A3')
          .decoration({
            type: TextDecorationType.Underline,
            color: '#29B7A3'
          })
      }

    }
    .padding(10)
    .width('100%')
    .height('100%')
  }
}

3、效果:

上一章: HarmonyOS初体验-CSDN博客

下一章: HarmonyOS发送请求-CSDN博客

  • 10
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

多喜乐 长安宁

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值