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;  
 |