Files
jshERP/jshERP-web/src/components/tools/UserPassword.vue
2022-10-23 12:26:01 +08:00

150 lines
4.7 KiB
Java
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<template>
<a-modal
:title="title"
:width="modalWidth"
:visible="visible"
:confirmLoading="confirmLoading"
@ok="handleOk"
@cancel="handleCancel"
cancelText="关闭"
wrapClassName="ant-modal-cust-warp"
style="top:25%;height: 50%;overflow-y: hidden">
<a-spin :spinning="confirmLoading">
<a-form :form="form">
<a-form-item label="旧密码" :labelCol="labelCol" :wrapperCol="wrapperCol">
<a-input type="password" placeholder="请输入旧密码" v-decorator="[ 'oldpassword', validatorRules.oldpassword]" />
</a-form-item>
<a-form-item label="新密码" :labelCol="labelCol" :wrapperCol="wrapperCol">
<a-input type="password" placeholder="新密码至少6位区分大小写" v-decorator="[ 'password', validatorRules.password]" />
</a-form-item>
<a-form-item label="确认新密码" :labelCol="labelCol" :wrapperCol="wrapperCol">
<a-input type="password" placeholder="请确认新密码" v-decorator="[ 'confirmPassword', validatorRules.confirmPassword]"/>
</a-form-item>
</a-form>
</a-spin>
</a-modal>
</template>
<script>
import { putAction } from '@/api/manage'
import md5 from 'md5'
export default {
name: "UserPassword",
data () {
return {
title:"修改密码",
modalWidth:800,
visible: false,
confirmLoading: false,
validatorRules:{
oldpassword:{
rules: [{
required: true, message: '请输入旧密码!',
}],
},
password:{
rules: [
{ required: true, message: '请输入新密码!'},
{ validator: this.handlePassword }
],
validateTrigger: ['change', 'blur'],
validateFirst: true
},
confirmPassword:{
rules: [
{ required: true, message: '请确认新密码!' },
{ validator: this.handleConfirmPassword }
],
validateTrigger: ['change', 'blur'],
validateFirst: true
}
},
confirmDirty:false,
labelCol: {
xs: { span: 24 },
sm: { span: 5 },
},
wrapperCol: {
xs: { span: 24 },
sm: { span: 16 },
},
form:this.$form.createForm(this),
url: "/user/updatePwd",
userId:"",
}
},
methods: {
show(userId){
if(!userId){
this.$message.warning("当前系统无登陆用户!");
}else{
this.userId = userId
this.form.resetFields();
this.visible = true;
}
},
handleCancel () {
this.close()
},
close () {
this.$emit('close');
this.visible = false;
this.disableSubmit = false;
},
handleOk () {
const that = this;
// 触发表单验证
this.form.validateFields((err, values) => {
if (!err) {
that.confirmLoading = true
values.oldpassword = md5(values.oldpassword)
values.password = md5(values.password)
let params = Object.assign({userId:this.userId},values)
console.log("修改密码提交数据",params)
putAction(this.url,params).then((res)=>{
if(res.code === 200){
if(res.data.status === 2 || res.data.status === 3) {
that.$message.warning(res.data.message)
} else {
that.$message.success(res.data.message)
that.close()
}
}else{
that.$message.warning(res.data.message)
}
}).finally(() => {
that.confirmLoading = false
})
}
})
},
handlePassword(rule, value, callback) {
let oldpassword = this.form.getFieldValue('oldpassword')
if(oldpassword === value) {
callback(new Error('新密码和旧密码不能相同!'))
}
let reg = /^(?=.*[a-z])(?=.*\d).{6,}$/;
if (!reg.test(value)) {
callback(new Error('密码由6位数字小写字母组成!'))
}
callback()
},
handleConfirmPassword(rule, value, callback) {
let password = this.form.getFieldValue('password')
if (value === undefined) {
callback(new Error('请输入密码!'))
}
if (value && password && value.trim() !== password.trim()) {
callback(new Error('两次密码不一致!'))
}
callback()
}
}
}
</script>
<style scoped>
</style>