import React, {Component} from "react"; import {Link, NavLink} from 'react-router-dom'; import {WordsBtn, ActionBtn, SnackbarHOC, getImageUrl} from 'educoder'; import axios from 'axios'; import { notification, Spin, Table, Pagination, Drawer, Input, Tooltip } from "antd"; import {parabola} from './animation/parabola' import Headplugselections from "./component/Headplugselections"; import QuestionModal from "./component/QuestionModal"; import QuestionModals from "./component/QuestionModals"; import Contentpart from "./component/Contentpart"; import {TPMIndexHOC} from "../tpm/TPMIndexHOC"; import NoneData from './component/NoneData'; import './questioncss/questioncom.css'; import SiderBars from "../question/component/SiderBars"; import QuestionModalys from "./component/QuestionModalys"; import Certifiedprofessional from "../modals/Certifiedprofessional"; var Undoclickable=true; var myGrandtotal=false; class Question extends Component { constructor(props) { super(props); this.state = { count: 50, defaultActiveKey:"1", Headertop: "", Footerdown: "", visible: false, placement: 'right', modalsType: false, modalsTypeInaudit:false, modalsTypes:false, titilesm: "在平台审核后,所有成员均可使用试题", titiless: "是否设置为公开?", titilesms:"单选题", titbool: false, Contentdata: [], difficulty: null, visiblemys: false, visiblemyss: false, item_type: null, keyword: null, timuid: null, items_count: 0, basket_list: [], completion_questions_count: 0, judgement_questions_count: 0, multiple_questions_count: 0, practical_questions_count: 0, program_questions_count: 0, single_questions_count: 0, subjective_questions_count: 0, page:1, per_page:10, disciplinesdata:[], discipline_id:null, sub_discipline_id:null, tag_discipline_id:null, booljupyterurls:false, disciplinesdatakc:0, disciplinesdatazsd:0, selectallquestionsonthispages:false, oj_status:null, isVisible: false, selectionbools:false, chakanjiexiboolindex:"无", mydisplay:false, occupation:2, } } chakanjiexibool=(index)=>{ if(this.state.chakanjiexiboolindex===index){ this.setState({ chakanjiexiboolindex:"无", }) return } this.setState({ chakanjiexiboolindex:index, }) } setmychakanjiexibool=(str)=>{ this.setState({ chakanjiexiboolindex:str, }) } setdiscipline_id=(discipline_id)=>{ this.setState({ discipline_id:discipline_id, sub_discipline_id:null, tag_discipline_id:null, keyword:"", page:1, per_page:10, oj_status:null }) var data = { discipline_id:discipline_id, sub_discipline_id:null, tag_discipline_id:null, public: this.state.defaultActiveKey, difficulty: this.state.difficulty, item_type: this.state.item_type, keyword: null, page: this.state.page, per_page:10, oj_status:null }; this.getdata(data); } setsub_discipline_id=(discipline_id,sub_discipline_id)=>{ this.setState({ sub_discipline_id:sub_discipline_id, discipline_id:discipline_id, tag_discipline_id:null, keyword:"", page:1, per_page:10, oj_status:null }) var data = { discipline_id:discipline_id, sub_discipline_id:sub_discipline_id, tag_discipline_id:null, public: this.state.defaultActiveKey, difficulty: this.state.difficulty, item_type: this.state.item_type, keyword:null, page: 1, per_page:10, oj_status:null }; this.getdata(data); } settag_discipline_id=(tag_discipline_id)=>{ this.setState({ tag_discipline_id:tag_discipline_id, keyword:"", page:1, per_page:10, oj_status:null }) var data = { discipline_id:this.state.discipline_id, sub_discipline_id:this.state.sub_discipline_id, tag_discipline_id:tag_discipline_id, public: this.state.defaultActiveKey, difficulty: this.state.difficulty, item_type: this.state.item_type, keyword: null, page: 1, per_page:10, oj_status:null }; this.getdata(data); } //初始化 componentDidMount() { let url = `/users/get_navigation_info.json`; axios.get(url, {}).then((response) => { if (response != undefined) { if (response.status === 200) { this.setState({ Headertop: response.data.top, Footerdown: response.data.down }) } } }); this.getbasket_listdata(); //获取题库筛选资料 let urls = `/disciplines.json`; axios.get(urls, {params: { source:"question" }}).then((response) => { //console.log("Questiondisciplines"); //console.log(response.data); if (response) { this.setState({ disciplinesdata: response.data.disciplines, }) } }); } //公共和我的 callback = (key) => { this.setState({ defaultActiveKey: key, selectallquestionsonthispages:false, difficulty:null, page:1, oj_status:null }) var data = { discipline_id:this.state.discipline_id, sub_discipline_id:this.state.sub_discipline_id, tag_discipline_id:this.state.tag_discipline_id, public: key, item_type: this.state.item_type, difficulty: null, page: 1, per_page:10, oj_status:null }; this.getdata(data); } //刷新加载 getdata = (data,bool) => { const url = `/item_banks.json`; if(bool){ this.setState({ selectionbools:false, }) }else { this.setState({ booljupyterurls:true, selectionbools:false, }) } axios.get((url), {params: data}).then((response) => { this.setState({ booljupyterurls:false, }) if (response === null || response === undefined) { return } if (response.data.status === 403 || response.data.status === 401 || response.data.status === 500) { } else { } //////console.log("item_banks"); //////console.log(response); this.setState({ Contentdata: response.data, items_count: response.data.items_count, }) this.getdataslen(response.data.items); }).catch((error) => { //////console.log(error) this.setState({ booljupyterurls:false, }) }); } //不刷新加载 getdatasy = (data) => { const url = `/item_banks.json`; this.setState({ selectionbools:false, }) axios.get((url), {params: data}).then((response) => { setTimeout(()=>{ },1000); if (response === null || response === undefined) { return } if (response.data.status === 403 || response.data.status === 401 || response.data.status === 500) { } else { } //////console.log("item_banks"); //////console.log(response); this.setState({ Contentdata: response.data, items_count: response.data.items_count, }) this.getdataslen(response.data.items); // Undoclickable=true; }).catch((error) => { // Undoclickable=true; }); } //计算 getdataslen=(arr)=>{ myGrandtotal=false; let contes=0; let Grandtotal=0; for(let data of arr) { if(data.item_type==="PROGRAM"){ //编程题 if(data.choosed===true){ }else{ //未选用 if(data.program_attr.status===1){ //已发布1 未发布0 contes=contes+1; }else{ Grandtotal=Grandtotal+1; } } }else{ //不是编程题 if(data.choosed===true){ }else{ //未选用 contes=contes+1; } } } if(contes>0){ this.setState({ selectionbools:false, selectallquestionsonthispages:false, }) } else { try { if(arr.length===Grandtotal){ myGrandtotal=true; this.setState({ selectionbools:false, selectallquestionsonthispages:false, }) }else{ this.setState({ selectionbools:true, selectallquestionsonthispages:true, }) } }catch (e) { this.setState({ selectionbools:true, selectallquestionsonthispages:true, }) } } } paginationonChange = (pageNumber) => { this.setState({ page: pageNumber, }) var data = { discipline_id:this.state.discipline_id, sub_discipline_id:this.state.sub_discipline_id, tag_discipline_id:this.state.tag_discipline_id, public: this.state.defaultActiveKey, difficulty: this.state.difficulty, item_type: this.state.item_type, keyword: this.state.keywords, page: pageNumber, per_page:10, oj_status:this.state.oj_status }; this.getdata(data); this.setmychakanjiexibool("无") } showDrawer = () => { if(this.state.visible===true){ this.setState({ visible: false, }); }else{ this.setState({ visible: true, }); this.getbasket_listdata(); } }; onClose = () => { this.setState({ visible: false, }); }; onChange = e => { this.setState({ placement: e.target.value, }); }; getContainer = () => { return this.container; }; saveContainer = container => { this.container = container; }; showmodels = (id) => { this.setState({ modalsType: true, titilesm: "在平台审核后,所有成员均可使用试题", titiless: "是否设置为公开?", titbool: true, timuid: id }) }; showmodelsInaudit = (e) => { this.setState({ modalsTypeInaudit: true, titilesm: "公开申请已提交,请等待管理员的审核", titiless: "我们将在1-2个工作日内完成审核", }) }; showmodelysl = (id) => { this.setState({ modalsType: true, titilesm: "确认删除后,无法撤销", titiless: "是否确认删除?", titbool: false, timuid: id }) }; modalsTypeInauditbool=()=>{ this.setState({ modalsTypeInaudit:false, }) } modalCancel = () => { this.setState({ modalsType: false }) } modalCancels=()=>{ this.setState({ modalsTypes: false }) } showQuestionModals =(item_type)=>{ this.setState({ modalsTypes: true, titilesms:item_type, }) } setDownloads=(item_type)=>{ this.Deletebigquestiontype(item_type); this.setState({ modalsTypes: false }) } setDownload = () => { //确认 if (this.state.titbool === true) { //公开 this.publicopentimu(this.state.timuid); } else { // 删除 this.deletetimu(this.state.timuid); } this.setState({ modalsType: false }) } setdifficulty = (difficulty) => { this.setState({ difficulty: difficulty, visiblemys: false, page: 1, per_page:10, keyword:"", oj_status:null }) var data = { discipline_id:this.state.discipline_id, sub_discipline_id:this.state.sub_discipline_id, tag_discipline_id:this.state.tag_discipline_id, public: this.state.defaultActiveKey, difficulty: difficulty, item_type: this.state.item_type, keyword:null, page:1, per_page:10, oj_status:null }; this.getdata(data); } setitem_types = (item_type) => { this.setState({ item_type: item_type, visiblemyss: false, page: 1, per_page:10, keyword:"", oj_status:null }) var data = { discipline_id:this.state.discipline_id, sub_discipline_id:this.state.sub_discipline_id, tag_discipline_id:this.state.tag_discipline_id, public: this.state.defaultActiveKey, difficulty: this.state.difficulty, item_type: item_type, page: 1, per_page:10, keyword:null, oj_status:null }; this.getdata(data); } handleVisibleChange = (boll) => { if (this.state.visiblemyss === true) { this.setState({ visiblemys: boll, visiblemyss: false, }) } else { this.setState({ visiblemys: boll, }) } } handleVisibleChanges = (boll) => { if (this.state.visiblemys === true) { this.setState({ visiblemyss: boll, visiblemys: false, }) } else { this.setState({ visiblemyss: boll, }) } } setdatafunsval = (e) => { this.setState({ keyword: e.target.value }) } setdatafuns = (value) => { this.setState({ keyword: value, }) var data = { discipline_id:this.state.discipline_id, sub_discipline_id:this.state.sub_discipline_id, tag_discipline_id:this.state.tag_discipline_id, public: this.state.defaultActiveKey, difficulty: this.state.difficulty, item_type: this.state.item_type, keyword: value, page: this.state.page, per_page:10, oj_status:this.state.oj_status }; this.getdata(data); } deletetimu = (id) => { const url = `/item_banks/${id}.json`; axios.delete(url) .then((response) => { if (response.data.status == 0) { // this.props.showNotification('删除试题成功') // props.history.push(response.data.right_url) var data = { discipline_id:this.state.discipline_id, sub_discipline_id:this.state.sub_discipline_id, tag_discipline_id:this.state.tag_discipline_id, public: this.state.defaultActiveKey, difficulty: this.state.difficulty, item_type: this.state.item_type, keyword: this.state.keywords, page: this.state.page, per_page:10, }; this.getdata(data,true); } }) .catch(function (error) { ////console.log(error); }); } publicopentimu = (id) => { const url = `/item_banks/${id}/set_public.json`; axios.post(url) .then((result) => { if (result.data.status == 0) { // this.props.showNotification(`公开题目成功`); var data = { discipline_id:this.state.discipline_id, sub_discipline_id:this.state.sub_discipline_id, tag_discipline_id:this.state.tag_discipline_id, public: this.state.defaultActiveKey, difficulty: this.state.difficulty, item_type: this.state.item_type, keyword: this.state.keywords, page: this.state.page, per_page:10, }; this.getdata(data,true); } }).catch((error) => { ////console.log(error); }) } getbasket_listdata = () => { // 获取试题篮展开的数据 const url = "/item_baskets/basket_list.json"; axios.get(url) .then((result) => { // ////console.log("getbasket_listdata"); // ////console.log(result.data); this.setState({ completion_questions_count: result.data.completion_questions_count, judgement_questions_count: result.data.judgement_questions_count, multiple_questions_count: result.data.multiple_questions_count, practical_questions_count: result.data.practical_questions_count, program_questions_count: result.data.program_questions_count, single_questions_count: result.data.single_questions_count, subjective_questions_count: result.data.subjective_questions_count, }) // Undoclickable=true; }).catch((error) => { // ////console.log(error); this.setState({ completion_questions_count: 0, judgement_questions_count: 0, multiple_questions_count: 0, practical_questions_count: 0, program_questions_count: 0, single_questions_count: 0, subjective_questions_count: 0, }) // Undoclickable=true; }) } // 不选用 NewMyShixunModel.js 页面也有个 NOgetitem_baskets=(data)=>{ let url="/examination_banks/cancel_items.json"; axios.post(url, data) .then((result) => { if (result.data.status == 0) { // this.props.showNotification(`选用成功`); var data = { discipline_id:this.state.discipline_id, sub_discipline_id:this.state.sub_discipline_id, tag_discipline_id:this.state.tag_discipline_id, public: this.state.defaultActiveKey, difficulty: this.state.difficulty, item_type: this.state.item_type, keyword: this.state.keywords, page: this.state.page, per_page:10, }; this.getdatasy(data); this.getbasket_listdata(); // this.setState({ // visible:true // }) } }).catch((error) => { ////console.log(error); }) } //选用 NewMyShixunModel.js 页面也有个 getitem_baskets=(data)=>{ //选用题型可以上传单个 或者多个题型 let url="/item_baskets.json"; axios.post(url, data) .then((result) => { if (result.data.status == 0) { // this.props.showNotification(`选用成功`); var data = { discipline_id:this.state.discipline_id, sub_discipline_id:this.state.sub_discipline_id, tag_discipline_id:this.state.tag_discipline_id, public: this.state.defaultActiveKey, difficulty: this.state.difficulty, item_type: this.state.item_type, keyword: this.state.keywords, page: this.state.page, per_page:10, }; this.getdatasy(data); this.getbasket_listdata(); // this.setState({ // visible:true // }) } }).catch((error) => { ////console.log(error); }) } // 撤销 getitem_basketss=(id)=>{ if(Undoclickable===true){ Undoclickable=false; //选用题型可以上传单个 或者多个题型 let url=`/item_baskets/${id}.json`; axios.delete(url) .then((result) => { if (result.data.status == 0) { // this.props.showNotification(`撤销成功`); var data = { discipline_id:this.state.discipline_id, sub_discipline_id:this.state.sub_discipline_id, tag_discipline_id:this.state.tag_discipline_id, public: this.state.defaultActiveKey, difficulty: this.state.difficulty, item_type: this.state.item_type, keyword: this.state.keywords, page: this.state.page, per_page:10, }; this.getdatasy(data); this.getbasket_listdata(); } setTimeout(()=>{ Undoclickable=true; },1000); }).catch((error) => { ////console.log(error); setTimeout(()=>{ Undoclickable=true; },1000); }) }else{ return } } //全选试题库 selectallquestionsonthispage=(bool)=>{ if(bool===true){ //bool 是选中状态 let { completion_questions_count, judgement_questions_count, multiple_questions_count, practical_questions_count, program_questions_count, single_questions_count, subjective_questions_count, } = this.state; const Datacount = completion_questions_count + judgement_questions_count + multiple_questions_count + practical_questions_count + program_questions_count + single_questions_count + subjective_questions_count; if(Datacount===100){ this.props.showNotification(`已选100个试题(不能在选用更多试题)`); return; } } if(myGrandtotal===true){ this.props.showNotification(`本页全部试题未发布,不能选择`); return } var item_idsdata=[]; var arr= this.state.Contentdata.items; for(let data of arr) { if(data.item_type==="PROGRAM"){ //编程题 if(data.choosed===true){ if(data.program_attr.status===1){ //已发布 item_idsdata.push(data.id); } }else{ //未选用 if(data.program_attr.status===1){ //已发布 item_idsdata.push(data.id); } } }else{ //不是编程题 if(data.choosed===true){ item_idsdata.push(data.id); }else{ //未选用 item_idsdata.push(data.id); } } } const data={ item_ids:item_idsdata } if(bool===false){ this.getitem_baskets(data); this.setState({ selectallquestionsonthispages:true, }) }else{ this.NOgetitem_baskets(data); this.setState({ selectallquestionsonthispages:false, }) } } //全选的状态 //删除大题型 Deletebigquestiontype =(item_type)=>{ const url=`/item_baskets/delete_item_type.json`; axios.delete((url), { data: { item_type:item_type }}) .then((response) => { if (response.data.status == 0) { // this.props.showNotification('删除成功'); var data = { discipline_id:this.state.discipline_id, sub_discipline_id:this.state.sub_discipline_id, tag_discipline_id:this.state.tag_discipline_id, public: this.state.defaultActiveKey, difficulty: this.state.difficulty, item_type: this.state.item_type, keyword: this.state.keywords, page: this.state.page, per_page:10, }; this.getdata(data); this.getbasket_listdata(); } }) .catch(function (error) { ////console.log(error); }); } HideAddcoursestypess=(i)=>{ console.log("调用了"); this.setState({ mydisplay:true, occupation:i, }) } mydisplayHidedel=()=>{ this.setState({ mydisplay:false, }) } //跳转 gotopaperreview=()=>{ let isysladmins=false; if(this.props){ if(this.props.current_user){ if(this.props.current_user.admin){ isysladmins=true; } else if(this.props.current_user.business){ isysladmins=true; } } } if(this.props.current_user.professional_certification===false&&isysladmins===false){ this.HideAddcoursestypess(2); return } this.props.history.replace("/paperreview/artificial"); } setoj_status=(oj_status)=>{ //编程题发布未发布 this.setState({ selectallquestionsonthispages:false, difficulty:null, oj_status:oj_status }) var data = { discipline_id:this.state.discipline_id, sub_discipline_id:this.state.sub_discipline_id, tag_discipline_id:this.state.tag_discipline_id, public: this.state.defaultActiveKey, difficulty: this.state.difficulty, item_type: this.state.item_type, keyword: this.state.keywords, page: this.state.page, per_page:10, oj_status:oj_status }; this.getdata(data); } render() { let { page, per_page, items_count, Headertop, visible, placement, modalsType, modalsTypes,basket_list, completion_questions_count, judgement_questions_count, multiple_questions_count, practical_questions_count, program_questions_count, single_questions_count, subjective_questions_count,selectionbools, modalsTypeInaudit,mydisplay } = this.state; const Datacount = completion_questions_count + judgement_questions_count + multiple_questions_count + practical_questions_count + program_questions_count + single_questions_count + subjective_questions_count; let isysladmins=false; const is_teacher=this.props&&this.props.current_user&&this.props.current_user.is_teacher?this.props.current_user.is_teacher:false; const professional_certification=this.props&&this.props.current_user&&this.props.current_user.professional_certification?this.props.current_user.professional_certification:false; try { if(this.props){ if(this.props.current_user){ if(this.props.current_user.admin){ isysladmins=true; } else if(this.props.current_user.business){ isysladmins=true; } } } }catch (e) { } return (
{ mydisplay===true? :"" } { mydisplay===true? :"" } { visible===true? :"" }
{ modalsTypes===true? this.modalCancels()} setDownloads={(e) => this.setDownloads(e)}> :"" } { modalsType===true? this.modalCancel()} setDownload={() => this.setDownload()}> :"" } { modalsTypeInaudit===true? this.modalsTypeInauditbool()} setDownload={() => this.modalsTypeInauditbool()}> :"" } this.showDrawer()} Headertop={Headertop} /> {/*顶部*/} this.setdifficulty(e)} setitem_types={(e) => this.setitem_types(e)} setdiscipline_id={(e)=>this.setdiscipline_id(e)} setsub_discipline_id={(e,id)=>this.setsub_discipline_id(e,id)} settag_discipline_id={(e)=>this.settag_discipline_id(e)} /> {/*头部*/} this.chakanjiexibool(e)} getitem_basketss={(id)=>this.getitem_basketss(id)} selectallquestionsonthispage={(bool)=>this.selectallquestionsonthispage(bool)} getitem_baskets={(e)=>this.getitem_baskets(e)} setdatafuns={(e) => this.setdatafuns(e)} setdatafunsval={(e) => this.setdatafunsval(e)} handleVisibleChanges={(e) => this.handleVisibleChanges(e)} handleVisibleChange={(e) => this.handleVisibleChange(e)} showmodels={(e) => this.showmodels(e)} showmodelysl={(e) => this.showmodelysl(e)} callback={(e) => this.callback(e)} setoj_status={(e)=>this.setoj_status(e)} showmodelsInaudit={(e)=>this.showmodelsInaudit(e)} > { items_count&&items_count>10?
:
} {/*抽屉效果*/} this.onClose()} visible={visible} mask={false} > {Datacount && Datacount > 0 ?
试题篮
{ single_questions_count === 0 ? "" :

单选题{'('}{single_questions_count}{')'}

this.showQuestionModals("SINGLE")}>

} { multiple_questions_count === 0 ? "" :

多选题{'('}{multiple_questions_count}{')'}

this.showQuestionModals("MULTIPLE")}>

} { judgement_questions_count === 0 ? "" :

判断题{'('}{judgement_questions_count}{')'}

this.showQuestionModals("JUDGMENT")}>

} { completion_questions_count === 0 ? "" :

填空题{'('}{completion_questions_count}{')'}

this.showQuestionModals("COMPLETION")}>

} { subjective_questions_count === 0 ? "" :

简答题{'('}{subjective_questions_count}{')'}

this.showQuestionModals("SUBJECTIVE")}>

} { practical_questions_count === 0 ? "" :

实训题{'('}{practical_questions_count}{')'}

} { program_questions_count === 0 ? "" :

编程题{'('}{program_questions_count}{')'}

this.showQuestionModals("PROGRAM")}>

}
this.gotopaperreview()}> 试卷预览
:
}
) } } export default SnackbarHOC()(TPMIndexHOC(Question));