@@ -10,31 +10,49 @@
< / div >
< / template >
< div class = "userDetail" >
<!-- 头像上传 -- >
< div class = "userImg" >
< el-image class = "avatar" :src = "userParams.avatar" fit = "fill" / >
< div class = "userInfo_item" >
用户名 : < span > { { userParams . userName } } < / span >
< /div >
< div class = "userInfo_item" >
用户名称 : < span > { { userParams . nickName } } < / span >
< / div >
< div class = "userInfo_item" >
工号 : < span > { { userParams . workCode } } < / span >
< / div >
< div class = "userInfo_item" >
< el-icon >
< UserFilled / >
< Iphone / >
< / el-icon >
用户呢称 : < span > { { userParams . nickNam e } } < / span >
电话号码 : < span > { { userParams . mobil e } } < / span > < / div >
< div class = "userInfo_item" >
< el-icon >
< HomeFilled / >
< / el-icon >
所属公司 : < span > { { userParams . subCompanyName } } < / span >
< / div >
< div class = "userInfo_item" > < el-icon >
< Iphone / >
< / el-icon > 电话号码 : < span > { { userParams . phoneNumber } } < / span > < / div >
< div class = "userInfo_item" > < el-icon >
< Message / >
< / el-icon > 用户邮箱 : < span > { { userParams . email } } < / span > < / div>
< div class = "userInfo_item" > < el-icon >
< HomeFilled / >
< / el-icon > 所属部门 : < span > { { userParams . city } } < / span > < / div >
< div class = "userInfo_item" > < el-icon >
< OfficeBuilding / >
< / el-icon > 所属角色 : < span > { { userParams . createBy } } < / span > < / div>
< div class = "userInfo_item" > < el-icon >
< Calendar / >
< / el-icon > 创建日期 : < span > { { userParams . loginDate } } < / span > < / div >
< div class = "userInfo_item" >
< el-icon >
< HomeFilled / >
< / el-icon >
所属部门 : < span > { { userParams . departmentName } } < / span >
< / div >
< div class = "userInfo_item" >
< el-icon >
< HomeFilled / >
< / el-icon >
岗位 : < span > { { userParams . jobActivityDesc } } < / span >
< / div >
< div class = "userInfo_item" >
< el-icon >
< HomeFilled / >
< / el-icon >
账号类型 : < span > { { userParams . accountType === '0' ? '主账号' : '次账号' } } < / span >
< / div >
< div class = "userInfo_item" >
< el-icon >
< OfficeBuilding / >
< / el-icon >
所属角色 : < span > { { belongToRole ( userParams . roles ) } } < / span > < / div >
< / div >
< div >
< / div >
@@ -45,143 +63,135 @@
<!-- 标题 -- >
< template # header >
< div class = "card-header" >
< span > 基本资料 < / span >
< span > { { isInitPassword ? '修改密码' : '初始化密码' } } < / span >
< / div >
< / template >
< el-tabs class = "demo-tabs " v-model = "activeName " >
< el -tab -pane label = "基本资料" name = "first" >
< el-form
:model = "userParams"
label -width = " 120px "
class = "demo-ruleForm"
>
< el-form-item label = "用户昵称" prop = "userName" :required = "true" style = "text-align:left" >
< el-input v-model = "userParams.nickName" />
< el-form label -width = " 120px " ref = "passwordRef" :model = "userPassword" :rules = "rules" >
< el-form-item label = "旧密码" prop = "oldPassword" :required = "true" style = "text-align:left " v-if = "isInitPassword " >
< el -input p laceholder = "请输入旧密码" v-model = "userPassword.oldPassword" type="password" / >
< / el -form -item >
< el-form-item label = "手机号 码" :required = "true" style = "text-align:left" >
< el-input v-model = "userParams.phoneNumber "/>
< el-form-item label = "新密 码" prop = "newPassword" :required = "true" style = "text-align:left" >
< el-input placeholder = "请输入新密码" v-model = "userPassword.newPassword" type="password "/>
< / el -form -item >
< el-form-item label = "邮箱 " prop = "email " :required = "true" style = "text-align:left" >
< el-input v-model = "userParams.email "/>
< / el -form -item >
< el-form-item label = "性别" prop = "sex" >
< el-radio-group v-model = "userParams.sex" >
< el -radio label = "0" > 男 < / el-radio >
< el-radio label = "1" > 女 < / el-radio >
< / el-radio-group >
< el-form-item label = "确认密码 " prop = "confirmPassword " :required = "true" style = "text-align:left" >
< el-input placeholder = "请确认新密码" v-model = "userPassword.confirmPassword" type="password "/>
< / el -form -item >
< el-form-item >
< el-button type = "primary " @click ="s ubmit" > 保存 < / el -button >
< el-button color = "#DED0B2 " @click ="handleS ubmit" > 保存 < / el -button >
< el-button @click ="close" > 关闭 < / el -button >
< / el-form-item >
< / el-form >
< / el-tab-pane >
< el-tab-pane label = "修改密码" name = "second" >
< el-form label -width = " 120px " :model = "userPassword" >
< el-form-item label = "旧密码" :required = "true" style = "text-align:left" >
< el-input placeholder = "请输入旧密码" v-model = "userPassword.oldPassWord" />
< / el -form -item >
< el-form-item label = "新密码" :required = "true" style = "text-align:left" >
< el-input placeholder = "请输入新密码" v-model = "userPassword.newPassWord" />
< / el -form -item >
< el-form-item label = "确认密码" :required = "true" style = "text-align:left" >
< el-input placeholder = "请确认新密码" v-model = "userPassword.querenPassWord" />
< / el -form -item >
< el-form-item >
< el-button type = "primary" @click ="submit2" > 保存 < / el -button >
< el-button @click ="close" > 关闭 < / el -button >
< / el-form-item >
< / el-form >
< / el-tab-pane >
< / el-tabs >
< / el-card >
< / el-col >
< / el-row >
< / div >
< / template >
< script setup >
import { getUserInfo } from '@/api/login' ;
import { ref } from "vue" ;
import { modifyUser } from ' @/api/auth/auth'
import { ElMessage } from 'element-plus'
import { useTagsView } from '@/stores/tagsview.js'
var userParams = ref ( { } )
var userPassword = ref ( {
oldP assW ord: '' ,
newPassWord : '' ,
queren PassW ord : ''
} )
const activeName = ref ( 'first ')
import { ElNotification } from 'element-plus'
import { useTagsView } from '@/stores/tagsview.js'
import { getAuthInfo } from " @/api/login" ;
import { editPassword , initPassword } from "@/api/auth/auth" ;
const isInitPassword = ref ( false ) ;
const userParams = ref ( { } ) ;
const p assw ordRef = ref ( ) ;
const router = useRouter ( )
const user Passw ord = ref ( {
oldPassword : '' ,
newPassword : ' ' ,
confirmPassword : ''
} ) ;
const tagsViewStore = useTagsView ( )
const getuserinfo = async ( ) => {
await getUserInfo ( ) . then ( res => {
userParams . value = res . data . user
const validatePasswordComplexity = ( rule , value , callback ) => {
const reg = /^(?=.*[a-zA-Z])(?=.*\d).{1,9}$/ ; //密码必须是至少包含字母、数字, 1-9位
if ( ! reg . test ( value ) ) {
callback ( new Error ( "密码必须是至少包含字母、数字, 1-9位" ) ) ;
} else {
callback ( ) ;
}
} ;
const validatePasswordEquality = ( rule , value , callback ) => {
if ( userPassword . value . newPassword != value ) {
callback ( new Error ( "两次输入密码不一致!" ) ) ;
} else {
callback ( ) ;
}
}
const rules = reactive ( {
newPassword : [
{ required : true , message : "密码不能为空" , trigger : [ "change" , "blur" ] } ,
{
required : true ,
trigger : [ "change" , "blur" ] ,
validator : validatePasswordComplexity
}
] ,
confirmPassword : [
{ required : true , message : "密码不能为空" , trigger : [ "change" , "blur" ] } ,
{
required : true ,
trigger : [ "change" , "blur" ] ,
validator : validatePasswordEquality
}
] ,
} )
const getInfo = async ( ) => {
await getAuthInfo ( ) . then ( res => {
userParams . value = res . data . user
isInitPassword . value = res . data . initPassword
} )
}
// 修改资料
const submit = async ( ) => {
await modifyUser ( {
userName : userParams . value . userName ,
nickName : userParams . value . nickName ,
phoneNumber : userParams . value . phoneNumber ,
email : userParams . value . email ,
sex : userParams . value . sex ,
userId : userParams . value . userId
} ) . then ( res => {
console . log ( res )
} )
const belongToRole = ( roles ) => {
if ( ! roles ) return ;
return roles . map ( item => item . roleName ) . join ( ', ' )
}
// 修改密码
const s ubmit2 = async ( ) => {
await getUserInfo ( ) . then ( res => {
if ( res . data != '' ) {
console . log ( res . data . user. p assword )
if ( userPassword . value . oldPassWord == res . data . user . password && userPassword . value . newPassWord == userPassword . value . querenPassWord ) {
modifyUser ( {
userName : userParams . value . userName ,
nickName : userParams . value . nickName ,
password : userPassword . value . newPassWord ,
userId : userParams . value . userId
} ) . then ( res => {
ElMessage ( {
message : '修改密码成功' ,
type : 'success' ,
const handleS ubmit = async ( ) => {
if ( isInitPassword . value ) {
editPassword ( {
.. .userP assword . value
} ) . then ( res => {
ElNotification ( {
title : '提示' ,
message : res . msg ,
type : res . code === 1000 ? 'success' : 'error'
} )
if ( res . code === 1000 ) {
passwordRef . value . resetFields ( )
}
} )
} else if ( userPassword . value . oldPassWord != res . data . user . password && userPassword . value . newPassWord == userPassword . value . querenPassWord ) {
ElMessage ( {
message : '旧密码错误' ,
type : 'err or' ,
} else {
initPassword ( {
newPassword : userPassword . value . newPassword ,
confirmPassword : userPassw ord . value . confirmPassword
} ) . then ( res => {
ElNotification ( {
title : '提示' ,
message : res . msg ,
type : res . code === 1000 ? 'success' : 'error'
} )
} else if ( userPassword . value . oldPassWord == res . data . user . password && userPassword . value . newPassWord != userPassword . value . querenPassWord ) {
ElMessage ( {
message : '新密码与确认密码不同' ,
type : 'error' ,
if ( res . code === 1000 ) {
passwordRef . value . resetFields ( )
}
} )
}
} else {
ElMessage ( {
message : '请求错误' ,
type : 'error' ,
} )
}
} )
}
// 关闭
const close = ( ) => {
tagsViewStore . delVisitedViews ( {
path : "/auth" , meta : { hidden : false , title : '个人中心' , breadcrumb : true } } )
tagsViewStore . delVisitedViews ( router . currentRoute . value . path )
router . push ( '/' )
}
onMounted ( ( ) => {
getuseri nfo ( )
onMounted ( ( ) => {
getI nfo ( )
} )
< / script >
< style lang = "scss" >
body , div {
body , div {
margin : 0 ;
padding : 0 ;
}
@@ -189,6 +199,7 @@ body,div {
. my {
margin : 0 auto ;
margin - top : 20 px ;
. userDetail {
. userImg {
height : 170 px ;
@@ -196,6 +207,7 @@ body,div {
border - bottom - style : solid ;
border - color : # daddd2 ;
border - width : 1 px ;
. avatar {
width : 150 px ;
height : 150 px ;
@@ -203,6 +215,7 @@ body,div {
}
}
}
. userInfo _item {
height : 40 px ;
border - bottom - style : solid ;
@@ -215,6 +228,6 @@ body,div {
. userInfo _item > span {
float : right ;
}
}
}
< / style >