uniapp在中app,登录页能记住多个账号以及密码功能完整代码

如图所示👇:

1.可以选择下拉,选取曾经登录成功的账户👇

2.选择好下拉后自动赋值,账号密码。

3.勾选记住我则记住该账户以及密码

4.选择下拉后,点选删除账户,则删除

<template><view class="content"><view class="login-form"><uni-forms :modelValue="formData" label-width="0"><!-- 选择账户的下拉 --><uni-forms-item name="chooseAccount"><picker class="pickerClass" @change="selectAccount" :value="index" :range="savedAccounts"><view style="font-size:initial" v-if="index==-1">请选择曾用账户进行登录<uni-icons type="arrowdown" style="float: right;" color="#7e7d96ff" size="12"></uni-icons></view><view v-if="index!==-1">{{savedAccounts[index]}}</view></picker><view v-if="index!==-1" style="width: 10%;position: absolute;right: 0;top:0rpx"><uni-icons@click.native="clearAccount" type="clear" style="float: right;" color="#7e7d96ff" size="12"></uni-icons></view></uni-forms-item><!-- 姓名输入框 --><uni-forms-item name="username"><input type="text" v-model="formData.username" placeholder="请输入姓名" /></uni-forms-item><!-- 密码输入框 --><uni-forms-item name="password"><input type="password" v-model="formData.password" placeholder="请输入密码" /></uni-forms-item></uni-forms><uni-data-checkbox multiple v-model="formData.remember" :localdata="remember" /></view><view><button class="login-button" type="primary" @tap="bindLogin">立即登录</button><button class="login-button" type="primary" @tap="deleteAccount">删除账户</button></view></view>
</template><script>// import systemAPI from '../../service/systemAPI.js';//这里改成自己调登录接口// import localStorageTool from "../../utils/localStorageTool";import {mapMutations} from 'vuex'export default {data() {return {iconType: 'arrowdown', //默认下拉图标index: -1,savedAccountsAll: [// {// 	'username': "hehe",// 	'password': '123'// },// {// 	'username': "huhu",// 	'password': '234'// },],savedAccounts: [// "hehe", "huhu"],remember: [{"value": 1,"text": "记住我"}],formData: {username: '',password: '',}}},mounted() {const savedAccountsAll = uni.getStorageSync('savedAccountsAll');if (savedAccountsAll) {this.savedAccountsAll = savedAccountsAll;this.savedAccounts = savedAccountsAll.map(item => item.username)}},methods: {deleteAccount() {//删除当前下拉账户this.savedAccountsAll.splice(this.index, 1);//更新this.savedAccountsthis.savedAccounts = this.savedAccountsAll.map(item => item.username)// 更新本地存储uni.setStorageSync('savedAccountsAll', this.savedAccountsAll);// 清空选择的账号和图标为下拉this.index = -1;this.iconType = 'arrowdown'},clearAccount: function(e) {//重置下拉和用户密码this.index = -1this.formData.username = ''this.formData.password = ''},selectAccount: function(e) {//选择下拉,并为用户密码赋值this.index = e.detail.valuethis.formData.username = this.savedAccountsAll[this.index].usernamethis.formData.password = this.savedAccountsAll[this.index].password},// ...mapMutations(['saveToken']),bindLogin() {let self = thislet params = {username: self.formData.username,password: self.formData.password,serviceLocation: "cloud",}if (self.formData.username.length <= 0) {uni.showToast({icon: 'none',title: '请输入用户名'});return;}if (self.formData.password.length < 1) {uni.showToast({icon: 'none',title: '请输入密码'});return;}//这里改成自己调登录接口systemAPI.getLoginInfo(params).then(result => {if (result.data.code == 200) {try {//记住token// this.saveToken(result.data.data)setTimeout(function() {uni.switchTab({url: '/pages/main/main'})if (this.$store) {this.$store.commit('setType', "mainPage");}}, 500)} catch (e) {// errorconsole.log(e)}//判断用户是否要记住账户及密码if (self.formData.remember == 1) {//查看当前输入框种得账户是否存在于下拉得账户中const existingAccountIndex = this.savedAccountsAll.findIndex((account) => account.username === this.formData.username);if (existingAccountIndex !== -1) {//如果存在那么更新一下密码this.savedAccountsAll[existingAccountIndex].password = this.formData.password;} else {// 否则,保存当前输入的账号密码到数组this.savedAccountsAll.push({username: this.formData.username,password: this.formData.password,});}// 保存数组到本地存储uni.setStorageSync('savedAccounts', this.savedAccountsAll);}} else {uni.showToast({icon: 'none',title: '用户账号或密码不正确',});}}).catch(err => {console.log(err)uni.showToast({icon: 'none',title: '用户账号或密码不正确',});});}}}
</script><style scoped>/* base */page {height: 100vh;overflow: hidden;}.pickerClass {/* background-color: red; */height: 100%;width: 90%;color: #b3b3b3;/* font-size: 30rpx; */}.content {height: 100vh;/* background: url('@/static/img/top.jpg') no-repeat; */background-position: bottom center;background-size: 100% 40%;}.login-form {margin-top: 5%;height: 30%;/* background-color: pink; */}/deep/.uni-forms-item__content {border-bottom: 1rpx solid #dddddd;}/deep/.uni-input-placeholder {color: #b3b3b3;/* font-size: 30rpx; */}/deep/.uni-data-checklist .checklist-group .checklist-box.is--default.is-checked .checkbox__inner{border-color: black;background: white;}/deep/.uni-data-checklist .checklist-group .checklist-box .checkbox__inner {background-color: white;border-color: black;}/deep/.uni-data-checklist .checklist-group .checklist-box .checkbox__inner .checkbox__inner-icon {border-right-color: black;border-bottom-color: black;}/deep/.uni-data-checklist .checklist-group .checklist-box.is--default.is-checked .checklist-text {color: black;}.login-button {margin-top: 5%;width: 90%;margin-left: 5%;height: 100rpx;background: #5861d0;box-shadow: 0px 0px 12px #5861d0;border-radius: 60rpx;text-align: center;line-height: 100rpx;font-weight: 500;color: #ffffff;font-size: 35rpx;}
</style>

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

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

相关文章

【数据结构和算法】找到最高海拔

其他系列文章导航 Java基础合集数据结构与算法合集 设计模式合集 多线程合集 分布式合集 ES合集 文章目录 其他系列文章导航 文章目录 前言 一、题目描述 二、题解 2.1 前缀和的解题模板 2.1.1 最长递增子序列长度 2.1.2 寻找数组中第 k 大的元素 2.1.3 最长公共子序列…

设计模式 建造者模式 与 Spring Bean建造者 BeanDefinitionBuilder 源码与应用

建造者模式 定义: 将一个复杂对象的构建与它的表示分离&#xff0c;使得同样的构建过程可以创建不同的表示主要作用: 在用户不知道对象的建造过程和细节的情况下就可以直接创建复杂的对象如何使用: 用户只需要给出指定复杂对象的类型和内容, 建造者模式负责按顺序创建复杂对象…

ZooKeeper Client API 安装及使用指北

下载 wget https://archive.apache.org/dist/zookeeper/zookeeper-3.5.4-beta/zookeeper-3.5.4-beta.tar.gz解压 tar -zxf zookeeper-3.5.4-beta.tar.gz安装 cd zookeeper-3.5.4-beta/src/c/ ./configure make sudo make install到 make 这一步大概率会出现报错&#xff1a;…

几种串口扩展电路

一、IIC串口扩展电路 LCT200 是一款可以通过 I2C 接口通讯&#xff0c;拓展 2 路独立串口的通讯芯片&#xff0c;同时也支持通过 2 路串口读写 I2C 接口的数据。LCT200 的封装为 TSSOP-20。 主要功能&#xff1a;⚫ 通过对 I2C 接口读写实现拓展 2 路独立串口功能 ⚫ 通过读写…

计算机毕业设计 基于SpringBoot的高校宣讲会管理系统的设计与实现 Java实战项目 附源码+文档+视频讲解

博主介绍&#xff1a;✌从事软件开发10年之余&#xff0c;专注于Java技术领域、Python人工智能及数据挖掘、小程序项目开发和Android项目开发等。CSDN、掘金、华为云、InfoQ、阿里云等平台优质作者✌ &#x1f345;文末获取源码联系&#x1f345; &#x1f447;&#x1f3fb; 精…

手把手从0开始SpringBoot多模块项目搭建

最近起个小项目&#xff0c;用多模块搭建一下&#xff0c;顺便记录分享 1.创建父工程 通过Spring Lnitalizer创建&#xff0c; 我这里使用的是 springboot 2.7.3 jdk11 创建好后删除刚创建工程里不需要的文件&#xff0c; 只保留&#xff1a;.idea 文件夹 、项目 pom 文件、…

微服务概念

1.什么是微服务&#xff1f; 顾名思义&#xff0c;是一个微小的服务&#xff0c;为什么会说是“ 微 ” 呢&#xff1f; 意思整个服务的是比较微小的&#xff0c;是一个独立的业务模块&#xff0c;专做改业务的事情&#xff0c;是一个独立的功能单元。 一种独特的架构设计模式&…

【python】python课设 天气预测数据分析及可视化(完整源码)

目录 1. 前言2. 项目结构3. 详细介绍3.1 main.py3.2 GetModel.py3.3 GetData.py3.4 ProcessData.py3.5天气网.html 4. 成果展示 1. 前言 本文介绍了天气预测数据分析及可视化的实现过程使用joblib导入模型和自定义模块GetModel获取模型&#xff0c;输出模型的MAE。使用pyechart…

Java基于TCP网络编程的群聊功能

服务端 import java.net.ServerSocket; import java.net.Socket; import java.util.ArrayList; import java.util.List;public class Server2 {public static List<Socket> onlineList new ArrayList<>();public static void main(String[] args) throws Except…

格密码:傅里叶矩阵

目录 一. 铺垫性介绍 1.1 傅里叶级数 1.2 傅里叶矩阵的来源 二. 格基与傅里叶矩阵 2.1 傅里叶矩阵详细解释 2.2 格基与傅里叶矩阵 写在前面&#xff1a;有关傅里叶变换的解释太多了&#xff0c;这篇博客主要总结傅里叶矩阵在格密码中的运用。对于有一定傅里叶变换基础的同…

Android/iOS APP备案流程指南

Android/iOS APP备案流程指南 摘要 本文通过详细介绍了工信部对移动互联网应用程序&#xff08;APP&#xff09;备案的要求&#xff0c;解释了APP备案的定义、时间节点、办理流程以及腾讯云、阿里云的备案流程&#xff0c;最后提供了常见问题的解答。 引言 随着移动互联网的…

Benchmarking Denoising Algorithms with Real Photographs_CVPR2017

Abstract 1、在过往研究中&#xff0c;图像去噪算法缺少无噪声的真值&#xff0c;而人为构建的噪声模型不真实&#xff0c;效果不好。 2、作者的思路&#xff1a;构建有噪图&对应的无噪图的成对真实数据集。 Amber&#xff1a;这是很硬核的做实事的思路&#xff0c;实现过…

AI模型私人订制

使用AI可以把你的脸换成明星的脸&#xff0c;可以用于直播、录播。 ai换脸 也可以把视频中明星的脸换成你的脸 1074 之所以能够替换成功&#xff0c;是因为我们有一个AI人物模型&#xff0c;AI驱动这个模型就可以在录制视频的时候替换指定人物的脸。AI模型从哪里来&#xf…

开发辅助一(网关gateway+ThreadLocal封装用户信息+远程调用+读取配置文件+统一异常处理)

网关gateway模块 ①、配置文件&#xff0c;添加各个服务模块的路由路径 gateway:routes:-id: server-cart #微服务名称uri: lb://service-cart #负责均衡predicates:- Path/api/order/cart/**ThreadLocal ①、定义一个工具类 public class AuthContextUtil{private static…

飞天使-k8s知识点7-kubernetes升级

文章目录 验证新版本有没有问题需要安装的版本微微 1.20.6.0kubeadm upgrade plan 验证新版本有没有问题 查看可用版本的包 现有的状态 查看版本 yum list kubeadm --showduplicates |grep 1.20 yum list kubelet --showduplicates |grep 1.20 yum list kubectl --showduplic…

基于机器学习算法的数据分析师薪资预测模型优化研究(文末送书)

&#x1f935;‍♂️ 个人主页&#xff1a;艾派森的个人主页 ✍&#x1f3fb;作者简介&#xff1a;Python学习者 &#x1f40b; 希望大家多多支持&#xff0c;我们一起进步&#xff01;&#x1f604; 如果文章对你有帮助的话&#xff0c; 欢迎评论 &#x1f4ac;点赞&#x1f4…

Docker容器的可视化管理工具—DockerUI本地部署与远程访问

文章目录 前言1. 安装部署DockerUI2. 安装cpolar内网穿透3. 配置DockerUI公网访问地址4. 公网远程访问DockerUI5. 固定DockerUI公网地址 前言 DockerUI是一个docker容器镜像的可视化图形化管理工具。DockerUI可以用来轻松构建、管理和维护docker环境。它是完全开源且免费的。基…

【easy-ES使用】1.基础操作:增删改查、批量操作、分词查询、聚合处理。

easy-es、elasticsearch、分词器 与springboot 结合的代码我这里就不放了&#xff0c;我这里直接是使用代码。 基础准备&#xff1a; 创建实体类&#xff1a; Data // 索引名 IndexName("test_jc") public class TestJcES {// id注解IndexId(type IdType.CUSTOMI…

云上安全责任共担模型

对于传统自建物理服务器模式&#xff0c;用户需要承担所有的安全责任&#xff0c;负责从物理基础设施到上层应用的所有层面的安全体系构建。 云服务器的安全责任确实与物理服务器不同&#xff0c;云上的安全性是一种责任共担模式&#xff0c;其中云服务器ECS的安全责任需要你&…

关于“Python”的核心知识点整理大全39

目录 ​编辑 14.1.5 将 Play 按钮切换到非活动状态 game_functions.py 14.1.6 隐藏光标 game_functions.py game_functions.py 14.2 提高等级 14.2.1 修改速度设置 settings.py settings.py settings.py game_functions.py 14.2.2 重置速度 game_functions.py 1…