session代码修改

main
hujunpeng 3 months ago
parent 2f5f418aa6
commit d719aba636
  1. 15
      packages/examination/src/views/exam-online/compoents/ExamDetailPage.tsx
  2. 6
      packages/examination/src/views/exam-online/compoents/ExamListPage.tsx
  3. 13
      packages/examination/src/views/exam-online/compoents/ExamPaperAnalysisDetailPage.tsx
  4. 7
      packages/examination/src/views/exam-online/compoents/ExamPaperAnalysisPage.tsx
  5. 8
      packages/examination/src/views/exam-online/exam-detail.tsx
  6. 54
      packages/examination/src/views/exam-online/exam_paper_analysis_detail.tsx

@ -3,6 +3,13 @@ import { Table, Button } from 'antd';
import { withRouter, RouteComponentProps } from 'react-router-dom'; import { withRouter, RouteComponentProps } from 'react-router-dom';
import { getDetail } from "api/exam-online/index"; import { getDetail } from "api/exam-online/index";
import ESBreadcrumbComponent from "./ESBreadcrumbComponent"; import ESBreadcrumbComponent from "./ESBreadcrumbComponent";
import CustomerRetention from "../../statistical/customerRetention";
type ExamDetailProps = {
examObj: any;
};
type CombinedProps = ExamDetailProps & RouteComponentProps;
// 定义考试参与情况数据类型,移除 serialNumber 字段 // 定义考试参与情况数据类型,移除 serialNumber 字段
type ExamParticipationItem = { type ExamParticipationItem = {
@ -100,15 +107,15 @@ const examAnswerColumns: Array<{
}, },
]; ];
const ExamStatisticsPage: React.FC<RouteComponentProps> = ({ history }) => { const ExamStatisticsPage: React.FC<CombinedProps> = ({ examObj, history }) => {
// const ExamStatisticsPage: React.FC<RouteComponentProps> = ({ history }) => {
const [examParticipationData, setExamParticipationData] = useState<ExamParticipationItem[]>([]); const [examParticipationData, setExamParticipationData] = useState<ExamParticipationItem[]>([]);
const [examAnswerData, setExamAnswerData] = useState<ExamAnswerItem[]>([]); const [examAnswerData, setExamAnswerData] = useState<ExamAnswerItem[]>([]);
useEffect(() => { useEffect(() => {
const fetchData = async () => { const fetchData = async () => {
try { try {
const examId = sessionStorage.getItem('examId'); let examId = examObj.examId;
sessionStorage.removeItem('examId');
// 调用 getDetail 方法进行初始化检索 // 调用 getDetail 方法进行初始化检索
const response = await getDetail(examId); const response = await getDetail(examId);
// 从 AxiosResponse 中提取 data 部分 // 从 AxiosResponse 中提取 data 部分
@ -155,4 +162,4 @@ const ExamStatisticsPage: React.FC<RouteComponentProps> = ({ history }) => {
); );
}; };
export default withRouter(ExamStatisticsPage); export default ExamStatisticsPage;

@ -248,8 +248,10 @@ const ExamListPage = ({ history }: { history: any }) => {
}; };
const handleDetail = (examId: number) => { const handleDetail = (examId: number) => {
sessionStorage.setItem('examId', String(examId)); history.push({
history.push('/exam-detail'); pathname: '/exam-detail',
state: { examId: String(examId) }
});
console.log('跳转到答题情况,examId:', examId); console.log('跳转到答题情况,examId:', examId);
} }

@ -7,6 +7,12 @@ import { withRouter, RouteComponentProps } from 'react-router-dom'; // 引入 wi
import { SingleQuestionProps } from './QuestionComponent'; import { SingleQuestionProps } from './QuestionComponent';
import ESBreadcrumbComponent from "./ESBreadcrumbComponent"; import ESBreadcrumbComponent from "./ESBreadcrumbComponent";
type PaperDetailProps = {
paperObj: any;
};
type CombinedProps = PaperDetailProps & RouteComponentProps;
const { Title } = Typography; const { Title } = Typography;
// 接口返回的数据结构,包含准确率和数量(这里数量每个都是 1) // 接口返回的数据结构,包含准确率和数量(这里数量每个都是 1)
@ -19,16 +25,15 @@ interface PaperData {
paperName: string; paperName: string;
questionAccuracyData: QuestionAccuracyItem[]; questionAccuracyData: QuestionAccuracyItem[];
} }
const ExamPaperAnalysisDetailPage: React.FC<CombinedProps> = ({ paperObj, history }) => {
const ExamPaperAnalysisDetailPage: React.FC<RouteComponentProps> = ({history}) => { // const ExamPaperAnalysisDetailPage: React.FC<RouteComponentProps> = ({history}) => {
const [paperData, setPaperData] = useState<PaperData | null>(null); const [paperData, setPaperData] = useState<PaperData | null>(null);
const [tableData, setTableData] = useState<SingleQuestionProps[]>([]); const [tableData, setTableData] = useState<SingleQuestionProps[]>([]);
useEffect(() => { useEffect(() => {
const fetchData = async () => { const fetchData = async () => {
try { try {
const id = sessionStorage.getItem("paperId"); let id = paperObj.paperId;
sessionStorage.removeItem("paperId");
const paperName = await getPaperName(id); const paperName = await getPaperName(id);
const questionAccuracyData = await getQuestionAccuracyData(id); const questionAccuracyData = await getQuestionAccuracyData(id);
setPaperData({ paperName, questionAccuracyData }); setPaperData({ paperName, questionAccuracyData });

@ -65,9 +65,10 @@ const ExamPaperAnalysisPage: React.FC<RouteComponentProps> = ({history}) => {
const handleShowScoreDistribution = async (paperId: string) => { const handleShowScoreDistribution = async (paperId: string) => {
try { try {
// const response = await getScoreDistribution(paperId); history.push({
sessionStorage.setItem("paperId",paperId) pathname: '/exam_paper_analysis_detail',
history.push("/exam_paper_analysis_detail"); state: { paperId: String(paperId) }
});
} catch (error) { } catch (error) {
console.error('获取成绩分布数据失败:', error); console.error('获取成绩分布数据失败:', error);
} }

@ -4,7 +4,8 @@ interface States {
resData: any resData: any
visible: boolean visible: boolean
title: string title: string
current: any current: any,
examId: any,
} }
class ExamDetail extends Component<any, States> { class ExamDetail extends Component<any, States> {
@ -14,7 +15,8 @@ class ExamDetail extends Component<any, States> {
resData: undefined, resData: undefined,
visible: false, visible: false,
title: '', title: '',
current: {} current: {},
examId: props.location.state.examId
} }
} }
@ -25,7 +27,7 @@ class ExamDetail extends Component<any, States> {
render() { render() {
return ( return (
<div className="container"> <div className="container">
<ExamDetailPage/> <ExamDetailPage examObj={{examId: this.state.examId}} history={this.props.history} location={this.props.location} match={this.props.match}/>
</div> </div>
) )
} }

@ -1,55 +1,17 @@
import React from 'react'; import React from 'react';
import QuestionComponent from './compoents/QuestionComponent'; import { useLocation } from'react-router-dom';
import ExamPaperAnalysisDetailPage from "./compoents/ExamPaperAnalysisDetailPage"; import ExamPaperAnalysisDetailPage from "./compoents/ExamPaperAnalysisDetailPage";
const ExamPaperAnalysisDetail: React.FC = () => { interface LocationState {
const questions = [ paperId: string;
{ }
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%'
}
];
const ExamPaperAnalysisDetail: React.FC = () => {
const location = useLocation<LocationState>();
const paperId = location.state.paperId;
return ( return (
<div> <div>
<ExamPaperAnalysisDetailPage <ExamPaperAnalysisDetailPage paperObj={{paperId: paperId}}/>
/>
</div> </div>
); );
}; };

Loading…
Cancel
Save