import React,{ Component } from "react"; import { Input,Checkbox,Table, Pagination, Modal,Menu, Tooltip,Spin } from "antd"; import CourseLayoutcomponent from '../common/CourseLayoutComponent'; import ExerciseListItem from './ExerciseListItem' import axios from 'axios'; import Modals from '../../modals/Modals'; import '../css/members.css' import { WordsBtn } from 'educoder' import '../css/busyWork.css' import _ from 'lodash'; import moment from 'moment' import UseBank from "../busyWork/UseBank"; import ImmediatelyPublish from "../poll/pollPublicBtn/ImmediatelyPublish"; import ImmediatelyEnd from "../poll/pollPublicBtn/ImmediatelyEnd"; import NoneData from "../coursesPublic/NoneData"; import HomeworkModal from "../coursesPublic/HomeworkModal"; const Search = Input.Search; class Exercise extends Component{ constructor(props){ super(props); this.state={ modalname:undefined, modaltype:undefined, modalsBottomval:undefined, visible:false, Topval:undefined, Topvalright:undefined, Botvalleft:undefined, Botval:undefined, starttime:undefined, endtime:undefined, Cancelname:undefined, Savesname:undefined, Cancel:undefined, Saves:undefined, StudentList_value:undefined, addname:undefined, addnametype:false, addnametab:undefined, addcanner:undefined, addsave:undefined, type:undefined, search:undefined, page:1, limit:15, checkBoxValues:[], Exercisetype:"exercise", isSpin:false } } // 加载列表 componentDidMount(){ this.reloadList(); } reloadList=()=>{ this.setState({ isSpin:true }) let{type,search,page,limit}=this.state this.InitList(type,search,page,limit); } // 获取列表数据 InitList=(type,search,page,limit)=>{ this.setState({ isSpin:true }) let coursesId=this.props.match.params.coursesId; let url='/courses/'+coursesId+'/exercises.json'; axios.get(url, { params: { type:type, search: search, page: page, limit: limit } } ).then((result)=>{ this.setState({ exercises_counts:result.data.exercises_counts, course_types:result.data.course_types, exercises:result.data.exercises, checkAllValue:false, checkBoxValues:[], isSpin:false }) }).catch((error)=>{ console.log(error); }) } inputStudent=(e)=>{ this.setState({ StudentList_value:e.target.value }) } // 搜索 searchInfo=()=>{ this.setState({ type:undefined, page:1, }) let{type,StudentList_value,limit}=this.state; this.InitList(type,StudentList_value,1,limit) } changeType=(e)=>{ this.setState({ type:e.key, checkAllValue:false, checkBoxValues:[] }) let{StudentList_value,page,limit}=this.state; this.InitList(e.key==="0"?undefined:e.key,StudentList_value,page,limit) } //切换分页 changePage=(pageNumber)=>{ this.setState({ page:pageNumber }) let{type,StudentList_value,limit}=this.state this.InitList(type,StudentList_value,pageNumber,limit); } onselectfifteen = () => { this.setState({ Modalstype:true, Modalstopval:"选择条数不能大于15条", ModalSave:this.cancelmodel, modalsBottomval:"", Loadtype:true }) } cancelmodel=()=>{ this.setState({ Modalstype:false, Loadtype:false, Modalstopval:"", modalsBottomval:"", ModalCancel:"", ModalSave:"", }) } onCheckBoxChange = (checkedValues) => { let {exercises}=this.state; if( checkedValues.length>15){ this.onselectfifteen() return } this.setState({ checkBoxValues: checkedValues, checkAllValue: checkedValues.length == exercises.length }) } // 全选or反选 onCheckAll = (e) => { this.setState({ checkAllValue: e.target.checked }) const values = this.state.exercises.map(item => { return item.id }) if (e.target.checked) { const concated = this.state.checkBoxValues.concat(values); const uniq=_.uniq(concated) this.setState({ checkBoxValues: uniq }) } else { this.setState({ checkBoxValues: _.difference(this.state.checkBoxValues, values) }) } } // 题库选用成功后刷新页面 useBankSuccess=(checkValue,value)=>{ debugger let{type,StudentList_value,page,limit}=this.state; let coursesId=this.props.match.params.coursesId; let url=`/courses/${coursesId}/exercises/publish_modal.json`; axios.get(url,{ params:{ check_ids:value } }).then((response) => { if(response.status===200){ let list=[]; if(response.data.course_info){ for(var i=0;i 0 ? 1 : 2, visible:true, Topval:"学生将立即收到试卷", // Botvalleft:"暂不发布", Botval:`本操作只对"未发布"的分班有效`, starttime:"发布时间:"+moment(moment(new Date())).format("YYYY-MM-DD HH:mm"), starttimes:this.props.getNowFormatDates(1), endtime:"截止时间:"+this.props.getNowFormatDates(2), Cancelname:"暂不发布", Savesname:"立即发布", Cancel:this.homeworkhide, Saves:this.homeworkstartend, course_groups:list, checkBoxValues:value }) } }).catch((error) => { console.log(error) }); } //删除或者设为公开 ActionPoll=(value)=>{ let CourseId=this.props.match.params.coursesId; let{type,StudentList_value,page,limit}=this.state; //判断是否有选中数据 if(this.state.checkBoxValues.length==0){ // this.setState({ // Modalstype:true, // Modalstopval:"请先在列表中选择数据", // Loadtype:true, // ModalSave:this.cancelmodel, // }) this.props.showNotification("请先在列表中选择数据"); }else{ if(value != "bank"){ this.setState({ Modalstype:true, Modalstopval:value=="delete"?"已提交作品将全部被删除,不可恢复":"公开后非课堂成员也可以访问查看", modalsBottomval:value=="delete"?"是否确认删除?":"是否确认公开?", Loadtype:false, boxType:value, ModalSave:this.ModalAction }) }else{ //加入题库 let url=`/courses/${CourseId}/exercises/join_exercise_banks.json`; axios.post((url), { check_ids: this.state.checkBoxValues }) .then((result)=>{ if(result.data.status==0){ this.props.showNotification(`${result.data.message}`); this.setState({ Modalstype:false, Modalstopval:"", modalsBottomval:"", Loadtype:false, checkBoxValues:[] }) this.InitList(type,StudentList_value,page,limit) this.props.updataleftNavfun() } }).catch((error)=>{ console.log(error); }) } } } //确定删除或者设为公开 ModalAction=()=>{ let CourseId=this.props.match.params.coursesId; let{type,StudentList_value,page,limit}=this.state; this.setState({ Modalstypeloding:true }) if(this.state.checkBoxValues.length==0){ this.setState({ Modalstype:false, Modalstopval:"", modalsBottomval:"", Loadtype:false, checkBoxValues:[], Modalstypeloding:false }) }else{ if(this.state.boxType=="delete"){ //删除 let url=`/courses/${CourseId}/exercises/destroys.json`; axios.post((url), { check_ids: this.state.checkBoxValues }) .then((result)=>{ if(result.data.status==0){ this.props.showNotification(`${result.data.message}`); this.setState({ Modalstype:false, Modalstopval:"", modalsBottomval:"", Loadtype:false, checkBoxValues:[], Modalstypeloding:false }) this.InitList(type,StudentList_value,page,limit) } }).catch((error)=>{ console.log(error); }) }else if(this.state.boxType=="public"){ //设为公开 let url=`/courses/${CourseId}/exercises/set_public.json`; axios.post((url), { check_ids: this.state.checkBoxValues }) .then((result)=>{ if(result.data.status==0){ this.props.showNotification(`${result.data.message}`); this.setState({ Modalstype:false, Modalstopval:"", modalsBottomval:"", Loadtype:false, checkBoxValues:[] }) let{type,StudentList_value}=this.state this.InitList(type,StudentList_value,1); } }).catch((error)=>{ console.log(error); }) } } } //暂不发布 homeworkhide=()=>{ let {type,StudentList_value,page,limit}=this.state; this.setState({ modalname:undefined, modaltype:undefined, visible:false, Topval:undefined, Topvalright:undefined, Botvalleft:undefined, Botval:undefined, starttime:undefined, endtime:undefined, Cancelname:undefined, Savesname:undefined, Cancel:undefined, Saves:undefined, StudentList_value:undefined, addname:undefined, addnametype:false, addnametab:undefined }) this.InitList(type,StudentList_value,page,limit) } getcourse_groupslist=(id)=>{ this.setState({ chooseId:id }) } // 确定立即发布 homeworkstartend=(idss,endtime)=> { let {chooseId,checkBoxValues,type,StudentList_value,page,limit} = this.state; let coursesId = this.props.match.params.coursesId; let url = `/courses/${coursesId}/exercises/publish.json` axios.post(url, { check_ids: checkBoxValues, group_ids: chooseId, end_time:endtime }).then((result) => { if (result) { this.props.showNotification(result.data.message); this.homeworkhide(); // 调用父级公共头部的接口刷新 // this.props.action() this.InitList(type,StudentList_value,page,limit) } }).catch((error) => { console.log(error); }) } render(){ let { checkAllValue, StudentList_value, exercises_counts, course_types, exercises, checkBoxValues, pageSize, page, }=this.state; let {child}=this.props; // debugger // exercises_counts && exercises_counts.exercises_all_counts ===0 return( {/* 公用的提示弹框 */} this.getcourse_groupslist(id)} />

{exercises_counts && exercises_counts.left_banner_name} { this.props.isAdmin()===true?

  • {course_types&&course_types.course_status===0?新建:""}
  • :"" } {/*{*/} {/*this.props.isStudent()===true?*/} {/*
  • */} {/*

    */} {/*
  • :""*/} {/*}*/}

    共{exercises_counts && exercises_counts.exercises_total_counts}个试卷 已发布:{exercises_counts && exercises_counts.exercises_published_counts}个 未发布:{exercises_counts && exercises_counts.exercises_unpublish_counts}个

    全部 {this.props.isAdmin()?未发布:""} 提交中 已截止
    {this.props.isAdmin()?
    已选 {checkBoxValues.length} 个
    :
    } { exercises && exercises.length > 0 &&
    { exercises && exercises.map((item,key)=>{ return( this.onItemClick(item)} >} > ) }) }
    }
    { exercises && exercises.length ===0 && } { exercises_counts && exercises_counts.exercises_all_counts > 15 ?
    : "" }
    ) } } export default Exercise;