diff --git a/.gitignore b/.gitignore index 77df2c1c5..ea08c700e 100644 --- a/.gitignore +++ b/.gitignore @@ -1,68 +1,72 @@ -# See https://help.github.com/articles/ignoring-files for more about ignoring files. -# -# If you find yourself ignoring temporary files generated by your text editor -# or operating system, you probably want to add a global ignore instead: -# git config --global core.excludesfile '~/.gitignore_global' - -# Ignore bundler config. -/.bundle - -# mac -*.DS_Store - -# Ignore all logfiles and tempfiles. -/log/* -/tmp/* -!/log/.keep -!/tmp/.keep - -# Ignore uploaded files in development -/storage/* - -/node_modules -/yarn-error.log - -# /public/assets -.byebug_history - -# Ignore master key for decrypting credentials and more. -/config/master.key -/config/database.yml -/.idea/* - -# Ignore react node_modules -/public/react/.cache -/public/react/build -/public/react/build/ -/public/react/node_modules/ -/public/react/config/stats.json -/public/react/stats.json -/public/react/.idea/* - -/public/npm-debug.log - -# avatars -/public/images/avatars - -/config/secrets.yml -/config/redis.yml -/config/elasticsearch.yml -/config/aliyun_vod.yml - -public/upload.html -/config/configuration.yml -/config/environments/production.rb -/config/initializers/gitlab_config.rb -/db/schema.rb -.vscode/ -vendor/bundle/ -.ruby-version -.ruby-gemset - -/Users -/files -/public/images/avatars -/public/files -/workspace -/log -/public/admin \ No newline at end of file +# See https://help.github.com/articles/ignoring-files for more about ignoring files. +# +# If you find yourself ignoring temporary files generated by your text editor +# or operating system, you probably want to add a global ignore instead: +# git config --global core.excludesfile '~/.gitignore_global' + +# Ignore bundler config. +/.bundle + +# Ignore lock config file +*.lock +*.log + +# mac +*.DS_Store + +# Ignore all logfiles and tempfiles. +/log/* +/tmp/* +!/log/.keep +!/tmp/.keep + +# Ignore uploaded files in development +/storage/* + +/node_modules +/yarn-error.log + +# /public/assets +.byebug_history + +# Ignore master key for decrypting credentials and more. +/config/master.key +/config/database.yml +/.idea/* + +# Ignore react node_modules +/public/react/.cache +/public/react/build +/public/react/build/ +/public/react/node_modules/ +/public/react/config/stats.json +/public/react/stats.json +/public/react/.idea/* + +/public/npm-debug.log + +# avatars +/public/images/avatars + +/config/secrets.yml +/config/redis.yml +/config/elasticsearch.yml +/config/aliyun_vod.yml + +public/upload.html +/config/configuration.yml +/config/environments/production.rb +/config/initializers/gitlab_config.rb +/db/schema.rb +.vscode/ +vendor/bundle/ +.ruby-version +.ruby-gemset + +/Users +/files +/public/images/avatars +/public/files +/workspace +/log +/public/admin diff --git a/public/react/src/modules/competitions/Competitioncommon/CompetitionCommon.js b/public/react/src/modules/competitions/Competitioncommon/CompetitionCommon.js index ec77f7e97..ed129d8bd 100755 --- a/public/react/src/modules/competitions/Competitioncommon/CompetitionCommon.js +++ b/public/react/src/modules/competitions/Competitioncommon/CompetitionCommon.js @@ -235,13 +235,16 @@ class CompetitionCommon extends Component{ this.props.showProfileCompleteDialog() return } + if(url===undefined){ let {data,signupdata}=this.state; - if(signupdata.enrolled===true){ - this.props.history.replace(`/courses/${data.course_id}`); - }else{ + // if(signupdata.enrolled===true){ + // this.props.history.replace(`/courses/${data.course_id}`); + // }else{ } + if (data.member_of_course === true) { - this.props.history.replace(`/courses/${data.course_id}`); + // this.props.history.replace(`/courses/${data.course_id}`); + window.open(`/courses/${data.course_id}`) } else { // 以学生身份调用加入课堂 进入课堂首页 let url = "/courses/apply_to_join_course.json" @@ -251,15 +254,18 @@ class CompetitionCommon extends Component{ } ).then((response) => { if (response.data.status === 0) { - this.props.history.replace(`/courses/${data.course_id}`); + // this.props.history.replace(); + this.Personalregistration(`/courses/${data.course_id}`) } }) + } - } + }else{ if (url === "personal") { - this.Personalregistration() + let urls = `/competitions/${this.props.match.params.identifier}/enroll`; + this.Personalregistration(urls) } else { this.props.history.replace(url); } @@ -268,10 +274,10 @@ class CompetitionCommon extends Component{ } - Personalregistration = () => { + Personalregistration = (urls) => { let {signupdata} = this.state; - let urls = `/competitions/${this.props.match.params.identifier}/enroll`; + if (signupdata.enroll_ended === true) { //已截止 this.props.showNotification(`报名已截止`); @@ -286,7 +292,8 @@ class CompetitionCommon extends Component{ if (response) { if (response.data) { this.props.showNotification(`报名成功,预祝您夺得桂冠!`); - this.props.history.replace(urls); + // this.props.history.replace(urls); + window.open(urls) } } }).catch((error) => { diff --git a/public/react/src/modules/courses/busyWork/CommonWorkAnswer.js b/public/react/src/modules/courses/busyWork/CommonWorkAnswer.js index ccaa3c04b..49ca5e1e4 100644 --- a/public/react/src/modules/courses/busyWork/CommonWorkAnswer.js +++ b/public/react/src/modules/courses/busyWork/CommonWorkAnswer.js @@ -1,113 +1,113 @@ -import React,{Component} from "React"; -import { Form, Select, Input, Button,Checkbox,Upload,Icon,message,Modal, Table, Divider, Tag,DatePicker,Radio,Tooltip} from "antd"; -import {Link} from 'react-router-dom'; -import locale from 'antd/lib/date-picker/locale/zh_CN'; -import { WordsBtn, MarkdownToHtml, on, off } from 'educoder'; -import axios from 'axios'; -import Modals from '../../modals/Modals'; -import CoursesListType from '../coursesPublic/CoursesListType'; -import HomeworkModal from "../coursesPublic/HomeworkModal"; -import CheckAllGroup from '../common/button/CheckAllGroup' -import moment from 'moment'; -import CheckCodeModal from '../coursesPublic/modal/CheckCodeModal' -import NoneData from '../coursesPublic/NoneData' - -import '../css/Courses.css' -import WorkDetailPageHeader from './common/WorkDetailPageHeader' -import TabRightComponents from './common/TabRightComponents' - -const { Option} = Select; -const CheckboxGroup = Checkbox.Group; -const confirm = Modal.confirm; -let GraduationTasksnewtype=true; -const $ = window.$; -const Search = Input.Search; -const RadioGroup = Radio.Group; - -class CommonWorkAnswer extends Component{ - - constructor(props){ - super(props) - this.state={ - course_name:"", - homework_name:"", - search: '' - } - } - fetchData = () => { - let workId=this.props.match.params.workId; - const url = `/homework_commons/${workId}/reference_answer.json` - - axios.get(url).then((result)=> { - if (result.data.course_id) { - - this.setState({ - ...result.data - }, () => { - }) - this.props.initWorkDetailCommonState && this.props.initWorkDetailCommonState( Object.assign({...result.data}, { - moduleName: '参考答案' - })) - } - - }).catch((error)=>{ - console.log(error) - }) - } - componentDidMount() { - this.fetchData() - try { - this.props.triggerRef(this); - }catch (e) { - - } - on('commonwork_fetch_all', this.fetchAllListener) - } - componentWillUnmount() { - off('commonwork_fetch_all', this.fetchAllListener) - } - fetchAllListener = () => { - this.fetchData() - } - - - render(){ - const dateFormat = 'YYYY-MM-DD HH:mm'; - - let {course_name, homework_name, search, page, loadingstate, homework_status, reference_answer, - attachments - } =this.state; - - let courseId=this.props.match.params.coursesId; - let category_id=this.props.match.params.category_id; - let workId=this.props.match.params.workId; - - const exportResultUrl = `/api/homework_commons/${workId}/works_list.xlsx` - - return( - - {/* 内容区 */} -
- {reference_answer ? : - reference_answer === undefined ? '' : ((!attachments || attachments.length == 0) && )} - - { attachments && attachments.map((item) => { - return (
- - - - {item.title} - {item.filesize} -
) - }) } - -
- -
- - ) - } -} - -export default CommonWorkAnswer; \ No newline at end of file +import React,{Component} from "react"; +import { Form, Select, Input, Button,Checkbox,Upload,Icon,message,Modal, Table, Divider, Tag,DatePicker,Radio,Tooltip} from "antd"; +import {Link} from 'react-router-dom'; +import locale from 'antd/lib/date-picker/locale/zh_CN'; +import { WordsBtn, MarkdownToHtml, on, off } from 'educoder'; +import axios from 'axios'; +import Modals from '../../modals/Modals'; +import CoursesListType from '../coursesPublic/CoursesListType'; +import HomeworkModal from "../coursesPublic/HomeworkModal"; +import CheckAllGroup from '../common/button/CheckAllGroup' +import moment from 'moment'; +import CheckCodeModal from '../coursesPublic/modal/CheckCodeModal' +import NoneData from '../coursesPublic/NoneData' + +import '../css/Courses.css' +import WorkDetailPageHeader from './common/WorkDetailPageHeader' +import TabRightComponents from './common/TabRightComponents' + +const { Option} = Select; +const CheckboxGroup = Checkbox.Group; +const confirm = Modal.confirm; +let GraduationTasksnewtype=true; +const $ = window.$; +const Search = Input.Search; +const RadioGroup = Radio.Group; + +class CommonWorkAnswer extends Component{ + + constructor(props){ + super(props) + this.state={ + course_name:"", + homework_name:"", + search: '' + } + } + fetchData = () => { + let workId=this.props.match.params.workId; + const url = `/homework_commons/${workId}/reference_answer.json` + + axios.get(url).then((result)=> { + if (result.data.course_id) { + + this.setState({ + ...result.data + }, () => { + }) + this.props.initWorkDetailCommonState && this.props.initWorkDetailCommonState( Object.assign({...result.data}, { + moduleName: '参考答案' + })) + } + + }).catch((error)=>{ + console.log(error) + }) + } + componentDidMount() { + this.fetchData() + try { + this.props.triggerRef(this); + }catch (e) { + + } + on('commonwork_fetch_all', this.fetchAllListener) + } + componentWillUnmount() { + off('commonwork_fetch_all', this.fetchAllListener) + } + fetchAllListener = () => { + this.fetchData() + } + + + render(){ + const dateFormat = 'YYYY-MM-DD HH:mm'; + + let {course_name, homework_name, search, page, loadingstate, homework_status, reference_answer, + attachments + } =this.state; + + let courseId=this.props.match.params.coursesId; + let category_id=this.props.match.params.category_id; + let workId=this.props.match.params.workId; + + const exportResultUrl = `/api/homework_commons/${workId}/works_list.xlsx` + + return( + + {/* 内容区 */} +
+ {reference_answer ? : + reference_answer === undefined ? '' : ((!attachments || attachments.length == 0) && )} + + { attachments && attachments.map((item) => { + return (
+ + + + {item.title} + {item.filesize} +
) + }) } + +
+ +
+ + ) + } +} + +export default CommonWorkAnswer; diff --git a/public/react/src/modules/courses/busyWork/CommonWorkAppraise.js b/public/react/src/modules/courses/busyWork/CommonWorkAppraise.js index 61469c6bd..bfc653ae0 100644 --- a/public/react/src/modules/courses/busyWork/CommonWorkAppraise.js +++ b/public/react/src/modules/courses/busyWork/CommonWorkAppraise.js @@ -1,314 +1,314 @@ -import React,{Component} from "React"; -import { Form, Select, Input, Button,Checkbox,Upload,Icon,message,Modal, Table, Divider, Tag,DatePicker,Radio,Tooltip} from "antd"; -import {Link} from 'react-router-dom'; -import locale from 'antd/lib/date-picker/locale/zh_CN'; -import { WordsBtn, MarkdownToHtml, markdownToHTML, ImageLayer2 } from 'educoder'; -import axios from 'axios'; -import Modals from '../../modals/Modals'; -import CoursesListType from '../coursesPublic/CoursesListType'; -import HomeworkModal from "../coursesPublic/HomeworkModal"; -import CheckAllGroup from '../common/button/CheckAllGroup' -import moment from 'moment'; -import CheckCodeModal from '../coursesPublic/modal/CheckCodeModal' -import '../css/Courses.css' -import WorkDetailPageHeader from './common/WorkDetailPageHeader' -import CommonWorkAppraiseReply from './reply/CommonWorkAppraiseReply' -import Example from './TestHooks' -import CommonWorkAppraiseReviseAttachments from './CommonWorkAppraiseReviseAttachments' -import LeaderIcon from './common/LeaderIcon' -const { Option} = Select; -const CheckboxGroup = Checkbox.Group; -const confirm = Modal.confirm; - -const $ = window.$; -const Search = Input.Search; -const RadioGroup = Radio.Group; - -class CommonWorkAppraise extends Component{ - - constructor(props){ - super(props) - this.state={ - course_name:"", - homework_name:"", - search: '', - - - attachments: [], - revise_attachments: [], - } - } - getWork = () => { - let workId =this.props.match.params.workId; - let studentWorkId =this.props.match.params.studentWorkId; - - // https://www.showdoc.cc/127895880302646?page_id=1957586480118445 - const url = `/student_works/${studentWorkId}.json` - - axios.get(url).then((result)=> { - if (result.data.course_id) { - - this.setState({ - ...result.data - }) - } - }).catch((error)=>{ - console.log(error) - }) - } - getSupplyAttachments = () => { - let workId =this.props.match.params.workId; - let studentWorkId =this.props.match.params.studentWorkId; - - const url = `/student_works/${studentWorkId}/supply_attachments.json` - - axios.get(url).then((result)=> { - if (result.data.course_id) { - - this.setState({ - ...result.data - }) - } - }).catch((error)=>{ - console.log(error) - }) - } - getReviseAttachments = () => { - let studentWorkId =this.props.match.params.studentWorkId; - const url = `/student_works/${studentWorkId}/supply_attachments.json`; - axios.get(url).then((result)=> { - if (result.data.revise_attachments) { - - this.setState({ - ...result.data - }) - } - - }).catch((error)=>{ - console.log(error) - }) - } - componentDidUpdate(prevProps, prevState) { - if (this.props.match.params.studentWorkId != prevProps.match.params.studentWorkId) { - this.getWork(); - this.getReviseAttachments() - this.commonWorkAppraiseReply && this.commonWorkAppraiseReply.fetchAllComments() - } - } - - componentDidMount() { - this.getWork(); - this.getReviseAttachments() - - let workId =this.props.match.params.workId; - let studentWorkId =this.props.match.params.studentWorkId; - // const url = `/student_works/${studentWorkId}/comment_list.json` - - // axios.get(url).then((result)=> { - // if (result.data.course_id) { - - // this.setState({ - // ...result.data - // }) - // } - - // }).catch((error)=>{ - // console.log(error) - // }) - } - - onAttachmentRemove = (id) => { - this.setState({ - Modalstype:true, - // Modalstopval:'确定要删除这个附件吗?', - Modalstopval: '是否确认删除?', - - ModalSave: ()=>this.deleteAttachment(id), - ModalCancel:this.cancelAttachment - }) - } - deleteAttachment = (id) => { - const url = `/attachments/${id}.json` - axios.delete(url, { - }) - .then((response) => { - if (response.data) { - const { status } = response.data; - if (status == 0) { - this.getWork() - this.getReviseAttachments(); - this.cancelAttachment(); - } - } - }) - .catch(function (error) { - console.log(error); - }); - } - cancelAttachment=()=>{ - this.setState({ - Modalstype:false, - Modalstopval:'', - ModalSave:"", - ModalCancel:"" - }) - } - onReplySuccess = () => { - this.getReviseAttachments(); - } - - render(){ - const dateFormat = 'YYYY-MM-DD HH:mm'; - - let {course_name, homework_name, search, page, loadingstate, homework_status, reference_answer, - attachments, homework_id, project_info, work_members, is_evaluation, - description, update_user_name, commit_user_name, update_time, commit_time, author_name, - revise_attachments, revise_reason, atta_update_user, atta_update_time, atta_update_user_login, - Modalstype,Modalstopval,ModalCancel,ModalSave,loadtype, is_leader_work - } =this.state; - - let courseId=this.props.match.params.coursesId; - let category_id=this.props.match.params.category_id; - let studentWorkId=this.props.match.params.studentWorkId; - const isAdmin = this.props.isAdmin() - - document.title=course_name&&course_name; - return( - - {/*提示*/} - - {/* 内容区 */} - {/*
-
*/} - -
- - - -
- {(description || (attachments && attachments.length != 0)) &&
-
- 内容 -
-
-
- - {attachments.map((item,key)=>{ - return( -
- - - - - 40 ? item.title : ''}`}> - {item.title} - - {item.filesize} - {/*{item.delete===true?:""}*/} - {item.delete===true?:""} - {/* style={{display: 'none'}} */} -
- ) - })} - - -
- { update_time && - - 更新 - {update_user_name} - - {moment(update_time).format('YYYY-MM-DD HH:mm')==="Invalid date"?"":moment(update_time).format('YYYY-MM-DD HH:mm')} - - } - - { commit_time && - - 提交 - {commit_user_name} - - {moment(commit_time).format('YYYY-MM-DD HH:mm')==="Invalid date"?"":moment(commit_time).format('YYYY-MM-DD HH:mm')} - - } -
- -
} - - - - {is_evaluation != true && project_info && project_info.name &&
-
- 关联项目 -
- -
- } - - {is_evaluation != true && work_members && !!work_members.length &&
-
- 全部组员 -
-
-
- 当前组员:{author_name} {is_leader_work && } -
-
- 其他组员: - {work_members.map((item, index) => { - return - {isAdmin ? - this.props.toWorkDetailPage(this.props.match.params, null, item.work_id)} - > - {item.user_name} - : {item.user_name}} - {item.is_leader && } - - })} -
- {isAdmin &&
- 温馨提示: - 点击其他组员的姓名,可以快速评阅TA的作品 -
} - -
-
- } -
- - - {/* task_type={datalist&&datalist.task_type} */} - {this.commonWorkAppraiseReply = ref}} - > - -
- -
- - ) - } -} - -export default CommonWorkAppraise; \ No newline at end of file +import React,{Component} from "react"; +import { Form, Select, Input, Button,Checkbox,Upload,Icon,message,Modal, Table, Divider, Tag,DatePicker,Radio,Tooltip} from "antd"; +import {Link} from 'react-router-dom'; +import locale from 'antd/lib/date-picker/locale/zh_CN'; +import { WordsBtn, MarkdownToHtml, markdownToHTML, ImageLayer2 } from 'educoder'; +import axios from 'axios'; +import Modals from '../../modals/Modals'; +import CoursesListType from '../coursesPublic/CoursesListType'; +import HomeworkModal from "../coursesPublic/HomeworkModal"; +import CheckAllGroup from '../common/button/CheckAllGroup' +import moment from 'moment'; +import CheckCodeModal from '../coursesPublic/modal/CheckCodeModal' +import '../css/Courses.css' +import WorkDetailPageHeader from './common/WorkDetailPageHeader' +import CommonWorkAppraiseReply from './reply/CommonWorkAppraiseReply' +import Example from './TestHooks' +import CommonWorkAppraiseReviseAttachments from './CommonWorkAppraiseReviseAttachments' +import LeaderIcon from './common/LeaderIcon' +const { Option} = Select; +const CheckboxGroup = Checkbox.Group; +const confirm = Modal.confirm; + +const $ = window.$; +const Search = Input.Search; +const RadioGroup = Radio.Group; + +class CommonWorkAppraise extends Component{ + + constructor(props){ + super(props) + this.state={ + course_name:"", + homework_name:"", + search: '', + + + attachments: [], + revise_attachments: [], + } + } + getWork = () => { + let workId =this.props.match.params.workId; + let studentWorkId =this.props.match.params.studentWorkId; + + // https://www.showdoc.cc/127895880302646?page_id=1957586480118445 + const url = `/student_works/${studentWorkId}.json` + + axios.get(url).then((result)=> { + if (result.data.course_id) { + + this.setState({ + ...result.data + }) + } + }).catch((error)=>{ + console.log(error) + }) + } + getSupplyAttachments = () => { + let workId =this.props.match.params.workId; + let studentWorkId =this.props.match.params.studentWorkId; + + const url = `/student_works/${studentWorkId}/supply_attachments.json` + + axios.get(url).then((result)=> { + if (result.data.course_id) { + + this.setState({ + ...result.data + }) + } + }).catch((error)=>{ + console.log(error) + }) + } + getReviseAttachments = () => { + let studentWorkId =this.props.match.params.studentWorkId; + const url = `/student_works/${studentWorkId}/supply_attachments.json`; + axios.get(url).then((result)=> { + if (result.data.revise_attachments) { + + this.setState({ + ...result.data + }) + } + + }).catch((error)=>{ + console.log(error) + }) + } + componentDidUpdate(prevProps, prevState) { + if (this.props.match.params.studentWorkId != prevProps.match.params.studentWorkId) { + this.getWork(); + this.getReviseAttachments() + this.commonWorkAppraiseReply && this.commonWorkAppraiseReply.fetchAllComments() + } + } + + componentDidMount() { + this.getWork(); + this.getReviseAttachments() + + let workId =this.props.match.params.workId; + let studentWorkId =this.props.match.params.studentWorkId; + // const url = `/student_works/${studentWorkId}/comment_list.json` + + // axios.get(url).then((result)=> { + // if (result.data.course_id) { + + // this.setState({ + // ...result.data + // }) + // } + + // }).catch((error)=>{ + // console.log(error) + // }) + } + + onAttachmentRemove = (id) => { + this.setState({ + Modalstype:true, + // Modalstopval:'确定要删除这个附件吗?', + Modalstopval: '是否确认删除?', + + ModalSave: ()=>this.deleteAttachment(id), + ModalCancel:this.cancelAttachment + }) + } + deleteAttachment = (id) => { + const url = `/attachments/${id}.json` + axios.delete(url, { + }) + .then((response) => { + if (response.data) { + const { status } = response.data; + if (status == 0) { + this.getWork() + this.getReviseAttachments(); + this.cancelAttachment(); + } + } + }) + .catch(function (error) { + console.log(error); + }); + } + cancelAttachment=()=>{ + this.setState({ + Modalstype:false, + Modalstopval:'', + ModalSave:"", + ModalCancel:"" + }) + } + onReplySuccess = () => { + this.getReviseAttachments(); + } + + render(){ + const dateFormat = 'YYYY-MM-DD HH:mm'; + + let {course_name, homework_name, search, page, loadingstate, homework_status, reference_answer, + attachments, homework_id, project_info, work_members, is_evaluation, + description, update_user_name, commit_user_name, update_time, commit_time, author_name, + revise_attachments, revise_reason, atta_update_user, atta_update_time, atta_update_user_login, + Modalstype,Modalstopval,ModalCancel,ModalSave,loadtype, is_leader_work + } =this.state; + + let courseId=this.props.match.params.coursesId; + let category_id=this.props.match.params.category_id; + let studentWorkId=this.props.match.params.studentWorkId; + const isAdmin = this.props.isAdmin() + + document.title=course_name&&course_name; + return( + + {/*提示*/} + + {/* 内容区 */} + {/*
+
*/} + +
+ + + +
+ {(description || (attachments && attachments.length != 0)) &&
+
+ 内容 +
+
+
+ + {attachments.map((item,key)=>{ + return( +
+ + + + + 40 ? item.title : ''}`}> + {item.title} + + {item.filesize} + {/*{item.delete===true?:""}*/} + {item.delete===true?:""} + {/* style={{display: 'none'}} */} +
+ ) + })} + + +
+ { update_time && + + 更新 + {update_user_name} + + {moment(update_time).format('YYYY-MM-DD HH:mm')==="Invalid date"?"":moment(update_time).format('YYYY-MM-DD HH:mm')} + + } + + { commit_time && + + 提交 + {commit_user_name} + + {moment(commit_time).format('YYYY-MM-DD HH:mm')==="Invalid date"?"":moment(commit_time).format('YYYY-MM-DD HH:mm')} + + } +
+ +
} + + + + {is_evaluation != true && project_info && project_info.name &&
+
+ 关联项目 +
+ +
+ } + + {is_evaluation != true && work_members && !!work_members.length &&
+
+ 全部组员 +
+
+
+ 当前组员:{author_name} {is_leader_work && } +
+
+ 其他组员: + {work_members.map((item, index) => { + return + {isAdmin ? + this.props.toWorkDetailPage(this.props.match.params, null, item.work_id)} + > + {item.user_name} + : {item.user_name}} + {item.is_leader && } + + })} +
+ {isAdmin &&
+ 温馨提示: + 点击其他组员的姓名,可以快速评阅TA的作品 +
} + +
+
+ } +
+ + + {/* task_type={datalist&&datalist.task_type} */} + {this.commonWorkAppraiseReply = ref}} + > + +
+ +
+ + ) + } +} + +export default CommonWorkAppraise; diff --git a/public/react/src/modules/courses/busyWork/CommonWorkList.js b/public/react/src/modules/courses/busyWork/CommonWorkList.js index e5046a9d5..213c9ceb1 100644 --- a/public/react/src/modules/courses/busyWork/CommonWorkList.js +++ b/public/react/src/modules/courses/busyWork/CommonWorkList.js @@ -1,4 +1,4 @@ -import React,{Component} from "React"; +import React,{Component} from "react"; import { Form, Select, Input, Button,Checkbox,Upload,Icon,message,Modal, Table, Divider, Tag,DatePicker,Radio,Tooltip,Spin, Pagination} from "antd"; import {Link} from 'react-router-dom'; import locale from 'antd/lib/date-picker/locale/zh_CN'; diff --git a/public/react/src/modules/courses/busyWork/CommonWorkListTemplate.js b/public/react/src/modules/courses/busyWork/CommonWorkListTemplate.js index 94f6cc05e..863093b5b 100644 --- a/public/react/src/modules/courses/busyWork/CommonWorkListTemplate.js +++ b/public/react/src/modules/courses/busyWork/CommonWorkListTemplate.js @@ -1,4 +1,4 @@ -import React,{Component} from "React"; +import React,{Component} from "react"; import { Form, Select, Input, Button,Checkbox,Upload,Icon,message,Modal, Table, Divider, Tag,DatePicker,Radio,Tooltip} from "antd"; import {Link} from 'react-router-dom'; import locale from 'antd/lib/date-picker/locale/zh_CN'; @@ -73,7 +73,7 @@ class CommonWorkSetting extends Component{ lineHeight: '30px', }; - + return( {
@@ -102,12 +102,12 @@ class CommonWorkSetting extends Component{
- 作品列表 作业描述 参考答案 - 设置 @@ -119,7 +119,7 @@ class CommonWorkSetting extends Component{
- +
} @@ -132,4 +132,4 @@ class CommonWorkSetting extends Component{ } const CommonWorkSettingForm = Form.create({ name: 'commonworkSettingForm' })(CommonWorkSetting); -export default CommonWorkSettingForm; \ No newline at end of file +export default CommonWorkSettingForm; diff --git a/public/react/src/modules/courses/busyWork/CommonWorkPost.js b/public/react/src/modules/courses/busyWork/CommonWorkPost.js index ce552fa50..9a8e47daa 100644 --- a/public/react/src/modules/courses/busyWork/CommonWorkPost.js +++ b/public/react/src/modules/courses/busyWork/CommonWorkPost.js @@ -1,4 +1,4 @@ -import React,{Component} from "React"; +import React,{Component} from "react"; import { Form, Select, Input, Button,Checkbox,Upload,Icon,message,Modal,Tooltip} from "antd"; import {Link} from 'react-router-dom'; import axios from 'axios'; @@ -36,7 +36,7 @@ class CommonWorkPost extends Component{ selectobjct:undefined, Loadtype:false, - + limit:20, memberNumMin: 2, memberNumMax: 5, @@ -44,7 +44,7 @@ class CommonWorkPost extends Component{ } componentDidMount(){ - const studentWorkId = this.props.match.params.studentWorkId + const studentWorkId = this.props.match.params.studentWorkId this.isEdit = !!studentWorkId window.location.pathname.indexOf('post_edit') != -1 let coursesId=this.props.match.params.coursesId; @@ -59,7 +59,7 @@ class CommonWorkPost extends Component{ url = `/student_works/${studentWorkId}/edit.json` axios.get(url).then((response)=>{ if(response.data.course_id){ - + // TODO // response.data.attachments const _fileList = response.data.attachments.map(item => { @@ -83,14 +83,14 @@ class CommonWorkPost extends Component{ memberNumMin: response.data.min_num, memberNumMax: response.data.max_num, }) - this.mine = _memebers.length ? _memebers[0] : null + this.mine = _memebers.length ? _memebers[0] : null // 分组 // this.setState({ // task_status:checkedValues, // selectmemberslist:selects // }) this.props.form.setFieldsValue({ - description: response.data.description, + description: response.data.description, }, () => {}); this.mdRef.current.setValue(response.data.description) } @@ -105,7 +105,7 @@ class CommonWorkPost extends Component{ user_name: response.data.user_name, student_id: response.data.user_student_id, group_name: response.data.group_name, - + } this.mine = mine // const _memebers = response.data.members.slice(0); @@ -207,7 +207,7 @@ class CommonWorkPost extends Component{ - + } }); @@ -403,7 +403,7 @@ class CommonWorkPost extends Component{ } searchList=(search,page,limit)=>{ - + let id=this.props.match.params.workId; let workId=this.props.match.params.workId; // let url="/graduation_tasks/"+id+"/graduation_works/search_member_list.json"; @@ -451,7 +451,7 @@ class CommonWorkPost extends Component{ funtaskstatus=(checkedValues)=>{ /** - 比较 checkedValues 和 this.state.selectmemberslist + 比较 checkedValues 和 this.state.selectmemberslist checkedValues length > this.state.task_status.length 是新增; 反之是删除 比较找到不同的id 去除重复的,checkedValues留下的是新增,task_status留下的是删除 @@ -472,7 +472,7 @@ class CommonWorkPost extends Component{ _selectmemberslist.push( this.state.members.filter(item => item.user_id == _checkedValues[0])[0]) } else if (_task_status.length) { // 删除 _.remove(_selectmemberslist, (item)=> item.user_id == _task_status[0]) - } + } // let{members}=this.state; @@ -526,13 +526,13 @@ class CommonWorkPost extends Component{ if (item.user_id == id) { deleteOldMemberIndex = index; return true - } + } }) if (deleteOldMemberIndex == -1) { this.doDelete(id) return; } else { - + } } @@ -619,7 +619,7 @@ render(){ const moduleName = this.props.getModuleName() const moduleCHName = this.props.getModuleName(true) const isGroup = this.props.isGroup() - + return( @@ -644,7 +644,7 @@ render(){ {/*{workslist&&workslist.task_name}*/} {/*>*/} {/**/} - + {`${current_user ? current_user.real_name : ''} ${ this.isEdit ? '编辑' : '提交'}作品` }

@@ -667,7 +667,7 @@ render(){ .ant-upload-list-item:hover .ant-upload-list-item-info{ background-color:#fff; } - + .upload_1 .ant-upload-list { width: 350px; } @@ -793,7 +793,7 @@ render(){ {item.user_name}{ item.user_name.length <= 5 && _is_leader && } - +
9 ? item.group_name : ''} >{item.group_name}
@@ -801,9 +801,9 @@ render(){ title={item.student_id && item.student_id.length > 12 ? item.student_id : ''} >{item.student_id} {item.user_id != this.props.current_user.user_id ? -
this.delecttask_status(item.user_id)}>
:""} - + ) })} @@ -842,4 +842,4 @@ render(){ } } const CommonWorkPostApp = Form.create({ name: 'coursesNew' })(CommonWorkPost); -export default CommonWorkPostApp; \ No newline at end of file +export default CommonWorkPostApp; diff --git a/public/react/src/modules/courses/busyWork/CommonWorkQuestion.js b/public/react/src/modules/courses/busyWork/CommonWorkQuestion.js index 04ff2a066..9318d3c15 100644 --- a/public/react/src/modules/courses/busyWork/CommonWorkQuestion.js +++ b/public/react/src/modules/courses/busyWork/CommonWorkQuestion.js @@ -1,4 +1,4 @@ -import React,{Component} from "React"; +import React,{Component} from "react"; import { Form, Select, Input, Button,Checkbox,Upload,Icon,message,Modal, Table, Divider, Tag,DatePicker,Radio,Tooltip} from "antd"; import {Link} from 'react-router-dom'; import locale from 'antd/lib/date-picker/locale/zh_CN'; @@ -63,7 +63,7 @@ class CommonWorkQuestion extends Component{ on('commonwork_fetch_all', this.fetchAllListener) } componentWillUnmount() { - off('commonwork_fetch_all', this.fetchAllListener) + off('commonwork_fetch_all', this.fetchAllListener) } fetchAllListener = () => { this.fetchData() @@ -81,10 +81,10 @@ class CommonWorkQuestion extends Component{ let category_id=this.props.match.params.category_id; let task_Id=this.props.match.params.task_Id; const isGroup = this.props.isGroup() - + return( - + {/* 内容区 */}
@@ -110,8 +110,8 @@ class CommonWorkQuestion extends Component{ {/*
(各小组必须在educoder平台创建项目)
*/}
} - - + + { homework_id && item.publish_time).map(item => { - + if (disable_unified_setting == false && moment(item.publish_time) < moment()) { // 已经有规则发不过了,不能修改统一设置 disable_unified_setting = true @@ -140,12 +140,12 @@ class CommonWorkSetting extends Component{ init_evaluation_start: result.data.evaluation_start, init_evaluation_end: result.data.evaluation_end, init_appeal_time: result.data.appeal_time, - + rules, ta_proportion: result.data.ta_proportion * 100, te_proportion: result.data.te_proportion * 100, st_proportion: result.data.st_proportion * 100, - + }) this.props.initWorkDetailCommonState && this.props.initWorkDetailCommonState( Object.assign({...result.data}, { moduleName: '设置' @@ -174,7 +174,7 @@ class CommonWorkSetting extends Component{ } } componentWillUnmount() { - off('commonwork_fetch_all', this.fetchAllListener) + off('commonwork_fetch_all', this.fetchAllListener) } fetchAllListener = () => { this.fetchData() @@ -233,7 +233,7 @@ class CommonWorkSetting extends Component{ } - + onChangeTimepublish= (date, dateString) => { // console.log('startValue', dateString); @@ -264,7 +264,7 @@ class CommonWorkSetting extends Component{ } onChangeTimelatetime=(date, dateString)=>{ - + this.setState({ late_time: handleDateString(dateString) }) @@ -340,7 +340,7 @@ class CommonWorkSetting extends Component{ const anonymous_appeal = e.target.checked let appeal_time, appeal_penalty = this.state.appeal_penalty const currentEndTime = this._getCurrentEndTime() - + if (anonymous_appeal) { appeal_penalty = 2 if (this.state.allow_late && this.state.late_time) { @@ -511,7 +511,7 @@ class CommonWorkSetting extends Component{ let max_un_unified_setting_end_time = null; rules.map(item => { if (!max_un_unified_setting_end_time || moment(item.end_time) > moment(max_un_unified_setting_end_time)) { - max_un_unified_setting_end_time = item.end_time; + max_un_unified_setting_end_time = item.end_time; } }) return max_un_unified_setting_end_time @@ -523,11 +523,11 @@ class CommonWorkSetting extends Component{ let {assigngroups,hascommit,minnums,max_nums}=this.state; const {homework_status, homework_id, homework_name, homework_type, publish_immediately, end_immediately - , - publish_time, end_time, - allow_late, late_penalty, late_time, work_public, score_open, answer_public, group_settings, - anonymous_comment, anonymous_appeal, evaluation_start, evaluation_end, evaluation_num, absence_penalty, appeal_time, - appeal_penalty, ta_mode, final_mode, te_proportion, ta_proportion, st_proportion, + , + publish_time, end_time, + allow_late, late_penalty, late_time, work_public, score_open, answer_public, group_settings, + anonymous_comment, anonymous_appeal, evaluation_start, evaluation_end, evaluation_num, absence_penalty, appeal_time, + appeal_penalty, ta_mode, final_mode, te_proportion, ta_proportion, st_proportion, unified_setting, publish_time_type, end_time_type } = this.state; @@ -544,7 +544,7 @@ class CommonWorkSetting extends Component{ } group_settings_param = result.rules.map(item => { if (!max_un_unified_setting_end_time || moment(item.end_time) > moment(max_un_unified_setting_end_time)) { - max_un_unified_setting_end_time = item.end_time; + max_un_unified_setting_end_time = item.end_time; } return { group_id: item.course_group_id, @@ -568,8 +568,8 @@ class CommonWorkSetting extends Component{ scrollTo('.publicTimeTip') return false } - - let temp_publish_time + + let temp_publish_time let temp_end_time if (unified_setting) { temp_publish_time = publish_time @@ -584,14 +584,14 @@ class CommonWorkSetting extends Component{ } else { temp_end_time = max_un_unified_setting_end_time } - + // 已发布的不检查 const isUnPublish= homework_status.indexOf(STATUS_UN_PUBLISH) != -1 const isAdmin = this.props.isAdmin() const current = moment(); const publish_time_editable = isUnPublish; const end_time_editable = isAdmin || !end_time || moment(end_time) > current; - + if (unified_setting) { if (publish_time_editable && temp_publish_time && moment(temp_publish_time) < moment()) { this.setState({ @@ -700,7 +700,7 @@ class CommonWorkSetting extends Component{ this.setState({ appeal_penalty_tip: '' }) } - + } @@ -712,14 +712,14 @@ class CommonWorkSetting extends Component{ return false } - /** + /** "group_settings": [ { "group_id": [820, 821], "publish_time": "2018-04-18 10:00:00", "end_time": "2018-04-20 10:00:00" }, - * */ + * */ // axios let course_id=this.props.match.params.coursesId; const url = `/homework_commons/${workId}/update_settings.json` @@ -735,18 +735,18 @@ class CommonWorkSetting extends Component{ late_time: late_time ? new Date(late_time) : late_time, // 补交截止时间 anonymous_comment: anonymous_comment, // true: 启用匿评 false:未启用匿评 evaluation_start: evaluation_start ? new Date(evaluation_start) : evaluation_start, //匿评开始时间 - evaluation_end: evaluation_end ? new Date(evaluation_end) : evaluation_end, + evaluation_end: evaluation_end ? new Date(evaluation_end) : evaluation_end, evaluation_num: evaluation_num, // 匿评数 absence_penalty: absence_penalty, // 匿评扣分 anonymous_appeal: anonymous_appeal, // true: 启用匿评申诉, false:未启用 appeal_time: appeal_time ? new Date(appeal_time) : appeal_time, // 申诉结束时间 - appeal_penalty: appeal_penalty, // 违规匿评扣分 + appeal_penalty: appeal_penalty, // 违规匿评扣分 ta_mode: ta_mode, // 1:普通模式 0:复审模式 final_mode: final_mode, // true: 单项评分优先, false: 多项评分配比 te_proportion: te_proportion / 100, ta_proportion: ta_proportion / 100, st_proportion: st_proportion / 100, - work_public: work_public, //公开作品 + work_public: work_public, //公开作品 score_open: score_open, // 公开成绩 answer_public: answer_public, @@ -920,15 +920,15 @@ class CommonWorkSetting extends Component{ commenttimevalue, homework_status, homework_id, homework_name, homework_type, publish_immediately, end_immediately, unified_setting, publish_time, - end_time, allow_late, late_penalty, late_time, work_public, score_open, answer_public, group_settings, - anonymous_comment, anonymous_appeal, evaluation_start, evaluation_end, evaluation_num, absence_penalty, appeal_time, + end_time, allow_late, late_penalty, late_time, work_public, score_open, answer_public, group_settings, + anonymous_comment, anonymous_appeal, evaluation_start, evaluation_end, evaluation_num, absence_penalty, appeal_time, appeal_penalty, ta_mode, final_mode, te_proportion, ta_proportion, st_proportion, anonymous_comment_time_tip, appeal_time_tip, final_mode_false_tip, startEditFlag, publish_time_type, end_time_type, rules, disable_unified_setting, work_statuses, work_id, accessoryVisible, - + init_late_time, init_evaluation_start, init_evaluation_end, init_appeal_time } =this.state; @@ -971,7 +971,7 @@ class CommonWorkSetting extends Component{ const exportResultUrl = `/api/homework_commons/${workId}/works_list.xlsx` const noAuth = !isAdmin || !startEditFlag; return( - + @@ -1004,7 +1004,7 @@ class CommonWorkSetting extends Component{ onToPublishClick={this.onToPublishClick} > + isPublish={false} doWhenSuccess={this.doWhenSuccess}>
@@ -1033,7 +1033,7 @@ class CommonWorkSetting extends Component{

发布设置 { - !startEditFlag && isAdmin ? + !startEditFlag && isAdmin ? { this.setState({startEditFlag: true}) }}> 编辑设置 {/**/} @@ -1049,7 +1049,7 @@ class CommonWorkSetting extends Component{ >统一设置 - + (选中则所有分班使用相同的发布设置,仅课堂管理员可修改;否则各个分班允许单独设置)

} @@ -1078,8 +1078,8 @@ class CommonWorkSetting extends Component{ // disabled={this.props.isSuperAdmin()?false:publish_time_type===true?true:false} disabled={moment(this.state.init_publish_time) < moment() || noAuth} - // disabledDate={ (publish_time) => { - // return publish_time && publish_time < moment().add(-1, 'days'); } + // disabledDate={ (publish_time) => { + // return publish_time && publish_time < moment().add(-1, 'days'); } // } /> @@ -1109,15 +1109,15 @@ class CommonWorkSetting extends Component{ disabled={this.props.isSuperAdmin()?false:end_time_type===true?true:false} disabled={moment(this.state.init_end_time) < moment() || noAuth} disabledDate={disabledDateFunc} - - // disabledDate={ (end_time) => - // { + + // disabledDate={ (end_time) => + // { // const publish_time = this.state.publish_time // if (!publish_time) { // return end_time && end_time < moment(); // } - // if (!publish_time || !end_time) { return false; } - // return end_time.valueOf() < moment(publish_time, dateFormat).valueOf(); } + // if (!publish_time || !end_time) { return false; } + // return end_time.valueOf() < moment(publish_time, dateFormat).valueOf(); } // } /> @@ -1127,7 +1127,7 @@ class CommonWorkSetting extends Component{
{
{publicTimeTip}
} - : + : adaptered_group_settings && !!adaptered_group_settings.length && } - - {/* + + {/* flagPageEdit={flagPageEdit} */} @@ -1148,7 +1148,7 @@ class CommonWorkSetting extends Component{
-
补交设置 +
补交设置 (选中,则允许学生延时提交作品)
@@ -1164,7 +1164,7 @@ class CommonWorkSetting extends Component{ (延时提交作品时,学生成绩将被扣减的分值) {latepenaltytype===true?
{latepenaltyvalue}
:""}
- +
结束时间: {/* @@ -1185,15 +1185,15 @@ class CommonWorkSetting extends Component{ // || moment(init_late_time) < moment() disabled={!allow_late || noAuth } disabledDate={disabledDateFunc} - // disabledDate={ (late_time) => - // { + // disabledDate={ (late_time) => + // { // const end_time = this.state.end_time - // if (!end_time || !late_time) { return false; } - // return late_time < moment(end_time, dateFormat).add(-1, 'days'); } + // if (!end_time || !late_time) { return false; } + // return late_time < moment(end_time, dateFormat).add(-1, 'days'); } // } /> - + (学生“延时”提交作品的时间截点) {
{latetimetype}
}
@@ -1207,7 +1207,7 @@ class CommonWorkSetting extends Component{
匿评设置
- +
- // { + // disabledDate={ (evaluation_start) => + // { // const end_time = this.state.end_time - // if (!end_time || !evaluation_start) { return false; } - // return evaluation_start.valueOf() < moment(end_time, dateFormat).valueOf(); } + // if (!end_time || !evaluation_start) { return false; } + // return evaluation_start.valueOf() < moment(end_time, dateFormat).valueOf(); } // } /> @@ -1268,11 +1268,11 @@ class CommonWorkSetting extends Component{ disabled={(anonymous_comment && !noAuth ? false : true) || moment(init_evaluation_end) < moment()} disabledDate={disabledDateFunc} - // disabledDate={ (evaluation_end) => - // { + // disabledDate={ (evaluation_end) => + // { // const evaluation_start = this.state.evaluation_start - // if (!evaluation_start || !evaluation_end) { return false; } - // return evaluation_end.valueOf() < moment(evaluation_start, dateFormat).valueOf(); } + // if (!evaluation_start || !evaluation_end) { return false; } + // return evaluation_end.valueOf() < moment(evaluation_start, dateFormat).valueOf(); } // } /> @@ -1314,8 +1314,8 @@ class CommonWorkSetting extends Component{
{this.state.absence_penalty_tip &&
{this.state.absence_penalty_tip}
} - - { anonymous_comment && + + { anonymous_comment &&

- + 允许学生对自己作品的匿评评分进行申诉,由教师和助教处理申诉
- +
1、接受学生的合理申诉:

被申诉的评分记录无效,不参与最终成绩的计算

@@ -1340,12 +1340,12 @@ class CommonWorkSetting extends Component{ 2、拒绝学生的不合理申诉:

被申诉的评分记录有效,不允许学生对该评分记录进行二次申诉

被申诉的评阅人的作品成绩,不会扣除违规匿评分

- +

{/* (提交作品少于2个时,匿评开启将失败;请在作品数量达标后,重新进行匿评设置) */}
- {/* 启用匿评申述 结束时间: */} + {/* 启用匿评申述 结束时间: */}
结束时间: {/* @@ -1369,7 +1369,7 @@ class CommonWorkSetting extends Component{ /> - + (学生提交匿评申诉的时间截点)
@@ -1398,13 +1398,13 @@ class CommonWorkSetting extends Component{
助教评分
- +
普通模式(选中,则取各助教最终评分的平均分) - + 复审模式(选中,则只取最新的助教评分) @@ -1423,7 +1423,7 @@ class CommonWorkSetting extends Component{

计算说明:
- + 教师评分 * 其百分比 + 助教评分 * 其百分比 + 学生匿评平均分 * 其百分比 - (
迟交扣分 + 缺评扣分 * 缺评数 + 违规匿评扣分 * 违规匿评数 )

注意
@@ -1431,30 +1431,30 @@ class CommonWorkSetting extends Component{ 评分选项上。
例:教师评分40% + 助教评分35% + 学生匿评25%,学生A没有教师评分记
录,则其最终成绩按照助教评分55% + 学生匿评45%进行计算 - +

- +
教师评分: - %
助教评分: - - % + %
学生匿评: - % @@ -1465,7 +1465,7 @@ class CommonWorkSetting extends Component{

计算说明:
- + 优先顺序排前的非零评分 * 100% -
( 迟交扣分 + 缺评扣分 * 缺评数 + 违规匿评扣分 * 违规匿评数 )
例:有教师评分则教师评分100%,否则教辅评分100%,依次类推 @@ -1477,11 +1477,11 @@ class CommonWorkSetting extends Component{ 非零百分比的评分选项,在没有评分记录的情况下,其百分比平摊到另外的评
分选项上。例如:教师评分40% + 助教评分35% + 学生匿评25%,学生A没
有得到教师评分,则最终成绩将按照助教评分55% + 学生匿评45%进行计算 */} - +

- +
:""} - + ) } } const CommonWorkSettingForm = Form.create({ name: 'commonworkSettingForm' })(CommonWorkSetting); -export default CommonWorkSettingForm; \ No newline at end of file +export default CommonWorkSettingForm; diff --git a/public/react/src/modules/courses/busyWork/common/LeaderIcon.js b/public/react/src/modules/courses/busyWork/common/LeaderIcon.js index 7d56d1b24..9c61af569 100644 --- a/public/react/src/modules/courses/busyWork/common/LeaderIcon.js +++ b/public/react/src/modules/courses/busyWork/common/LeaderIcon.js @@ -1,11 +1,11 @@ -import React,{Component} from "React"; +import React,{Component} from "react"; export default function LeaderIcon(props = {}) { let icon = null; const { className, style } = props; const _className = `font-8 blueFull Actionbtn ${className}` if (props.small) { - icon =
组长
} else { icon =
组长
- + } return icon -} \ No newline at end of file +} diff --git a/public/react/src/modules/courses/busyWork/common/TabRightComponents.js b/public/react/src/modules/courses/busyWork/common/TabRightComponents.js index 25ae55203..f3fd6aaaf 100644 --- a/public/react/src/modules/courses/busyWork/common/TabRightComponents.js +++ b/public/react/src/modules/courses/busyWork/common/TabRightComponents.js @@ -1,4 +1,4 @@ -import React,{Component} from "React"; +import React,{Component} from "react"; import { Form, Select, Input, Button,Checkbox,Icon,message,Modal, Table, Divider, Tag,DatePicker,Radio,Tooltip} from "antd"; import {Link} from 'react-router-dom'; import { WordsBtn, MarkdownToHtml } from 'educoder'; @@ -22,7 +22,7 @@ class TabRightComponents extends Component{ this.publishModal = React.createRef(); this.endModal = React.createRef(); - + this.state={ accessoryVisible: false, DownloadType:false, @@ -110,18 +110,18 @@ class TabRightComponents extends Component{ let exportUrl = `/api/homework_commons/${workId}/works_list.zip` const exportResultUrl = `/api/homework_commons/${workId}/works_list.xlsx` - + return( - {isAdmin ? + {isAdmin ?
- - +
项目在线质量检测*/} {isAdmin && this.props.toEditPage(this.props.match.params, workId)}>编辑作业} -
: +
: {work_statuses && work_statuses.indexOf('提交作品') != -1 && { this.props.toWorkPostPage(this.props.match.params)}} @@ -171,7 +171,7 @@ class TabRightComponents extends Component{ {work_statuses && work_statuses.indexOf('修改作品') != -1 && { this.props.toWorkPostPage(this.props.match.params, null, true, work_id)}} >修改作品} - {work_statuses && work_statuses.indexOf('补交附件') != -1 && + {work_statuses && work_statuses.indexOf('补交附件') != -1 && { let workId=this.props.match.params.workId; - + if ( window.location.pathname.indexOf('appraise') == -1) { let category_id= this.props.category.category_id; this.props.toListPage(this.props.match.params, category_id) } else { - this.props.toWorkListPage(this.props.match.params, workId) + this.props.toWorkListPage(this.props.match.params, workId) // this.props.match.params.category_id } // this.props.history.goBack() @@ -67,7 +67,7 @@ class WorkDetailPageHeader extends Component{ let courseId=this.props.match.params.coursesId; let category_id= category && category.category_id; let category_name= category && category.category_name; - + let workId=this.props.match.params.workId; const studentWorkId = this.props.match.params.studentWorkId @@ -108,7 +108,7 @@ class WorkDetailPageHeader extends Component{ typelist={homework_status} typesylename={"mt3"} /> - + {category && 返回} @@ -135,13 +135,13 @@ class WorkDetailPageHeader extends Component{ { noTab !== true &&
- 作品列表 - 作业描述 - {view_answer == true && 参考答案} @@ -149,9 +149,9 @@ class WorkDetailPageHeader extends Component{ className={`${childModuleName == '设置' ? 'active' : '' } `} style={{paddingLeft:this.props.isAdmin()?'38px':'20px'}} to={`/courses/${courseId}/${moduleEngName}/${workId}/setting`}>{this.props.isAdmin()?"设置":"得分规则"} - - { this.props.tabRightComponents } + + { this.props.tabRightComponents }
} @@ -169,4 +169,4 @@ class WorkDetailPageHeader extends Component{ } } -export default WorkDetailPageHeader; \ No newline at end of file +export default WorkDetailPageHeader; diff --git a/public/react/src/modules/courses/exercise/Ecercisemount.js b/public/react/src/modules/courses/exercise/Ecercisemount.js index 13a6128de..94d29eec4 100644 --- a/public/react/src/modules/courses/exercise/Ecercisemount.js +++ b/public/react/src/modules/courses/exercise/Ecercisemount.js @@ -1,4 +1,4 @@ -import React,{Component} from "React"; +import React,{Component} from "react"; import { Form, Select, Input, Button,Checkbox,DatePicker} from "antd"; import locale from 'antd/lib/date-picker/locale/zh_CN'; @@ -244,4 +244,4 @@ class Ecercisemount extends Component{ } } const EcercisemountApp = Form.create({ name: 'coursesNew' })(Ecercisemount); -export default EcercisemountApp; \ No newline at end of file +export default EcercisemountApp; diff --git a/public/react/src/modules/courses/graduation/tasks/GraduationTasksSubmitedit.js b/public/react/src/modules/courses/graduation/tasks/GraduationTasksSubmitedit.js index bf371baab..7ac909958 100644 --- a/public/react/src/modules/courses/graduation/tasks/GraduationTasksSubmitedit.js +++ b/public/react/src/modules/courses/graduation/tasks/GraduationTasksSubmitedit.js @@ -1,4 +1,4 @@ -import React,{Component} from "React"; +import React,{Component} from "react"; import { Form, Select, Input, Button,Checkbox,Upload,Icon,message,Modal,Spin,Tooltip} from "antd"; import {Link} from 'react-router-dom'; import TPMMDEditor from '../../../tpm/challengesnew/TPMMDEditor'; diff --git a/public/react/src/modules/courses/graduation/tasks/GraduationTasksSubmitnew.js b/public/react/src/modules/courses/graduation/tasks/GraduationTasksSubmitnew.js index 140d743b9..d505ba15d 100644 --- a/public/react/src/modules/courses/graduation/tasks/GraduationTasksSubmitnew.js +++ b/public/react/src/modules/courses/graduation/tasks/GraduationTasksSubmitnew.js @@ -1,4 +1,5 @@ -import React,{Component} from "React"; +import React,{Component} from "react"; + import { Form, Select, Input, Button,Checkbox,Upload,Icon,message,Modal,Tooltip,Spin} from "antd"; import {Link} from 'react-router-dom'; import TPMMDEditor from '../../../tpm/challengesnew/TPMMDEditor'; @@ -852,4 +853,4 @@ render(){ } } const GraduationTasksSubmitnewApp = Form.create({ name: 'coursesNew' })(GraduationTasksSubmitnew); -export default GraduationTasksSubmitnewApp; \ No newline at end of file +export default GraduationTasksSubmitnewApp; diff --git a/public/react/src/modules/courses/graduation/tasks/GraduationTasksappraise.js b/public/react/src/modules/courses/graduation/tasks/GraduationTasksappraise.js index 2f9b28ef5..bc99acf0b 100644 --- a/public/react/src/modules/courses/graduation/tasks/GraduationTasksappraise.js +++ b/public/react/src/modules/courses/graduation/tasks/GraduationTasksappraise.js @@ -1,4 +1,4 @@ -import React,{Component} from "React"; +import React,{Component} from "react"; import { Form, Select, Input, Button,Checkbox,Upload,Icon,message,Modal, Table, Divider, Tag} from "antd"; import {Link} from 'react-router-dom'; import { WordsBtn,markdownToHTML } from 'educoder'; @@ -330,7 +330,7 @@ class GraduationTasksappraise extends Component{
}
- + @@ -346,4 +346,4 @@ class GraduationTasksappraise extends Component{ } } -export default GraduationTasksappraise; \ No newline at end of file +export default GraduationTasksappraise; diff --git a/public/react/src/modules/courses/graduation/tasks/GraduationTasksedit.js b/public/react/src/modules/courses/graduation/tasks/GraduationTasksedit.js index 7458d0089..b530a4de6 100644 --- a/public/react/src/modules/courses/graduation/tasks/GraduationTasksedit.js +++ b/public/react/src/modules/courses/graduation/tasks/GraduationTasksedit.js @@ -1,4 +1,4 @@ -import React,{Component} from "React"; +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'; @@ -436,7 +436,7 @@ class GraduationTasksedit extends Component{ .upload_1 .ant-upload-list { width: 350px; } - + `} 取消*/} 取消
:"":""} - +
:""} @@ -1305,4 +1305,4 @@ debugger } const GraduationTaskssetting = Form.create({ name: 'coursesNew' })(GraduationTaskssettingapp); -export default GraduationTaskssetting; \ No newline at end of file +export default GraduationTaskssetting; diff --git a/public/react/src/modules/courses/graduation/tasks/GraduationTaskssettinglist.js b/public/react/src/modules/courses/graduation/tasks/GraduationTaskssettinglist.js index 43bb9ba0b..2c5049a3a 100644 --- a/public/react/src/modules/courses/graduation/tasks/GraduationTaskssettinglist.js +++ b/public/react/src/modules/courses/graduation/tasks/GraduationTaskssettinglist.js @@ -1,4 +1,4 @@ -import React,{Component} from "React"; +import React,{Component} from "react"; import { Form, Select, Input, Button,Checkbox,Upload,Icon,message,Modal,Pagination, Table, Divider, Tag,Tooltip} from "antd"; import {Link} from 'react-router-dom'; import {getImageUrl, NoneData, sortDirections} from 'educoder'; diff --git a/public/react/src/modules/courses/graduation/tasks/GraduationTaskssettingquestions.js b/public/react/src/modules/courses/graduation/tasks/GraduationTaskssettingquestions.js index f87b0a53d..05e8d497b 100644 --- a/public/react/src/modules/courses/graduation/tasks/GraduationTaskssettingquestions.js +++ b/public/react/src/modules/courses/graduation/tasks/GraduationTaskssettingquestions.js @@ -1,4 +1,4 @@ -import React,{Component} from "React"; +import React,{Component} from "react"; import { Form, Select, Input, Button,Checkbox,Upload,Icon,message,Modal, Table, Divider, Tag} from "antd"; import {Link} from 'react-router-dom'; import { WordsBtn,markdownToHTML,AttachmentList} from 'educoder'; @@ -39,7 +39,7 @@ class GraduationTasksquestions extends Component{ try{ this.props.triggerRef(this) }catch(e){ - + } } @@ -372,7 +372,7 @@ class GraduationTasksquestions extends Component{
diff --git a/public/react/src/modules/courses/members/studentsList.js b/public/react/src/modules/courses/members/studentsList.js index 646573163..983a5009d 100644 --- a/public/react/src/modules/courses/members/studentsList.js +++ b/public/react/src/modules/courses/members/studentsList.js @@ -26,7 +26,7 @@ const buildColumns = (that,isParent) => { let showSorter = isParent==true const courseId = that.props.match.params.coursesId const columns=[{ - title: '序号1', + title: '序号', dataIndex: 'id', key: 'id', align:'center', diff --git a/public/react/src/modules/courses/new/CoursesNew.js b/public/react/src/modules/courses/new/CoursesNew.js index f9cea2da2..26dd31e3f 100644 --- a/public/react/src/modules/courses/new/CoursesNew.js +++ b/public/react/src/modules/courses/new/CoursesNew.js @@ -1,4 +1,4 @@ -import React, {Component} from "React"; +import React, {Component} from "react"; import {Form, Select, Input, Button, Checkbox, DatePicker,Spin,Icon,AutoComplete,InputNumber,Breadcrumb} from "antd"; import ApplyForAddOrgModal from '../../user/modal/ApplyForAddOrgModal'; import axios from 'axios'; @@ -686,8 +686,8 @@ class CoursesNew extends Component { width: 65px !important; background-color: #fafafa!important; } - - + + ` } @@ -740,7 +740,7 @@ class CoursesNew extends Component { width: 655px !important; } - + .yslzxueshiskmc .ant-input-group{ width: 704px !important; } @@ -798,7 +798,7 @@ class CoursesNew extends Component { } .yslzxueshi .ant-input-group { width: 280px !important; - + } .yslzxueshi .ant-input-group-addon{ width: 44px !important; @@ -984,4 +984,4 @@ class CoursesNew extends Component { } const WrappedCoursesNewApp = Form.create({name: 'coursesNew'})(CoursesNew); -export default WrappedCoursesNewApp; \ No newline at end of file +export default WrappedCoursesNewApp; diff --git a/public/react/src/modules/courses/new/Goldsubject.js b/public/react/src/modules/courses/new/Goldsubject.js index f04bf1f4b..006f3f44f 100644 --- a/public/react/src/modules/courses/new/Goldsubject.js +++ b/public/react/src/modules/courses/new/Goldsubject.js @@ -1,4 +1,4 @@ -import React, {Component} from "React"; +import React, {Component} from "react"; import {Form, Select, Input, Button, Checkbox, DatePicker,Spin,Icon,AutoComplete,InputNumber,Breadcrumb} from "antd"; import ApplyForAddOrgModal from '../../user/modal/ApplyForAddOrgModal'; import axios from 'axios'; diff --git a/public/react/src/modules/courses/studentWork/StudentHomework.js b/public/react/src/modules/courses/studentWork/StudentHomework.js index d7fcb9157..6cd3edf31 100644 --- a/public/react/src/modules/courses/studentWork/StudentHomework.js +++ b/public/react/src/modules/courses/studentWork/StudentHomework.js @@ -1,4 +1,4 @@ -import React,{Component} from "React"; +import React,{Component} from "react"; import { Form, Select, Input, Button,Checkbox,DatePicker} from "antd"; import locale from 'antd/lib/date-picker/locale/zh_CN'; @@ -243,4 +243,4 @@ class StudentHomework extends Component{ } } const StudentHomeworkApp = Form.create({ name: 'coursesNew' })(StudentHomework); -export default StudentHomeworkApp; \ No newline at end of file +export default StudentHomeworkApp;