import React, { Component } from "react" import "./index.scss" import { HeaderBar } from "src/common/index" import Question from "src/components/ai-test/common/question" import Navigation from "src/components/ai-test/common/navigation" import { html, http } from "src/utils" import { Toast } from "antd-mobile" import Recommends from "src/components/ai-test/common/recommends" class Analysis extends Component { state = { questions: [], activeIndex: 0, userSelect: "", rightAnswer: "", userUnselect: false, } componentDidMount() { this.getAnalysis() } getAnalysis = () => { http .post(`${API.home}/sys/get_analysis`, { record_id: this.props.match.params.recordId, }) .then((res) => { const { code, msg, data } = res.data if (code === 200) { this.setState( { questions: data, }, () => { this.getAnswerInfo() } ) } else { Toast.fail(msg, 2, null, false) } }) } getAnswerInfo = () => { const { questions, activeIndex } = this.state const question = questions[activeIndex] const userAnswerIndex = question.options.findIndex( (item) => item.user_select ) const rightAnswerIndex = question.options.findIndex((item) => item.is_ans) this.setState({ userSelect: String.fromCharCode(65 + userAnswerIndex), rightAnswer: String.fromCharCode(65 + rightAnswerIndex), userUnselect: userAnswerIndex < 0, }) } componentDidUpdate(prevProps, prevState) { if (prevState.activeIndex !== this.state.activeIndex) { this.getAnswerInfo() } } render() { const { questions, activeIndex, userSelect, rightAnswer, userUnselect, } = this.state return ( <div className={"analysis-container"}> <HeaderBar title={"AI水平测试"} arrow={true} /> {!!questions.length && ( <Question activeIndex={activeIndex} question={questions[activeIndex]} /> )} <div style={{ height: "8px", backgroundColor: "#f5f5f5" }}></div> <div className="analysis"> {userUnselect ? ( <div className={"info"}>您未作答</div> ) : ( <div className="info"> 您选择的是{userSelect},正确答案是{rightAnswer} 回答 {userSelect === rightAnswer ? "正确" : "错误"} </div> )} <div className="content"> <div className="head"> <i className="icon"></i> <span>解析</span> </div> {!!questions.length && ( <div className="analysis-content" dangerouslySetInnerHTML={html(questions[activeIndex].analysis)} ></div> )} </div> </div> {!!questions.length && questions[activeIndex] && questions[activeIndex].commend_course && !!questions[activeIndex].commend_course.length && ( <Recommends recommends={questions[activeIndex].commend_course} /> )} <Navigation questions={questions} isAnalysis={true} handleClick={(index) => { this.setState({ activeIndex: index, }) }} /> </div> ) } } export default Analysis