import React, {Component} from "react"; import {Form, Select, Input, Button, Checkbox, Upload, Icon, message, Modal} from "antd"; import {Link} from 'react-router-dom'; import TPMMDEditor from '../../../tpm/challengesnew/TPMMDEditor'; import {WordsBtn, getUrl,bytesToSize,appendFileSizeToUploadFileAll , getUploadActionUrl} from 'educoder'; import axios from 'axios'; import Modals from '../../../modals/Modals'; import '../../css/Courses.css'; const {Option} = Select; const CheckboxGroup = Checkbox.Group; const confirm = Modal.confirm; let GraduationTasksnewtype = true; class GraduationTasksnew extends Component { constructor(props) { super(props) this.state = { coursename: "", coursesearch: "", title_num: 0, title_value: "", fileList: [], contents: [{val: "", id: 1}], type: true, shixunsreplace:false, } } componentDidMount() { // const query =this.props.location.search; // // const type = query.split('&'); // let name = type[1].split("name=") // name = String(name).split(",") // name = decodeURI(name[1]) // // this.setState({ // coursename:name, // coursesearch:this.props.location.search // }) } scrollToAnchors = (anchorName) => { this.setState({ anchor: anchorName }) } Commoninterface =(fileList)=>{ let coursesId=this.props.match.params.coursesId; let category_id=this.props.match.params.category_id; let listid = [] for (var list of fileList) { listid.push(list.response.id) } // if (GraduationTasksnewtype === true) { this.props.form.validateFields((err, values) => { if (values.tasktype === undefined) { this.ifHasAnchorJustScorll("tasktypes"); return } if (values.name === undefined) { this.ifHasAnchorJustScorll("nametypes"); return } if (values.description === undefined) { this.ifHasAnchorJustScorll("descriptiontypes"); return }else if (values.description.length > 5000) { this.ifHasAnchorJustScorll("descriptiontypes"); return } if (!err) { // console.log('Received values of form: ', values); // console.log(fileList); const course_id = this.props.match.params.coursesId; let url = "/courses/" + course_id + "/graduation_tasks.json" axios.post(url, { task_type: parseInt(values.tasktype), name: values.name, description: values.description, attachment_ids: listid, } ).then((response) => { // if (response.status === 200) { // GraduationTasksnewtype = false; // this.goback(); if(response!==undefined){ // this.goback() this.props.history.replace(`/courses/${coursesId}/graduation_tasks/${category_id}/detail/${response.data.task_id}/questions`); } // } }).catch((error) => { console.log(error) }) } }); // } } goback = () => { // let courseId = this.props.match.params.coursesId; // if(courseId===undefined){ // this.props.history.push("/courses"); // }else{ // this.props.history.push(this.props.current_user.first_category_url); // } // this.props.history.goBack() this.props.history.replace(`/courses/${this.props.match.params.coursesId}/graduation_tasks/${this.props.match.params.category_id}`); } // 输入title changeTitle = (e) => { // title_num: 60 - parseInt(e.target.value.length), this.setState({ title_num: e.target.value.length, title_value: e.target.value }) } // 附件相关 START handleChange = (info) => { if(info.file.status == "done" || info.file.status == "uploading" || info.file.status === 'removed'){ let fileList = info.fileList; // for(var list of fileList ){ // console.log(list) // } this.setState({ fileList: appendFileSizeToUploadFileAll(fileList), }); } } // onAttachmentRemove = (file) => { // // confirm({ // // title: '确定要删除这个附件吗?', // // okText: '确定', // // cancelText: '取消', // // // content: 'Some descriptions', // // onOk: () => { // // this.deleteAttachment(file) // // }, // // onCancel() { // // console.log('Cancel'); // // }, // // }); // // return false; // // this.setState({ // Modalstype: true, // Modalstopval: '确定要删除这个附件吗?', // ModalSave: () => this.deleteAttachment(file), // ModalCancel: this.cancelAttachment // }) // return false; // } cancelAttachment = () => { this.setState({ Modalstype: false, Modalstopval: '', ModalSave: "", ModalCancel: "" }) } onAttachmentRemove = (file) => { if(!file.percent || file.percent == 100){ this.props.confirm({ content: '确定要删除这个附件吗?', okText: '确定', cancelText: '取消', // content: 'Some descriptions', onOk: () => { this.deleteAttachment(file) }, onCancel() { console.log('Cancel'); }, }); return false; } } deleteAttachment = (file) =>{ const url = `/attachments/${file.response ? file.response.id : file.uid}.json` // const url = `/attachments/${file}.json` axios.delete(url, {}) .then((response) => { if (response.data) { const {status} = response.data; if (status == 0) { console.log('--- success') this.setState((state) => { const index = state.fileList.indexOf(file); const newFileList = state.fileList.slice(); newFileList.splice(index, 1); return { fileList: newFileList, }; }); this.cancelAttachment() } } }) .catch(function (error) { console.log(error); }); } //滚动 ifHasAnchorJustScorll() { // let anchor = this.getURLStuff("anchor"); let anchor = this.state.anchor; // console.log("anchor ", anchor); // 对应id的话, 滚动到相应位置 if (!!anchor) { let anchorElement = document.getElementById(anchor); if (anchorElement) { window.scrollTo(0, anchorElement.offsetTop - window.innerHeight / 2); } } // 没有的话,滚动到头部 else { document.body.scrollTop = document.documentElement.scrollTop = 0; } } // 提交按钮 handleSubmit = (e) => { let {fileList} = this.state; // if(fileList.length===0){ // this.setState({ // shixunsreplace:true, // }) // // return // } this.Commoninterface(fileList); } //确认 hidestartshixunsreplace =()=>{ let {fileList} = this.state; this.Commoninterface(fileList); } //取消 hidestartshixunsreplacetwo=()=>{ this.setState({ shixunsreplace:false, }) } checkContent = (rule, value, callback) => { if (value == "") { callback('请输入内容'); }else if(value.length>5000){ callback('最大限制为5000个字符'); }else{ callback(); } } render() { const {getFieldDecorator} = this.props.form; let { coursename, coursesearch, title_num, title_value, pageType, fileList, contents, type, Modalstype, Modalstopval, ModalCancel, ModalSave,shixunsreplace } = this.state; let {coursedata} = this.props; let courseId = this.props.match.params.coursesId; let position = this.props.match.params.position; let category_id = this.props.match.params.category_id; const uploadProps = { width: 600, fileList, multiple: true, // https://github.com/ant-design/ant-design/issues/15505 // showUploadList={false},然后外部拿到 fileList 数组自行渲染列表。 // showUploadList: false, action: `${getUploadActionUrl()}`, onChange: this.handleChange, onRemove: this.onAttachmentRemove, beforeUpload: (file) => { console.log('beforeUpload', file.name); const isLt150M = file.size / 1024 / 1024 < 150; if (!isLt150M) { this.props.showNotification('文件大小必须小于150MB!'); } return isLt150M; }, }; // this.ifHasAnchorJustScorll(); // console.log(this.props.current_user.course_name) document.title=this.props.current_user&&this.props.current_user.course_name; return (
{/*提示*/}

还未上传附件

是否确认提交作品?

this.hidestartshixunsreplace()}>确认 this.hidestartshixunsreplacetwo()}>取消

{this.props.current_user && this.props.current_user.course_name} > 毕设任务 > {"新建"}

新建毕设任务

返回
{/**/} {/*内容*/}
{getFieldDecorator('tasktype', { rules: [{required: true, message: "请选择任务类型"}], })()} (选择确认后,无法修改) {getFieldDecorator('name', { rules: [{required: true, message: "不能为空"}], })( )}
{getFieldDecorator('description', { rules: [{ required: true, message: '请输入内容', },{ max:5000,message:'最大限制5000个字符' }] })( )} (单个文件150M以内) {/*{this.state.fileList.length===0?"":this.state.fileList.map((item,key)=>{*/} {/*return(*/} {/*

*/} {/**/} {/**/} {/**/} {/**/} {/*{item.name}*/} {/**/} {/**/} {/*{item.response===undefined?"":bytesToSize(item.size)}*/} {/**/} {/*this.onAttachmentRemove(item.response===undefined?"":item.response.id&&item.response.id)}>*/} {/*

*/} {/*)*/} {/*})}*/}
取消
{/**/}
) } } const GraduationTasksnewApp = Form.create({name: 'coursesNew'})(GraduationTasksnew); export default GraduationTasksnewApp;