feat:增加项目-系统考试-查看答卷

This commit is contained in:
wyx
2023-02-13 10:52:29 +08:00
parent f896d6f3dd
commit 410c721aad
3 changed files with 308 additions and 2 deletions

View File

@@ -0,0 +1,275 @@
<!-- 查看系统考试答卷--iframe嵌套 -->
<template>
<a-drawer
:visible="CAvisible"
class="drawerStyle CheckAnsware"
placement="right"
width="40%"
@after-visible-change="afterVisibleChange"
>
<div class="drawerMain">
<div class="headersub">
<div class="headerTitle">查看答卷</div>
<img
style="width:29px;height:29px;cursor:pointer"
src="../../assets/images/basicinfo/close.png"
@click="closeDrawer"
/>
</div>
<!-- <div class="headersup"><span>评估名称<span style="color:#999ba3">管理者进阶作业</span></span><span style="margin-left:25px">考试总分<span style="color:#999ba3">100</span></span><span style="margin-left:25px">及格分<span style="color:#999ba3">60</span></span></div> -->
<div class="main" style="height:860px;display: flex;">
<iframe
id="iframe"
style="width: 100%; height: 100%;"
:src="iframeUrl + '/exam/viewanswer?id=' + datasource.targetId "
frameborder="0"
name="myframe"
security="restricted"
sandbox="allow-forms allow-scripts allow-same-origin allow-popups"
>
</iframe>
</div>
<!-- <div class="btnn">
<button class="btn1">取消</button>
<button class="btn2">确定</button>
</div> -->
</div>
</a-drawer>
</template>
<script>
import { toRefs,reactive } from '@vue/reactivity';
import { message } from 'ant-design-vue';
import { iframeUrl } from "../../api/method";
import {queryUserAnswerDetail} from '@/api/indexExam';
export default {
name:"CheckAnsware",
props:{
CAvisible:{
type:Boolean,
default:false,
},
datasource:{
type: Object,
default: function () {
return {};
},
}
},
setup(props,ctx){
const state = reactive({
score:null, //传过来赋给score
queData:[
{
quetype:"判断",
quename:"当前项目对您是否有帮助?",
value:1,
answer:[
{
value:1,
answercontent:"错误",
analysis:"暂无解析",
},
]
},
{
quetype:"多选",
quename:"哪些项目跨年快乐memememememeemme?",
value:2,
answer:[
{
value:1,
answercontent:"A、有帮助"
},
{
value:2,
answercontent:"B、mei帮助"
},
{
value:3,
answercontent:"C、mei5155帮助"
},
{
value:4,
answercontent:"D、12345mei帮助"
}
],
answercontent:"错误",
analysis:"暂无解析",
},
{
quetype:"多选",
quename:"哪些项目跨年快乐memememememeemme?",
value:3,
answer:[
{
value:1,
answercontent:"A、有帮助"
},
{
value:2,
answercontent:"B、mei帮助"
},
{
value:3,
answercontent:"C、mei5155帮助"
},
{
value:4,
answercontent:"D、12345mei帮助"
}
]
},
{
quetype:"判断",
quename:"当前项目对您是否有帮助?",
value:4,
answer:[
{
value:1,
answercontent:"错误",
analysis:"暂无解析",
},
]
},
],
iframeUrl: iframeUrl,
})
const closeDrawer = ()=> {
ctx.emit("update:CAvisible",false)
}
const afterVisibleChange = (bool) => {
console.log(bool);
if(bool == true) {
console.log(props.datasource)
}
}
const getQue = () => {
queryUserAnswerDetail(1).then(res => {
console.log(res)
}).catch(err =>{
message.error('用户答卷信息获取失败'+err)
})
}
return{
...toRefs(state),
closeDrawer,
afterVisibleChange,
getQue
}
}
};
</script>
<style lang="scss">
.CheckAnsware {
.drawerMain {
min-width: 400px;
margin: 0px 32px 0px 32px;
display: flex;
flex-direction: column;
.headersub {
height: 73px;
display: flex;
justify-content: space-between;
align-items: center;
.headerTitle {
font-size: 18px;
font-weight: 600;
color: #333333;
line-height: 25px;
}
}
.headersup{
border-bottom: 1px solid #e8e8e8;
padding-bottom: 20px;
}
.main {
width: 100%;
overflow-y: auto;
margin-bottom: 70px;
.basetext{
color: #333333;
line-height: 25px;
margin-top: 27px ;
margin-bottom: 27px ;
}
.basequestion{
.ques{
.quename{
margin: 10px auto ;
font-weight: bold;
}
.queanswer{
padding-left: 25px;
.queabox{
margin-bottom: 10px;
.single{
padding: 5px;
.queaboxs{
display: flex;
flex-direction: column;
}
.analysisbox{
border: 1px solid #e8e8e8;
box-shadow: 0px 1px 35px 0px rgba(118, 136, 166, 0.07);
border-radius: 8px;
margin-left: -10px;
padding: 5px 10px;
}
}
.multiple{
padding: 5px;
.queaboxs{
display: flex;
flex-direction: column;
}
.analysisbox{
border: 1px solid #e8e8e8;
box-shadow: 0px 1px 35px 0px rgba(118, 136, 166, 0.07);
border-radius: 8px;
margin-left: -10px;
padding: 5px 10px;
}
}
}
}
}
}
}
.btnn {
height: 72px;
width: 100%;
position: absolute;
bottom: 0;
left: 0;
background-color: #fff;
display: flex;
align-items: center;
justify-content: center;
box-shadow: 0px 1px 35px 0px rgba(118, 136, 166, 0.16);
.btn1 {
width: 100px;
height: 40px;
border: 1px solid #4ea6ff;
border-radius: 8px;
color: #4ea6ff;
background-color: #fff;
cursor: pointer;
}
.btn2 {
cursor: pointer;
width: 100px;
height: 40px;
background: #4ea6ff;
border-radius: 8px;
border: 0;
margin-left: 15px;
color: #fff;
}
}
}
}
</style>

View File

@@ -116,12 +116,15 @@
<!-- 导出成绩抽屉 --> <!-- 导出成绩抽屉 -->
<EScore v-model:eScorevisible="eScorevisible" /> <EScore v-model:eScorevisible="eScorevisible" />
</a-drawer> </a-drawer>
<!-- 查看答卷抽屉 -->
<CheckAnsware v-model:CAvisible="CAvisible" :datasource="datasource"/>
</template> </template>
<script> <script>
import { toRefs, reactive } from "vue"; import { toRefs, reactive } from "vue";
import { message } from "ant-design-vue"; import { message } from "ant-design-vue";
import EScore from "../ExportScore.vue"; import EScore from "../ExportScore.vue";
import CheckAnsware from '../CheckAnsware.vue'
import * as api from '../../../api/indexTaskManage'; import * as api from '../../../api/indexTaskManage';
// import * as api from "../../../api/index"; // import * as api from "../../../api/index";
@@ -129,6 +132,7 @@ export default {
name: "ProjectExamManage", name: "ProjectExamManage",
components: { components: {
EScore, EScore,
CheckAnsware
}, },
props: { props: {
TMvisible: { TMvisible: {
@@ -302,8 +306,34 @@ export default {
className: "h", className: "h",
customRender: ({record:{finishStatus}}) => ({1:'通过',2:'未通过'}[finishStatus] || '未开始'), customRender: ({record:{finishStatus}}) => ({1:'通过',2:'未通过'}[finishStatus] || '未开始'),
}, },
{
title: "操作",
dataIndex: "studentKid",
key: "studentKid",
width: 60,
align: "center",
ellipsis: true,
className: "h",
customRender: (text) => {
return (
<div class="racona">
<a
onClick={()=>{
state.studentKid = text.record.studentKid;
state.datasource = text.record;
state.CAvisible = true;
}}>
查看答卷
</a>
</div>
);
},
},
], ],
loadingData: true loadingData: true,
studentKid: '',
CAvisible: false,
datasource: ''
}); });
const closeDrawer = () => { const closeDrawer = () => {
@@ -358,6 +388,7 @@ export default {
status: state.projectName, status: state.projectName,
studentName: state.name, studentName: state.name,
}).then(res=>{ }).then(res=>{
console.log(res)
state.tabledata = res.data.data.records; state.tabledata = res.data.data.records;
state.tableDataTotal = res.data.data.total; state.tableDataTotal = res.data.data.total;
state.loadingData = false; state.loadingData = false;

View File

@@ -717,7 +717,7 @@ import ProjCheckShip from "../../components/drawers/ProjCheckPower";
import * as api from "../../api/index1"; import * as api from "../../api/index1";
import * as apiStu from "../../api/index"; import * as apiStu from "../../api/index";
import { message } from "ant-design-vue"; import { message } from "ant-design-vue";
import { storage } from "@/api/storage"; // import { storage } from "@/api/storage";
import { useStore } from "vuex"; import { useStore } from "vuex";
import OrgClass from "@/components/project/OrgClass"; import OrgClass from "@/components/project/OrgClass";
import NameInput from "@/components/project/NameInput"; import NameInput from "@/components/project/NameInput";