diff --git a/public/react/src/context/TPIContextProvider.js b/public/react/src/context/TPIContextProvider.js index ae88bf865..3e7695847 100644 --- a/public/react/src/context/TPIContextProvider.js +++ b/public/react/src/context/TPIContextProvider.js @@ -54,6 +54,8 @@ const testSetsExpandedArrayInitVal = [false, false, false, false, false, false, false, false, false, false, false, false, false, false, false] window.__fetchAllFlag = false; // 是否调用过fetchAll TODO 如何多次使用provider? + +const $ = window.$ class TPIContextProvider extends Component { constructor(props) { super(props) @@ -592,13 +594,48 @@ pop_box_new(htmlvalue, 480, 182); currentPassedGameGainExperience: experience, }) } + initDisplayInterval = () => { + if (this.showWebDisplayButtonTimeout) { + window.clearTimeout(this.showWebDisplayButtonTimeout) + } + this.showWebDisplayButtonTimeout = window.setTimeout(() => { + this.setState({ challenge: update(challenge, + { + showWebDisplayButton: { $set: false }, + }) + }) + this.showWebDisplayButtonTimeout = null + }, 61 * 1000) + + let remain = 60 + if (this.displayInterval) { + window.clearInterval(this.displayInterval) + } + this.displayInterval = window.setInterval(() => { + const button = $('#showWebDisplayButton'); + if (button.length) { + button.html(`查看效果(${remain})`) + if (remain == 0) { + button.html('查看效果') + } + } + if (remain == 0) { + window.clearInterval(this.displayInterval) + this.displayInterval = null + return; + } + + remain -= 1; + }, 1000) + } language_display(data) { const { game, tomcat_url } = this.state; - const $ = window.$; const challenge = Object.assign({}, this.state.challenge) if(challenge.isWeb && data.port != -1) { // var $result = $("#php_display"); challenge.showWebDisplayButton = true; // ActionView处是否出现查看效果按钮 + this.initDisplayInterval() + const path = challenge.web_route || challenge.path const webDisplayUrl = `${tomcat_url}:${data.port}/${path}` challenge.webDisplayUrl = webDisplayUrl @@ -653,24 +690,11 @@ pop_box_new(htmlvalue, 480, 182); const currentGamePassed = this.props.game !== 2 && status === 2 - currentGamePassed && this.language_display(response); + // 评测通过了,立即同步costTime currentGamePassed && this._updateCostTime(true, true); - if (currentGamePassed) { - game.status = 2; - game.next_game = next_game; - - } else { - this.showDialog({ - contentText:
-
评测未通过
-
详情请参见“测试结果”
-
, - isSingleButton: true - }) - } const output_sets = { "test_sets": test_sets, @@ -689,6 +713,31 @@ pop_box_new(htmlvalue, 480, 182); // output_sets.test_sets_array = test_sets_array; // } + // 检查是否编译通过 + let compileSuccess = false; + if (test_sets && test_sets.length) { + test_sets.some((item) => { + if (item.compile_success) { + compileSuccess = true; + return true; + } + }) + } + + compileSuccess && this.language_display(response); + if (currentGamePassed) { + game.status = 2; + game.next_game = next_game; + } else { + this.showDialog({ + contentText:
+
评测未通过
+
详情请参见“测试结果”
+
, + isSingleButton: true + }) + } + this.setState({ testSetsExpandedArray: testSetsExpandedArrayInitVal.slice(0), // 重置测试集展开状态 diff --git a/public/react/src/modules/courses/shixunHomework/Listofworks.js b/public/react/src/modules/courses/shixunHomework/Listofworks.js index db008e2c4..5dd049441 100644 --- a/public/react/src/modules/courses/shixunHomework/Listofworks.js +++ b/public/react/src/modules/courses/shixunHomework/Listofworks.js @@ -1340,14 +1340,15 @@ class Listofworks extends Component { // 导出实习报告批量 internshipreport = (url)=>{ console.log("internshipreport"); - // params: { - // homework_common_id: homeworkid, - // work_status: this.state.course_groupyslstwo, - // course_group: this.state.checkedValuesineinfo, - // search: this.state.searchtext, - // } - // let url = "/zip/shixun_report"; - // let homeworkid = this.props.match.params.homeworkid; + var struy=""; + try { + struy = moment().format('YYYY-MM-DD')+"-"+moment().format('hh-mm'); + struy=struy.replace(/-/g,""); + }catch (e) { + console.log(1347); + console.log(e); + } + axios.get((url),{responseType: 'blob'}).then((response) => { console.log("1350"); console.log(response); @@ -1363,19 +1364,10 @@ class Listofworks extends Component { const blob = new Blob([response.data], { type: type }) const downloadElement = document.createElement('a') const href = window.URL.createObjectURL(blob) - //后台再header中传文件名 - // console.log(Base64.decode(response.headers['content-disposition'].split('=')[1])); const string = Base64.decode(response.headers['content-disposition'].split('=')[1]); + console.log(response.headers['content-disposition'].split('=')[1]); downloadElement.href = href - var now=""; - try { - now = moment().year()+""+(moment().month()+1)+""+moment().date()+""+moment().hour()+""+moment().minute()+"" - console.log(now); - - } catch (e) { - console.log("1376"); - } - downloadElement.download = string+now+".zip" + downloadElement.download = string+struy+".zip" document.body.appendChild(downloadElement) downloadElement.click() document.body.removeChild(downloadElement) // 下载完成移除元素 @@ -1388,6 +1380,17 @@ class Listofworks extends Component { // 课堂学生成绩的导出下载 Classstudentachievement=(url)=>{ console.log("Classstudentachievement"); + // console.log(); + var struy=""; + try { + struy = moment().format('YYYY-MM-DD')+"-"+moment().format('hh-mm'); + struy=struy.replace(/-/g,""); + }catch (e) { + console.log(1397); + console.log(e); + } + + axios.get((url),{responseType: 'blob'}).then((response) => { console.log("1374"); console.log(response); @@ -1401,21 +1404,10 @@ class Listofworks extends Component { const blob = new Blob([response.data], { type: type }) const downloadElement = document.createElement('a') const href = window.URL.createObjectURL(blob) - //后台再header中传文件名 - // console.log("1409"); - // console.log(Base64.decode(response.headers['content-disposition'].split('=')[1])); const string = Base64.decode(response.headers['content-disposition'].split('=')[1]); - var now=""; - try { - now = moment().year()+""+(moment().month()+1)+""+moment().date()+""+moment().hour()+""+moment().minute()+"" - console.log("1422"); - console.log(now); - - } catch (e) { - console.log("1432"); - } + console.log(response.headers['content-disposition'].split('=')[1]); downloadElement.href = href - downloadElement.download =string+now+".xlsx"; + downloadElement.download =string+struy+".xlsx"; document.body.appendChild(downloadElement) downloadElement.click() document.body.removeChild(downloadElement) // 下载完成移除元素 diff --git a/public/react/src/modules/page/main/ActionView.js b/public/react/src/modules/page/main/ActionView.js index e0e52de9e..fff7d416d 100644 --- a/public/react/src/modules/page/main/ActionView.js +++ b/public/react/src/modules/page/main/ActionView.js @@ -25,7 +25,14 @@ const styles = theme => ({ color: '#4CACFF', border: '1px solid #4CACFF' } + }, + hoverButton: { + margin: theme.spacing.unit, + height: '30px', + padding: '0 16px', + color: '#4CACFF', + border: '1px solid #4CACFF' }, buttonText: { color: '#1B4061 !important', @@ -64,11 +71,12 @@ class ActionView extends Component { {/*将第一个按钮改为visibility方式隐藏,不然加载时测评按钮会出现没有垂直居中的情况*/} - - + + + { !gameBuilding &&