You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
educoder/public/react/src/modules/courses/shixunHomework/Trainingjobsetting.js

2355 lines
98 KiB

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

import React, {Component} from "react";
import CoursesListType from '../coursesPublic/CoursesListType';
import HomeworkModal from "../coursesPublic/HomeworkModal";
import {WordsBtn, ActionBtn, handleDateString,getImageUrl} from 'educoder';
import PollDetailTabForthRules from '../poll/PollDetailTabForthRules';
import ShixunWorkModal from './Shixunworkdetails/ShixunWorkModal';
import {
Button,
Checkbox,
message,
InputNumber,
DatePicker,
Radio,
Tooltip,
notification,
} from "antd";
import {Link} from 'react-router-dom';
import locale from 'antd/lib/date-picker/locale/zh_CN';
import axios from 'axios';
import '../css/members.css';
import "../common/formCommon.css";
import '../css/Courses.css';
import './style.css';
import '../css/busyWork.css'
import '../poll/pollStyle.css'
import moment from 'moment';
import 'moment/locale/zh-cn';
import Modals from "../../modals/Modals";
import Startshixuntask from "../coursesPublic/Startshixuntask";
import DownloadMessageysl from "../../modals/DownloadMessageysl";
const RadioGroup = Radio.Group;
//GraduationTaskssetting.js
//课堂作业设置
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)),
// disabledSeconds: () => range(0,60)
}
}
function disabledDate(current) {
return current && current < moment().endOf('day').subtract(1, 'days');
}
class Trainingjobsetting extends Component {
//unifiedsetting 统一设置
//allowreplenishment 允许补交
//completionefficiencyscore 完成效率评分占比
//level级别
//proportion 比例
//releasetime 发布时间
//deadline 截至时间
constructor(props) {
super(props);
// this.props.form.setFieldsValue({
// radiogroup:1,
//
// });
this.state = {
flagPageEdit: undefined,
flagPageEdits: false,
flagPageEditstwo:false,
flagPageEditsthrees:false,
flagPageEditsfor:false,
props: props,
flagPageEditsbox:false,
handclass:undefined,
rulest:undefined,
rules:undefined,
starttimetype: false,
endtimetype: false,
latetimetype: false,
allowlate: 1,
unit_p_tip: "",
unit_e_tip: "",
latepenaltytype: false,
unifiedsetting: true,
allowreplenishment: undefined,
completionefficiencyscore: true,
whethertopay: false,
proportion: undefined,
level: undefined,
ealuation: false,
latededuction: undefined,
latedeductiontwo: "20",
database: false,
datasheet: false,
databasetwo: undefined,
datasheettwo: undefined,
publicwork: undefined,
publish_time: undefined,
publish_timebool:false,
end_time: undefined,
late_time: undefined,
endOpen: false,
borreds:undefined,
borredss:undefined,
releasetime: undefined,
deadline: undefined,
late_times: undefined,
mystyle: {"display": "block"},
mystyles: {"display": "none"},
challenge_settings: undefined,
boolUnite: true,
boolUnitetwo: true,
boolUnitetwoname:undefined,
score_open: false,
group_settings:undefined,
rulesdata:[],
showmodel:false,
code_review:false,
testscripttiptype:false,
end_timebool:false,
late_timesbool:false,
}
// console.log("获取到的值")
// console.log("Trainingjobsetting")
// // console.log("设置页面调用的老师学生权限")
// console.log(JSON.stringify(props))
// console.log(this.props.isAdmin()) //判断是否是老师
// console.log(this.props.isStudent()) //判断是否是学生
// console.log(this.props.isNotMember()) //判断是否有登入权限
}
componentDidMount() {
console.log("Trainingjobsetting");
console.log("componentDidMount");
this.getTrainingjobsetting();
let query = this.props.location.pathname;
const type = query.split('/');
this.setState({
shixuntypes:type[3]
})
this.props.triggerRef(this);
}
// componentWillReceiveProps(nextProps) {
// // console.log("+++++++++916");
// // console.log(nextProps);
// // console.log(this.props)
// // console.log(this.props.isAdmin());
// if (nextProps.code_review != this.props.code_review) {
// if (nextProps.code_review !== undefined) {
// console.log("diaoyonglwangluo4");
// this.getTrainingjobsetting()
//
// }
// }
//
// }
// 获取数据地方
getTrainingjobsetting = () => {
// console.log("getTrainingjobsetting")
var homeworkid = this.props.match.params.homeworkid;
// console.log(homeworkid)
let url = `/homework_commons/${homeworkid}/settings.json`;
axios.get(url).then((result) => {
// console.log(url);
// console.log(result);
if (result!=undefined) {
// console.log(result.data.code_review)
// console.log("设置页")
// console.log(JSON.stringify(result))
let array=[];
let arrays=[];
var rulesdatas=[];
if(result.data.group_settings !== undefined){
if(result.data.group_settings.length === 0){
array.push({
course_group_id:[],
course_group_name:[],
publish_time:undefined,
end_time:undefined,
publish_flag:"",
end_flag:"",
class_flag:"",
course_search:"",
open:false
})
}else {
for(var i=0;i<result.data.group_settings.length;i++) {
if(result.data.group_settings[i].publish_time === null &&result.data.group_settings[i].end_time === null){
}else {
array.push({
course_group_id: result.data.group_settings[i].group_id,
course_group_name: result.data.group_settings[i].group_name,
publish_time: moment(result.data.group_settings[i].publish_time).format('YYYY-MM-DD HH:mm'),
end_time: moment(result.data.group_settings[i].end_time).format('YYYY-MM-DD HH:mm'),
publish_flag: "",
end_flag: "",
class_flag: "",
course_search: "",
open: false
})
}
}
}
}
if(result.data.group_settings!== undefined){
for(var i=0;i<result.data.group_settings.length;i++){
arrays.push({
course_group_id:result.data.group_settings[i].group_id,
course_group_name:result.data.group_settings[i].group_name,
publish_time:moment( result.data.group_settings[i].publish_time).format('YYYY-MM-DD HH:mm') ,
end_time:moment(result.data.group_settings[i].end_time ).format('YYYY-MM-DD HH:mm'),
course_choosed:0,
})
if(result.data.group_settings[i].group_id instanceof Array ) {
rulesdatas.push({
group_id:result.data.group_settings[i].group_id,
publish_time: moment( result.data.group_settings[i].publish_time).format('YYYY-MM-DD HH:mm') ,
end_time: moment(result.data.group_settings[i].end_time ).format('YYYY-MM-DD HH:mm'),
})
}else {
rulesdatas.push({
group_id:[result.data.group_settings[i].group_id],
publish_time: moment( result.data.group_settings[i].publish_time).format('YYYY-MM-DD HH:mm') ,
end_time: moment(result.data.group_settings[i].end_time ).format('YYYY-MM-DD HH:mm'),
})
}
}
}
console.log("220");
var publish_timebools=false;
if(result.data.publish_time){
publish_timebools= moment(result.data.publish_time,"YYYY-MM-DD HH:mm")<=moment();
}
console.log("228");
console.log(publish_timebools);
var end_timebools =false;
if(result.data.end_time){
end_timebools == moment(result.data.end_time,"YYYY-MM-DD HH:mm")<=moment();
}
console.log("233");
console.log(end_timebools);
var late_timess=false;
if(result.data.late_time){
late_timess== moment(result.data.end_time,"YYYY-MM-DD HH:mm")<=moment();
}
console.log("240");
console.log(late_timess);
this.setState({
publish_timebool:publish_timebools,
end_timebool:end_timebools,
late_timesbool:late_timess,
rules:array,
rulest:arrays,
rulesdata:rulesdatas,
jobsettingsdata: result,
shixun_exp:result.data.shixun_exp,
group_settings:result.data.group_settings,
score_open: result.data.score_open,
unifiedsetting: result.data.unified_setting,
boolUnite: result.data.unified_setting === true ? false : result.data.unified_setting === false ? true : true,
publish_time: result.data.publish_time === undefined ? undefined : result.data.publish_time === null ? undefined : result.data.publish_time,
releasetime: result.data.publish_time === undefined ? undefined : result.data.publish_time === null ? undefined : result.data.publish_time,
end_time: result.data.end_time === undefined ? undefined : result.data.end_time === null ? undefined : result.data.end_time,
deadline: result.data.end_time === undefined ? undefined : result.data.end_time === null ? undefined : result.data.end_time,
late_time: result.data.late_time === undefined ? undefined : result.data.late_time === null ? undefined : result.data.late_time,
late_times: result.data.late_time === undefined ? undefined : result.data.late_time === null ? undefined : result.data.late_time,
allowreplenishment: result.data.allow_late,
latededuction: result.data.late_penalty,
level: result.data.answer_open_evaluation === true ? "满分" : "扣分",
completionefficiencyscore: result.data.work_efficiency,
latedeductiontwo: result.data.eff_score,
proportion: result.data.shixun_evaluation === 0 ? "均分比例" : result.data.shixun_evaluation === 1 ? "经验值比例" : result.data.shixun_evaluation === 2 ? "自定义分值" : "",
publicwork: result.data.work_public,
challenge_settings: result.data.challenge_settings,
code_review:result.data.code_review
})
this.props.Getdataback(result,result.data);
}
})
}
//跳转道描点的地方
scrollToAnchor = (anchorName) => {
if (anchorName) {
// 找到锚点
let anchorElement = document.getElementById(anchorName);
// 如果对应id的锚点存在就跳转到锚点
if(anchorElement) { anchorElement.scrollIntoView(); }
}
}
//提交数据
pustdate = () => {
var thiss=this;
// console.log("pustdate");
var homeworkid = this.props.match.params.homeworkid
var array = [];
var datas = this.state.challenge_settings;
var challenge_scoredata = [];
for (var i = 0; i < datas.length; i++) {
if (datas[i].checked === true) {
var object = {
challenge_id: datas[i].challenge_id,
challenge_score: datas[i].challenge_score,
};
challenge_scoredata.push(datas[i].challenge_score);
array.push(object)
console.log("datas[i].challenge_score");
console.log(i);
console.log(datas[i].challenge_score);
}
}
console.log("提交的数据"+"pustdate");
console.log("提交的数据"+"pustdate");
if (this.state.jobsettingsdata.data.unified_setting === true) {
if (this.state.unifiedsetting === true) {
if (this.state.releasetime === undefined || this.state.releasetime === null || this.state.releasetime === "") {
// this.props.showNotification(`请选择发布时间`);
//立即发布
// this.homeworkstart();
this.scrollToAnchor("publishtimeid");
this.setState({
unit_p_tip: "请选择发布时间",
p_flag: true,
borreds:"bor-reds",
})
return;
}else{
if (this.state.publish_time=== undefined || this.state.publish_time=== null || this.state.publish_time=== "") {
if ( moment(this.state.publish_time, 'YYYY-MM-DD HH:mm') <= moment()) {
//发布时间小于 当前时间
this.scrollToAnchor("publishtimeid");
this.setState({
unit_p_tip: "发布时间不能早于当前时间",
p_flag: true,
borreds:"bor-reds",
})
return;
}
}
}
if (this.state.deadline === undefined || this.state.deadline === null || this.state.deadline === "") {
// this.props.showNotification(`请选择截止时间`);
this.scrollToAnchor("publishtimeid");
this.setState({
unit_e_tip: "请选择截止时间",
p_flag: true,
borredss:"bor-reds",
})
return
}else {
if(!this.state.flagPageEditsthrees === false){
if (moment(this.state.end_time, "YYYY-MM-DD HH:mm") <= moment()) {
//截止时间小于当前时间
this.scrollToAnchor("publishtimeid");
this.setState({
unit_e_tip: "截止时间不能早于当前时间",
p_flag: true,
borredss:"bor-reds",
})
return;
}
if (moment(this.state.end_time, "YYYY-MM-DD HH:mm") <= moment(this.state.publish_time, "YYYY-MM-DD HH:mm")) {
//截止时间小于发布时间
this.scrollToAnchor("publishtimeid");
this.setState({
unit_e_tip: "截止时间不能早于发布时间",
p_flag: true,
borredss:"bor-reds",
})
return
}
}
}
if (this.state.allowreplenishment === true) {
if (this.state.late_times === undefined || this.state.late_times === null || this.state.late_times === "") {
// this.props.showNotification(`请选择结束时间`);
this.scrollToAnchor("end_timeid")
this.setState({
hand__e_tip: "请选择结束时间",
hand_flags: true,
handclass: "bor-reds",
})
return;
} else {
// 补交结束时间不能早于截止时间
if(!this.state.flagPageEditsfor ===false){
if (moment(this.state.late_time, "YYYY-MM-DD HH:mm") <= moment()) {
//结束时间小于当前时间
this.scrollToAnchor("end_timeid");
this.setState({
hand__e_tip: "结束时间不能早于当前时间",
hand_flags: true,
handclass: "bor-reds",
})
return;
}
if (moment(this.state.late_time, "YYYY-MM-DD HH:mm") <= moment(this.state.publish_time, "YYYY-MM-DD HH:mm")) {
//结束时间小于发布时间
this.scrollToAnchor("end_timeid");
this.setState({
hand__e_tip: "结束时间不能早于发布时间",
hand_flags: true,
handclass: "bor-reds",
})
return;
}
if (moment(this.state.late_time, "YYYY-MM-DD HH:mm") <= moment(this.state.end_time, "YYYY-MM-DD HH:mm")) {
//结束时间小于发布时间
this.scrollToAnchor("end_timeid");
this.setState({
hand__e_tip: "补交结束时间不能早于截止时间",
hand_flags: true,
handclass: "bor-reds",
})
return;
}
}
}
}
} else {
let rulesdata=this.state.rulesdata;
console.log("pustdate123131312321321321");
console.log(rulesdata);
if(
rulesdata.length === 0){
this.props.showNotification(`分班发布设置不能为空`);
return;
}
//
}
}
if (this.state.allowreplenishment === true) {
if (this.state.latededuction === undefined) {
this.props.showNotification(`请输入迟交扣分数`);
return;
}
if (this.state.latededuction === null) {
this.props.showNotification(`请输入迟交扣分数`);
return;
}
if (this.state.latededuction === "") {
this.props.showNotification(`请输入迟交扣分数`);
return;
}
if (this.state.latededuction <0) {
this.props.showNotification(`迟交扣分数不能小于零`);
return;
}
if (this.state.level === undefined || this.state.level === "") {
this.props.showNotification(`请选择扣分项`);
return;
}
}
if (this.state.completionefficiencyscore === true) {
if (this.state.latedeductiontwo === undefined) {
this.props.showNotification(`请输入占比分数`);
return;
}
if (this.state.latedeductiontwo === null) {
this.props.showNotification(`请输入占比分数`);
return;
}
if (this.state.latedeductiontwo === "") {
this.props.showNotification(`请输入占比分数`);
return;
}
if (this.state.latedeductiontwo <= 0) {
this.props.showNotification(`占比分数不能小于等于零`);
return;
}
// if(this.state.latedeductiontwo >100){
// message.error("占比分不能大于100",1);
// return;
// }
if (this.state.proportion === undefined) {
this.props.showNotification(`请选择比列`);
return;
}
if (this.state.proportion !== undefined) {
if (this.state.proportion === "均分比例") {
//关卡分值平分
}
if (this.state.proportion === "经验值比例") {
this.setState({
boolUnitetwo: false,
})
}
if (this.state.proportion === "自定义分值") {
this.setState({
boolUnitetwo: false,
})
}
}
}
var latedeductiontwos = 0;
if (this.state.completionefficiencyscore === true) {
latedeductiontwos = this.state.latedeductiontwo;
}
if(challenge_scoredata.length>0){
var len = 0;
for (var k = 0; k < challenge_scoredata.length; k++) {
len = len + parseFloat(challenge_scoredata[k]);
console.log(len);
console.log(challenge_scoredata[k]);
console.log(len);
}
var max = latedeductiontwos + len;
if (max > 100) {
console.log("max>100");
this.props.showNotification(`总分值+效率占比分之和要等于100现在分值为` + max);
return;
}
if(max<100){
console.log("max<100");
this.props.showNotification(`总分值+效率占比分之和要等于100现在分值为` + max);
return;
}
}
var url = `/homework_commons/${homeworkid}/update_settings.json`;
var data = undefined;
// console.log("this.state.unified_setting")
// console.log(this.state.unifiedsetting)
if(array === "[]" || array.length === 0){
this.props.showNotification(`没有关卡不能更新设置`);
return;
}
if(this.state.unifiedsetting === true){
console.log("统一设置");
data = {
unified_setting: this.state.unifiedsetting, //统一配置
publish_time: moment(this.state.publish_time).format('YYYY-MM-DD HH:mm'), //发布时间
end_time: moment(this.state.end_time).format('YYYY-MM-DD HH:mm'), //截止时间
allow_late: this.state.allowreplenishment, //补交
late_penalty: parseInt(this.state.latededuction), //迟交扣分
late_time: moment(this.state.late_time).format('YYYY-MM-DD HH:mm'), //结束时间
answer_open_evaluation: this.state.level === "满分" ? true : false, //扣分项
work_efficiency: this.state.completionefficiencyscore, //完成效率评分占比
eff_score: this.state.completionefficiencyscore === true ? this.state.latedeductiontwo : undefined,//占比分
shixun_evaluation: this.state.proportion === "均分比例" ? 0 : this.state.proportion === "经验值比例" ? 1 : this.state.proportion === "自定义分值" ? 2 : 0,
challenge_settings: array,
score_open: this.state.publicwork,
}
}else{
// //非统一配置
// console.log("非统一设置");
let rulesdata=this.state.rulesdata;
let newlist=[]
rulesdata.map((item,key)=>{
if(item.publish_time==="Invalid date"||item.end_time==="Invalid date"||item.publiend_timesh_time==="Invalid date"){
}else{
newlist.push(item)
}
})
data = {
unified_setting: this.state.unifiedsetting, //非统一配置
group_settings: newlist,
allow_late: this.state.allowreplenishment, //补交
late_penalty: parseInt(this.state.latededuction), //迟交扣分
late_time: moment(this.state.late_time).format('YYYY-MM-DD HH:mm'), //结束时间
answer_open_evaluation: this.state.level === "满分" ? true : false, //扣分项
work_efficiency: this.state.completionefficiencyscore, //完成效率评分占比
eff_score: this.state.completionefficiencyscore === true ? this.state.latedeductiontwo : undefined,//占比分
shixun_evaluation: this.state.proportion === "均分比例" ? 0 : this.state.proportion === "经验值比例" ? 1 : this.state.proportion === "自定义分值" ? 2 : 0,
challenge_settings: array,
score_open: this.state.publicwork,
}
}
// console.log("pustdate");
// console.log(data);
// console.log(JSON.stringify(data));
axios.post(url, data)
.then((result) => {
if (result.data.status == 0) {
// console.log(JSON.stringify(result));
this.props.showNotification(`更新成功`);
this.setState({
flagPageEditsbox:false,
flagPageEdit: false,
flagPageEditstwo:false,
flagPageEditsthrees:false,
flagPageEditsfor:false,
whethertopay:false,
})
this.refs.targetElementTrainingjobsetting.scrollIntoView()
}
}).catch((error) => {
console.log(error);
})
}
//数据库
onChangedatabase = (e) => {
this.setState({
database: e.target.checked,
})
// console.log(e.target.checked);
}
//公开设置
onChangepublicwork = (e) => {
this.setState({
publicwork: e.target.checked,
})
// console.log(e.target.checked);
}
//数据表创建
onChangedatasheet = (e, index) => {
var challenge_settings = this.state.challenge_settings;
var bool= false;
for (var i = 0; i < challenge_settings.length; i++) {
if (i === index) {
if (challenge_settings[i].checked === true) {
challenge_settings[i].checked = false
bool=false;
} else {
challenge_settings[i].checked = true
bool=true;
}
}
}
for (var i = 0; i < challenge_settings.length; i++) {
if(bool=== true){
if (i < index) {
challenge_settings[i].checked = true
}
}else{
if (i > index) {
challenge_settings[i].checked = false
}
}
}
// console.log(e.target.checked)
// console.log(index)
this.setState({
datasheet: e.target.checked,
challenge_settings: challenge_settings
})
this.onChangeslevelproportiontwo(this.state.proportion);
}
//统一设置
onChange = (e) => {
if((moment(this.state.publish_time,"YYYY-MM-DD HH:mm")<=moment())){
this.props.showNotification(`已发布,不能再修改统一设置`);
return
}
this.setState({
unifiedsetting: e.target.checked,
})
// console.log(e.target.checked);
}
//允许补交
onChanges = (e) => {
// console.log(this.state.end_time);
if(e.target.checked ===true){
if(this.state.end_time !== null && this.state.end_time!== undefined){
// console.log(this.state.end_time);
// var times = this.state.deadline.format('YYYY-MM-DD HH:mm');
this.setState({
late_time:moment(handleDateString(this.state.deadline)).add(1, 'months'),
late_times:moment(handleDateString(this.state.deadline)).add(1, 'months').format('YYYY-MM-DD HH:mm'),
})
}
this.setState({
allowreplenishment: e.target.checked,
latededuction:5,
whethertopay:true,
})
}else {
this.setState({
allowreplenishment: e.target.checked,
latededuction:0,
whethertopay:false,
hand__e_tip: "",
hand_flags: false,
handclass:"",
})
}
// console.log('radio checked', e.target.value);
}
//级别
onChangeslevel = (e) => {
this.setState({
level: e.target.value
})
// console.log('radio checked', e.target.value);
}
//比例
onChangeslevelproportion = (e) => {
this.state.proportion=e.target.value
if (e.target.value === "均分比例") {
this.Equalproportion(this.state.latedeductiontwo);
}
if (e.target.value === "经验值比例") {
this.Empiricalvalueratio(this.state.latedeductiontwo);
}
if (e.target.value === "自定义分值") {
this.state.boolUnitetwoname="自定义分值";
this.setState({
boolUnitetwoname:"自定义分值",
boolUnitetwo: false,
flagPageEdits:true,
})
}
this.setState({
proportion: e.target.value
})
// console.log('radio checked', e.target.value);
}
onChangeslevelproportiontwo=(value)=>{
if (value === "均分比例") {
this.Equalproportion(this.state.latedeductiontwo);
}
if (value === "经验值比例") {
this.Empiricalvalueratio(this.state.latedeductiontwo);
}
if (value=== "自定义分值") {
this.state.boolUnitetwoname="自定义分值";
this.setState({
boolUnitetwoname:"自定义分值",
boolUnitetwo: false,
flagPageEdits:true,
})
}
this.setState({
proportion: value
})
}
//均分比例
Equalproportion = (latedeductiontwo) => {
var challenge_settingsdata=this.state.challenge_settings;
var latedeductiontwos=latedeductiontwo;
if(latedeductiontwos === undefined || latedeductiontwos===null || latedeductiontwos===""){
latedeductiontwos=0;
}
//占比分
if(challenge_settingsdata.length>0){
var Proportion=100;
var oushution=0;
//获取占用分后的值
Proportion=Proportion-latedeductiontwos;
oushution=Proportion;
var srorelength=0;
//计算选中用户
for (var k=0;k<challenge_settingsdata.length;k++){
if(challenge_settingsdata[k].checked === true){
srorelength++
}
}
//算下面值是否是奇数
var srbool=false;
if( srorelength%2 ==0 ){
// 偶数
srbool=false;
}else{
// 奇数
srbool=true;
}
//计算平均值
Proportion= Proportion/srorelength;
var intkk=0;
var intkks=0;
if(srbool==true){
// 奇数
var exams = parseFloat(Proportion.toFixed(1));
var intk = srorelength*exams;
intkk=oushution - intk;
console.log("奇数");
console.log(srorelength);//3
console.log(oushution);//79
console.log(exams);//26.3
console.log(intk);//78.9
console.log(intkk);
}else {
// 偶数
var examsy =parseFloat(Proportion.toFixed(1));
intkks=oushution - (examsy*srorelength);
console.log("偶数");
console.log(oushution);
console.log((examsy*srorelength));
}
var mact=0;
//给每到题目赋平均值
for (var i=0;i<challenge_settingsdata.length;i++){
if(challenge_settingsdata[i].checked === true) {
if(srbool===false){
console.log(intkks);
mact=mact+1;
if(mact===srorelength){
challenge_settingsdata[i].challenge_score = (parseFloat(Proportion.toFixed(1))+parseFloat(intkks.toFixed(1))).toFixed(1);
console.log( challenge_settingsdata[i].challenge_score);
}else {
challenge_settingsdata[i].challenge_score = Proportion.toFixed(1);
}
}else{
console.log(intkk);
mact=mact+1;
if(mact===srorelength){
challenge_settingsdata[i].challenge_score = (parseFloat(Proportion.toFixed(1))+parseFloat( intkk.toFixed(1))).toFixed(1);
console.log( challenge_settingsdata[i].challenge_score);
}else {
challenge_settingsdata[i].challenge_score = Proportion.toFixed(1);
}
}
}else{
challenge_settingsdata[i].challenge_score = 0;
}
}
}
//关卡分值平分
this.setState({
boolUnitetwo: true,
flagPageEdits:false,
challenge_settings:challenge_settingsdata,
})
}
//经验值比例
Empiricalvalueratio=(latedeductiontwo)=>{
var shixun_exp = this.state.shixun_exp;
var challenge_settingsdata=this.state.challenge_settings;
var latedeductiontwos=latedeductiontwo;
if(latedeductiontwos === undefined || latedeductiontwos===null || latedeductiontwos===""){
latedeductiontwos=0;
}
// //占比分
if(shixun_exp!==undefined){
if(shixun_exp>0){
if(challenge_settingsdata.length>0){
var ionsp=100;
//获取占比分之后的值
ionsp=ionsp-latedeductiontwos;
//获取道总分值
var Proportion=shixun_exp;
//获取改变后的总分值
for (var k=0;k<challenge_settingsdata.length;k++){
if(challenge_settingsdata[k].checked===false){
Proportion=Proportion-challenge_settingsdata[k].challenge_exp;
}
}
//开始循环赋值
var expzs=0;
var mact=0;
for (var i=0;i<challenge_settingsdata.length;i++){
if(challenge_settingsdata[i].checked===true) {
mact=mact+1;
var myint = (challenge_settingsdata[i].challenge_exp / Proportion) * ionsp;
challenge_settingsdata[i].challenge_score = myint.toFixed(1);
expzs=parseFloat(myint.toFixed(1))+parseFloat(expzs);
}else{
challenge_settingsdata[i].challenge_score =0;
}
}
var expzsy=0;
var bool= true;
if(ionsp - expzs>0){
expzsy=parseFloat(ionsp.toFixed(1)) - parseFloat(expzs.toFixed(1));
expzsy=Math.abs(expzsy);
bool=true;
}else{
expzsy= parseFloat(ionsp.toFixed(1)) - parseFloat(expzs.toFixed(1));
expzsy= Math.abs(expzsy);
bool=false;
}
var macts=0;
for (var i=0;i<challenge_settingsdata.length;i++){
if(challenge_settingsdata[i].checked===true) {
macts= macts+1;
if(mact===macts){
if(bool===true){
challenge_settingsdata[i].challenge_score = (parseFloat(challenge_settingsdata[i].challenge_score)+parseFloat(expzsy.toFixed(1))).toFixed(1);
console.log(parseFloat(challenge_settingsdata[i].challenge_score)+parseFloat(expzsy.toFixed(1)));
console.log(parseFloat(expzsy.toFixed(1)));
}else {
challenge_settingsdata[i].challenge_score = (parseFloat(challenge_settingsdata[i].challenge_score)-parseFloat(expzsy.toFixed(1))).toFixed(1);
console.log(parseFloat(challenge_settingsdata[i].challenge_score)-parseFloat(expzsy.toFixed(1)));
console.log(parseFloat(expzsy.toFixed(1)));
}
}
}else{
challenge_settingsdata[i].challenge_score =0;
}
}
}
}
}
this.setState({
boolUnitetwo: false,
flagPageEdits:false,
challenge_settings:challenge_settingsdata,
})
}
//完成效率评分占比
onChangeeffectiveness = (e) => {
if( e.target.checked === true){
this.state.latedeductiontwo=20;
this.setState({
completionefficiencyscore: e.target.checked,
latedeductiontwo: 20,
})
//均分比例
if(this.state.proportion==="均分比例"){
this.Equalproportion(20);
}else if(this.state.proportion==="经验值比例"){
this.Empiricalvalueratio(20);
}
}
else {
this.state.latedeductiontwo=0;
this.setState({
completionefficiencyscore: e.target.checked,
latedeductiontwo: 0,
})
//均分比例
if(this.state.proportion==="均分比例"){
this.Equalproportion(0);
}else if(this.state.proportion==="经验值比例"){
this.Empiricalvalueratio(0);
}
}
// console.log(e.target.checked);
}
//迟交扣分
changeTopicName = (value) => {
// console.log("1e.target.value", value)
if (value === "" || value === undefined) {
return
}
var re = /^[0-9]+.?[0-9]*$/; //判断字符串是否为数字 //判断正整数 /^[1-9]+[0-9]*]*$/
var nubmer = value;
if (!re.test(nubmer)) {
this.props.showNotification(`请输入数字`);
this.setState({
latededuction: 0
})
return false;
}
if (nubmer > 100) {
this.props.showNotification(`请输入小于100的数`);
this.setState({
latededuction: 0
})
return
}
this.setState({
latededuction: value,
})
}
// //占比分
changeTopicNametwo = (value) => {
// console.log("2e.target.value", value)
if (value === "" || value === undefined) {
return
}
var re = /^[0-9]+.?[0-9]*$/; //判断字符串是否为数字 //判断正整数 /^[1-9]+[0-9]*]*$/
var nubmer = value;
if (!re.test(nubmer)) {
this.props.showNotification(`请输入数字`);
this.setState({
latedeductiontwo: 0
})
return false;
}
if (nubmer > 100) {
this.props.showNotification(`请输入小于100的数`);
this.setState({
latedeductiontwo: 0
})
return
}
this.setState({
latedeductiontwo: value,
})
//均分比例
if(this.state.proportion==="均分比例"){
this.Equalproportion(value);
}else if(this.state.proportion==="经验值比例"){
this.Empiricalvalueratio(value);
}
}
hangeTopicNametwodatasheet = (value, index) => {
// console.log("2e.target.value", value)
if (value === "" || value === undefined) {
return
}
var re = /^[0-9]+.?[0-9]*$/; //判断字符串是否为数字 //判断正整数 /^[1-9]+[0-9]*]*$/
var nubmer = value;
if (!re.test(nubmer)) {
this.props.showNotification(`请输入数字`);
// this.setState({
// datasheet: 0
// })
var challenge_settings = this.state.challenge_settings;
for (var i = 0; i < challenge_settings.length; i++) {
if (i === index) {
challenge_settings[i].challenge_score = "";
}
}
this.setState({
challenge_settings: challenge_settings
})
return false;
}
var challenge_settings = this.state.challenge_settings;
for (var i = 0; i < challenge_settings.length; i++) {
if (i === index) {
challenge_settings[i].challenge_score = value;
}
}
this.setState({
challenge_settings: challenge_settings
})
// if (nubmer > 100) {
// message.error("请输入小于100的数");
// this.setState({
// datasheet: 0
// })
// return
// }
// this.setState({
// datasheet: value,
// })
}
// disabledEndDate = (end_time) => {
// const publish_time = this.state.publish_time;
// if (!end_time || !publish_time) {
// return false;
// }
// return end_time.valueOf() <= publish_time.valueOf();
//
// }
// disabledEndDates = (end_time) => {
// const publish_time = this.state.end_time
// if (!end_time || !publish_time) {
// return false;
// }
// console.log("end_time.valueOf()")
// // console.log(end_time.valueOf());
// // console.log(publish_time.valueOf());
// return end_time.valueOf() <= publish_time.valueOf();
//
//
// }
disabledStartDatestart= (startValue) => {
const endValue = this.state.end_time
if (!startValue || !endValue) {
return false;
}
var endValues= moment(endValue).subtract(1, 'days');
return startValue.valueOf() > endValues.valueOf();
};
disabledEndDateend = (endValue) => {
const startValue = this.state.publish_time;
if (!endValue || !startValue) {
return false;
}
var endValuesys= moment(startValue).subtract(1, 'days');
return endValue.valueOf() <= endValuesys.valueOf();
};
disabledEndDateendd = (endsValue) => {
const endValues = this.state.end_time
if (!endsValue|| !endValues) {
return false;
}
var endValuesyss= moment(endValues).subtract(1, 'days');
return endsValue.valueOf() <= endValuesyss.valueOf();
};
onChangedata = (field, value, dateString) => {
this.setState({
[field]: handleDateString(dateString),
});
}
ontimeonok=(value)=>{
console.log("ontimeonok点击了2");
if(value === undefined){
return;
}
if (moment(value, "YYYY-MM-DD HH:mm") <= moment()) {
} else {
try {
this.setState({
unit_p_tip: "",
p_flag: false,
borreds:undefined,
releasetime: value.format('YYYY-MM-DD HH:mm'),
})
} catch (e) {
}
}
}
ontimeonoktwo =(value)=>{
if(value === undefined){
return;
}
if (moment(value, "YYYY-MM-DD HH:mm") <= moment()) {
} else {
if (moment(value, "YYYY-MM-DD HH:mm") <= moment(this.state.publish_time, "YYYY-MM-DD HH:mm")) {
return
}
try {
this.setState({
unit_e_tip: "",
p_flag: false,
deadline: value.format('YYYY-MM-DD HH:mm'),
borredss:undefined,
})
} catch (e) {
}
}
}
ontimeonokthree=(value)=>{
if(value === undefined){
return;
}
let{publish_time,unifiedsetting,rulesdata}=this.state;
if(unifiedsetting===true){
if (moment(value, "YYYY-MM-DD HH:mm") <= moment(publish_time)) {
} else {
}
}else{
rulesdata.map((item,key)=>{
if(item.publish_time!="Invalid date"){
if (moment(value, "YYYY-MM-DD HH:mm") <= moment(item.publish_time, "YYYY-MM-DD HH:mm")) {
}else{
this.setState({
late_times: value.format('YYYY-MM-DD HH:mm'),
hand__e_tip: "",
hand_flags: false,
handclass:"",
})
}
}
})
}
}
onStartChange = (value, dateString) => {
console.log("onStartChange点击了1");
if(value==null){
this.setState({
releasetime:undefined,
publish_time:undefined,
})
return;
}
// if (moment(value, "YYYY-MM-DD HH:mm") <= moment()) {
// this.setState({
// unit_p_tip: "发布时间不能早于当前时间",
// p_flag: true,
// borreds:"bor-reds",
// releasetime:undefined,
// publish_time:undefined,
// })
// } else {
try {
this.setState({
unit_p_tip: "",
p_flag: false,
borreds:undefined,
releasetime: value.format('YYYY-MM-DD HH:mm'),
})
} catch (e) {
}
// console.log(value);
console.log(dateString);
// console.log(handleDateString(dateString));
// this.onChangedata('publish_time', value, dateString);
this.setState({
publish_time:moment(moment(handleDateString(dateString))).format("YYYY-MM-DD HH:mm"),
});
if(this.state.allowreplenishment === true) {
if(this.state.end_time=== undefined || this.state.end_time===""){
this.setState({
end_time:moment(handleDateString(dateString)).add(1, 'months'),
deadline:moment(handleDateString(dateString)).add(1, 'months').format('YYYY-MM-DD HH:mm'),
})
}else {
}
if(this.state.late_time===undefined || this.state.late_time===""){
this.setState({
late_time:moment(handleDateString(dateString)).add(2, 'months'),
late_times:moment(handleDateString(dateString)).add(2, 'months').format('YYYY-MM-DD HH:mm'),
});
}else{
}
try {
this.setState({
unit_e_tip: "",
p_flag: false,
borredss:undefined,
})
} catch (e) {
}
}else{
if(this.state.end_time=== undefined || this.state.end_time===""){
this.setState({
end_time:moment(handleDateString(dateString)).add(1, 'months'),
deadline:moment(handleDateString(dateString)).add(1, 'months').format('YYYY-MM-DD HH:mm'),
})
}else {
}
}
// }
}
onEndChange = (value, dateString) => {
// console.log("onEndChange")
// console.log(value)
// console.log(dateString)
if(value==null){
this.setState({
end_time:undefined,
deadline:undefined,
})
return;
}
// if (moment(value, "YYYY-MM-DD HH:mm") <= moment()) {
// this.setState({
// unit_e_tip: "截止时间不能早于当前时间",
// p_flag: true,
// borredss:"bor-reds",
// end_time:undefined,
// deadline:undefined,
// })
// } else {
// console.log(moment(value, "YYYY-MM-DD HH:mm"));
// console.log(moment(this.state.publish_time, "YYYY-MM-DD HH:mm"));
if (moment(value, "YYYY-MM-DD HH:mm") <= moment(this.state.publish_time, "YYYY-MM-DD HH:mm")) {
this.setState({
unit_e_tip: "截止时间不能早于发布时间",
p_flag: true,
borredss:"bor-reds",
end_time:value.format('YYYY-MM-DD HH:mm'),
deadline:value.format('YYYY-MM-DD HH:mm'),
})
return
}
try {
this.setState({
unit_e_tip: "",
p_flag: false,
borredss:undefined,
deadline: value.format('YYYY-MM-DD HH:mm'),
})
} catch (e) {
}
this.setState({
end_time:moment(moment(handleDateString(dateString))).format("YYYY-MM-DD HH:mm"),
})
// this.onChangedata('end_time', value, dateString);
if(this.state.allowreplenishment === true){
this.setState({
deadline:moment(handleDateString(dateString)).format('YYYY-MM-DD HH:mm'),
late_time:moment(handleDateString(dateString)).add(2, 'months'),
late_times:moment(handleDateString(dateString)).add(2, 'months').format('YYYY-MM-DD HH:mm'),
})
}
// }
}
onEndChangeys = (value, dateString) => {
if(value==null){
this.setState({
late_times:undefined,
late_time:undefined,
})
return;
}
let{publish_time,end_time,unifiedsetting,rulesdata}=this.state;
if(unifiedsetting===true){
if (moment(value, "YYYY-MM-DD HH:mm") <= moment(publish_time)) {
this.setState({
hand__e_tip: "补交时间不能早于发布时间",
hand_flags: true,
handclass:"bor-reds",
late_times:value.format('YYYY-MM-DD HH:mm'),
late_time:value.format('YYYY-MM-DD HH:mm'),
})
}
else if (moment(value, "YYYY-MM-DD HH:mm") <= moment(end_time)) {
this.setState({
hand__e_tip: "补交时间不能早于截止时间",
hand_flags: true,
handclass:"bor-reds",
late_times: value.format('YYYY-MM-DD HH:mm'),
late_time:value.format('YYYY-MM-DD HH:mm'),
})
}
else {
try {
this.setState({
late_times: value.format('YYYY-MM-DD HH:mm'),
late_time:value.format('YYYY-MM-DD HH:mm'),
hand__e_tip: "",
hand_flags: false,
handclass:"",
})
}catch (e) {
}
}
}else{
rulesdata.map((item,key)=>{
if(item.publish_time!="Invalid date"){
if (moment(value, "YYYY-MM-DD HH:mm") <= moment(item.publish_time)) {
console.log(moment(item.publish_time, "YYYY-MM-DD HH:mm") <= moment(publish_time))
let kes=key+1;
this.setState({
hand__e_tip: "补交时间不能早于发布规则"+kes+"的发布时间",
hand_flags: true,
handclass:"bor-reds",
})
return
}else{
this.setState({
late_times: value.format('YYYY-MM-DD HH:mm'),
late_time:value.format('YYYY-MM-DD HH:mm'),
hand__e_tip: "",
hand_flags: false,
handclass:undefined,
})
}
}
})
}
}
//立即发布
homeworkstart = () => {
let homeworkid=this.props.match.params.homeworkid;
let url="/homework_commons/"+homeworkid+"/publish_groups.json";
axios.get(url).then((response) => {
if (response.status === 200) {
let starttime = this.props.getNowFormatDates(1);
let endtime = this.props.getNowFormatDates(2);
this.setState({
modalname: "立即发布",
modaltype: response.data.course_groups === null || response.data.course_groups.length === 0 ? 2 : 1,
visible: true,
Topval:"学生将立即收到作业",
// Botvalleft:"暂不发布",
Botval:`本操作只对"未发布"的分班有效`,
starttime: "发布时间:" + moment(moment(new Date())).format("YYYY-MM-DD HH:mm"),
starttimes:starttime,
typs:"start",
endtime: "截止时间:" + endtime,
Cancelname: "暂不发布",
Savesname: "立即发布",
Cancel: this.homeworkhide,
Saves: this.homeworkstartend,
course_groups: response.data.course_groups,
})
}
}).catch((error) => {
console.log(error)
});
}
//立即截止
homeworkends = () => {
let homeworkid=this.props.match.params.homeworkid;
let url="/homework_commons/"+homeworkid+"/end_groups.json";
axios.get(url).then((response) => {
if (response.status === 200) {
this.setState({})
this.setState({
modalname: "立即截止",
modaltype: response.data.course_groups === null || response.data.course_groups.length === 0 ? 2 : 1,
visible: true,
Topval:"学生将不能再提交作业",
// Botvalleft:"暂不截止",
Botval:`本操作只对"提交中"的分班有效`,
Cancelname: "暂不截止",
Savesname: "立即截止",
Cancel: this.homeworkhide,
Saves: this.coursetaskend,
starttime: undefined,
endtime: undefined,
typs:"end",
course_groups: response.data.course_groups,
})
}
}).catch((error) => {
console.log(error)
});
}
// 立即发布
homeworkstartend = (ds,endtime) => {
var homeworkid = this.props.match.params.homeworkid;
let {course_groupslist} = this.state;
let coursesId = this.props.match.params.coursesId;
let url = "/courses/" + coursesId + "/homework_commons/publish_homework.json";
axios.post(url, {
homework_ids: [homeworkid],
group_ids: course_groupslist,
end_time:endtime,
}).then((result) => {
if (result.status === 200) {
if (result.data.status === 0) {
notification.open({
message:"提示",
description:result.data.message
});
this.homeworkhide();
this.getTrainingjobsetting();
}
}
}).catch((error) => {
console.log(error);
})
}
//立即截止确定按钮
coursetaskend = () => {
var homeworkid = this.props.match.params.homeworkid;
let {course_groupslist} = this.state;
const cid = this.props.match.params.coursesId;
let url = "/courses/" + cid + "/homework_commons/end_homework.json";
axios.post(url, {
group_ids: course_groupslist,
homework_ids: [homeworkid],
})
.then((response) => {
if (response.data.status == 0) {
notification.open({
message:"提示",
description:response.data.message
});
// notification['success']({
// message:"提示",
// description:response.data.message
// });
this.getTrainingjobsetting();
this.homeworkhide()
}
})
.catch(function (error) {
console.log(error);
});
}
getcourse_groupslist = (id) => {
this.setState({
course_groupslist: id
})
}
homeworkhide = () => {
this.setState({
modalname: undefined,
modaltype: undefined,
visible: false,
Topval: undefined,
Topvalright: undefined,
Botvalleft: undefined,
Botval: undefined,
starttime: undefined,
endtime: undefined,
Cancelname: undefined,
Savesname: undefined,
Cancel: undefined,
Saves: undefined,
StudentList_value: undefined,
addname: undefined,
addnametype: false,
addnametab: undefined,
typs:undefined,
starttimes:undefined,
})
}
cancelBox=()=>{
this.setState({
modalsType: false,
modalsTopval: "",
loadtype: false,
})
}
//编辑
editSetting = () => {
try {
if (this.state.jobsettingsdata.data.is_end === true) {
this.setState({
modalsType: true,
modalsTopval: "课堂已结束不能再修改!",
loadtype: true,
modalSave: this.cancelBox
})
} else {
var releasetime =true;
var deadline = true;
var endtime =true;
var whethertopays =true;
//发布时间
if(moment(this.state.publish_time,"YYYY-MM-DD HH:mm")<=moment()){
releasetime=false;
}
//截止时间
if(moment(this.state.end_time,"YYYY-MM-DD HH:mm")<=moment()){
deadline=false;
}
//结束时间
if(moment(this.state.late_time,"YYYY-MM-DD HH:mm")<=moment()){
endtime=false;
}
if(this.state.allowreplenishment === false){
whethertopays=false;
}
this.setState({
flagPageEditsbox:true,
flagPageEdit: true,
whethertopay:whethertopays,
flagPageEditstwo:releasetime,
flagPageEditsthrees:deadline,
flagPageEditsfor:endtime,
unifiedsetting:this.state.unifiedsetting,
})
if(this.state.proportion === "自定义分值"){
this.setState({
boolUnitetwoname:"自定义分值",
boolUnitetwo: false,
flagPageEdits:true,
})
}
}
} catch (e) {
}
}
//取消编辑
cancelEdit = () => {
this.setState({
flagPageEditsbox:false,
flagPageEdit: false,
flagPageEditstwo:false,
flagPageEditsthrees:false,
flagPageEditsfor:false,
whethertopay:false,
unit_p_tip: "",
p_flag: false,
borreds:undefined,
borredss:undefined,
hand__e_tip: "",
hand_flags: false,
handclass: undefined,
unit_e_tip: "",
})
this.refs.targetElementTrainingjobsetting.scrollIntoView();
this.getTrainingjobsetting();
}
rulesCheckInfo=(rules)=>{
var datas=[];
for (var i=0;i<rules.length;i++){
if(rules[i].course_group_id instanceof Array ){
datas.push({
group_id:rules[i].course_group_id,
publish_time: moment(rules[i].publish_time).format('YYYY-MM-DD HH:mm') ,
end_time:moment(rules[i].end_time).format('YYYY-MM-DD HH:mm') ,
});
}else {
datas.push({
group_id:[rules[i].course_group_id],
publish_time: moment(rules[i].publish_time).format('YYYY-MM-DD HH:mm') ,
end_time:moment(rules[i].end_time).format('YYYY-MM-DD HH:mm') ,
});
}
}
console.log(rules);
console.log(datas);
this.setState({
rules,
rulesdata:datas,
})
}
workshowmodel=()=>{
this.setState({
showmodel:true
})
}
hideshowmodel=()=>{
this.setState({
showmodel:false
})
}
testscripttip =(e)=>{
if(e === 0){
this.setState({
testscripttiptype:true,
})
}else {
this.setState({
testscripttiptype:false,
})
}
}
ChangeTab=(e)=>{
this.props.ChangeTab(e);
}
daochushixunbaogao=()=>{
let url =`/zip/shixun_report?homework_common_id=${this.props.match.params.homeworkid}`;
this.confirmysl(url, url + '&export=true');
}
daochuzuoye =() =>{
let url = `/homework_commons/${this.props.match.params.homeworkid}/works_list.xlsx`;
this.confirmysl(url, url + '?export=true');
}
confirmysl(url, urlWithExport){
axios.get(urlWithExport).then((response) => {
if(response === undefined){
return
}
if(response.data.status&&response.data.status===-1){
}else if(response.data.status&&response.data.status===-2){
if(response.data.message === "100"){
// 已超出文件导出的上限数量100 ),建议:
this.setState({
DownloadType:true,
DownloadMessageval:100
})
}else {
//因附件资料超过500M
this.setState({
DownloadType:true,
DownloadMessageval:500
})
}
}else {
this.props.showNotification(`正在下载中`);
window.open("/api"+url, '_blank');
}
}).catch((error) => {
console.log(error)
});
}
Downloadcal=()=>{
this.setState({
DownloadType:false,
DownloadMessageval:undefined
})
}
render() {
const dataformat = 'YYYY-MM-DD HH:mm';
let {flagPageEdit,testscripttiptype,publish_timebool,end_timebool,late_timesbool,flagPageEdits,flagPageEditstwo,flagPageEditsbox,whethertopay,handclass,flagPageEditsthrees, flagPageEditsfor,rules,rulest,unifiedsetting,group_settings, course_group,unit_e_tip, borreds,borredss,unit_p_tip, end_time, late_time, score_open, publish_time, starttimetype, modalsType, modalsTopval, loadtype, modalSave, endtimetype, latetimetype, allowlate, latepenaltytype, jobsettingsdata, endOpen, mystyle, mystyles} = this.state;
console.log(publish_timebool);
console.log(!flagPageEditstwo);
const radioStyle = {
display: 'block',
height: '30px',
lineHeight: '30px',
color:"#666666"
};
const radioStyles = {
display: 'block',
height: '30px',
lineHeight: '30px',
color:"#666666",
marginLeft:'38px',
};
// const startDate=moment(this.state.publish_time).format('YYYY-MM-DD HH:mm');
// const endDate =moment(this.state.publish_time).add('months',1).format('YYYY-MM-DD HH:mm');
// console.log("Trainingjobsetting");
// console.log(startDate);
// console.log(endDate);
// if( this.props.isAdmin() === true){
// this.editSetting();
// }
// console.log(this.props.isAdmin())
// console.log(this.state.code_review===false)
return (
<div className=" clearfix " ref='targetElementTrainingjobsetting' style={{margin: "auto", minWidth:"1200px"}}>
{this.state.showmodel===true?<ShixunWorkModal
{...this.props}
visible={this.state.showmodel}
modalname={"代码查重"}
data={[]}
issCancel={()=>this.hideshowmodel()}
/>:""}
{/*<DownloadMessage*/}
{/* {...this.props}*/}
{/* ref="DownloadMessage"*/}
{/*/>*/}
<DownloadMessageysl
{...this.props}
value={this.state.DownloadMessageval}
modalCancel={this.Downloadcal}
modalsType={this.state.DownloadType}
/>
{/*立即发布*/}
<HomeworkModal
modaltype={this.state.modaltype}
modalname={this.state.modalname}
visible={this.state.visible}
Topval={this.state.Topval}
Topvalright={this.state.Topvalright}F
Botvalleft={this.state.Botvalleft}
Botval={this.state.Botval}
starttime={this.state.starttime}
endtime={this.state.endtime}
Cancelname={this.state.Cancelname}
Savesname={this.state.Savesname}
Cancel={this.state.Cancel}
Saves={this.state.Saves}
course_groups={this.state.course_groups}
getcourse_groupslist={(id) => this.getcourse_groupslist(id)}
starttimes={this.state.starttimes}
typs={this.state.typs}
/>
<Modals
modalsType={modalsType}
modalsTopval={modalsTopval}
loadtype={loadtype}
modalSave={modalSave}
></Modals>
<div className={"educontent "}>
<div className="edu-back-white" style={{paddingTop: "20px"}}>
{/*发布设置*/}
<div className="stud-class-set bor-bottom-greyE edu-back-white">
<div className=" pl20">
<p className=" clearfix " style={{height:"41px"}}>
<span className="font-16 fl "style={{"color":"#05101A"}}>发布设置 <span className="ml15 color-grey-9" style={{"font-size":"14px","text-align":"left"}}></span></span>
{
!flagPageEdit && this.props.isAdmin() === true ?
<a className="fr" onClick={this.editSetting}><Tooltip title="编辑"><i
className="iconfont icon-bianjidaibeijing font-20 color-green pr20 "></i></Tooltip></a>
: ""
}
</p>
{
group_settings&&group_settings.length>0?
<div className=" clearfix edu-back-white poll_list mt10 mb20">
<Checkbox className="ml15 font-16" style={{"color":"#666666"}} onChange={this.onChange}
checked={this.state.unifiedsetting}
defaultChecked={this.state.boolUnite} disabled={!flagPageEdit}>统一设置<span
className={"font-14 ml15 color-grey-c"} style={{"text-align":"left"}}>(选中则所有分班使用相同的发布设置否则各个分班单独设置)</span></Checkbox>
</div>
:<div></div>
}
<style>
{
`.ant-select-selection{
min-width:200px
}`
}
</style>
{
unifiedsetting === undefined ? "" : unifiedsetting=== true ?
<div>
<div className="clearfix mb5 ml15">
<span className="font-16 fl mt3" style={{"color":"#999999"}}>发布时间</span>
<Tooltip placement="bottom" title={this.props.isSuperAdmin() ? "" : !flagPageEditstwo === true && publish_timebool === true?"发布时间已过,则不能修改": ""}>
<div className="fl">
<DatePicker
showToday={false}
id={"publishtimeid"}
disabledTime={disabledDateTime}
disabledDate={disabledDate}
className={borreds}
showTime={{ format: 'HH:mm' }}
format="YYYY-MM-DD HH:mm"
value={publish_time && moment(publish_time, dataformat)}
placeholder="请选择发布时间"
locale={locale}
showToday={false}
width={"210px"}
onOk={this.ontimeonok}
onChange={this.onStartChange}
// onOpenChange={this.handleStartOpenChange}
disabled={!flagPageEditstwo}
dropdownClassName="hideDisable"
/>
</div>
</Tooltip>
<span className="ml20 fl mt5 color-grey-c" style={{"text-align":"left","font-size":"14px"}}>(学生收到作业的时间)</span>
</div>
<p className="color-red lineh-25 clearfix" style={{height:"25px"}}>
{
unit_p_tip && unit_p_tip != "" ? <span className="fl" style={{marginLeft: "94px"}}>{ unit_p_tip }</span>
: ""
}
</p>
<div className="clearfix ml15 mb5">
<span className=" fl mt3 font-16" style={{"color":"#999999"}}>截止时间</span>
<Tooltip placement="bottom" title={this.props.isSuperAdmin() ? "" : !flagPageEditsthrees === true&&end_timebool===true?"截止时间已过,则不能修改": ""}>
<div className="fl">
<DatePicker
showToday={false}
id={"end_timeid"}
disabledTime={disabledDateTime}
disabledDate={disabledDate}
showTime={{ format: 'HH:mm' }}
className={borredss}
format="YYYY-MM-DD HH:mm"
value={end_time && moment(end_time, dataformat)}
onChange={this.onEndChange}
// open={endOpen}
placeholder="请选择截止时间"
locale={locale}
showToday={false}
width={"210px"}
onOk={this.ontimeonoktwo}
// onOpenChange={this.handleEndOpenChange}
disabled={!flagPageEditsthrees}
dropdownClassName="hideDisable"
/>
</div>
</Tooltip>
<span className=" ml20 fl mt5 color-grey-c" style={{"text-align":"left","font-size":"14px"}}>(学生按时提交作品的时间截点)</span>
</div>
<p className="color-red lineh-25 clearfix" style={{height:"25px"}}>
{
unit_e_tip && unit_e_tip != "" ? <span className="fl" style={{marginLeft: "94px"}}>{ unit_e_tip }</span> :""
}
</p>
</div>
:
<div
className="ml40"
>
<PollDetailTabForthRules
rules={rules}
moduleName={"作业"}
course_group={rulest}
flagPageEdit={flagPageEdit}
rulesCheckInfo={(info)=>this.rulesCheckInfo(info)}
></PollDetailTabForthRules>
</div>
}
</div>
</div>
{/*补交设置*/}
<div className="stud-class-set bor-bottom-greyE edu-back-white">
<div className=" clearfix edu-back-white poll_list mt10">
<div className={"font-16 color-dark fl pl20 mt10 "} style={{"color":"#05101A"}}>补交设置</div>
</div>
{/*value={this.state.allowreplenishment}*/}
<div className="ml40 mt10"
>
<Checkbox style={radioStyle} value={"允许补交"} checked={this.state.allowreplenishment} onChange={this.onChanges} disabled={!flagPageEdit}>开启补交 <span
className={"font-14 ml10 color-grey-c"} style={{"text-align":"left","font-size":"14px"}} >(选中则允许学生延时提交作品)</span></Checkbox>
<div className={"h21 mb30 mt20"}>
<span style={{"width": "100px","color":"#999999"}}>迟交扣分</span>
<style>
{
`.ant-input-number{
height: 40px
}
.ant-input-number-input{
height: 40px
}
`
}
</style>
<InputNumber disabled={!flagPageEditsfor || !whethertopay} min={0} max={1000} className="mr10 h40 color-grey-9"
onChange={this.changeTopicName}
style={{"color":"#999999","height": "40px"}}
value={this.state.latededuction}/>
<span className="ml10 color-grey-9" ></span>
<span className="ml15 color-grey-c" style={{"text-align":"left","font-size":"14px"}}>(延时提交作品时学生成绩将被扣减的分值)</span>
{/*{latepenaltytype===true?<div className={"color-red ml40"}></div>:""}*/}
</div>
<div className={"h20 mb20 "}>
<span style={{"width": "100px","color":"#999999"}}>结束时间</span>
<DatePicker
showToday={false}
id={"late_timeid"}
disabledTime={disabledDateTime}
disabledDate={disabledDate}
format="YYYY-MM-DD HH:mm"
value={late_time && moment(late_time, dataformat)}
onChange={this.onEndChangeys}
placeholder="请选择结束时间"
showToday={false}
locale={locale}
onOk={this.ontimeonokthree}
showTime={{ format: 'HH:mm' }}
width={"210px"}
disabled={!flagPageEditsfor || !whethertopay}
dropdownClassName="hideDisable"
className={handclass}
/>
<span className="ml15 color-grey-c" style={{"text-align":"left","font-size":"14px"}}>(学生延时提交作品的时间截点)</span>
{/*{latetimetype===true?<div className={"color-red "}>结束时间不能小于截止时间</div>:""}*/}
<style>
{
`
.ml70{
margin-left:70px;
}
`
}
</style>
<p className="color-red lineh-25 clearfix ml70" style={{height:"25px"}}>
{
this.state.hand__e_tip && this.state.hand__e_tip != "" ? <span className="fl">{ this.state.hand__e_tip }</span>:""
}
</p>
</div>
{/*<Radio style={radioStyle} value={"禁止补交"} disabled={!flagPageEdit}>禁止补交</Radio>*/}
</div>
<div className="h20 mb10 "></div>
</div>
{/*评分设置*/}
<div className="stud-class-set edu-back-white">
<div className=" clearfix edu-back-white poll_list mt20">
<div className={"font-16 color-dark fl pl20 "} style={{"color":"#05101A"}}>评分设置</div>
</div>
<div className="yslflexhomes">
<div style={{width:"700px"}}>
<div className="ml20 mt10 mt20">
<span className="c_grey font-13" style={{"color":"#333333"}}> 关卡任务的选择和分值设置 </span><span className="ml15 font-14 color-grey-c" style={{"text-align":"left"}}>( = + )</span>
</div>
<div className=" clearfix edu-back-white poll_list mt10" style={{marginLeft:" 40px"}}>
<Checkbox disabled={!flagPageEdit} className=" font-13 mt10"
onChange={this.onChangeeffectiveness}
checked={this.state.completionefficiencyscore} style={{"color":"#666666"}}>效率分<span
className={"font-14 color-grey-c font-14 ml15"} style={{"text-align":"left"}}>(选中则学生最终成绩包含效率分)</span>
</Checkbox>
<div>
</div>
</div>
<div className=" mt20" style={{marginLeft:"75px"}}>
<span className="c_grey mr10" style={{"color":"#999999"}}>分值</span>
<InputNumber min={0} disabled={!flagPageEdit} max={100} className="ml10 h40 mr10 color-grey-9"
style={{width: "100px","color":"#999999"}}
onChange={this.changeTopicNametwo}
value={this.state.latedeductiontwo}/>
<span className="ml10" style={{"color":"#999999"}}></span>
<span className={"font-14 color-grey-9 "} style={{"color":"#999999"}}></span>
</div>
</div>
<div>
<div className="yslflexhomes invite-tipysl" style={{marginTop: "45px"}} >
<span className="to-back-left"></span>
<div className="padding20 invitecontent clearfix" style={{backgroundColor:" #FAFAFA"}}>
<p className="font-12 edu-txt-left">
学生工作效率= log(实训总得分/实训总耗时)<br/>
学生效率分 = 学生工作效率 / 课堂学生最高工作效率 * 分值<br/>
</p>
</div>
</div>
</div>
</div>
<div className="yslflexhome">
<div >
<div className="ml20 mt40 mt20" >
<span className="c_grey font-13" style={{"color":"#333333"}}> 关卡任务分值设置规则 </span> <span> <RadioGroup className="ml50" onChange={this.onChangeslevelproportion} value={this.state.proportion}>
<Radio style={{ display: 'block',
height: '30px',
lineHeight: '30px',
color:"#666666",
}} disabled={!flagPageEdit} className="c_grey mt20 "
value={"均分比例"} style={{"color":"#666666"}}>均分比例</Radio>
<Radio style={{ display: 'block',
height: '30px',
lineHeight: '30px',
color:"#666666",
}} disabled={!flagPageEdit} className="c_grey ml30"
value={"经验值比例"} style={{"color":"#666666"}}>难易度</Radio>
<Radio style={{ display: 'block',
height: '30px',
lineHeight: '30px',
color:"#666666",
}} disabled={!flagPageEdit} className="c_grey mt20 ml30"
value={"自定义分值"} style={{"color":"#666666"}}>自定义分值
{testscripttiptype===true?
<div className="invite-tipysls clearfix " id="test_script_tip" style={{left: '158px',width: '322px',zIndex: '10'}}>
<span className="right-black-trangles"></span>
<div className="padding20 invitecontent clearfix">
<p className="font-12 edu-txt-left">
若完成效率分值 = 10, <br/>
均分比例: 根据任务数平均分配<br/>
: 实训任务3关, 每关分值: 1/3*(100-10)=30<br/>
<br/>
难易度: 根据关卡经验值的高低确定关卡分值<br/>
: 实训总经验值1200, 某关经验值200,<br/>
则其分值:200/1200*(100-10)=15<br/>
<br/>
自定义分值: 手动设置关卡分值<br/>
</p>
</div>
<p className="inviteTipbtn with100 fl">
<a onClick={()=>this.testscripttip(1)}>知道了</a>
</p>
</div>
:""}
</Radio>
</RadioGroup>
<a onClick={()=>this.testscripttip(0)}><img style={{marginBottom:"3px",marginLeft:"20px"}} src={getImageUrl("images/educoder/problem.png") }/></a>
</span>
</div>
<p className="ml20 mt15 c_grey font-13 " style={{"color":"#666666"}}> 关卡名称<span
className="color-grey-c font-10 ml10">(需要学生完成的任务请选中)</span></p>
<div className="ml40 mt15" >
{this.state.challenge_settings === undefined ? "" : this.state.challenge_settings.map((object, index) => {
return (
<li>
<Checkbox className="ml110 mt20 "
disabled={!flagPageEditsbox}
style={{"width": "480px","color":"#05101A"}}
checked={object.checked}
onChange={(value) => this.onChangedatasheet(value, index)}
>{object.challenge_name}</Checkbox>
<InputNumber disabled={!flagPageEdits} className=" c_grey" min={0} max={100}
style={{"width": "100px", "margin-left": "30px","color":"#666666"}}
onChange={(value) => this.hangeTopicNametwodatasheet(value, index)}
value={object.challenge_score}
/>
<span className="ml10" style={{"color":"#999999"}}></span>
</li>
)
})}
</div>
</div>
</div>
<p className="ml20 mt40 c_grey font-13 " style={{"color":"#333333"}}> 查看参考答案才通过评测的关卡扣分规则<span
className=" font-14 color-grey-c ml15" style={{textAlign:"left",marginLeft:"40px"}}>(学生通过评测后再查看参考答案不对成绩产生影响)</span></p>
<RadioGroup className="ml40 mt20" onChange={this.onChangeslevel} value={this.state.level}>
<Radio style={radioStyle} disabled={!flagPageEdit} className="c_grey" value={"扣分"}>按查看答案级别扣分<span
className="color-grey-c font-14 ml15" style={{"text-align":"left"}}>根据学员选择查看的实训答案级别(解题思路完整答案)扣减相应的分值</span></Radio>
<Radio style={radioStyle} disabled={!flagPageEdit} className="c_grey mt15"
value={"满分"}>不扣分 </Radio>
</RadioGroup>
</div>
{/*公开设置*/}
<div className="stud-class-set bor-top-greyE edu-back-white mt35 pb5 ">
<div className=" clearfix edu-back-white poll_list mt20">
<div className={"font-16 color-dark fl pl20 "} style={{"color":"#05101A"}}>公开设置</div>
</div>
<div className={"mb20 mt15"}>
<Checkbox disabled={!flagPageEdit} className="ml40" onChange={this.onChangepublicwork}
checked={this.state.publicwork} style={{"color":"#666666"}}>公开成绩</Checkbox>
<span className="font-14 color-grey-c font-14 " style={{"text-align":"left"}}>(选中则在作业截止/补交结束时间之后已提交作品的学生可以查看其它学生的成绩否则只能查看自己的成绩)</span>
</div>
</div>
</div>
{
flagPageEdit && this.props.isAdmin() === true ?
<div style={this.props.isNotMember() === true ? mystyles : mystyle}
className="clearfix mt30 mb30">
<Button type="primary" htmlType="submit" className="defalutSubmitbtn fl mr20"
onClick={() => this.pustdate()}>
提交
</Button>
{/*<a className="defalutSubmitbtn fl mr20">提交</a>*/}
<a className="defalutCancelbtn fl" onClick={()=>this.cancelEdit()}>取消</a>
</div>
: ""
}
</div>
</div>
)
}
}
export default Trainingjobsetting;
// <div className="stud-class-set bor-bottom-greyE ">
// <div className=" clearfix edu-back-white poll_list">
// <a onClick={(e)=>this.ChangeTab(0)}>作品列表</a>
// <a onClick={(e)=>this.ChangeTab(1)}>作业问答</a>
// {this.props.isAdmin()?this.state.code_review===true||jobsettingsdata === undefined ? [""] : jobsettingsdata.data.homework_status[0]==="未发布"?"": <a onClick={(e)=>this.ChangeTab(2)}>代码查重</a> : ""}
// <style>{
// `
// .poll_list a.active:after {
// content: '';
// width: 57px;
// left: 10px;
// bottom: 0px;
// height: 2px;
// background-color: #4CACFF;
// position: absolute;
// }
// `
// }</style>
// <a className="active"
// onClick={(e)=>this.ChangeTab(3)}
// >设置</a>
// <style>{`
// .drop_down_menu li a {
// padding: 0px;
// font-size: 14px;
// }
// .drop_down_menu {
// width: 93px;
// }
// .drop_down_menu li {
// overflow: visible;
// width: 93px;
// }
// .drop_down_menu, .drop_down_normal {
// padding-top: 10px;
// padding-bottom: 8px;
// }
// a:hover {
// color:#1A0B00 !important;
// }
// `}</style>
// {this.props.isAdmin() ? <li className="li_line drop_down fr color-blue font-16 mr8 mt20" style={{"padding": "0 20px"}}>
// 导出<i className="iconfont icon-xiajiantou font-12 ml2"></i>
// <ul className="drop_down_menu" style={{"right": "-0px", "left": "unset", "height": "auto"}}>
// <li><a onClick={()=>this.confirmysl(`/zip/shixun_report?homework_common_id=${this.props.match.params.homeworkid}`)}>实训报告</a>
// </li>
// <li><a onClick={()=>this.confirmysl(`/homework_commons/${this.props.match.params.homeworkid}/works_list.xlsx`)}>学生成绩</a>
// </li>
// </ul>
// </li>: ""}
// {this.props.isAdmin() ?jobsettingsdata&&jobsettingsdata.data.end_immediately===true?
// <a className="fr color-blue font-16" onClick={this.homeworkends}>立即截止</a>
// : "": ""}
// {this.props.isAdmin() ?jobsettingsdata&&jobsettingsdata.data.publish_immediately===true?
// <a className="fr color-blue font-16" onClick={this.homeworkstart}>立即发布</a>: "" : ""}
// {this.props.isAdmin()?
// jobsettingsdata&&jobsettingsdata.data.code_review===true?
// <a className="fr color-blue font-16" onClick={this.workshowmodel}>代码查重</a>: "":""}
// {
// jobsettingsdata&& jobsettingsdata&&jobsettingsdata.data === undefined ? ""
// : jobsettingsdata&& jobsettingsdata.data.commit_des === null || jobsettingsdata&& jobsettingsdata.data.commit_des === undefined ? "" :
// <a className="fr color-blue font-16"
// href={`/courses/${this.state.props.match.params.coursesId}/${this.state.shixuntypes}/${ jobsettingsdata&& jobsettingsdata.data === undefined ? "" : jobsettingsdata&& jobsettingsdata.data.id}/commitsummary/${this.state.props.match.params.homeworkid}`}>{ jobsettingsdata&& jobsettingsdata.data.commit_des}</a>
// }
// { jobsettingsdata&&jobsettingsdata.data === undefined ? "" : <Startshixuntask
// {...this.props}
// data={ jobsettingsdata&& jobsettingsdata.data}
// />}
{/* </div>*/}
{/*</div>*/}