修复种子详情下载
Change-Id: I5673279933d639e1bf425fcaea3eabd447625bfc
diff --git a/src/pages/UserCenter/UserCenterPage.jsx b/src/pages/UserCenter/UserCenterPage.jsx
index b6fb20e..471d6c8 100644
--- a/src/pages/UserCenter/UserCenterPage.jsx
+++ b/src/pages/UserCenter/UserCenterPage.jsx
@@ -1,8 +1,8 @@
import React, { useState } from 'react';
-import UserNav from './UserNav.jsx'; // 显式添加.jsx扩展名
+import UserNav from './UserNav.jsx';
import UserProfile from './UserProfile.jsx';
import NewbieTasks from './NewbieTasks.jsx';
-import Header from '../../components/Header.jsx'; // 假设Header也是JSX组件
+import Header from '../../components/Header.jsx';
import './UserProfile.css';
const UserCenterPage = () => {
diff --git a/src/pages/UserCenter/UserNav.jsx b/src/pages/UserCenter/UserNav.jsx
index c272424..63b83ca 100644
--- a/src/pages/UserCenter/UserNav.jsx
+++ b/src/pages/UserCenter/UserNav.jsx
@@ -5,14 +5,14 @@
const UserNav = () => {
const location = useLocation();
- // 竖直导航栏的链接项(已添加“新手考核”)
+ // 竖直导航栏的链接项
const navLinks = [
{ to: '/user/profile', label: '个人资料' },
{ to: '/user/dynamics', label: '我的动态' },
{ to: '/user/friends', label: '我的好友' },
{ to: '/user/groups', label: '我的群组' },
{ to: '/user/collections', label: '我的收藏' },
- // { to: '/user/newbie-tasks', label: '新手考核' },
+ // { to: '/user/newbie-tasks', label: '用户考核' },
{ to: '/user/invite', label: '邀请新用户' },
{ to: '/user/recharge', label: '充值服务' },
];
diff --git a/src/pages/UserCenter/UserProfile.css b/src/pages/UserCenter/UserProfile.css
index cb71be7..edc04e1 100644
--- a/src/pages/UserCenter/UserProfile.css
+++ b/src/pages/UserCenter/UserProfile.css
@@ -7,7 +7,6 @@
background: #333;
}
-
.right-content {
flex: 3;
}
@@ -63,15 +62,6 @@
/* padding: 10% 20%; */
}
-/* .common-card {
- background-color: #e9ded2;
- border-radius: 16px;
- margin: 0 auto;
- margin-top: 40px;
- padding: 10% 20%;
- margin-left: 5%;
- margin-right: 5%;
-} */
.avatar-wrapper {
position: relative;
diff --git a/src/pages/UserCenter/UserProfile.jsx b/src/pages/UserCenter/UserProfile.jsx
index bd87c99..cf52d99 100644
--- a/src/pages/UserCenter/UserProfile.jsx
+++ b/src/pages/UserCenter/UserProfile.jsx
@@ -264,6 +264,7 @@
import React from 'react';
import UserProfileBase from './UserProfileBase';
import UserLevelExperience from './UserLevelExperience';
+import './UserProfile.css';
const UserProfile = () => {
const [userId, setUserId] = React.useState(null);
diff --git a/src/pages/UserCenter/UserRecharge.css b/src/pages/UserCenter/UserRecharge.css
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/src/pages/UserCenter/UserRecharge.css
diff --git a/src/pages/UserCenter/UserRecharge.jsx b/src/pages/UserCenter/UserRecharge.jsx
new file mode 100644
index 0000000..7a2f9b3
--- /dev/null
+++ b/src/pages/UserCenter/UserRecharge.jsx
@@ -0,0 +1,129 @@
+
+// export default Recharge;
+import React, { useState } from 'react';
+import axios from 'axios';
+import { useUser } from '../../context/UserContext';
+
+const UserRecharge = () => {
+ const [amount, setAmount] = useState('');
+ const [loading, setLoading] = useState(false);
+ const [message, setMessage] = useState('');
+ const [showPayDialog, setShowPayDialog] = useState(false);
+ const [payProcessing, setPayProcessing] = useState(false);
+
+ const { user } = useUser();
+ const userId = user?.userId;
+
+ // 点击提交充值,打开模拟支付弹窗
+ const handleSubmit = () => {
+ if (!userId) {
+ setMessage('未登录,无法充值');
+ return;
+ }
+ if (!amount || isNaN(amount) || Number(amount) <= 0) {
+ setMessage('请输入有效的充值金额');
+ return;
+ }
+ setMessage('');
+ setShowPayDialog(true);
+ };
+
+ // 模拟支付弹窗点击“确认支付”
+ const handlePayConfirm = async () => {
+ setPayProcessing(true);
+ setMessage('');
+
+ // 模拟支付等待 2 秒
+ setTimeout(async () => {
+ try {
+ // 支付成功后调用后端充值接口
+ const response = await axios.post('/echo/user/recharge', null, {
+ params: {
+ userId,
+ amount: Number(amount),
+ },
+ });
+
+ setMessage(response.data.message || '充值成功!');
+ setAmount('');
+ } catch (error) {
+ setMessage(error.response?.data?.message || '充值失败,请重试');
+ } finally {
+ setPayProcessing(false);
+ setShowPayDialog(false);
+ }
+ }, 2000);
+ };
+
+ // 取消支付弹窗
+ const handlePayCancel = () => {
+ setShowPayDialog(false);
+ setMessage('支付已取消');
+ };
+
+ return (
+ <div className="recharge-page" style={{ maxWidth: 400, margin: 'auto', padding: 20 }}>
+ <h2>充值服务</h2>
+ <div style={{ marginBottom: 12 }}>
+ <label>
+ 充值金额:
+ <input
+ type="number"
+ min="1"
+ value={amount}
+ onChange={(e) => setAmount(e.target.value)}
+ disabled={loading || payProcessing}
+ style={{ marginLeft: 8, width: 120 }}
+ />
+ </label>
+ </div>
+ <button onClick={handleSubmit} disabled={loading || payProcessing}>
+ {loading || payProcessing ? '处理中...' : '提交充值'}
+ </button>
+
+ {message && <p style={{ marginTop: 12 }}>{message}</p>}
+
+ {/* 模拟支付弹窗 */}
+ {showPayDialog && (
+ <div
+ style={{
+ position: 'fixed',
+ top: 0, left: 0, right: 0, bottom: 0,
+ backgroundColor: 'rgba(0,0,0,0.5)',
+ display: 'flex',
+ justifyContent: 'center',
+ alignItems: 'center',
+ zIndex: 1000,
+ }}
+ >
+ <div
+ style={{
+ backgroundColor: '#fff',
+ padding: 20,
+ borderRadius: 8,
+ width: 300,
+ textAlign: 'center',
+ boxShadow: '0 0 10px rgba(0,0,0,0.25)',
+ }}
+ >
+ <h3>模拟支付</h3>
+ <p>支付金额:{amount} 元</p>
+
+ {payProcessing ? (
+ <p>支付处理中,请稍候...</p>
+ ) : (
+ <>
+ <button onClick={handlePayConfirm} style={{ marginRight: 10 }}>
+ 确认支付
+ </button>
+ <button onClick={handlePayCancel}>取消</button>
+ </>
+ )}
+ </div>
+ </div>
+ )}
+ </div>
+ );
+};
+
+export default UserRecharge;