import React,{ Component } from "react"; import { Input,Checkbox,Menu,Pagination,Spin} from "antd"; import UseBank from './UseBank' import '../css/members.css' import '../css/busyWork.css' import CommonWorkItem from './CommonWorkItem' import PublishRightnow from './PublishRightnow' import ConnectProject from './ConnectProject' import { WordsBtn, on, off ,trigger} from 'educoder' import Modals from '../../modals/Modals' import NoneData from "../coursesPublic/NoneData" import Titlesearchsection from '../common/titleSearch/TitleSearchSection'; import { RouteHOC } from './common' import axios from 'axios'; import _ from 'lodash' // const Search = Input.Search; // const map={1:"普通作业",2:"",3:"分组作业"} // const COMMON_WORK = 1 // const COMMON_WORK = 2 class commonWork extends Component{ constructor(props){ super(props); this.state={ modalsType:"", modalsTopval:"", modalsBottomval:"", modalCancel:"", mainList:undefined, selectedKeys: 'all', order:"", page:1, search:"", totalCount:0, checkAll:false, checkBoxValues:[], isSpin:false, category_id:undefined } } //输入搜索条件 inputStudent=(e)=>{ this.setState({ search:e.target.value, }) } //搜索查询 searchStudent=()=>{ let {category_id,search,order}=this.state; this.getList(1,search,order,category_id); } openConnectionProject = (work) => { this.refs['connectProject'].openConnectionProject(work) } // 新建 createCommonWork=(type)=>{ this.props.toNewPage(this.props.match.params) } cancelDelClasses=()=>{ this.setState({ modalsType:false, modalsTopval:"", modalsBottomval:"", modalCancel:false }) } sureDelClasses(){ } componentDidUpdate(prevProps, prevState) { console.log(this.props) if (prevProps.coursesidtype != this.props.coursesidtype) { if (this.props.match.path === "/classrooms/:coursesId/common_homeworks/:category_id" || this.props.match.path === "/classrooms/:coursesId/common_homework/:category_id") { if (this.props.coursesidtype === "node" && this.props.match.path === "/classrooms/:coursesId/common_homeworks/:category_id") { this.clearSelection() this.setState({selectedKeys: 'all', order: ''}, () => { this._getList() }) } if (this.props.coursesidtype === "child" && this.props.match.path === "/classrooms/:coursesId/common_homework/:category_id") { this.clearSelection() this.setState({selectedKeys: 'all', order: ''}, () => { this._getList(this.props.match.params.category_id) }) } } } // // if(this.props.match.path==="/classrooms/:coursesId/common_homeworks/:category_id"||this.props.match.path==="/classrooms/:coursesId/common_homework/:category_id"){ // // // if(this.props.coursesidtype==="node"&&this.props.match.path==="/classrooms/:coursesId/common_homeworks/:category_id"){ // this.clearSelection() // this.setState({ selectedKeys: 'all', order: '' }, () => { // this._getList() // }) // } // if(this.props.coursesidtype==="child"&&this.props.match.path==="/classrooms/:coursesId/common_homework/:category_id"){ // this.clearSelection() // this.setState({ selectedKeys: 'all', order: '' }, () => { // this._getList(this.props.match.params.category_id) // }) // } // // } } _getList = (id) => { this.setState({ isSpin:true, category_id:id }) let {page,search,order}=this.state; this.getList(page,search,order,id); } componentDidMount(){ if(this.props.coursesidtype==="node"){ this._getList() }else{ this._getList(this.props.match.params.category_id) } on('updateNavSuccess', this.updateNavSuccess) } componentWillUnmount() { off('updateNavSuccess', this.updateNavSuccess) } updateNavSuccess = () => { if(this.props.coursesidtype==="node"){ this._getList() }else{ this._getList(this.props.match.params.category_id) } } useBankSuccess = (checkBoxValues, newWorkIdArray) => { this.setState({ page:1, checkBoxValues: newWorkIdArray }, () => { this.refs['publishModalRef'].open() }) let {search, order,category_id}=this.state; this.getList(1, search, order,category_id); } getList=(page,search,order,category_id)=>{ console.log(category_id) this.setState({ isSpin:true }) let id=this.props.match.params.coursesId; let workType = this.props.getModuleType() let url="/courses/"+id+"/homework_commons.json?type="+workType+"&page="+page; if(order!=""){ url+="&order="+order; } if(search!=""){ url+="&search="+search; } if(category_id){ url+="&category="+category_id; } axios.get(encodeURI(url)).then((result)=>{ if(result.status==200){ this.setState({ mainList:result.data, totalCount:result.data.task_count, isSpin:false, page:page, ...result.data }) } }).catch((error)=>{ this.setState({ isSpin:false }) }) } //筛选条件 selectedStatus=(e)=>{ this.clearSelection() this.setState({ order:e.key==="all"?"":e.key, selectedKeys: e.key, page:1, isSpin:true, checkBoxValues:[], checkAll:false }) let {search,category_id}=this.state; this.getList(1,search,e.key==="all"?"":e.key,category_id); } onPageChange=(pageNumber)=>{ this.setState({ page:pageNumber, checkBoxValues:[] }) let {search,order,category_id}=this.state; this.getList(pageNumber,search,order,category_id); } // 全选和反选 changeAll=(e)=>{ this.setState({ checkAll: e.target.checked }) const valueId=this.state.mainList.homeworks.map(item=>{ return item.homework_id }) if (e.target.checked) { const concated = this.state.checkBoxValues.concat(valueId); const sortedUniqed = _.uniq(concated) this.setState({ checkBoxValues: sortedUniqed }) } else { this.setState({ checkBoxValues: _.difference(this.state.checkBoxValues, valueId) }) } } onChangeSelect=(checkedValues)=>{ this.setState({ checkBoxValues: checkedValues, checkAll: checkedValues.length == this.state.mainList.homeworks.length }) } onWorkDelete = () => { const { checkBoxValues,category_id} = this.state; const len = checkBoxValues.length; if (len == 0) { this.props.showNotification('请先选择要删除的作业') return; } this.props.confirm({ // content: `确认要删除所选的${len}个作业吗?`, content:
已提交作品将全部被删除,不可恢复
是否确认删除?
, onOk: () => { let coursesId=this.props.match.params.coursesId; const url = `/courses/${coursesId}/homework_commons/multi_destroy.json` axios.post(url, { homework_ids: checkBoxValues, all_check: 0, // category:category_id // group_ids }).then((response) => { if (response.data.status == 0) { this.props.showNotification('删除成功') this.clearSelection() let {search,order}=this.state; this.getList(1,search,order,category_id); this.props.updataleftNavfun() } }).catch((error) => { console.log(error) }) } }) } clearSelection = () => { this.setState({ checkBoxValues: [], checkAll: false }) } // onSetPublic = () => { const { checkBoxValues } = this.state; const len = checkBoxValues.length; if (len == 0) { this.props.showNotification('请先选择要公开的作业') return; } this.props.confirm({ content:
设为公开后,非课堂成员也可以访问查看
是否确认设为公开?
, onOk: () => { let coursesId=this.props.match.params.coursesId; const url = `/courses/${coursesId}/homework_commons/set_public.json` axios.post(url, { homework_ids: checkBoxValues, all_check: 0 }).then((response) => { if (response.data.status == 0) { this.props.showNotification('设为公开操作成功') let {search,order, page}=this.state; this.getList(page,search,order,category_id); } }).catch((error) => { console.log(error) }) } }) } doWhenSuccess = () => { let {search,order, page,category_id}=this.state; this.getList(page,search,order,category_id); this.setState({ checkBoxValues:[] }) } onItemClick = (item) => { const checkBoxValues = this.state.checkBoxValues.slice(0); const index = checkBoxValues.indexOf(item.id); if (index != -1) { _.remove(checkBoxValues, (listItem)=> listItem === item.id) } else { checkBoxValues.push(item.id) } this.onChangeSelect(checkBoxValues) } addToBank = () => { const { checkBoxValues,category_id } = this.state; const len = checkBoxValues.length; if (len == 0) { this.props.showNotification('请先选择要加入题库的作业') return; } const coursesId = this.props.match.params.coursesId const url = `/courses/${coursesId}/homework_commons/add_to_homework_bank.json` axios.post(url, { homework_ids: checkBoxValues, all_check: 0 }).then((response) => { if (response.data.status == 0) { this.props.showNotification('加入成功') let {search,order}=this.state; this.getList(1,search,order,category_id); } }).catch((error) => { console.log(error) }) } connectSuccess = () => { let {page,search,order,category_id}=this.state; this.getList(page,search,order,category_id); } cancelConnectionProject = (work) => { let workId=this.props.match.params.workId; let courseId=this.props.match.params.coursesId; let {page,search,order,category_id}=this.state; const url = `/homework_commons/${work.homework_id}/student_works/cancel_relate_project.json` axios.get(url).then((response)=> { if (response.data.status == 0) { this.getList(page,search,order,category_id); this.props.showNotification('取消关联成功') } }).catch((error)=>{ console.log(error) }) } addDir = (id) => { if(!id){ trigger('addcommon_homeworks', parseInt(this.props.match.params.category_id)) }else{ let data={id:parseInt(id),name:name} trigger('editcommon_homeworks', data) } } render(){ let { search, page, modalsType, modalsTopval, modalsBottomval, mainList, totalCount, checkAll, checkBoxValues, task_count, published_count, unpublished_count, main_category_name, category_name, category_id }=this.state; const { coursedata } = this.props; if (!coursedata) { return '' } let workType = this.props.getModuleType() const moduleChineseName = this.props.getModuleName(true) const { course_public } = coursedata; const isGroup = this.props.isGroup() const isAdmin = this.props.isAdmin() // // return(
{/*

{moduleChineseName}

全部 {isAdmin && 未发布} 提交中 补交中 匿评中 申诉中 评阅中
*/} { isAdmin && this.createCommonWork(1)}>新建} { isAdmin &&
  • } { isAdmin &&
  • this.addDir(category_id)}>{!category_id?"新建目录":"目录重命名"}
  • } } secondRowBotton={
    全部 {isAdmin && 未发布} 提交中 补交中 匿评中 申诉中 已截止
    } secondRowLeft={
    共 {mainList&&mainList.all_count} 个{moduleChineseName} 已发布:{published_count}个 {/* {this.props.isAdmin()?:""} */} 未发布:{unpublished_count}个
    } searchPlaceholder={"请输入名称进行搜索"} showSearchInput={true} >
    { mainList && mainList.course_identity < 5 && mainList.homeworks.length>0 &&
    已选 {checkBoxValues.length} 个 (不支持跨页勾选)
  • 删除
  • this.refs['publishModalRef'].homeworkstart()}>{ "立即发布" }
  • { !!course_public &&
  • 设为公开
  • } {this.props.user&&this.props.user.main_site===true?
  • 加入题库
  • :""}
    {/* 设为公开 */}
    } { mainList && mainList.homeworks && mainList.homeworks.length==0 && } { !!totalCount && totalCount > 15 &&
    }
    ) } } export default RouteHOC() (commonWork);