鸿蒙Harmony应用开发,数据驾驶舱登录页面的实现

embedded/2024/9/24 22:45:11/

鸿蒙Harmony应用开发,数据驾驶舱登录页面的实现

​ 首先我们有个Splash 过渡页面来判断当前是用户是否登录,我们先从preferences中获取token是否存在。如果不存在直接跳转登录即可,如果存在的情况我们再去获取下用户的信息看看token是否过期.

//Todo  先判断Token是否为空,为空登录 如果不是拿token获取用户信息
UserLoginHelper.getUserToken().then(token => {if (token && typeof token === 'string') {//判断token是否失效UserInfoViewModel.getUserInfo((result) => {hideLoadingDialog()LogUtils.error("SplashPage", "当前登录信息为:\n" + JSON.stringify(result))if (result.data as UserInfoModel) {showToast("获取用户信息成功--->---" + result.data.employeeName + "----" + result.data.username)setTimeout(() => {router.replaceUrl({ url: RoutePath.CockpitPage })}, 2000)} else {LogUtils.error("SplashPage", "Token失效跳转登录.....")router.replaceUrl({ url: RoutePath.LoginPage })}})} else {LogUtils.error("SplashPage", "未获取到Token跳转登录.....")hideLoadingDialog()router.replaceUrl({ url: RoutePath.LoginPage })}
  • 登录的页面实现

    登录页面的UI 很简单2个TextInput,用来输入账号密码,在Button的点击事件中获取TextInput的值作为请求参数

1.获取token

基于前面介绍的网络请求的封装基础之上,我们创建一个 pwdLogin的function,function中将返回一个LoginDataModel的result.

export function pwdLogin(userName: string = "", password: string) {return axiosPolarClient.post<LoginDataModel>({url: baseUrl + "/login",data: { "userName": userName, "password": password },showLoading: true,isLoginState: true,headers: commonHeader});
}

在LoginViewModel中创建一个doLogin供LoginPage页面调用

async doLogin(account: string, pwd: string, resultCallback?: ResultCallback<LoginDataModel>) {LogUtils.debug('开始doLogin..网络请求:');await this.httpRequest(false).promise(pwdLogin(account, pwd), true).then((result) => {resultCallback?.(result)})
}

在LoginPage页面中doLogin的回调中在调用UserInfoViewModel的getUserInfo

async getUserInfo(resultCallback?: ResultCallback<BaseEntityModel<UserInfoModel>>) {await this.httpRequest(false).promise(getLoginUser(), true).then((result) => {resultCallback?.(result)})
}

完整的调用实现如下:

  Button('登录').width('90%').backgroundColor(0x165dff).opacity(this.account == '' || this.password == '' ? 0.5 : 1).onClick(() => {if (this.account == '' || this.password == '') {showToast("请输入账号或密码")return;}showLoadingDialog("登录中...")if (this.password && this.account) {// LogUtils.debug('点击登录');let enPwd: string = createEncryPt(this.password);LoginViewModel.doLogin(this.account, enPwd/*,VITE_APP_PWD*/, (result) => {hideLoadingDialog()if (result.code == 200) {StorageUtils.put(AUTHORIZATION, result.data)UserInfoViewModel.getUserInfo((result) => {if (result != null) {showToast("登录成功")setTimeout(() => {showToast("登录成功");router.replaceUrl({ url: RoutePath.CockpitPage });}, 0);StorageUtils.put(USERINFO, JSON.stringify(result))} else {showToast("登录失败" + result)}})} else {showToast("登录失败," + result.msg)}})} else {// hideLoadingDialog()showToast("账号密码不能为空")}}).margin({ top: 30 })
}

完整项目下载地址


http://www.ppmy.cn/embedded/116308.html

相关文章

二二复制模式小程序商城开发

二二复制模式系统开发是一个涉及多个方面和阶段的复杂过程&#xff0c;主要包括需求分析、设计、编码、测试、部署以及后续的维护和优化。以下是对二二复制模式系统开发过程的详细解析&#xff1a; 一、需求分析 明确目标&#xff1a;与业务团队深入沟通&#xff0c;明确系统的…

pvesm 命令:PVE存储管理

一、命令简介 ​pvesm​ 命令用于管理 Proxmox VE 存储。它允许你列出、创建、删除、修改存储&#xff0c;以及执行其他存储管理任务。 支持管理&#xff1a;存储卷&#xff08;存储池和卷组&#xff09;、磁盘镜像、ISO 和容器模板等虚拟机和容器的存储资源。 支持存储&…

node.js + vue

安装Node.js和vue-cli 参考https://mp.csdn.net/mp_blog/creation/editor/142427043 生成Vue demo和编译Vue来生成静态文件&#xff08;包括index.html&#xff0c;js文件等等&#xff09; 参考https://mp.csdn.net/mp_blog/creation/editor/142427043 生成一个nodejs serve…

【30天玩转python】高级面向对象编程

高级面向对象编程 面向对象编程&#xff08;Object-Oriented Programming&#xff0c;简称 OOP&#xff09;是 Python 的核心编程范式之一。Python 不仅支持基础的面向对象特性&#xff0c;如类和对象&#xff0c;还支持更高级的特性&#xff0c;如继承、多态、封装、抽象以及…

Python Web 中间件开发与优化指南

&#x1f4d8;Python Web 中间件开发与优化指南 目录 &#x1f4a1; 中间件的概念与作用&#x1f527; Flask 和 Django 中间件的使用&#x1f6e0; 编写自定义中间件&#xff1a;拦截请求与响应&#x1f50d; 实现常见功能&#xff1a;认证、日志记录、CORS 处理&#x1f68…

JavaScript --json格式字符串和对象的转化

json字符串解析成对象 &#xff1a; var obj JSON.parse(str) 对象转化成字符串&#xff1a;var str1 JSON.stringify(obj1) <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta http-equiv"X-UA-Com…

华为OD机试真题-TLV解码-2024年OD统一考试(E卷)

最新华为OD机试考点合集:华为OD机试2024年真题题库(E卷+D卷+C卷)_华为od机试题库-CSDN博客 题目描述 TLVQ编码是按 ITag Length value 格式进行编码的,一段码流中的信元用 Tag 标识,Tag 在码流中唯一不重复,Lengt 表示信元Value的长度,Value 表示信元的值。 码流以…

POI操作EXCEL插入图片

文章目录 POI操作EXCEL插入图片 POI操作EXCEL插入图片 依赖 <dependency><groupId>org.apache.poi</groupId><artifactId>poi</artifactId><version>4.1.2</version> </dependency> <dependency><groupId>org.a…