diff --git a/src/app/user/login/login.scss b/src/app/user/login/login.scss
new file mode 100644
index 0000000..b028689
--- /dev/null
+++ b/src/app/user/login/login.scss
@@ -0,0 +1,53 @@
+//全局容器样式
+.login-container {
+  max-width: 1200px;
+  margin: 0 auto;
+  padding: 0 2rem;
+  //display: flex;
+  //flex-direction: column;
+  //justify-content: center;
+
+  .form-header {
+    //margin: auto;
+    display: flex;
+    justify-content: center;
+    font-size: 50px;
+    margin-bottom: 60px;
+  }
+
+  .form-field {
+    display: flex;
+    justify-content: center;
+    gap: 0.5rem;
+    margin-bottom: 50px;
+
+    .form-field-header {
+      width: 90px;
+      font-size: 30px;
+      color: rgba(63, 74, 73, 1);
+      margin-right: 50px;
+    }
+
+    input {
+      width: 400px;
+      padding: 0.75rem 1rem;
+      border-radius: 8px;
+      font-size: 1rem;
+      color: #2d3748;
+    }
+  }
+
+  .form-operation {
+    display: flex;
+    justify-content: center;
+    margin-top: 80px;
+
+    .form-operation-button {
+      width: 150px;
+      background: rgba(82, 102, 101, 1);
+      border: 1px solid rgba(82, 102, 101, 1);
+      border-radius: 20px;
+      margin-right: 25px;
+    }
+  }
+}
\ No newline at end of file
diff --git a/src/app/user/login/page.tsx b/src/app/user/login/page.tsx
index c48b626..a22cee0 100644
--- a/src/app/user/login/page.tsx
+++ b/src/app/user/login/page.tsx
@@ -1,12 +1,113 @@
 'use client';
-import React from 'react';
+import React, { useRef, useState } from 'react';
+import { Button } from "primereact/button";
+// 输入框
+import { InputText } from "primereact/inputtext";
+// 消息提醒
+import { Toast } from 'primereact/toast';
+// 接口传输
+import axios from "axios";
+// 页面跳转
+import { useRouter } from "next/navigation";
+// 密码
+import { Password } from 'primereact/password';
+// 样式
+import './login.scss';
 
-const EmptyPage: React.FC = () => {
-  return (
-    <div className="p-d-flex p-jc-center p-ai-center" style={{ height: '100vh' }}>
-      {"一个空页面"}
-    </div>
-  );
+export default function LoginPage() {
+    // 路由
+    const router = useRouter();
+    // 消息提醒
+    const toast = useRef<Toast>(null);
+
+    const [loginFormData, setLoginFormData] = useState({
+        username: '',
+        password: '',
+    })
+
+    // 获取userId
+    const fetchUserId = async () => {
+        try {
+            const response = await axios.get(process.env.PUBLIC_URL + `/user/getId`, {
+                params: { username: loginFormData.username , password: loginFormData.password }
+            });
+            console.log('用户id：', response.data)
+            localStorage.setItem("user", JSON.stringify({ Id: response.data }));
+        } catch (error) {
+            console.error('获取用户id失败:', error);
+            toast.current?.show({ severity: 'error', summary: 'Error', detail: '获取用户id失败' });
+        }
+    }
+
+    // 处理用户登录
+    const handleLogin = async () => {
+        try {
+            const postData = {
+                username: loginFormData.username,
+                password: loginFormData.password,
+            }
+            const response = await axios.post(process.env.PUBLIC_URL + `/user/login`, postData, {
+                // eslint-disable-next-line @typescript-eslint/no-unused-vars
+                validateStatus: (status) => true // 接受所有状态码
+            });
+
+            if (response.status === 200) {
+                console.log('用户登录成功');
+                toast.current?.show({ severity: 'success', summary: 'Success', detail: '登录成功' });
+                // 设置userId
+                fetchUserId()
+                router.push('/');
+            } else if (response.status === 406) {
+                console.log('用户名不存在');
+                toast.current?.show({ severity: 'error', summary: 'Error', detail: '用户名不存在' });
+            } else if (response.status === 408) {
+                console.error('密码错误');
+                toast.current?.show({ severity: 'error', summary: 'Error', detail: '密码错误' });
+            }
+
+        } catch (error) {
+            console.error('登录失败:', error);
+            toast.current?.show({ severity: 'error', summary: 'Error', detail: '登录失败' });
+        }
+    }
+
+    return (
+        <div className='login-container'>
+            <Toast ref={toast}></Toast>
+            <h1 className="form-header">登录</h1>
+            <div className="form-field">
+                <div className="form-field-header">
+                    <label htmlFor="username">用户名</label>
+                </div>
+                <InputText
+                    id="username"
+                    value={loginFormData.username}
+                    onChange={(e) => setLoginFormData(prev => ({
+                        ...prev, // 复制顶层所有属性
+                        username: e.target.value
+                    }))}
+                    className="w-full"
+                />
+            </div>
+            <div className="form-field">
+                <div className="form-field-header">
+                    <label htmlFor="password">密码</label>
+                </div>
+                <Password
+                    id="password"
+                    value={loginFormData.password}
+                    onChange={(e) => setLoginFormData(prev => ({
+                        ...prev,
+                        password: e.target.value
+                    }))}
+                    className="w-full"
+                    toggleMask
+                />
+            </div>
+            <div className="form-operation">
+                <Button label="确定" onClick={handleLogin} className='form-operation-button'/>
+                <Button label="注册" onClick={() => router.push("/user/register")} className='form-operation-button'/>
+            </div>
+        </div>
+    )
 };
-
-export default EmptyPage;
