<template>
|
<div class="user-container">
|
<div class="user-content">
|
<div class="title">个人信息</div>
|
<div class="user-form">
|
<div class="item">
|
<div class="name">头像:</div>
|
<div class="image">
|
<img :src="preUrl + form.headImg" class="userImage"/>
|
</div>
|
</div>
|
<div class="item">
|
<div class="name">用户名:</div>
|
<div class="info">{{ form.userName }}</div>
|
</div>
|
<div class="item">
|
<div class="name">昵称:</div>
|
<div class="info">{{ form.nickName }}</div>
|
</div>
|
<div class="item">
|
<div class="name">联系方式:</div>
|
<div class="info">{{ form.contact }}</div>
|
</div>
|
<div class="item">
|
<div class="name">邮箱:</div>
|
<div class="info">{{ form.email }}</div>
|
</div>
|
<div class="item">
|
<div class="name">密码:</div>
|
<div class="info pwd">
|
********
|
<el-button type="plain" @click="isShow = true">修改密码</el-button>
|
</div>
|
</div>
|
</div>
|
<div class="bottom">
|
<el-button type="primary" @click="loginOut">退出登录</el-button>
|
</div>
|
<div class="footer"></div>
|
</div>
|
<el-dialog v-model="isShow">
|
<div class="title">修改密码</div>
|
<el-form model="pwdForm" :rules="rules">
|
<el-form-item prop="oldPassword" label="旧密码">
|
<el-input v-model="pwdForm.oldPassword" placeholder="请输入旧密码"></el-input>
|
</el-form-item>
|
<el-form-item prop="newPassword" label="新密码">
|
<el-input v-model="pwdForm.newPassword" placeholder="请输入新密码"></el-input>
|
</el-form-item>
|
<el-form-item class="handel-btn">
|
<el-button @click="cancel()">取消</el-button>
|
<el-button type="primary" @click="modifyPwd()">提交</el-button>
|
</el-form-item>
|
</el-form>
|
</el-dialog>
|
</div>
|
</template>
|
|
<script setup>
|
import {userDetail} from '@/api/login'
|
const { proxy } = getCurrentInstance();
|
const form = ref({})
|
import { PREURL } from "@/config/index";
|
const preUrl = ref(PREURL)
|
const getUserInfo = async () =>{
|
let id = JSON.parse(localStorage.getItem('id'))
|
await userDetail().get(id).then(res => {
|
form.value = res.data
|
})
|
}
|
//修改密码
|
const rules = ref({
|
oldPassword: [{ required: true, trigger: "blur", message: "请输入旧密码" }],
|
newPassword: [{ required: true, trigger: "blur", message: "请输入新密码" }],
|
})
|
const isShow = ref(false)
|
const pwdForm = ref({
|
oldPassword:'',
|
newPassword:'',
|
})
|
const modifyPwd = async () =>{
|
await userDetail().setPsw(pwdForm.value).then(res => {
|
if(res.code == 200){
|
proxy.$modal.msgSuccess("修改成功");
|
}
|
})
|
}
|
const cancel = () =>{
|
isShow.value = false
|
pwdForm.value = {}
|
}
|
onMounted(() =>{
|
getUserInfo()
|
})
|
|
</script>
|
|
<style lang="scss" scoped>
|
.user-container{
|
width: 100%;
|
padding: 1% 12%;
|
.user-content{
|
width: 100%;
|
background: rgba(242, 246, 248, 0.4);
|
border-radius: 20px;
|
.title{
|
width: 100%;
|
height:80px;
|
background: rgba(112, 184, 225, 0.13);
|
display: flex;
|
align-items: center;
|
justify-content: center;
|
font-size: 30px;
|
color: #262627;
|
border-top-left-radius: 20px;
|
border-top-right-radius: 20px;
|
}
|
.user-form{
|
width: 100%;
|
height:550px;
|
padding: 10px 80px;
|
.item{
|
width: 100%;
|
height: 16%;
|
display: flex;
|
justify-content:flex-start;
|
align-items:center;
|
margin-left: 10%;
|
.name{
|
width:90px;
|
font-size: 20px;
|
color: #626268;
|
font-weight: bold;
|
margin-right: 20px;
|
}
|
.info{
|
width: 70%;
|
height: 35%;
|
display: flex;
|
align-items:center;
|
border-bottom: 1px solid rgba(29, 33, 41, 0.27);
|
font-size: 18px;
|
color: rgba(66, 66, 67, 0.98);
|
font-weight: bold;
|
}
|
.pwd{
|
display: flex;
|
justify-content: space-between;
|
align-items: center;
|
.el-button{
|
margin-bottom: 10px;
|
}
|
}
|
}
|
}
|
.bottom{
|
width: 100%;
|
height:80px;
|
//background: rgba(112, 184, 225, 0.13);
|
display: flex;
|
align-items: center;
|
justify-content: center;
|
font-size: 30px;
|
color: #262627;
|
}
|
.footer{
|
width: 100%;
|
height:100px;
|
background: rgba(112, 184, 225, 0.13);
|
border-bottom-left-radius: 20px;
|
border-bottom-right-radius: 20px;
|
}
|
}
|
:deep(.el-dialog){
|
width: 40%;
|
height:40vh;
|
padding: 10px 200px;
|
.title{
|
width: 100%;
|
height: 50px;
|
display: flex;
|
justify-content:center;
|
align-items: center;
|
font-weight: bold;
|
font-size: 20px;
|
margin-bottom: 50px;
|
}
|
.el-form{
|
.el-form-item{
|
margin-bottom: 30px;
|
}
|
.handel-btn{
|
width: 50%;
|
margin: 0 auto;
|
.el-button{
|
width: 40%;
|
height: 35px;
|
display: flex;
|
justify-content:center;
|
align-items: center;
|
font-size: 18px;
|
margin: 20px auto;
|
letter-spacing: 6px;
|
}
|
}
|
}
|
}
|
}
|
.image{
|
border:1px solid rgba(112, 184, 225, 0.32);
|
border-radius: 10px;
|
padding: 5px;
|
}
|
.userImage{
|
width: 100px;
|
max-height:100px;
|
}
|
</style>
|