You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
educoder/public/react/src/modules/courses/exercise/question/simpleAnswer.js

101 lines
4.1 KiB

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

import React,{ Component } from "react";
import {Checkbox,Radio, Input} from "antd";
import {markdownToHTML, MarkdownToHtml} from 'educoder'
import TPMMDEditor from '../../../../modules/tpm/challengesnew/TPMMDEditor'
import axios from 'axios'
class simpleAnswer extends Component{
constructor(props){
super(props);
this.mdRef = React.createRef();
this.state={
simpleValue:undefined
}
}
onChange=(value)=>{
this.setState({
simpleValue:value
})
}
onSimpleBlur=()=>{
let {simpleValue}=this.state
let question_id =this.props.questionType.question_id;
let url=`/exercise_questions/${question_id}/exercise_answers.json`;
axios.post((url),{
answer_text:simpleValue
}).then((result)=>{
if(result.status==200){
// this.setState({
// simpleValue:undefined
// })
let k= simpleAnswer == "" ? 0 :1;
this.props.changeQuestionStatus && this.props.changeQuestionStatus(parseInt(this.props.questionType.q_position)-1,k);
}
}).catch((error)=>{
console.log(error);
})
}
showAndHide=(flag)=>{
this.props.changeA_flag && this.props.changeA_flag(this.props.index,flag);
}
render(){
let {
questionType ,
exercise,
user_exercise_status,
}=this.props
let isAdmin=this.props.isAdmin();
let isStudent =this.props.isStudent();
return(
<div className="pl30 pr30">
<li className="with100">
{
user_exercise_status == 1 ?
// <div className="markdown-body answerStyle" dangerouslySetInnerHTML={{__html: markdownToHTML1(questionType.user_answer.length>0 ? questionType.user_answer[0]:"")}}></div>
<MarkdownToHtml content={questionType.user_answer.length>0 ? questionType.user_answer[0]:""} selector={'simgle_' + (this.props.index + 1)}
className="answerStyle"
></MarkdownToHtml>
:
<div>
<TPMMDEditor ref={this.mdRef} initValue={questionType.user_answer.length > 0 ? questionType.user_answer[0]:''} mdID={'simpleEditor'+questionType.question_id} placeholder="请输入你的答案"
height={150} onChange={this.onChange} onCMBlur={this.onSimpleBlur}></TPMMDEditor>
</div>
}
</li>
{
// 答案公开,且试卷已经截止
isAdmin &&
<div className="bor-top-greyE pt20 mt20">
{
exercise.answer_status == 1 || questionType.a_flag ?
<div className="standardAnswer">
<p className="mb10 font-16">参考答案</p>
{/* <li className="markdown-body answerStyle" dangerouslySetInnerHTML={{__html: markdownToHTML1(questionType.standard_answer && questionType.standard_answer[0])}}></li> */}
<MarkdownToHtml content={questionType.standard_answer && questionType.standard_answer[0]} selector={'simgle_standard_' + (this.props.index + 1)}
className="answerStyle"
></MarkdownToHtml>
<p className="mt15"><a className="color-blue font-16" onClick={()=>this.showAndHide(false)}>隐藏参考答案</a></p>
</div>
:
<a className="color-blue font-16" onClick={()=>this.showAndHide(true)}>显示参考答案</a>
}
</div>
}
{
isStudent && questionType.standard_answer ?
<div className="bor-top-greyE pt20 mt20 standardAnswer">
<p className="mb10 font-16">参考答案</p>
{/* <li className="markdown-body answerStyle" dangerouslySetInnerHTML={{__html: markdownToHTML1(questionType.standard_answer && questionType.standard_answer[0])}}></li> */}
<MarkdownToHtml content={questionType.standard_answer && questionType.standard_answer[0]} selector={'simgle_standard2_' + (this.props.index + 1)}
className="answerStyle"
></MarkdownToHtml>
</div>:""
}
</div>
)
}
}
export default simpleAnswer