|
|
@@ -27,6 +27,7 @@ export default function ExamCard() {
|
|
|
const [holdingCash, setHoldingCash] = useState('0');
|
|
|
const [isStarted, setIsStarted] = useState(false);
|
|
|
const [answerRecords, setAnswerRecords] = useState<AnswerRecord[]>([]);
|
|
|
+ const [totalProfitRate, setTotalProfitRate] = useState(0);
|
|
|
|
|
|
const { data: classroomData, isLoading } = useQuery({
|
|
|
queryKey: ['classroom', classroom],
|
|
|
@@ -89,6 +90,10 @@ export default function ExamCard() {
|
|
|
}));
|
|
|
|
|
|
setAnswerRecords(records);
|
|
|
+
|
|
|
+ // 计算累计收益率(单日涨幅相加)
|
|
|
+ const totalRate = answers.reduce((sum, answer) => sum + (answer.profitPercent || 0), 0);
|
|
|
+ setTotalProfitRate(totalRate);
|
|
|
}
|
|
|
} catch (error) {
|
|
|
console.error('获取用户回答记录失败:', error);
|
|
|
@@ -157,6 +162,10 @@ export default function ExamCard() {
|
|
|
index: index + 1
|
|
|
}));
|
|
|
setAnswerRecords(records);
|
|
|
+
|
|
|
+ // 计算累计收益率(单日涨幅相加)
|
|
|
+ const totalRate = answers.reduce((sum, answer) => sum + (answer.profitPercent || 0), 0);
|
|
|
+ setTotalProfitRate(totalRate);
|
|
|
}
|
|
|
);
|
|
|
} catch (error) {
|
|
|
@@ -195,6 +204,10 @@ export default function ExamCard() {
|
|
|
index: index + 1
|
|
|
}));
|
|
|
setAnswerRecords(records);
|
|
|
+
|
|
|
+ // 计算累计收益率(单日涨幅相加)
|
|
|
+ const totalRate = answers.reduce((sum, answer) => sum + (answer.profitPercent || 0), 0);
|
|
|
+ setTotalProfitRate(totalRate);
|
|
|
}
|
|
|
);
|
|
|
} catch (error) {
|
|
|
@@ -222,7 +235,7 @@ export default function ExamCard() {
|
|
|
// 监听重开
|
|
|
useEffect(() => {
|
|
|
if (!client ) return;
|
|
|
-
|
|
|
+
|
|
|
const handleCleaned = () => {
|
|
|
setCurrentDate('');
|
|
|
setCurrentPrice('0');
|
|
|
@@ -230,8 +243,9 @@ export default function ExamCard() {
|
|
|
setHoldingCash('0');
|
|
|
setIsStarted(false);
|
|
|
setAnswerRecords([]);
|
|
|
+ setTotalProfitRate(0);
|
|
|
};
|
|
|
-
|
|
|
+
|
|
|
client.on('exam:cleaned', handleCleaned);
|
|
|
return () => {
|
|
|
client.off('exam:cleaned', handleCleaned);
|
|
|
@@ -318,8 +332,13 @@ export default function ExamCard() {
|
|
|
|
|
|
{/* 信息显示 */}
|
|
|
<div className="bg-white p-6 rounded-lg shadow-md">
|
|
|
- <div className="grid grid-cols-1 gap-4 mb-4">
|
|
|
+ <div className="grid grid-cols-2 gap-4 mb-4">
|
|
|
<div className="text-gray-600">昵称: {user?.username || '未知用户'}</div>
|
|
|
+ <div className="text-gray-600 text-right">
|
|
|
+ 累计收益率: <span className={totalProfitRate >= 0 ? 'text-red-500' : 'text-green-500'}>
|
|
|
+ {totalProfitRate.toFixed(2)}%
|
|
|
+ </span>
|
|
|
+ </div>
|
|
|
</div>
|
|
|
|
|
|
{/* 表格头部 */}
|