Merge branch 'dev_aliyun' of http://bdgit.educoder.net/Hjqreturn/educoder into dev_aliyun

dev_daiao
cxt 5 years ago
commit d94b906cdd

Binary file not shown.

Before

Width:  |  Height:  |  Size: 18 KiB

After

Width:  |  Height:  |  Size: 112 KiB

@ -30,6 +30,13 @@ if (isDev) {
window.location.search.indexOf('debug=s') != -1 ? 'student' : window.location.search.indexOf('debug=s') != -1 ? 'student' :
window.location.search.indexOf('debug=a') != -1 ? 'admin' : parsed.debug || 'admin' window.location.search.indexOf('debug=a') != -1 ? 'admin' : parsed.debug || 'admin'
} }
// 超管
// debugType="admin";
// 老师
// debugType="teacher";
// 学生
//debugType="student";
window._debugType = debugType; window._debugType = debugType;
export function initAxiosInterceptors(props) { export function initAxiosInterceptors(props) {
initOnlineOfflineListener() initOnlineOfflineListener()

@ -1,26 +1,33 @@
import React,{ Component } from "react"; import React,{ Component } from "react";
import {Checkbox,Radio, Input,InputNumber,Spin} from "antd"; import {Input,InputNumber,Spin,Statistic} from "antd";
import '../css/members.css' import '../css/members.css';
import '../css/busyWork.css' import '../css/busyWork.css';
import '../poll/pollStyle.css' import '../poll/pollStyle.css';
import '../css/Courses.css' import '../css/Courses.css';
import moment from 'moment' import moment from 'moment';
import { WordsBtn,markdownToHTML,ActionBtn,getImageUrl, MarkdownToHtml } from 'educoder' import { WordsBtn,markdownToHTML,ActionBtn,getImageUrl, MarkdownToHtml } from 'educoder';
import Modals from '../../modals/Modals' import Modals from '../../modals/Modals';
import CoursesListType from '../coursesPublic/CoursesListType'; import CoursesListType from '../coursesPublic/CoursesListType';
import Multiple from './question/multiple' import Multiple from './question/multiple';
import Single from './question/single' import Single from './question/single';
import FillEmpty from './question/fillEmpty' import FillEmpty from './question/fillEmpty';
import SimpleAnswer from './question/simpleAnswer' import SimpleAnswer from './question/simpleAnswer';
import ShixunAnswer from './question/shixunAnswer' import ShixunAnswer from './question/shixunAnswer';
import update from 'immutability-helper' import update from 'immutability-helper';
import axios from 'axios'; import axios from 'axios';
import './new/common.css' import './new/common.css';
const { Countdown } = Statistic;
// const deadline = Date.now() + this.state.time*60*60; // Moment is also OK
// console.log(deadline)
const Textarea =Input.TextArea const Textarea =Input.TextArea
const tagArray = [ const tagArray = [
'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I',
@ -98,32 +105,37 @@ class ExerciseReviewAndAnswer extends Component{
remainTime=(time)=>{ remainTime=(time)=>{
// let { time } = this.state; // let { time } = this.state;
let h=moment(parseInt(time)*1000).hour()-8; // let h=moment(parseInt(time)*1000).hour()-8;
let m=moment(parseInt(time)*1000).minutes(); // let m=moment(parseInt(time)*1000).minutes();
let s=moment(parseInt(time)*1000).seconds(); // let s=moment(parseInt(time)*1000).seconds();
this.timer = setInterval(() => { // this.timer = setInterval(() => {
if(time>0){ // if(time>0){
if(s==0){ // if(s==0){
if(m > 0){ // if(m > 0){
m--; // m--;
} // }
s=59; // s=59;
}else{ // }else{
s--; // s--;
} // }
this.setState({ // this.setState({
hour:h, // hour:h,
minute:m, // minute:m,
second:s // second:s
}) // })
if(h==0 && m==0 && s==0){ // if(h==0 && m==0 && s==0){
clearInterval(this.timer); // clearInterval(this.timer);
this.autoCommitExercise(); // this.autoCommitExercise();
} // }
}else{ // }else{
clearInterval(this.timer); // clearInterval(this.timer);
} // }
},1000) // },1000)
}
autosetimes=(time)=>{
this.setState({
time:parseInt(time)
})
} }
//自动交卷 //自动交卷
autoCommitExercise=()=>{ autoCommitExercise=()=>{
@ -146,7 +158,8 @@ class ExerciseReviewAndAnswer extends Component{
} }
if(result.data.status===-2){ if(result.data.status===-2){
this.remainTime(parseInt(result.data.message)) // this.remainTime(parseInt(result.data.message))
this.autosetimes(result.data.message)
} }
} }
}).catch((error)=>{ }).catch((error)=>{
@ -244,7 +257,7 @@ class ExerciseReviewAndAnswer extends Component{
isSpin:false isSpin:false
}) })
if(result.data.exercise.left_time != null){ if(result.data.exercise.left_time != null){
this.remainTime(result.data.exercise.left_time); // this.remainTime(result.data.exercise.left_time);
} }
} }
}).catch((error)=>{ }).catch((error)=>{
@ -571,6 +584,14 @@ class ExerciseReviewAndAnswer extends Component{
this.props.history.push(`/courses/${coursesId}/exercises/${eId}/student_exercise_list?tab=0`) this.props.history.push(`/courses/${coursesId}/exercises/${eId}/student_exercise_list?tab=0`)
} }
deadline=(time)=>{
if(time===null){
}else{
return Date.now() + time * 1000 ;
}
}
render(){ render(){
let coursesId=this.props.match.params.coursesId; let coursesId=this.props.match.params.coursesId;
let eId=this.props.match.params.Id; let eId=this.props.match.params.Id;
@ -613,6 +634,7 @@ class ExerciseReviewAndAnswer extends Component{
const { current_user } = this.props const { current_user } = this.props
// console.log(data&&data.exercise.user_name) // console.log(data&&data.exercise.user_name)
document.title=courseName&&courseName; document.title=courseName&&courseName;
return( return(
<div className="newMain" style={{paddingTop:"0px"}}> <div className="newMain" style={{paddingTop:"0px"}}>
<Spin size="large" spinning={isSpin}> <Spin size="large" spinning={isSpin}>
@ -663,6 +685,7 @@ class ExerciseReviewAndAnswer extends Component{
</p> </p>
<p className="clearfix"> <p className="clearfix">
<span className="color-grey-3 font-24 fl lineh-40" >{exercise && exercise.exercise_name}</span> <span className="color-grey-3 font-24 fl lineh-40" >{exercise && exercise.exercise_name}</span>
<span className="fl mt8"> <span className="fl mt8">
<CoursesListType typelist={[`${statudmap[exercise && exercise.exercise_status]}`]} typesylename={""} /> <CoursesListType typelist={[`${statudmap[exercise && exercise.exercise_status]}`]} typesylename={""} />
</span> </span>
@ -671,15 +694,18 @@ class ExerciseReviewAndAnswer extends Component{
<WordsBtn className="fr font-16 lineh-40" style="grey" onClick={this.returnBtn}>返回</WordsBtn> <WordsBtn className="fr font-16 lineh-40" style="grey" onClick={this.returnBtn}>返回</WordsBtn>
: :
time && time != 0 ? time && time != 0 ?
<div className="fr remainingTime"> <div className="fr">
<li>{ hour >= 10 ? hour : '0'+hour}</li> <Countdown value={this.deadline(this.state.time)} onFinish={this.autoCommitExercise} />
<span>:</span> </div>
<li>{ minute >= 10 ? minute : '0'+minute}</li> :""
<span>:</span>
<li>{ second >= 10 ? second : '0'+second}</li>
</div>:""
} }
{/*<div className="fr remainingTime">*/}
{/* <li>{ hour >= 10 ? hour : '0'+hour}</li>*/}
{/* <span>:</span>*/}
{/* <li>{ minute >= 10 ? minute : '0'+minute}</li>*/}
{/* <span>:</span>*/}
{/* <li>{ second >= 10 ? second : '0'+second}</li>*/}
{/*</div>*/}
{ {
isAdmin && <WordsBtn className="fr font-16 lineh-40 mr30" style="blue" onClick={this.RepeatExercise}>打回重做</WordsBtn> isAdmin && <WordsBtn className="fr font-16 lineh-40 mr30" style="blue" onClick={this.RepeatExercise}>打回重做</WordsBtn>
} }

@ -413,7 +413,7 @@ class AccountBasic extends Component {
//昵称 //昵称
handleSubmitName(rule, value, callback){ handleSubmitName(rule, value, callback){
if (value) { if (value) {
let iconRule1 = /[`~!@#$%^&*()\-+=<>?:"{}|,.\/;'\\[\]·~@#¥%……&*()——\-+={}|《》?:“”【】、;‘’,。、]/im; let iconRule1 = /[`~!@#$%^&()\-+=<>?:"{}|,.\/;'\\[\]·~@#¥%……&*()——\-+={}|《》?:“”【】、;‘’,。、]/im;
// 判断是否含有emoji表情 // 判断是否含有emoji表情
let iconRule2 = /[\uD83C|\uD83D|\uD83E][\uDC00-\uDFFF][\u200D|\uFE0F]|[\uD83C|\uD83D|\uD83E][\uDC00-\uDFFF]|[0-9|*|#]\uFE0F\u20E3|[0-9|#]\u20E3|[\u203C-\u3299]\uFE0F\u200D|[\u203C-\u3299]\uFE0F|[\u2122-\u2B55]|\u303D|[\A9|\AE]\u3030|\uA9|\uAE|\u3030/ig; let iconRule2 = /[\uD83C|\uD83D|\uD83E][\uDC00-\uDFFF][\u200D|\uFE0F]|[\uD83C|\uD83D|\uD83E][\uDC00-\uDFFF]|[0-9|*|#]\uFE0F\u20E3|[0-9|#]\u20E3|[\u203C-\u3299]\uFE0F\u200D|[\u203C-\u3299]\uFE0F|[\u2122-\u2B55]|\u303D|[\A9|\AE]\u3030|\uA9|\uAE|\u3030/ig;
// 如果为true字符串含有emoji表情 false不含 // 如果为true字符串含有emoji表情 false不含
@ -436,7 +436,7 @@ class AccountBasic extends Component {
// 姓名 // 姓名
handleSubmitNames(rule, value, callback){ handleSubmitNames(rule, value, callback){
if (value) { if (value) {
let iconRule1 = /[`~!@#$%^&*()_\-+=<>?:"{}|,.\/;'\\[\]·~@#¥%……&*()——\-+={}|《》?:“”【】、;‘’,。、]/im; let iconRule1 = /[`~!@#$%^&()_\-+=<>?:"{}|,.\/;'\\[\]·~@#¥%……&*()——\-+={}|《》?:“”【】、;‘’,。、]/im;
// 判断是否含有emoji表情 // 判断是否含有emoji表情
let iconRule2 = /[\uD83C|\uD83D|\uD83E][\uDC00-\uDFFF][\u200D|\uFE0F]|[\uD83C|\uD83D|\uD83E][\uDC00-\uDFFF]|[0-9|*|#]\uFE0F\u20E3|[0-9|#]\u20E3|[\u203C-\u3299]\uFE0F\u200D|[\u203C-\u3299]\uFE0F|[\u2122-\u2B55]|\u303D|[\A9|\AE]\u3030|\uA9|\uAE|\u3030/ig; let iconRule2 = /[\uD83C|\uD83D|\uD83E][\uDC00-\uDFFF][\u200D|\uFE0F]|[\uD83C|\uD83D|\uD83E][\uDC00-\uDFFF]|[0-9|*|#]\uFE0F\u20E3|[0-9|#]\u20E3|[\u203C-\u3299]\uFE0F\u200D|[\u203C-\u3299]\uFE0F|[\u2122-\u2B55]|\u303D|[\A9|\AE]\u3030|\uA9|\uAE|\u3030/ig;
// 如果为true字符串含有emoji表情 false不含 // 如果为true字符串含有emoji表情 false不含

@ -453,7 +453,7 @@ class RealNameCertificationModal extends Component{
// 姓名 // 姓名
handleSubmitNames(rule, value, callback){ handleSubmitNames(rule, value, callback){
if (value) { if (value) {
let iconRule1 = /[`~!@#$%^&*()_\-+=<>?:"{}|,.\/;'\\[\]·~@#¥%……&*()——\-+={}|《》?:“”【】、;‘’,。、]/im; let iconRule1 = /[`~!@#$%^&()_\-+=<>?:"{}|,.\/;'\\[\]·~@#¥%……&*()——\-+={}|《》?:“”【】、;‘’,。、]/im;
// 判断是否含有emoji表情 // 判断是否含有emoji表情
let iconRule2 = /[\uD83C|\uD83D|\uD83E][\uDC00-\uDFFF][\u200D|\uFE0F]|[\uD83C|\uD83D|\uD83E][\uDC00-\uDFFF]|[0-9|*|#]\uFE0F\u20E3|[0-9|#]\u20E3|[\u203C-\u3299]\uFE0F\u200D|[\u203C-\u3299]\uFE0F|[\u2122-\u2B55]|\u303D|[\A9|\AE]\u3030|\uA9|\uAE|\u3030/ig; let iconRule2 = /[\uD83C|\uD83D|\uD83E][\uDC00-\uDFFF][\u200D|\uFE0F]|[\uD83C|\uD83D|\uD83E][\uDC00-\uDFFF]|[0-9|*|#]\uFE0F\u20E3|[0-9|#]\u20E3|[\u203C-\u3299]\uFE0F\u200D|[\u203C-\u3299]\uFE0F|[\u2122-\u2B55]|\u303D|[\A9|\AE]\u3030|\uA9|\uAE|\u3030/ig;
// 如果为true字符串含有emoji表情 false不含 // 如果为true字符串含有emoji表情 false不含

Loading…
Cancel
Save