import React, {Component} from 'react'; import {Input, Select, Radio, Badge, message, Button} from 'antd'; import {Link} from "react-router-dom"; import TPMMDEditor from '../../tpm/challengesnew/TPMMDEditor'; import Bottomsubmit from "../../modals/Bottomsubmit"; import axios from 'axios'; import './css/TPMchallengesnew.css'; const $ = window.$; const Option = Select.Option; const RadioGroup = Radio.Group; export default class TPMchallengesnew extends Component { constructor(props) { super(props) this.exercisememoMDRef=React.createRef(); this.state = { choice_url: undefined, practice_url: undefined, go_back_url: undefined, task_pass_default: undefined, submit_url: undefined, shixunCreatePracticeGroup: undefined, optionsums:[100,200], activetype:0, setopen: false, shixunCreatePractice: undefined, onshixunsmarkvalue: undefined, shixunsskillvalue: undefined, shixunsskillvaluelist: [], tab2url: "", tab3url: "", prev_challenge:undefined, next_challenge:undefined, power: false, shixunCreatePracticetype: false, shixunsskillvaluelisttype: false, marktype:false, editPracticesendtype:false, CreatePracticesendtype:false, exec_time:20, shixunExec_timeType:false, onshixunsmarkvaluetype:false, shixunCreatePracticeGrouptype:false } } getdatas=()=>{ let id = this.props.match.params.shixunId; let checkpointId=this.props.match.params.checkpointId; let newchoice_url= "/shixuns/"+id+"/challenges/newquestion"; let newpractice_url= "/shixuns/"+id+"/challenges/new"; let newgo_back_url="/shixuns/"+id+"/challenges" if(checkpointId===undefined){ //新建模式 let url = "/shixuns/" + id + "/challenges/new.json" axios.get(url).then((response) => { this.setState({ choice_url: newchoice_url, practice_url: newpractice_url, go_back_url: newgo_back_url, position: response.data.position, task_pass_default: response.data.task_pass_default, submit_url: response.data.submit_url, checkpointId:checkpointId, exercisememoMDRefval:response.data.task_pass_default, responsedata:response.data }) this.exercisememoMDRef.current.setValue(response.data.task_pass_default||'') }).catch((error) => { console.log(error) }); }else{ //编辑模式 let url="/shixuns/"+id+"/challenges/"+checkpointId+".json?tab=0"; axios.get(url).then((response) => { let optionsum; if(response.data.difficulty===1){ optionsum=[100,200]; }else if(response.data.difficulty===2){ optionsum=[300,400,500,600]; }else if(response.data.difficulty===3){ optionsum=[700,800,900,1000] } let newprev_challenge=response.data.prev_challenge; let next_challenge=response.data.next_challenge; if (newprev_challenge != undefined) { if(newprev_challenge.st===0){ newprev_challenge = "/shixuns/" + id + "/challenges/" + newprev_challenge.id + "/editcheckpoint"; }else{ newprev_challenge = "/shixuns/" + id + "/challenges/" + newprev_challenge.id + "/editquestion"; } } if (next_challenge != undefined) { if(next_challenge.st===0){ next_challenge = "/shixuns/" + id + "/challenges/" + next_challenge.id+ "/editcheckpoint"; }else{ next_challenge = "/shixuns/" + id + "/challenges/" + next_challenge.id+ "/editquestion"; } } this.setState({ power: response.data.power, prev_challenge:newprev_challenge, next_challenge:next_challenge, choice_url: newchoice_url, practice_url: newpractice_url, go_back_url: newgo_back_url, shixunCreatePractice:response.data.subject, position:response.data.position, shixunCreatePracticeGroup:response.data.difficulty, optionsums:optionsum, onshixunsmarkvalue:response.data.score, shixunsskillvaluelist:response.data.tags, checkpointId:checkpointId, tab2url: "/shixuns/" + id + "/challenges/"+checkpointId+"/tab=2", tab3url: "/shixuns/" + id + "/challenges/"+checkpointId+"/tab=3", exercisememoMDRefval:response.data.task_pass, responsedata:response.data }) // exec_time:response.data.exec_time, if(response.data.power===false){ this.props.showNotification("你没有权限修改"); } this.exercisememoMDRef.current.setValue(response.data.task_pass||'') }).catch((error) => { console.log(error) }); } } componentDidUpdate=(prevProps, prevState)=>{ if(prevProps!=this.props){ this.getdatas() } } componentDidMount() { this.getdatas() } onshixunCreatePracticeChange = (e) => { if(e.target.value===undefined||e.target.value=== ""||e.target.value=== null){ }else{ this.setState({ shixunCreatePracticeGrouptype:false, onshixunsmarkvaluetype:false }) } let optionsum; let onshixunsmark; if(e.target.value===1){ optionsum=[100,200]; onshixunsmark=100; }else if(e.target.value===2){ optionsum=[300,400,500,600]; onshixunsmark=300; }else if(e.target.value===3){ optionsum=[700,800,900,1000] onshixunsmark=700; } this.setState({ shixunCreatePracticeGroup: e.target.value, optionsums:optionsum, onshixunsmarkvalue:onshixunsmark }) } shixunCreatePractice = (e) => { if (e.target.value === undefined|| e.target.value== ""){ }else{ this.setState({ shixunCreatePracticetype:false }) } this.setState({ shixunCreatePractice: e.target.value }) } CreatePracticesend = () => { this.setState({ CreatePracticesendtype:true }) if(this.props.status===2){ this.props.showNotification("该实训已经发布不能新建") this.setState({ CreatePracticesendtype:false }) return } let {shixunCreatePractice, shixunCreatePracticeGroup, onshixunsmarkvalue, shixunsskillvaluelist,exec_time} = this.state; if (shixunCreatePractice === undefined||shixunCreatePractice=="") { this.setState({ shixunCreatePracticetype: true, CreatePracticesendtype:false }) $('html').animate({ scrollTop: 10 }, 1000); return } if (shixunCreatePractice.match(/^[ ]*$/)) { this.props.showNotification("任务名称为空,请勿输入空格"); this.setState({ shixunCreatePracticetype: true, CreatePracticesendtype:false }) $('html').animate({ scrollTop: 10 }, 1000); return } if(shixunCreatePracticeGroup===undefined){ this.setState({ shixunCreatePracticeGrouptype:true, CreatePracticesendtype:false }) this.props.scrollToAnchor("shixunCreatePracticeGroupid"); return } if(onshixunsmarkvalue===undefined){ this.setState({ onshixunsmarkvaluetype:true, CreatePracticesendtype:false }) this.props.scrollToAnchor("input_task_tag"); return } if (shixunsskillvaluelist.length === 0) { this.setState({ shixunsskillvaluelisttype: true, CreatePracticesendtype:false }) // this.props.showNotification("技能标签为空") this.props.scrollToAnchor("input_task_tag"); return } // if(exec_time===null||exec_time===undefined||exec_time === ""){ // this.setState({ // shixunExec_timeType:true, // CreatePracticesendtype:false // }) // this.props.scrollToAnchor("exec_time"); // return // } // if (exec_time.match(/^[ ]*$/)) { // this.props.showNotification("评测时限,请勿输入空格"); // this.setState({ // shixunExec_timeType:true, // CreatePracticesendtype:false // }) // this.props.scrollToAnchor("exec_time"); // return // } const exercise_editormdvalue = this.exercisememoMDRef.current.getValue().trim(); let id = this.props.match.params.shixunId; let url = "/shixuns/" + id + "/challenges.json"; // exec_time:exec_time axios.post(url, { identifier:id, subject: shixunCreatePractice, task_pass: exercise_editormdvalue, difficulty: shixunCreatePracticeGroup, score: onshixunsmarkvalue, challenge_tag: shixunsskillvaluelist, st: 0, }).then((response) => { if (response.data.status === 1) { // $("html").animate({ scrollTop: 0 }) //window.location.href=`/shixuns/${id}/challenges/${response.data.challenge_id}/editcheckpoint?tab=2`; // window.location.href=`/shixuns/${id}/challenges/${response.data.challenge_id}/tab=2`; this.props.history.replace(`/shixuns/${id}/challenges/${response.data.challenge_id}/tab=2`); // this.setState({ // setopen: true, // CreatePracticesendtype:false, // tab2url: "/shixuns/" + id + "/challenges/"+response.data.challenge_id+"/tab=2", // tab3url: "/shixuns/" + id + "/challenges/"+response.data.challenge_id+"/tab=3", // }) } // this.props.showNotification(response.data.messages); }).catch((error) => { console.log(error) }); } onshixunsmark = (value) => { this.setState({ onshixunsmarkvalue: value }) } shixunsskill = (e) => { this.setState({ shixunsskillvalue: e.target.value }) } clickshixunsskill = () => { let {shixunsskillvalue, shixunsskillvaluelist} = this.state; if (shixunsskillvalue === "") { return } else if (shixunsskillvalue === undefined) { return } if(shixunsskillvalue == "" || shixunsskillvalue == undefined || shixunsskillvalue == null || (shixunsskillvalue.length>0 && shixunsskillvalue.trim().length == 0)){ message.error("输入为空,不能保存!"); return } let list = shixunsskillvaluelist; list.push(shixunsskillvalue); if (list.length> 0) { this.setState({ shixunsskillvaluelisttype: false, }) } this.setState({ shixunsskillvaluelist: list, shixunsskillvalue: "" }) } delshixunsskilllist = (key) => { let {shixunsskillvaluelist} = this.state; let newshixunsskillvaluelist = shixunsskillvaluelist; newshixunsskillvaluelist.splice(key, 1); this.setState({ shixunsskillvaluelist: newshixunsskillvaluelist }) } editPracticesend=()=>{ this.setState({ editPracticesendtype:true }) let {shixunCreatePractice, shixunCreatePracticeGroup, onshixunsmarkvalue, shixunsskillvaluelist,checkpointId,exec_time} = this.state; const exercise_editormdvalue = this.exercisememoMDRef.current.getValue().trim(); let id = this.props.match.params.shixunId; let url = "/shixuns/"+id+"/challenges/"+checkpointId+".json"; if (shixunCreatePractice === undefined||shixunCreatePractice=="") { this.setState({ shixunCreatePracticetype: true, editPracticesendtype:false }) // this.props.showNotification("任务名称为空") $('html').animate({ scrollTop: 10 }, 1000); return } if (shixunCreatePractice.match(/^[ ]*$/)) { this.props.showNotification("任务名称为空,请勿输入空格"); this.setState({ shixunCreatePracticetype: true, editPracticesendtype:false }) $('html').animate({ scrollTop: 10 }, 1000); return } if(shixunCreatePracticeGroup===undefined){ this.setState({ shixunCreatePracticeGrouptype:true, editPracticesendtype:false }) this.props.scrollToAnchor("shixunCreatePracticeGroupid"); return } if(onshixunsmarkvalue===undefined){ this.setState({ onshixunsmarkvaluetype:true, editPracticesendtype:false }) this.props.scrollToAnchor("input_task_tag"); return } if (shixunsskillvaluelist.length === 0) { this.setState({ shixunsskillvaluelisttype: true, editPracticesendtype:false, }) this.props.scrollToAnchor("input_task_tag"); return } // if(exec_time===null||exec_time===undefined||exec_time === ""){ // this.setState({ // shixunExec_timeType:true, // editPracticesendtype:false // }) // this.props.scrollToAnchor("exec_time"); // return // } // if (exec_time.match(/^[ ]*$/)) { // this.props.showNotification("评测时限,请勿输入空格"); // this.setState({ // shixunExec_timeType:true, // editPracticesendtype:false // }) // this.props.scrollToAnchor("exec_time"); // return // } // exec_time:exec_time axios.put(url, { tab:0, identifier:id, id:checkpointId, challenge:{ subject: shixunCreatePractice, task_pass: exercise_editormdvalue, difficulty: shixunCreatePracticeGroup, score: onshixunsmarkvalue, }, challenge_tag:shixunsskillvaluelist }).then((response) => { this.props.showNotification(response.data.messages); if (response.data.status === 1) { // window.location.href=`/shixuns/${id}/challenges/${checkpointId}/tab=2`; this.setState({ setopen: true, editPracticesendtype:false, tab2url: "/shixuns/" + id + "/challenges/"+checkpointId+"/tab=2", tab3url: "/shixuns/" + id + "/challenges/"+checkpointId+"/tab=3", }) this.props.history.replace(`/shixuns/${id}/challenges/${checkpointId}/tab=2`); // window.location.href = "/shixuns/" + id + "/challenges/"+response.data.challenge_id+"/tab=2" } }).catch((error) => { console.log(error) }); } onshixunsmarks=()=> { this.setState({ marktype:true }) } onshixunsmarkss=()=> { this.setState({ marktype:false }) } setexec_time=(e)=>{ this.setState({ exec_time:e.target.value }) } gotocheckpoint=(url)=>{ this.props.history.replace(url); } render() { let shixuntype = this.props.match.params.type; let {responsedata, shixunCreatePracticetype, shixunsskillvaluelisttype, choice_url, practice_url, go_back_url, position, task_pass_default, submit_url, setopen,checkpointId,prev_challenge,next_challenge,power, shixunCreatePractice, shixunCreatePracticeGroup, onshixunsmarkvalue, shixunsskillvalue, shixunsskillvaluelist, tab2url, tab3url,optionsums, CreatePracticesendtype,editPracticesendtype } = this.state; let options; if(optionsums!=undefined){ options = optionsums.map((d, k) => { return ( ) }) } // console.log(this.props) // console.log(this.state) //a console.log(shixunCreatePractice) return (
第{position}关:{responsedata&&responsedata.st === 0 ?"实践题":responsedata&&responsedata.st === 1?"选择题":""} {this.props.identity>4||this.props.identity===undefined||this.props.status===2||this.props.status===1?"": } {this.props.identity>4||this.props.identity===undefined||this.props.status===2||this.props.status===1?"": } {next_challenge===undefined?"": } {prev_challenge===undefined?"": }
  • 1、本关任务
  • {tab2url === "" ? "":
  • >
  • }
  • {tab2url === "" ? : 2、评测设置}
  • {tab3url === "" ? "":
  • >
  • }
  • {tab3url === "" ? : 3、参考答案}
  • *名称

    必填项:不能为空

    *过关任务

    * 难度系数: 简单 中等 困难 {this.state.shixunCreatePracticeGrouptype===true?

    必选项:不能为空
    :""}

    * 奖励经验值: (如果学员答题正确,将获得相应的经验值;如果学员成功得到经验值,那么将同时获得等值的金币奖励,如:+100经验值、+100金币)

    {this.state.onshixunsmarkvaluetype===true?:""} {this.state.onshixunsmarkvaluetype===true?
    必选项:不能为空
    :""}

    *技能标签: (学员答题正确将获得技能,否则不能获得技能)

    (回车添加标签)
    { shixunsskillvaluelist===undefined?"":shixunsskillvaluelist.length === 0 ? "" : shixunsskillvaluelist.map((itme, key) => { return (
  • this.delshixunsskilllist(key)}>
  • ) }) }
    必选项:不能为空
    {/*
    */} {/*

    * 服务配置:评测时限(S)

    */} {/*
    */} {/*
    */} {/* /!**!/*/} {/* */} {/*
    */} {/* 必填项:不能为空
    */} {/*
    */} {/*
    */} {this.props.identity>4||this.props.identity===undefined?"":
    4||this.props.identity===undefined?"none":'block'}} > {/*{checkpointId===undefined?提交:*/} {/*提交}*/} {/*取消*/} {/*取消*/} this.CreatePracticesend():()=>this.editPracticesend()} loadings={CreatePracticesendtype===true?true:editPracticesendtype===true?true:false}/>
    }
    ) } }