|
@@ -368,216 +368,218 @@
|
|
|
<!-- 单题展示 -->
|
|
|
<div v-if="!instantPaper && !entireExam" class="question-content">
|
|
|
<div v-if="!showExam.length" style="text-align: center; margin-top: 25%; font-size: 20px;">{{ $t("studentWeb.exam.testpop.noExam") }}</div>
|
|
|
- <div :class="['questionContent', {'qamode-box': instantPaper}]" ref="questionBox" v-else>
|
|
|
- <!-- <span class="hintwrap">
|
|
|
- <Tooltip :content="$t('studentWeb.exam.report.noSource')" theme="light" placement="left">
|
|
|
- <span class="hintIcon">
|
|
|
- <svg-icon icon-class="hint" />
|
|
|
- </span>
|
|
|
- </Tooltip>
|
|
|
- </span> -->
|
|
|
- <div class="questioDes">
|
|
|
- <div class="questionType" v-if="getQue(queNo).parent === undefined">
|
|
|
- <span>{{getTestType(getQue(queNo).type)}}</span>
|
|
|
- <span v-if="getQue(queNo).type === 'subjective' && showExam[queNo].answerType">-{{ $t(`evaluation.newExercise.answerType.${showExam[queNo].answerType}`) }}</span>
|
|
|
- </div>
|
|
|
- <div class="que-item" v-if="getQue(queNo).type != 'compose' && getQue(queNo).parent === undefined">
|
|
|
- <span v-if="isWrong" @click="changeStar(!getQue(queNo).star, queNo)" style="margin-right: 10px; cursor: pointer;">
|
|
|
- <Icon custom="iconfont icon-shoucang1" size="25" v-show="!getQue(queNo).star" />
|
|
|
- <Icon custom="iconfont icon-shoucang2" size="25" color="#FF7A4E" v-show="getQue(queNo).star" />
|
|
|
- </span>
|
|
|
- <span>{{ queNo + 1 }}.</span>
|
|
|
- <!--题目渲染-->
|
|
|
- <div id="answer-box" v-html="getQue(queNo).question"></div>
|
|
|
- </div>
|
|
|
- <!--综合题-->
|
|
|
- <div v-if="getQue(queNo).type === 'compose' || getQue(queNo).parent !== undefined">
|
|
|
- <div class="compose-content" v-if="getQue(queNo).parent !== undefined">
|
|
|
- <div class="questionType">
|
|
|
- <span>{{getTestType(getQue(queNo).parentInfo.type)}}</span>
|
|
|
- <span v-if="getQue(queNo).type === 'subjective' && showExam[queNo].answerType">({{ $t(`evaluation.newExercise.answerType.${showExam[queNo].answerType}`) }})</span>
|
|
|
- </div>
|
|
|
- <div class="compose-box">
|
|
|
- <span v-if="isWrong" @click="changeStar(!getQue(queNo).star, queNo, true)" style="cursor: pointer;">
|
|
|
- <Icon custom="iconfont icon-shoucang1" size="25" v-show="!getQue(queNo).star" />
|
|
|
- <Icon custom="iconfont icon-shoucang2" size="25" color="#FF7A4E" v-show="getQue(queNo).star" />
|
|
|
- </span>
|
|
|
- <span style="margin-left:10px;font-weight:800;font-size:15px">{{$t("studentWeb.exam.testpop.queNo")}}</span>
|
|
|
- <br />
|
|
|
- <div class="compose-item">
|
|
|
- <!--<span w>{{ getQue(queNo).parent + 1}}.</span>-->
|
|
|
- <!--题干渲染-->
|
|
|
- <div v-html="getQue(queNo).parentInfo.question"></div>
|
|
|
- </div>
|
|
|
- </div>
|
|
|
- <div class="que-content">
|
|
|
- <span style="width:51px">{{ getQue(queNo).paperIndex}}:</span>
|
|
|
- <!--题目渲染-->
|
|
|
- <div class="que-items" id="answer-box" v-html="getQue(queNo).question"></div>
|
|
|
- </div>
|
|
|
+ <div :class="['questionContent', {'qamode-box': instantPaper}]" ref="questionBox" style="height: 100%;" v-else>
|
|
|
+ <vuescroll>
|
|
|
+ <!-- <span class="hintwrap">
|
|
|
+ <Tooltip :content="$t('studentWeb.exam.report.noSource')" theme="light" placement="left">
|
|
|
+ <span class="hintIcon">
|
|
|
+ <svg-icon icon-class="hint" />
|
|
|
+ </span>
|
|
|
+ </Tooltip>
|
|
|
+ </span> -->
|
|
|
+ <div class="questioDes">
|
|
|
+ <div class="questionType" v-if="getQue(queNo).parent === undefined">
|
|
|
+ <span>{{getTestType(getQue(queNo).type)}}</span>
|
|
|
+ <span v-if="getQue(queNo).type === 'subjective' && showExam[queNo].answerType">-{{ $t(`evaluation.newExercise.answerType.${showExam[queNo].answerType}`) }}</span>
|
|
|
</div>
|
|
|
- </div>
|
|
|
- </div>
|
|
|
- <div class="answers">
|
|
|
- <div class="questionNo">{{$t("studentWeb.exam.testpop.myAns")}}</div>
|
|
|
- <div class="answers-box">
|
|
|
- <!--判断题选项-->
|
|
|
- <div v-if="getQue(queNo).type == 'judge'" align="center">
|
|
|
- <!-- <div class="testButn">
|
|
|
- <Radio-group v-model="checkers[queNo][0]">
|
|
|
- <Radio label="A"><Icon type="md-checkmark" /></Radio>
|
|
|
- <Radio label="B"><Icon type="md-close" /></Radio>
|
|
|
- </Radio-group>
|
|
|
- </div> -->
|
|
|
- <label class="testBtn yesNoBtn">
|
|
|
- <input type="radio" value="A" v-model="checkers[queNo][0]" :disabled="!closeTest" />
|
|
|
- <div class="testbg" :style="{'background-color': isWrong && showEnd && checkers[queNo][0] === 'A' ? (getQue(queNo).answer[0] === 'A' ? '' : 'red !important') : ''}">
|
|
|
- <!-- <Icon type="ios-radio-button-off" /> -->
|
|
|
- <Icon type="md-checkmark" />
|
|
|
- </div>
|
|
|
- </label>
|
|
|
- <label class="testBtn yesNoBtn">
|
|
|
- <input type="radio" value="B" v-model="checkers[queNo][0]" :disabled="!closeTest" />
|
|
|
- <div class="testbg" :style="{'background-color': isWrong && showEnd && checkers[queNo][0] === 'B' ? (getQue(queNo).answer[0] === 'B' ? '' : 'red !important') : ''}">
|
|
|
- <Icon type="md-close" />
|
|
|
- </div>
|
|
|
- </label>
|
|
|
+ <div class="que-item" v-if="getQue(queNo).type != 'compose' && getQue(queNo).parent === undefined">
|
|
|
+ <span v-if="isWrong" @click="changeStar(!getQue(queNo).star, queNo)" style="margin-right: 10px; cursor: pointer;">
|
|
|
+ <Icon custom="iconfont icon-shoucang1" size="25" v-show="!getQue(queNo).star" />
|
|
|
+ <Icon custom="iconfont icon-shoucang2" size="25" color="#FF7A4E" v-show="getQue(queNo).star" />
|
|
|
+ </span>
|
|
|
+ <span>{{ queNo + 1 }}.</span>
|
|
|
+ <!--题目渲染-->
|
|
|
+ <div id="answer-box" v-html="getQue(queNo).question"></div>
|
|
|
</div>
|
|
|
- <!--选择题选项-->
|
|
|
- <div class="select-box" v-else-if="getQue(queNo).type === 'single' || getQue(queNo).type === 'multiple'">
|
|
|
- <label class="testBtn"
|
|
|
- v-for="(item, index) in getQue(queNo).option"
|
|
|
- :key="index">
|
|
|
- <span v-show="showEnd">
|
|
|
- <Icon type="md-checkmark-circle" color="#24B880" size="20"
|
|
|
- v-if="getQue(queNo).answer.includes(item.code)"
|
|
|
- />
|
|
|
- <Icon type="md-close-circle" color="red" size="20"
|
|
|
- v-if="checkers[queNo].includes(item.code) && !getQue(queNo).answer.includes(item.code)"
|
|
|
- />
|
|
|
- </span>
|
|
|
- <input type="checkbox"
|
|
|
- :value="getQue(queNo).option[index].code"
|
|
|
- v-model="checkers[queNo]"
|
|
|
- @click="getAns(queNo,index)"
|
|
|
- :disabled="!closeTest" />
|
|
|
- <div class="testbg">
|
|
|
- <div style="display:flex">
|
|
|
- <span>{{ getQue(queNo).option[index].code }}. </span>
|
|
|
- <div v-html="item.value" @click.stop.native.prevent="showImg($event)"></div>
|
|
|
+ <!--综合题-->
|
|
|
+ <div v-if="getQue(queNo).type === 'compose' || getQue(queNo).parent !== undefined">
|
|
|
+ <div class="compose-content" v-if="getQue(queNo).parent !== undefined">
|
|
|
+ <div class="questionType">
|
|
|
+ <span>{{getTestType(getQue(queNo).parentInfo.type)}}</span>
|
|
|
+ <span v-if="getQue(queNo).type === 'subjective' && showExam[queNo].answerType">({{ $t(`evaluation.newExercise.answerType.${showExam[queNo].answerType}`) }})</span>
|
|
|
+ </div>
|
|
|
+ <div class="compose-box">
|
|
|
+ <span v-if="isWrong" @click="changeStar(!getQue(queNo).star, queNo, true)" style="cursor: pointer;">
|
|
|
+ <Icon custom="iconfont icon-shoucang1" size="25" v-show="!getQue(queNo).star" />
|
|
|
+ <Icon custom="iconfont icon-shoucang2" size="25" color="#FF7A4E" v-show="getQue(queNo).star" />
|
|
|
+ </span>
|
|
|
+ <span style="margin-left:10px;font-weight:800;font-size:15px">{{$t("studentWeb.exam.testpop.queNo")}}</span>
|
|
|
+ <br />
|
|
|
+ <div class="compose-item">
|
|
|
+ <!--<span w>{{ getQue(queNo).parent + 1}}.</span>-->
|
|
|
+ <!--题干渲染-->
|
|
|
+ <div v-html="getQue(queNo).parentInfo.question"></div>
|
|
|
</div>
|
|
|
- <div style="clear:both"></div>
|
|
|
</div>
|
|
|
- </label>
|
|
|
+ <div class="que-content">
|
|
|
+ <span style="width:51px">{{ getQue(queNo).paperIndex}}:</span>
|
|
|
+ <!--题目渲染-->
|
|
|
+ <div class="que-items" id="answer-box" v-html="getQue(queNo).question"></div>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
</div>
|
|
|
- <!--问答题-->
|
|
|
- <div class="compose-content" v-else-if="getQue(queNo).type === 'subjective'">
|
|
|
- <!-- showExam[queNo].answerType: text(文本) Image(图片) file(文件) audio(音频 useAutoScore(自动评分) answerLang(语言)) -->
|
|
|
- <!-- <template v-if="showExam[queNo].answerType === 'text' || showExam[queNo].answerType === 'text_Image'"> -->
|
|
|
- <Input v-if="showExam[queNo].answerType === 'text'" v-model="checkers[queNo][0]" type="textarea" :rows="5" :autosize="{minRows: 5,maxRows: 10}" :placeholder="$t('studentWeb.exam.inputAnswers')"></Input>
|
|
|
- <Compose v-else-if="showExam[queNo].answerType === 'text_Image'" ref="compose" :itemInfo="getQue(queNo)" :close="!closeTest" :textData="checkers[queNo]" :index="queNo" @dataGet="getComposeAns"></Compose>
|
|
|
- <!-- </template> -->
|
|
|
- <template v-else-if="showExam[queNo].answerType === 'audio'">
|
|
|
- <AudioRecorder :textData="checkers[queNo]" :index="queNo" @dataGet="getComposeAns" />
|
|
|
- </template>
|
|
|
- <template v-else-if="showExam[queNo].answerType === 'file' || showExam[queNo].answerType === 'image'">
|
|
|
- <Upload type="drag" :accept="subjectiveAccept(showExam[queNo])" action="" :before-upload="file => customUpload(file, queNo)">
|
|
|
- <div style="padding: 20px 0" ref="upload1">
|
|
|
- <Icon type="ios-cloud-upload" size="52" :style="{color: checkers[queNo].length ? '#b4b4b4' : '#2d8cf0' }"></Icon>
|
|
|
- <p>
|
|
|
- <span>
|
|
|
- {{ checkers[queNo].length ? $t('jyzx.offline.againLoad') : $t('studentWeb.art.relatedFile')}}
|
|
|
- </span>
|
|
|
- </p>
|
|
|
+ </div>
|
|
|
+ <div class="answers">
|
|
|
+ <div class="questionNo">{{$t("studentWeb.exam.testpop.myAns")}}</div>
|
|
|
+ <div class="answers-box">
|
|
|
+ <!--判断题选项-->
|
|
|
+ <div v-if="getQue(queNo).type == 'judge'" align="center">
|
|
|
+ <!-- <div class="testButn">
|
|
|
+ <Radio-group v-model="checkers[queNo][0]">
|
|
|
+ <Radio label="A"><Icon type="md-checkmark" /></Radio>
|
|
|
+ <Radio label="B"><Icon type="md-close" /></Radio>
|
|
|
+ </Radio-group>
|
|
|
+ </div> -->
|
|
|
+ <label class="testBtn yesNoBtn">
|
|
|
+ <input type="radio" value="A" v-model="checkers[queNo][0]" :disabled="!closeTest" />
|
|
|
+ <div class="testbg" :style="{'background-color': isWrong && showEnd && checkers[queNo][0] === 'A' ? (getQue(queNo).answer[0] === 'A' ? '' : 'red !important') : ''}">
|
|
|
+ <!-- <Icon type="ios-radio-button-off" /> -->
|
|
|
+ <Icon type="md-checkmark" />
|
|
|
</div>
|
|
|
- </Upload>
|
|
|
- <div class="repair-link-wrap-item-box" v-if="checkers[queNo].length">
|
|
|
- <div class="file-icon">
|
|
|
- <img :src="$tools.getFileThum(getFileType(checkers[queNo][0]), getFileName(checkers[queNo][0]))"/>
|
|
|
+ </label>
|
|
|
+ <label class="testBtn yesNoBtn">
|
|
|
+ <input type="radio" value="B" v-model="checkers[queNo][0]" :disabled="!closeTest" />
|
|
|
+ <div class="testbg" :style="{'background-color': isWrong && showEnd && checkers[queNo][0] === 'B' ? (getQue(queNo).answer[0] === 'B' ? '' : 'red !important') : ''}">
|
|
|
+ <Icon type="md-close" />
|
|
|
</div>
|
|
|
- <div class="file-info">
|
|
|
- <p class="file-name">{{ getFileName(checkers[queNo][0]) }}</p>
|
|
|
- <div>
|
|
|
- <span @click="onPreview(checkers[queNo][0], true)">{{ $t('ability.review.preview')}}</span>
|
|
|
- <span @click="onDownload(checkers[queNo][0], true)">{{ $t('ability.review.download')}}</span>
|
|
|
+ </label>
|
|
|
+ </div>
|
|
|
+ <!--选择题选项-->
|
|
|
+ <div class="select-box" v-else-if="getQue(queNo).type === 'single' || getQue(queNo).type === 'multiple'">
|
|
|
+ <label class="testBtn"
|
|
|
+ v-for="(item, index) in getQue(queNo).option"
|
|
|
+ :key="index">
|
|
|
+ <span v-show="showEnd">
|
|
|
+ <Icon type="md-checkmark-circle" color="#24B880" size="20"
|
|
|
+ v-if="getQue(queNo).answer.includes(item.code)"
|
|
|
+ />
|
|
|
+ <Icon type="md-close-circle" color="red" size="20"
|
|
|
+ v-if="checkers[queNo].includes(item.code) && !getQue(queNo).answer.includes(item.code)"
|
|
|
+ />
|
|
|
+ </span>
|
|
|
+ <input type="checkbox"
|
|
|
+ :value="getQue(queNo).option[index].code"
|
|
|
+ v-model="checkers[queNo]"
|
|
|
+ @click="getAns(queNo,index)"
|
|
|
+ :disabled="!closeTest" />
|
|
|
+ <div class="testbg">
|
|
|
+ <div style="display:flex">
|
|
|
+ <span>{{ getQue(queNo).option[index].code }}. </span>
|
|
|
+ <div v-html="item.value" @click.stop.native.prevent="showImg($event)"></div>
|
|
|
+ </div>
|
|
|
+ <div style="clear:both"></div>
|
|
|
+ </div>
|
|
|
+ </label>
|
|
|
+ </div>
|
|
|
+ <!--问答题-->
|
|
|
+ <div class="compose-content" v-else-if="getQue(queNo).type === 'subjective'">
|
|
|
+ <!-- showExam[queNo].answerType: text(文本) Image(图片) file(文件) audio(音频 useAutoScore(自动评分) answerLang(语言)) -->
|
|
|
+ <!-- <template v-if="showExam[queNo].answerType === 'text' || showExam[queNo].answerType === 'text_Image'"> -->
|
|
|
+ <Input v-if="showExam[queNo].answerType === 'text'" v-model="checkers[queNo][0]" type="textarea" :rows="5" :autosize="{minRows: 5,maxRows: 10}" :placeholder="$t('studentWeb.exam.inputAnswers')"></Input>
|
|
|
+ <Compose v-else-if="showExam[queNo].answerType === 'text_Image'" ref="compose" :itemInfo="getQue(queNo)" :close="!closeTest" :textData="checkers[queNo]" :index="queNo" @dataGet="getComposeAns"></Compose>
|
|
|
+ <!-- </template> -->
|
|
|
+ <template v-else-if="showExam[queNo].answerType === 'audio'">
|
|
|
+ <AudioRecorder :textData="checkers[queNo]" :index="queNo" @dataGet="getComposeAns" />
|
|
|
+ </template>
|
|
|
+ <template v-else-if="showExam[queNo].answerType === 'file' || showExam[queNo].answerType === 'image'">
|
|
|
+ <Upload type="drag" :accept="subjectiveAccept(showExam[queNo])" action="" :before-upload="file => customUpload(file, queNo)">
|
|
|
+ <div style="padding: 20px 0" ref="upload1">
|
|
|
+ <Icon type="ios-cloud-upload" size="52" :style="{color: checkers[queNo].length ? '#b4b4b4' : '#2d8cf0' }"></Icon>
|
|
|
+ <p>
|
|
|
+ <span>
|
|
|
+ {{ checkers[queNo].length ? $t('jyzx.offline.againLoad') : $t('studentWeb.art.relatedFile')}}
|
|
|
+ </span>
|
|
|
+ </p>
|
|
|
+ </div>
|
|
|
+ </Upload>
|
|
|
+ <div class="repair-link-wrap-item-box" v-if="checkers[queNo].length">
|
|
|
+ <div class="file-icon">
|
|
|
+ <img :src="$tools.getFileThum(getFileType(checkers[queNo][0]), getFileName(checkers[queNo][0]))"/>
|
|
|
+ </div>
|
|
|
+ <div class="file-info">
|
|
|
+ <p class="file-name">{{ getFileName(checkers[queNo][0]) }}</p>
|
|
|
+ <div>
|
|
|
+ <span @click="onPreview(checkers[queNo][0], true)">{{ $t('ability.review.preview')}}</span>
|
|
|
+ <span @click="onDownload(checkers[queNo][0], true)">{{ $t('ability.review.download')}}</span>
|
|
|
+ </div>
|
|
|
</div>
|
|
|
</div>
|
|
|
+ </template>
|
|
|
+ <div class="compose-content" v-else>
|
|
|
+ <Compose ref="compose" :itemInfo="getQue(queNo)" :close="!closeTest" :textData="checkers[queNo]" :index="queNo" @dataGet="getComposeAns"></Compose>
|
|
|
</div>
|
|
|
- </template>
|
|
|
+ </div>
|
|
|
<div class="compose-content" v-else>
|
|
|
<Compose ref="compose" :itemInfo="getQue(queNo)" :close="!closeTest" :textData="checkers[queNo]" :index="queNo" @dataGet="getComposeAns"></Compose>
|
|
|
</div>
|
|
|
</div>
|
|
|
- <div class="compose-content" v-else>
|
|
|
- <Compose ref="compose" :itemInfo="getQue(queNo)" :close="!closeTest" :textData="checkers[queNo]" :index="queNo" @dataGet="getComposeAns"></Compose>
|
|
|
- </div>
|
|
|
- </div>
|
|
|
- </div>
|
|
|
- <!-- <div :style="isCheckAns ? 'height: 250px' : ''"></div> -->
|
|
|
- <!-- 答案解析 -->
|
|
|
- <div v-if="isWrong" :class="['analysis', showEnd ? 'active' : '']" @click="changeAnalysisType(true)">
|
|
|
- <div class="item-explain">
|
|
|
- <span class="explain-title">【{{ $t("studentWeb.exam.report.ansRes") }}】</span>
|
|
|
- <div class="item-explain-details">
|
|
|
- <span v-if="!checkers[queNo].length">{{ $t('studentWeb.exam.report.noAns') }}</span>
|
|
|
- <span v-else v-for="(item, index) in checkers[queNo]" :key="index" v-html="item"></span>
|
|
|
- </div>
|
|
|
</div>
|
|
|
- <div class="item-explain">
|
|
|
- <span class="explain-title">【{{ $t("studentWeb.exam.report.testAns") }}】</span>
|
|
|
- <div class="item-explain-details">
|
|
|
- <span v-if="!showExam[queNo].answer.length">{{ $t('studentWeb.exam.report.noAns') }}</span>
|
|
|
- <span v-else v-for="(item, index) in showExam[queNo].answer" :key="index" v-html="item"></span>
|
|
|
+ <!-- <div :style="isCheckAns ? 'height: 250px' : ''"></div> -->
|
|
|
+ <!-- 答案解析 -->
|
|
|
+ <div v-if="isWrong" :class="['analysis', showEnd ? 'active' : '']" @click="changeAnalysisType(true)">
|
|
|
+ <div class="item-explain">
|
|
|
+ <span class="explain-title">【{{ $t("studentWeb.exam.report.ansRes") }}】</span>
|
|
|
+ <div class="item-explain-details">
|
|
|
+ <span v-if="!checkers[queNo].length">{{ $t('studentWeb.exam.report.noAns') }}</span>
|
|
|
+ <span v-else v-for="(item, index) in checkers[queNo]" :key="index" v-html="item"></span>
|
|
|
+ </div>
|
|
|
</div>
|
|
|
- </div>
|
|
|
- <div class="item-explain">
|
|
|
- <span class="explain-title">【{{ $t("studentWeb.exam.report.testAnalyse") }}】</span>
|
|
|
- <div class="item-explain-details">
|
|
|
- <div v-html="showExam[queNo].explain ? showExam[queNo].explain : $t('studentWeb.exam.report.noAnalyse')"></div>
|
|
|
+ <div class="item-explain">
|
|
|
+ <span class="explain-title">【{{ $t("studentWeb.exam.report.testAns") }}】</span>
|
|
|
+ <div class="item-explain-details">
|
|
|
+ <span v-if="!showExam[queNo].answer.length">{{ $t('studentWeb.exam.report.noAns') }}</span>
|
|
|
+ <span v-else v-for="(item, index) in showExam[queNo].answer" :key="index" v-html="item"></span>
|
|
|
+ </div>
|
|
|
</div>
|
|
|
- </div>
|
|
|
- <!-- 知识点 -->
|
|
|
- <div class="item-explain">
|
|
|
- <span class="explain-title">【{{ $t("studentWeb.exam.report.knowledge") }}】</span>
|
|
|
- <div v-if="showExam[queNo].knowledge && showExam[queNo].knowledge.length" class="item-explain-details">
|
|
|
- <span v-for="(knowledge, index) in showExam[queNo].knowledge" :key="index" class="knowledge-style">
|
|
|
- {{ knowledge }}
|
|
|
- </span>
|
|
|
+ <div class="item-explain">
|
|
|
+ <span class="explain-title">【{{ $t("studentWeb.exam.report.testAnalyse") }}】</span>
|
|
|
+ <div class="item-explain-details">
|
|
|
+ <div v-html="showExam[queNo].explain ? showExam[queNo].explain : $t('studentWeb.exam.report.noAnalyse')"></div>
|
|
|
+ </div>
|
|
|
</div>
|
|
|
- <div v-else class="item-explain-details">
|
|
|
- {{ $t("studentWeb.exam.report.noKnowledge") }}
|
|
|
+ <!-- 知识点 -->
|
|
|
+ <div class="item-explain">
|
|
|
+ <span class="explain-title">【{{ $t("studentWeb.exam.report.knowledge") }}】</span>
|
|
|
+ <div v-if="showExam[queNo].knowledge && showExam[queNo].knowledge.length" class="item-explain-details">
|
|
|
+ <span v-for="(knowledge, index) in showExam[queNo].knowledge" :key="index" class="knowledge-style">
|
|
|
+ {{ knowledge }}
|
|
|
+ </span>
|
|
|
+ </div>
|
|
|
+ <div v-else class="item-explain-details">
|
|
|
+ {{ $t("studentWeb.exam.report.noKnowledge") }}
|
|
|
+ </div>
|
|
|
</div>
|
|
|
- </div>
|
|
|
- <!-- 认知层次 -->
|
|
|
- <div class="item-explain">
|
|
|
- <span class="explain-title">【{{ $t("studentWeb.exam.report.filed") }}】</span>
|
|
|
- <div class="item-explain-details">
|
|
|
- <div>{{ levelList[showExam[queNo].field - 1] }}</div>
|
|
|
+ <!-- 认知层次 -->
|
|
|
+ <div class="item-explain">
|
|
|
+ <span class="explain-title">【{{ $t("studentWeb.exam.report.filed") }}】</span>
|
|
|
+ <div class="item-explain-details">
|
|
|
+ <div>{{ levelList[showExam[queNo].field - 1] }}</div>
|
|
|
+ </div>
|
|
|
</div>
|
|
|
- </div>
|
|
|
- <div class="item-explain">
|
|
|
- <span class="explain-title">【{{ $t("studentWeb.exam.report.repairSource") }}】</span>
|
|
|
- <div class="item-explain-details-repair">
|
|
|
- <div v-if="showExam[queNo].repair.length != 0">
|
|
|
- <div v-for="(repairSource, normalIndex) in showExam[queNo].repair" :key="normalIndex" class="repair-link-wrap-item-box">
|
|
|
- <div class="file-icon">
|
|
|
- <img :src="$tools.getFileThum(repairSource.type, repairSource.name)"/>
|
|
|
- </div>
|
|
|
- <div class="file-info">
|
|
|
- <p class="file-name">{{ repairSource.name }}</p>
|
|
|
- <div>
|
|
|
- <span @click.stop="onPreview(repairSource)" v-if="repairSource.type !== 'other'">{{ $t('ability.review.preview')}}</span>
|
|
|
- <span @click.stop="onDownload(repairSource)" v-if="repairSource.type !== 'link'">{{ $t('ability.review.download')}}</span>
|
|
|
+ <div class="item-explain">
|
|
|
+ <span class="explain-title">【{{ $t("studentWeb.exam.report.repairSource") }}】</span>
|
|
|
+ <div class="item-explain-details-repair">
|
|
|
+ <div v-if="showExam[queNo].repair.length != 0">
|
|
|
+ <div v-for="(repairSource, normalIndex) in showExam[queNo].repair" :key="normalIndex" class="repair-link-wrap-item-box">
|
|
|
+ <div class="file-icon">
|
|
|
+ <img :src="$tools.getFileThum(repairSource.type, repairSource.name)"/>
|
|
|
+ </div>
|
|
|
+ <div class="file-info">
|
|
|
+ <p class="file-name">{{ repairSource.name }}</p>
|
|
|
+ <div>
|
|
|
+ <span @click.stop="onPreview(repairSource)" v-if="repairSource.type !== 'other'">{{ $t('ability.review.preview')}}</span>
|
|
|
+ <span @click.stop="onDownload(repairSource)" v-if="repairSource.type !== 'link'">{{ $t('ability.review.download')}}</span>
|
|
|
+ </div>
|
|
|
</div>
|
|
|
</div>
|
|
|
</div>
|
|
|
- </div>
|
|
|
- <div v-else-if="!showExam[queNo].repair.length">
|
|
|
- {{ $t('studentWeb.exam.report.noSource') }}
|
|
|
+ <div v-else-if="!showExam[queNo].repair.length">
|
|
|
+ {{ $t('studentWeb.exam.report.noSource') }}
|
|
|
+ </div>
|
|
|
</div>
|
|
|
</div>
|
|
|
</div>
|
|
|
- </div>
|
|
|
+ </vuescroll>
|
|
|
</div>
|
|
|
</div>
|
|
|
<!-- 答题卡 -->
|
|
@@ -591,7 +593,7 @@
|
|
|
<span style="font-weight: 800;">{{ $t("studentWeb.exam.testpop.myAnswerSheet") }}</span>
|
|
|
<div style="font-size: 14px; margin-right: 10px;">
|
|
|
<i-switch v-model="entireExam" size="small" />
|
|
|
- <span>{{ entireExam ? '整卷作答' : '单题作答' }}</span>
|
|
|
+ <span>{{ entireExam ? $t("studentWeb.exam.testpop.entireExam") : $t("studentWeb.exam.testpop.previsingleQuesous") }}</span>
|
|
|
</div>
|
|
|
</div>
|
|
|
<!--切換頁-->
|