Files
UNION_HUTB/target/classes/views/platform/hd/zxdt/result.html
T
2026-09-09 09:14:28 +08:00

240 lines
11 KiB
HTML

<!--#
layout("/layouts/platform.html"){
#-->
<!-- 在线答题-数据分析 -->
<style>
#qsmEditor .w-e-text-container {
height: 450px !important;
}
#qsmEditor div {
z-index: 0 !important;
}
.el-divider {
background-color: #409EFF;
}
.el-divider__text {
color: #409EFF;
}
.inputParent input {
border: none;
border-bottom: 1px solid rgb(220, 223, 230);
border-radius: 0;
}
.subList > .el-table__header-wrapper {
display: none;
}
.subList .el-table__expanded-cell {
background-color: rgb(250, 250, 250) !important;
}
</style>
<div id="app" v-cloak>
<el-row class="transition-row">
<transition name="el-zoom-in-center">
<div v-show="v=='index'" class="transition-item">
<el-row class="header navbar bg-white shadow">
<div class="btn-group tool-button mt5">
<el-input placeholder="请输入内容" v-model="pageForm.searchKeyword">
<template slot="prepend">试卷名称</template>
</el-input>
</div>
<div class="btn-group tool-button mt5">
<el-button icon="el-icon-search" @click="doSearch"
style="background-color:#409eff;color: white;"></el-button>
</div>
</el-row>
<el-row class="el-table-container">
<el-table :data="tableData" size="medium" header-align="center" align="center" style="width: 100%">
<el-table-column
label="序号" type="index" header-align="center" align="center">
<template scope="scope">
<span>{{scope.$index+(pageForm.pageNumber - 1) * pageForm.pageSize + 1}} </span>
</template>
</el-table-column>
<el-table-column prop="name" label="试卷名称" header-align="center"
align="center"></el-table-column>
<el-table-column prop="explain_txt" label="说明" show-overflow-tooltip header-align="center"
align="center">
<template scope="scope">
<span v-html="scope.row.explain_txt"></span>
</template>
</el-table-column>
<el-table-column prop="answer_start_time" label="答题时间" header-align="center" align="center">
<template scope="scope">
<span>{{scope.row.answer_start_time}}-{{scope.row.answer_end_time}}</span>
</template>
</el-table-column>
<el-table-column prop="answer_num" label="答题次数" header-align="center"
align="center"></el-table-column>
<el-table-column prop="fraction" label="分值" header-align="center"
align="center"></el-table-column>
<el-table-column prop="create_time" label="创建时间" header-align="center"
align="center"></el-table-column>
<el-table-column label="操作" header-align="center" align="center" width="200px">
<template scope="scope">
<el-button type="primary" plain size="small" @click="openView(scope.row.id)">查看详情
</el-button>
</template>
</el-table-column>
</el-table>
</el-row>
<el-row class="el-pagination-container">
<el-pagination
@size-change="pageSizeChange"
@current-change="pageNumberChange"
:current-page="pageForm.pageNumber"
:page-sizes="[10, 20, 30, 50]"
:page-size="pageForm.pageSize"
layout="total, sizes, prev, pager, next, jumper"
:total="pageForm.totalCount">
</el-pagination>
</el-row>
</div>
</transition>
<!-- 查看 -->
<transition name="el-zoom-in-center">
<div v-show="v=='view'" class="transition-item">
<el-card class="box-card v-box" shadow="never">
<div slot="header" class="clearfix">
<el-button icon="el-icon-back" type="text" @click="v='index'"
style="font-size: 18px">返回
</el-button>
</div>
<div style="padding: 0 5%; height:calc(100vh - 150px);overflow-y: scroll">
<el-row style="text-align: center;margin-bottom: 20px">
<h2>{{viewData.hd_papers.name}}</h2>
<span style="color: rgb(120,120,120)">考试时间:{{viewData.hd_papers.answer_start_time}} - {{viewData.hd_papers.answer_end_time}}</span>&nbsp;&nbsp;&nbsp;
<span style="color: rgb(120,120,120)">分值:({{viewData.hd_papers.fraction}})</span>
</el-row>
<el-row style="margin-bottom: 20px">
<div v-html="viewData.hd_papers.explain_txt"></div>
</el-row>
<el-row v-for="sub,idx in viewData.hd_papers.subjects">
<el-row>
<span style="font-weight: bolder;color: rgb(120,120,120)">第 {{idx+1}} 题:</span>
<div v-html="sub.name" style="display: inline-block"></div>
<span style="color: rgb(180,180,180)" v-if="sub.type==1">[单选题]</span>
<span style="color: rgb(180,180,180)" v-if="sub.type==2">[多选题]</span>
</el-row>
<el-row style="margin: 20px 0">
<el-table :row-class-name="tableRowClassName" :data="sub.answer"
header-align="center"
style="width: 100%">
<el-table-column prop="option_txt" label="选项" header-align="center" align="center">
<template scope="scope">
{{scope.row.option_txt}}
</template>
</el-table-column>
<el-table-column prop="xj" label="小计" header-align="center" align="center">
</el-table-column>
<el-table-column prop="bl" label="比例" header-align="center" align="center">
<template scope="scope">
<el-progress v-if="scope.row.bl!=undefined"
:percentage="scope.row.bl"></el-progress>
</template>
</el-table-column>
</el-table>
</el-row>
</el-row>
</div>
</el-card>
</div>
</transition>
</el-row>
</div>
<script>
const vue = new Vue({
el: '#app',
data() {
return {
pageForm: {
searchName: "name",
searchKeyword: "",
pageNumber: 1,
pageSize: 10,
totalCount: 0,
pageOrderName: "",
pageOrderBy: "",
},
viewData: {hd_papers: {subjects: [{answer: []}]}},
tableData: [],
v: 'index',
}
},
methods: {
tableRowClassName(row) {
if (!row.row.bl) {
return 'last-row';
}
return '';
},
openView(id) {
$.get("/platform/hd/zxdt/result/findOne", {id: id}, (res) => {
const {code, data, msg} = res
if (code == 0) {
data.hd_papers.subjects.forEach((sub) => {
sub.answer.forEach((ans) => {
ans.xj = data[sub.id].hasOwnProperty(ans.id) ? data[sub.id][ans.id] : 0
ans.bl = (ans.xj / data[sub.id].yxs).toFixed(2) * 100
ans.bl = isNaN(ans.bl) ? 0 : ans.bl
})
sub.answer.push({option_txt: '本题有效填写人次', xj: data[sub.id].yxs})
}
)
this.viewData = data
this.v = 'view'
} else {
this.$message.error(msg)
}
})
},
doSearch() {
this.pageForm.pageNumber = 1;
this.pageData();
},
pageOrder(column) {//按字段排序
this.pageForm.pageOrderName = column.prop;
this.pageForm.pageOrderBy = column.order;
this.pageData();
},
pageNumberChange(val) {//页码更新操作
this.pageForm.pageNumber = val;
this.pageData();
},
pageSizeChange(val) {//分页大小更新操作
this.pageForm.pageSize = val;
this.pageData();
},
pageData() {//加载分页数据
sublime.showLoadingbar();
$.post(base + "/platform/hd/zxdt/result/pageData", this.pageForm, (res) => {
const {code, msg, data} = res
if (code == 0) {
this.tableData = data.list;
this.pageForm.totalCount = data.totalCount;
sublime.closeLoadingbar();
} else {
this.$message.error(msg);
}
}, "json");
},
},
created() {
this.pageData();
},
})
</script>
<!--#
}
#-->