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