diff --git a/.umirc.ts b/.umirc.ts
index d848a01..26f2d52 100644
--- a/.umirc.ts
+++ b/.umirc.ts
@@ -12,11 +12,11 @@ export default defineConfig({
     title: '订单管理系统',
   },
   proxy: {
-    '/service/': {
-      target: 'http://localhost:8085/',
-      // target: 'http://39.108.227.113:8085/',
+    '/api/': {
+      // target: 'http://localhost:8085/',
+      target: 'http://39.108.227.113:8085/',
       changeOrigin: true,
-      // pathRewrite: { '^/api': '' },
+      pathRewrite: { '^/api': '' },
     },
   },
   routes: [
diff --git a/README.md b/README.md
index c20aad9..bb0e397 100644
--- a/README.md
+++ b/README.md
@@ -29,4 +29,6 @@
 
 # 校验没生效
 
-chmod +x .husky/commit-msg chmod +x .husky/pre-commit
+chmod +x .husky/commit-msg
+
+chmod +x .husky/pre-commit
diff --git a/src/app.ts b/src/app.ts
index 4692376..8302a1f 100644
--- a/src/app.ts
+++ b/src/app.ts
@@ -1,6 +1,6 @@
 // 运行时配置
 
-import { RequestConfig } from '@umijs/max';
+import { RequestConfig, history } from '@umijs/max';
 
 import '@inspir/assembly-css/dist/special.css';
 import { message } from 'antd';
@@ -34,10 +34,11 @@ export const request: RequestConfig = {
     if (response && response.status) {
       // 401重定向
       if (response.status === 401) {
-        if (!location.pathname.includes(loginPath)) {
+        if (!location.pathname.includes('login')) {
           localStorage.removeItem('token');
+          localStorage.removeItem('userInfo');
           message.error('token失效,请重新登录!');
-          // history.push(loginPath);
+          history.push('/login');
           return null;
         }
       }
@@ -74,7 +75,7 @@ export const request: RequestConfig = {
       }
 
       return {
-        url,
+        url: '/api' + url,
         options: {
           ...options,
           signal,
@@ -93,6 +94,7 @@ export const request: RequestConfig = {
         if (data.result !== RESPONSE_CODE.SUCCESS) {
           message.error(data.message);
         }
+
         // do something
         return response;
       },
diff --git a/src/models/user.ts b/src/models/user.ts
index 5fe01ee..b06c96d 100644
--- a/src/models/user.ts
+++ b/src/models/user.ts
@@ -2,7 +2,28 @@ import { useState } from 'react';
 
 // src/models/userModel.ts
 export default function Page() {
-  const { token, setToken } = useState('');
+  const [token, setToken] = useState('');
+  const [userInfo, setUserInfo] = useState({});
 
-  return { token, setToken };
+  const setUserToken = (token: string) => {
+    localStorage.setItem('token', token);
+    setToken(token);
+  };
+
+  const setUserLocalInfo = (token: string, userInfo: any) => {
+    localStorage.setItem('token', token);
+    setToken(token);
+
+    localStorage.setItem('userInfo', JSON.stringify(userInfo));
+    setUserInfo(userInfo);
+  };
+
+  return {
+    token,
+    setToken,
+    userInfo,
+    setUserInfo,
+    setUserToken,
+    setUserLocalInfo,
+  };
 }
diff --git a/src/pages/Login/index.tsx b/src/pages/Login/index.tsx
index b98d23a..68efd63 100644
--- a/src/pages/Login/index.tsx
+++ b/src/pages/Login/index.tsx
@@ -1,21 +1,32 @@
-import { LockOutlined, MobileOutlined, UserOutlined } from '@ant-design/icons';
+import { RESPONSE_CODE } from '@/constants/enum';
+import {
+  postOrderErpAuthLoginByPwd,
+  postOrderErpCaptchaGetImgCaptchaCode,
+} from '@/services';
+import { LockOutlined, UserOutlined } from '@ant-design/icons';
 import {
   LoginForm,
   ProConfigProvider,
-  ProFormCaptcha,
-  ProFormCheckbox,
   ProFormText,
 } from '@ant-design/pro-components';
-import { history } from '@umijs/max';
-import { Tabs, message, theme } from 'antd';
-import { useState } from 'react';
-
-type LoginType = 'phone' | 'account';
+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 [loginType, setLoginType] = useState<LoginType>('phone');
+  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
@@ -25,114 +36,69 @@ export default () => {
         <div className="flex items-center justify-center">
           <LoginForm
             title="订单管理"
-            onFinish={async () => {
-              history.push('/order');
+            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');
+              }
             }}
           >
-            <Tabs
-              centered
-              activeKey={loginType}
-              onChange={(activeKey) => setLoginType(activeKey as LoginType)}
-            >
-              <Tabs.TabPane key={'account'} tab={'账号密码登录'} />
-              <Tabs.TabPane key={'phone'} tab={'手机号登录'} />
-            </Tabs>
-            {loginType === 'account' && (
-              <>
-                <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: '请输入密码!',
-                    },
-                  ]}
-                />
-              </>
-            )}
-            {loginType === 'phone' && (
-              <>
-                <ProFormText
-                  fieldProps={{
-                    size: 'large',
-                    prefix: <MobileOutlined className={'prefixIcon'} />,
-                  }}
-                  name="mobile"
-                  placeholder={'手机号'}
-                  rules={[
-                    {
-                      required: true,
-                      message: '请输入手机号!',
-                    },
-                    {
-                      pattern: /^1\d{10}$/,
-                      message: '手机号格式错误!',
-                    },
-                  ]}
-                />
-                <ProFormCaptcha
-                  fieldProps={{
-                    size: 'large',
-                    prefix: <LockOutlined className={'prefixIcon'} />,
-                  }}
-                  captchaProps={{
-                    size: 'large',
-                  }}
-                  placeholder={'请输入验证码'}
-                  captchaTextRender={(timing, count) => {
-                    if (timing) {
-                      return `${count} ${'获取验证码'}`;
-                    }
-                    return '获取验证码';
-                  }}
-                  name="captcha"
-                  rules={[
-                    {
-                      required: true,
-                      message: '请输入验证码!',
-                    },
-                  ]}
-                  onGetCaptcha={async () => {
-                    message.success('获取验证码成功!验证码为:1234');
-                  }}
-                />
-              </>
-            )}
-            <div
-              style={{
-                marginBlockEnd: 24,
+            <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>
-              {/* <a
-                style={{
-                  float: 'right',
-                }}
-              >
-                忘记密码
-              </a> */}
-            </div>
+            />
+            {/* <ProFormCheckbox noStyle name="autoLogin">
+              自动登录
+            </ProFormCheckbox> */}
           </LoginForm>
         </div>
       </div>