|
@@ -5,8 +5,8 @@
|
|
|
<svg-icon icon-class="handonHint" class="warm-icon" />
|
|
|
<span class="warm-hint">{{ $t("studentWeb.exam.timeoutHint") }}</span>
|
|
|
</div>
|
|
|
- <span v-show="$store.getters.getItemTitle.progress != 'finish' && testState == 1" @click="showTest" style="color: #03966a;width: 100%;cursor: pointer;font-size:18px;font-weight: 800;text-align: center">前往作答</span>
|
|
|
- <h4 v-show='testState == 2'>成绩尚未结算</h4>
|
|
|
+ <span v-show="$store.getters.getItemTitle.progress != 'finish' && testState == 1" @click="showTest" style="color: #03966a;width: 100%;cursor: pointer;font-size:18px;font-weight: 800;text-align: center">{{$t("studentWeb.exam.report.anwser")}}</span>
|
|
|
+ <h4 v-show='testState == 2'>{{$t("studentWeb.exam.report.noRes")}}</h4>
|
|
|
<Row :gutter="20" v-if='testState == 3'>
|
|
|
<i-col :xs="24" :sm="24" :md="24" :lg="12">
|
|
|
<Row :gutter="20">
|
|
@@ -39,7 +39,7 @@
|
|
|
</i-col>
|
|
|
<i-col :xs="24" :sm="24" :md="12" :lg="12">
|
|
|
<Card class="score-card">
|
|
|
- <p class="card-title">得分题目数</p>
|
|
|
+ <p class="card-title">{{$t("studentWeb.exam.report.getScore")}}</p>
|
|
|
<div class="card-content">
|
|
|
<span class="myscore">{{rightAns.right}}</span> / {{rightAns.all}}
|
|
|
</div>
|
|
@@ -70,22 +70,22 @@
|
|
|
<div class="QAsheet" v-if='testState != 1'>
|
|
|
<div class='title-rect-group '>
|
|
|
<div class="title-rect" />
|
|
|
- <h2 class="title-rect-name" @click="checkedAnsFilter">评测作答回顾</h2>
|
|
|
+ <h2 class="title-rect-name" @click="checkedAnsFilter">{{$t("studentWeb.exam.report.answerBack")}}</h2>
|
|
|
</div>
|
|
|
<div class="filterBtn">
|
|
|
<label class="checkAns">
|
|
|
<input type="checkbox" value="right" v-model="checkedAns" />
|
|
|
- <span>答对: {{rightAns.right}}</span>
|
|
|
+ <span>{{$t("studentWeb.exam.report.right")}}: {{rightAns.right}}</span>
|
|
|
<div class="rightBtn"></div>
|
|
|
</label>
|
|
|
<label class="checkAns">
|
|
|
<input type="checkbox" value="wrong" v-model="checkedAns" />
|
|
|
- <span>答错: {{ examInfo.stuScore.length - rightAns.right - rightAns.noAns}}</span>
|
|
|
+ <span>{{$t("studentWeb.exam.report.wrong")}}: {{ examInfo.stuScore.length - rightAns.right - rightAns.noAns}}</span>
|
|
|
<div class="wrongBtn"></div>
|
|
|
</label>
|
|
|
<label class="checkAns" v-show=" rightAns.noAns != 0 ">
|
|
|
<input type="checkbox" value="noAns" v-model="checkedAns" />
|
|
|
- <span>未评分: {{ rightAns.noAns}}</span>
|
|
|
+ <span>{{$t("studentWeb.exam.report.noScore")}}: {{ rightAns.noAns}}</span>
|
|
|
<div class="noAnsBtn"></div>
|
|
|
</label>
|
|
|
</div>
|
|
@@ -136,7 +136,7 @@
|
|
|
<i-col :xs="2" :sm="2" :md="1" :lg="1">
|
|
|
<div class="qScore">
|
|
|
<span v-if="examInfo.stuScore[index] != -1">{{examInfo.stuScore[index]}}/{{question.score}}</span>
|
|
|
- <span v-if="examInfo.stuScore[index] == -1">未评分</span>
|
|
|
+ <span v-if="examInfo.stuScore[index] == -1">{{$t("studentWeb.exam.report.noScore")}}</span>
|
|
|
</div>
|
|
|
</i-col>
|
|
|
</Row>
|
|
@@ -146,24 +146,68 @@
|
|
|
<div v-for="(item,index) in question.option" style="display:flex;margin-top:5px;">
|
|
|
({{item.code}})<div style="margin-left:10px" v-html="item.value"></div>
|
|
|
</div>
|
|
|
- <div class="TitleRec1"><span style="margin:5px;color:#1472c7">作答结果:</span></div>
|
|
|
+ <div class="TitleRec1"><span style="margin:5px;color:#1472c7">{{$t("studentWeb.exam.report.ansRes")}}:</span></div>
|
|
|
<br />
|
|
|
- <div v-if="ansData[index]" style="margin-left:10px" v-html="ansData[index].length > 0 ? ansData[index][0] : '未作答'">32131{{ansData[index][0]}}</div>
|
|
|
+ <div v-if="ansData[index]" style="margin-left:10px" v-html="ansData[index].length > 0 ? ansData[index][0] : $t('studentWeb.exam.report.noScore')"></div>
|
|
|
</div>
|
|
|
</div>
|
|
|
<!--<br />-->
|
|
|
<div class="rightAnalys">
|
|
|
- <div class="TitleRec2"><span style="margin-left:5px">参考答案:</span></div>
|
|
|
+ <div class="TitleRec2"><span style="margin-left:5px">{{$t("studentWeb.exam.report.testAns")}}:</span></div>
|
|
|
<br />
|
|
|
<div style="display:flex">
|
|
|
<div v-for="(item,iundex) in question.answer" v-html="item" style="margin-left:10px;"></div>
|
|
|
</div>
|
|
|
- <div class="TitleRec2"><span style="margin-left:5px">解析:</span></div>
|
|
|
+ <div class="TitleRec2"><span style="margin-left:5px">{{$t("studentWeb.exam.report.testAnalyse")}}:</span></div>
|
|
|
<br />
|
|
|
- <div style="margin-left:10px;" v-html="question.explain != '' ? question.explain : '暂无解析' "></div>
|
|
|
- <div class="TitleRec2"><span style="margin-left:5px">补救资源:</span></div>
|
|
|
+ <div style="margin-left:10px;" v-html="question.explain != '' ? question.explain : $t('studentWeb.exam.report.noAnslyse') "></div>
|
|
|
+ <div v-show="examInfo.stuScore[index] != -1 && examInfo.stuScore[index] != question.score" class="TitleRec2"><span style="margin-left:5px">{{$t("studentWeb.exam.report.repairSource")}}:</span></div>
|
|
|
<br />
|
|
|
- <div style="margin-left:10px;" v-html="question.explain != '' ? question.explain : '暂无解析' "></div>
|
|
|
+ <div style="margin-left:10px;display:flex" v-show="examInfo.stuScore[index] != -1 && examInfo.stuScore[index] != question.score">
|
|
|
+ <div v-if="question.repair" class="repair-box">
|
|
|
+ <!--<Collapse style="width:85%" accordion @on-change="getSource(question.repair,question)">
|
|
|
+ <Panel name="1">
|
|
|
+ 链接资源
|
|
|
+ <p slot="content">
|
|
|
+ <List border size="small">
|
|
|
+ <ListItem v-for="(item,normalIndex) in repairSource.normal" :key="normalIndex">
|
|
|
+ <span style="margin-right:10px;" v-show="item.blobUrl">
|
|
|
+ <Icon color="#0066FF" custom="iconfont icon-share_link" size="20" />
|
|
|
+ </span><a>{{item.blobUrl}}</a>
|
|
|
+ <span v-show="item.blobUrl == undefined">暂无资源</span>
|
|
|
+ </ListItem>
|
|
|
+ <ListItem v-show="repairSource.normal.length == 0">
|
|
|
+ <span>暂无资源</span>
|
|
|
+ </ListItem>
|
|
|
+ </List>
|
|
|
+
|
|
|
+ </p>
|
|
|
+ </Panel>
|
|
|
+ <Panel name="2">
|
|
|
+ 文件资源
|
|
|
+ <p slot="content">
|
|
|
+ <List border size="small">
|
|
|
+ <ListItem v-for="(item,fileIndex) in repairSource.file" :key="fileIndex">
|
|
|
+ <span style="margin-right:10px;">
|
|
|
+ <Icon v-if="item.fileType == 'zip'" custom="iconfont icon-zip" size="20" />
|
|
|
+ <Icon v-else-if="item.fileType == 'zip'" color="#8199AF" custom="iconfont icon-zip" size="20" />
|
|
|
+ <Icon v-else-if="item.fileType == 'pdf'" color="#FF6464" custom="iconfont icon-pdf" size="20" />
|
|
|
+ <Icon v-else-if="item.fileType == 'ppt'|| item.fileType == 'pptx'" color="#FF8976" custom="iconfont icon-ppt" size="20" />
|
|
|
+ <Icon v-else-if="item.fileType == 'mp3'" color="#FF5562" custom="iconfont icon-mp3" size="20" />
|
|
|
+ <Icon v-else-if="item.fileType == 'mp4'" color="#8E4C9E" custom="iconfont icon-video1" size="20" />
|
|
|
+ <Icon v-else-if="item.fileType == 'zip'" custom="iconfont icon-video1" size="20" />
|
|
|
+ <Icon v-else-if="item.fileType == 'doc'||item.fileType =='docx'" color="#6CCBFF" custom="iconfont icon-word" size="20" />
|
|
|
+ <Icon v-else-if="item.fileType == 'csv'||item.fileType =='xlsx'||item.fileType =='xls'" color="#25C273" custom="iconfont icon-xlsx" size="20" />
|
|
|
+ <Icon v-else-if="item.fileType == 'jpg'||item.fileType =='png'||item.fileType =='jpeg'" color="#30D1CA" custom="iconfont icon-jpg" size="20" />
|
|
|
+ <Icon v-else custom="iconfont icon-V" size="20" />
|
|
|
+ </span><a>{{item.name}}</a>
|
|
|
+ </ListItem>
|
|
|
+ </List>
|
|
|
+ </p>
|
|
|
+ </Panel>
|
|
|
+ </Collapse>-->
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
</div>
|
|
|
</div>
|
|
|
</div>
|
|
@@ -204,7 +248,6 @@
|
|
|
isLoading: true,
|
|
|
opacity: 0.6,
|
|
|
//loading畫面
|
|
|
- currentReportSubject: "國文",
|
|
|
closeAnsDetail: false,
|
|
|
RandomComment: Random.paragraph(1, 2),
|
|
|
RandomKeypoint: Random.paragraph(1, 3),
|
|
@@ -246,7 +289,12 @@
|
|
|
},
|
|
|
],
|
|
|
paperData: [],
|
|
|
- ansData:[]
|
|
|
+ ansData: [],
|
|
|
+ repairSource: {
|
|
|
+ normal: [],
|
|
|
+ file: []
|
|
|
+ },
|
|
|
+ repairData:[]
|
|
|
};
|
|
|
},
|
|
|
mounted() {
|
|
@@ -254,6 +302,35 @@
|
|
|
this.testJudge()
|
|
|
},
|
|
|
methods: {
|
|
|
+ getSource(data, info) {
|
|
|
+ console.log(info)
|
|
|
+ this.repairSource = {
|
|
|
+ normal: [],
|
|
|
+ file: []
|
|
|
+ }
|
|
|
+ let source = {
|
|
|
+ normal: [],
|
|
|
+ file: []
|
|
|
+ }
|
|
|
+ for (let item of data) {
|
|
|
+ if (item.type == 'normal') {
|
|
|
+ source.normal.push(item)
|
|
|
+ } else if (item.blobUrl) {
|
|
|
+ let code = item.blobUrl.split('/')
|
|
|
+ let data = code[code.length - 1].split('.')
|
|
|
+ item.name = code[code.length-1]
|
|
|
+ item.file = code[code.length - 2]
|
|
|
+ item.fileType = data[data.length -1]
|
|
|
+ console.log(code)
|
|
|
+ source.file.push(item)
|
|
|
+ }
|
|
|
+ }
|
|
|
+ console.log(source)
|
|
|
+ console.log(source.normal.dfd)
|
|
|
+ this.repairSource = source
|
|
|
+ //let code = data.blobUrl.split('/')
|
|
|
+ //console.log(code)
|
|
|
+ },
|
|
|
showTest() {
|
|
|
if (this.examInfo.subject !== undefined) {
|
|
|
this.$store.commit("ToggleLessonTestPopWithSubject", this.examInfo)
|
|
@@ -345,13 +422,6 @@
|
|
|
getCurrentLang() {
|
|
|
return localStorage.getItem('lang');
|
|
|
},
|
|
|
-
|
|
|
- transSubjecttoEn(type) {
|
|
|
- if (type == "國文") return "Chinese";
|
|
|
- else if (type == "英文") return "English";
|
|
|
- else if (type == "數學") return "Math";
|
|
|
- else if (type == "綜合學科") return "Comprehensive";
|
|
|
- },
|
|
|
RandomNum() {
|
|
|
return Random.integer(70, 96)
|
|
|
},
|
|
@@ -368,10 +438,6 @@
|
|
|
closeDetail() {
|
|
|
this.closeAnsDetail = !this.closeAnsDetail;
|
|
|
},
|
|
|
- changeListSubject(subject) {
|
|
|
- this.currentReportSubject = subject;
|
|
|
- this.doAjax();
|
|
|
- },
|
|
|
ansRightSum: function () {
|
|
|
var ansRightSum = [0, 0, 0];
|
|
|
for (var i = 0; i < 10; i++) {
|
|
@@ -402,32 +468,6 @@
|
|
|
else return false;
|
|
|
|
|
|
},
|
|
|
- transQtypetoEn(Qtype) {
|
|
|
- if (localStorage.getItem('lang') == 'en') {
|
|
|
- if (Qtype == "單選") {
|
|
|
- return "Single"
|
|
|
- } else if (Qtype == "多選") {
|
|
|
- return "Multi";
|
|
|
- }
|
|
|
- else if (Qtype == "判斷") {
|
|
|
- return "True/False"
|
|
|
- }
|
|
|
- else if (Qtype == "填充") {
|
|
|
- return "Fill in the blank"
|
|
|
- }
|
|
|
- else return
|
|
|
- }
|
|
|
- else return Qtype
|
|
|
- },
|
|
|
- doAjax() {
|
|
|
- this.isLoading = true;
|
|
|
-
|
|
|
- // simulate AJAX
|
|
|
- setTimeout(() => {
|
|
|
- this.forceRerender();
|
|
|
- this.isLoading = false;
|
|
|
- }, 3000);
|
|
|
- },
|
|
|
},
|
|
|
computed: {
|
|
|
testScore() {
|
|
@@ -784,11 +824,18 @@
|
|
|
top: -70%;
|
|
|
right: -40%;
|
|
|
font-size: 20px;
|
|
|
- color: rgba(0, 0, 0, 0.5)
|
|
|
+ color: rgba(0, 0, 0, 0.5);
|
|
|
}
|
|
|
|
|
|
.vld-overlay {
|
|
|
outline: none;
|
|
|
- border: none
|
|
|
+ border: none;
|
|
|
}
|
|
|
+ .repair-box{
|
|
|
+ width:100%;
|
|
|
+ }
|
|
|
+ .repair-box /deep/ .ivu-list-container{
|
|
|
+ max-height:300px;
|
|
|
+ overflow:scroll;
|
|
|
+ }
|
|
|
</style>
|