Vue3管理系统开发个人信息,修改密码页面

news/2025/4/1 22:16:59/文章来源:https://www.cnblogs.com/shidawuyu/p/18801292

把默认路由先重定向到/login,用户每次启动项目重新登录

{path:'/',redirect:'/login'},

个人中心页面

子组件发送请求更新父组件内容

const emit =defineEmits(['updateUser'])
//更新缓存数据
localStorage.setItem('pro1-user',JSON.stringify(data.form))
emit('updateUser')

 父级

const updateUser = () => {data.user=JSON.parse(localStorage.getItem('pro1-user') || "{}")
}

个人信息页面

<template><div class="card" style="width: 50%; padding: 40px 20px"><el-form ref="formRef" :rules="data.rules" :model="data.form" label-width="80px" style="padding-right: 40px;padding-bottom: 20px"><el-form-item label="账号" prop="username"><el-input v-model="data.form.username" autocomplete="off" placeholder="请输入账号" /></el-form-item><el-form-item label="角色" prop="role"><el-input disabled v-model="data.form.role" autocomplete="off" placeholder="请输入角色" /></el-form-item><div v-if="data.user.role === '租客'"><el-form-item label="租客姓名"><el-input v-model="data.form.xingMing" autocomplete="off" placeholder="请输入租客姓名" /></el-form-item><el-form-item label="职业"><el-input v-model="data.form.zhiYe" autocomplete="off" placeholder="请输入租客职业" /></el-form-item><el-form-item label="性别"><el-radio-group v-model="data.form.xingBie"><el-radio value="男" label="男"></el-radio><el-radio value="女" label="女"></el-radio></el-radio-group></el-form-item><el-form-item label="手机"><el-input v-model="data.form.shouJi" autocomplete="off" placeholder="请输入联系方式" /></el-form-item><el-form-item label="身份证"><el-input v-model="data.form.shenFenZheng" autocomplete="off" placeholder="请输入身份证" /></el-form-item><el-form-item label="邮箱"><el-input v-model="data.form.youXiang" autocomplete="off" placeholder="请输入邮箱" /></el-form-item><el-form-item label="照片"><el-input v-model="data.form.zhaoPian" autocomplete="off" placeholder="请输入照片" /></el-form-item><el-form-item label="地址"><el-input v-model="data.form.diZhi" autocomplete="off" placeholder="请输入地址" /></el-form-item></div></el-form><div style="text-align: center"><el-button @click="updateUser" type="primary" style="padding: 20px 30px">更新个人信息</el-button></div></div>
</template>
<script setup>
import {reactive,ref} from "vue";
import request from "@/utils/request.js";
import {ElMessage} from "element-plus";
const formRef = ref()
const data = reactive({form:{},user:JSON.parse(localStorage.getItem('pro1-user') || "{}"),rules:{username:[{required:true,message:'请输入账号',trigger:'blur'}]}
})
const emit =defineEmits(['updateUser'])
if (data.user.role === '用户'){request.get('/zuke/selectById'+data.user.id).then(res=>(data.form=res.data))
}else {data.form=data.user
}
const updateUser = () => {if (data.user.role === '租客'){request.put('/zuke/update',data.form).then(res=>{if (res.code === '200'){ElMessage.success("信息更新成功")//更新缓存数据localStorage.setItem('pro1-user',JSON.stringify(data.form))//触发父级从缓存里面取到最新数据emit('updateUser')}else {ElMessage.error(res.msg)}})}else {request.put('/user/update',data.form).then(res=>{if (res.code === '200'){ElMessage.success("信息更新成功")//更新缓存数据localStorage.setItem('pro1-user',JSON.stringify(data.form))//触发父级从缓存里面取到最新数据emit('updateUser')}else {ElMessage.error(res.msg)}})}
}
</script>

修改密码

public void updatePassword(Account account) {Integer id=account.getId();ZuKe zuKe=this.selectById(String.valueOf(id));if (!zuKe.getPassword().equals(account.getPassword())){throw new CustomException("500","对不起,原密码错误");}zuKe.setPassword(account.getPassword());this.update(zuKe);}
public void updatePassword(Account account) {Integer id=account.getId();User user=this.selectById(String.valueOf(id));if (!user.getPassword().equals(account.getPassword())){throw new CustomException("500","对不起,原密码错误");}user.setPassword(account.getPassword());this.update(user);}

修改密码Vue页面

 

<template><div class="card" style="width:50%;padding: 40px 20px"><el-form ref="formRef" :rules="data.rules" :model="data.form" label-width="100px" style="padding-right: 40px;padding-bottom: 20px"><el-form-item label="原密码" prop="password"><el-input show-password v-model="data.form.password" autocomplete="off" placeholder="请输入原密码" /></el-form-item><el-form-item label="新密码" prop="newPassword"><el-input show-password v-model="data.form.newPassword" autocomplete="off" placeholder="请输入新密码" /></el-form-item><el-form-item label="确认新密码" prop="confirmPassword"><el-input show-password v-model="data.form.confirmPassword" autocomplete="off" placeholder="请再次确认新密码" /></el-form-item></el-form><div style="text-align: center"><el-button @click="updatePassword" type="primary" style="padding: 20px 30px">立即修改</el-button></div></div>
</template>
<script setup>
import {reactive,ref} from "vue";
import request from "@/utils/request.js";
import {ElMessage} from "element-plus";
const validatePass = (rule, value, callback) => {if (!value){callback(new Error('请再次确认新密码'))}else if (value!==data.form.newPassword){//value是用户输入的确认密码
    callback(new Error('两次输入密码不一致'))}else{callback()}
}
const formRef = ref()
const data = reactive({form:{},user:JSON.parse(localStorage.getItem('pro1-user') || "{}"),rules:{password:[{required:true,message:'请输入原密码',trigger:'blur'}],newPassword:[{required:true,message:'请输入新密码',trigger:'blur'}],confirmPassword:[{required:true,message:'请再次确认新密码',trigger:'blur'},{validator: validatePass,trigger:'blur'}]}
})
const updatePassword =()=>{data.form.id=data.user.iddata.form.role=data.user.roleformRef.value.validate((valid)=>{if (valid){request.put('/updatePassword',data.form).then(res=>{if (res.code === '200'){ElMessage.success("密码修改成功")localStorage.removeItem('pro1-user')setTimeout(()=>{location.href='/login'},500)}else {ElMessage.error(res.msg)}})}})
}
</script>

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

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

相关文章

php代码审计实战-开源项目Ascoos Framework 24 - Free Edition漏洞检测

一、下载 Ascoos Framework 24 - Free Edition 链接地址: https://sourceforge.net/projects/ascoos-fw/二、php静态分析代码审计 1.php静态分析代码审计工具使用我们之前介绍的静态分析php代码安全扫描工具系统分析 分析环境、过程、结果 分析环境:ubuntu 22.04.1分析过程:…

20242931 2024-2025-2 《网络攻防实践》第五周作业

20242931 2024-2025-2 《网络攻防实践》第五周作业 1. 实验内容 1.1 实验要求 (1) 防火墙配置:配置Linux操作系统平台上的iptables,要求过滤ICMP数据包,使得主机不接收Ping包;只允许特定IP地址(如局域网中的Linux攻击机192.168.200.13)访问主机的某一网络服务(如FTP、HTTP、…

【CTF笔记】HackINI 2021-sqli-0x1-bugku-SQL注入题wp

这个题的主题是sql注入,但是有一定安全措施阻挠,关键词:过滤、hash校验 首先进入页面,看到有登录框,输入一个admin测试密码,提示密码错误,输入其他账号root登,都是没有此用户,判断目标就是要get到admin的登录 查看到有提示,访问pls_help可以查看源代码 这个代码有几…

Pychaim集成本地部署的ollama+qwen-coder32b

服务器配置为:2个11264MiB NvidiaGPU + 16核 3.8GHz CPU + 72G 内存;部署Ollama平台,使用Qwen-coder2.5:32B模型。 1. 下载、安装并运行ollama; ollama的安装网上介绍的比较多,此处不再多讲,可以参考 Ollama全面指南:安装、使用与高级定制 若在服务器上部署ollama,确保…

[Vue] Vue 模板编译原理解析 part3

生成 JavaScript AST 我们要对整个模板的 AST 进行转换,转换为 JS AST。 我们目前的代码已经有了遍历模板 AST,并且针对不同的节点,做不同操作的能力。 我们首先需要知道 JS AST 长什么样子: function render(){return null; }上面的代码,所对应的 JS AST 如下图所示:这里…

[Vue] Vue模板编译原理解析 part3

生成 JavaScript AST 我们要对整个模板的 AST 进行转换,转换为 JS AST。 我们目前的代码已经有了遍历模板 AST,并且针对不同的节点,做不同操作的能力。 我们首先需要知道 JS AST 长什么样子: function render(){return null; }上面的代码,所对应的 JS AST 如下图所示:这里…

关于window版本nacos版本安装过程

环境 window10 16G 1TB下载地址window版本zip包 https://github.com/alibaba/nacos/releases/download/2.5.1/nacos-server-2.5.1.zip Linux版tar包 https://github.com/alibaba/nacos/releases/download/2.5.1/nacos-server-2.5.1.tar.gz安装前提安装jdk 1.8及以上,我安装了…

Netty源码—10.Netty工具之时间轮

大纲 1.什么是时间轮 2.HashedWheelTimer是什么 3.HashedWheelTimer的使用 4.HashedWheelTimer的运行流程 5.HashedWheelTimer的核心字段 6.HashedWheelTimer的构造方法 7.HashedWheelTimer添加任务和执行任务 8.HashedWheelTimer的完整源码 9.HashedWheelTimer的总结 10.Hashe…

0330-好的开始是成功的一半

前言 今天帮一个 USC Game Dev 专业同学做项目,真的挺复杂的一个项目。 但是我依然把项目配置好了,后面就是慢慢的添加新功能。 我用了 git 管理这个项目,把自己的每一步关键操作都用 git commit 记录一下。效果心路历程 我想过很多次 “要不就放弃吧” 但是看到旁边的“Att…

数仓项目建设方案——维度建模

数仓项目建设方案——维度建模式信息收集项目背景 阐述公司当前的行业,涉及的主要业务,相关数据的大小、分布、更新情况描述,需要解决的相关问题。公司当前数据建设现状 使用的数据库、数据来源系统与方式、现有数据分析组织,所使用的 BI 工具与数仓工具、为什么建立以及当…

在机器人和无人机时代,测绘人的出路在哪里?

一、技术革命:当测绘行业按下“加速键”无人机与机器人技术正在重塑测绘行业的底层逻辑。传统测绘依赖人工作业,效率低、成本高且风险大,而无人机凭借其灵活性和高效性,已能快速完成大范围地形测绘,精度可达厘米级,甚至替代人工进入危险区域(如塌方、悬崖等)作业。例如…

openwrt禁止设备联网

一、代码操作 把mac地址换成要禁用的设备mac地址,加到自定义防火墙最后,记得最后重启防火墙生效 /etc/init.d/firewall restart iptables -I INPUT -m mac --mac-source B8:C7:4A:7A:66:2E -j DROP iptables -I FORWARD -m mac --mac-source B8:C7:4A:7A:66:2E -j DROP iptab…