|
|
|
<template>
|
|
|
|
<div>
|
|
|
|
<!-- <transition name="slide-fade" enter-active-class="animate__animated animate__bounceInLeft" leave-active-class=" animate__animated animate__bounceOutLeft"> -->
|
|
|
|
|
|
|
|
<el-container v-show="showIt" v-loading="loading">
|
|
|
|
<el-header>
|
|
|
|
<div class="flex a-center j-between">
|
|
|
|
<div class="flex a-center" style="width: 28%">
|
|
|
|
<p>实训项目</p>
|
|
|
|
<el-select v-model.trim="projectId" placeholder="请选择" class="select" disabled @change="selectProject">
|
|
|
|
<el-option v-for="item in topicList" :key="item.projectId" :label="item.projectName"
|
|
|
|
:value="item.projectId"></el-option>
|
|
|
|
</el-select>
|
|
|
|
</div>
|
|
|
|
<div class="countDownBox">
|
|
|
|
<div style="margin-left: -40px;">
|
|
|
|
<div :sendSync="sendSync" :autoStart="autoStart" :defaultVal="defaultVal">
|
|
|
|
实训{{ text }}时间
|
|
|
|
<span class="timeSpan">{{ day }}</span>天
|
|
|
|
<span class="timeSpan">{{ hour }}</span>小时
|
|
|
|
<span class="timeSpan">{{ minutes }}</span>分
|
|
|
|
<span class="timeSpan">{{ seconds }}</span>秒
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
<div class="countDownBox">
|
|
|
|
<div>
|
|
|
|
总得分:
|
|
|
|
<span class="gradeSpan">{{ grade }}</span>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
<div>
|
|
|
|
<el-button @click="toReport" v-if="popContainer">查看实验报告</el-button>
|
|
|
|
<el-button style="background: #202020;color: #d0d0d0;font-size:16px;" v-show="projectPermissions == 0"
|
|
|
|
@click="reloadConfirm"
|
|
|
|
:disabled="popContainer && (assessmentId != '' && assessmentId != 'null' && assessmentId != null)">
|
|
|
|
重新开始
|
|
|
|
</el-button>
|
|
|
|
<el-button class="submit-btn" style="margin-right:7px" @click="Submit()"
|
|
|
|
:disabled="popContainer || requires.length == 0">提交</el-button>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
</el-header>
|
|
|
|
|
|
|
|
<el-container>
|
|
|
|
<el-aside width="30%" class="flex flex-col">
|
|
|
|
<div class="aside-header">
|
|
|
|
<div class="header_h flex a-center">
|
|
|
|
<i class="el-icon-s-order"></i>
|
|
|
|
<p>实验目标</p>
|
|
|
|
</div>
|
|
|
|
<div class="font_css">
|
|
|
|
<div class="experimentalGoal">
|
|
|
|
<div class="break-all" v-html="projectManage.experimentTarget" style="font-size: 0.875rem;">
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
<div class="aside-footer flex-grow">
|
|
|
|
<div class="header_h flex a-center">
|
|
|
|
<i class="el-icon-s-management"></i>
|
|
|
|
<p>实验任务</p>
|
|
|
|
</div>
|
|
|
|
<div>
|
|
|
|
<el-row>
|
|
|
|
<el-col :span="24">
|
|
|
|
<el-card shadow="hover">
|
|
|
|
<el-table :data="requires" height="43.5vh" ref='testTable'>
|
|
|
|
<el-table-column type="index"></el-table-column>
|
|
|
|
<el-table-column prop="name" label="判分点" align="left">
|
|
|
|
</el-table-column>
|
|
|
|
<el-table-column prop="score" label="分值" width="60" align="center">
|
|
|
|
</el-table-column>
|
|
|
|
<el-table-column prop="right" label="完成结果" width="80" align="center">
|
|
|
|
<template slot-scope="scope">
|
|
|
|
<i v-if="scope.row.right == true" class="el-icon-check" style="color:green;"></i>
|
|
|
|
<i v-else-if="scope.row.right == false" class="el-icon-close" style="color:red;"></i>
|
|
|
|
</template>
|
|
|
|
</el-table-column>
|
|
|
|
<el-table-column prop="scores" label="得分" width="60" align="center"></el-table-column>
|
|
|
|
</el-table>
|
|
|
|
</el-card>
|
|
|
|
</el-col>
|
|
|
|
</el-row>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
</el-aside>
|
|
|
|
<el-main>
|
|
|
|
<el-tabs v-model.trim="activeName" type="card">
|
|
|
|
<el-tab-pane label="案例" name="first">
|
|
|
|
<div class="break-all" v-html="projectManage.experimentDescription"></div>
|
|
|
|
</el-tab-pane>
|
|
|
|
<el-tab-pane label="实验要求" name="second">
|
|
|
|
<el-collapse :value="activeNames" accordion>
|
|
|
|
<el-collapse-item v-for="(item, index) in requires" :key="index" :name="item.id">
|
|
|
|
<template slot="title" style='line-height: 0px;'>
|
|
|
|
<i class='el-icon-s-ticket'></i>
|
|
|
|
<span style="margin: 0px 10px;font-size: 1rem;">{{ item.name }}</span>
|
|
|
|
</template>
|
|
|
|
<div class="break-all" v-html="item.experimentalRequirements"></div>
|
|
|
|
</el-collapse-item>
|
|
|
|
<!-- <p ref="scrollTag" style="font-size:16px;"></p> -->
|
|
|
|
</el-collapse>
|
|
|
|
</el-tab-pane>
|
|
|
|
<el-tab-pane label="实验提示" name="fifth" v-if="hintOpen == 0">
|
|
|
|
<div class="break-all" v-html="projectManage.experimentHint"></div>
|
|
|
|
</el-tab-pane>
|
|
|
|
</el-tabs>
|
|
|
|
</el-main>
|
|
|
|
</el-container>
|
|
|
|
</el-container>
|
|
|
|
<!-- </transition> -->
|
|
|
|
<!-- </div> -->
|
|
|
|
<div class="panel" :class="{ active: showIt }">
|
|
|
|
<div @click="toggleCase">
|
|
|
|
<img src="../../assets/img/case/left.png" alt v-if="showIt" />
|
|
|
|
<img src="../../assets/img/case/right.png" alt v-else />
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
|
|
|
|
<div class='popContainer' v-if='popContainer'></div>
|
|
|
|
|
|
|
|
<!-- 遮罩层 -->
|
|
|
|
<div class="absolute z-50 h-screen bg-transparent inset-0" v-show="showIt"></div>
|
|
|
|
|
|
|
|
<el-dialog title="提示" :visible.sync="closePaneJudge" width="30%" center>
|
|
|
|
<h4 class="antialiased text-center text-2xl">请选择你将进行的操作</h4>
|
|
|
|
<span slot="footer" class="dialog-footer">
|
|
|
|
<el-button @click="closePane()">再试一次</el-button>
|
|
|
|
<!-- <el-button type="primary" @click="closePane(true)">其他业务</el-button> -->
|
|
|
|
</span>
|
|
|
|
</el-dialog>
|
|
|
|
|
|
|
|
</div>
|
|
|
|
|
|
|
|
</template>
|
|
|
|
|
|
|
|
<script>
|
|
|
|
import Cookie from 'js-cookie'
|
|
|
|
import util from '@/libs/util'
|
|
|
|
import Setting from '@/setting'
|
|
|
|
// 引入封装好的接口
|
|
|
|
import { getProjectBySystemId, getProjectDetail, submit, getQueryCache, deleteCache, checkTest, checkTest2 } from "@/api/http.js";
|
|
|
|
import { mapMutations } from 'vuex'
|
|
|
|
import { async } from 'q';
|
|
|
|
import Bus from '@/libs/bus'
|
|
|
|
export default {
|
|
|
|
props: {
|
|
|
|
sendSync: {
|
|
|
|
type: Boolean,
|
|
|
|
default: false
|
|
|
|
},
|
|
|
|
autoStart: {
|
|
|
|
type: Boolean,
|
|
|
|
default: false
|
|
|
|
},
|
|
|
|
defaultVal: {
|
|
|
|
type: Number,
|
|
|
|
default: null
|
|
|
|
},
|
|
|
|
showIt: {
|
|
|
|
type: Boolean,
|
|
|
|
required: true
|
|
|
|
}
|
|
|
|
},
|
|
|
|
data () {
|
|
|
|
return {
|
|
|
|
closePaneJudge: false,
|
|
|
|
lockIt: false,
|
|
|
|
intervalJudge: {},
|
|
|
|
systemId: Setting.systemId,
|
|
|
|
workbench: [],
|
|
|
|
test: [],
|
|
|
|
caseVisible: true,
|
|
|
|
grade: "00",
|
|
|
|
exampleData: "",
|
|
|
|
codeid: "",
|
|
|
|
judgmentPointsIds: [],
|
|
|
|
text: "",
|
|
|
|
isStart: false,
|
|
|
|
globalTimer: null, //获取setInterval对象值
|
|
|
|
millisecond: 0,
|
|
|
|
countVal: this.defaultVal, //获取初始值
|
|
|
|
pauseTime: 0,
|
|
|
|
day: '00',
|
|
|
|
seconds: '00',
|
|
|
|
minutes: '00',
|
|
|
|
hour: '00',
|
|
|
|
createTime: "", //开始时间
|
|
|
|
actEndTime: "", //倒计时结束时间
|
|
|
|
projectId: "" || sessionStorage.getItem('projectId'), //选中后绑定的对象
|
|
|
|
value: [
|
|
|
|
{ projectName: '项目1', projectId: 1 }
|
|
|
|
],
|
|
|
|
experimentalGoal: "", //实验目标
|
|
|
|
caseDescription: "", //案例描述
|
|
|
|
experimentSuggests: "", //实验提示
|
|
|
|
judgmentPointsName: "", // 判分点名称
|
|
|
|
points: [],
|
|
|
|
// activeNames: [],
|
|
|
|
tableData: [],
|
|
|
|
activeName: "first",
|
|
|
|
schoolId: '',
|
|
|
|
studentId: "",
|
|
|
|
courseId: "",
|
|
|
|
assessmentId: "",
|
|
|
|
classId: '',
|
|
|
|
projectPermissions: 0, //项目权限(0、练习 1、考核 2、竞赛)
|
|
|
|
competitionId: '',
|
|
|
|
stageId: '',
|
|
|
|
teamId: '',
|
|
|
|
isSubmit: false,
|
|
|
|
entryTime: util.formatDate('yyyy-MM-dd hh:mm:ss'),
|
|
|
|
startTime: '',
|
|
|
|
stopTime: '',
|
|
|
|
isSelected: false,
|
|
|
|
userId: '',
|
|
|
|
hintOpen: 0,
|
|
|
|
topicList: [],
|
|
|
|
projectManage: {},
|
|
|
|
requires: [],
|
|
|
|
projectName: '',
|
|
|
|
loading: false,
|
|
|
|
sss: 1,
|
|
|
|
popContainer: false,
|
|
|
|
timestamp: '',
|
|
|
|
curSystemId: '',
|
|
|
|
reportId: '',
|
|
|
|
submitType: false
|
|
|
|
}
|
|
|
|
},
|
|
|
|
computed: {
|
|
|
|
needSendSunc: function () {
|
|
|
|
return this.sendSync;
|
|
|
|
},
|
|
|
|
// 倒计时
|
|
|
|
second: function () {
|
|
|
|
return this.num(this.seconds);
|
|
|
|
},
|
|
|
|
minute: function () {
|
|
|
|
return this.num(this.minutes);
|
|
|
|
},
|
|
|
|
activeNames () {
|
|
|
|
// 默认展开所有
|
|
|
|
return this.requires.map(item => item.id)
|
|
|
|
},
|
|
|
|
},
|
|
|
|
watch: {
|
|
|
|
countVal: {
|
|
|
|
deep: true,
|
|
|
|
handler: function (val, oldVal) {
|
|
|
|
let vm = this;
|
|
|
|
if (vm.needSendSunc) {
|
|
|
|
vm.passToParent(val);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
},
|
|
|
|
needSendSunc: {
|
|
|
|
deep: true,
|
|
|
|
handler: function (val) {
|
|
|
|
let vm = this;
|
|
|
|
if (val) {
|
|
|
|
vm.passToParent(vm.countString);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
},
|
|
|
|
},
|
|
|
|
created () {
|
|
|
|
let assessmentId = this.getQueryVariable('assessmentId')
|
|
|
|
sessionStorage.setItem('assessmentId', assessmentId)
|
|
|
|
this.assessmentId = assessmentId
|
|
|
|
if (assessmentId == '' || assessmentId == null || assessmentId == 'null') {
|
|
|
|
|
|
|
|
} else {
|
|
|
|
this.intervalJudge = setInterval(() => {
|
|
|
|
const data = {
|
|
|
|
id: parseInt(sessionStorage.getItem('assessmentId')),
|
|
|
|
}
|
|
|
|
checkTest(data).then(data => {
|
|
|
|
const { data: { data: { status } } } = data
|
|
|
|
if (status !== 1) {
|
|
|
|
this.popContainer = true
|
|
|
|
clearInterval(this.intervalJudge)
|
|
|
|
this.$alert('考试已结束,已自动为您提交。', '提示', {
|
|
|
|
confirmButtonText: '确定',
|
|
|
|
type: 'warning',
|
|
|
|
center: true
|
|
|
|
});
|
|
|
|
// 提交
|
|
|
|
this.sureSubmit(true)
|
|
|
|
}
|
|
|
|
})
|
|
|
|
}, 4000)
|
|
|
|
}
|
|
|
|
Bus.$on('setSubmited', data => {
|
|
|
|
this.popContainer = data
|
|
|
|
})
|
|
|
|
},
|
|
|
|
mounted () {
|
|
|
|
let token = this.getParam('token')
|
|
|
|
let cid = this.getParam('cid')
|
|
|
|
let systemId = this.getParam('systemId')
|
|
|
|
let projectId = this.getParam('projectId')
|
|
|
|
let assessmentId = this.getParam('assessmentId')
|
|
|
|
let competitionId = this.getParam('competitionId')
|
|
|
|
let stageId = this.getParam('stageId')
|
|
|
|
let teamId = this.getParam('teamId')
|
|
|
|
let classId = this.getParam('classId')
|
|
|
|
let stopTime = this.getParam('stopTime')
|
|
|
|
let mallId = this.getParam('mallId')
|
|
|
|
let timestamp = +stopTime
|
|
|
|
timestamp || sessionStorage.removeItem('timestamp')
|
|
|
|
|
|
|
|
if (token) {
|
|
|
|
sessionStorage.setItem('token', token)
|
|
|
|
sessionStorage.setItem('cid', cid)
|
|
|
|
sessionStorage.setItem('systemId', systemId)
|
|
|
|
sessionStorage.setItem('timestamp', timestamp)
|
|
|
|
console.log("🚀 ~ mounted ~ projectId:", token, projectId)
|
|
|
|
sessionStorage.setItem('projectId', projectId)
|
|
|
|
sessionStorage.setItem('assessmentId', assessmentId)
|
|
|
|
sessionStorage.setItem('competitionId', competitionId)
|
|
|
|
sessionStorage.setItem('stageId', stageId)
|
|
|
|
sessionStorage.setItem('teamId', teamId)
|
|
|
|
sessionStorage.setItem('classId', classId)
|
|
|
|
this.assessmentId = assessmentId
|
|
|
|
this.competitionId = competitionId
|
|
|
|
this.stageId = stageId
|
|
|
|
this.teamId = teamId
|
|
|
|
this.classId = classId
|
|
|
|
this.mallId = mallId
|
|
|
|
}
|
|
|
|
if (token) {
|
|
|
|
this.projectPermissions = this.assessmentId ?
|
|
|
|
1 :
|
|
|
|
this.competitionId ?
|
|
|
|
2 :
|
|
|
|
0
|
|
|
|
this.assessmentId && this.projectId && this.checkVer()
|
|
|
|
if (assessmentId || this.competitionId) {
|
|
|
|
this.selectProjects({
|
|
|
|
projectId
|
|
|
|
})
|
|
|
|
} else {
|
|
|
|
this.getData()
|
|
|
|
}
|
|
|
|
}
|
|
|
|
},
|
|
|
|
methods: {
|
|
|
|
...mapMutations({
|
|
|
|
setPopId: 'system/setPopId',
|
|
|
|
setBusinessKey: 'system/setBusinessKey',
|
|
|
|
initState: 'system/initState',
|
|
|
|
setShowBusiness: 'system/setShowBusiness',
|
|
|
|
}),
|
|
|
|
clearStore () {
|
|
|
|
// // 清空缓存
|
|
|
|
let token = sessionStorage.getItem('token')
|
|
|
|
let cid = sessionStorage.getItem('cid')
|
|
|
|
let systemId = sessionStorage.getItem('systemId')
|
|
|
|
let projectId = sessionStorage.getItem('projectId')
|
|
|
|
let assessmentId = sessionStorage.getItem('assessmentId')
|
|
|
|
let classId = sessionStorage.getItem('classId')
|
|
|
|
let timestamp = sessionStorage.getItem('timestamp')
|
|
|
|
let startTime = sessionStorage.getItem('startTime')
|
|
|
|
|
|
|
|
const storeProjectId = sessionStorage.getItem('storeProjectId')
|
|
|
|
sessionStorage.clear()
|
|
|
|
sessionStorage.setItem('token', token)
|
|
|
|
sessionStorage.setItem('cid', cid)
|
|
|
|
sessionStorage.setItem('systemId', systemId)
|
|
|
|
sessionStorage.setItem('projectId', projectId)
|
|
|
|
sessionStorage.setItem('firstLoad2', true)
|
|
|
|
if (assessmentId) {
|
|
|
|
sessionStorage.setItem('assessmentId', assessmentId)
|
|
|
|
}
|
|
|
|
if (classId) {
|
|
|
|
sessionStorage.setItem('classId', classId)
|
|
|
|
}
|
|
|
|
if (timestamp) {
|
|
|
|
sessionStorage.setItem('timestamp', timestamp)
|
|
|
|
}
|
|
|
|
if (startTime) {
|
|
|
|
sessionStorage.setItem('startTime', startTime)
|
|
|
|
}
|
|
|
|
if (storeProjectId) {
|
|
|
|
sessionStorage.setItem('storeProjectId', storeProjectId)
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// 初始化vuex中的state
|
|
|
|
this.initState();
|
|
|
|
},
|
|
|
|
closePane (judge = false) {
|
|
|
|
this.closePaneJudge = false
|
|
|
|
// this.lockIt = false
|
|
|
|
this.reload()
|
|
|
|
if (judge) {
|
|
|
|
this.toggleCase()
|
|
|
|
}
|
|
|
|
},
|
|
|
|
// 获取参数
|
|
|
|
getParam (field) {
|
|
|
|
const s = sessionStorage.getItem(field)
|
|
|
|
return s !== 'null' && s !== 'undefined' && s ? s : this.getQueryVariable(field)
|
|
|
|
},
|
|
|
|
getQueryVariable (name) {
|
|
|
|
var reg = new RegExp('(^|&)' + name + '=([^&]*)(&|$)')
|
|
|
|
if (window.location.href.split('?')[1]) {
|
|
|
|
var r = window.location.href.split('?')[1].match(reg)
|
|
|
|
if (r != null) {
|
|
|
|
return (r[2])
|
|
|
|
} else {
|
|
|
|
return null
|
|
|
|
}
|
|
|
|
}
|
|
|
|
},
|
|
|
|
//获取项目列表
|
|
|
|
getData () {
|
|
|
|
let params = {
|
|
|
|
"systemId": sessionStorage.getItem('systemId'),
|
|
|
|
"cId": sessionStorage.getItem('cid'),
|
|
|
|
"permissions": 0,
|
|
|
|
mallId: this.mallId
|
|
|
|
}
|
|
|
|
getProjectBySystemId(params).then((data) => {
|
|
|
|
if (data.status == 200) {
|
|
|
|
// this.getQueryCaches()
|
|
|
|
//获取当前时间
|
|
|
|
this.getBeginTime()
|
|
|
|
this.topicList = []
|
|
|
|
|
|
|
|
for (var i = 0; i < data.data.projects.length; i++) {
|
|
|
|
if (data.data.projects[i].projectId) {
|
|
|
|
this.topicList.push(data.data.projects[i])
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
if (this.topicList.length > 0) {
|
|
|
|
const storeProjectId = sessionStorage.getItem('storeProjectId') || this.$route.query.projectId
|
|
|
|
if (storeProjectId) {
|
|
|
|
this.selectProjects({
|
|
|
|
projectId: storeProjectId
|
|
|
|
})
|
|
|
|
} else {
|
|
|
|
this.selectProjects({
|
|
|
|
projectId: this.topicList[0].projectId
|
|
|
|
})
|
|
|
|
}
|
|
|
|
this.gotuQueryVariable()
|
|
|
|
// 加的
|
|
|
|
}
|
|
|
|
this.getQueryCaches()
|
|
|
|
}
|
|
|
|
}).catch((error) => {
|
|
|
|
})
|
|
|
|
},
|
|
|
|
getBeginTime () {
|
|
|
|
let dates = new Date().getTime();
|
|
|
|
let date = new Date(dates)
|
|
|
|
let y = date.getFullYear();
|
|
|
|
let MM = date.getMonth() + 1;
|
|
|
|
MM = MM < 10 ? ('0' + MM) : MM;
|
|
|
|
let d = date.getDate();
|
|
|
|
d = d < 10 ? ('0' + d) : d;
|
|
|
|
let h = date.getHours();
|
|
|
|
h = h < 10 ? ('0' + h) : h;
|
|
|
|
let m = date.getMinutes();
|
|
|
|
m = m < 10 ? ('0' + m) : m;
|
|
|
|
let s = date.getSeconds();
|
|
|
|
s = s < 10 ? ('0' + s) : s;
|
|
|
|
this.startTime = y + '-' + MM + '-' + d + ' ' + h + ':' + m + ':' + s;
|
|
|
|
sessionStorage.setItem('startTime', this.startTime)
|
|
|
|
},
|
|
|
|
getQueryCaches () {
|
|
|
|
getQueryCache(params).then((data) => {
|
|
|
|
if (data.data.status == 200) {
|
|
|
|
this.$confirm('有项目未做完,是否回到未做完的项目?', '提示', {
|
|
|
|
center: true,
|
|
|
|
confirmButtonText: '确定',
|
|
|
|
cancelButtonText: '取消',
|
|
|
|
type: 'warning'
|
|
|
|
}).then(() => {
|
|
|
|
this.$message({
|
|
|
|
type: 'success',
|
|
|
|
message: '切换成功!'
|
|
|
|
});
|
|
|
|
this.projectId = data.data.projectId
|
|
|
|
let params = {
|
|
|
|
"projectId": data.data.projectId,
|
|
|
|
}
|
|
|
|
sessionStorage.setItem('projectId', data.data.projectId)
|
|
|
|
this.selectProjects(params)
|
|
|
|
}).catch(() => {
|
|
|
|
deleteCache().then((data) => {
|
|
|
|
this.$message({
|
|
|
|
type: 'info',
|
|
|
|
message: '已取消'
|
|
|
|
});
|
|
|
|
}).catch(() => {
|
|
|
|
})
|
|
|
|
this.gotuQueryVariable()
|
|
|
|
});
|
|
|
|
} else {
|
|
|
|
this.gotuQueryVariable()
|
|
|
|
}
|
|
|
|
}).catch((error) => {
|
|
|
|
this.gotuQueryVariable()
|
|
|
|
})
|
|
|
|
},
|
|
|
|
gotuQueryVariable () {
|
|
|
|
let projectId = sessionStorage.getItem('projectId') || this.getQueryVariable('projectId')
|
|
|
|
if (projectId) {
|
|
|
|
this.projectId = projectId
|
|
|
|
} else {
|
|
|
|
const storeProjectId = sessionStorage.getItem('storeProjectId')
|
|
|
|
if (storeProjectId) {
|
|
|
|
this.projectId = storeProjectId;
|
|
|
|
} else {
|
|
|
|
this.projectId = this.topicList[0].projectId;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
sessionStorage.setItem('projectId', this.projectId)
|
|
|
|
let params = {
|
|
|
|
"projectId": this.projectId,
|
|
|
|
}
|
|
|
|
this.selectProjects(params)
|
|
|
|
},
|
|
|
|
selectProjects (params) {
|
|
|
|
getProjectDetail(params).then((data) => {
|
|
|
|
if (data.status == 200) {
|
|
|
|
this.globalTimer = "";
|
|
|
|
let stopTime = sessionStorage.getItem('timestamp')
|
|
|
|
let timestamp = +stopTime;
|
|
|
|
this.countVal = timestamp;
|
|
|
|
this.sss = 1;
|
|
|
|
this.hintOpen = data.data.projectManage.hintOpen;
|
|
|
|
this.countDown(timestamp);
|
|
|
|
this.curSystemId = data.data.projectManage.systemId
|
|
|
|
let assessmentId = this.getQueryVariable('assessmentId')
|
|
|
|
if (assessmentId != null && assessmentId != '' && assessmentId != 'null') {
|
|
|
|
//获取当前时间
|
|
|
|
this.getBeginTime()
|
|
|
|
this.topicList = [data.data.projectManage];
|
|
|
|
this.projectId = +params.projectId
|
|
|
|
this.projectName = data.data.projectManage.projectName
|
|
|
|
this.projectId = data.data.projectManage.projectId;
|
|
|
|
this.projectManage = data.data.projectManage;
|
|
|
|
this.requires = data.data.projectJudgmentVos;
|
|
|
|
} else {
|
|
|
|
this.projectName = data.data.projectManage.projectName
|
|
|
|
this.projectId = data.data.projectManage.projectId;
|
|
|
|
this.projectManage = data.data.projectManage;
|
|
|
|
this.requires = data.data.projectJudgmentVos;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}).catch((error) => {
|
|
|
|
})
|
|
|
|
},
|
|
|
|
//选择好题目
|
|
|
|
selectProject () {
|
|
|
|
this.lockIt = false
|
|
|
|
this.submitType = false
|
|
|
|
this.$router.push('/index/list')
|
|
|
|
|
|
|
|
this.$nextTick(() => {
|
|
|
|
this.clearStore()
|
|
|
|
})
|
|
|
|
|
|
|
|
let params = {
|
|
|
|
"projectId": this.projectId,
|
|
|
|
}
|
|
|
|
sessionStorage.setItem('storeProjectId', this.projectId)
|
|
|
|
let formList = []
|
|
|
|
sessionStorage.setItem('ruleReqs', JSON.stringify(formList))
|
|
|
|
sessionStorage.setItem('accountVoucher', JSON.stringify(formList))
|
|
|
|
sessionStorage.setItem('accountPasswordAll', '')
|
|
|
|
sessionStorage.setItem('projectId', this.projectId)
|
|
|
|
sessionStorage.removeItem('submited', 0)
|
|
|
|
sessionStorage.removeItem('firstLoad2')
|
|
|
|
this.setBusinessKey('')
|
|
|
|
getProjectDetail(params).then((data) => {
|
|
|
|
if (data.status == 200) {
|
|
|
|
const { systemId, projectId } = data.data.projectManage
|
|
|
|
// systemId=11 为银行项目,为其他值则是python项目,直接跳python
|
|
|
|
if (systemId === 11) {
|
|
|
|
this.popContainer = false;
|
|
|
|
this.hintOpen = data.data.projectManage.hintOpen;
|
|
|
|
this.projectName = data.data.projectManage.projectName;
|
|
|
|
this.projectId = data.data.projectManage.projectId;
|
|
|
|
this.projectManage = data.data.projectManage;
|
|
|
|
this.requires = data.data.projectJudgmentVos;
|
|
|
|
this.$router.push('/index/list')
|
|
|
|
} else {
|
|
|
|
const { cid, curriculumName, token, systemId } = this.$route.query
|
|
|
|
Cookie.set('admin-assessmentId', '', -1)
|
|
|
|
Cookie.set('admin-startTime', '', -1)
|
|
|
|
Cookie.set('admin-stopTime', '', -1)
|
|
|
|
Cookie.set('admin-projectId', projectId)
|
|
|
|
Cookie.set('admin-token', token)
|
|
|
|
Cookie.set('admin-courseId', cid)
|
|
|
|
Cookie.set('admin-curriculumName', escape(curriculumName))
|
|
|
|
Cookie.set('admin-systemId', systemId)
|
|
|
|
// 8个python子系统都跳这个地址,子系统会通过cookie里的systemId识别展示哪套系统
|
|
|
|
location.href = process.env.NODE_ENV === 'development' ?
|
|
|
|
`http://${location.hostname}:8085/#/` :
|
|
|
|
location.href.includes('occupationlab.com') ?
|
|
|
|
'https://www.occupationlab.com/pyTrials' :
|
|
|
|
`${location.origin}/pyTrials`
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}).catch((error) => {
|
|
|
|
})
|
|
|
|
//获取当前时间
|
|
|
|
this.getBeginTime()
|
|
|
|
this.globalTimer = "";
|
|
|
|
this.countVal = "";
|
|
|
|
this.day = "00";
|
|
|
|
this.seconds = "00";
|
|
|
|
this.minutes = "00";
|
|
|
|
this.hour = "00";
|
|
|
|
this.sss = 1
|
|
|
|
this.startCountFn();
|
|
|
|
},
|
|
|
|
// 查看实验报告
|
|
|
|
toReport () {
|
|
|
|
this.popContainer = false
|
|
|
|
// this.setShowBusiness(false)
|
|
|
|
this.$emit('update:showIt', !this.showIt)
|
|
|
|
this.$router.push(`/index/report?reportId=${this.reportId}`)
|
|
|
|
},
|
|
|
|
//提交
|
|
|
|
Submit () {
|
|
|
|
this.$confirm('此操作将视为结束考试, 是否继续?', '提示', {
|
|
|
|
center: true,
|
|
|
|
confirmButtonText: '确定',
|
|
|
|
cancelButtonText: '取消',
|
|
|
|
type: 'warning'
|
|
|
|
}).then(res => {
|
|
|
|
this.sureSubmit(true)
|
|
|
|
}).catch(() => {
|
|
|
|
this.$message({
|
|
|
|
type: "info",
|
|
|
|
message: "已取消提交"
|
|
|
|
});
|
|
|
|
});
|
|
|
|
},
|
|
|
|
async sureSubmit (judge) {
|
|
|
|
// 初始化vuex中的state
|
|
|
|
// this.initState();
|
|
|
|
this.actEndTime = new Date().getTime();
|
|
|
|
let ruleReqs = sessionStorage.getItem('ruleReqs')
|
|
|
|
let startTime = sessionStorage.getItem('startTime') || this.entryTime
|
|
|
|
let ruleReqsList = JSON.parse(ruleReqs);
|
|
|
|
let lcld = []
|
|
|
|
for (var i = 0; i < this.requires.length; i++) {
|
|
|
|
lcld.push(this.requires[i].judgmentId)
|
|
|
|
}
|
|
|
|
let cid = sessionStorage.getItem('cid')
|
|
|
|
let params = {
|
|
|
|
"assessmentId": this.assessmentId,
|
|
|
|
"classId": this.classId,
|
|
|
|
"curriculumId": +cid,
|
|
|
|
"endTime": this.actEndTime,
|
|
|
|
"lcId": lcld,
|
|
|
|
"projectId": this.projectId,
|
|
|
|
"projectName": this.projectName,
|
|
|
|
"purpose": this.projectManage.experimentTarget,
|
|
|
|
"ruleReqs": ruleReqsList,
|
|
|
|
"startTime": startTime,
|
|
|
|
"submitTime": this.actEndTime,
|
|
|
|
"systemId": this.curSystemId,
|
|
|
|
competitionId: this.competitionId,
|
|
|
|
stageId: this.stageId,
|
|
|
|
teamId: this.teamId,
|
|
|
|
mallId: this.mallId
|
|
|
|
}
|
|
|
|
this.loading = true;
|
|
|
|
submit(params).then((data) => {
|
|
|
|
if (data.status == 200) {
|
|
|
|
sessionStorage.setItem('firstLoad2', true)
|
|
|
|
// this.clearStore()
|
|
|
|
const { retMap } = data.data
|
|
|
|
this.reportId = retMap.reportId
|
|
|
|
let firstLoad = null
|
|
|
|
let firstLoad2 = null
|
|
|
|
if (sessionStorage.getItem('firstLoad')) {
|
|
|
|
firstLoad = sessionStorage.getItem('firstLoad')
|
|
|
|
}
|
|
|
|
if (sessionStorage.getItem('firstLoad2')) {
|
|
|
|
firstLoad2 = sessionStorage.getItem('firstLoad2')
|
|
|
|
}
|
|
|
|
|
|
|
|
this.lockIt = true
|
|
|
|
if (this.assessmentId) {
|
|
|
|
this.submitType = true
|
|
|
|
}
|
|
|
|
if (firstLoad) {
|
|
|
|
sessionStorage.setItem('firstLoad', firstLoad)
|
|
|
|
}
|
|
|
|
if (firstLoad2) {
|
|
|
|
sessionStorage.setItem('firstLoad2', firstLoad2)
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
let datas = retMap.scoreInfo;
|
|
|
|
let formList = []
|
|
|
|
sessionStorage.setItem('ruleReqs', JSON.stringify(formList))
|
|
|
|
sessionStorage.setItem('accountVoucher', JSON.stringify(formList))
|
|
|
|
sessionStorage.setItem('accountPasswordAll', '')
|
|
|
|
sessionStorage.setItem('submited', 1)
|
|
|
|
let list = this.requires
|
|
|
|
this.grade = retMap.totalScore
|
|
|
|
for (var j = 0; j < list.length; j++) {
|
|
|
|
for (var i = 0; i < datas.length; i++) {
|
|
|
|
if (datas[i].lcId == list[j].judgmentId) {
|
|
|
|
list[j].flag = datas[i].flag
|
|
|
|
list[j].scores = datas[i].questionScore
|
|
|
|
list[j].right = datas[i].calculate
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
this.sss = 0;
|
|
|
|
this.popContainer = true;
|
|
|
|
if (judge) {
|
|
|
|
this.$message({
|
|
|
|
type: 'success',
|
|
|
|
message: '提交成功'
|
|
|
|
});
|
|
|
|
}
|
|
|
|
this.requires.splice(0, this.requires.length, ...list)
|
|
|
|
} else {
|
|
|
|
this.$message({
|
|
|
|
type: "error",
|
|
|
|
message: data.message
|
|
|
|
});
|
|
|
|
}
|
|
|
|
this.loading = false
|
|
|
|
}).catch((error) => {
|
|
|
|
this.loading = false
|
|
|
|
})
|
|
|
|
},
|
|
|
|
//开始计时
|
|
|
|
startCountFn () {
|
|
|
|
if (!this.isStart) {
|
|
|
|
// this.countVal = this.countVal ? this.countVal : 0;
|
|
|
|
this.globalTimer = setInterval(() => {
|
|
|
|
if (this.sss == 0) {
|
|
|
|
this.globalTimer = null;
|
|
|
|
clearInterval(this.globalTimer);
|
|
|
|
} else if (this.timestamp) {
|
|
|
|
this.counterFn(this.countVal--);
|
|
|
|
} else {
|
|
|
|
this.counterFn(this.countVal++);
|
|
|
|
}
|
|
|
|
}, 1000);
|
|
|
|
this.isStart = true;
|
|
|
|
}
|
|
|
|
},
|
|
|
|
//倒计时
|
|
|
|
countDown (timestamp) {
|
|
|
|
this.timestamp = timestamp
|
|
|
|
this.sss = 1;
|
|
|
|
this.globalTimer = null;
|
|
|
|
clearInterval(this.globalTimer);
|
|
|
|
this.startCountFn()
|
|
|
|
},
|
|
|
|
counterFn (counterTime) {
|
|
|
|
if (this.timestamp) {
|
|
|
|
let countDown = (new Date(counterTime).getTime() - new Date().getTime()) / 1000
|
|
|
|
if (countDown > 0) {
|
|
|
|
let d = Math.floor(countDown / (60 * 60 * 24));
|
|
|
|
let h = Math.floor(countDown / (60 * 60));
|
|
|
|
let m = Math.floor(countDown % (60 * 60) / 60);
|
|
|
|
let s = Math.floor(countDown % (60 * 60) % 60);
|
|
|
|
this.day = `${d > 9 ? d : `0${d}`}`;
|
|
|
|
this.hour = `${h > 9 ? h : `0${h}`}`;
|
|
|
|
this.minutes = `${m > 9 ? m : `0${m}`}`;
|
|
|
|
this.seconds = `${s > 9 ? s : `0${s}`}`;
|
|
|
|
} else {
|
|
|
|
this.$confirm('此操作将视为结束考试, 是否继续?', '提示', {
|
|
|
|
center: true,
|
|
|
|
confirmButtonText: '确定',
|
|
|
|
cancelButtonText: '取消',
|
|
|
|
type: 'warning'
|
|
|
|
}).then(() => {
|
|
|
|
this.sureSubmit(true)
|
|
|
|
|
|
|
|
}).catch(() => {
|
|
|
|
// this.$message({
|
|
|
|
// type: "info",
|
|
|
|
// message: "已取消提交"
|
|
|
|
// });
|
|
|
|
});
|
|
|
|
// this.$alert('考试已结束,已自动为您提交。', '提示', {
|
|
|
|
// confirmButtonText: '确定',
|
|
|
|
// type: 'warning',
|
|
|
|
// center: true
|
|
|
|
// });
|
|
|
|
this.sss = 0
|
|
|
|
this.sureSubmit(true)
|
|
|
|
this.day = '00';
|
|
|
|
this.hour = '00';
|
|
|
|
this.minutes = '00';
|
|
|
|
this.seconds = '00';
|
|
|
|
}
|
|
|
|
} else {
|
|
|
|
let leave1 = counterTime % (24 * 3600 * 1); //计算天数后剩余的毫秒数
|
|
|
|
let leave2 = leave1 % (3600 * 1); //计算小时数后剩余的毫秒数
|
|
|
|
let leave3 = leave2 % (60 * 1); //计算分钟数后剩余的毫秒数
|
|
|
|
let day = Math.floor(counterTime / (24 * 3600 * 1)); //计算相差天数
|
|
|
|
let hour = Math.floor(leave1 / (3600 * 1)); //计算相差小时
|
|
|
|
let minutes = Math.floor(leave2 / (60 * 1)); //计算相差分钟
|
|
|
|
let seconds = Math.round(leave3 / 1); //计算相差秒
|
|
|
|
day = day >= 10 ? day : "0" + day;
|
|
|
|
hour = hour >= 10 ? hour : "0" + hour;
|
|
|
|
minutes = minutes >= 10 ? minutes : "0" + minutes;
|
|
|
|
seconds = seconds >= 10 ? seconds : "0" + seconds;
|
|
|
|
this.day = day;
|
|
|
|
this.hour = hour;
|
|
|
|
this.minutes = minutes;
|
|
|
|
this.seconds = seconds;
|
|
|
|
}
|
|
|
|
},
|
|
|
|
//重新开始
|
|
|
|
async reloadConfirm () {
|
|
|
|
// 已提交状态则直接重新开始,未提交则询问弹框
|
|
|
|
if (this.popContainer) {
|
|
|
|
this.reload()
|
|
|
|
} else {
|
|
|
|
try {
|
|
|
|
await this.$confirm('<p style="color: #f56c6c;">点击重新开始,之前操作会清空。</p><p>确定重新开始吗?</p>', '提示', {
|
|
|
|
confirmButtonText: '确定',
|
|
|
|
cancelButtonText: '取消',
|
|
|
|
type: 'warning',
|
|
|
|
// closeOnClickModal: false,
|
|
|
|
dangerouslyUseHTMLString: true,
|
|
|
|
})
|
|
|
|
this.reload()
|
|
|
|
} catch (e) { }
|
|
|
|
}
|
|
|
|
},
|
|
|
|
reload () {
|
|
|
|
this.submitType = false
|
|
|
|
this.lockIt = false
|
|
|
|
this.clearStore()
|
|
|
|
let token = sessionStorage.getItem('token')
|
|
|
|
let cid = sessionStorage.getItem('cid')
|
|
|
|
let systemId = sessionStorage.getItem('systemId')
|
|
|
|
let projectId = sessionStorage.getItem('projectId')
|
|
|
|
let formList = []
|
|
|
|
sessionStorage.setItem('ruleReqs', JSON.stringify(formList))
|
|
|
|
sessionStorage.setItem('accountVoucher', JSON.stringify(formList))
|
|
|
|
sessionStorage.setItem('accountPasswordAll', '')
|
|
|
|
this.setPopId('')
|
|
|
|
this.setBusinessKey('')
|
|
|
|
let params = {
|
|
|
|
"projectId": projectId,
|
|
|
|
}
|
|
|
|
this.selectProjects(params)
|
|
|
|
this.popContainer = false
|
|
|
|
this.sss = 1
|
|
|
|
this.startCountFn();
|
|
|
|
deleteCache().then((data) => {
|
|
|
|
|
|
|
|
}).catch(() => {
|
|
|
|
|
|
|
|
})
|
|
|
|
this.globalTimer = "";
|
|
|
|
this.countVal = "";
|
|
|
|
this.day = "00";
|
|
|
|
this.seconds = "00";
|
|
|
|
this.minutes = "00";
|
|
|
|
this.hour = "00";
|
|
|
|
this.grade = '00'
|
|
|
|
this.$router.push('/index/list')
|
|
|
|
this.getBeginTime()
|
|
|
|
},
|
|
|
|
|
|
|
|
checkVer () {
|
|
|
|
let data = {
|
|
|
|
userId: this.userId,
|
|
|
|
id: this.assessmentId
|
|
|
|
}
|
|
|
|
this.$get(this.api.qualifications, data).then(res => {
|
|
|
|
if (res.message == 'false') {
|
|
|
|
this.isSubmit = true;
|
|
|
|
}
|
|
|
|
});
|
|
|
|
},
|
|
|
|
// 倒计时
|
|
|
|
timeFormat (param) {
|
|
|
|
return param < 10 ? "0" + param : param;
|
|
|
|
},
|
|
|
|
toggleCase () {
|
|
|
|
if (this.submitType) return
|
|
|
|
// if (!this.lockIt) {
|
|
|
|
this.$emit('update:showIt', !this.showIt)
|
|
|
|
// } else {
|
|
|
|
// this.closePaneJudge = true
|
|
|
|
// }
|
|
|
|
|
|
|
|
// this.caseVisible = !this.caseVisible
|
|
|
|
},
|
|
|
|
collapse () {
|
|
|
|
|
|
|
|
},
|
|
|
|
passToParent (data) {
|
|
|
|
this.$emit("getDataFromChild", data);
|
|
|
|
},
|
|
|
|
getCookie (cookie_name) {
|
|
|
|
//获取cookie中指定key的value
|
|
|
|
var allcookies = document.cookie; //索引长度,开始索引的位置
|
|
|
|
var cookie_pos = allcookies.indexOf(cookie_name); //如果找到了索引,就代表cookie存在,否则不存在
|
|
|
|
if (cookie_pos != -1) {
|
|
|
|
//把cookie_pos放在值的开始,只要给值加1即可
|
|
|
|
//计算取cookie值得开始索引,加的1为“=”
|
|
|
|
cookie_pos = cookie_pos + cookie_name.length + 1; //计算取cookie值得结束索引
|
|
|
|
var cookie_end = allcookies.indexOf(";", cookie_pos);
|
|
|
|
if (cookie_end == -1) {
|
|
|
|
cookie_end = allcookies.length;
|
|
|
|
} //得到想要的cookie的值
|
|
|
|
var value = unescape(allcookies.substring(cookie_pos, cookie_end));
|
|
|
|
}
|
|
|
|
return value;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
};
|
|
|
|
</script>
|
|
|
|
|
|
|
|
<style lang="scss" scoped>
|
|
|
|
$togetherFontSize: 16px;
|
|
|
|
|
|
|
|
/deep/ .el-tab-pane {
|
|
|
|
font-size: 1rem !important;
|
|
|
|
}
|
|
|
|
|
|
|
|
.scrollbar {
|
|
|
|
z-index: 100000000;
|
|
|
|
}
|
|
|
|
|
|
|
|
.popContainer {
|
|
|
|
position: absolute;
|
|
|
|
width: 100%;
|
|
|
|
/*宽度设置为100%,这样才能使隐藏背景层覆盖原页面*/
|
|
|
|
height: 100%;
|
|
|
|
z-index: 1000;
|
|
|
|
top: 0;
|
|
|
|
left: 0;
|
|
|
|
right: 0;
|
|
|
|
bottom: 0;
|
|
|
|
background: rgba(0, 0, 0, 0.3);
|
|
|
|
}
|
|
|
|
|
|
|
|
/deep/.el-container {
|
|
|
|
height: 80%;
|
|
|
|
|
|
|
|
&.is-vertical {
|
|
|
|
position: fixed;
|
|
|
|
top: 200px;
|
|
|
|
bottom: 20px;
|
|
|
|
left: 0;
|
|
|
|
width: 85%;
|
|
|
|
height: 70%;
|
|
|
|
background-color: #f5f5f5;
|
|
|
|
z-index: 1001;
|
|
|
|
}
|
|
|
|
|
|
|
|
.el-header {
|
|
|
|
color: #333;
|
|
|
|
padding: 0 12px 0 20px;
|
|
|
|
|
|
|
|
.el-button {
|
|
|
|
background-color: $main-color;
|
|
|
|
color: #fff;
|
|
|
|
border: none;
|
|
|
|
margin: 5px 0px 5px 5px;
|
|
|
|
font-size: 16px;
|
|
|
|
}
|
|
|
|
|
|
|
|
.submit-btn {
|
|
|
|
padding-left: 30px;
|
|
|
|
padding-right: 30px;
|
|
|
|
background: $main-color url(../../assets/img/case/btn.png) 0 0/100% 100% no-repeat;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
.el-aside {
|
|
|
|
font-size: $togetherFontSize;
|
|
|
|
color: #333;
|
|
|
|
|
|
|
|
[class*=' el-icon-'],
|
|
|
|
[class^='el-icon-'] {
|
|
|
|
line-height: 40px;
|
|
|
|
font-size: 16px;
|
|
|
|
font-size: $togetherFontSize;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
.el-main {
|
|
|
|
width: 60%;
|
|
|
|
background-color: #fff;
|
|
|
|
color: #333;
|
|
|
|
padding: 0;
|
|
|
|
font-size: $togetherFontSize;
|
|
|
|
margin: 0px 20px 10px 10px;
|
|
|
|
white-space: pre-wrap;
|
|
|
|
background: #fff url(../../assets/img/case/bg.png) top right no-repeat;
|
|
|
|
// overflow: visible;
|
|
|
|
}
|
|
|
|
|
|
|
|
.aside-header {
|
|
|
|
margin: 0px 10px 10px 10px;
|
|
|
|
background-color: #fff;
|
|
|
|
font-size: 0.875rem;
|
|
|
|
}
|
|
|
|
|
|
|
|
.aside-footer {
|
|
|
|
margin: 0px 10px 10px 10px;
|
|
|
|
background-color: #fff;
|
|
|
|
}
|
|
|
|
|
|
|
|
.header_h {
|
|
|
|
height: 40px;
|
|
|
|
background: url(../../assets/img/case/header.png) 0 0/100% 100% no-repeat;
|
|
|
|
justify-content: center;
|
|
|
|
|
|
|
|
i {
|
|
|
|
color: #fff;
|
|
|
|
}
|
|
|
|
|
|
|
|
p {
|
|
|
|
line-height: 40px;
|
|
|
|
font-size: 16px;
|
|
|
|
color: #fff;
|
|
|
|
padding-left: 10px;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
.el-card {
|
|
|
|
border: 0;
|
|
|
|
border-radius: 0;
|
|
|
|
|
|
|
|
.el-card__body {
|
|
|
|
padding: 0;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
.select {
|
|
|
|
flex: 1;
|
|
|
|
|
|
|
|
input::-webkit-input-placeholder {
|
|
|
|
color: #333;
|
|
|
|
}
|
|
|
|
|
|
|
|
.el-input__icon {
|
|
|
|
line-height: 60px;
|
|
|
|
}
|
|
|
|
|
|
|
|
.el-select__caret:before {
|
|
|
|
content: '\e78f';
|
|
|
|
font-size: 16px;
|
|
|
|
padding: 3px;
|
|
|
|
background-color: $main-color;
|
|
|
|
border-radius: 50%;
|
|
|
|
color: #ffffff;
|
|
|
|
}
|
|
|
|
|
|
|
|
.el-input--suffix .el-input__inner {
|
|
|
|
color: #333;
|
|
|
|
font-size: $togetherFontSize;
|
|
|
|
border-radius: 30px;
|
|
|
|
border: none;
|
|
|
|
background-color: #fff;
|
|
|
|
margin-left: 15px;
|
|
|
|
overflow: hidden;
|
|
|
|
text-overflow: ellipsis;
|
|
|
|
white-space: nowrap;
|
|
|
|
}
|
|
|
|
|
|
|
|
.el-input {
|
|
|
|
padding: 10px 0;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
.font_css {
|
|
|
|
margin: 0 10px;
|
|
|
|
text-indent: 2em;
|
|
|
|
font-size: $togetherFontSize;
|
|
|
|
padding: 10px 0;
|
|
|
|
}
|
|
|
|
|
|
|
|
.countDownBox {
|
|
|
|
font-size: $togetherFontSize;
|
|
|
|
margin: 0 10px;
|
|
|
|
padding: 20px 0;
|
|
|
|
}
|
|
|
|
|
|
|
|
.timeSpan {
|
|
|
|
color: #333333;
|
|
|
|
padding: 5px 15px;
|
|
|
|
font-size: $togetherFontSize;
|
|
|
|
background: #ffffff;
|
|
|
|
border-radius: 18px;
|
|
|
|
margin: 0 5px;
|
|
|
|
text-align: center;
|
|
|
|
}
|
|
|
|
|
|
|
|
.gradeSpan {
|
|
|
|
color: #878787;
|
|
|
|
padding: 10px;
|
|
|
|
font-size: $togetherFontSize;
|
|
|
|
background: #e0e0e0;
|
|
|
|
border-radius: 6px;
|
|
|
|
text-align: center;
|
|
|
|
}
|
|
|
|
|
|
|
|
.el-header /deep/.el-button:hover,
|
|
|
|
.el-button:focus,
|
|
|
|
.el-button:active {
|
|
|
|
background-color: $main-color;
|
|
|
|
color: #fff;
|
|
|
|
}
|
|
|
|
|
|
|
|
/deep/.el-table {
|
|
|
|
font-size: 12px;
|
|
|
|
|
|
|
|
thead {
|
|
|
|
color: #fff;
|
|
|
|
}
|
|
|
|
|
|
|
|
.el-table__cell {
|
|
|
|
padding: 12px 0;
|
|
|
|
}
|
|
|
|
|
|
|
|
.cell {
|
|
|
|
font-weight: 100;
|
|
|
|
font-size: 12px;
|
|
|
|
}
|
|
|
|
|
|
|
|
td,
|
|
|
|
th.is-leaf {
|
|
|
|
border-bottom: 0 !important;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
.el-table__header-wrapper {
|
|
|
|
thead {
|
|
|
|
color: #ffffff;
|
|
|
|
font-size: 12px;
|
|
|
|
|
|
|
|
th {
|
|
|
|
font-weight: 100;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
th,
|
|
|
|
tr {
|
|
|
|
background-color: #badfff;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
.el-table__row--striped {
|
|
|
|
td {
|
|
|
|
background-color: #badfff !important;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
/deep/ .el-collapse {
|
|
|
|
font-size: 0.875rem;
|
|
|
|
}
|
|
|
|
|
|
|
|
.el-collapse-item__content {
|
|
|
|
padding-left: 10px;
|
|
|
|
padding-right: 10px;
|
|
|
|
font-size: $togetherFontSize;
|
|
|
|
}
|
|
|
|
|
|
|
|
.el-collapse-item__wrap {
|
|
|
|
border-bottom: none;
|
|
|
|
}
|
|
|
|
|
|
|
|
/deep/.el-collapse-item__header {
|
|
|
|
font-size: 1rem;
|
|
|
|
|
|
|
|
border-bottom: none;
|
|
|
|
}
|
|
|
|
|
|
|
|
.el-tabs__content {
|
|
|
|
margin: 0 20px;
|
|
|
|
}
|
|
|
|
|
|
|
|
.el-icon-s-ticket:before {
|
|
|
|
font-size: togetherFontSize;
|
|
|
|
//padding: 5px;
|
|
|
|
color: $main-color;
|
|
|
|
}
|
|
|
|
|
|
|
|
.el-collapse-item__arrow {
|
|
|
|
margin: 0 5px 0 0;
|
|
|
|
}
|
|
|
|
|
|
|
|
.el-icon-arrow-right:before {
|
|
|
|
font-size: 12px;
|
|
|
|
font-size: $togetherFontSize;
|
|
|
|
//padding: 1px;
|
|
|
|
//margin-left: 10px;
|
|
|
|
background-color: $main-color;
|
|
|
|
border-radius: 50%;
|
|
|
|
color: #ffffff;
|
|
|
|
}
|
|
|
|
|
|
|
|
.el-tabs__item {
|
|
|
|
font-size: 16px;
|
|
|
|
}
|
|
|
|
|
|
|
|
.el-tabs--card>.el-tabs__header .el-tabs__nav {
|
|
|
|
border: none;
|
|
|
|
}
|
|
|
|
|
|
|
|
.el-tabs--card>.el-tabs__header .el-tabs__item {
|
|
|
|
border-left: none;
|
|
|
|
}
|
|
|
|
|
|
|
|
.el-tabs--card>.el-tabs__header {
|
|
|
|
border-bottom: none;
|
|
|
|
}
|
|
|
|
|
|
|
|
.el-collapse {
|
|
|
|
border-bottom: none;
|
|
|
|
border-top: none;
|
|
|
|
height: calc(100vh - 422px);
|
|
|
|
overflow: hidden;
|
|
|
|
overflow-y: auto;
|
|
|
|
}
|
|
|
|
|
|
|
|
/deep/.el-collapse-item {
|
|
|
|
font-size: $togetherFontSize;
|
|
|
|
background-color: red;
|
|
|
|
color: red;
|
|
|
|
}
|
|
|
|
|
|
|
|
.el-tabs__item.is-active {
|
|
|
|
color: #fff;
|
|
|
|
background-color: $main-color;
|
|
|
|
}
|
|
|
|
|
|
|
|
.el-tabs__header {
|
|
|
|
padding: 5px 20px;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
.break-all {
|
|
|
|
font-size: 16px;
|
|
|
|
word-break: break-all;
|
|
|
|
}
|
|
|
|
|
|
|
|
.panel {
|
|
|
|
position: fixed;
|
|
|
|
z-index: 10010000;
|
|
|
|
top: 50%;
|
|
|
|
|
|
|
|
&.active {
|
|
|
|
//z-index: 10;
|
|
|
|
left: 85%;
|
|
|
|
z-index: 1001;
|
|
|
|
}
|
|
|
|
|
|
|
|
img {
|
|
|
|
height: 175px;
|
|
|
|
cursor: pointer;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
</style>
|