import React,{ Component } from "react"; import { Form, Input, InputNumber, Switch, Radio, Slider, Button, Upload, Icon, Rate, Checkbox, message, Row, Col, Select, Modal,Cascader } from 'antd'; import TPMMDEditor from '../../../tpm/challengesnew/TPMMDEditor'; import axios from 'axios' import {getUrl} from 'educoder'; import "../../common/formCommon.css" import '../style.css' import '../../css/Courses.css' import { WordsBtn, City } from 'educoder' import {Link} from 'react-router-dom' // import City from './City' // import './board.css' // import { RouteHOC } from './common.js' const confirm = Modal.confirm; const $ = window.$ const { Option } = Select; const NAME_COUNT=60; // 新建毕设选题 // https://lanhuapp.com/web/#/item/project/board/detail?pid=a3bcd4b1-99ce-4e43-8ead-5b8b0a410807&project_id=a3bcd4b1-99ce-4e43-8ead-5b8b0a410807&image_id=c6d9b36f-7701-4035-afdb-62404681108c class GraduateTopicNew extends Component{ constructor(props){ super(props); this.mdRef = React.createRef(); this.state = { fileList: [], boards: [], teacherList:[], topic_property_first:[], topic_property_second:[], topic_repeat:[], topic_source:[], topic_type:[], attachments:undefined, addonAfter:0, left_banner_id:undefined, course_name:undefined } } // 获取老师列表 getTeacherList=()=>{ const cid = this.props.match.params.coursesId let url=`/courses/${cid}/graduation_topics/new.json`; axios.get((url)).then((result)=>{ if(result.status==200){ this.setState({ teacherList:result.data.teacher_list, left_banner_id:result.data.left_banner_id, course_name:result.data.course_name, left_banner_name:result.data.left_banner_name, topic_property_first:result.data.topic_property_first, topic_property_second:result.data.topic_property_second, topic_repeat:result.data.topic_repeat, topic_source:result.data.topic_source, topic_type:result.data.topic_type }) console.log("sdfds"); console.log(this.props.current_user && this.props.current_user.user_id); this.props.form.setFieldsValue({ tea_id:this.props.current_user && this.props.current_user.user_id }) } }).catch((error)=>{ console.log(error); }) } componentDidMount = () => { //新建or编辑 let topicId=this.props.match.params.topicId; if(topicId==undefined){ this.getTeacherList(); }else{ this.getEditInfo(); } } //编辑,信息显示 getEditInfo=()=>{ const cid = this.props.match.params.coursesId let topicId=this.props.match.params.topicId let url=`/courses/${cid}/graduation_topics/${topicId}/edit.json`; axios.get((url)).then((result)=>{ if(result){ this.setState({ left_banner_id:result.data.left_banner_id, course_name:result.data.course_name, left_banner_name:result.data.left_banner_name, teacherList:result.data.teacher_list, topic_property_first:result.data.topic_property_first, topic_property_second:result.data.topic_property_second, topic_repeat:result.data.topic_repeat, topic_source:result.data.topic_source, topic_type:result.data.topic_type, attachments:result.data.attachments, addonAfter:parseInt(result.data.selected_data.name.length) }) this.props.form.setFieldsValue({ tea_id:result.data.selected_data.tea_id, name:result.data.selected_data.name, city: [result.data.selected_data.province,result.data.selected_data.city], topic_type:result.data.selected_data.topic_type || undefined, topic_source:result.data.selected_data.topic_source || undefined, topic_property_first:result.data.selected_data.topic_property_first || undefined, topic_property_second:result.data.selected_data.topic_property_second || undefined, source_unit:result.data.selected_data.source_unit, topic_repeat:result.data.selected_data.topic_repeat || undefined }); this.mdRef.current.setValue(result.data.selected_data.description) const _fileList = result.data.attachments.map(item => { return { id: item.id, uid: item.id, name: item.title, url: item.url, status: 'done' } }) this.setState({ fileList: _fileList, cityDefaultValue: [result.data.selected_data.province,result.data.selected_data.city] }) } }).catch((error)=>{ console.log(error); }) } handleSubmit = (e) => { e.preventDefault(); const cid = this.props.match.params.coursesId const topicId = this.props.match.params.topicId // console.log(this.props); this.props.form.validateFieldsAndScroll((err, values) => { if (!err) { console.log('Received values of form: ', values); if (topicId !=undefined) { const editTopic = this.editTopic const editUrl = `/courses/${cid}/graduation_topics/${topicId}.json` let attachment_ids = undefined if (this.state.fileList) { attachment_ids = this.state.fileList.map(item => { return item.response ? item.response.id : item.id }) } axios.put(editUrl, { graduation_topic:{ ...values, province: values.city==undefined?"":values.city[0], city: values.city==undefined?"":values.city[1], }, attachment_ids }).then((response) => { if (response.status == 200) { const { id } = response.data; if (id) { this.props.showNotification('保存成功!'); this.props.history.push(`/courses/${cid}/graduation_topics/${this.state.left_banner_id}`); } } }).catch(function (error) { console.log(error); }); } else { const url = `/courses/${cid}/graduation_topics.json` let attachment_ids = undefined if (this.state.fileList) { attachment_ids = this.state.fileList.map(item => { return item.response.id }) } axios.post(url, { graduation_topic:{ ...values, province: values.city==undefined?"":values.city[0], city: values.city==undefined?"":values.city[1], }, attachment_ids, }).then((response) => { if (response.data) { const { id } = response.data; if (id) { this.props.showNotification('提交成功!'); this.props.history.push(`/courses/${cid}/graduation_topics/${this.state.left_banner_id}`); } } }) .catch(function (error) { console.log(error); }); } } else { $("html").animate({ scrollTop: $('html').scrollTop() - 100 }) } }); } // 选择省市 ChangeCity=(value, selectedOptions)=>{ console.log(selectedOptions); } // 附件相关 START handleChange = (info) => { let fileList = info.fileList; this.setState({ fileList }); } onAttachmentRemove = (file) => { confirm({ title: '确定要删除这个附件吗?', okText: '确定', cancelText: '取消', // content: 'Some descriptions', onOk: () => { this.deleteAttachment(file) }, onCancel() { console.log('Cancel'); }, }); return false; } deleteAttachment = (file) => { console.log(file); let id=file.response ==undefined ? file.id : file.response.id const url = `/attachments/${id}.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, }; }); } } }) .catch(function (error) { console.log(error); }); } // 附件相关 ------------ END changeTopicName=(e)=>{ // let num= 60 - parseInt(e.target.value.length); this.setState({ addonAfter:e.target.value.length }) } render() { let { fileList, teacherList, topic_property_first, topic_property_second, topic_repeat, topic_source, topic_type, addonAfter, left_banner_id, course_name, left_banner_name } = this.state; const { current_user } = this.props const { getFieldDecorator } = this.props.form; let{ topicId,coursesId }=this.props.match.params // console.log(this.props); const formItemLayout = { labelCol: { xs: { span: 24 }, // sm: { span: 8 }, sm: { span: 24 }, }, wrapperCol: { xs: { span: 24 }, // sm: { span: 16 }, sm: { span: 24 }, }, }; const uploadProps = { width: 600, fileList, multiple: true, // https://github.com/ant-design/ant-design/issues/15505 // showUploadList={false},然后外部拿到 fileList 数组自行渲染列表。 // showUploadList: false, action: `${getUrl()}/api/attachments.json`, onChange: this.handleChange, onRemove: this.onAttachmentRemove, beforeUpload: (file) => { console.log('beforeUpload', file.name); const isLt150M = file.size / 1024 / 1024 < 150; if (!isLt150M) { message.error('文件大小必须小于150MB!'); } return isLt150M; }, }; // console.log("dfsf"); // console.log(this.props); return(
{topicId==undefined?"新建":"编辑"}毕设选题
返回