fix
This commit is contained in:
@@ -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>
|
||||
);
|
||||
};
|
||||
|
||||
|
||||
@@ -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"
|
||||
/>
|
||||
|
||||
{/* 添加模板类型选择弹窗 */}
|
||||
|
||||
@@ -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 }}
|
||||
|
||||
@@ -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: (
|
||||
|
||||
@@ -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 }}
|
||||
|
||||
@@ -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"
|
||||
|
||||
Reference in New Issue
Block a user