密码,邮箱手机号码验证

This commit is contained in:
2021-07-08 14:22:27 +08:00
parent f5762bfade
commit bf32a1825b
8 changed files with 194 additions and 56 deletions

View File

@@ -85,6 +85,11 @@ const urls = {
*/
sysUserCheckBindcode: ['/sysUser/checkBindcode', 'post'],
/**
* 获取密码验证配置
*/
getPwdRule: ['/sysUser/getPwdRule', 'post'],
}
export default urls

View File

@@ -115,9 +115,9 @@ export default class form extends Component {
</List.Item>
)}
/>
<ModalForm title={`更新密码`} action={apiAction.updatePwd} ref={this.updatePwdForm}>
<PasswordForm loadData={loadData} />
</ModalForm>
{/* <ModalForm title={`更新密码`} action={apiAction.updatePwd} ref={this.updatePwdForm}> */}
<PasswordForm ref={this.updatePwdForm} loadData={loadData} />
{/* </ModalForm> */}
<Phone ref={this.mhoneForm} loadData={loadData} />
<Mail ref={this.mailForm} loadData={loadData} />
</>

View File

@@ -1,24 +1,68 @@
import React, { Component } from 'react'
import { Form, Input } from 'antd'
import { Form, Input, message as Message, Modal } from 'antd'
import { api } from 'common/api'
import { RSA_PUBLIC_KEY } from 'util/global'
import { cloneDeep } from 'lodash'
import { Button } from 'antd/lib/radio'
import { encryptByRSA } from 'util/rsa'
const initData = {
exist: false,
pattern: '',
descriptions: '',
visible: false,
}
export default class form extends Component {
state = {
// 加载状态
exist: false,
}
state = cloneDeep(initData)
// 表单实例
form = React.createRef()
// 初始化数据
record = {}
open = () => {
this.setState({ visible: true })
}
/**
* mount后回调
*/
componentDidMount() {
this.props.created && this.props.created(this)
api.getPwdRule({}).then(({ success, data, message }) => {
if (success) {
const { pattern, descriptions } = data
this.setState({
pattern,
descriptions,
})
} else {
Message.Error(message)
}
})
}
updatePwd(values) {
let { password, newPassword } = values.current.getFieldsValue()
password = encryptByRSA(password, RSA_PUBLIC_KEY)
newPassword = encryptByRSA(newPassword, RSA_PUBLIC_KEY)
const confirm = newPassword
api.sysUserUpdatePwd({ password, newPassword, confirm }).then(
({ success, data, message }) => {
if (success) {
Message.success('密码修改完成')
this.close()
} else {
Message.warn(message)
}
}
)
}
close() {
this.setState(cloneDeep(initData))
}
/**
* 填充数据
* 可以在设置this.record之后对其作出数据结构调整
@@ -46,42 +90,56 @@ export default class form extends Component {
}
render() {
const { pattern, descriptions, visible } = this.state
return (
<Form className="yo-form" ref={this.form}>
<div className="yo-form-group">
<Form.Item
label="旧密码"
rules={[{ required: true, message: '请输入旧密码' }]}
name="password"
>
<Input.Password autoComplete="off" placeholder="请输入旧密码" />
</Form.Item>
<Form.Item
label="新密码"
rules={[{ required: true, message: '请输入新密码' }]}
name="newPassword"
>
<Input.Password autoComplete="off" placeholder="请输入新密码" />
</Form.Item>
<Form.Item
label="确认新密码"
rules={[
{ required: true, message: '请确认新密码' },
({ getFieldValue }) => ({
validator(_, value) {
if (!value || getFieldValue('newPassword') === value) {
return Promise.resolve()
}
return Promise.reject(new Error('确认新密码不匹配'))
},
}),
]}
name="confirm"
>
<Input.Password autoComplete="off" placeholder="请确认新密码" />
</Form.Item>
</div>
</Form>
<Modal
destroyOnClose
onCancel={() => this.close()}
onOk={() => this.updatePwd(this.form)}
visible={visible}
className="yo-modal-form"
title="更新密码"
>
<Form className="yo-form" ref={this.form}>
<div className="yo-form-group">
<Form.Item
label="旧密码"
rules={[{ required: true, message: '请输入旧密码' }]}
name="password"
>
<Input.Password autoComplete="off" placeholder="请输入旧密码" />
</Form.Item>
<Form.Item
label="新密码"
rules={[
{ required: true, message: '请输入新密码' },
{ pattern, message: '密码格式错误' },
]}
name="newPassword"
tooltip={descriptions}
>
<Input.Password autoComplete="off" placeholder="请输入新密码" />
</Form.Item>
<Form.Item
label="确认新密码"
rules={[
{ required: true, message: '请确认新密码' },
({ getFieldValue }) => ({
validator(_, value) {
if (!value || getFieldValue('newPassword') === value) {
return Promise.resolve()
}
return Promise.reject(new Error('确认新密码不匹配'))
},
}),
]}
name="confirm"
>
<Input.Password autoComplete="off" placeholder="请确认新密码" />
</Form.Item>
</div>
</Form>
</Modal>
)
}
}