修改个人中心、发布种子、兴趣小组
Change-Id: I73caa8ef511ad9ae12a0cc49fc0edb5ccb0b2a74
diff --git a/src/components/Auth/logo.svg b/src/components/Auth/logo.svg
index 38d62ff..57d89ee 100644
--- a/src/components/Auth/logo.svg
+++ b/src/components/Auth/logo.svg
@@ -9,10 +9,10 @@
<path d="M54 27H28V53H54V27Z" fill="white"/>
</mask>
<g mask="url(#mask0_193_2)">
-<path d="M30.1665 43.7918C30.1666 40.271 32.3334 38.937 33.9583 38.3852C35.5831 37.8335 36.6667 37.8335 38.2915 36.2085C39.9163 34.5835 39.9168 31.3335 43.1666 30.2501C46.4163 29.1668 50.2575 30.7918 51.2914 34.5835C52.3253 38.3751 49.3961 43.2501 48.0419 44.8751C46.6877 46.5001 43.9784 49.2085 39.3747 49.7501C34.7711 50.2918 30.1664 47.3126 30.1665 43.7918Z" fill="#4A3B34" stroke="#FBF2E3" stroke-width="2" stroke-linejoin="round"/>
-<path d="M34.5 38.3986C38.2917 43.25 43.7083 38.3986 39.9167 33.5Z" fill="#4A3B34"/>
+<path d="M30.1665 43.7918C30.1666 40.271 32.3334 38.937 33.9583 38.3852C35.5831 37.8335 36.6667 37.8335 38.2915 36.2085C39.9163 34.5835 39.9168 31.3335 43.1666 30.2501C46.4163 29.1668 50.2575 30.7918 51.2914 34.5835C52.3253 38.3751 49.3961 43.2501 48.0419 44.8751C46.6877 46.5001 43.9784 49.2085 39.3747 49.7501C34.7711 50.2918 30.1664 47.3126 30.1665 43.7918Z" fill="#5F4437" stroke="#FBF2E3" stroke-width="2" stroke-linejoin="round"/>
+<path d="M34.5 38.3986C38.2917 43.25 43.7083 38.3986 39.9167 33.5Z" fill="#5F4437"/>
<path d="M34.5 38.3986C38.2917 43.25 43.7083 38.3986 39.9167 33.5" stroke="#FBF2E3" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
-<path d="M33.9585 38.3851C35.5833 37.8333 36.667 37.8333 38.2918 36.2083C39.9166 34.5833 39.917 31.3333 43.1668 30.25" fill="#4A3B34"/>
+<path d="M33.9585 38.3851C35.5833 37.8333 36.667 37.8333 38.2918 36.2083C39.9166 34.5833 39.917 31.3333 43.1668 30.25" fill="#5F4437"/>
<path d="M33.9585 38.3851C35.5833 37.8333 36.667 37.8333 38.2918 36.2083C39.9166 34.5833 39.917 31.3333 43.1668 30.25" stroke="#FBF2E3" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
</g>
</g>
diff --git a/src/components/Header.css b/src/components/Header.css
index 859cff9..f322e13 100644
--- a/src/components/Header.css
+++ b/src/components/Header.css
@@ -73,14 +73,14 @@
/* 鼠标悬停时 */
.nav-item:hover {
- background-color: #5c270c; /* 背景色变深 */
+ background-color: #5F4437; /* 背景色变深 */
color: #FBF2E3; /* 字体颜色与背景形成对比 */
transform: scale(1.05); /* 微微放大,增加互动感 */
}
/* 选中状态 */
.nav-item.active {
- background-color: #5c270c; /* 活动状态时的背景色 */
+ background-color: #5F4437; /* 活动状态时的背景色 */
color: #FBF2E3; /* 活动状态时的字体颜色 */
font-weight: bold;
border-radius: 16px; /* 更圆的圆角效果 */
diff --git a/src/logo.svg b/src/logo.svg
index 38d62ff..57d89ee 100644
--- a/src/logo.svg
+++ b/src/logo.svg
@@ -9,10 +9,10 @@
<path d="M54 27H28V53H54V27Z" fill="white"/>
</mask>
<g mask="url(#mask0_193_2)">
-<path d="M30.1665 43.7918C30.1666 40.271 32.3334 38.937 33.9583 38.3852C35.5831 37.8335 36.6667 37.8335 38.2915 36.2085C39.9163 34.5835 39.9168 31.3335 43.1666 30.2501C46.4163 29.1668 50.2575 30.7918 51.2914 34.5835C52.3253 38.3751 49.3961 43.2501 48.0419 44.8751C46.6877 46.5001 43.9784 49.2085 39.3747 49.7501C34.7711 50.2918 30.1664 47.3126 30.1665 43.7918Z" fill="#4A3B34" stroke="#FBF2E3" stroke-width="2" stroke-linejoin="round"/>
-<path d="M34.5 38.3986C38.2917 43.25 43.7083 38.3986 39.9167 33.5Z" fill="#4A3B34"/>
+<path d="M30.1665 43.7918C30.1666 40.271 32.3334 38.937 33.9583 38.3852C35.5831 37.8335 36.6667 37.8335 38.2915 36.2085C39.9163 34.5835 39.9168 31.3335 43.1666 30.2501C46.4163 29.1668 50.2575 30.7918 51.2914 34.5835C52.3253 38.3751 49.3961 43.2501 48.0419 44.8751C46.6877 46.5001 43.9784 49.2085 39.3747 49.7501C34.7711 50.2918 30.1664 47.3126 30.1665 43.7918Z" fill="#5F4437" stroke="#FBF2E3" stroke-width="2" stroke-linejoin="round"/>
+<path d="M34.5 38.3986C38.2917 43.25 43.7083 38.3986 39.9167 33.5Z" fill="#5F4437"/>
<path d="M34.5 38.3986C38.2917 43.25 43.7083 38.3986 39.9167 33.5" stroke="#FBF2E3" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
-<path d="M33.9585 38.3851C35.5833 37.8333 36.667 37.8333 38.2918 36.2083C39.9166 34.5833 39.917 31.3333 43.1668 30.25" fill="#4A3B34"/>
+<path d="M33.9585 38.3851C35.5833 37.8333 36.667 37.8333 38.2918 36.2083C39.9166 34.5833 39.917 31.3333 43.1668 30.25" fill="#5F4437"/>
<path d="M33.9585 38.3851C35.5833 37.8333 36.667 37.8333 38.2918 36.2083C39.9166 34.5833 39.917 31.3333 43.1668 30.25" stroke="#FBF2E3" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
</g>
</g>
diff --git a/src/pages/Forum/posts-detail/PostDetailPage.css b/src/pages/Forum/posts-detail/PostDetailPage.css
index c47601e..65584af 100644
--- a/src/pages/Forum/posts-detail/PostDetailPage.css
+++ b/src/pages/Forum/posts-detail/PostDetailPage.css
@@ -12,6 +12,9 @@
max-width: 960px;
margin: 0 auto;
padding: 24px 32px;
+ /* 卡片居中 */
+ margin: 0 auto;
+ margin-top: 40px;
}
.post-detail h1 {
@@ -47,7 +50,7 @@
display: flex;
gap: 16px;
margin-bottom: 24px;
- margin-left: 710px;
+ justify-content: flex-end; /*靠右对齐*/
}
.icon-btn {
@@ -154,6 +157,7 @@
}
.comment-options button {
+ justify-content: flex-end; /*靠右对齐*/
padding: 6px 14px;
background-color: #BA929A;
color: #fff;
@@ -161,7 +165,6 @@
border-radius: 6px;
font-size: 14px;
cursor: pointer;
- transition: background-color 0.2s ease;
}
.comment-options button:hover {
diff --git a/src/pages/Forum/posts-detail/PostDetailPage.jsx b/src/pages/Forum/posts-detail/PostDetailPage.jsx
index a272fb8..01e1648 100644
--- a/src/pages/Forum/posts-detail/PostDetailPage.jsx
+++ b/src/pages/Forum/posts-detail/PostDetailPage.jsx
@@ -4,6 +4,7 @@
import { getPostDetail, getPostComments, likePost, unlikePost, addCommentToPost, collectPost } from './api'; // 引入你的 API 函数
import './PostDetailPage.css';
import { useUser } from '../../../context/UserContext'; // 注意路径
+import Header from '../../../components/Header';
const PostDetailPage = () => {
const { postId } = useParams(); // 获取帖子ID
@@ -149,6 +150,7 @@
return (
<div className="post-detail-page">
+ <Header />
{loading ? (
<p>加载中...</p>
) : errorMsg ? (
diff --git a/src/pages/Forum/posts-main/ForumPage.css b/src/pages/Forum/posts-main/ForumPage.css
index aa0a5c3..db3a654 100644
--- a/src/pages/Forum/posts-main/ForumPage.css
+++ b/src/pages/Forum/posts-main/ForumPage.css
@@ -1,6 +1,6 @@
.forum-page {
color: #fff;
- background-color: #4A3B34;
+ background-color: #5F4437;
min-height: 100vh;
font-family: Arial, sans-serif;
}
@@ -17,7 +17,7 @@
.post-card {
text-decoration: none; /* 移除链接的下划线 */
- background-color: #4A3B34;
+ background-color: #5F4437;
padding: 15px;
border-radius: 10px;
position: relative;
diff --git a/src/pages/Forum/posts-main/ForumPage.jsx b/src/pages/Forum/posts-main/ForumPage.jsx
index bf2aa63..577d336 100644
--- a/src/pages/Forum/posts-main/ForumPage.jsx
+++ b/src/pages/Forum/posts-main/ForumPage.jsx
@@ -18,8 +18,7 @@
<Header />
<div className="toolbar">
<CreatePostButton />
- <SearchBar onSearch={handleSearch} />
-
+ <SearchBar onSearch={handleSearch} />
</div>
<PostList search={searchQuery} />
</div>
diff --git a/src/pages/Forum/posts-main/components/PostList.css b/src/pages/Forum/posts-main/components/PostList.css
index 59533ff..ee4d951 100644
--- a/src/pages/Forum/posts-main/components/PostList.css
+++ b/src/pages/Forum/posts-main/components/PostList.css
@@ -5,6 +5,9 @@
padding: 30px;
}
+.post-actions {
+ justify-content: flex-end; /*靠右对齐*/
+}
.post-card {
background-color: #e9ded2;
border: 1px solid #000000;
diff --git a/src/pages/FriendMoments/FriendMoments.css b/src/pages/FriendMoments/FriendMoments.css
index 89c84c7..c95bdcf 100644
--- a/src/pages/FriendMoments/FriendMoments.css
+++ b/src/pages/FriendMoments/FriendMoments.css
@@ -1,5 +1,5 @@
/* .friend-moments {
- background-color: #5c3f31;
+ background-color: #5F4437;
color: white;
}
.header {
diff --git a/src/pages/InterestGroup/InterestGroup.css b/src/pages/InterestGroup/InterestGroup.css
index a52ba5f..1de6510 100644
--- a/src/pages/InterestGroup/InterestGroup.css
+++ b/src/pages/InterestGroup/InterestGroup.css
@@ -1,158 +1,207 @@
/* 设置整个兴趣小组页面的背景色和布局 */
.interest-group-container {
- background-color: #f8f1f1; /* 粉色背景 */
+ background-color: #5F4437;
+ width: 100%;
+ height: 2000px;
+}
+
+/* 页面标题样式 */
+h1 {
+ text-align: center;
+ color: #5F4437; /* 深棕色 */
+ font-size: 2rem;
+ margin-bottom: 30px;
+}
+
+/* 筛选、搜索和排序容器样式 */
+.filter-search-sort-container {
+ display: flex;
+ justify-content: center;
+ gap: 20px;
+ margin-bottom: 20px;
+}
+
+/* 筛选部分样式 */
+.filter, .sort {
+ margin-bottom: 0;
+ /* 文字在左边,下拉框在右边 */
+ display: flex;
+ justify-content: space-between;
+ align-items: center;
+ gap: 5px;
+}
+
+.search input {
+ padding: 10px;
+ width: 200px;
+ margin-left: 100px;
+ border-radius: 6px;
+ border: 1px solid #e0c4a1; /* 浅棕色 */
+ background-color: #fff5f5; /* 浅粉色 */
+ color: #5F4437;
+ font-size: 1rem;
+}
+
+.filter select,
+.sort select {
+ padding: 10px;
+ width: 200px;
+ border-radius: 6px;
+ border: 1px solid #e0c4a1; /* 浅棕色 */
+ background-color: #fff5f5; /* 浅粉色 */
+ color: #5F4437;
+ font-size: 1rem;
+}
+
+/* 激活时的输入框样式 */
+.filter select:focus,
+.search input:focus,
+.sort select:focus {
+ border-color: #b38867; /* 较深的棕色 */
+ outline: none;
+}
+
+.group-list {
+ margin-top: 5%;
+ display: flex;
+ flex-wrap: wrap;
+ gap: 20px; /* 控制 item 之间的间距 */
+ justify-content: flex-start; /* 让不足三项时左对齐 */
+}
+
+.group-item {
+ flex: 0 0 calc(33.333% - 20px); /* 每个占1/3减去间距 */
+ box-sizing: border-box;
+ border: 1px solid #e0c4a1;
+ border-radius: 8px;
+ overflow: hidden;
+ background-color: #fff;
+ box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1);
+ transition: transform 0.3s ease-in-out;
+ padding: 15px;
+}
+
+
+.group-item:hover {
+ transform: translateY(-5px); /* 鼠标悬停时小组项上升效果 */
+}
+
+.group-content {
+ display: flex;
+ gap: 15px;
+}
+
+.group-info-right {
+ display: flex;
+ flex-direction: column;
+ align-items: flex-start;
+ justify-content: flex-start;
+}
+
+/* 小组描述样式 */
+.group-description {
+ color: #333;
+ font-size: 1rem;
+ line-height: 1.4;
+ margin-top: 10px;
+ margin-bottom: 10px;
+}
+
+/* 小组标签样式 */
+.group-tags {
+ display: flex;
+ gap: 10px;
+}
+
+.tag {
+ background-color: #f0f0f0;
+ color: #5F4437;
+ padding: 5px 10px;
+ border-radius: 4px;
+ font-size: 0.9rem;
+}
+
+/* 分页按钮 */
+.pagination {
+ text-align: center;
+ margin-top: 30px;
+}
+
+button {
+ padding: 10px 20px;
+ margin: 0 10px;
+ background-color: #5F4437; /* 深棕色 */
+ color: white;
+ border: none;
+ border-radius: 6px;
+ cursor: pointer;
+ font-size: 1rem;
+ transition: background-color 0.3s ease;
+}
+
+button:disabled {
+ background-color: #d6d6d6;
+ cursor: not-allowed;
+}
+
+button:hover {
+ background-color: #b38867; /* 深棕色的 hover 效果 */
+}
+
+/* 错误信息的样式 */
+.error {
+ color: #ff6f61; /* 红色 */
+ text-align: center;
+ margin-top: 20px;
+}
+
+/* 加载中的提示 */
+.loading {
+ color: #5F4437;
+ text-align: center;
+ margin-top: 20px;
+ font-size: 1.2rem;
+}
+
+/* 响应式设计: 确保在小屏幕下布局能适应 */
+@media (max-width: 768px) {
+ .group-item {
+ width: 48%;
+ }
+
+ .filter-search-sort-container {
+ flex-direction: column;
+ }
+
+ .filter select,
+ .search input,
+ .sort select {
width: 100%;
- }
-
- /* 页面标题样式 */
- h1 {
- text-align: center;
- color: #5c3f31; /* 深棕色 */
- font-size: 2rem;
- margin-bottom: 30px;
- }
-
- /* 筛选部分样式 */
- .filter, .search, .sort {
- margin-bottom: 20px;
- text-align: center;
- }
-
- .filter select,
- .search input,
- .sort select {
- padding: 10px;
- width: 200px;
- border-radius: 6px;
- border: 1px solid #e0c4a1; /* 浅棕色 */
- background-color: #fff5f5; /* 浅粉色 */
- color: #5c3f31;
- font-size: 1rem;
- }
-
- /* 激活时的输入框样式 */
- .filter select:focus,
- .search input:focus,
- .sort select:focus {
- border-color: #b38867; /* 较深的棕色 */
- outline: none;
- }
-
- /* 小组列表样式 */
- .group-list {
- display: flex;
- flex-wrap: wrap;
- gap: 20px;
- justify-content: space-between;
- }
-
- /* 每个小组的容器 */
- .group-item {
- width: 30%;
- border: 1px solid #e0c4a1; /* 浅棕色边框 */
- border-radius: 8px;
- overflow: hidden;
- background-color: #fff;
- box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1);
- transition: transform 0.3s ease-in-out;
- }
-
- .group-item:hover {
- transform: translateY(-5px); /* 鼠标悬停时小组项上升效果 */
- }
-
- /* 小组封面图样式 */
- .group-cover {
- width: 100%;
- height: 180px;
- object-fit: cover;
- transition: opacity 0.3s ease;
- }
-
- /* 小组信息区域 */
- .group-info {
- padding: 15px;
- background-color: #f8f1f1; /* 浅粉色背景 */
- }
-
- .group-info h2 {
- font-size: 1.2em;
- color: #5c3f31;
margin-bottom: 10px;
}
-
- /* 小组描述部分 */
- .group-info p {
- font-size: 1rem;
- color: #5c3f31;
+}
+
+@media (max-width: 480px) {
+ .group-item {
+ width: 100%;
}
-
- /* 分页按钮 */
- .pagination {
- text-align: center;
- margin-top: 30px;
+
+ .filter select,
+ .search input,
+ .sort select {
+ width: 100%;
+ font-size: 0.9rem;
}
-
- button {
- padding: 10px 20px;
- margin: 0 10px;
- background-color: #5c3f31; /* 深棕色 */
- color: white;
- border: none;
- border-radius: 6px;
- cursor: pointer;
- font-size: 1rem;
- transition: background-color 0.3s ease;
- }
-
- button:disabled {
- background-color: #d6d6d6;
- cursor: not-allowed;
- }
-
- button:hover {
- background-color: #b38867; /* 深棕色的 hover 效果 */
- }
-
- /* 错误信息的样式 */
- .error {
- color: #ff6f61; /* 红色 */
- text-align: center;
- margin-top: 20px;
- }
-
- /* 加载中的提示 */
- .loading {
- color: #5c3f31;
- text-align: center;
- margin-top: 20px;
- font-size: 1.2rem;
- }
-
- /* 响应式设计: 确保在小屏幕下布局能适应 */
- @media (max-width: 768px) {
- .group-item {
- width: 48%;
- }
-
- .filter select,
- .search input,
- .sort select {
- width: 100%;
- margin-bottom: 10px;
- }
- }
-
- @media (max-width: 480px) {
- .group-item {
- width: 100%;
- }
-
- .filter select,
- .search input,
- .sort select {
- width: 100%;
- font-size: 0.9rem;
- }
- }
-
\ No newline at end of file
+}
+
+.interest-group-card {
+ background-color: #e9ded2;
+ border-radius: 16px;
+ max-width: 70%;
+ max-height: 100%;
+ /* 卡片居中 */
+ margin: 0 auto;
+ margin-top: 40px;
+ /* padding: 24px 32px; */
+ padding: 3% 3%
+}
\ No newline at end of file
diff --git a/src/pages/InterestGroup/InterestGroup.jsx b/src/pages/InterestGroup/InterestGroup.jsx
index 8a8d67b..eb9ed41 100644
--- a/src/pages/InterestGroup/InterestGroup.jsx
+++ b/src/pages/InterestGroup/InterestGroup.jsx
@@ -97,97 +97,128 @@
}
};
+ const handleSearch = () => {
+ // 触发搜索逻辑,通过修改 name 状态重新请求数据
+ setPage(1);
+ };
+
return (
<div className="interest-group-container">
{/* Header 组件放在页面最上方 */}
<Header />
+ <div className="interest-group-card">
+ {/* <h1>兴趣小组列表</h1> */}
+ {/* 水平排列的筛选、搜索和排序容器 */}
+ <div className="filter-search-sort-container">
+ {/* 分类筛选 */}
+ <div className="filter">
+ <label>分类:</label>
+ <select onChange={handleCategoryChange} value={category} style={{ width: '150px' }}>
+ <option value="">全部</option>
+ <option value="影视">影视</option>
+ <option value="游戏">游戏</option>
+ <option value="学习">学习</option>
+ <option value="体育">体育</option>
+ <option value="其他">其他</option>
+ </select>
+ </div>
- <h1>兴趣小组列表</h1>
- {/* 分类筛选 */}
- <div className="filter">
- <label>分类:</label>
- <select onChange={handleCategoryChange} value={category}>
- <option value="">全部</option>
- <option value="影视">影视</option>
- <option value="游戏">游戏</option>
- <option value="学习">学习</option>
- <option value="体育">体育</option>
- <option value="其他">其他</option>
- </select>
- </div>
+ {/* 排序 */}
+ <div className="sort">
+ <label>排序:</label>
+ <select onChange={handleSortChange} value={sortBy} style={{ width: '150px' }}>
+ <option value="member_count">按成员数排序</option>
+ <option value="name">按名称排序</option>
+ <option value="category">按分类排序</option>
+ </select>
+ </div>
- {/* 搜索框 */}
- <div className="search">
- <label>搜索:</label>
- <input
- type="text"
- value={name}
- onChange={handleSearchChange}
- placeholder="输入小组名称搜索"
- />
- </div>
-
- {/* 排序 */}
- <div className="sort">
- <label>排序:</label>
- <select onChange={handleSortChange} value={sortBy}>
- <option value="member_count">按成员数排序</option>
- <option value="name">按名称排序</option>
- <option value="category">按分类排序</option>
- </select>
- </div>
-
- {/* 加载中提示 */}
- {loading && <p>加载中...</p>}
-
- {/* 错误提示 */}
- {error && <p className="error">{error}</p>}
-
- {/* 小组列表 */}
- {!loading && !error && (
- <div className="group-list">
- {groups.map((group) => (
- <div className="group-item" key={group.group_id}>
- <img
- src={group.cover_image}
- alt={group.name}
- className="group-cover"
- />
- <div className="group-info">
- <h2>{group.name}</h2>
- <p>{group.description}</p>
- <p>成员数:{group.member_count}</p>
- <p>分类:{group.category}</p>
- {/* 加入小组按钮 */}
- <button
- onClick={() => handleJoinGroup(group.group_id)}
- disabled={joinStatus[group.group_id] === '加入成功'}
- >
- {joinStatus[group.group_id] === '加入成功' ? '已加入' : '加入小组'}
- </button>
- {/* 显示加入状态 */}
- {joinStatus[group.group_id] && <p>{joinStatus[group.group_id]}</p>}
- </div>
- </div>
- ))}
+ {/* 搜索框 */}
+ <div className="search">
+ <input
+ type="text"
+ value={name}
+ onChange={handleSearchChange}
+ placeholder="输入小组名称搜索"
+ />
+ <button onClick={handleSearch} style={{ backgroundColor: '#BA929A', color: 'white' , padding: '5px 10px'}}>搜索</button>
+ </div>
</div>
- )}
- {/* 分页 */}
- <div className="pagination">
- <button onClick={() => handlePageChange(page - 1)} disabled={page <= 1}>
- 上一页
- </button>
- <span>第 {page} 页 / 共 {totalPages} 页</span>
- <button
- onClick={() => handlePageChange(page + 1)}
- disabled={page >= totalPages}
- >
- 下一页
- </button>
+ {/* 加载中提示 */}
+ {loading && <p>加载中...</p>}
+
+ {/* 错误提示 */}
+ {error && <p className="error">{error}</p>}
+
+ {/* 小组列表 */}
+ {!loading && !error && (
+ <div className="group-list">
+ {groups.map((group) => (
+ <div className="group-item" key={group.group_id}>
+ <div className="group-content">
+ <img
+ style={{ width: '40%', height: '40%'}}
+ src={group.cover_image}
+ alt={group.name}
+ className="group-cover"
+ />
+ <div
+ className="group-info-right"
+ style={{
+ display: 'flex',
+ flexDirection: 'column',
+ alignItems: 'flex-start',
+ gap: '4px', // 控制元素之间的垂直间距
+ }}
+ >
+ <h3 style={{ margin: 0 }}>{group.name}</h3>
+ <p style={{ color: '#BA929A', margin: 0 }}>{group.member_count}人加入了小组</p>
+ <button
+ onClick={() => handleJoinGroup(group.group_id)}
+ disabled={joinStatus[group.group_id] === '加入成功'}
+ style={{
+ background: 'none',
+ color: '#007bff',
+ padding: 0,
+ marginTop: '4px',
+ /*左对齐*/
+ textAlign: 'left',
+ marginLeft: '0',
+ cursor: joinStatus[group.group_id] === '加入成功' ? 'default' : 'pointer',
+ }}
+ >
+ {joinStatus[group.group_id] === '加入成功' ? '已加入' : '+加入小组'}
+ </button>
+ </div>
+
+ </div>
+ <div className="group-description">
+ <p>{group.description}</p>
+ </div>
+ <p>分类:{group.category}</p>
+
+ </div>
+ ))}
+ </div>
+ )}
+
+ {/* 分页 */}
+ <div className="pagination">
+ <button onClick={() => handlePageChange(page - 1)} disabled={page <= 1}>
+ 上一页
+ </button>
+ <span>第 {page} 页 / 共 {totalPages} 页</span>
+ <button
+ onClick={() => handlePageChange(page + 1)}
+ disabled={page >= totalPages}
+ >
+ 下一页
+ </button>
+ </div>
</div>
</div>
);
};
-export default InterestGroup;
+export default InterestGroup;
\ No newline at end of file
diff --git a/src/pages/PublishSeed/PublishSeed.css b/src/pages/PublishSeed/PublishSeed.css
index 61b1405..5f83d89 100644
--- a/src/pages/PublishSeed/PublishSeed.css
+++ b/src/pages/PublishSeed/PublishSeed.css
@@ -1,145 +1,81 @@
+.pub-card {
+ /* background-color: #e9ded2;
+ border-radius: 16px;
+ margin-top: 10%;
+ margin-left: 10%;
+ margin-right: 10%;
+ padding: 5% 10%; */
+ background-color: #e9ded2;
+ border-radius: 16px;
+ max-width: 70%;
+ max-height: 100%;
+ /* 卡片居中 */
+ margin: 0 auto;
+ margin-top: 40px;
+ /* padding: 24px 32px; */
+ padding: 3% 3%
+}
+
+.pub-categoty select {
+ padding: 1%;
+ width: 20%;
+ border-radius: 6px;
+ border: 1px solid #e0c4a1; /* 浅棕色 */
+ background-color: #fff5f5; /* 浅粉色 */
+ color: #5F4437;
+ font-size: 1rem;
+ margin-bottom: 2%;
+}
+
+.title-tag input {
+ padding: 1%;
+ width: 100%;
+ border-radius: 6px;
+ border: 1px solid #e0c4a1;
+ background-color: #fff5f5;
+ color: #5F4437;
+ font-size: 1rem;
+ margin-bottom: 2%;
+}
+.discription textarea {
+ padding: 1%;
+ width: 100%;
+ border-radius: 6px;
+ border: 1px solid #e0c4a1;
+ background-color: #fff5f5;
+ color: #5F4437;
+ font-size: 1rem;
+ margin-bottom: 2%;
+}
+.seed-file input {
+ /* padding: 1%; */
+ width: 100%;
+ /* border-radius: 6px; */
+ /* border: 1px solid #e0c4a1; */
+ /* background-color: #fff5f5; */
+ color: #5F4437;
+ font-size: 1rem;
+ margin-bottom: 2%;
+}
+
+.cover-image input {
+ padding: 1%;
+ width: 100%;
+ border-radius: 6px;
+ border: 1px solid #e0c4a1;
+ background-color: #fff5f5;
+ color: #5F4437;
+ font-size: 1rem;
+ margin-bottom: 2%;
+}
+
.publish-seed-container {
- background-color: #5c3f31;
- color: white;
- padding: 20px;
- border-radius: 12px;
- box-shadow: 0 2px 10px rgba(0, 0, 0, 0.1);
- }
-
- h2 {
- text-align: center;
- font-size: 1.8rem;
- margin-bottom: 20px;
- color: #fff;
- }
-
- .message {
- text-align: center;
- margin-bottom: 20px;
- color: #ff6f61;
- font-weight: bold;
- }
-
- .form-group {
- margin-bottom: 20px;
- }
-
- label {
- font-size: 1rem;
- margin-bottom: 8px;
- display: block;
- }
-
- input[type="text"],
- textarea,
- select,
- input[type="url"],
- input[type="file"] {
- width: 100%;
- padding: 8px 12px;
- border-radius: 6px;
- border: 1px solid #ddd;
- background-color: #f9f9f9;
- color: #333;
- font-size: 1rem;
- }
-
- textarea {
- height: 100px;
- resize: none;
- }
-
- input[type="file"] {
- padding: 6px;
- }
-
- input[type="url"] {
- padding: 8px 12px;
- }
-
- input[type="text"]:focus,
- textarea:focus,
- select:focus,
- input[type="url"]:focus,
- input[type="file"]:focus {
- outline: none;
- border-color: #b38867;
- }
-
- button[type="submit"] {
- padding: 12px 20px;
- border: none;
- background-color: #007bff;
- color: white;
- font-size: 1rem;
- border-radius: 6px;
- cursor: pointer;
- width: 100%;
- transition: background-color 0.2s ease;
- }
-
- button[type="submit"]:disabled {
- background-color: #d6d6d6;
- cursor: not-allowed;
- }
-
- button[type="submit"]:hover {
- background-color: #0056b3;
- }
-
- input[type="text"],
- input[type="url"],
- select {
- margin-bottom: 10px;
- }
-
- input[type="file"] {
- margin-bottom: 10px;
- }
-
- .publish-seed-container .form-group:last-child {
- margin-bottom: 0;
- }
-
- .publish-seed-container .form-group label {
- color: #ddd;
- font-size: 1rem;
- }
-
- .publish-seed-container .form-group input,
- .publish-seed-container .form-group select,
- .publish-seed-container .form-group textarea {
- background-color: #4e3b30;
- color: white;
- }
-
- .publish-seed-container .form-group input:focus,
- .publish-seed-container .form-group select:focus,
- .publish-seed-container .form-group textarea:focus {
- border-color: #b38867;
- outline: none;
- }
-
- input[type="file"] {
- border: none;
- background-color: #4e3b30;
- }
-
- input[type="file"]:focus {
- outline: none;
- }
-
- .form-group button {
- background-color: #5c3f31;
- color: #fff;
- padding: 12px;
- font-size: 1rem;
- border-radius: 8px;
- cursor: pointer;
- width: 100%;
- }
-
- .form-group button:hover {
- background-color: #b38867;
- }
-
\ No newline at end of file
+ background-color: #5F4437;
+ color: white;
+ border-radius: 12px;
+ box-shadow: 0 2px 10px rgba(0, 0, 0, 0.1);
+}
+
+.upload-button {
+ width: 100%;
+}
\ No newline at end of file
diff --git a/src/pages/PublishSeed/PublishSeed.jsx b/src/pages/PublishSeed/PublishSeed.jsx
index 7ead11d..c61440f 100644
--- a/src/pages/PublishSeed/PublishSeed.jsx
+++ b/src/pages/PublishSeed/PublishSeed.jsx
@@ -1,6 +1,7 @@
import React, { useState } from 'react';
import axios from 'axios';
import Header from '../../components/Header'; // 导入 Header 组件
+import './PublishSeed.css'
const API_BASE = process.env.REACT_APP_API_BASE;
@@ -58,9 +59,10 @@
return (
<div className="publish-seed-container">
<Header /> {/* 在这里插入导航栏 */}
+ <div className="pub-card">
{message && <div className="message">{message}</div>}
<form onSubmit={handleSubmit} encType="multipart/form-data">
- <div className="form-group">
+ <div className="title-tag">
<label>标题</label>
<input
type="text"
@@ -70,7 +72,7 @@
/>
</div>
- <div className="form-group">
+ <div className="discription">
<label>描述</label>
<textarea
value={description}
@@ -79,7 +81,7 @@
/>
</div>
- <div className="form-group">
+ <div className="title-tag">
<label>标签 (逗号分隔)</label>
<input
type="text"
@@ -90,7 +92,7 @@
/>
</div>
- <div className="form-group">
+ <div className="pub-categoty">
<label>分类</label>
<select
value={category}
@@ -103,7 +105,7 @@
</select>
</div>
- <div className="form-group">
+ <div className="seed-file">
<label>种子文件</label>
<input
type="file"
@@ -120,15 +122,24 @@
onChange={(e) => setImageUrl(e.target.value)}
placeholder="例如:http://example.com/images/cover.jpg"
required
+ style={{ padding: '1%',
+ width: '100%',
+ borderRadius: '6px',
+ border: '1px solid #e0c4a1',
+ backgroundColor: '#fff5f5',
+ color: '#5F4437',
+ fontSize: '1rem',
+ marginBottom: '2%'}}
/>
</div>
- <div className="form-group">
+ <div className="upload-button">
<button type="submit" disabled={isLoading}>
{isLoading ? '正在上传...' : '上传种子'}
</button>
</div>
</form>
+ </div>
</div>
);
};
diff --git a/src/pages/SeedList/SeedDetail/SeedDetail.css b/src/pages/SeedList/SeedDetail/SeedDetail.css
index ce4d70e..242fd83 100644
--- a/src/pages/SeedList/SeedDetail/SeedDetail.css
+++ b/src/pages/SeedList/SeedDetail/SeedDetail.css
@@ -1,30 +1,123 @@
-.seed-detail-container {
- padding: 20px;
- }
-
- .seed-header {
- display: flex;
- }
-
- .cover-image {
- width: 200px;
- height: auto;
- margin-right: 20px;
- border-radius: 8px;
- }
-
- .seed-basic-info p, .seed-media-info p {
- margin: 6px 0;
- }
-
- .uploader-info {
- margin-top: 30px;
- border-top: 1px solid #ccc;
- padding-top: 10px;
- }
-
- .uploader-info .avatar {
- width: 60px;
- border-radius: 50%;
- }
+.seed-detail-page {
+ background-color: #4b322b;
+ min-height: 100vh;
+ padding: 32px 0;
+ font-family: 'Helvetica Neue', sans-serif;
+ color: #333;
+}
+
+.seed-detail {
+ background-color: #e9ded2;
+ border-radius: 16px;
+ max-width: 960px;
+ margin: 0 auto;
+ margin-top: 40px;
+ padding: 24px 32px;
+}
+
+.seed-detail h1 {
+ font-size: 24px;
+ font-weight: bold;
+ margin-bottom: 16px;
+ color: #4b322b;
+}
+
+.seed-header-container {
+ display: flex;
+ justify-content: space-between;
+ align-items: flex-start;
+}
+
+.seed-info {
+ flex: 1;
+}
+
+.seed-basic-info p,
+.seed-media-info p {
+ font-size: 16px;
+ margin: 6px 0;
+}
+
+.cover-image {
+ width: 200px;
+ height: auto;
+ margin-left: 20px;
+ border-radius: 8px;
+}
+
+.comment-options {
+ margin-top: 8px;
+ display: flex;
+ justify-content: flex-end; /* 将 space-between 改为 flex-end */
+}
+
+.action-buttons {
+ justify-content: flex-end; /*靠右对齐*/
+ display: flex;
+ gap: 10px;
+ margin-bottom: 20px;
+}
+
+.btn {
+ justify-content: flex-end; /*靠右对齐*/
+ padding: 6px 14px;
+ background-color: #BA929A;
+ color: #fff;
+ border: none;
+ border-radius: 6px;
+ font-size: 14px;
+ cursor: pointer;
+}
+
+.btn:hover {
+ background-color: #6d4e37;
+}
+
+.comments-section {
+ margin-top: 20px;
+}
+
+.comments-section h3 {
+ margin-bottom: 10px;
+ font-size: 20px;
+ color: #4b322b;
+}
+
+.comments-list {
+ border-top: 1px solid #ccc;
+ padding-top: 10px;
+}
+
+.comment {
+ border-bottom: 1px solid #ccc;
+ padding: 10px 0;
+}
+
+.comment-user {
+ font-weight: bold;
+ margin-bottom: 5px;
+}
+
+.comment-content {
+ margin: 0;
+}
+
+.add-comment-form {
+ margin-top: 10px;
+}
+
+.add-comment-form textarea {
+ width: 100%;
+ padding: 10px;
+ resize: vertical;
+ min-height: 80px;
+ border: 1px solid #bbb;
+ border-radius: 6px;
+ margin-bottom: 10px;
+}
+
+.error-text {
+ color: #f00;
+ text-align: center;
+}
\ No newline at end of file
diff --git a/src/pages/SeedList/SeedDetail/SeedDetail.jsx b/src/pages/SeedList/SeedDetail/SeedDetail.jsx
index 464da3d..b99fcc5 100644
--- a/src/pages/SeedList/SeedDetail/SeedDetail.jsx
+++ b/src/pages/SeedList/SeedDetail/SeedDetail.jsx
@@ -7,83 +7,161 @@
const API_BASE = process.env.REACT_APP_API_BASE;
const SeedDetail = () => {
- const { seed_id } = useParams();
- const [seed, setSeed] = useState(null);
- const [error, setError] = useState(null);
+ const { seed_id } = useParams();
+ const [seed, setSeed] = useState(null);
+ const [error, setError] = useState(null);
+ const [comments, setComments] = useState([]);
+ const [newComment, setNewComment] = useState('');
- useEffect(() => {
- axios
- .get(`${API_BASE}/echo/seeds/${seed_id}`)
- .then((res) => {
- if (res.data.status === 'success') {
- setSeed(res.data.seed);
- } else {
- setError('未能获取种子信息');
+ useEffect(() => {
+ axios
+ .get(`${API_BASE}/echo/seeds/${seed_id}`)
+ .then((res) => {
+ if (res.data.status === 'success') {
+ setSeed(res.data.seed);
+ } else {
+ setError('未能获取种子信息');
+ }
+ })
+ .catch(() => {
+ setError('获取种子详情失败');
+ });
+
+ // 模拟获取评论数据,实际需要调用 API
+ axios.get(`${API_BASE}/echo/seeds/${seed_id}/comments`)
+ .then((res) => {
+ if (res.data.status === 'success') {
+ setComments(res.data.comments);
+ }
+ })
+ .catch(() => {
+ console.log('获取评论失败');
+ });
+ }, [seed_id]);
+
+ const handleDownload = async () => {
+ if (seed) {
+ const peer_id = 'echo-' + Math.random().toString(36).substring(2, 10);
+ const ip = '127.0.0.1';
+ const port = 6881;
+ const uploaded = 0;
+ const downloaded = 0;
+ const left = 0;
+
+ try {
+ const response = await axios.get(`${API_BASE}/echo/seeds/${seed.seed_id}/download`, {
+ params: { peer_id, ip, port, uploaded, downloaded, left },
+ responseType: 'blob'
+ });
+
+ const blob = new Blob([response.data], { type: 'application/x-bittorrent' });
+ const downloadUrl = URL.createObjectURL(blob);
+ const a = document.createElement('a');
+ a.href = downloadUrl;
+ a.download = `${seed.seed_id}.torrent`;
+ a.click();
+ URL.revokeObjectURL(downloadUrl);
+ } catch (error) {
+ console.error('下载失败:', error);
+ alert('下载失败,请稍后再试。');
+ }
}
- })
- .catch(() => {
- setError('获取种子详情失败');
- });
- }, [seed_id]);
+ };
- if (error) {
+ const handleCollect = () => {
+ // 这里可以添加收藏逻辑,调用相应 API
+ alert('已收藏');
+ };
+
+ const handleAddComment = () => {
+ if (newComment.trim()) {
+ // 这里可以添加评论逻辑,调用相应 API
+ setComments([...comments, { content: newComment, user: '用户' }]);
+ setNewComment('');
+ }
+ };
+
+ if (error) {
+ return (
+ <div className="seed-detail-page">
+ <Header />
+ <div className="seed-detail">
+ <p className="error-text">{error}</p>
+ </div>
+ </div>
+ );
+ }
+
+ if (!seed) {
+ return (
+ <div className="seed-detail-page">
+ <Header />
+ <div className="seed-detail">
+ <p>加载中...</p>
+ </div>
+ </div>
+ );
+ }
+
return (
- <div>
- <Header />
- <div className="seed-detail-container">
- <p className="error">{error}</p>
+ <div className="seed-detail-page">
+ <Header />
+ <div className="seed-detail">
+ <h1>{seed.title}</h1>
+ <div className="seed-header-container">
+ <div className="seed-info">
+ <div className="seed-basic-info">
+ <p><strong>分类:</strong>{seed.category}</p>
+ <p><strong>发布时间:</strong>{new Date(seed.upload_time).toLocaleString()}</p>
+ <p><strong>标签:</strong>{seed.tags.join(' / ')}</p>
+ <p><strong>简介:</strong>{seed.description}</p>
+ <p><strong>大小:</strong>{seed.size} GB</p>
+ <p><strong>分辨率:</strong>{seed.resolution}</p>
+ <p><strong>片长:</strong>{seed.duration}</p>
+ <p><strong>地区:</strong>{seed.region}</p>
+ <p><strong>下载次数:</strong>{seed.downloads}</p>
+ </div>
+ {(seed.category === '电影' || seed.category === '电视剧') && (
+ <div className="seed-media-info">
+ <p><strong>导演:</strong>{seed.director}</p>
+ <p><strong>编剧:</strong>{seed.writer}</p>
+ <p><strong>主演:</strong>{seed.actors.join(' / ')}</p>
+ </div>
+ )}
+ </div>
+ <img src={seed.cover_url} alt={seed.title} className="cover-image" />
+ </div>
+ <div className="action-buttons">
+ <button className="btn" onClick={handleDownload}>下载</button>
+ <button className="btn" onClick={handleCollect}>收藏</button>
+ </div>
+ <hr className="divider" />
+ {/* 评论部分 */}
+ <h3>评论区</h3>
+ <div className="comments-section">
+ <div className="comments-list">
+ {comments.map((comment, index) => (
+ <div key={index} className="comment">
+ <p className="comment-user">{comment.user}</p>
+ <p className="comment-content">{comment.content}</p>
+ </div>
+ ))}
+ </div>
+ <div className="add-comment-form">
+ <textarea
+ placeholder="输入你的评论..."
+ value={newComment}
+ onChange={(e) => setNewComment(e.target.value)}
+ />
+ <div className="comment-options">
+ <button className="btn" onClick={handleAddComment}>发布评论</button>
+ </div>
+ </div>
+ </div>
+ </div>
</div>
- </div>
);
- }
-
- if (!seed) {
- return (
- <div>
- <Header />
- <div className="seed-detail-container">
- <p>加载中...</p>
- </div>
- </div>
- );
- }
-
- return (
- <div>
- <Header />
- <div className="seed-detail-container">
- <div className="seed-header">
- <img src={seed.cover_url} alt={seed.title} className="cover-image" />
- <div className="seed-basic-info">
- <h1>{seed.title}</h1>
- <p><strong>分类:</strong>{seed.category}</p>
- <p><strong>标签:</strong>{seed.tags.join(' / ')}</p>
- <p><strong>简介:</strong>{seed.description}</p>
- <p><strong>大小:</strong>{seed.size} GB</p>
- <p><strong>分辨率:</strong>{seed.resolution}</p>
- <p><strong>片长:</strong>{seed.duration}</p>
- <p><strong>地区:</strong>{seed.region}</p>
- <p><strong>发布时间:</strong>{new Date(seed.upload_time).toLocaleString()}</p>
- <p><strong>下载次数:</strong>{seed.downloads}</p>
- </div>
- </div>
-
- {(seed.category === '电影' || seed.category === '电视剧') && (
- <div className="seed-media-info">
- <p><strong>导演:</strong>{seed.director}</p>
- <p><strong>编剧:</strong>{seed.writer}</p>
- <p><strong>主演:</strong>{seed.actors.join(' / ')}</p>
- </div>
- )}
-
- <div className="uploader-info">
- <h3>发种人</h3>
- <img src={seed.user.avatar_url} alt={seed.user.username} className="avatar" />
- <p>{seed.user.username}</p>
- </div>
- </div>
- </div>
- );
};
export default SeedDetail;
+
\ No newline at end of file
diff --git a/src/pages/SeedList/SeedList.css b/src/pages/SeedList/SeedList.css
index 94c70aa..724411c 100644
--- a/src/pages/SeedList/SeedList.css
+++ b/src/pages/SeedList/SeedList.css
@@ -1,6 +1,6 @@
.main-page {
- background-color: #5c3f31;
+ background-color: #5F4437;
color: white;
}
@@ -10,7 +10,7 @@
justify-content: center;
gap: 16px;
padding: 10px 20px;
- background-color: #5c3f31;
+ background-color: #5F4437;
}
.search-input {
@@ -28,7 +28,7 @@
/* 标签过滤 */
.tag-filters {
- background-color: #5c3f31;
+ background-color: #5F4437;
display: flex;
justify-content: center;
flex-wrap: wrap;
@@ -72,7 +72,7 @@
/* 卡片展示 */
.seed-list-content {
padding: 20px;
- background-color: #5c3f31;
+ background-color: #5F4437;
}
.seed-list-card {
@@ -233,7 +233,7 @@
margin-bottom: 12px;
}
.friend-moments {
- background-color: #5c3f31;
+ background-color: #5F4437;
color: white;
}
\ No newline at end of file
diff --git a/src/pages/UserCenter/UserNav/UserNav.css b/src/pages/UserCenter/UserNav/UserNav.css
index 783fcdc..0c7ed6f 100644
--- a/src/pages/UserCenter/UserNav/UserNav.css
+++ b/src/pages/UserCenter/UserNav/UserNav.css
@@ -1,43 +1,46 @@
/* 竖直导航栏的容器 */
.user-nav-container {
- width: 250px;
- background-color: #f4f4f4;
- padding-top: 20px;
- border-right: 1px solid #ccc;
- height: 100%; /* 让容器填充整个父容器高度 */
- display: flex;
- flex-direction: column;
- align-items: stretch; /* 确保所有导航项都拉伸 */
- }
-
- /* 导航栏样式 */
- .user-nav {
- display: flex;
- flex-direction: column;
- padding: 0;
- margin: 0;
- flex-grow: 1; /* 使导航栏占据剩余空间 */
- }
-
- /* 每一项导航链接 */
- .user-nav-item {
- padding: 15px 20px;
- text-align: left;
- text-decoration: none;
- color: #333;
- font-size: 16px;
- border-bottom: 1px solid #e0e0e0;
- transition: background-color 0.3s ease;
- }
-
- /* 鼠标悬浮时的背景颜色 */
- .user-nav-item:hover {
- background-color: #ddd;
- }
-
- /* 激活项的样式 */
- .user-nav-item.active {
- background-color: #3b8cff;
- color: white;
- }
-
\ No newline at end of file
+ margin-right: -5%;
+ margin-left: 5%;
+ width: 150px; /* 增加容器宽度 */
+ background-color: #5F4437;
+ padding-top: 20px;
+ height: 100%; /* 让容器填充整个父容器高度 */
+ display: flex;
+ flex-direction: column;
+ align-items: stretch; /* 确保所有导航项都拉伸 */
+}
+
+/* 导航栏样式 */
+.user-nav {
+ display: flex;
+ flex-direction: column;
+ padding: 0;
+ margin: 0;
+ flex-grow: 1; /* 使导航栏占据剩余空间 */
+}
+
+/* 每一项导航链接 */
+.user-nav-item {
+ /* padding: 35px 20px; */
+ border-radius: 16px; /* 圆角边框 */
+ padding: 25% 10%;
+ text-decoration: none;
+ color: #ddd;
+ font-size: 16px;
+ /* 删除 border-bottom 属性以移除分隔线 */
+ transition: background-color 0.3s ease;
+ /*文字居中显示*/
+ text-align: center;
+}
+
+/* 鼠标悬浮时的背景颜色 */
+.user-nav-item:hover {
+ background-color: #5a1414;
+}
+
+/* 激活项的样式 */
+.user-nav-item.active {
+ background-color: #BA929A;
+ color: white;
+}
\ No newline at end of file
diff --git a/src/pages/UserCenter/UserProfile.css b/src/pages/UserCenter/UserProfile.css
index d4d9476..988c1c8 100644
--- a/src/pages/UserCenter/UserProfile.css
+++ b/src/pages/UserCenter/UserProfile.css
@@ -1,13 +1,20 @@
.user-center {
- max-width: 800px;
- margin: 0 auto;
- padding: 20px;
+ max-width: 100%;
+ padding: 3%;
font-family: Arial, sans-serif;
+ display: flex;
+ gap: 10%;
+ background-color: #5F4437;
+}
+
+
+.right-content {
+ flex: 3;
}
.profile-header {
+ margin-top: -20%;
text-align: center;
- margin-bottom: 20px;
}
.avatar {
@@ -23,6 +30,7 @@
}
.profile-details {
+ margin-top: 20%;
font-size: 1.2em;
}
@@ -37,4 +45,14 @@
.error {
color: red;
text-align: center;
-}
+}
+
+.common-card {
+ background-color: #e9ded2;
+ border-radius: 16px;
+ margin: 0 auto;
+ margin-top: 40px;
+ padding: 10% 20%;
+ margin-left: 5%;
+ margin-right: 5%;
+}
\ No newline at end of file
diff --git a/src/pages/UserCenter/UserProfile.jsx b/src/pages/UserCenter/UserProfile.jsx
index ff9aeff..78701f1 100644
--- a/src/pages/UserCenter/UserProfile.jsx
+++ b/src/pages/UserCenter/UserProfile.jsx
@@ -2,6 +2,7 @@
import axios from 'axios';
import './UserProfile.css';
import UserNav from './UserNav/UserNav'; // 导入 UserNav 组件
+import Header from '../../components/Header';
const API_BASE = process.env.REACT_APP_API_BASE;
@@ -47,36 +48,43 @@
}
return (
+ <div className="user-profile-container">
+ <Header /> {/* 引入 Header 组件 */}
<div className="user-center">
- <div className="user-nav-container">
+ <div className="user-nav-container">
<UserNav /> {/* 引入导航栏 */}
</div>
- <div className="profile-header">
- <img
- src={userProfile.avatar_url}
- alt={userProfile.nickname}
- className="avatar"
- />
- <h1>{userProfile.nickname}</h1>
- </div>
+ <div className="common-card">
+ <div className="right-content">
+ <div className="profile-header">
+ <img
+ src={userProfile.avatar_url}
+ alt={userProfile.nickname}
+ className="avatar"
+ />
+ <h1>{userProfile.nickname}</h1>
+ </div>
- <div className="profile-details">
- <h2>个人资料</h2>
- <p><strong>邮箱:</strong>{userProfile.email}</p>
- <p><strong>性别:</strong>{userProfile.gender}</p>
- <p><strong>个人简介:</strong>{userProfile.bio}</p>
- <p><strong>兴趣:</strong>{userProfile.interests.join(', ')}</p>
- <p><strong>等级:</strong>{userProfile.level}</p>
- <p><strong>经验:</strong>{userProfile.experience}</p>
- <p><strong>上传量:</strong>{userProfile.upload_amount}</p>
- <p><strong>下载量:</strong>{userProfile.download_amount}</p>
- <p><strong>分享率:</strong>{(userProfile.share_rate * 100).toFixed(2)}%</p>
- <p><strong>VIP:</strong>{userProfile.is_vip ? '是' : '否'}</p>
- {userProfile.is_vip && <p><strong>VIP等级:</strong>{userProfile.vip_type}</p>}
- <p><strong>加入时间:</strong>{new Date(userProfile.joined_date).toLocaleDateString()}</p>
+ <div className="profile-details">
+ {/* <h2>个人资料</h2> */}
+ <p><strong>邮箱:</strong>{userProfile.email}</p>
+ <p><strong>性别:</strong>{userProfile.gender}</p>
+ <p><strong>个人简介:</strong>{userProfile.bio}</p>
+ <p><strong>兴趣:</strong>{userProfile.interests.join(', ')}</p>
+ <p><strong>等级:</strong>{userProfile.level}</p>
+ <p><strong>经验:</strong>{userProfile.experience}</p>
+ <p><strong>上传量:</strong>{userProfile.upload_amount}</p>
+ <p><strong>下载量:</strong>{userProfile.download_amount}</p>
+ <p><strong>分享率:</strong>{(userProfile.share_rate * 100).toFixed(2)}%</p>
+ <p><strong>VIP:</strong>{userProfile.is_vip ? '是' : '否'}</p>
+ {userProfile.is_vip && <p><strong>VIP等级:</strong>{userProfile.vip_type}</p>}
+ <p><strong>加入时间:</strong>{new Date(userProfile.joined_date).toLocaleDateString()}</p>
+ </div>
+ </div>
+ </div>
</div>
</div>
);
};
-export default UserProfile;
+export default UserProfile;