import React, {Component} from 'react'
|
import PropTypes from 'prop-types'
|
import { Form, Input } from 'antd'
|
|
class Resetpwd extends Component {
|
static propTpyes = {
|
dict: PropTypes.object
|
}
|
|
state = {
|
confirmDirty: false,
|
autoCompleteResult: []
|
}
|
|
onEnterSubmit = (e) => {
|
// 表单回车提交
|
if (e.key !== 'Enter') return
|
this.props.resetPwdSubmit()
|
}
|
|
handleConfirm = () => {
|
// 表单提交时检查输入值是否正确
|
return new Promise((resolve, reject) => {
|
this.props.form.validateFieldsAndScroll((err, values) => {
|
if (!err) {
|
resolve(values)
|
} else {
|
reject(err)
|
}
|
})
|
})
|
}
|
|
handleConfirmBlur = e => {
|
const { value } = e.target
|
this.setState({ confirmDirty: this.state.confirmDirty || !!value })
|
}
|
|
compareToFirstPassword = (rule, value, callback) => {
|
const { form } = this.props
|
if (value && value !== form.getFieldValue('password')) {
|
callback(this.props.dict['header.password.diff'])
|
} else {
|
callback()
|
}
|
}
|
|
validateToNextPassword = (rule, value, callback) => {
|
const { form } = this.props
|
if (value && this.state.confirmDirty) {
|
form.validateFields(['confirm'], { force: true })
|
}
|
callback()
|
}
|
|
render() {
|
const { getFieldDecorator } = this.props.form
|
|
const formItemLayout = {
|
labelCol: {
|
xs: { span: 24 },
|
sm: { span: 8 }
|
},
|
wrapperCol: {
|
xs: { span: 24 },
|
sm: { span: 16 }
|
}
|
}
|
|
return (
|
<Form {...formItemLayout} onKeyDown={this.onEnterSubmit}>
|
<Form.Item label={this.props.dict['header.password.origin']}>
|
{getFieldDecorator('originpwd', {
|
rules: [
|
{
|
required: true,
|
message: this.props.dict['header.password.origin.required']
|
}
|
]
|
})(<Input.Password />)}
|
</Form.Item>
|
<Form.Item label={this.props.dict['header.password.new']} hasFeedback>
|
{getFieldDecorator('password', {
|
rules: [
|
{
|
required: true,
|
message: this.props.dict['header.password.new.required']
|
},
|
{
|
pattern: /^[0-9a-zA-Z!@#$%^&*()_]*$/ig,
|
message: '密码只允许包含数字、字母以及!@#$%&*()_。'
|
},
|
{
|
max: 50,
|
message: this.props.dict['header.password.maxlen']
|
},
|
{
|
validator: this.validateToNextPassword
|
}
|
]
|
})(<Input.Password />)}
|
</Form.Item>
|
<Form.Item label={this.props.dict['header.password.confirm']} hasFeedback>
|
{getFieldDecorator('confirm', {
|
rules: [
|
{
|
required: true,
|
message: this.props.dict['header.password.confirm.required']
|
},
|
{
|
validator: this.compareToFirstPassword
|
}
|
]
|
})(<Input.Password onBlur={this.handleConfirmBlur} />)}
|
</Form.Item>
|
</Form>
|
)
|
}
|
}
|
|
export default Form.create()(Resetpwd)
|