skyouc
2024-12-21 c635d78b479510ebe2556a420948effcd30a0731
zy-asrs-flow/src/pages/account/setting/components/security.jsx
@@ -1,105 +1,105 @@
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;
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;