Merge branch 'dev_jupyter' of https://bdgit.educoder.net/Hjqreturn/educoder into dev_jupyter

chromesetting
daiao 5 years ago
commit d251f35bd8

@ -23,7 +23,7 @@ class HackUserLastestCodesController < ApplicationController
# 同步代码
def sync_code
@my_hack.update_attributes(code: @hack.code, modify_time: @hack.modify_time)
@my_hack.update_attributes(code: @hack.code, modify_time: Time.now)
end
# 调试代码

@ -557,7 +557,6 @@ a.user_orangebg_btn{background-color:#FF6800;color: #fff;}
a.user_greybg_btn{background-color:#747A7F;color: #fff;}
/*.user_white_btn{border: 1px solid #ffffff;color: #ffffff!important;}*/
.pointer{cursor: pointer}
.cdefault{cursor: default}

@ -12,4 +12,5 @@ json.homework_type homework.homework_type
if homework.homework_type == "practice"
json.shixun_identifier homework.shixuns.take.try(:identifier)
json.shixun_id homework.shixuns.take.try(:id)
json.shixun_status homework.shixuns.take.try(:status).to_i
end

@ -29,6 +29,7 @@ json.homeworks @homework_commons.each do |homework|
if @user_course_identity < Course::STUDENT
if homework.homework_type == "practice"
json.shixun_identifier homework.shixuns.take.try(:identifier)
json.shixun_status homework.shixuns.take.try(:status).to_i
end
elsif @user_course_identity == Course::STUDENT
if homework.homework_type == "practice"

@ -326,7 +326,7 @@ module.exports = {
comments: false
},
compress: {
drop_debugger: true,
drop_debugger: false,
drop_console: false
}
}

@ -13,7 +13,7 @@ function locationurl(list){
if (window.location.port === "3007") {
} else {
window.location.href(list)
window.location.href=list
}
}
let hashTimeout

@ -493,8 +493,8 @@ class NewShixunModel extends Component{
{this.props.type==='shixuns'?
<div className="clearfix sortinxdirection mt30 intermediatecenterysls">
<p className="nandu">筛选</p>
<p className={belongtoindex===0?"clickbutstwo ml13":"clickbutstwos ml13"} onClick={()=>this.belongto("all")}>全部实训</p>
<p className={belongtoindex===1?"clickbutstwo ml20":"clickbutstwos ml20"} onClick={()=>this.belongto("mine")}>我的实训</p>
<p className={type==="all"?"clickbutstwo ml13":"clickbutstwos ml13"} onClick={()=>this.belongto("all")}>全部实训</p>
<p className={type==="mine"?"clickbutstwo ml20":"clickbutstwos ml20"} onClick={()=>this.belongto("mine")}>我的实训</p>
</div>:""
}
{/*{this.props.type==='shixuns'? <Dropdown overlay={menus}>*/}

@ -232,9 +232,9 @@ class ShixunHomeworkPage extends Component {
typelist={teacherdatapage === undefined ? [""] : teacherdatapage.homework_status}
/>
<a className="color-grey-9 fr font-16 summaryname ml20 mr20" onClick={()=>this.gotohome()}>返回</a>
<a className="color-grey-9 fr font-16 mr20"
{teacherdatapage&&teacherdatapage.shixun_status>1?<a className="color-grey-9 fr font-16 mr20"
href={`/shixuns/${teacherdatapage === undefined ? "" : teacherdatapage.shixun_identifier}/challenges`}
target={"_blank"}>实训详情</a>
target={"_blank"}>实训详情</a>:""}
</div>
@ -336,10 +336,10 @@ class ShixunHomeworkPage extends Component {
<a className="fr color-blue font-16"
href={`/courses/${this.props.match.params.coursesId}/${jobsettingsdatapage === undefined ? "" : jobsettingsdatapage.data.category.main === 1 ? "shixun_homeworks" :"shixun_homework"}/${teacherdatapage === undefined ? "" : teacherdatapage.id}/commitsummary/${this.props.match.params.homeworkid}`}>{teacherdatapage.commit_des}</a>
}
{teacherdatapage === undefined ? "" : <Startshixuntask
{teacherdatapage === undefined ? "" :teacherdatapage&&teacherdatapage.shixun_status>1?<Startshixuntask
{...this.props}
data={teacherdatapage}
/>}
/>:""}
{this.props.isStudent() ?
(
teacherdatapage&&teacherdatapage.redo_work===true?

@ -359,14 +359,14 @@ class ShixunhomeWorkItem extends Component{
}
</style>
{this.props.isAdmin?<span onClick={(event)=>this.stopPro(event)} className={this.props.isAdminOrCreator()?"homepagePostSetting homepagePostSettingname":"homepagePostSetting homepagePostSettingbox"} style={{"right":"-2px","top":"6px","display":"block"}}>
<Link className="btn colorblue font-16 fontweight400" to={"/shixuns/"+discussMessage.shixun_identifier+"/challenges"} target={"_blank"}>实训详情</Link>
{discussMessage&&discussMessage.shixun_status>1?<Link className="btn colorblue font-16 fontweight400" to={"/shixuns/"+discussMessage.shixun_identifier+"/challenges"} target={"_blank"}>实训详情</Link>:""}
{this.props.isAdminOrCreator()?<a onClick={(event)=>this.editname(discussMessage.name,discussMessage.homework_id,event)} className={"btn colorblue ml20 font-16 fontweight400"}>重命名</a>:""}
{/*<WordsBtn className="btn colorblue ml20 font-16" to={`/courses/${this.props.match.params.coursesId}/${this.state.shixuntypes}/${discussMessage.homework_id}/settings?tab=3`} > 设置</WordsBtn>*/}
<WordsBtn className="btn colorblue font-16 ml15 fontweight400" to={`/courses/${this.props.match.params.coursesId}/${this.state.shixuntypes}/${discussMessage.homework_id}/settings?tab=3`} > 设置</WordsBtn>
</span>:""}
{this.props.isStudent===true?this.props.course_identity===5?
{this.props.isStudent===true?this.props.course_identity===5?discussMessage&&discussMessage.shixun_status>1?
<WordsBtn style="blue" className="colorblue font-16 mr20 fr mt10">
{startbtn===false?
(discussMessage.task_operation[0] == '继续挑战' || discussMessage.task_operation[0] == '查看实战' ?
@ -377,7 +377,7 @@ class ShixunhomeWorkItem extends Component{
<a className="btn colorblue" onClick={()=>this.taskoperationId(discussMessage.task_operation[1])}>
{discussMessage.task_operation[0]}
</a>):<a className="btn colorblue" ></a>}
</WordsBtn>:"":""
</WordsBtn>:"":"":""
}
</h6>

@ -4,7 +4,7 @@
* @Github:
* @Date: 2019-11-27 16:02:36
* @LastEditors: tangjiang
* @LastEditTime: 2019-12-10 09:30:27
* @LastEditTime: 2019-12-13 17:32:33
*/
import './index.scss';
import React, { useState, useRef } from 'react';
@ -84,7 +84,7 @@ const ControlSetting = (props) => {
<Tabs
className={classNames}
activeKey={defaultActiveKey}
tabBarStyle={{ backgroundColor: '#000', color: '#fff' }}
tabBarStyle={{ backgroundColor: 'rgba(48,48,48,1)', color: '#fff' }}
onChange={handleTabChange}
>
<TabPane tab={'自定义测试用例'} key={'1'} style={{ height: '280px', overflowY: 'auto' }}>

@ -2,6 +2,7 @@
position: absolute;
bottom: 0;
width: 100%;
background:rgba(30,30,30,1);
// height: 56px;
.control_tab{
position: absolute;
@ -51,7 +52,8 @@
height: 56px;
padding-right: 30px;
padding-left: 10px;
background: #000;
// background: #000;
background:rgba(48,48,48,1);
}
.setting_drawer{

@ -4,7 +4,7 @@
* @Github:
* @Date: 2019-11-27 19:46:14
* @LastEditors: tangjiang
* @LastEditTime: 2019-12-10 09:31:00
* @LastEditTime: 2019-12-13 17:38:42
*/
import './index.scss';
import React, { useState, useEffect, useRef, useImperativeHandle, forwardRef } from 'react';
@ -50,6 +50,7 @@ function InitTabCtx (props, ref) {
],
initialValue: inputValue
})(<TextArea
className="input_textarea_style"
rows={8}
placeholder="请填写测试用例的输入值,点击“调试代码”"
/>)

@ -47,4 +47,11 @@
.flex_r{
padding: 0 20px 0 10px;
}
.input_textarea_style{
background:rgba(30,30,30,1) !important;
color: #fff;
border-color: transparent;
outline: none;
}
}

@ -4,11 +4,11 @@
* @Github:
* @Date: 2019-11-27 15:02:52
* @LastEditors: tangjiang
* @LastEditTime: 2019-12-10 09:20:42
* @LastEditTime: 2019-12-13 16:16:56
*/
import './index.scss';
import React, { useState, useRef, useEffect } from 'react';
import { Icon, Drawer, Modal } from 'antd';
import { Drawer, Modal } from 'antd';
import { fromStore } from 'educoder';
import { connect } from 'react-redux';
import MonacoEditor from '@monaco-editor/react';

@ -1,11 +1,13 @@
.monaco_editor_area{
height: 100%;
background-color: rgba(30,30,30,1);
.code_title{
display: flex;
align-items: center;
// justify-content: space-between;
// background: #000;
background: #333333;
// background: #333333;
background-color: rgba(48,48,48,1);
color: #fff;
height: 56px;
padding: 0 30px;

@ -4,7 +4,7 @@
* @Github:
* @Date: 2019-11-23 10:53:19
* @LastEditors: tangjiang
* @LastEditTime: 2019-12-12 19:08:24
* @LastEditTime: 2019-12-13 17:19:15
*/
import './index.scss';
import React, { useEffect, useState } from 'react';
@ -23,22 +23,24 @@ import { withRouter } from 'react-router';
function StudentStudy (props) {
const [hasUpdate, setHasUpdate] = useState(true);
const {
// hack,
userInfo,
hack_identifier
hack_identifier,
// user_program_identifier,
restoreInitialCode
} = props;
// 是否更新
const [isUpdate, setIsUpdate] = useState(true);
useEffect(() => {
const {
match: { params },
getUserProgramDetail,
saveUserProgramIdentifier
} = props;
const {
match: { params },
getUserProgramDetail,
saveUserProgramIdentifier
} = props;
let { id } = params;
let { id } = params;
useEffect(() => {
// 保存当前的id
saveUserProgramIdentifier(id);
// startProgramQuestion(id);
@ -46,10 +48,9 @@ function StudentStudy (props) {
}, []);
useEffect(() => {
console.log('=======>>>>>>>>');
const { hack = {} } = props;
if (!hack.modify_code && isUpdate) { // 代码更改,提示是否需要更新代码
setIsUpdate(false);
if (hack.modify_code && hasUpdate) { // 代码更改,提示是否需要更新代码
setHasUpdate(false);
Modal.confirm({
title: '提示',
content: (
@ -61,30 +62,11 @@ function StudentStudy (props) {
okText: '立即更新',
cancelText: '稍后再说',
onOk () {
console.log('更新代码....');
restoreInitialCode(id, '更新成功');
}
});
}
}, [props]);
// useEffect(() => {
// const {hack} = props;
// if (!hack.modify_code) { // 代码更改,提示是否需要更新代码
// Modal.confirm({
// title: '提示',
// content: (
// <p>
// 代码文件有更新啦 <br />
// 还未提交的代码,请自行保存
// </p>
// ),
// okText: '立即更新',
// cancelText: '稍后再说',
// onOk () {
// console.log('更新代码....');
// }
// });
// }
// }, [props]);
}, [props, hasUpdate, setHasUpdate]);
const _hack_id = hack_identifier || fromStore('hack_identifier');
@ -110,7 +92,7 @@ function StudentStudy (props) {
</div> */}
<UserInfo userInfo={userInfo}/>
<div className={'study_name'}>
<span>乘积最大序列</span>
<span>乘积最大序列 {hasUpdate}</span>
</div>
<div className={'study_quit'}>
{/* to={`/problems/${_hack_id}/edit`} */}
@ -146,11 +128,13 @@ function StudentStudy (props) {
const mapStateToProps = (state) => {
const { userInfo } = state.userReducer;
const { hack_identifier } = state.ojForUserReducer;
const { hack_identifier, user_program_identifier, hack } = state.ojForUserReducer;
return {
hack,
userInfo,
user_program_identifier,
hack_identifier
};
};
};
const mapDispatchToProps = (dispatch) => ({
@ -159,7 +143,9 @@ const mapDispatchToProps = (dispatch) => ({
// 调用编程题详情
getUserProgramDetail: (id) => dispatch(actions.getUserProgramDetail(id)),
saveUserProgramIdentifier: (id) => dispatch(actions.saveUserProgramIdentifier(id)),
saveEditorCodeForDetail: (code) => dispatch(actions.saveEditorCodeForDetail(code))
saveEditorCodeForDetail: (code) => dispatch(actions.saveEditorCodeForDetail(code)),
// 恢复初始代码
restoreInitialCode: (identifier, msg) => dispatch(actions.restoreInitialCode(identifier, msg)),
});
export default withRouter(connect(

@ -4,7 +4,7 @@
* @Github:
* @Date: 2019-11-27 14:59:51
* @LastEditors: tangjiang
* @LastEditTime: 2019-12-10 19:00:30
* @LastEditTime: 2019-12-13 16:50:40
*/
import React, { useState, useEffect } from 'react';
import {connect} from 'react-redux';
@ -66,7 +66,7 @@ const RightPane = (props) => {
}
// 恢复初始代码
const handleRestoreInitialCode = () => {
restoreInitialCode(identifier);
restoreInitialCode(identifier, '恢复初始代码成功');
}
return (
@ -110,7 +110,7 @@ const mapDispatchToProps = (dispatch) => ({
// 保存用户代码至后台
saveUserCodeForInterval: (identifier, code) => dispatch(actions.saveUserCodeForInterval(identifier, code)),
// 恢复初始代码
restoreInitialCode: (identifier) => dispatch(actions.restoreInitialCode(identifier)),
restoreInitialCode: (identifier, msg) => dispatch(actions.restoreInitialCode(identifier, msg)),
});
export default connect(

@ -840,7 +840,7 @@ class TPMBanner extends Component {
</li>
</ul>
{
this.props.is_jupyter===false?
this.props.is_jupyter===true?"":
<div className="pr fl" id="commentsStar" onMouseOver={() => this.showonMouseOver()}
onMouseOut={() => this.hideonMouseOut()}>
<div className={"color-grey-c ml15"} style={{color: "#Fff", textAlign: "center"}}>学员评分</div>
@ -916,7 +916,6 @@ class TPMBanner extends Component {
</div>
</div>
:""
}
@ -986,7 +985,7 @@ class TPMBanner extends Component {
{
startbtn === true ?
<a className="fr user_default_btn edu-greyback-btn mr15 font-18">开启中</a> : ""
<a className="fr kaike kkbths mr15 font-18">开启中</a> : ""
}
{/*{*/}
@ -1010,8 +1009,10 @@ class TPMBanner extends Component {
placement="bottom"
visible={this.state.openknow}
>
<a onClick={this.applyrelease} className="fr user_default_btn user_blue_btn mr20 font-18 height39"
<Tooltip placement="bottom" title={"发布后,可以使用到自己的课堂和课程"}>
<a onClick={this.applyrelease} className="fr kaike kkbths mr20 font-18 height39"
id="challenge_begin">发布</a>
</Tooltip>
</Popover>: ""
}
@ -1088,26 +1089,33 @@ class TPMBanner extends Component {
placement="bottom"
visible={this.state.openshowpublictype}
>
<Button type="primary" ghost id="challenge_begin" onClick={this.openpublic} className="fr user_default_btn user_blue_btn mr20 font-18 height39">
申请公开
</Button>
<Tooltip placement="bottom" title={"审核通过后,平台用户可以查看实训"}>
<Button type="primary" ghost id="challenge_begin" onClick={this.openpublic} className="fr kaike kkbths mr20 font-18 height39">
申请公开
</Button>
</Tooltip>
</Popover>: ""
}
{shixunsDetails.shixun_status === 2 && shixunsDetails.public===1 && this.props.identity < 5 ?
<Button type="primary" ghost id="challenge_begin" onClick={this.hidenpublic} className="fr user_default_btn user_blue_btn mr20 font-18 height39" style={{'width': '140px'}}>
撤销申请公开
</Button>: ""
<Tooltip placement="bottom" title={"撤销后,仅可以使用到自己的课堂和课程"}>
<Button type="primary" ghost id="challenge_begin" onClick={this.hidenpublic} className="fr kaike kkbths mr20 font-18 height39" style={{'width': '140px'}}>
撤销申请公开
</Button>
</Tooltip>: ""
}
{shixunsDetails.shixun_status === 2 && shixunsDetails.public===0 && this.props.identity < 5 ?
<a onClick={this.cancel_publish} className="fr user_default_btn user_blue_btn mr20 font-18 height39"
id="challenge_begin">撤销发布</a> : ""
<Tooltip placement="bottom" title={"撤销发布后,学员将无法进行练习"}>
<a onClick={this.cancel_publish} className="fr kaike kkbths mr20 font-18 height39"
id="challenge_begin">撤销发布</a>
</Tooltip>
: ""
}
{
<a onClick={this.Senttothe}
className="fr user_default_btn user_blue_btn mr20 font-18"
className="fr kaike kkbths mr20 font-18"
data-tip-down=""
style={{display: shixunsDetails.shixun_status === 0 || shixunsDetails.shixun_status === 3 || shixunsDetails.shixun_status === 1 || shixunsDetails.shixun_status === -1 ? "none" : "block"}}
data-remote="true">
@ -1191,11 +1199,11 @@ class TPMBanner extends Component {
</Modal>
{shixunsDetails.shixun_status === 3 &&
<a className="fr user_default_btn edu-greyback-btn mr15 font-18">已关闭</a>
<a className="fr kaike kkbths mr15 font-18">已关闭</a>
}
{shixunsDetails.shixun_status === -1 &&
<a className="fr user_default_btn edu-greyback-btn mr15 font-18">已删除</a>
<a className="fr kaike kkbths mr15 font-18">已删除</a>
}

@ -84,6 +84,7 @@ class TPMDataset extends Component {
loadingstate:false,
checked: false,
showmodel:false,
itemtypebool:false,
}
}
@ -304,10 +305,18 @@ class TPMDataset extends Component {
if(info.file.response){
if(info.file.response.status===-1||info.file.response.status==="-1"){
// console.log("准备显示弹框了");
// console.log(info);
// console.log(info);false
let itemtype=-1;
try {
itemtype=info.file.response.message.indexOf('文件名已经存在'.toLowerCase());
}catch (e) {
}
this.setState({
showmodel:true,
tittest:info.file.response.message,
itemtypebool:itemtype>-1?true:itemtype<=-1?false:false,
})
}
}
@ -466,7 +475,7 @@ class TPMDataset extends Component {
<div className="with65 fl edu-back-white commentsDelegateParent">
{
this.state.showmodel===true?
<Tpmdatasetmodel modalCancel={()=>this.ModalSave()} tittest={this.state.tittest} modalsType={this.state.showmodel}></Tpmdatasetmodel>
<Tpmdatasetmodel itemtypebool={this.state.itemtypebool} modalCancel={()=>this.ModalSave()} tittest={this.state.tittest} modalsType={this.state.showmodel}></Tpmdatasetmodel>
:""
}
<TPMNav

@ -64,7 +64,8 @@ export default class Shixuninformation extends Component {
opentime: false,
oldscope_partment: [],
scope_partment: [],
loading: false
loading: false,
opening_timetype:false
}
}
@ -113,7 +114,8 @@ export default class Shixuninformation extends Component {
onChangeTimePicker = (value, dateString) => {
this.setState({
opening_time: dateString === "" ? "" : handleDateStrings(dateString)
opening_time: dateString === "" ? "" : handleDateStrings(dateString),
opening_timetype:false
})
}
@ -121,7 +123,16 @@ export default class Shixuninformation extends Component {
this.setState({
loading: true
})
let {can_copy, use_scope, scope_partment, opening_time} = this.state;
let {can_copy, use_scope, scope_partment, opening_time,oldscope_partment} = this.state;
if(this.state.opentime===true){
if(opening_time===null){
this.setState({
opening_timetype:true
})
return
}
}
let id = this.props.match.params.shixunId;
let url = `/shixuns/${id}/update_permission_setting.json`;
@ -138,11 +149,23 @@ export default class Shixuninformation extends Component {
if (response.data.status === -1) {
} else {
this.props.getdatas("3")
let list=[]
scope_partment.map((item,key)=>{
list.push(item)
})
oldscope_partment.map((item,key)=>{
list.push(item)
})
this.props.showNotification("权限配置保存成功!")
this.setState({
loading: false
loading: false,
scope_partment:[],
oldscope_partment:list
})
this.props.getdatas("3")
}
}).catch((error) => {
this.setState({
@ -171,23 +194,30 @@ export default class Shixuninformation extends Component {
datalist = []
}
datalist.push(e)
let scopetype = false;
scope_partment.map((item, key) => {
if (item === e) {
scopetype = true
}
})
if(scope_partment.length>0){
scope_partment.map((item, key) => {
if (item === e) {
debugger
scopetype = true
}
})
}
if(oldscope_partment.length>0){
oldscope_partment.map((item, key) => {
if (item === e) {
debugger
scopetype = true
}
})
}
oldscope_partment.map((item, key) => {
if (item === e) {
scopetype = true
}
})
if (scopetype === false) {
datalist.push(e)
this.setState({
scope_partment: datalist
});
@ -354,6 +384,7 @@ export default class Shixuninformation extends Component {
<div className={"both"}></div>
{this.state.opentime === false ? "" : <div className="mt20 ml25">
<DatePicker
className={this.state.opening_timetype===true?"bor-red":""}
showToday={false}
showTime={{format: 'HH:mm'}}
format="YYYY-MM-DD HH:mm"
@ -367,6 +398,7 @@ export default class Shixuninformation extends Component {
dropdownClassName="hideDisable"
/>
</div>}
<div className={this.state.opening_timetype===true?"color-red mt10 ml20":"none"}>请选择开启时间</div>
</span>
</div>

@ -106,8 +106,8 @@ export default class Shixuninformation extends Component {
test_set_permission: this.state.test_set_permission,
vnc: this.state.vnc,
webssh: this.state.websshshow === false ? 0 : this.state.opensshRadio,
code_edit_permission:this.state.is_secret_repository
},
is_secret_repository: this.state.is_secret_repository
}
).then((response) => {
if (response.data.status === -1) {

@ -214,7 +214,7 @@ class Challengesjupyter extends Component {
this.state.jupyter_url === null?
<div className="mt50 intermediatecenter juplbool">
<span className="icon iconfontysl icon-jiazaishibai1"></span>
<p className="intermediatecenter sortinxdirection mt5 juplboolp"><p className="colorbluetest">加载实训出错是否</p><p className="colorbluetwo" onClick={()=>this.updatamakedowns()}></p></p>
<p className="intermediatecenter sortinxdirection mt5 juplboolp"><p className="colorbluetest">加载实训失败</p><p className="colorbluetwo" onClick={()=>this.updatamakedowns()}></p></p>
</div>

@ -119,4 +119,40 @@ a:active{text-decoration:none;}
.FF6802{
color:#FF6802;
}
}
.xxtjbtn{
width: 103px;
height: 38px;
background: rgba(255,255,255,1);
border-radius: 4px;
border: 1px solid rgba(255,255,255,1);
color: #fff !important;
font-size: 15px !important;
line-height: 36px !important;
}
.kkbths{
width:103px;
height:38px;
border-radius:4px;
line-height: 36px !important;
border:1px solid rgba(255,255,255,1)!important;
color: #ffffff !important;
}
.kaike{
border-radius: 4px;
border: 1px solid #ffffff !important;
padding: 0px 10px;
cursor: pointer;
font-size: 14px;
display: block;
width: 120px;
text-align: center;
height: 40px;
line-height: 40px!important;
border-radius: 4px;
box-sizing: border-box;
color: #ffffff !important;
}

@ -34,7 +34,13 @@ class Tpmdatasetmodel extends Component {
width="530px"
>
<div className="educouddiv intermediatecenter">
<div className={"tabeltext-alignleftysl mt10"}><p>文件名重复</p></div>
{
this.props.itemtypebool===true?
<div className={"tabeltext-alignleftysl mt10"}><p>文件名重复</p></div>
:""
}
<div className={"tabeltext-alignleftysltwo mt10"}><p>{this.props.tittest}</p></div>
<div className="clearfix mt30 edu-txt-center task-btn-blues">
{/*<a className="task-btn mr30" onClick={()=>this.modalCancel()}>先试试看</a>*/}

@ -4,7 +4,7 @@
* @Github:
* @Date: 2019-11-27 13:42:11
* @LastEditors: tangjiang
* @LastEditTime: 2019-12-10 19:05:36
* @LastEditTime: 2019-12-13 16:49:42
*/
import types from "./actionTypes";
import { Base64 } from 'js-base64';
@ -19,6 +19,7 @@ import {
fetchUserCodeSubmit,
fetchRestoreInitialCode
} from "../../services/ojService";
import { notification } from "antd";
// 进入编程页面时,首先调用开启编程题接口
export const startProgramQuestion = (id, props) => {
@ -384,17 +385,21 @@ export const submitUserCode = (identifier, inputValue, type) => {
}
// 恢复初始代码
export const restoreInitialCode = (identifier) => {
export const restoreInitialCode = (identifier, msg) => {
return (dispatch) => {
fetchRestoreInitialCode(identifier).then(res => {
if (res.data.status === 401) return;
console.log('恢复初始代码====》》》》', res);
// console.log('恢复初始代码====》》》》', res);
const {status, data} = res;
if (status === 200) {
dispatch({
type: types.RESTORE_INITIAL_CODE,
payload: data.code
})
});
notification.success({
message: '提示',
description: msg
});
}
});
}

@ -4,7 +4,7 @@
* @Github:
* @Date: 2019-11-20 16:35:46
* @LastEditors: tangjiang
* @LastEditTime: 2019-12-13 10:46:15
* @LastEditTime: 2019-12-13 16:56:22
*/
import types from './actionTypes';
import CONST from '../../constants';
@ -251,7 +251,11 @@ export const validateOjForm = (props, type) => {
// 提示发布信息
publishTask(identifier).then(res => {
if (res.data.status === 0) {
message.success('发布成功!');
// message.success('发布成功!');
notification.success({
message: '提示',
description: '发布成功!'
});
linkToDev(dispatch, props);
}
dispatch({
@ -269,7 +273,11 @@ export const validateOjForm = (props, type) => {
fetchPostOjForm(paramsObj).then(res => {
if (res.status === 200) { // 保存成功后,重新跳转至列表页
if (res.data.status === 0) {
message.success(paramsObj['submitType'] === 'update' ? '更新成功' : '保存成功');
// message.success(paramsObj['submitType'] === 'update' ? '更新成功' : '保存成功');
notification.success({
message: '提示',
description: paramsObj['submitType'] === 'update' ? '更新成功' : '保存成功'
});
linkToDev(dispatch, props);
}
dispatch({
@ -299,7 +307,11 @@ export const handleClickCancelPublish = (props, identifier) => {
if (res.status = 200) {
const { data} = res;
if (data.status === 0) {
message.success('撤销发布成功!');
// message.success('撤销发布成功!');
notification.success({
message: '提示',
description: '撤销发布成功!'
});
linkToDev(dispatch, props);
}
}

@ -4,7 +4,7 @@
* @Github:
* @Date: 2019-11-20 10:55:38
* @LastEditors: tangjiang
* @LastEditTime: 2019-12-13 10:09:12
* @LastEditTime: 2019-12-13 17:03:47
*/
import axios from 'axios';
@ -84,10 +84,10 @@ export async function fetchUserCommitRecordDetail (identifier) {
}
// 恢复初始代码
export async function restoreInitialCode (identifier) {
const url = `/myproblems/${identifier}/restore_initial_code.json`;
return axios.get(url);
}
// export async function restoreInitialCode (identifier) {
// const url = `/myproblems/${identifier}/restore_initial_code.json`;
// return axios.get(url);
// }
// 发布任务
export async function publishTask (identifier) {
@ -115,7 +115,8 @@ export async function fetchUserCodeSubmit (identifier) {
// 恢复初始代码
export async function fetchRestoreInitialCode (identifier) {
const url = `/myproblems/${identifier}/restore_initial_code.json`;
// const url = `/myproblems/${identifier}/restore_initial_code.json`;
const url = `/myproblems/${identifier}/sync_code.json`;
return axios.post(url);
}

@ -820,4 +820,4 @@ html>body #ajax-indicator { position: fixed; }
.footer_con-p{
color: #898989 !important;
}
}

Loading…
Cancel
Save