|
@@ -2,14 +2,13 @@
|
|
|
<template>
|
|
<template>
|
|
|
<div class="task-card">
|
|
<div class="task-card">
|
|
|
<div class="top-title-box">
|
|
<div class="top-title-box">
|
|
|
- <p>工作台任务卡</p>
|
|
|
|
|
|
|
+ <p>工作台任务</p>
|
|
|
</div>
|
|
</div>
|
|
|
<div class="card-max-big-box">
|
|
<div class="card-max-big-box">
|
|
|
<div class="year-card-box for-max-big-box">
|
|
<div class="year-card-box for-max-big-box">
|
|
|
<div class="year-card-top-title-box">
|
|
<div class="year-card-top-title-box">
|
|
|
<p>学年数据统计</p>
|
|
<p>学年数据统计</p>
|
|
|
<p>按学年统计历年考试通过情况与成绩</p>
|
|
<p>按学年统计历年考试通过情况与成绩</p>
|
|
|
- <!--<p v-if="yearType">成绩报告</p>-->
|
|
|
|
|
</div>
|
|
</div>
|
|
|
<div class="bottom-content-box scrollbar-box">
|
|
<div class="bottom-content-box scrollbar-box">
|
|
|
<p class="null-p" v-if="!yearMinList[0]">暂无数据</p>
|
|
<p class="null-p" v-if="!yearMinList[0]">暂无数据</p>
|
|
@@ -19,49 +18,78 @@
|
|
|
</div>
|
|
</div>
|
|
|
</div>
|
|
</div>
|
|
|
</div>
|
|
</div>
|
|
|
- <!--学习任务卡-->
|
|
|
|
|
- <!--<div class="study-card-box for-max-big-box">-->
|
|
|
|
|
- <!--<div class="year-card-top-title-box">-->
|
|
|
|
|
- <!--<p>学习任务</p>-->
|
|
|
|
|
- <!--<p>待完成的学习任务</p>-->
|
|
|
|
|
- <!--</div>-->
|
|
|
|
|
- <!--<div class="bottom-content-box scrollbar-box">-->
|
|
|
|
|
- <!--<p class="null-p" v-if="!studyMinList[0]">暂无数据</p>-->
|
|
|
|
|
- <!--<div class="bottom-big-box-2" v-for="(item,index) in studyMinList" @click="studyTableButton(item)">-->
|
|
|
|
|
- <!--<p>{{item.courseName}}</p>-->
|
|
|
|
|
- <!--<p >{{item.deptName}}丨{{item.learnStatus==0?'待完成':(item.learnStatus==1?'进行中':(item.learnStatus==2?'已完成':''))}}</p>-->
|
|
|
|
|
- <!--</div>-->
|
|
|
|
|
- <!--</div>-->
|
|
|
|
|
- <!--</div>-->
|
|
|
|
|
- <!--模拟任务卡-->
|
|
|
|
|
- <!--<div class="examination-card-box for-max-big-box">-->
|
|
|
|
|
- <!--<div class="year-card-top-title-box">-->
|
|
|
|
|
- <!--<p>模拟考试</p>-->
|
|
|
|
|
- <!--<p>待完成的考前模拟练习</p>-->
|
|
|
|
|
- <!--</div>-->
|
|
|
|
|
- <!--<div class="bottom-content-box scrollbar-box">-->
|
|
|
|
|
- <!--<p class="null-p" v-if="!examinationMinList[0]">暂无数据</p>-->
|
|
|
|
|
- <!--<div class="bottom-big-box-3" v-for="(item,index) in examinationMinList" @click="mockTableButton(item)">-->
|
|
|
|
|
- <!--<p>{{item.examName}}</p>-->
|
|
|
|
|
- <!--<p >最高成绩 {{item.maxScore?item.maxScore:0}}</p>-->
|
|
|
|
|
- <!--</div>-->
|
|
|
|
|
- <!--</div>-->
|
|
|
|
|
- <!--</div>-->
|
|
|
|
|
|
|
+ <!--任务卡列表-->
|
|
|
|
|
+ <div class="year-card-box for-max-big-box">
|
|
|
|
|
+ <div class="year-card-top-title-box">
|
|
|
|
|
+ <p>学习考试任务</p>
|
|
|
|
|
+ <p>待完成的学习任务</p>
|
|
|
|
|
+ </div>
|
|
|
|
|
+ <div class="bottom-content-box scrollbar-box">
|
|
|
|
|
+ <p class="null-p" v-if="!dataList2[0]">暂无数据</p>
|
|
|
|
|
+ <div class="bottom-big-box-5" v-for="(item,index) in dataList2" @click="tableButton(item.conditionType,item)">
|
|
|
|
|
+ <p class="text-name-p">{{item.examName}}</p>
|
|
|
|
|
+ <div class="text-flex-box" v-if="item.conditionType == 1">
|
|
|
|
|
+ <p>考前学习</p>
|
|
|
|
|
+ <p>{{item.completedStudyHours}} / {{item.studyHoursRequirement}} 学时</p>
|
|
|
|
|
+ </div>
|
|
|
|
|
+ <div class="text-flex-box" v-if="item.conditionType == 2">
|
|
|
|
|
+ <p>考前学习</p>
|
|
|
|
|
+ <p>未完成</p>
|
|
|
|
|
+ </div>
|
|
|
|
|
+ <div class="text-flex-box" v-if="item.conditionType == 3">
|
|
|
|
|
+ <p>模拟考试</p>
|
|
|
|
|
+ <p>未完成</p>
|
|
|
|
|
+ </div>
|
|
|
|
|
+ <div class="text-flex-box" v-if="item.examKind==1&&item.conditionType == 4">
|
|
|
|
|
+ <p>在线考试</p>
|
|
|
|
|
+ <p>
|
|
|
|
|
+ <span :class="!item.isPassed&&item.attemptCount==0?'color-A':(!item.isPassed&&item.attemptCount>0?'color-B':(item.isPassed?'color-C':''))">{{!item.isPassed&&item.attemptCount==0?'未开始':(!item.isPassed&&item.attemptCount>0?'未通过':(item.isPassed?'已通过':''))}}</span>
|
|
|
|
|
+ <span style="margin-left:20px;">{{item.attemptCount>0?'成绩:'+item.maxScore+'分':''}}</span>
|
|
|
|
|
+ </p>
|
|
|
|
|
+ </div>
|
|
|
|
|
+ <div class="text-flex-box" v-if="item.examKind==2&&item.conditionType == 4">
|
|
|
|
|
+ <p>补考</p>
|
|
|
|
|
+ <p>未完成</p>
|
|
|
|
|
+ </div>
|
|
|
|
|
+ <p class="time-p">{{parseTime(item.startTime,"{y}-{m}-{d} {h}:{i}")}} 至 {{parseTime(item.endTime,"{y}-{m}-{d} {h}:{i}")}}</p>
|
|
|
|
|
+ </div>
|
|
|
|
|
+ </div>
|
|
|
|
|
+ </div>
|
|
|
|
|
+ <!--模拟练习卡-->
|
|
|
|
|
+ <div class="examination-card-box for-max-big-box">
|
|
|
|
|
+ <div class="year-card-top-title-box">
|
|
|
|
|
+ <p>模拟练习</p>
|
|
|
|
|
+ <p>刷题进度和正确率</p>
|
|
|
|
|
+ </div>
|
|
|
|
|
+ <div class="bottom-content-box scrollbar-box" style="cursor: pointer;" @click="goPracticeQuestions()">
|
|
|
|
|
+ <div class="bottom-big-box-6">
|
|
|
|
|
+ <p>{{summaryData.completedCount}} / {{summaryData.totalCount}}</p>
|
|
|
|
|
+ <p >已完成题目数 / 题库总数</p>
|
|
|
|
|
+ </div>
|
|
|
|
|
+ <div class="bottom-big-box-6">
|
|
|
|
|
+ <p>{{summaryData.correctRate}}%</p>
|
|
|
|
|
+ <p >当前模拟练习正确率</p>
|
|
|
|
|
+ </div>
|
|
|
|
|
+ </div>
|
|
|
|
|
+ </div>
|
|
|
<!--在线任务卡-->
|
|
<!--在线任务卡-->
|
|
|
<div class="for-max-big-box" v-for="(item,index) in dataList" :key="index">
|
|
<div class="for-max-big-box" v-for="(item,index) in dataList" :key="index">
|
|
|
<div class="year-card-top-title-box">
|
|
<div class="year-card-top-title-box">
|
|
|
- <p>{{item.examTypeName}}</p>
|
|
|
|
|
|
|
+ <p>{{item.examName}}</p>
|
|
|
<p v-if="item.examKind==1&&item.conditionType != 4">满足前置条件后可参加考试</p>
|
|
<p v-if="item.examKind==1&&item.conditionType != 4">满足前置条件后可参加考试</p>
|
|
|
<p v-if="item.examKind==1&&item.conditionType == 4">
|
|
<p v-if="item.examKind==1&&item.conditionType == 4">
|
|
|
- <span :class="!item.isPassed&&item.maxScore==0?'color-A':(!item.isPassed&&item.maxScore>0?'color-B':(item.isPassed?'color-C':''))">{{!item.isPassed&&item.maxScore==0?'未开始':(!item.isPassed&&item.maxScore>0?'未通过':(item.isPassed?'已通过':''))}}</span>
|
|
|
|
|
- <span style="margin-left:20px;">{{item.maxScore>0?'成绩:'+item.maxScore+'分':''}}</span>
|
|
|
|
|
|
|
+ <span>{{parseTime(item.startTime,"{y}-{m}-{d} {h}:{i}")}} 至 {{parseTime(item.endTime,"{y}-{m}-{d} {h}:{i}")}}</span>
|
|
|
|
|
+ </p>
|
|
|
|
|
+ <p v-if="item.examKind==1&&item.conditionType == 4">
|
|
|
|
|
+ <span :class="!item.isPassed&&item.attemptCount==0?'color-A':(!item.isPassed&&item.attemptCount>0?'color-B':(item.isPassed?'color-C':''))">{{!item.isPassed&&item.attemptCount==0?'未考试':(!item.isPassed&&item.attemptCount>0?'未通过':(item.isPassed?'已通过':''))}}</span>
|
|
|
|
|
+ <span v-if="item.maxScore>0" style="margin-left:15px;">{{item.attemptCount>0?'成绩:'+item.maxScore+'分':''}}</span>
|
|
|
</p>
|
|
</p>
|
|
|
</div>
|
|
</div>
|
|
|
<div class="bottom-content-box scrollbar-box">
|
|
<div class="bottom-content-box scrollbar-box">
|
|
|
<div class="bottom-big-box-4">
|
|
<div class="bottom-big-box-4">
|
|
|
<p :class="item.completedStudyHours<item.studyHoursRequirement?'text-name':''">学时要求</p>
|
|
<p :class="item.completedStudyHours<item.studyHoursRequirement?'text-name':''">学时要求</p>
|
|
|
<p class="colorA" v-if="item.needStudy" @click="tableButton(1,item)">开始学习</p>
|
|
<p class="colorA" v-if="item.needStudy" @click="tableButton(1,item)">开始学习</p>
|
|
|
- <p class="position-p-1" v-if="item.completedStudyHours<item.studyHoursRequirement">{{item.completedStudyHours}} / {{item.studyHoursRequirement}}</p>
|
|
|
|
|
|
|
+ <p class="position-p-1" v-if="item.completedStudyHours<item.studyHoursRequirement">{{item.completedStudyHours}} / {{item.studyHoursRequirement}} 学时</p>
|
|
|
<p class="text-type" v-if="item.completedStudyHours>=item.studyHoursRequirement">已达标</p>
|
|
<p class="text-type" v-if="item.completedStudyHours>=item.studyHoursRequirement">已达标</p>
|
|
|
</div>
|
|
</div>
|
|
|
<div class="bottom-big-box-4" v-if="item.examStudy">
|
|
<div class="bottom-big-box-4" v-if="item.examStudy">
|
|
@@ -75,7 +103,7 @@
|
|
|
<p class="colorC" v-if="item.examStudy">待完成学习任务后解锁</p>
|
|
<p class="colorC" v-if="item.examStudy">待完成学习任务后解锁</p>
|
|
|
</div>
|
|
</div>
|
|
|
<div class="bottom-big-box-4">
|
|
<div class="bottom-big-box-4">
|
|
|
- <p>考试状态</p>
|
|
|
|
|
|
|
+ <p>在线考试</p>
|
|
|
<p class="colorA" v-if="item.examKind==1&&item.conditionType == 4" @click="tableButton(4,item)">开始考试</p>
|
|
<p class="colorA" v-if="item.examKind==1&&item.conditionType == 4" @click="tableButton(4,item)">开始考试</p>
|
|
|
<p class="colorC" v-if="item.examKind==1&&item.conditionType != 4">待通过模拟考试后解锁</p>
|
|
<p class="colorC" v-if="item.examKind==1&&item.conditionType != 4">待通过模拟考试后解锁</p>
|
|
|
<p class="colorB" v-if="item.examKind==2">考试未通过</p>
|
|
<p class="colorB" v-if="item.examKind==2">考试未通过</p>
|
|
@@ -87,6 +115,24 @@
|
|
|
</div>
|
|
</div>
|
|
|
</div>
|
|
</div>
|
|
|
</div>
|
|
</div>
|
|
|
|
|
+ <el-dialog class="preExam-dialog"
|
|
|
|
|
+ :modal-append-to-body="false"
|
|
|
|
|
+ :close-on-click-modal="false" :close-on-press-escape="false"
|
|
|
|
|
+ title="考试承诺书"
|
|
|
|
|
+ :visible.sync="preExamDialogType"
|
|
|
|
|
+ v-if="preExamDialogType"
|
|
|
|
|
+ width="840px"
|
|
|
|
|
+ append-to-body>
|
|
|
|
|
+ <div style="height:600px;" class="scrollbar-box">
|
|
|
|
|
+ <richTextPdf ref="richTextPdf" :content="richTextHtml" />
|
|
|
|
|
+ </div>
|
|
|
|
|
+ <div slot="footer" class="dialog-footer dialog-footer-box">
|
|
|
|
|
+ <p class="dialog-footer-button-null"></p>
|
|
|
|
|
+ <p class="dialog-footer-button-border" v-if="preButtonType" @click="preExamDialogCancel">下载</p>
|
|
|
|
|
+ <p class="dialog-footer-button-primary" @click="examUserExamStart">确认</p>
|
|
|
|
|
+ <p class="dialog-footer-button-null"></p>
|
|
|
|
|
+ </div>
|
|
|
|
|
+ </el-dialog>
|
|
|
</div>
|
|
</div>
|
|
|
</template>
|
|
</template>
|
|
|
|
|
|
|
@@ -94,10 +140,13 @@
|
|
|
import { Encrypt,Decrypt} from '@/utils/secret'
|
|
import { Encrypt,Decrypt} from '@/utils/secret'
|
|
|
import {
|
|
import {
|
|
|
examUserCoursewareLearningRestart,examElLabEduRelationAcademicYearProgress,
|
|
examUserCoursewareLearningRestart,examElLabEduRelationAcademicYearProgress,
|
|
|
- examUserCourseLearningList,examUserExamMockList,examUserExamList,examUserExamStart,
|
|
|
|
|
|
|
+ examUserExamStudyTaskList,examUserExamStart,examUserPracticeSummary,
|
|
|
|
|
+ examUserExamCommitmentConfirm,
|
|
|
} from "@/api/safetyEducationExaminationNew/index";
|
|
} from "@/api/safetyEducationExaminationNew/index";
|
|
|
|
|
+ import richTextPdf from '@/views/safetyEducationExaminationNew/components/richTextPdf.vue';
|
|
|
export default {
|
|
export default {
|
|
|
name: 'TaskCard',
|
|
name: 'TaskCard',
|
|
|
|
|
+ components: { richTextPdf },
|
|
|
data() {
|
|
data() {
|
|
|
return {
|
|
return {
|
|
|
//学年数据
|
|
//学年数据
|
|
@@ -106,6 +155,17 @@ export default {
|
|
|
studyMinList:[],
|
|
studyMinList:[],
|
|
|
examinationMinList:[],
|
|
examinationMinList:[],
|
|
|
dataList:[],
|
|
dataList:[],
|
|
|
|
|
+ dataList2:[],
|
|
|
|
|
+ summaryData:{
|
|
|
|
|
+ totalCount:0,
|
|
|
|
|
+ completedCount:0,
|
|
|
|
|
+ correctRate:0,
|
|
|
|
|
+ },
|
|
|
|
|
+ //考前承诺相关
|
|
|
|
|
+ preExamDialogType:false,
|
|
|
|
|
+ preButtonType:false,
|
|
|
|
|
+ richTextHtml: '',
|
|
|
|
|
+ preData:null,
|
|
|
}
|
|
}
|
|
|
},
|
|
},
|
|
|
created() {
|
|
created() {
|
|
@@ -116,88 +176,81 @@ export default {
|
|
|
},
|
|
},
|
|
|
methods: {
|
|
methods: {
|
|
|
initialization(){
|
|
initialization(){
|
|
|
|
|
+ this.examUserPracticeSummary();
|
|
|
this.examElLabEduRelationAcademicYearProgress();
|
|
this.examElLabEduRelationAcademicYearProgress();
|
|
|
- // this.examUserCourseLearningList();
|
|
|
|
|
- // this.examUserExamMockList();
|
|
|
|
|
- this.examUserExamList();
|
|
|
|
|
|
|
+ this.examUserExamStudyTaskList();
|
|
|
|
|
+ this.examUserExamStudyTaskList2();
|
|
|
},
|
|
},
|
|
|
- //学习任务
|
|
|
|
|
- studyTableButton(item){
|
|
|
|
|
- let self = this;
|
|
|
|
|
- if(item.conditionType == 1){
|
|
|
|
|
- this.$confirm('还未达到学时要求,是否现在去学习?', "提示", {
|
|
|
|
|
- confirmButtonText: "确认",
|
|
|
|
|
- cancelButtonText: "取消",
|
|
|
|
|
- type: "warning"
|
|
|
|
|
- }).then(function() {
|
|
|
|
|
- }).then(() => {
|
|
|
|
|
- //学时要求
|
|
|
|
|
- self.$router.push({
|
|
|
|
|
- name: 'knowledgeLearning',
|
|
|
|
|
- params: {}
|
|
|
|
|
- })
|
|
|
|
|
- }).catch(() => {});
|
|
|
|
|
|
|
+ //下载承诺书
|
|
|
|
|
+ preExamDialogCancel(){
|
|
|
|
|
+ this.msgSuccess('正在下载,请耐心等候')
|
|
|
|
|
+ this.$refs['richTextPdf'].downloadPDF();
|
|
|
|
|
+ },
|
|
|
|
|
+ //确认承诺-并考试
|
|
|
|
|
+ examUserExamStart(){
|
|
|
|
|
+ if(this.preData.attemptId){
|
|
|
|
|
+ this.examUserExamCommitmentConfirm(1,this.preData.attemptId);
|
|
|
}else{
|
|
}else{
|
|
|
- //学习课程
|
|
|
|
|
- this.$router.push({
|
|
|
|
|
- name: 'learningCourse',
|
|
|
|
|
- params: {
|
|
|
|
|
- courseId: item.courseId,
|
|
|
|
|
- examId: item.examId,
|
|
|
|
|
|
|
+ examUserExamStart({examId:this.preData.examId,examScene:1,}).then(response => {
|
|
|
|
|
+ if(response.data.attemptId){
|
|
|
|
|
+ this.examUserExamCommitmentConfirm(2,response.data.attemptId);
|
|
|
|
|
+ }else{
|
|
|
|
|
+ this.msgError(response.message)
|
|
|
}
|
|
}
|
|
|
})
|
|
})
|
|
|
}
|
|
}
|
|
|
},
|
|
},
|
|
|
- //模拟考试
|
|
|
|
|
- mockTableButton(item){
|
|
|
|
|
- let self = this;
|
|
|
|
|
- if(item.conditionType == 1){
|
|
|
|
|
- this.$confirm('完成学时要求后解锁,是否现在去学习?', "提示", {
|
|
|
|
|
- confirmButtonText: "确认",
|
|
|
|
|
- cancelButtonText: "取消",
|
|
|
|
|
- type: "warning"
|
|
|
|
|
- }).then(function() {
|
|
|
|
|
- }).then(() => {
|
|
|
|
|
- //学时要求
|
|
|
|
|
- self.$router.push({
|
|
|
|
|
- name: 'knowledgeLearning',
|
|
|
|
|
- params: {}
|
|
|
|
|
|
|
+ examUserExamCommitmentConfirm(type,attemptId){
|
|
|
|
|
+ examUserExamCommitmentConfirm({attemptId:attemptId}).then(response => {
|
|
|
|
|
+ if(type == 1){
|
|
|
|
|
+ this.$router.push({
|
|
|
|
|
+ path: '/startTheExam',
|
|
|
|
|
+ query: {
|
|
|
|
|
+ attemptId: attemptId,
|
|
|
|
|
+ type: '1',
|
|
|
|
|
+ examKind:this.preData.examKind,
|
|
|
|
|
+ }
|
|
|
})
|
|
})
|
|
|
- }).catch(() => {});
|
|
|
|
|
- }else if(item.conditionType == 2){
|
|
|
|
|
- this.$confirm('完成考前课程学习后解锁,是否现在去学习?', "提示", {
|
|
|
|
|
- confirmButtonText: "确认",
|
|
|
|
|
- cancelButtonText: "取消",
|
|
|
|
|
- type: "warning"
|
|
|
|
|
- }).then(function() {
|
|
|
|
|
- }).then(() => {
|
|
|
|
|
- //学习课程
|
|
|
|
|
- self.$router.push({
|
|
|
|
|
- name: 'learningCourse',
|
|
|
|
|
- params: {
|
|
|
|
|
- courseId: item.courseId,
|
|
|
|
|
- examId: item.examId,
|
|
|
|
|
|
|
+ }else if(type == 2){
|
|
|
|
|
+ this.$router.push({
|
|
|
|
|
+ path: '/startTheExam',
|
|
|
|
|
+ query: {
|
|
|
|
|
+ examId: this.preData.examId,
|
|
|
|
|
+ attemptId: attemptId,
|
|
|
|
|
+ type: '1',
|
|
|
|
|
+ examKind:this.preData.examKind,
|
|
|
}
|
|
}
|
|
|
})
|
|
})
|
|
|
- }).catch(() => {});
|
|
|
|
|
|
|
+ }
|
|
|
|
|
+ })
|
|
|
|
|
+ },
|
|
|
|
|
+ //开始考试判断是否有承诺书
|
|
|
|
|
+ setRichExamData(item){
|
|
|
|
|
+ if(item.commitmentEnabled == 1 && !item.commitmentConfirmed){
|
|
|
|
|
+ this.$set(this,'preButtonType',item.commitmentPrintEnabled == 1?true:false);
|
|
|
|
|
+ this.$set(this,'richTextHtml',item.commitmentContent);
|
|
|
|
|
+ this.$set(this,'preData',item);
|
|
|
|
|
+ this.$set(this,'preExamDialogType',true);
|
|
|
}else{
|
|
}else{
|
|
|
- //模拟考试
|
|
|
|
|
if(item.attemptId){
|
|
if(item.attemptId){
|
|
|
this.$router.push({
|
|
this.$router.push({
|
|
|
- name: 'mockExam',
|
|
|
|
|
- params: {
|
|
|
|
|
- examId: item.examId,
|
|
|
|
|
|
|
+ path: '/startTheExam',
|
|
|
|
|
+ query: {
|
|
|
attemptId: item.attemptId,
|
|
attemptId: item.attemptId,
|
|
|
|
|
+ type: '1',
|
|
|
|
|
+ examKind:item.examKind,
|
|
|
}
|
|
}
|
|
|
})
|
|
})
|
|
|
}else{
|
|
}else{
|
|
|
- examUserExamStart({examId:item.examId,examScene:2,}).then(response => {
|
|
|
|
|
|
|
+ examUserExamStart({examId:item.examId,examScene:1,}).then(response => {
|
|
|
if(response.data.attemptId){
|
|
if(response.data.attemptId){
|
|
|
this.$router.push({
|
|
this.$router.push({
|
|
|
- name: 'mockExam',
|
|
|
|
|
- params: {
|
|
|
|
|
|
|
+ path: '/startTheExam',
|
|
|
|
|
+ query: {
|
|
|
examId: item.examId,
|
|
examId: item.examId,
|
|
|
attemptId: response.data.attemptId,
|
|
attemptId: response.data.attemptId,
|
|
|
|
|
+ type: '1',
|
|
|
|
|
+ examKind:item.examKind,
|
|
|
}
|
|
}
|
|
|
})
|
|
})
|
|
|
}else{
|
|
}else{
|
|
@@ -207,6 +260,13 @@ export default {
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
},
|
|
},
|
|
|
|
|
+ //跳转刷题练习
|
|
|
|
|
+ goPracticeQuestions(){
|
|
|
|
|
+ this.$router.push({
|
|
|
|
|
+ path: '/safetyEducationExaminationNew/safetyTest/practiceQuestions',
|
|
|
|
|
+ query: {}
|
|
|
|
|
+ })
|
|
|
|
|
+ },
|
|
|
//考试跳转
|
|
//考试跳转
|
|
|
tableButton(type,item){
|
|
tableButton(type,item){
|
|
|
let self = this;
|
|
let self = this;
|
|
@@ -228,8 +288,8 @@ export default {
|
|
|
}else if(type == 2){
|
|
}else if(type == 2){
|
|
|
//学习课程
|
|
//学习课程
|
|
|
this.$router.push({
|
|
this.$router.push({
|
|
|
- name: 'learningCourse',
|
|
|
|
|
- params: {
|
|
|
|
|
|
|
+ path: '/learningCourse',
|
|
|
|
|
+ query: {
|
|
|
courseId: item.courseId,
|
|
courseId: item.courseId,
|
|
|
examId: item.examId,
|
|
examId: item.examId,
|
|
|
}
|
|
}
|
|
@@ -238,8 +298,8 @@ export default {
|
|
|
//模拟考试
|
|
//模拟考试
|
|
|
if(item.mockExamId){
|
|
if(item.mockExamId){
|
|
|
this.$router.push({
|
|
this.$router.push({
|
|
|
- name: 'mockExam',
|
|
|
|
|
- params: {
|
|
|
|
|
|
|
+ path: '/mockExam',
|
|
|
|
|
+ query: {
|
|
|
examId: item.examId,
|
|
examId: item.examId,
|
|
|
attemptId: item.mockExamId,
|
|
attemptId: item.mockExamId,
|
|
|
}
|
|
}
|
|
@@ -248,8 +308,8 @@ export default {
|
|
|
examUserExamStart({examId:item.examId,examScene:2,}).then(response => {
|
|
examUserExamStart({examId:item.examId,examScene:2,}).then(response => {
|
|
|
if(response.data.attemptId){
|
|
if(response.data.attemptId){
|
|
|
this.$router.push({
|
|
this.$router.push({
|
|
|
- name: 'mockExam',
|
|
|
|
|
- params: {
|
|
|
|
|
|
|
+ path: '/mockExam',
|
|
|
|
|
+ query: {
|
|
|
examId: item.examId,
|
|
examId: item.examId,
|
|
|
attemptId: response.data.attemptId,
|
|
attemptId: response.data.attemptId,
|
|
|
}
|
|
}
|
|
@@ -261,32 +321,7 @@ export default {
|
|
|
}
|
|
}
|
|
|
}else if(type == 4){
|
|
}else if(type == 4){
|
|
|
//在线考试//补考
|
|
//在线考试//补考
|
|
|
- if(item.attemptId){
|
|
|
|
|
- this.$router.push({
|
|
|
|
|
- name: 'startTheExam',
|
|
|
|
|
- params: {
|
|
|
|
|
- attemptId: item.attemptId,
|
|
|
|
|
- type: '1',
|
|
|
|
|
- examKind:item.examKind,
|
|
|
|
|
- }
|
|
|
|
|
- })
|
|
|
|
|
- }else{
|
|
|
|
|
- examUserExamStart({examId:item.examId,examScene:1,}).then(response => {
|
|
|
|
|
- if(response.data.attemptId){
|
|
|
|
|
- this.$router.push({
|
|
|
|
|
- name: 'startTheExam',
|
|
|
|
|
- params: {
|
|
|
|
|
- examId: item.examId,
|
|
|
|
|
- attemptId: response.data.attemptId,
|
|
|
|
|
- type: '1',
|
|
|
|
|
- examKind:item.examKind,
|
|
|
|
|
- }
|
|
|
|
|
- })
|
|
|
|
|
- }else{
|
|
|
|
|
- this.msgError(response.message)
|
|
|
|
|
- }
|
|
|
|
|
- })
|
|
|
|
|
- }
|
|
|
|
|
|
|
+ this.setRichExamData(item);
|
|
|
}
|
|
}
|
|
|
},
|
|
},
|
|
|
//查询学年进度列表
|
|
//查询学年进度列表
|
|
@@ -295,36 +330,34 @@ export default {
|
|
|
this.$set(this, 'yearMinList', response.data)
|
|
this.$set(this, 'yearMinList', response.data)
|
|
|
})
|
|
})
|
|
|
},
|
|
},
|
|
|
- //学习任务
|
|
|
|
|
- examUserCourseLearningList(){
|
|
|
|
|
- let obj = {
|
|
|
|
|
- page:1,
|
|
|
|
|
- pageSize:20,
|
|
|
|
|
- }
|
|
|
|
|
- examUserCourseLearningList(obj).then(response => {
|
|
|
|
|
- this.$set(this, 'studyMinList', response.data.records)
|
|
|
|
|
- })
|
|
|
|
|
- },
|
|
|
|
|
- //模拟考试
|
|
|
|
|
- examUserExamMockList(){
|
|
|
|
|
|
|
+ //特殊考试
|
|
|
|
|
+ examUserExamStudyTaskList(){
|
|
|
let obj = {
|
|
let obj = {
|
|
|
page:1,
|
|
page:1,
|
|
|
- pageSize:20,
|
|
|
|
|
|
|
+ pageSize:5,
|
|
|
examStatus:2,
|
|
examStatus:2,
|
|
|
|
|
+ isSpecialExam:true,
|
|
|
}
|
|
}
|
|
|
- examUserExamMockList(obj).then(response => {
|
|
|
|
|
- this.$set(this, 'examinationMinList', response.data.records)
|
|
|
|
|
|
|
+ examUserExamStudyTaskList(obj).then(response => {
|
|
|
|
|
+ this.$set(this, 'dataList', response.data.records)
|
|
|
})
|
|
})
|
|
|
},
|
|
},
|
|
|
//在线考试
|
|
//在线考试
|
|
|
- examUserExamList(){
|
|
|
|
|
|
|
+ examUserExamStudyTaskList2(){
|
|
|
let obj = {
|
|
let obj = {
|
|
|
page:1,
|
|
page:1,
|
|
|
pageSize:5,
|
|
pageSize:5,
|
|
|
examStatus:2,
|
|
examStatus:2,
|
|
|
|
|
+ isSpecialExam:false,
|
|
|
}
|
|
}
|
|
|
- examUserExamList(obj).then(response => {
|
|
|
|
|
- this.$set(this, 'dataList', response.data.records)
|
|
|
|
|
|
|
+ examUserExamStudyTaskList(obj).then(response => {
|
|
|
|
|
+ this.$set(this, 'dataList2', response.data.records)
|
|
|
|
|
+ })
|
|
|
|
|
+ },
|
|
|
|
|
+ //在线考试
|
|
|
|
|
+ examUserPracticeSummary(){
|
|
|
|
|
+ examUserPracticeSummary({}).then(response => {
|
|
|
|
|
+ this.$set(this, 'summaryData', response.data)
|
|
|
})
|
|
})
|
|
|
},
|
|
},
|
|
|
},
|
|
},
|
|
@@ -334,10 +367,14 @@ export default {
|
|
|
<style scoped lang="scss">
|
|
<style scoped lang="scss">
|
|
|
.task-card {
|
|
.task-card {
|
|
|
background: #fff;
|
|
background: #fff;
|
|
|
- border-radius: 6px;
|
|
|
|
|
|
|
+ /*border-radius: 6px;*/
|
|
|
padding: 16px 0 0 0;
|
|
padding: 16px 0 0 0;
|
|
|
margin-bottom: 12px;
|
|
margin-bottom: 12px;
|
|
|
- box-shadow: 0 1px 4px rgba(0,0,0,0.06);
|
|
|
|
|
|
|
+ /*box-shadow: 0 1px 4px rgba(0,0,0,0.06);*/
|
|
|
|
|
+ background: rgba(255, 255, 255, 0.95);
|
|
|
|
|
+ border: 1px solid #e8edf5;
|
|
|
|
|
+ border-radius: 16px;
|
|
|
|
|
+ box-shadow: 0 4px 20px rgba(37, 50, 74, 0.06);
|
|
|
.top-title-box{
|
|
.top-title-box{
|
|
|
display: flex;
|
|
display: flex;
|
|
|
flex-direction: column;
|
|
flex-direction: column;
|
|
@@ -371,12 +408,15 @@ export default {
|
|
|
.for-max-big-box{
|
|
.for-max-big-box{
|
|
|
display: inline-block;
|
|
display: inline-block;
|
|
|
width:360px;
|
|
width:360px;
|
|
|
- height:240px;
|
|
|
|
|
|
|
+ height:300px;
|
|
|
margin: 0 0 20px 20px;
|
|
margin: 0 0 20px 20px;
|
|
|
- border-radius:6px;
|
|
|
|
|
- border:1px solid #dedede;
|
|
|
|
|
- box-shadow: 0 0 15px rgba(0, 0, 0, 0.2);
|
|
|
|
|
|
|
+ /*border-radius:6px;*/
|
|
|
|
|
+ /*border:1px solid #dedede;*/
|
|
|
|
|
+ /*box-shadow: 0 0 15px rgba(0, 0, 0, 0.2);*/
|
|
|
overflow: hidden;
|
|
overflow: hidden;
|
|
|
|
|
+ background: linear-gradient(180deg, #fff, #f7faff);
|
|
|
|
|
+ border: 1px solid #eaf0f8;
|
|
|
|
|
+ border-radius: 14px;
|
|
|
.year-card-top-title-box{
|
|
.year-card-top-title-box{
|
|
|
padding:20px 20px 0 20px;
|
|
padding:20px 20px 0 20px;
|
|
|
position: relative;
|
|
position: relative;
|
|
@@ -390,19 +430,18 @@ export default {
|
|
|
font-size:14px;
|
|
font-size:14px;
|
|
|
line-height:20px;
|
|
line-height:20px;
|
|
|
margin-top:6px;
|
|
margin-top:6px;
|
|
|
|
|
+ color:#60708a;
|
|
|
|
|
|
|
|
}
|
|
}
|
|
|
p:nth-child(3){
|
|
p:nth-child(3){
|
|
|
cursor: pointer;
|
|
cursor: pointer;
|
|
|
font-size:14px;
|
|
font-size:14px;
|
|
|
line-height:30px;
|
|
line-height:30px;
|
|
|
- background-color: #0183fa;
|
|
|
|
|
- color:#fff;
|
|
|
|
|
- border-radius:6px;
|
|
|
|
|
|
|
+ color:#60708a;
|
|
|
|
|
+ text-align: right;
|
|
|
position: absolute;
|
|
position: absolute;
|
|
|
top:10px;
|
|
top:10px;
|
|
|
- right:10px;
|
|
|
|
|
- padding:0 10px;
|
|
|
|
|
|
|
+ right:20px;
|
|
|
}
|
|
}
|
|
|
.color-A{
|
|
.color-A{
|
|
|
color:#999;
|
|
color:#999;
|
|
@@ -415,7 +454,7 @@ export default {
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
.bottom-content-box{
|
|
.bottom-content-box{
|
|
|
- height:168px;
|
|
|
|
|
|
|
+ height:208px;
|
|
|
margin-top:6px;
|
|
margin-top:6px;
|
|
|
padding:8px 14px 0 20px;
|
|
padding:8px 14px 0 20px;
|
|
|
.null-p{
|
|
.null-p{
|
|
@@ -426,11 +465,13 @@ export default {
|
|
|
}
|
|
}
|
|
|
.bottom-big-box-1{
|
|
.bottom-big-box-1{
|
|
|
display: flex;
|
|
display: flex;
|
|
|
- background-color: rgba(1, 131, 250, 0.1);
|
|
|
|
|
|
|
+ /*background-color: rgba(1, 131, 250, 0.1);*/
|
|
|
border-radius:6px;
|
|
border-radius:6px;
|
|
|
padding:12px 14px;
|
|
padding:12px 14px;
|
|
|
margin-bottom:12px;
|
|
margin-bottom:12px;
|
|
|
height:68px;
|
|
height:68px;
|
|
|
|
|
+ border: 1px solid #e5edf8;
|
|
|
|
|
+ background-color: #fff;
|
|
|
p{
|
|
p{
|
|
|
font-size:14px;
|
|
font-size:14px;
|
|
|
line-height:44px;
|
|
line-height:44px;
|
|
@@ -446,12 +487,14 @@ export default {
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
.bottom-big-box-2{
|
|
.bottom-big-box-2{
|
|
|
- background-color: rgba(1, 131, 250, 0.1);
|
|
|
|
|
|
|
+ /*background-color: rgba(1, 131, 250, 0.1);*/
|
|
|
border-radius:6px;
|
|
border-radius:6px;
|
|
|
padding:12px 14px;
|
|
padding:12px 14px;
|
|
|
margin-bottom:12px;
|
|
margin-bottom:12px;
|
|
|
height:68px;
|
|
height:68px;
|
|
|
cursor: pointer;
|
|
cursor: pointer;
|
|
|
|
|
+ border: 1px solid #e5edf8;
|
|
|
|
|
+ background-color: #fff;
|
|
|
p{
|
|
p{
|
|
|
font-size:14px;
|
|
font-size:14px;
|
|
|
line-height:22px;
|
|
line-height:22px;
|
|
@@ -462,12 +505,14 @@ export default {
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
.bottom-big-box-3{
|
|
.bottom-big-box-3{
|
|
|
- background-color: rgba(1, 131, 250, 0.1);
|
|
|
|
|
|
|
+ /*background-color: rgba(1, 131, 250, 0.1);*/
|
|
|
border-radius:6px;
|
|
border-radius:6px;
|
|
|
padding:12px 14px;
|
|
padding:12px 14px;
|
|
|
margin-bottom:12px;
|
|
margin-bottom:12px;
|
|
|
height:68px;
|
|
height:68px;
|
|
|
cursor: pointer;
|
|
cursor: pointer;
|
|
|
|
|
+ border: 1px solid #e5edf8;
|
|
|
|
|
+ background-color: #fff;
|
|
|
p{
|
|
p{
|
|
|
font-size:14px;
|
|
font-size:14px;
|
|
|
line-height:22px;
|
|
line-height:22px;
|
|
@@ -478,13 +523,15 @@ export default {
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
.bottom-big-box-4{
|
|
.bottom-big-box-4{
|
|
|
- background-color: rgba(1, 131, 250, 0.1);
|
|
|
|
|
|
|
+ /*background-color: rgba(1, 131, 250, 0.1);*/
|
|
|
border-radius:6px;
|
|
border-radius:6px;
|
|
|
padding:12px 14px;
|
|
padding:12px 14px;
|
|
|
margin-bottom:12px;
|
|
margin-bottom:12px;
|
|
|
height:68px;
|
|
height:68px;
|
|
|
display: flex;
|
|
display: flex;
|
|
|
position: relative;
|
|
position: relative;
|
|
|
|
|
+ border: 1px solid #e5edf8;
|
|
|
|
|
+ background-color: #fff;
|
|
|
p{
|
|
p{
|
|
|
font-size:14px;
|
|
font-size:14px;
|
|
|
line-height:44px;
|
|
line-height:44px;
|
|
@@ -504,14 +551,15 @@ export default {
|
|
|
color:#D9001B;
|
|
color:#D9001B;
|
|
|
}
|
|
}
|
|
|
.colorC{
|
|
.colorC{
|
|
|
- color:#999;
|
|
|
|
|
|
|
+ color:#60708a;
|
|
|
}
|
|
}
|
|
|
.position-p-1{
|
|
.position-p-1{
|
|
|
position: absolute;
|
|
position: absolute;
|
|
|
bottom:0;
|
|
bottom:0;
|
|
|
- left:10px;
|
|
|
|
|
- width: 60px;
|
|
|
|
|
- text-align: center!important;
|
|
|
|
|
|
|
+ left:15px;
|
|
|
|
|
+ width: 120px;
|
|
|
|
|
+ font-size:12px;
|
|
|
|
|
+ color:#60708a;
|
|
|
}
|
|
}
|
|
|
.text-name{
|
|
.text-name{
|
|
|
margin-top:-10px;
|
|
margin-top:-10px;
|
|
@@ -520,6 +568,72 @@ export default {
|
|
|
color: #4fbe7e;
|
|
color: #4fbe7e;
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
|
|
+ .bottom-big-box-5{
|
|
|
|
|
+ /*background-color: rgba(1, 131, 250, 0.1);*/
|
|
|
|
|
+ border-radius:6px;
|
|
|
|
|
+ padding:8px 14px;
|
|
|
|
|
+ margin-bottom:12px;
|
|
|
|
|
+ height:76px;
|
|
|
|
|
+ position: relative;
|
|
|
|
|
+ border: 1px solid #e5edf8;
|
|
|
|
|
+ background-color: #fff;
|
|
|
|
|
+ cursor: pointer;
|
|
|
|
|
+ .text-name-p{
|
|
|
|
|
+ font-size:14px;
|
|
|
|
|
+ font-weight:700;
|
|
|
|
|
+ line-height:20px;
|
|
|
|
|
+ }
|
|
|
|
|
+ .text-flex-box{
|
|
|
|
|
+ display: flex;
|
|
|
|
|
+ color:#60708a;
|
|
|
|
|
+ p{
|
|
|
|
|
+ font-size:14px;
|
|
|
|
|
+ line-height:20px;
|
|
|
|
|
+ }
|
|
|
|
|
+ p:nth-child(1){
|
|
|
|
|
+ margin-right:20px;
|
|
|
|
|
+ }
|
|
|
|
|
+ p:nth-child(2){
|
|
|
|
|
+ color:#60708a;
|
|
|
|
|
+ .color-A{
|
|
|
|
|
+ color:#999;
|
|
|
|
|
+ }
|
|
|
|
|
+ .color-B{
|
|
|
|
|
+ color:#f56c6c;
|
|
|
|
|
+ }
|
|
|
|
|
+ .color-C{
|
|
|
|
|
+ color:#4fbe7e;
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ .time-p{
|
|
|
|
|
+ color:#60708a;
|
|
|
|
|
+ font-size:14px;
|
|
|
|
|
+ line-height:20px;
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ .bottom-big-box-6{
|
|
|
|
|
+ /*background-color: rgba(1, 131, 250, 0.1);*/
|
|
|
|
|
+ border-radius:6px;
|
|
|
|
|
+ padding:13px 14px;
|
|
|
|
|
+ margin-bottom:12px;
|
|
|
|
|
+ height:78px;
|
|
|
|
|
+ position: relative;
|
|
|
|
|
+ border: 1px solid #e5edf8;
|
|
|
|
|
+ background-color: #fff;
|
|
|
|
|
+ p:nth-child(1){
|
|
|
|
|
+ display: block;
|
|
|
|
|
+ font-size: 22px;
|
|
|
|
|
+ color: #25324a;
|
|
|
|
|
+ font-weight:700;
|
|
|
|
|
+ line-height:26px;
|
|
|
|
|
+ }
|
|
|
|
|
+ p:nth-child(2){
|
|
|
|
|
+ font-size:14px;
|
|
|
|
|
+ line-height:26px;
|
|
|
|
|
+ color:#60708a;
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|