diff --git a/packages/examination/src/views/exam-online/compoents/ExamDetailPage.tsx b/packages/examination/src/views/exam-online/compoents/ExamDetailPage.tsx index ccae265..dc0976c 100644 --- a/packages/examination/src/views/exam-online/compoents/ExamDetailPage.tsx +++ b/packages/examination/src/views/exam-online/compoents/ExamDetailPage.tsx @@ -3,6 +3,13 @@ import { Table, Button } from 'antd'; import { withRouter, RouteComponentProps } from 'react-router-dom'; import { getDetail } from "api/exam-online/index"; import ESBreadcrumbComponent from "./ESBreadcrumbComponent"; +import CustomerRetention from "../../statistical/customerRetention"; + +type ExamDetailProps = { + examObj: any; +}; + +type CombinedProps = ExamDetailProps & RouteComponentProps; // 定义考试参与情况数据类型,移除 serialNumber 字段 type ExamParticipationItem = { @@ -100,15 +107,15 @@ const examAnswerColumns: Array<{ }, ]; -const ExamStatisticsPage: React.FC = ({ history }) => { +const ExamStatisticsPage: React.FC = ({ examObj, history }) => { +// const ExamStatisticsPage: React.FC = ({ history }) => { const [examParticipationData, setExamParticipationData] = useState([]); const [examAnswerData, setExamAnswerData] = useState([]); useEffect(() => { const fetchData = async () => { try { - const examId = sessionStorage.getItem('examId'); - sessionStorage.removeItem('examId'); + let examId = examObj.examId; // 调用 getDetail 方法进行初始化检索 const response = await getDetail(examId); // 从 AxiosResponse 中提取 data 部分 @@ -155,4 +162,4 @@ const ExamStatisticsPage: React.FC = ({ history }) => { ); }; -export default withRouter(ExamStatisticsPage); \ No newline at end of file +export default ExamStatisticsPage; diff --git a/packages/examination/src/views/exam-online/compoents/ExamListPage.tsx b/packages/examination/src/views/exam-online/compoents/ExamListPage.tsx index 9d76a12..971ed82 100644 --- a/packages/examination/src/views/exam-online/compoents/ExamListPage.tsx +++ b/packages/examination/src/views/exam-online/compoents/ExamListPage.tsx @@ -248,8 +248,10 @@ const ExamListPage = ({ history }: { history: any }) => { }; const handleDetail = (examId: number) => { - sessionStorage.setItem('examId', String(examId)); - history.push('/exam-detail'); + history.push({ + pathname: '/exam-detail', + state: { examId: String(examId) } + }); console.log('跳转到答题情况,examId:', examId); } diff --git a/packages/examination/src/views/exam-online/compoents/ExamPaperAnalysisDetailPage.tsx b/packages/examination/src/views/exam-online/compoents/ExamPaperAnalysisDetailPage.tsx index 24f0cdc..2f454f1 100644 --- a/packages/examination/src/views/exam-online/compoents/ExamPaperAnalysisDetailPage.tsx +++ b/packages/examination/src/views/exam-online/compoents/ExamPaperAnalysisDetailPage.tsx @@ -7,6 +7,12 @@ import { withRouter, RouteComponentProps } from 'react-router-dom'; // 引入 wi import { SingleQuestionProps } from './QuestionComponent'; import ESBreadcrumbComponent from "./ESBreadcrumbComponent"; +type PaperDetailProps = { + paperObj: any; +}; + +type CombinedProps = PaperDetailProps & RouteComponentProps; + const { Title } = Typography; // 接口返回的数据结构,包含准确率和数量(这里数量每个都是 1) @@ -19,16 +25,15 @@ interface PaperData { paperName: string; questionAccuracyData: QuestionAccuracyItem[]; } - -const ExamPaperAnalysisDetailPage: React.FC = ({history}) => { +const ExamPaperAnalysisDetailPage: React.FC = ({ paperObj, history }) => { +// const ExamPaperAnalysisDetailPage: React.FC = ({history}) => { const [paperData, setPaperData] = useState(null); const [tableData, setTableData] = useState([]); useEffect(() => { const fetchData = async () => { try { - const id = sessionStorage.getItem("paperId"); - sessionStorage.removeItem("paperId"); + let id = paperObj.paperId; const paperName = await getPaperName(id); const questionAccuracyData = await getQuestionAccuracyData(id); setPaperData({ paperName, questionAccuracyData }); diff --git a/packages/examination/src/views/exam-online/compoents/ExamPaperAnalysisPage.tsx b/packages/examination/src/views/exam-online/compoents/ExamPaperAnalysisPage.tsx index e817a37..be2fa77 100644 --- a/packages/examination/src/views/exam-online/compoents/ExamPaperAnalysisPage.tsx +++ b/packages/examination/src/views/exam-online/compoents/ExamPaperAnalysisPage.tsx @@ -65,9 +65,10 @@ const ExamPaperAnalysisPage: React.FC = ({history}) => { const handleShowScoreDistribution = async (paperId: string) => { try { - // const response = await getScoreDistribution(paperId); - sessionStorage.setItem("paperId",paperId) - history.push("/exam_paper_analysis_detail"); + history.push({ + pathname: '/exam_paper_analysis_detail', + state: { paperId: String(paperId) } + }); } catch (error) { console.error('获取成绩分布数据失败:', error); } diff --git a/packages/examination/src/views/exam-online/exam-detail.tsx b/packages/examination/src/views/exam-online/exam-detail.tsx index 113133c..e2e9df9 100644 --- a/packages/examination/src/views/exam-online/exam-detail.tsx +++ b/packages/examination/src/views/exam-online/exam-detail.tsx @@ -4,7 +4,8 @@ interface States { resData: any visible: boolean title: string - current: any + current: any, + examId: any, } class ExamDetail extends Component { @@ -14,7 +15,8 @@ class ExamDetail extends Component { resData: undefined, visible: false, title: '', - current: {} + current: {}, + examId: props.location.state.examId } } @@ -25,7 +27,7 @@ class ExamDetail extends Component { render() { return (
- +
) } diff --git a/packages/examination/src/views/exam-online/exam_paper_analysis_detail.tsx b/packages/examination/src/views/exam-online/exam_paper_analysis_detail.tsx index a046c85..058bc6b 100644 --- a/packages/examination/src/views/exam-online/exam_paper_analysis_detail.tsx +++ b/packages/examination/src/views/exam-online/exam_paper_analysis_detail.tsx @@ -1,55 +1,17 @@ import React from 'react'; -import QuestionComponent from './compoents/QuestionComponent'; +import { useLocation } from'react-router-dom'; import ExamPaperAnalysisDetailPage from "./compoents/ExamPaperAnalysisDetailPage"; -const ExamPaperAnalysisDetail: React.FC = () => { - const questions = [ - { - question_types: 1, - question_content: '一天有多少小时?', - answer: 'B', - options: 'A:12小时,B:24小时,C:36小时', - question_number: 1, - accuracyRate: '90%' - }, - { - question_types: 2, - question_content: '以下哪些是水果?', - answer: 'A,C', - options: 'A:苹果,B:黄瓜,C:香蕉', - question_number: 2, - accuracyRate: '80%' - }, - { - question_types: 2, - question_content: '以下哪些是水果?', - answer: 'A,C', - options: 'A:苹果,B:黄瓜,C:香蕉', - question_number: 2, - accuracyRate: '80%' - }, - { - question_types: 2, - question_content: '以下哪些是水果?', - answer: 'A,C', - options: 'A:苹果,B:黄瓜,C:香蕉', - question_number: 2, - accuracyRate: '80%' - }, - { - question_types: 2, - question_content: '以下哪些是水果?', - answer: 'A,C', - options: 'A:苹果,B:黄瓜,C:香蕉', - question_number: 2, - accuracyRate: '80%' - } - ]; +interface LocationState { + paperId: string; +} +const ExamPaperAnalysisDetail: React.FC = () => { + const location = useLocation(); + const paperId = location.state.paperId; return (
- +
); };