import { Card, Form, message } from 'antd';
|
import React from 'react';
|
import {
|
ProForm,
|
ProFormText
|
} from '@ant-design/pro-components';
|
import { FormattedMessage, useIntl } from '@umijs/max';
|
import { useModel } from '@umijs/max';
|
import Http from '@/utils/http';
|
|
const resetPwd = async (val, form, intl) => {
|
const hide = message.loading(intl.formatMessage({ id: 'page.updating', defaultMessage: '正在修改' }));
|
try {
|
const resp = await Http.doPost('api/user/reset/pwd', val);
|
if (resp.code === 200) {
|
message.success(intl.formatMessage({ id: 'page.update.success', defaultMessage: '修改成功' }));
|
form.resetFields();
|
return true;
|
} else {
|
message.error(resp.msg);
|
return false;
|
}
|
} catch (error) {
|
message.error(intl.formatMessage({ id: 'page.update.fail', defaultMessage: '修改失败请重试!' }));
|
return false;
|
} finally {
|
hide();
|
}
|
};
|
|
const SecurityView = () => {
|
const intl = useIntl();
|
const [form] = Form.useForm();
|
const { initialState } = useModel('@@initialState');
|
const { currentUser } = initialState || {};
|
|
const handleFinish = (values) => {
|
resetPwd({ ...values, id: currentUser.id }, form, intl);
|
}
|
|
return (
|
<>
|
<Card>
|
<ProForm
|
form={form}
|
layout="vertical"
|
onFinish={handleFinish}
|
submitter={{
|
searchConfig: {
|
submitText: intl.formatMessage({ id: 'personal.security.button.name', defaultMessage: '修改密码' }),
|
},
|
render: (_, dom) => dom[1],
|
}}
|
>
|
<ProFormText.Password
|
width="md"
|
name="oldPwd"
|
label={intl.formatMessage({ id: 'personal.security.cur.pwd', defaultMessage: '当前密码' })}
|
rules={[
|
{
|
required: true,
|
},
|
]}
|
/>
|
<ProFormText.Password
|
width="md"
|
name="password"
|
label={intl.formatMessage({ id: 'personal.security.new.pwd', defaultMessage: '新密码' })}
|
rules={[
|
{
|
required: true,
|
},
|
{
|
validator(_, value) {
|
if (value.length >= 4 && value.length <= 16) {
|
return Promise.resolve();
|
}
|
return Promise.reject(new Error(intl.formatMessage({ id: 'personal.security.new.pwd.rule.length', defaultMessage: '新密码必须是4到16个字符!' })));
|
},
|
},
|
]}
|
/>
|
<ProFormText.Password
|
width="md"
|
name="passwordRepeat"
|
label={intl.formatMessage({ id: 'personal.security.new.pwd.confirm', defaultMessage: '确认密码' })}
|
rules={[
|
{
|
required: true,
|
},
|
{
|
validator(_, value) {
|
if (form.getFieldValue('password') === value) return Promise.resolve();
|
return Promise.reject(new Error(intl.formatMessage({ id: 'personal.security.new.pwd.rule.check', defaultMessage: '两次输入的密码不相符!' })));
|
}
|
}
|
]}
|
/>
|
</ProForm>
|
</Card>
|
</>
|
);
|
};
|
|
export default SecurityView;
|