This commit is contained in:
xuqssq
2024-12-28 15:39:48 +08:00
parent b3ac241354
commit 6e8334ecaf
18 changed files with 5017 additions and 420 deletions

View File

@@ -14,100 +14,97 @@ const Login = () => {
login(values.email, values.password);
};
return (
<div className="min-h-screen flex items-center justify-center bg-[#f5f8ff] dark:bg-gray-900">
<div className="w-full max-w-[1200px] mx-auto flex p-4 md:p-0">
{/* 左侧登录表单 */}
<div className="w-full md:w-1/2 bg-white dark:bg-gray-800 p-8 md:p-12 rounded-3xl shadow-2xl dark:shadow-gray-800/50">
<div className="mb-10 text-center">
<h1 className="text-4xl font-bold mb-3 bg-gradient-to-r from-blue-600 to-cyan-500 bg-clip-text text-transparent">
Uppeta
</h1>
<p className="text-gray-500 dark:text-gray-400">
欢迎回来请登录您的账户
</p>
</div>
<Form
form={form}
name="login"
onFinish={handleLogin}
layout="vertical"
size="large"
>
<Form.Item
name="email"
rules={[
{ required: true, message: "请输入邮箱!" },
{ type: "email", message: "请输入有效的邮箱地址!" },
]}
>
<Input
prefix={<MailOutlined className="text-gray-400" />}
placeholder="邮箱"
className="h-12 rounded-xl dark:bg-gray-700 dark:border-gray-600 dark:text-gray-100"
/>
</Form.Item>
<Form.Item
name="password"
rules={[{ required: true, message: "请输入密码!" }]}
>
<Input.Password
prefix={<LockOutlined className="text-gray-400" />}
placeholder="密码"
className="h-12 rounded-xl dark:bg-gray-700 dark:border-gray-600 dark:text-gray-100"
/>
</Form.Item>
<div className="flex justify-end mb-6">
<Link
to="/forgot-password"
className="text-blue-600 hover:text-blue-700 dark:text-blue-400 dark:hover:text-blue-300 text-sm"
>
忘记密码
</Link>
<div className="w-full max-w-[1200px] mx-auto flex p-4 md:p-0">
{/* 左侧登录表单 */}
<div className="w-full md:w-1/2 bg-white dark:bg-gray-800 p-8 md:p-12 rounded-3xl shadow-2xl dark:shadow-gray-800/50">
<div className="mb-10 text-center">
<h1 className="text-4xl font-bold mb-3 bg-gradient-to-r from-blue-600 to-cyan-500 bg-clip-text text-transparent">
Uppeta
</h1>
<p className="text-gray-500 dark:text-gray-400">
欢迎回来请登录您的账户
</p>
</div>
<Form.Item>
<Button
type="primary"
htmlType="submit"
block
loading={emailLoading}
disabled={googleLoading}
className="h-12 rounded-xl text-base font-medium bg-gradient-to-r from-blue-600 to-cyan-500 border-0 hover:from-blue-700 hover:to-cyan-600"
>
登录
</Button>
</Form.Item>
<Divider className="dark:border-gray-700">
<span className="text-gray-400"></span>
</Divider>
<Button
icon={<GoogleOutlined />}
block
onClick={signInWithGoogle}
loading={googleLoading}
disabled={emailLoading}
className="h-12 rounded-xl text-base font-medium mb-6 bg-white dark:bg-gray-700 hover:bg-gray-50 dark:hover:bg-gray-600 border border-gray-200 dark:border-gray-600"
<Form
form={form}
name="login"
onFinish={handleLogin}
layout="vertical"
size="large"
>
使用 Google 账号登录
</Button>
<Form.Item
name="email"
rules={[
{ required: true, message: "请输入邮箱!" },
{ type: "email", message: "请输入有效的邮箱地址!" },
]}
>
<Input
prefix={<MailOutlined className="text-gray-400" />}
placeholder="邮箱"
className="h-12 rounded-xl dark:bg-gray-700 dark:border-gray-600 dark:text-gray-100"
/>
</Form.Item>
</Form>
</div>
<Form.Item
name="password"
rules={[{ required: true, message: "请输入密码!" }]}
>
<Input.Password
prefix={<LockOutlined className="text-gray-400" />}
placeholder="密码"
className="h-12 rounded-xl dark:bg-gray-700 dark:border-gray-600 dark:text-gray-100"
/>
</Form.Item>
{/* 右侧图片 */}
<div className="hidden md:flex md:w-1/2 items-center justify-center p-12">
<div className="w-full h-full rounded-3xl bg-[url('https://uppeta.com/img/svg/main.svg')] bg-center bg-contain bg-no-repeat dark:opacity-90 animate-pulse-slow transform hover:scale-105 transition-all duration-500" />
<div className="flex justify-end mb-6">
<Link
to="/forgot-password"
className="text-blue-600 hover:text-blue-700 dark:text-blue-400 dark:hover:text-blue-300 text-sm"
>
忘记密码
</Link>
</div>
<Form.Item>
<Button
type="primary"
htmlType="submit"
block
loading={emailLoading}
disabled={googleLoading}
className="h-12 rounded-xl text-base font-medium bg-gradient-to-r from-blue-600 to-cyan-500 border-0 hover:from-blue-700 hover:to-cyan-600"
>
登录
</Button>
</Form.Item>
<Divider className="dark:border-gray-700">
<span className="text-gray-400"></span>
</Divider>
<Button
icon={<GoogleOutlined />}
block
onClick={signInWithGoogle}
loading={googleLoading}
disabled={emailLoading}
className="h-12 rounded-xl text-base font-medium mb-6 bg-white dark:bg-gray-700 hover:bg-gray-50 dark:hover:bg-gray-600 border border-gray-200 dark:border-gray-600"
>
使用 Google 账号登录
</Button>
</Form>
</div>
{/* 右侧图片 */}
<div className="hidden md:flex md:w-1/2 items-center justify-center p-12">
<div className="w-full h-full rounded-3xl bg-[url('https://uppeta.com/img/svg/main.svg')] bg-center bg-contain bg-no-repeat dark:opacity-90 animate-pulse-slow transform hover:scale-105 transition-all duration-500" />
</div>
</div>
</div>
</div>
);
};

View File

@@ -229,7 +229,7 @@ const ServicePage = () => {
return (
<div className="bg-gray-50 p-4 rounded-lg">
{record.attributes.sections.map((section) => (
<div key={section.key} className="mb-6 bg-white rounded-lg shadow-sm p-4">
<div key={section.key} className="mb-6 rounded-lg shadow-sm p-4">
<div className="flex items-center justify-between mb-3 border-b pb-2">
<h3 className="text-lg font-medium text-gray-800">{section.sectionName}</h3>
<Popconfirm
@@ -586,7 +586,7 @@ const ServicePage = () => {
pageSize: 10,
showTotal: (total) => `${total}`,
}}
className="bg-white rounded-lg"
className="rounded-lg"
/>
{/* 添加模板类型选择弹窗 */}

View File

@@ -264,7 +264,7 @@ const Classify = ({activeType,typeList}) => {
</div>
</div>
<div className="bg-white rounded-lg shadow-sm">
<div className="rounded-lg shadow-sm">
<Form form={form}>
<Table
scroll={{ x: true }}

View File

@@ -41,7 +41,7 @@ const ResourceManagement = () => {
activeKey={activeType}
onChange={setActiveType}
type="card"
className="bg-white rounded-lg shadow-sm"
className="rounded-lg shadow-sm"
items={TEMPLATE_TYPES.map(type => ({
key: type.key,
label: (

View File

@@ -223,7 +223,7 @@ const UnitManagement = ({ activeType, typeList }) => {
return (
<div className="p-6 bg-gray-50">
<div className="bg-white rounded-lg shadow-sm mb-6 p-4">
<div className="rounded-lg shadow-sm mb-6 p-4">
<div className="flex flex-col sm:flex-row justify-between items-start sm:items-center gap-4">
<div className="flex items-center gap-2">
<Button
@@ -261,7 +261,7 @@ const UnitManagement = ({ activeType, typeList }) => {
</div>
</div>
<div className="bg-white rounded-lg shadow-sm">
<div className="rounded-lg shadow-sm">
<Form form={form}>
<Table
scroll={{ x: true }}

View File

@@ -460,7 +460,7 @@ const StorageManager = () => {
// 修改文件列表渲染
const renderFileList = () => (
<div
className="flex-1 overflow-y-auto bg-white rounded-lg shadow-sm"
className="flex-1 overflow-y-auto rounded-lg shadow-sm"
id="scrollableDiv"
>
{/* 面包屑导航 */}
@@ -600,7 +600,7 @@ const StorageManager = () => {
return (
<div className="flex h-screen bg-gray-50">
<div className="w-1/3 p-4 flex flex-col space-y-4">
<div className="bg-white rounded-lg shadow-sm overflow-hidden">
<div className="rounded-lg shadow-sm overflow-hidden">
<Dragger
{...uploadProps}
className="px-6 py-8 hover:bg-gray-50 transition-colors group"