import React, {Component} from "React"; import {Form, Select, Input, Button, Checkbox, DatePicker,Spin,Icon} from "antd"; import axios from 'axios'; import "../css/Courses.css"; import locale from 'antd/lib/date-picker/locale/zh_CN'; import moment from 'moment'; import Modals from '../../modals/Modals'; const { Option } = Select; const dateFormat = 'YYYY-MM-DD'; function range(start, end) { const result = []; for (let i = start; i < end; i++) { result.push(i); } return result; } function disabledDateTime() { return { disabledMinutes: () => range(1, 30).concat(range(31, 60)), }; } class CoursesNew extends Component { constructor(props) { super(props) this.state = { coursedata: undefined, searchlist: [], searchlistscholl:[], listvalue: undefined, fetching:false } } componentDidMount() { let coursesId = this.props.match.params.coursesId; let user_school=this.props.current_user&&this.props.current_user.user_school; if (coursesId != undefined) { let url = "/courses/" + coursesId + "/settings.json" axios.get(url).then((result) => { let data = result.data; this.props.form.setFieldsValue({ course: data.course_list_name, classroom: data.name, period: data.class_period, credit: data.credit, checkboxgroup: data.course_module_types, Realnamecertification: data.authentication, Professionalcertification:data.professional_certification, endtime: data.end_date === undefined ? "" : moment(data.end_date, dateFormat), school:data.school }); this.setState({ datatime: data.end_date, is_public: data.is_public === 1 ? true : false, Realnamecertification: data.authentication, Professionalcertification:data.professional_certification, }) }).catch((error) => { console.log(error); }) }else{ // console.log(user_school); this.props.form.setFieldsValue({ school:user_school, }); this.setState({ school:user_school, }) } this.getschool("") this.Searchvalue("") } componentDidUpdate(prevProps){ if(prevProps.current_user!=this.props.current_user){ if(this.props.current_user.user_identity==="学生"){ window.location.href ="/403" } } } onChangeTimepublishs = (date, dateString) => { if(dateString===""){ this.setState({ datatime: undefined, }) }else{ this.setState({ datatime: dateString, }) } } cancelmodel = () => { this.setState({ Modalstype: false, Loadtype: false, Modalstopval: "", ModalCancel: "", ModalSave: "", }) } scrollToAnchor = (anchorName) => { if (anchorName) { // 找到锚点 let anchorElement = document.getElementById(anchorName); // 如果对应id的锚点存在,就跳转到锚点 window.scrollTo(0, anchorElement.offsetTop - window.innerHeight / 2); } } handleSubmit = (e) => { e.preventDefault(); let coursesId = this.props.match.params.coursesId; let {is_public} = this.state // console.log(is_public) if (coursesId != undefined) { // 编辑 this.props.form.validateFields((err, values) => { if(values.course===""||values.course===undefined){ this.scrollToAnchor("iscourse") return } if(values.classroom===""||values.classroom===undefined){ this.scrollToAnchor("isclassroom") return } if(values.school===""||values.school===undefined){ this.scrollToAnchor("isschool") return } if(values.checkboxgroup.length===0){ this.setState({ Modalstype:true, Modalstopval:"请您至少添加一个课堂模块,", ModalsBottomval:"否则您将无法新建课堂。", Loadtype:true, ModalSave:()=>this.cancelmodel(), }) return } if (!err) { // console.log('Received values of form: ', values); let {datatime} = this.state; let url = "/courses/" + coursesId + ".json"; axios.put(url, { course_list_name: values.course, name: values.classroom, class_period: values.period, credit: parseFloat(values.credit), end_date: datatime, is_public: is_public === true || is_public === 1 ? 1 : 0, course_module_types: values.checkboxgroup, authentication: this.state.Realnamecertification, professional_certification: this.state.Professionalcertification, school:values.school } ).then((response) => { // debugger if (response.data.status === 0) { // this.setState({ // Modalstype: true, // Modalstopval: response.data.message, // ModalSave: this.cancelmodel, // Loadtype: true, // checkBoxValues: [], // checkAllValue: false, // // Realnamecertification : authentication, // // professional_certification: values.Professionalcertification // }) window.location.href = "/courses/" + coursesId+"/students"; } }).catch((error) => { console.log(error) }) } }); } else { this.props.form.validateFields((err, values) => { if(values.course===""||values.course===undefined){ this.scrollToAnchor("iscourse") return } if(values.classroom===""||values.classroom===undefined){ this.scrollToAnchor("isclassroom") return } if(values.school===""||values.school===undefined){ this.scrollToAnchor("isschool") return } if (!err) { // debugger //新建 // console.log('Received values of form: ', values); let {datatime} = this.state; let url = "/courses.json"; axios.post(url, { course_list_name: values.course, name: values.classroom, class_period: values.period, credit: parseFloat(values.credit), end_date: datatime, is_public: is_public === true || is_public === 1 ? 1 : 0, course_module_types: values.checkboxgroup, authentication: this.state.Realnamecertification, professional_certification: this.state.Professionalcertification, school:values.school } ).then((response) => { if (response.status === 200) { if (response.data.course_id != undefined) { window.location.href = "/courses/" + response.data.course_id+"/students"; } } }).catch((error) => { console.log(error) }) } }); } } goback = () => { if(this.props.match.params.coursesId===undefined){ this.props.history.push("/courses"); }else{ this.props.history.push(`/courses/${this.props.match.params.coursesId}`); } // window.history.go(-1) } onCheckAllChange = (e) => { // console.log(e.target.checked) this.setState({ is_public: e.target.checked == true ? 1 : 0, }); } onchanges =(e)=>{ this.setState({ Realnamecertification:e.target.checked, }) // console.log(e.target.checked); } onchangess=(e)=>{ this.setState({ Professionalcertification:e.target.checked, }) // console.log(e.target.checked); } Searchvalue=(value)=>{ let url="/courses/search_course_list.json"; axios.post(url,{ search:value }).then((result)=>{ // console.log(result.data) if (result.data.message===undefined) { this.setState({ searchlist: result.data.course_lists, // course:value, fetching: false }) } // this.props.form.setFieldsValue({ // course:value // }) }).catch((error)=>{ console.log(error) }) } handleSearch=(value)=>{ this.props.form.setFieldsValue({ classroom:value, course:value }); this.Searchvalue(value) }; handleChange=(value)=>{ this.props.form.setFieldsValue({ course:value, classroom:value }) }; handleSearchschool=(value)=>{ this.props.form.setFieldsValue({ school:value, fetching:true, }); this.Searchvalue(value) }; handleChangeschool=(value)=>{ this.setState({ school:value }); this.props.form.setFieldsValue({ school:value, }) }; getschool=(value)=>{ let url="/schools/school_list.json"; axios.get(url,{ params: { search: value } }).then((result)=>{ if (result.data.message===undefined) { this.setState({ searchlistscholl: result.data.school_names, scholl: value }) this.props.form.setFieldsValue({ scholl: value }) } }).catch((error)=>{ console.log(error) }) } render() { let {datatime} = this.state; const {getFieldDecorator} = this.props.form; const options = this.state.searchlist.map(d => ); const optionschool = this.state.searchlistscholl.map(z => ); // console.log(this.props.current_user.user_school) return (
{/*提示*/}

{this.props.match.params.coursesId === undefined ? "新建课堂" : "编辑课堂"}

返回
{/*内容*/}
{getFieldDecorator('school', { rules: [{required: true, message: "不能为空"}], })( )} {/*(输入内容出现匹配的下拉菜单←同账号管理的单位信息填写)*/}
{getFieldDecorator('course', { rules: [{required: true, message: "不能为空"}], })( )} {/*(错误示例:数据结构2017本部;数据结构2017秋季;数据结构2017电子商务1班)*/}

正确示例:数据结构

错误示例:数据结构2019春

{getFieldDecorator('classroom', { rules: [{required: true, message: "不能为空"}], })()} {/*(如果本学期包含多个班级,只需创建一个课堂然后在课堂内部建立不同的分班)*/}

正确示例:数据结构2019春季班级

错误示例:2019春季班级数据结构

{getFieldDecorator("period")( )} {getFieldDecorator("credit")( )} {getFieldDecorator("endtime")( )}
{getFieldDecorator("checkboxgroup", { initialValue: [ "shixun_homework", "common_homework", "group_homework", "exercise", "attachment", "course_group", ], })( 实训作业 普通作业 分组作业 试卷 资源 分班 毕业设计 问卷 讨论 )}
{getFieldDecorator("Realnamecertification")( 已实名认证 // // 已实名认证 // 已职业认证 (勾选,则通过邀请码加入课堂的用户,需要完成相关认证才能加入课堂) // )} {getFieldDecorator("Professionalcertification")( 已职业认证 (勾选,则通过邀请码加入课堂的用户,需要完成相关认证才能加入课堂) )}
{getFieldDecorator("publicclass")( 公开课堂 )} (选中后本课堂对所有用户可见,否则仅本课堂成员可见)
{/*提交*/} 取消
) } } const WrappedCoursesNewApp = Form.create({name: 'coursesNew'})(CoursesNew); export default WrappedCoursesNewApp;