uniapp登录逻辑

 1.登录页面实现

<template><view class="box"><view class="boxTop"><view class="title">欢迎登录</view><view class="topic">还没有账号,<span @click='getRegister'>立即注册</span></view></view><view class="padding-lr margin-top" style="padding-bottom: 100rpx; z-index: 0;"><u-form :model="loginForm" ref="uForm" class="loginForm"><u-form-item label="" prop="username" label-width='100'><u-input v-model="loginForm.username" placeholder="输入手机号"placeholder-style="fontSize: 30rpx; color: #999" :adjust-position="false"/></u-form-item><u-form-item label="" prop="password" label-width='100'><u-input v-model="loginForm.password" type="password" placeholder="输入密码"placeholder-style="fontSize: 30rpx; color: #999" :adjust-position="false"/></u-form-item></u-form><!-- <view class='margin-tb-xl text-sm'><u-checkbox v-model="isReady" shape="circle" size='36'></u-checkbox>已阅读并同意<text @click.stop="jump('agreement')" class='text-blue' >《服务协议》</text>和<text @click.stop="jump('policy')"  class='text-blue' >《隐私政策》</text></view> --><u-toast ref="uToast"/><u-button class="margin-top-xl" type="primary" shape="circle" style="width:100%; font-size: 34rpx;"@click="loginbtn">登录</u-button><view class="forgotClass" @click="forget">忘记密码</view><!-- <view class="otherwise"><view class="title">或通过以下方式登录</view><view class="" @click="loginByPhone('dx')"><image style="width: 88rpx;height: 88rpx;" src="@/static/login/duanx.png"></image><view class="text-gray" style="margin-top: 10rpx;">短信验证码</view></view></view> --></view></view>
</template>

2.script部分


<script>
import Base64 from 'base-64';export default {data() {return {smallScreen: false,loginForm: {username: '',password: '',},rules: {username: [{required: true,message: '请输入账号',trigger: ['change', 'blur']}],password: [{required: true,message: '请输入密码',trigger: 'change'}]},}},// watch: {// 	'loginForm.username': function(val, oldval) {// 		if (this.$u.test.mobile(val)) {// 			console.log('val', val)// 			// 校验当前用户名是否存在// 			// this.phoneIsExist(val);// 		}// 	}// },onReady() {this.$refs.uForm.setRules(this.rules);// let token = uni.getStorageSync('token');// console.log(token)// if(token){// 	uni.switchTab({// 		url: '/pages/index/index'// 	});// }},onLoad() {uni.getSystemInfo({success: res => {this.smallScreen = res.safeArea.height <= 530}});//手机号一键登录this.toUniverifyLogin()},mounted() {//页面加载完成,获取本地存储的账号及密码const userN = uni.getStorageSync('username'); //const userPwd = uni.getStorageSync('userPwd');if (userN && userPwd) {this.loginForm.username = userN;this.loginForm.password = userPwd;} else {this.loginForm.username = "";this.loginForm.password = "";}},computed: {loginSrc() {return '/static/login/loginbg.png';},title() {return 'uniapp';},projectId() {return this.$store.state.login.projectId}},methods: {// 一键登录toUniverifyLogin() {// #ifdef APP-PLUSconst _this = thisuni.preLogin({provider: 'univerify',success(res) {console.log(res);uni.login({provider: 'univerify',univerifyStyle: {fullScreen: true,icon: {path: 'static/logo.png'},phoneNum: {color: '#f00000' // 手机号文字颜色 默认值:#202020},authButton: {normalColor: '#2490fa',title: '本机号码一键登录',borderRadius: '24px'},privacyTerms: {termsColor: '#3479f5',privacyItems: [// 自定义协议条款,最大支持2个,需要同时设置url和title. 否则不生效{url: 'https://xxxx.xxxx.com/hybrid/html/agreement.html', // 点击跳转的协议详情页面title: '用户服务协议' // 协议名称},{url: 'https://xxxx.xxxx.com/hybrid/html/policy.html', // 点击跳转的协议详情页面title: '隐私政策' // 协议名称}]}},success(res) {console.log(res.authResult); // {openid:'登录授权唯一标识',access_token:'接口返回的 token'}uniCloud.callFunction({name: 'xxxx', // 你的云函数名称data: {access_token: res.authResult.access_token, // 客户端一键登录接口返回的access_tokenopenid: res.authResult.openid // 客户端一键登录接口返回的openid}}).then(res => {console.log('云函数返回的参数', res.result)const form = {phone: res.result.phoneNumber,type: '1',projectId:xx ,//登录项目id}_this.$store.dispatch('login/PhoneLogin', form).then(response => {console.log('登录信息', response);uni.showToast({icon: 'success',title: '登录成功'})// setTimeout(() => {//   uni.switchTab({//     url: '/pages/workSpace/main',//     success: function () {//       uni.closeAuthView()//     }//   })// }, 1000)}).catch(err => {console.log(err)uni.showToast({icon: 'error',title: '登录失败'})uni.closeAuthView()})}).catch(err => {console.log('云函数报错', err)uni.showToast({icon: 'error',title: err.errMsg})})},fail(res) {// 登录失败console.log(res.errCode);console.log(res.errMsg);uni.closeAuthView(); //关闭一键登录弹出窗口}});}});// #endif},forget() {// let _that = this;// _that.$refs.uToast.show({// 	title: '请联系管理员重置密码',// 	type: 'warning'// });uni.navigateTo({url: '/pages/login/forgotPassword'})},loginByPhone() {uni.navigateTo({url: '/pages/login/loginPhone'})},getRegister() {uni.navigateTo({url: '/pages/login/register'})},loginbtn() {// if(!this.isReady){//   	uni.showToast({//   		title: '请先勾选并同意用户协议',//   		duration: 2000,//   		icon: 'none'//   	})// 	return// }else{// console.log('同意用户登陆')this.$refs.uForm.validate(valid => {if (valid) {// let { username, password, projectId, captcha, checkKey } = this.loginFormlet enUsername = Base64.encode(this.loginForm.username)let enPassword = Base64.encode(this.loginForm.password)this.$store.dispatch('login/mLogin', {username: enUsername, password: enPassword, projectId: this.projectId})// if (this.savePass) { //用户勾选“记住密码”// 	console.log("记住密码")// 	uni.setStorageSync('username', this.loginForm.username);// 	uni.setStorageSync('userPwd', this.loginForm.password);// } else { //用户没有勾选“记住密码”// 	console.log("没有记住密码")// 	uni.removeStorageSync('username');// 	uni.removeStorageSync('userPwd');// 	this.loginForm.username = "";// 	this.loginForm.password = "";// }} else {uni.showToast({title: '账号/密码不能为空',duration: 2000,icon: 'none'})}})// }},}}
</script>

<style lang="scss">
// page {
// 	background-color: #fff;
// }
.box {.boxTop {padding: 100rpx 0 60rpx 40rpx;.title {font-weight: 600;font-size: 48rpx;}.topic {font-size: 30rpx;margin-top: 30rpx;span {color: #2490FA;}}}.forgotClass {margin-top: 24rpx;text-align: center;color: #2490FA;}.otherwise {margin-top: 180rpx;text-align: center;.title {margin-bottom: 50rpx;color: #11111166;}}
}
</style>

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/690889.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

已解决:IDEA中@Autowired自动注入MyBatis Mapper报红警告的几种解决方法

今天在使用 IDEA 使用 MyBatis 的时候遇到了这种情况&#xff1a; 可以看到 userMapper 下有个红色的波浪警告&#xff0c;虽然代码没有任何问题&#xff0c;能正常运行&#xff0c;但是这个红色警告在这里杵着确实让人很窝心。 于是我在网上找了找&#xff0c;最终明白了原因…

[杂记]mmdetection3.x中的数据流与基本流程详解(数据集读取, 数据增强, 训练)

之前跑了一下mmdetection 3.x自带的一些算法, 但是具体的代码细节总是看了就忘, 所以想做一些笔记, 方便初学者参考. 其实比较不能忍的是, 官网的文档还是空的… 这次想写其中的数据流是如何运作的, 包括从读取数据集的样本与真值, 到数据增强, 再到模型的forward当中. 0. MMDe…

AcuAutomate:一款基于Acunetix的大规模自动化渗透测试与漏洞扫描工具

关于AcuAutomate AcuAutomate是一款基于Acunetix的大规模自动化渗透测试与漏洞扫描工具&#xff0c;该工具旨在辅助研究人员执行大规模的渗透测试任务。 在大规模的安全测试活动中&#xff0c;AcuAutomate可以帮助我们同时启动或停止多个Acunetix扫描任务。除此之外&#xff…

docker的底层原理五: 控制组

概述&#xff1a;Docker 的控制组&#xff08;Control groups&#xff0c;简称 cgroups&#xff09;是 Linux 内核的一个功能&#xff0c;用于限制、控制和审计进程组所使用的物理资源。在 Docker 中&#xff0c;cgroups 用于确保容器只能使用分配给它们的资源&#xff0c;从而…

你知道Web框架有哪些吗?

Bootstrap Bootstrap 是由Twitter团队推出的开源前端框架&#xff0c;以HTML、CSS和JavaScript为基础&#xff0c;提供了一系列可复用的UI组件和强大的响应式布局系统。它易于上手&#xff0c;有助于开发者快速构建简洁、一致且移动友好的网站。 Foundation Foundation 同样是…

【鸿蒙系统学习笔记】状态管理

一、介绍 资料来自官网&#xff1a;文档中心 在声明式UI编程框架中&#xff0c;UI是程序状态的运行结果&#xff0c;用户构建了一个UI模型&#xff0c;其中应用的运行时的状态是参数。当参数改变时&#xff0c;UI作为返回结果&#xff0c;也将进行对应的改变。这些运行时的状…

【工作记录】基于docker+mysql部署单机版nacos2.0.4@20240219

Nacos介绍 Nacos 是阿里巴巴开源的一款集服务发现、配置管理和服务元数据管理于一身的中间件&#xff0c;主要用于构建云原生应用和微服务架构。Nacos 提供了一站式的解决方案&#xff0c;使得开发者能够更容易地实现服务治理和服务间的协作。 以下是 Nacos 主要功能特点&…

[AudioRecorder]iPhone苹果通话录音汉化破解版-使用巨魔安装-ios17绕道目前还不支持

首先你必须有巨魔才能使用&#xff01;&#xff01; 不会安装的&#xff0c;还没安装的移步这里&#xff0c;ios17 以上目前装不了&#xff0c;别看了&#xff1a;永久签名 | 网址分类目录 | 路灯iOS导航-苹果签名实用知识网址导航-各种iOS技巧-后厂村路灯 视频教程 【Audio…

头歌:共享单车之数据分析

第1关 统计共享单车每天的平均使用时间 package com.educoder.bigData.sharedbicycle;import java.io.IOException; import java.text.ParseException; import java.util.Collection; import java.util.Date; import java.util.HashMap; import java.util.Locale; import java…

科技云报道:云原生是大模型“降本增效”的解药吗?

科技云报道原创。 在过去一两年里&#xff0c;以GPT和Diffusion model为代表的大语言模型和生成式AI&#xff0c;将人们对AI的期待推向了一个新高峰&#xff0c;并吸引了千行百业尝试在业务中利用大模型。 国内各家大厂在大模型领域展开了激烈的军备竞赛&#xff0c;如&#…

HTTP 头部- Origin Referer

Origin & Referer Origin Header 示例 Origin 请求头部是一个 HTTP 头部&#xff0c;它提供了发起请求的网页的源&#xff08;协议、域名和端口&#xff09;信息。它通常在进行跨域资源共享&#xff08;CORS&#xff09;请求时使用&#xff0c;以便服务器可以决定是否接受…

Python set函数

在Python编程中&#xff0c;set()函数是一个重要且常用的内置函数&#xff0c;用于创建一个新的集合对象。集合是一种无序且不重复的数据类型&#xff0c;它可以用于存储唯一的元素。本文将深入探讨Python中的set()函数&#xff0c;包括基本用法、集合操作、实际应用场景&#…

PyCharm - Project Interpreter (项目解释器)

PyCharm - Project Interpreter [项目解释器] References File -> Settings… -> Project: -> Project Interpreter References [1] Yongqiang Cheng, https://yongqiang.blog.csdn.net/

Vue过滤器原理

Vue过滤器 什么是Vue过滤器定义Vue过滤器 组件的选项中定义本地的过滤器或者在创建 Vue 实例之前全局定义过滤器单个器原理串联过滤器过滤器参数接收 _f函数的原理 过滤器解析原理 总结&#xff1a; vue 过滤器原理 Vue过滤器 过滤器实质不改变原始数据&#xff0c;只是对数据…

基于数字双输入的超宽带Doherty功率放大器设计-从理论到ADS版图

基于数字双输入的超宽带Doherty功率放大器设计-从理论到ADS版图 参考论文: 高效连续型射频功率放大器研究 假期就要倒计时啦&#xff0c;估计是寒假假期的最后一个博客&#xff0c;希望各位龙年工作顺利&#xff0c;学业有成。 全部工程下载&#xff1a;基于数字双输入的超宽…

遇到问题(二) 中文乱码

例如这样&#xff1a; 原本是这样&#xff1a; 解决方法&#xff1a;点击扳手工具设置——Editor——Encoding——选chinese GB2312&#xff08;有的是UTF-8&#xff09;

LabVIEW高速信号测量与存储

LabVIEW高速信号测量与存储 介绍了LabVIEW开发的高速信号测量与存储系统&#xff0c;解决实验研究中信号捕获的速度和准确性问题。通过高效的数据处理和存储解决方案&#xff0c;本系统为用户提供了一种快速、可靠的信号测量方法。 项目背景 在科学研究和工业应用中&#xf…

数学能够及不能够有效表征人类智能中的部分

一、数学能够有效表征人类智能中的以下部分&#xff1a; 1、部分逻辑推理能力&#xff1a;数学涉及到推理、证明和解决问题的过程&#xff0c;这需要运用逻辑思维和推理能力。通过学习数学&#xff0c;人们能够培养自己的部分逻辑思维和推理能力&#xff0c;从而提高某些问题解…

Ubuntu18.04有线连接后,无法设置ip地址以及显示网口设置

前提&#xff1a;首先测试过网线是完全没问题的 桌面端找不到设置网口 终端输入&#xff1a; ifconfig 没有找到网口设置和对应IP 然后查询网口驱动是否正常安装&#xff0c;输入&#xff1a; lspci | grep Ethernet 有输出说明网口驱动正常安装 然后查询电脑的ip地址&am…

物流EDI:Verizon EDI 需求分析

作为物流行业的企业&#xff0c;Verizon与其供应商之间通过EDI来传输业务单据。在与Verizon建立EDI连接时&#xff0c;需要参考EDI 指南、采购订单条款和条件以及运输路线指南这三个文档。 点击此链接&#xff0c;获取上述的三个文档 Verizon供应商可以通过上述链接找到用于处…