index.tsx 3.03 KB
import { RESPONSE_CODE } from '@/constants/enum';
import {
  postOrderErpAuthLoginByPwd,
  postOrderErpCaptchaGetImgCaptchaCode,
} from '@/services';
import { LockOutlined, UserOutlined } from '@ant-design/icons';
import {
  LoginForm,
  ProConfigProvider,
  ProFormText,
} from '@ant-design/pro-components';
import { history, useModel } from '@umijs/max';
import { theme } from 'antd';
import { useEffect, useState } from 'react';

export default () => {
  const { setUserLocalInfo } = useModel('user');
  const { token } = theme.useToken();
  const [code, setCode] = useState('');
  const [uuid, setUuid] = useState('');

  const fetchCode = async () => {
    const res = await postOrderErpCaptchaGetImgCaptchaCode();
    setCode(res.data.img);
    setUuid(res.data.uuid);
  };
  useEffect(() => {
    fetchCode();
  }, []);
  return (
    <ProConfigProvider hashed={false}>
      <div
        style={{ backgroundColor: token.colorBgContainer }}
        className="h-[100vh]"
      >
        <div className="flex items-center justify-center">
          <LoginForm
            title="订单管理"
            onFinish={async (values) => {
              const res = await postOrderErpAuthLoginByPwd({
                data: { ...values, imgCaptchaUuid: uuid },
              });

              setUserLocalInfo(res.data.token, res.data?.user);
              if (res.result === RESPONSE_CODE.SUCCESS) {
                history.push('/order');
              }
            }}
          >
            <div className="my-8"></div>
            <ProFormText
              name="userName"
              fieldProps={{
                size: 'large',
                prefix: <UserOutlined className={'prefixIcon'} />,
              }}
              placeholder={'用户名'}
              rules={[
                {
                  required: true,
                  message: '请输入用户名!',
                },
              ]}
            />
            <ProFormText.Password
              name="password"
              fieldProps={{
                size: 'large',
                prefix: <LockOutlined className={'prefixIcon'} />,
              }}
              placeholder={'密码'}
              rules={[
                {
                  required: true,
                  message: '请输入密码!',
                },
              ]}
            />
            <ProFormText
              name="imgCaptchaCode"
              fieldProps={{
                size: 'large',
              }}
              placeholder={'验证码'}
              rules={[
                {
                  required: true,
                  message: '请输入验证码!',
                },
              ]}
            />
            <img
              src={code}
              className="mb-4 cursor-pointer"
              onClick={() => {
                fetchCode();
              }}
            />
            {/* <ProFormCheckbox noStyle name="autoLogin">
              自动登录
            </ProFormCheckbox> */}
          </LoginForm>
        </div>
      </div>
    </ProConfigProvider>
  );
};