|
|
|
@ -1,140 +1,201 @@ |
|
|
|
|
<template> |
|
|
|
|
<!-- 考核列表 --> |
|
|
|
|
<div class="wrap"> |
|
|
|
|
<div class="page" style="padding-bottom: 0;margin-bottom: 12px"> |
|
|
|
|
<h6 class="l-title"> |
|
|
|
|
<img src="@/assets/img/ass1.png" alt=""> |
|
|
|
|
考核筛选 |
|
|
|
|
</h6> |
|
|
|
|
<ul class="filter"> |
|
|
|
|
<li> |
|
|
|
|
<label>考核时间:</label> |
|
|
|
|
<el-radio-group size="small" v-model="form.month"> |
|
|
|
|
<el-radio v-for="(item,index) in dateList" :key="index" :label="item.id" border> |
|
|
|
|
{{ item.name }} |
|
|
|
|
</el-radio> |
|
|
|
|
</el-radio-group> |
|
|
|
|
<el-date-picker |
|
|
|
|
size="small" |
|
|
|
|
v-model="date" |
|
|
|
|
align="right" |
|
|
|
|
unlink-panels type="daterange" |
|
|
|
|
start-placeholder="开始日期" |
|
|
|
|
end-placeholder="结束日期" |
|
|
|
|
format="yyyy-MM-dd" |
|
|
|
|
value-format="yyyy-MM-dd" |
|
|
|
|
clearable |
|
|
|
|
style="width: 300px" |
|
|
|
|
></el-date-picker> |
|
|
|
|
</li> |
|
|
|
|
</ul> |
|
|
|
|
<ul class="filter"> |
|
|
|
|
<li> |
|
|
|
|
<label>课程名称:</label> |
|
|
|
|
<el-select size="small" v-model="form.curriculumId" @change="initData"> |
|
|
|
|
<el-option label="不限" value=""></el-option> |
|
|
|
|
<el-option |
|
|
|
|
v-for="(item,index) in courseList" |
|
|
|
|
:key="index" |
|
|
|
|
:label="item.sysName" |
|
|
|
|
:value="item.sysId" |
|
|
|
|
></el-option> |
|
|
|
|
</el-select> |
|
|
|
|
</li> |
|
|
|
|
<li> |
|
|
|
|
<label>实验班级:</label> |
|
|
|
|
<el-select size="small" v-model="form.classId" @change="initData"> |
|
|
|
|
<el-option label="不限" value=""></el-option> |
|
|
|
|
<el-option |
|
|
|
|
v-for="(item,index) in classList" |
|
|
|
|
:key="index" |
|
|
|
|
:label="item.className" |
|
|
|
|
:value="item.id" |
|
|
|
|
></el-option> |
|
|
|
|
</el-select> |
|
|
|
|
</li> |
|
|
|
|
<li> |
|
|
|
|
<label>实验状态:</label> |
|
|
|
|
<el-select size="small" v-model="form.status" @change="initData"> |
|
|
|
|
<el-option |
|
|
|
|
v-for="(item,index) in statusList" |
|
|
|
|
:key="index" :label="item.name" |
|
|
|
|
:value="item.value" |
|
|
|
|
></el-option> |
|
|
|
|
</el-select> |
|
|
|
|
</li> |
|
|
|
|
<li> |
|
|
|
|
<label>搜索:</label> |
|
|
|
|
<el-input placeholder="请输入考核名称" v-model="form.keyWord" clearable></el-input> |
|
|
|
|
</li> |
|
|
|
|
</ul> |
|
|
|
|
</div> |
|
|
|
|
<div class="page"> |
|
|
|
|
<el-table v-loading="listLoading" :data="listData" class="table" stripe header-align="center"> |
|
|
|
|
<el-table-column type="index" width="60" label="序号" align="center"> |
|
|
|
|
<template slot-scope="scope"> |
|
|
|
|
{{ scope.$index + (page - 1) * pageSize + 1 }} |
|
|
|
|
</template> |
|
|
|
|
</el-table-column> |
|
|
|
|
<el-table-column prop="sysName" label="课程名称" align="center" show-overflow-tooltip></el-table-column> |
|
|
|
|
<el-table-column prop="experimentalName" label="考核名称" align="center" show-overflow-tooltip></el-table-column> |
|
|
|
|
<el-table-column prop="className" label="实验班级" align="center"></el-table-column> |
|
|
|
|
<el-table-column prop="experimentalNum" width="90" label="实验人数" align="center"></el-table-column> |
|
|
|
|
<el-table-column prop="experimentDuration" width="90" label="考试时长" align="center"></el-table-column> |
|
|
|
|
<el-table-column prop="createTime" width="160" label="创建时间" align="center"></el-table-column> |
|
|
|
|
<el-table-column prop="startTime" width="160" label="起始时间" align="center"></el-table-column> |
|
|
|
|
<el-table-column prop="stopTime" width="160" label="结束时间" align="center"></el-table-column> |
|
|
|
|
<el-table-column label="倒计时" width="90" align="center"> |
|
|
|
|
<template slot-scope="scope"> |
|
|
|
|
<span>{{ timeFilter(scope.row) }}</span> |
|
|
|
|
</template> |
|
|
|
|
</el-table-column> |
|
|
|
|
<el-table-column label="考核状态" width="90" align="center"> |
|
|
|
|
<template slot-scope="scope"> |
|
|
|
|
<span class="ellipsis">{{ status[scope.row.status] }}</span> |
|
|
|
|
</template> |
|
|
|
|
</el-table-column> |
|
|
|
|
<!-- <el-table-column label="实验状态" align="center">--> |
|
|
|
|
<!-- <template slot-scope="scope" v-if="scope.row.show">--> |
|
|
|
|
<!-- <span class="ellipsis">{{ stuState[scope.row.stuState] }}</span>--> |
|
|
|
|
<!-- </template>--> |
|
|
|
|
<!-- </el-table-column>--> |
|
|
|
|
<el-table-column width="100" label="操作" align="center"> |
|
|
|
|
<template slot-scope="scope"> |
|
|
|
|
<!--status:考核状态(0、待开始 1、进行中 2、已结束); stuState:学生考试状态(0、未考 1、在考 2、已考)--> |
|
|
|
|
<el-button v-if="scope.row.status == 2 && scope.row.stuState == 0" type="text" disabled>未参加</el-button> |
|
|
|
|
<el-button v-if="(scope.row.status == 2 && scope.row.stuState == 1) || (scope.row.status == 2 && scope.row.stuState == 2 && scope.row.reportId == null)" type="text" disabled> |
|
|
|
|
未提交 |
|
|
|
|
</el-button> |
|
|
|
|
<el-button v-if="scope.row.status != 2 && (scope.row.stuState == 0 || scope.row.stuState == 1)" type="text" |
|
|
|
|
@click="entry(scope.row)" :disabled="scope.row.status !== 1">进入 |
|
|
|
|
</el-button> |
|
|
|
|
<el-button v-if="scope.row.status == 1 && scope.row.stuState == 2" type="text" disabled>已提交</el-button> |
|
|
|
|
<el-button v-if="scope.row.status == 2 && scope.row.stuState == 2 && scope.row.reportId" type="text" |
|
|
|
|
@click="show(scope.row)">查看成绩 |
|
|
|
|
</el-button> |
|
|
|
|
</template> |
|
|
|
|
</el-table-column> |
|
|
|
|
</el-table> |
|
|
|
|
<div class="pagination"> |
|
|
|
|
<el-pagination |
|
|
|
|
background |
|
|
|
|
layout="total, prev, pager, next" |
|
|
|
|
:total="totals" |
|
|
|
|
@current-change="handleCurrentChange" |
|
|
|
|
:current-page="page" |
|
|
|
|
></el-pagination> |
|
|
|
|
</div> |
|
|
|
|
</div> |
|
|
|
|
|
|
|
|
|
<el-dialog title="请输入邀请码" :visible.sync="icVisible" width="30%" @close="closeIc" center |
|
|
|
|
:close-on-click-modal="false"> |
|
|
|
|
<el-input v-model="invitationCode" placeholder="邀请码" maxlength="6"></el-input> |
|
|
|
|
<div slot="footer" class="dialog-footer"> |
|
|
|
|
<el-button type="primary" @click="saveIc">确 定</el-button> |
|
|
|
|
</div> |
|
|
|
|
</el-dialog> |
|
|
|
|
<!-- 考核列表 --> |
|
|
|
|
<div class="wrap"> |
|
|
|
|
<div class="page" |
|
|
|
|
style="padding-bottom: 0;margin-bottom: 12px"> |
|
|
|
|
<h6 class="l-title"> |
|
|
|
|
<img src="@/assets/img/ass1.png" |
|
|
|
|
alt=""> |
|
|
|
|
考核筛选 |
|
|
|
|
</h6> |
|
|
|
|
<ul class="filter"> |
|
|
|
|
<li> |
|
|
|
|
<label>考核时间:</label> |
|
|
|
|
<el-radio-group size="small" |
|
|
|
|
v-model="form.month"> |
|
|
|
|
<el-radio v-for="(item,index) in dateList" |
|
|
|
|
:key="index" |
|
|
|
|
:label="item.id" |
|
|
|
|
border> |
|
|
|
|
{{ item.name }} |
|
|
|
|
</el-radio> |
|
|
|
|
</el-radio-group> |
|
|
|
|
<el-date-picker size="small" |
|
|
|
|
v-model="date" |
|
|
|
|
align="right" |
|
|
|
|
unlink-panels |
|
|
|
|
type="daterange" |
|
|
|
|
start-placeholder="开始日期" |
|
|
|
|
end-placeholder="结束日期" |
|
|
|
|
format="yyyy-MM-dd" |
|
|
|
|
value-format="yyyy-MM-dd" |
|
|
|
|
clearable |
|
|
|
|
style="width: 300px"></el-date-picker> |
|
|
|
|
</li> |
|
|
|
|
</ul> |
|
|
|
|
<ul class="filter"> |
|
|
|
|
<li> |
|
|
|
|
<label>课程名称:</label> |
|
|
|
|
<el-select size="small" |
|
|
|
|
v-model="form.curriculumId" |
|
|
|
|
@change="initData"> |
|
|
|
|
<el-option label="不限" |
|
|
|
|
value=""></el-option> |
|
|
|
|
<el-option v-for="(item,index) in courseList" |
|
|
|
|
:key="index" |
|
|
|
|
:label="item.sysName" |
|
|
|
|
:value="item.sysId"></el-option> |
|
|
|
|
</el-select> |
|
|
|
|
</li> |
|
|
|
|
<li> |
|
|
|
|
<label>实验班级:</label> |
|
|
|
|
<el-select size="small" |
|
|
|
|
v-model="form.classId" |
|
|
|
|
@change="initData"> |
|
|
|
|
<el-option label="不限" |
|
|
|
|
value=""></el-option> |
|
|
|
|
<el-option v-for="(item,index) in classList" |
|
|
|
|
:key="index" |
|
|
|
|
:label="item.className" |
|
|
|
|
:value="item.id"></el-option> |
|
|
|
|
</el-select> |
|
|
|
|
</li> |
|
|
|
|
<li> |
|
|
|
|
<label>实验状态:</label> |
|
|
|
|
<el-select size="small" |
|
|
|
|
v-model="form.status" |
|
|
|
|
@change="initData"> |
|
|
|
|
<el-option v-for="(item,index) in statusList" |
|
|
|
|
:key="index" |
|
|
|
|
:label="item.name" |
|
|
|
|
:value="item.value"></el-option> |
|
|
|
|
</el-select> |
|
|
|
|
</li> |
|
|
|
|
<li> |
|
|
|
|
<label>搜索:</label> |
|
|
|
|
<el-input placeholder="请输入考核名称" |
|
|
|
|
v-model="form.keyWord" |
|
|
|
|
clearable></el-input> |
|
|
|
|
</li> |
|
|
|
|
</ul> |
|
|
|
|
</div> |
|
|
|
|
<div class="page"> |
|
|
|
|
<el-table v-loading="listLoading" |
|
|
|
|
:data="listData" |
|
|
|
|
class="table" |
|
|
|
|
stripe |
|
|
|
|
header-align="center"> |
|
|
|
|
<el-table-column type="index" |
|
|
|
|
width="60" |
|
|
|
|
label="序号" |
|
|
|
|
align="center"> |
|
|
|
|
<template slot-scope="scope"> |
|
|
|
|
{{ scope.$index + (page - 1) * pageSize + 1 }} |
|
|
|
|
</template> |
|
|
|
|
</el-table-column> |
|
|
|
|
<el-table-column prop="sysName" |
|
|
|
|
label="课程名称" |
|
|
|
|
align="center" |
|
|
|
|
show-overflow-tooltip></el-table-column> |
|
|
|
|
<el-table-column prop="experimentalName" |
|
|
|
|
label="考核名称" |
|
|
|
|
align="center" |
|
|
|
|
show-overflow-tooltip></el-table-column> |
|
|
|
|
<el-table-column prop="className" |
|
|
|
|
label="实验班级" |
|
|
|
|
align="center"></el-table-column> |
|
|
|
|
<el-table-column prop="experimentalNum" |
|
|
|
|
width="90" |
|
|
|
|
label="实验人数" |
|
|
|
|
align="center"></el-table-column> |
|
|
|
|
<el-table-column prop="experimentDuration" |
|
|
|
|
width="90" |
|
|
|
|
label="考试时长" |
|
|
|
|
align="center"></el-table-column> |
|
|
|
|
<el-table-column prop="createTime" |
|
|
|
|
width="160" |
|
|
|
|
label="创建时间" |
|
|
|
|
align="center"></el-table-column> |
|
|
|
|
<el-table-column prop="startTime" |
|
|
|
|
width="160" |
|
|
|
|
label="起始时间" |
|
|
|
|
align="center"></el-table-column> |
|
|
|
|
<el-table-column prop="stopTime" |
|
|
|
|
width="160" |
|
|
|
|
label="结束时间" |
|
|
|
|
align="center"></el-table-column> |
|
|
|
|
<el-table-column label="倒计时" |
|
|
|
|
width="90" |
|
|
|
|
align="center"> |
|
|
|
|
<template slot-scope="scope"> |
|
|
|
|
<span>{{ timeFilter(scope.row) }}</span> |
|
|
|
|
</template> |
|
|
|
|
</el-table-column> |
|
|
|
|
<el-table-column label="考核状态" |
|
|
|
|
width="90" |
|
|
|
|
align="center"> |
|
|
|
|
<template slot-scope="scope"> |
|
|
|
|
<span class="ellipsis">{{ status[scope.row.status] }}</span> |
|
|
|
|
</template> |
|
|
|
|
</el-table-column> |
|
|
|
|
<!-- <el-table-column label="实验状态" align="center">--> |
|
|
|
|
<!-- <template slot-scope="scope" v-if="scope.row.show">--> |
|
|
|
|
<!-- <span class="ellipsis">{{ stuState[scope.row.stuState] }}</span>--> |
|
|
|
|
<!-- </template>--> |
|
|
|
|
<!-- </el-table-column>--> |
|
|
|
|
<el-table-column width="100" |
|
|
|
|
label="操作" |
|
|
|
|
align="center"> |
|
|
|
|
<template slot-scope="scope"> |
|
|
|
|
<!--status:考核状态(0、待开始 1、进行中 2、已结束); stuState:学生考试状态(0、未考 1、在考 2、已考)--> |
|
|
|
|
<el-button v-if="scope.row.status == 2 && scope.row.stuState == 0" |
|
|
|
|
type="text" |
|
|
|
|
disabled>未参加</el-button> |
|
|
|
|
<el-button v-if="(scope.row.status == 2 && scope.row.stuState == 1) || (scope.row.status == 2 && scope.row.stuState == 2 && scope.row.reportId == null)" |
|
|
|
|
type="text" |
|
|
|
|
disabled> |
|
|
|
|
未提交 |
|
|
|
|
</el-button> |
|
|
|
|
<el-button v-if="scope.row.status != 2 && (scope.row.stuState == 0 || scope.row.stuState == 1)" |
|
|
|
|
type="text" |
|
|
|
|
@click="entry(scope.row)" |
|
|
|
|
:disabled="scope.row.status !== 1">进入 |
|
|
|
|
</el-button> |
|
|
|
|
<el-button v-if="scope.row.status == 1 && scope.row.stuState == 2" |
|
|
|
|
type="text" |
|
|
|
|
disabled>已提交</el-button> |
|
|
|
|
<el-button v-if="scope.row.status == 2 && scope.row.stuState == 2 && scope.row.reportId" |
|
|
|
|
type="text" |
|
|
|
|
@click="show(scope.row)">查看成绩 |
|
|
|
|
</el-button> |
|
|
|
|
</template> |
|
|
|
|
</el-table-column> |
|
|
|
|
</el-table> |
|
|
|
|
<div class="pagination"> |
|
|
|
|
<el-pagination background |
|
|
|
|
layout="total, prev, pager, next" |
|
|
|
|
:total="totals" |
|
|
|
|
@current-change="handleCurrentChange" |
|
|
|
|
:current-page="page"></el-pagination> |
|
|
|
|
</div> |
|
|
|
|
</div> |
|
|
|
|
|
|
|
|
|
<el-dialog title="请输入邀请码" |
|
|
|
|
:visible.sync="icVisible" |
|
|
|
|
width="30%" |
|
|
|
|
@close="closeIc" |
|
|
|
|
center |
|
|
|
|
:close-on-click-modal="false"> |
|
|
|
|
<el-input v-model="invitationCode" |
|
|
|
|
placeholder="邀请码" |
|
|
|
|
maxlength="6"></el-input> |
|
|
|
|
<div slot="footer" |
|
|
|
|
class="dialog-footer"> |
|
|
|
|
<el-button type="primary" |
|
|
|
|
@click="saveIc">确 定</el-button> |
|
|
|
|
</div> |
|
|
|
|
</el-dialog> |
|
|
|
|
</div> |
|
|
|
|
</template> |
|
|
|
|
|
|
|
|
|
<script> |
|
|
|
@ -143,325 +204,326 @@ import Setting from "@/setting"; |
|
|
|
|
import util from "@/libs/util"; |
|
|
|
|
|
|
|
|
|
export default { |
|
|
|
|
name: "ass", |
|
|
|
|
data() { |
|
|
|
|
return { |
|
|
|
|
tickerArr: [], |
|
|
|
|
classList: [], |
|
|
|
|
courseList: [], |
|
|
|
|
host: Setting.apiBaseURL, |
|
|
|
|
status: ["待开始", "进行中", "已结束"], |
|
|
|
|
statusList: [{ |
|
|
|
|
name: "不限", |
|
|
|
|
value: "" |
|
|
|
|
}, { |
|
|
|
|
name: "待开始", |
|
|
|
|
value: 0 |
|
|
|
|
}, { |
|
|
|
|
name: "进行中", |
|
|
|
|
value: 1 |
|
|
|
|
}, { |
|
|
|
|
name: "已结束", |
|
|
|
|
value: 2 |
|
|
|
|
}], |
|
|
|
|
stuState: ["未考", "在考", "已考"], |
|
|
|
|
listData: [], |
|
|
|
|
date: [], |
|
|
|
|
form: { |
|
|
|
|
keyWord: '', |
|
|
|
|
month: "", |
|
|
|
|
startTime: "", |
|
|
|
|
endTime: "", |
|
|
|
|
status: "", |
|
|
|
|
curriculumId: "", |
|
|
|
|
classId: "" |
|
|
|
|
}, |
|
|
|
|
dateList: [ |
|
|
|
|
{ |
|
|
|
|
id: "", |
|
|
|
|
name: "不限" |
|
|
|
|
}, |
|
|
|
|
{ |
|
|
|
|
id: 1, |
|
|
|
|
name: "近一个月" |
|
|
|
|
}, |
|
|
|
|
{ |
|
|
|
|
id: 3, |
|
|
|
|
name: "近三个月" |
|
|
|
|
}, |
|
|
|
|
{ |
|
|
|
|
id: 6, |
|
|
|
|
name: "近六个月" |
|
|
|
|
} |
|
|
|
|
], |
|
|
|
|
page: 1, |
|
|
|
|
pageSize: 10, |
|
|
|
|
totals: 0, |
|
|
|
|
listLoading:false,// 列表加载 |
|
|
|
|
icVisible: false, |
|
|
|
|
invitationCode: "", |
|
|
|
|
searchTimer: null, |
|
|
|
|
curRow: {}, |
|
|
|
|
ticker: null, // 倒计时定时器 |
|
|
|
|
item:{ |
|
|
|
|
|
|
|
|
|
}, |
|
|
|
|
projectId:null, |
|
|
|
|
url:'', |
|
|
|
|
cid:null, |
|
|
|
|
systemId:null, |
|
|
|
|
assessmentId:'', |
|
|
|
|
classId:'', |
|
|
|
|
stopTime:'', |
|
|
|
|
sss:1, |
|
|
|
|
datassdata:0, |
|
|
|
|
}; |
|
|
|
|
}, |
|
|
|
|
computed: { |
|
|
|
|
...mapState("user", [ |
|
|
|
|
"userId", "schoolId", "studentId", "userName" |
|
|
|
|
]) |
|
|
|
|
}, |
|
|
|
|
watch: { |
|
|
|
|
"form.month": function(val) { |
|
|
|
|
if (val) { |
|
|
|
|
let unit = 24 * 60 * 60 * 1000; |
|
|
|
|
this.date = [util.formatDate("yyyy-MM-dd", new Date(new Date().getTime() - unit * 30 * val)), util.formatDate("yyyy-MM-dd", new Date(new Date().getTime() + unit))]; |
|
|
|
|
} else { |
|
|
|
|
this.date = []; |
|
|
|
|
} |
|
|
|
|
name: "ass", |
|
|
|
|
data () { |
|
|
|
|
return { |
|
|
|
|
tickerArr: [], |
|
|
|
|
classList: [], |
|
|
|
|
courseList: [], |
|
|
|
|
host: Setting.apiBaseURL, |
|
|
|
|
status: ["待开始", "进行中", "已结束"], |
|
|
|
|
statusList: [{ |
|
|
|
|
name: "不限", |
|
|
|
|
value: "" |
|
|
|
|
}, { |
|
|
|
|
name: "待开始", |
|
|
|
|
value: 0 |
|
|
|
|
}, { |
|
|
|
|
name: "进行中", |
|
|
|
|
value: 1 |
|
|
|
|
}, { |
|
|
|
|
name: "已结束", |
|
|
|
|
value: 2 |
|
|
|
|
}], |
|
|
|
|
stuState: ["未考", "在考", "已考"], |
|
|
|
|
listData: [], |
|
|
|
|
date: [], |
|
|
|
|
form: { |
|
|
|
|
keyWord: '', |
|
|
|
|
month: "", |
|
|
|
|
startTime: "", |
|
|
|
|
endTime: "", |
|
|
|
|
status: "", |
|
|
|
|
curriculumId: "", |
|
|
|
|
classId: "" |
|
|
|
|
}, |
|
|
|
|
dateList: [ |
|
|
|
|
{ |
|
|
|
|
id: "", |
|
|
|
|
name: "不限" |
|
|
|
|
}, |
|
|
|
|
date: function(val) { |
|
|
|
|
if (val) { |
|
|
|
|
this.form.startTime = val[0]; |
|
|
|
|
this.form.endTime = val[1]; |
|
|
|
|
} else { |
|
|
|
|
this.form.startTime = ""; |
|
|
|
|
this.form.endTime = ""; |
|
|
|
|
} |
|
|
|
|
this.initData(); |
|
|
|
|
{ |
|
|
|
|
id: 1, |
|
|
|
|
name: "近一个月" |
|
|
|
|
}, |
|
|
|
|
{ |
|
|
|
|
id: 3, |
|
|
|
|
name: "近三个月" |
|
|
|
|
}, |
|
|
|
|
'form.keyWord': function(val) { |
|
|
|
|
clearTimeout(this.searchTimer); |
|
|
|
|
this.searchTimer = setTimeout(() => { |
|
|
|
|
this.initData(); |
|
|
|
|
}, 500); |
|
|
|
|
{ |
|
|
|
|
id: 6, |
|
|
|
|
name: "近六个月" |
|
|
|
|
} |
|
|
|
|
], |
|
|
|
|
page: 1, |
|
|
|
|
pageSize: 10, |
|
|
|
|
totals: 0, |
|
|
|
|
listLoading: false,// 列表加载 |
|
|
|
|
icVisible: false, |
|
|
|
|
invitationCode: "", |
|
|
|
|
searchTimer: null, |
|
|
|
|
curRow: {}, |
|
|
|
|
ticker: null, // 倒计时定时器 |
|
|
|
|
item: { |
|
|
|
|
|
|
|
|
|
}, |
|
|
|
|
projectId: null, |
|
|
|
|
url: '', |
|
|
|
|
cid: null, |
|
|
|
|
systemId: null, |
|
|
|
|
assessmentId: '', |
|
|
|
|
classId: '', |
|
|
|
|
stopTime: '', |
|
|
|
|
sss: 1, |
|
|
|
|
datassdata: 0, |
|
|
|
|
}; |
|
|
|
|
}, |
|
|
|
|
computed: { |
|
|
|
|
...mapState("user", [ |
|
|
|
|
"userId", "schoolId", "studentId", "userName" |
|
|
|
|
]) |
|
|
|
|
}, |
|
|
|
|
watch: { |
|
|
|
|
"form.month": function (val) { |
|
|
|
|
if (val) { |
|
|
|
|
let unit = 24 * 60 * 60 * 1000; |
|
|
|
|
this.date = [util.formatDate("yyyy-MM-dd", new Date(new Date().getTime() - unit * 30 * val)), util.formatDate("yyyy-MM-dd", new Date(new Date().getTime() + unit))]; |
|
|
|
|
} else { |
|
|
|
|
this.date = []; |
|
|
|
|
} |
|
|
|
|
}, |
|
|
|
|
mounted() { |
|
|
|
|
// 页面离开的时候销毁手机和邮箱验证码定时器 |
|
|
|
|
this.$once("hook:beforeDestroy", function() { |
|
|
|
|
this.sss = 0 |
|
|
|
|
clearInterval(this.ticker); |
|
|
|
|
this.ticker = null; |
|
|
|
|
}); |
|
|
|
|
this.getData(); |
|
|
|
|
this.getCourseData(); |
|
|
|
|
this.getClassData(); |
|
|
|
|
date: function (val) { |
|
|
|
|
if (val) { |
|
|
|
|
this.form.startTime = val[0]; |
|
|
|
|
this.form.endTime = val[1]; |
|
|
|
|
} else { |
|
|
|
|
this.form.startTime = ""; |
|
|
|
|
this.form.endTime = ""; |
|
|
|
|
} |
|
|
|
|
this.initData(); |
|
|
|
|
}, |
|
|
|
|
methods: { |
|
|
|
|
timeFilter(countDown) { |
|
|
|
|
if (countDown.countDown > 0) { |
|
|
|
|
let h = Math.floor(countDown.countDown / (60 * 60)); |
|
|
|
|
let m = Math.floor(countDown.countDown % (60 * 60) / 60); |
|
|
|
|
let s = Math.floor(countDown.countDown % (60 * 60) % 60); |
|
|
|
|
return `${h > 9 ? h : `0${h}`}:${m > 9 ? m : `0${m}`}:${s > 9 ? s : `0${s}`}`; |
|
|
|
|
} else { |
|
|
|
|
if (countDown.status == 1){ |
|
|
|
|
this.$post(`${this.api.collectPaper}?id=${countDown.assessmentId}`).then(res => { |
|
|
|
|
}) |
|
|
|
|
}else{ |
|
|
|
|
|
|
|
|
|
} |
|
|
|
|
return "00:00:00"; |
|
|
|
|
} |
|
|
|
|
}, |
|
|
|
|
beginTimer() { |
|
|
|
|
this.ticker = setInterval(() => { |
|
|
|
|
if(this.sss == 0){ |
|
|
|
|
this.ticker = null; |
|
|
|
|
clearInterval(this.ticker); |
|
|
|
|
}else{ |
|
|
|
|
for (let i = 0; i < this.listData.length; i++) { |
|
|
|
|
const item = this.listData[i]; |
|
|
|
|
if (item.countDown > 0) { |
|
|
|
|
item.countDown--; |
|
|
|
|
} else { |
|
|
|
|
if (item.status == 0 && item.type == 2) { // 待开始-定时发布 |
|
|
|
|
item.status = 1; |
|
|
|
|
item.countDown = (new Date(item.stopTime).getTime() - new Date().getTime()) / 1000; |
|
|
|
|
} else if (item.status == 1) { |
|
|
|
|
// item.status = 2; |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
item.show = true; |
|
|
|
|
this.$set(this.listData, i, item); |
|
|
|
|
} |
|
|
|
|
'form.keyWord': function (val) { |
|
|
|
|
clearTimeout(this.searchTimer); |
|
|
|
|
this.searchTimer = setTimeout(() => { |
|
|
|
|
this.initData(); |
|
|
|
|
}, 500); |
|
|
|
|
} |
|
|
|
|
}, |
|
|
|
|
mounted () { |
|
|
|
|
// 页面离开的时候销毁手机和邮箱验证码定时器 |
|
|
|
|
this.$once("hook:beforeDestroy", function () { |
|
|
|
|
this.sss = 0 |
|
|
|
|
clearInterval(this.ticker); |
|
|
|
|
this.ticker = null; |
|
|
|
|
}); |
|
|
|
|
this.getData(); |
|
|
|
|
this.getCourseData(); |
|
|
|
|
this.getClassData(); |
|
|
|
|
}, |
|
|
|
|
methods: { |
|
|
|
|
timeFilter (countDown) { |
|
|
|
|
if (countDown.countDown > 0) { |
|
|
|
|
let h = Math.floor(countDown.countDown / (60 * 60)); |
|
|
|
|
let m = Math.floor(countDown.countDown % (60 * 60) / 60); |
|
|
|
|
let s = Math.floor(countDown.countDown % (60 * 60) % 60); |
|
|
|
|
return `${h > 9 ? h : `0${h}`}:${m > 9 ? m : `0${m}`}:${s > 9 ? s : `0${s}`}`; |
|
|
|
|
} else { |
|
|
|
|
if (countDown.status == 1) { |
|
|
|
|
this.$post(`${this.api.collectPaper}?id=${countDown.assessmentId}`).then(res => { |
|
|
|
|
}) |
|
|
|
|
} else { |
|
|
|
|
|
|
|
|
|
} |
|
|
|
|
}, 1000); |
|
|
|
|
}, |
|
|
|
|
getData() { |
|
|
|
|
this.listLoading = true; |
|
|
|
|
this.sss = 0 |
|
|
|
|
this.listData.splice(0); |
|
|
|
|
if (this.ticker) { |
|
|
|
|
clearInterval(this.ticker); |
|
|
|
|
} |
|
|
|
|
let data = { |
|
|
|
|
...this.form, |
|
|
|
|
pageNum: this.page, |
|
|
|
|
pageSize: this.pageSize |
|
|
|
|
}; |
|
|
|
|
this.$post(this.api.pageStuAssessment, data).then(res => { |
|
|
|
|
this.listData = res.list; |
|
|
|
|
for (var i=0;i<this.listData.length;i++){ |
|
|
|
|
if (this.listData[i].reportId == undefined){ |
|
|
|
|
this.listData[i].reportId = null |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
this.totals = res.total; |
|
|
|
|
this.listData.forEach(i => { |
|
|
|
|
i.show = false; |
|
|
|
|
if (i.status == 2) { // 已结束 |
|
|
|
|
i.countDown = 0; |
|
|
|
|
} else { |
|
|
|
|
if (i.type == 2) { // 定时发布 |
|
|
|
|
if (i.status == 0) { |
|
|
|
|
// 待开始 |
|
|
|
|
i.countDown = (new Date(i.startTime).getTime() - new Date().getTime()) / 1000; // 获得两个日期时间的秒数差 |
|
|
|
|
} else if (i.status == 1) { |
|
|
|
|
// 进行中 |
|
|
|
|
i.countDown = (new Date(i.stopTime).getTime() - new Date().getTime()) / 1000; |
|
|
|
|
} |
|
|
|
|
} else if (i.type == 1) { // 手动发布 |
|
|
|
|
if (i.status == 0) { |
|
|
|
|
// 待开始 |
|
|
|
|
i.countDown = 0; |
|
|
|
|
} else if (i.status == 1) { |
|
|
|
|
// 进行中 |
|
|
|
|
i.countDown = (new Date(i.stopTime).getTime() - new Date().getTime()) / 1000; |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
}); |
|
|
|
|
this.sss = 1; |
|
|
|
|
// if(this.datassdata == 0){ |
|
|
|
|
// this.datassdata = this.datassdata+1 |
|
|
|
|
this.beginTimer() |
|
|
|
|
// } |
|
|
|
|
this.listLoading = false; |
|
|
|
|
}).catch(err => { |
|
|
|
|
this.listLoading = false; |
|
|
|
|
}); |
|
|
|
|
}, |
|
|
|
|
initData() { |
|
|
|
|
this.sss = 0 |
|
|
|
|
this.page = 1; |
|
|
|
|
this.getData(); |
|
|
|
|
}, |
|
|
|
|
getCourseData() { |
|
|
|
|
this.$get(this.api.getPythonSysByStuAccountId).then(res => { |
|
|
|
|
this.courseList = res.list; |
|
|
|
|
}).catch(err => { |
|
|
|
|
}); |
|
|
|
|
}, |
|
|
|
|
getClassData() { |
|
|
|
|
this.$post(this.api.myClassByStudent).then(({ data }) => { |
|
|
|
|
this.classList = data.filter(e => e) |
|
|
|
|
}).catch(err => { |
|
|
|
|
}); |
|
|
|
|
}, |
|
|
|
|
handleCurrentChange(val) { // 切换页码 |
|
|
|
|
this.page = val; |
|
|
|
|
this.sss = 0 |
|
|
|
|
this.getData(); |
|
|
|
|
}, |
|
|
|
|
entry(row) { // 进入考核 |
|
|
|
|
this.item = row |
|
|
|
|
this.assessmentId =this.item.assessmentId |
|
|
|
|
this.classId = this.item.classId |
|
|
|
|
if (row.status == 0) { |
|
|
|
|
return util.warningMsg("该实验尚未开始"); |
|
|
|
|
} else if (row.status == 2) { |
|
|
|
|
return util.warningMsg("该实验已经结束"); |
|
|
|
|
} |
|
|
|
|
return "00:00:00"; |
|
|
|
|
} |
|
|
|
|
}, |
|
|
|
|
beginTimer () { |
|
|
|
|
this.ticker = setInterval(() => { |
|
|
|
|
if (this.sss == 0) { |
|
|
|
|
this.ticker = null; |
|
|
|
|
clearInterval(this.ticker); |
|
|
|
|
} else { |
|
|
|
|
for (let i = 0; i < this.listData.length; i++) { |
|
|
|
|
const item = this.listData[i]; |
|
|
|
|
if (item.countDown > 0) { |
|
|
|
|
item.countDown--; |
|
|
|
|
} else { |
|
|
|
|
this.curRow = row; |
|
|
|
|
if (row.isEnableCode == 0) { // 是否启用邀请码(0、未启用 1、启用) |
|
|
|
|
this.$post(`${this.api.enterExam}?assessmentId=${row.assessmentId}&classId=${row.classId}`).then(res => { |
|
|
|
|
this.curRow.curriculumId = res.info.systemId |
|
|
|
|
this.projectId = res.projectId |
|
|
|
|
this.url = res.url |
|
|
|
|
this.cid = res.info.cid |
|
|
|
|
this.systemId = res.info.systemId |
|
|
|
|
var date = res.assessmentInfo.stopTime; |
|
|
|
|
date = date.substring(0,19); |
|
|
|
|
date = date.replace(/-/g,'/'); |
|
|
|
|
this.stopTime = new Date(date).getTime(); |
|
|
|
|
this.goSubSystem(); |
|
|
|
|
}).catch(res => { |
|
|
|
|
}); |
|
|
|
|
} else { |
|
|
|
|
this.icVisible = true |
|
|
|
|
} |
|
|
|
|
if (item.status == 0 && item.type == 2) { // 待开始-定时发布 |
|
|
|
|
item.status = 1; |
|
|
|
|
item.countDown = (new Date(item.stopTime).getTime() - new Date().getTime()) / 1000; |
|
|
|
|
} else if (item.status == 1) { |
|
|
|
|
// item.status = 2; |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
}, |
|
|
|
|
show(row) { // 查看成绩 |
|
|
|
|
this.$router.push(`/record/show?reportId=${row.reportId}`); |
|
|
|
|
}, |
|
|
|
|
saveIc() { |
|
|
|
|
if (!this.invitationCode) return util.warningMsg("请输入邀请码"); |
|
|
|
|
if (!this.invitationCode || String(this.invitationCode).length < 6 || isNaN(this.invitationCode)) return util.warningMsg("请输入6位纯数字邀请码"); |
|
|
|
|
this.$post(`${this.api.enterExam}?assessmentId=${this.item.assessmentId}&classId=${this.item.classId}&invitationCode=${this.invitationCode}`).then(res => { |
|
|
|
|
util.successMsg("验证成功!"); |
|
|
|
|
this.icVisible = false; |
|
|
|
|
this.projectId = res.projectId |
|
|
|
|
this.url = res.url |
|
|
|
|
this.cid = res.info.cid |
|
|
|
|
this.systemId = res.info.systemId |
|
|
|
|
setTimeout(() => { |
|
|
|
|
this.goSubSystem(); |
|
|
|
|
}, 1000); |
|
|
|
|
}).catch(res => { |
|
|
|
|
}); |
|
|
|
|
}, |
|
|
|
|
closeIc() { |
|
|
|
|
this.invitationCode = ""; |
|
|
|
|
}, |
|
|
|
|
goSubSystem() { |
|
|
|
|
let token = util.local.get(Setting.tokenKey) |
|
|
|
|
const classId = this.classId |
|
|
|
|
const classItem = this.classList.find(e => e.id == classId) |
|
|
|
|
let curriculumId = this.curRow.curriculumId |
|
|
|
|
util.cookies.set("token", token) |
|
|
|
|
util.cookies.set("assessmentId", this.assessmentId) |
|
|
|
|
util.cookies.set("classId", classId) |
|
|
|
|
util.cookies.set("className", classItem ? encodeURI(classItem.className) : '') |
|
|
|
|
util.cookies.set("projectId", this.projectId) |
|
|
|
|
util.cookies.set("courseId", this.cid) |
|
|
|
|
util.cookies.set("curriculumName", escape(this.curRow.sysName)); |
|
|
|
|
util.cookies.set("startTime", this.curRow.startTime) |
|
|
|
|
util.cookies.set("stopTime", this.curRow.stopTime) |
|
|
|
|
util.cookies.set("systemId", this.systemId); |
|
|
|
|
util.cookies.set('fromManager', '', -1) |
|
|
|
|
util.cookies.set('competitionId', '', -1) |
|
|
|
|
let href = '' |
|
|
|
|
if (curriculumId == 11){ |
|
|
|
|
href = `${Setting.systemPath}/#/index/list?token=${token}&cid=${this.cid}&systemId=${this.systemId}&projectId=${this.projectId}&assessmentId=${this.assessmentId}&classId=${this.classId}&stopTime=${this.stopTime}`; |
|
|
|
|
} else if (curriculumId == 12) { |
|
|
|
|
// 众筹系统 |
|
|
|
|
window.open(`http://120.78.139.126:8879?systemId=${this.systemId}&courseId=${this.cid}&projectId=${this.projectId}&token=${token}&userId=${this.userId}&assessmentId=${this.assessmentId}&classId=${this.curRow.classId}`); |
|
|
|
|
} else { |
|
|
|
|
if(process.env.NODE_ENV === 'development') { |
|
|
|
|
href = 'http://192.168.31.125:8085/#/' |
|
|
|
|
} else { |
|
|
|
|
href = `${location.origin}/pyTrials` // 8个python子系统都跳这个地址,子系统会通过cookie里的systemId识别展示哪套系统 |
|
|
|
|
} |
|
|
|
|
item.show = true; |
|
|
|
|
this.$set(this.listData, i, item); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
} |
|
|
|
|
}, 1000); |
|
|
|
|
}, |
|
|
|
|
getData () { |
|
|
|
|
this.listLoading = true; |
|
|
|
|
this.sss = 0 |
|
|
|
|
this.listData.splice(0); |
|
|
|
|
if (this.ticker) { |
|
|
|
|
clearInterval(this.ticker); |
|
|
|
|
} |
|
|
|
|
let data = { |
|
|
|
|
...this.form, |
|
|
|
|
pageNum: this.page, |
|
|
|
|
pageSize: this.pageSize |
|
|
|
|
}; |
|
|
|
|
this.$post(this.api.pageStuAssessment, data).then(res => { |
|
|
|
|
this.listData = res.list; |
|
|
|
|
for (var i = 0; i < this.listData.length; i++) { |
|
|
|
|
if (this.listData[i].reportId == undefined) { |
|
|
|
|
this.listData[i].reportId = null |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
this.totals = res.total; |
|
|
|
|
this.listData.forEach(i => { |
|
|
|
|
i.show = false; |
|
|
|
|
if (i.status == 2) { // 已结束 |
|
|
|
|
i.countDown = 0; |
|
|
|
|
} else { |
|
|
|
|
if (i.type == 2) { // 定时发布 |
|
|
|
|
if (i.status == 0) { |
|
|
|
|
// 待开始 |
|
|
|
|
i.countDown = (new Date(i.startTime).getTime() - new Date().getTime()) / 1000; // 获得两个日期时间的秒数差 |
|
|
|
|
} else if (i.status == 1) { |
|
|
|
|
// 进行中 |
|
|
|
|
i.countDown = (new Date(i.stopTime).getTime() - new Date().getTime()) / 1000; |
|
|
|
|
} |
|
|
|
|
} else if (i.type == 1) { // 手动发布 |
|
|
|
|
if (i.status == 0) { |
|
|
|
|
// 待开始 |
|
|
|
|
i.countDown = 0; |
|
|
|
|
} else if (i.status == 1) { |
|
|
|
|
// 进行中 |
|
|
|
|
i.countDown = (new Date(i.stopTime).getTime() - new Date().getTime()) / 1000; |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
if (!href) return util.errorMsg("该考核非Python考核,请选择其他考核"); |
|
|
|
|
location.href = href; |
|
|
|
|
} |
|
|
|
|
}); |
|
|
|
|
this.sss = 1; |
|
|
|
|
// if(this.datassdata == 0){ |
|
|
|
|
// this.datassdata = this.datassdata+1 |
|
|
|
|
this.beginTimer() |
|
|
|
|
// } |
|
|
|
|
this.listLoading = false; |
|
|
|
|
}).catch(err => { |
|
|
|
|
this.listLoading = false; |
|
|
|
|
}); |
|
|
|
|
}, |
|
|
|
|
initData () { |
|
|
|
|
this.sss = 0 |
|
|
|
|
this.page = 1; |
|
|
|
|
this.getData(); |
|
|
|
|
}, |
|
|
|
|
getCourseData () { |
|
|
|
|
this.$get(this.api.getPythonSysByStuAccountId).then(res => { |
|
|
|
|
this.courseList = res.list; |
|
|
|
|
}).catch(err => { |
|
|
|
|
}); |
|
|
|
|
}, |
|
|
|
|
getClassData () { |
|
|
|
|
this.$post(this.api.myClassByStudent).then(({ data }) => { |
|
|
|
|
this.classList = data.filter(e => e) |
|
|
|
|
}).catch(err => { |
|
|
|
|
}); |
|
|
|
|
}, |
|
|
|
|
handleCurrentChange (val) { // 切换页码 |
|
|
|
|
this.page = val; |
|
|
|
|
this.sss = 0 |
|
|
|
|
this.getData(); |
|
|
|
|
}, |
|
|
|
|
entry (row) { // 进入考核 |
|
|
|
|
this.item = row |
|
|
|
|
this.assessmentId = this.item.assessmentId |
|
|
|
|
this.classId = this.item.classId |
|
|
|
|
if (row.status == 0) { |
|
|
|
|
return util.warningMsg("该实验尚未开始"); |
|
|
|
|
} else if (row.status == 2) { |
|
|
|
|
return util.warningMsg("该实验已经结束"); |
|
|
|
|
} else { |
|
|
|
|
this.curRow = row; |
|
|
|
|
if (row.isEnableCode == 0) { // 是否启用邀请码(0、未启用 1、启用) |
|
|
|
|
this.$post(`${this.api.enterExam}?assessmentId=${row.assessmentId}&classId=${row.classId}`).then(res => { |
|
|
|
|
this.curRow.curriculumId = res.info.systemId |
|
|
|
|
this.projectId = res.projectId |
|
|
|
|
this.url = res.url |
|
|
|
|
this.cid = res.info.cid |
|
|
|
|
this.systemId = res.info.systemId |
|
|
|
|
var date = res.assessmentInfo.stopTime; |
|
|
|
|
date = date.substring(0, 19); |
|
|
|
|
date = date.replace(/-/g, '/'); |
|
|
|
|
this.stopTime = new Date(date).getTime(); |
|
|
|
|
this.goSubSystem(); |
|
|
|
|
}).catch(res => { |
|
|
|
|
}); |
|
|
|
|
} else { |
|
|
|
|
this.icVisible = true |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
}, |
|
|
|
|
show (row) { // 查看成绩 |
|
|
|
|
this.$router.push(`/record/show?reportId=${row.reportId}`); |
|
|
|
|
}, |
|
|
|
|
saveIc () { |
|
|
|
|
if (!this.invitationCode) return util.warningMsg("请输入邀请码"); |
|
|
|
|
if (!this.invitationCode || String(this.invitationCode).length < 6 || isNaN(this.invitationCode)) return util.warningMsg("请输入6位纯数字邀请码"); |
|
|
|
|
this.$post(`${this.api.enterExam}?assessmentId=${this.item.assessmentId}&classId=${this.item.classId}&invitationCode=${this.invitationCode}`).then(res => { |
|
|
|
|
util.successMsg("验证成功!"); |
|
|
|
|
this.icVisible = false; |
|
|
|
|
this.projectId = res.projectId |
|
|
|
|
this.url = res.url |
|
|
|
|
this.cid = res.info.cid |
|
|
|
|
this.systemId = res.info.systemId |
|
|
|
|
setTimeout(() => { |
|
|
|
|
this.goSubSystem(); |
|
|
|
|
}, 1000); |
|
|
|
|
}).catch(res => { |
|
|
|
|
}); |
|
|
|
|
}, |
|
|
|
|
closeIc () { |
|
|
|
|
this.invitationCode = ""; |
|
|
|
|
}, |
|
|
|
|
goSubSystem () { |
|
|
|
|
let token = util.local.get(Setting.tokenKey) |
|
|
|
|
const classId = this.classId |
|
|
|
|
const classItem = this.classList.find(e => e.id == classId) |
|
|
|
|
let curriculumId = this.curRow.curriculumId |
|
|
|
|
util.cookies.set("token", token) |
|
|
|
|
util.cookies.set("assessmentId", this.assessmentId) |
|
|
|
|
util.cookies.set("classId", classId) |
|
|
|
|
util.cookies.set("className", classItem ? encodeURI(classItem.className) : '') |
|
|
|
|
util.cookies.set("projectId", this.projectId) |
|
|
|
|
util.cookies.set("courseId", this.cid) |
|
|
|
|
util.cookies.set("curriculumName", escape(this.curRow.sysName)); |
|
|
|
|
util.cookies.set("startTime", this.curRow.startTime) |
|
|
|
|
util.cookies.set("stopTime", this.curRow.stopTime) |
|
|
|
|
util.cookies.set("systemId", this.systemId); |
|
|
|
|
util.cookies.set('fromManager', '', -1) |
|
|
|
|
util.cookies.set('competitionId', '', -1) |
|
|
|
|
util.cookies.set('isSubmit', '', -1) |
|
|
|
|
let href = '' |
|
|
|
|
if (curriculumId == 11) { |
|
|
|
|
href = `${Setting.systemPath}/#/index/list?token=${token}&cid=${this.cid}&systemId=${this.systemId}&projectId=${this.projectId}&assessmentId=${this.assessmentId}&classId=${this.classId}&stopTime=${this.stopTime}`; |
|
|
|
|
} else if (curriculumId == 12) { |
|
|
|
|
// 众筹系统 |
|
|
|
|
window.open(`http://120.78.139.126:8879?systemId=${this.systemId}&courseId=${this.cid}&projectId=${this.projectId}&token=${token}&userId=${this.userId}&assessmentId=${this.assessmentId}&classId=${this.curRow.classId}`); |
|
|
|
|
} else { |
|
|
|
|
if (process.env.NODE_ENV === 'development') { |
|
|
|
|
href = 'http://192.168.31.125:8085/#/' |
|
|
|
|
} else { |
|
|
|
|
href = `${location.origin}/pyTrials` // 8个python子系统都跳这个地址,子系统会通过cookie里的systemId识别展示哪套系统 |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
if (!href) return util.errorMsg("该考核非Python考核,请选择其他考核"); |
|
|
|
|
location.href = href; |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
}; |
|
|
|
|
</script> |
|
|
|
|
|
|
|
|
|