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