|
|
|
@ -44,8 +44,11 @@ |
|
|
|
|
</div> |
|
|
|
|
</div> |
|
|
|
|
<div class="catalog"> |
|
|
|
|
<el-button v-if="!overdue" class="renew" type="primary" size="small" @click="showBuy">续费</el-button> |
|
|
|
|
<a v-else class="entry" @click="entry">进入实验</a> |
|
|
|
|
<div class="entry-wrap"> |
|
|
|
|
<el-button v-if="!overdue" class="renew" type="primary" size="small" @click="showBuy">续费</el-button> |
|
|
|
|
<a v-if="practiceTheoreticalPaper" class="entry" @click="entry(1)">进入理论</a> |
|
|
|
|
<a v-if="practicePracticeProject" class="entry" @click="entry(0)">进入实训</a> |
|
|
|
|
</div> |
|
|
|
|
<div class="list"> |
|
|
|
|
<h4 class="title">{{ curriculumName || courseName }}</h4> |
|
|
|
|
<div> |
|
|
|
@ -261,11 +264,20 @@ |
|
|
|
|
<el-dialog title="请选择项目" v-loading="loading" :visible.sync="projectVisible" width="828px" custom-class="project-dia" |
|
|
|
|
:close-on-click-modal="false"> |
|
|
|
|
<ul class="projects"> |
|
|
|
|
<li v-for="(item, i) in projects" :key="i" :class="{ active: curProject == item.projectId }" |
|
|
|
|
@click="selectProject(item)"> |
|
|
|
|
<img src="@/assets/img/project.png" alt=""> |
|
|
|
|
<span>{{ i + 1 }}. {{ item.projectName }}</span> |
|
|
|
|
</li> |
|
|
|
|
<template v-if="isTheory"> |
|
|
|
|
<li v-for="(item, i) in papers" :key="i" :class="{ active: curPaper == item.paperId }" |
|
|
|
|
@click="selectPaper(item)"> |
|
|
|
|
<img src="@/assets/img/project.png" alt=""> |
|
|
|
|
<span>{{ i + 1 }}. {{ item.paperName }}</span> |
|
|
|
|
</li> |
|
|
|
|
</template> |
|
|
|
|
<template v-else> |
|
|
|
|
<li v-for="(item, i) in projects" :key="i" :class="{ active: curProject == item.projectId }" |
|
|
|
|
@click="selectProject(item)"> |
|
|
|
|
<img src="@/assets/img/project.png" alt=""> |
|
|
|
|
<span>{{ i + 1 }}. {{ item.projectName }}</span> |
|
|
|
|
</li> |
|
|
|
|
</template> |
|
|
|
|
</ul> |
|
|
|
|
|
|
|
|
|
<span slot="footer" class="dialog-footer"> |
|
|
|
@ -308,6 +320,8 @@ export default { |
|
|
|
|
editorConfig, |
|
|
|
|
startTime: Date.now(), // 页面进来的时间 |
|
|
|
|
systemIds: '', |
|
|
|
|
practicePracticeProject: 0, |
|
|
|
|
practiceTheoreticalPaper: 0, |
|
|
|
|
type: 1, |
|
|
|
|
video: "", |
|
|
|
|
chapterList: [], // 章节列表 |
|
|
|
@ -358,8 +372,11 @@ export default { |
|
|
|
|
videoSrc: '', |
|
|
|
|
desShrink: false, |
|
|
|
|
projectVisible: false, |
|
|
|
|
isTheory: 0, |
|
|
|
|
projects: [], |
|
|
|
|
papers: [], |
|
|
|
|
loading: false, |
|
|
|
|
curPaper: '', |
|
|
|
|
curProject: '', |
|
|
|
|
overdue: 0, //是否过期 |
|
|
|
|
buyVisible: false, |
|
|
|
@ -446,6 +463,8 @@ export default { |
|
|
|
|
this.teachingObjectives = data.teachingObjectives; |
|
|
|
|
this.assessmentList = data.assessmentConfig; |
|
|
|
|
this.systemIds = data.systemIds |
|
|
|
|
this.practicePracticeProject = data.practicePracticeProject |
|
|
|
|
this.practiceTheoreticalPaper = data.practiceTheoreticalPaper |
|
|
|
|
this.queryProject() |
|
|
|
|
} |
|
|
|
|
this.getStatus() |
|
|
|
@ -777,12 +796,17 @@ export default { |
|
|
|
|
fullScreen () { |
|
|
|
|
this.pdfVisible = true |
|
|
|
|
}, |
|
|
|
|
// 选择试卷 |
|
|
|
|
selectPaper (item) { |
|
|
|
|
this.curPaper = item.paperId |
|
|
|
|
}, |
|
|
|
|
// 选择项目 |
|
|
|
|
selectProject (item) { |
|
|
|
|
this.curProject = item.projectId |
|
|
|
|
}, |
|
|
|
|
// 展示选择项目弹框 |
|
|
|
|
showProjectDia () { |
|
|
|
|
showProjectDia (isTheory) { |
|
|
|
|
this.isTheory = isTheory |
|
|
|
|
this.projectVisible = true |
|
|
|
|
}, |
|
|
|
|
// 查询项目 |
|
|
|
@ -792,8 +816,9 @@ export default { |
|
|
|
|
cId: this.courseId, // 课程id |
|
|
|
|
mallId: this.mallId, |
|
|
|
|
permissions: 0 // 0: 练习,1: 考核 |
|
|
|
|
}).then(({ projects }) => { |
|
|
|
|
this.projects = projects |
|
|
|
|
}).then(res => { |
|
|
|
|
this.projects = res.projects // 实训项目 |
|
|
|
|
this.papers = res.exercisePaperList // 理论试卷 |
|
|
|
|
}).catch(res => { }) |
|
|
|
|
}, |
|
|
|
|
// 进入实验 |
|
|
|
@ -811,41 +836,48 @@ export default { |
|
|
|
|
}) |
|
|
|
|
}, |
|
|
|
|
// 进入实验 |
|
|
|
|
entry () { |
|
|
|
|
// 查询上次做的项目(python跟沙盘接口不一样) |
|
|
|
|
if (this.systemIds.split(',').includes('19')) { // 沙盘 |
|
|
|
|
this.$post(`${this.api.getSandTableLastCache}?cid=${this.courseId}`).then(res => { |
|
|
|
|
// 返回了data则提示是否继续,否则,显示选择项目的弹框 |
|
|
|
|
if (res.getLastCache) { |
|
|
|
|
this.entryProject(+res.getLastCache) |
|
|
|
|
} else { |
|
|
|
|
entry (isTheory) { |
|
|
|
|
if (isTheory) { |
|
|
|
|
// 理论试卷 |
|
|
|
|
this.showProjectDia(1) |
|
|
|
|
} else { |
|
|
|
|
// 实训系统 |
|
|
|
|
const systemIds = this.systemIds.split(',') |
|
|
|
|
// 查询上次做的项目(python跟沙盘接口不一样) |
|
|
|
|
if (systemIds.includes('19')) { // 沙盘 |
|
|
|
|
this.$post(`${this.api.getSandTableLastCache}?cid=${this.courseId}`).then(res => { |
|
|
|
|
// 返回了data则提示是否继续,否则,显示选择项目的弹框 |
|
|
|
|
if (res.getLastCache) { |
|
|
|
|
this.entryProject(+res.getLastCache) |
|
|
|
|
} else { |
|
|
|
|
this.showProjectDia() |
|
|
|
|
} |
|
|
|
|
}).catch(res => { |
|
|
|
|
this.showProjectDia() |
|
|
|
|
} |
|
|
|
|
}).catch(res => { |
|
|
|
|
this.showProjectDia() |
|
|
|
|
}) |
|
|
|
|
} else { // python |
|
|
|
|
// python只能存在一个打开的窗口 |
|
|
|
|
// const opened = +localStorage.getItem('opened') |
|
|
|
|
// if (opened) { |
|
|
|
|
// Util.errorMsg('Python系统限单页活跃,请切换至当前已有的活跃实验页面。', 5000) |
|
|
|
|
// return false |
|
|
|
|
// } else { |
|
|
|
|
// localStorage.setItem('opened', 1) |
|
|
|
|
// } |
|
|
|
|
|
|
|
|
|
this.$get(this.api.getTheMostRecentlyRunProject, { |
|
|
|
|
cid: this.courseId |
|
|
|
|
}).then(({ data }) => { |
|
|
|
|
// 返回了data则提示是否继续,否则,显示选择项目的弹框 |
|
|
|
|
if (data && data.length) { |
|
|
|
|
this.entryProject(data[0].projectId) |
|
|
|
|
} else { |
|
|
|
|
}) |
|
|
|
|
} else { // python |
|
|
|
|
// python只能存在一个打开的窗口 |
|
|
|
|
// const opened = +localStorage.getItem('opened') |
|
|
|
|
// if (opened) { |
|
|
|
|
// Util.errorMsg('Python系统限单页活跃,请切换至当前已有的活跃实验页面。', 5000) |
|
|
|
|
// return false |
|
|
|
|
// } else { |
|
|
|
|
// localStorage.setItem('opened', 1) |
|
|
|
|
// } |
|
|
|
|
|
|
|
|
|
this.$get(this.api.getTheMostRecentlyRunProject, { |
|
|
|
|
cid: this.courseId |
|
|
|
|
}).then(({ data }) => { |
|
|
|
|
// 返回了data则提示是否继续,否则,显示选择项目的弹框 |
|
|
|
|
if (data && data.length) { |
|
|
|
|
this.entryProject(data[0].projectId) |
|
|
|
|
} else { |
|
|
|
|
this.showProjectDia() |
|
|
|
|
} |
|
|
|
|
}).catch(res => { |
|
|
|
|
this.showProjectDia() |
|
|
|
|
} |
|
|
|
|
}).catch(res => { |
|
|
|
|
this.showProjectDia() |
|
|
|
|
}) |
|
|
|
|
}) |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
}, |
|
|
|
|
// 进入python系统 |
|
|
|
@ -979,9 +1011,14 @@ $height: 700px; |
|
|
|
|
font-size: 17px; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
.entry-wrap { |
|
|
|
|
display: flex; |
|
|
|
|
justify-content: space-between; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
.entry { |
|
|
|
|
display: block; |
|
|
|
|
width: 100%; |
|
|
|
|
width: 48%; |
|
|
|
|
height: 34px; |
|
|
|
|
margin-bottom: 16px; |
|
|
|
|
font-size: 17px; |
|
|
|
@ -994,6 +1031,10 @@ $height: 700px; |
|
|
|
|
&:hover { |
|
|
|
|
opacity: 0.9; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
&:only-child { |
|
|
|
|
width: 100%; |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
.types { |
|
|
|
|