outaozhen 3 éve
szülő
commit
aa3959e4b8
1 módosított fájl, 119 hozzáadás és 84 törlés
  1. 119 84
      src/pages/user/Login/index.tsx

+ 119 - 84
src/pages/user/Login/index.tsx

@@ -1,9 +1,10 @@
 import { LockOutlined, UserOutlined } from '@ant-design/icons'
 import { Alert, message, Tabs } from 'antd'
 import React, { useState } from 'react'
-import { ProFormCheckbox, ProFormText, LoginForm } from '@ant-design/pro-form'
-import { useIntl, history, FormattedMessage, SelectLang, useModel } from 'umi'
+import ProForm, { ProFormCheckbox, ProFormText, LoginForm } from '@ant-design/pro-form'
+import { useIntl, history, FormattedMessage, SelectLang, useModel, useRequest } from 'umi'
 // import { login } from '@/services/ant-design-pro/api'
+import { queryAcountList } from '@/services/api/institution'
 
 import styles from './index.less'
 
@@ -25,6 +26,19 @@ const Login: React.FC = () => {
   const [type, setType] = useState<string>('account')
   const { initialState, setInitialState } = useModel('@@initialState')
 
+  const { run, loading } = useRequest(queryCurrentUser, {
+    manual: true,
+    onSuccess: async result => {
+      setInitialState({
+        ...initialState,
+        currentUser: result.staff,
+        menuList: result.menus,
+        roles: result.staff?.roles || []
+      })
+      goto()
+    }
+  })
+
   const intl = useIntl()
 
   const fetchUserInfo = async () => {
@@ -74,7 +88,7 @@ const Login: React.FC = () => {
         {SelectLang && <SelectLang />}
       </div>
       <div className={styles.content}>
-        <LoginForm
+        <div
           logo={<img alt="logo" src="/logo.svg" />}
           title="财审管理系统"
           subTitle={intl.formatMessage({ id: 'pages.layouts.userLayout.title' })}
@@ -84,93 +98,114 @@ const Login: React.FC = () => {
           actions={[]}
           onFinish={async values => {
             await handleSubmit(values as API.LoginParams)
-          }}
-        >
-          <Tabs activeKey={type} onChange={setType}>
-            <Tabs.TabPane
-              key="account"
-              tab={intl.formatMessage({
-                id: 'pages.login.accountLogin.tab',
-                defaultMessage: '账户密码登录'
-              })}
-            />
-          </Tabs>
-
-          {status === 'error' && loginType === 'account' && (
-            <LoginMessage
-              content={intl.formatMessage({
-                id: 'pages.login.accountLogin.errorMessage',
-                defaultMessage: '账户或密码错误(admin/ant.design)'
-              })}
-            />
-          )}
-          {type === 'account' && (
-            <>
-              <ProFormText
-                name="username"
-                fieldProps={{
-                  size: 'large',
-                  prefix: <UserOutlined className={styles.prefixIcon} />
-                }}
-                placeholder={intl.formatMessage({
-                  id: 'pages.login.username.placeholder',
-                  defaultMessage: '用户名: admin or user'
+          }}>
+          <ProForm
+            initialValues={{
+              autoLogin: true
+            }}
+            submitter={{
+              searchConfig: {
+                submitText: intl.formatMessage({
+                  id: 'pages.login.submit',
+                  defaultMessage: '登录'
+                })
+              },
+              render: (_, dom) => dom.pop(),
+              submitButtonProps: {
+                loading,
+                size: 'large',
+                style: {
+                  width: '100%'
+                }
+              }
+            }}
+            onFinish={async values => {
+              handleSubmit(values as API.LoginParams)
+            }}>
+            <Tabs activeKey={type} onChange={setType}>
+              <Tabs.TabPane
+                key="account"
+                tab={intl.formatMessage({
+                  id: 'pages.login.accountLogin.tab',
+                  defaultMessage: '账户密码登录'
                 })}
-                rules={[
-                  {
-                    required: true,
-                    message: (
-                      <FormattedMessage
-                        id="pages.login.username.required"
-                        defaultMessage="请输入用户名!"
-                      />
-                    )
-                  }
-                ]}
               />
-              <ProFormText.Password
-                name="password"
-                fieldProps={{
-                  size: 'large',
-                  prefix: <LockOutlined className={styles.prefixIcon} />
-                }}
-                placeholder={intl.formatMessage({
-                  id: 'pages.login.password.placeholder',
-                  defaultMessage: '密码: 123456'
+            </Tabs>
+
+            {status === 'error' && loginType === 'account' && (
+              <LoginMessage
+                content={intl.formatMessage({
+                  id: 'pages.login.accountLogin.errorMessage',
+                  defaultMessage: '账户或密码错误(admin/ant.design)'
                 })}
-                rules={[
-                  {
-                    required: true,
-                    message: (
-                      <FormattedMessage
-                        id="pages.login.password.required"
-                        defaultMessage="请输入密码!"
-                      />
-                    )
-                  }
-                ]}
               />
-            </>
-          )}
+            )}
+            {type === 'account' && (
+              <>
+                <ProFormText
+                  name="username"
+                  fieldProps={{
+                    size: 'large',
+                    prefix: <UserOutlined className={styles.prefixIcon} />
+                  }}
+                  placeholder={intl.formatMessage({
+                    id: 'pages.login.username.placeholder',
+                    defaultMessage: '用户名: admin or user'
+                  })}
+                  rules={[
+                    {
+                      required: true,
+                      message: (
+                        <FormattedMessage
+                          id="pages.login.username.required"
+                          defaultMessage="请输入用户名!"
+                        />
+                      )
+                    }
+                  ]}
+                />
+                <ProFormText.Password
+                  name="password"
+                  fieldProps={{
+                    size: 'large',
+                    prefix: <LockOutlined className={styles.prefixIcon} />
+                  }}
+                  placeholder={intl.formatMessage({
+                    id: 'pages.login.password.placeholder',
+                    defaultMessage: '密码: 123456'
+                  })}
+                  rules={[
+                    {
+                      required: true,
+                      message: (
+                        <FormattedMessage
+                          id="pages.login.password.required"
+                          defaultMessage="请输入密码!"
+                        />
+                      )
+                    }
+                  ]}
+                />
+              </>
+            )}
 
-          {status === 'error' && loginType === 'mobile' && <LoginMessage content="验证码错误" />}
-          <div
-            style={{
-              marginBottom: 24
-            }}
-          >
-            <ProFormCheckbox noStyle name="autoLogin">
-              <FormattedMessage id="pages.login.rememberMe" defaultMessage="自动登录" />
-            </ProFormCheckbox>
-            <a
+            {status === 'error' && loginType === 'mobile' && <LoginMessage content="验证码错误" />}
+            <div
               style={{
-                float: 'right'
-              }}
-            >
-              <FormattedMessage id="pages.login.forgotPassword" defaultMessage="忘记密码" />
-            </a>
-          </div>
-        </LoginForm>
+                marginBottom: 24
+              }}>
+              <ProFormCheckbox noStyle name="autoLogin">
+                <FormattedMessage id="pages.login.rememberMe" defaultMessage="自动登录" />
+              </ProFormCheckbox>
+              <a
+                style={{
+                  float: 'right'
+                }}>
+                <FormattedMessage id="pages.login.forgotPassword" defaultMessage="忘记密码" />
+              </a>
+            </div>
+          </ProForm>
+        </div>
       </div>
     </div>
   )