vue3:十六、个人中心-修改密码

一、页面效果

页面展示当前用户名(只读),展示需要输入的当前密码,输入新的密码以及确认密码的提交表单

二、初始建立

1、建立密码修改页面

在个人中心文件夹中写入新页面UpdatepwdView.vue

2、新建路由

在路由页面中写入修改密码页面

3、新建菜单

在菜单布局菜单页面中写入修改密码的子菜单

三、添加apifox接口

1、新建接口

这里新建接口/updatepwd/edit,需要传递参数旧密码oldpwd,新密码newpwd,传递旧密码是为了判断旧密码是否是用户对应的旧密码

2、新建期望

新建两个期望,主要是测试旧密码是否和账户对应的密码一致

四、创建修改密码页面

1、视图层

视图层中首先定义一个卡片div,然后在定义一个专门存储表单的div,并写入表单以及参数

  • ref="formRef":用于和表单子组件通信
  • :formData="formData":表单数据
  • :submitUrl="submitUrl":表单提交执行的接口方法

2、样式层

设置边距,宽度,对齐方式,对齐等样式

3、定义表单提交接口

直接定义变量submitUrl,其值为开始apifox新建接口

//重置密码的后端接口
const submitUrl = "/updatepwd/edit"

4、 密码规则封装到工具函数

(1)工具类函数定义密码规则

(2) 将涉及到的页面的密码规则更改为封装的变量

①忘记密码页面ForgetPwd.vue

引入方法

注释之前的规则定义

②登录页面LoginView.vue

引入方法

注释之前的规则定义,并更换为引入的变量

5、修改密码页面引入方法

  • 引入vue的方法reactive,ref
  • 引入表单Form
  • 引入获取账户信息的userStore
  • 引入封装的密码规则psdrule

6、定义必要变量并写入表单数据

  • 定义用户信息:userstore
  • 定义formRef:为了获取表单组件的数据:为了获取输入的新密码并判断新密码和再次输入的新密码是否一致
  • 将获取的密码规则psdrule分别写入到每一个密码文本框
  • 表单数据包含用户名(只读,其值为获取的账户信息),当前密码oldpwd(类型为password),新密码newpwd(类型为password),确认密码surepwd(类型为password,并需要判断两次输入的密码是否一致)

7、表单中写入默认数据

在表单中,初始进入时,将获取的数据写入到表单中(主要写入用户名信息)

8、表单中写入密码框

如果类型是password时,就显示为密码框

9、表单组件将组件内容暴露给父页面

只有将组件内容暴露给父页面,父页面才能获取需要得到的首次输入的新密码

五、完整代码 

1、修改密码页面

src/views/PersonalCenter/UpdatepwdView.vue

<template><div class="card updatepwd_main flex flex-center"><div class="updatepwd_content"><Form ref="formRef" :formData="formData" :submitUrl="submitUrl"></Form></div></div>
</template>
<script setup>
import { reactive,ref } from "vue";
import Form from "@/components/Form.vue";
import { userStore } from "@/stores/user";
import { psdrule } from '@/utils/tool';const userstore = userStore();
const formRef = ref()
//表单数据
const formData = reactive([{label: "用户名",field: "username",readonly: true,value: userstore.username},{label: "当前密码",field: "oldpwd",placeholder: "请输入旧密码",type: "password",rules: psdrule},{label: "新密码",field: "newpwd",placeholder: "请输入新密码",type: "password",rules: psdrule},{label: "确认密码",field: "surepwd",placeholder: "请输入密码",type: "password",rules: [...psdrule,{validator: (rule, value, callback) =>{//如果这里输入的密码和子表单中的输入的新密码不一致if(value != formRef.value.ruleForm.newpwd){callback(new Error("两次输入密码不一致"))}else{callback()}},trigger: "blur"}]},
])
//重置密码的后端接口
const submitUrl = "/updatepwd/edit"
</script>
<style>
.updatepwd_main {margin: 15px 10px;
}.updatepwd_content {width: 70%;
}/* 提交按钮居中 */
.updatepwd_main .el-form-item__content {display: flex;justify-content: center;align-items: center;
}/* 标题 */
.updatepwd_main .el-form-item__label {width: 100px;text-align: right;/* 右对齐 */
}
</style>

2、路由

src/router/index.js

import { createRouter, createWebHistory } from 'vue-router'
import { getToken, setToken, delToken } from '@/utils/token';
import { userStore } from '@/stores/user'
import { getuserinfo } from '@/api/user';
// 引入路由
const router = createRouter({history: createWebHistory(import.meta.env.BASE_URL),routes: [//将子项全部存入一个大的路由中layout/index.vue,页面刚进入时调用的时layout/index.vue,在为导航条,默认显示页面/home的内容{path: '/',name: 'main',component: () => import('@/layout/index.vue'),redirect: '/dashboard',children: [{path: '/dashboard',name: 'dashboard',component: () => import('@/views/DashboardView.vue'),},{path: '/category',name: 'category',component: () => import('@/views/CategoryView.vue')},{path: '/role',name: 'role',component: () => import('@/views/RoleView.vue')},

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

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

相关文章

GitFlow 工作模式(详解)

今天再学项目的过程中遇到使用gitflow模式管理代码&#xff0c;因此进行学习并且发布关于gitflow的一些思考 Git与GitFlow模式 我们在写代码的时候通常会进行网上保存&#xff0c;无论是github还是gittee&#xff0c;都是一种基于git去保存代码的形式&#xff0c;这样保存代码…

【Vue3】(三)vue3中的pinia状态管理、组件通信

目录 一、vue3的pinia 二、【props】传参 三、【自定义事件】传参 四、【mitt】传参 五、【v-model】传参&#xff08;平常基本不写&#xff09; 六、【$attrs】传参 七、【$refs和$parent】传参 八、provide和inject 一、vue3的pinia 1、什么是pinia&#xff1f; pinia …

【DAY43】复习日

内容来自浙大疏锦行python打卡训练营 浙大疏锦行 作业&#xff1a; kaggle找到一个图像数据集&#xff0c;用cnn网络进行训练并且用grad-cam做可视化 进阶&#xff1a;并拆分成多个文件

xtp+ctp 交易系统接口简介

CTP&#xff08;上海期货交易所综合交易平台&#xff09;和 XTP&#xff08;中泰证券极速交易平台&#xff09;是中国金融市场中两个重要的证券期货交易系统&#xff0c;它们在定位、架构和应用场景上有显著区别&#xff1a; 1. 开发主体与服务领域 维度CTPXTP开发公司上海期货…

阿里云Alibaba Cloud安装Docker与Docker compose【图文教程】

个人记录 进入控制台&#xff0c;找到定时与自动化任务 进入‘安装/卸载扩展程序’ 点击‘安装扩展程序’ 选择docker社区版&#xff0c;点击下一步与确定&#xff0c;等待一会 安装成功 查询版本 查询docker sudo docker version查询docker compose sudo docker compo…

非Root用户启动SSH服务经验小结

各位看官&#xff0c;小子我先问个问题&#xff1a;是不是经常在容器里想开个SSH&#xff0c;却发现自己不是root&#xff0c;处处碰壁&#xff1f;这是常态。多数容器镜像精简到连SSH服务都没有&#xff0c;就算有&#xff0c;咱们普通用户也没权限启动它。 今天小子就介绍一…

Windows开机自动启动中间件

WinSW&#xff08;Windows Service Wrapper 是一个开源的 Windows 服务包装器&#xff0c;它可以帮助你将应用程序打包成系统服务&#xff0c;并实现开机自启动的功能。 一、下载 WinSW 下载 WinSW-x64.exe v2.12.0 (⬇️ 更多版本下载) 和 sample-minimal.xml 二、配置 WinS…

【CATIA的二次开发23】抽象对象Document涉及文档激活控制的方法

在CATIA VBA开发中,Document对象是最核心、最基础的对象之一。它代表了当前在CATIA会话中打开的一个文档(文件)。 几乎所有与文件操作、模型访问相关的操作都始于获取一个Document对象。Document对象包含多种方法和属性,以下介绍Document对象方法和属性 一、Document对象方…

基于多维视角的大模型提升认知医疗过程层次激励编程分析

系统架构设计 #mermaid-svg-k3W5lvie1sP3T956 {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-k3W5lvie1sP3T956 .error-icon{fill:#552222;}#mermaid-svg-k3W5lvie1sP3T956 .error-text{fill:#552222;stroke:#55222…

【评测】Qwen3-Embedding模型初体验

回到目录 【评测】Qwen3-Embedding模型初体验 模型的介绍页面 0.6B运行配置&#xff1a;笔记本i5-8265U&#xff0c;16G内存&#xff0c;无GPU核显运行&#xff0c;win10操作系统 8B运行配置&#xff1a;AMD8700G&#xff0c;64G内存&#xff0c;4090D 24G显存&#xff0c;ub…

MPLAB X IDE ​软件安装与卸载

1、下载MPLAB X IDE V6.25 MPLAB X IDE | Microchip Technology 正常选Windows&#xff0c;点击Download&#xff0c;等待自动下载完成&#xff1b; MPLAB X IDE 一台电脑上可以安装多个版本&#xff1b; 2、安装MPLAB X IDE V6.25 右键以管理员运行&#xff1b;next; 勾选 I a…

PLC入门【2】PLC的接线

02 PLC的接线 PLC 的品牌介绍&#xff0c;PLC的接线 1、PLC 大体分为欧式和日式 2、只要学会三菱的&#xff0c;整个日式的也差不多会了。 3、PLC 分为晶体管输出和继电器输出。 4、PLC 接线都差不多的 我们主要是讲这个三菱的 PLC&#xff0c; 三菱和台达的 PLC&#xff0c;…

Hibernate Validator 数据验证

Hibernate Validator不仅可以用于Controller层的参数验证&#xff0c;还可以在Service层、Repository层或任何其他层中使用。 手动验证 在任何地方都可以通过Validator接口手动触发验证&#xff1a; public class ManualValidationExample {public void validateObject(Obje…

【深度学习】表示学习:深度学习的数据解构与重构艺术

作者选择了由 Ian Goodfellow、Yoshua Bengio 和 Aaron Courville 三位大佬撰写的《Deep Learning》(人工智能领域的经典教程&#xff0c;深度学习领域研究生必读教材),开始深度学习领域学习&#xff0c;深入全面的理解深度学习的理论知识。 之前的文章参考下面的链接&#xf…

如何在PowerBI中使用Analyze in Excel

如何在PowerBI中使用Analyze in Excel 之前分享过如何使用DAXStudio将PowerBI与Excel连接 &#xff0c;今天介绍另外一个工具&#xff0c;也可以实现同样的功能&#xff0c;Analyze in Excel。 使用Analyze in Excel 第一步&#xff1a; 首先准备好一个PBIX文件&#xff0c…

AI应用工程师面试

技术基础 简述人工智能、机器学习和深度学习之间的关系。 人工智能是一个广泛的概念,旨在让机器能够模拟人类的智能行为。机器学习是人工智能的一个子集,它专注于开发算法和模型,让计算机能够从数据中学习规律并进行预测。深度学习则是机器学习的一个分支,它利用深度神经网…

基于定制开发开源AI智能名片S2B2C商城小程序的首屏组件优化策略研究

摘要&#xff1a;在数字化转型背景下&#xff0c;用户对首屏交互效率的诉求日益提升。本文以"定制开发开源AI智能名片S2B2C商城小程序"为技术载体&#xff0c;结合用户行为数据与认知心理学原理&#xff0c;提出首屏组件动态布局模型。通过分析搜索栏、扫码入口、个人…

day50 随机函数与广播机制

目录 一、随机张量的生成 1.1 torch.randn() 函数 1.2 其他随机函数 1.3 输出维度测试 二、广播机制 2.1 广播机制的规则 2.2 加法的广播机制 二维张量与一维向量相加 三维张量与二维张量相加 二维张量与标量相加 高维张量与低维张量相加 2.3 乘法的广播机制 批量…

Java持久层技术对比:Hibernate、MyBatis与JPA的选择与应用

目录 简介持久层技术概述Hibernate详解MyBatis详解JPA详解技术选型对比最佳实践与应用场景性能优化策略未来发展趋势总结与建议 简介 在Java企业级应用开发中&#xff0c;持久层&#xff08;Persistence Layer&#xff09;作为连接业务逻辑与数据存储的桥梁&#xff0c;其技…

【2025CVPR】模型融合新范式:PLeaS算法详解(基于排列与最小二乘的模型合并技术)

本文深入解析ICLR 2025顶会论文《PLeaS: Merging Models with Permutations and Least Squares》,揭示模型融合领域突破性进展. 一、问题背景:模型合并的核心挑战 随着开源模型的爆发式增长,如何高效合并多个专用模型成为关键挑战。传统方法存在三大痛点: ​初始化依赖​…