|
@@ -1,35 +1,6 @@
|
|
<template>
|
|
<template>
|
|
<div class="lesson-test">
|
|
<div class="lesson-test">
|
|
<br />
|
|
<br />
|
|
-
|
|
|
|
- <div v-if="showHint == true" class="warmMessage">
|
|
|
|
- <div class="messageCard previewNextItemCard animate__animated animate__fadeInDown">
|
|
|
|
- <h2>前往下一個活動</h2>
|
|
|
|
- <div class="list-item-icon">
|
|
|
|
- <svg-icon v-if="nextItem.eventType == '作業'" icon-class="doc" />
|
|
|
|
- <svg-icon v-if="nextItem.eventType == '課前預習'"
|
|
|
|
- icon-class="selflearninginTime" />
|
|
|
|
- <svg-icon v-if=" nextItem.eventType == '評量' && nextItem.eventSubject != '綜合學科' "
|
|
|
|
- icon-class="test"
|
|
|
|
- class="reset-testIcon" />
|
|
|
|
- <svg-icon v-if=" nextItem.eventType == '評量' && nextItem.eventSubject == '綜合學科'"
|
|
|
|
- icon-class="multiTest"
|
|
|
|
- class="reset-testIcon" />
|
|
|
|
- <svg-icon v-if="nextItem.eventType == '投票'" icon-class="vote" />
|
|
|
|
- </div>
|
|
|
|
- <p class="nextItemTitle">
|
|
|
|
- <span class="typeMark">{{ nextItem.eventType }}</span>
|
|
|
|
- {{ nextItem.name }}
|
|
|
|
- </p>
|
|
|
|
- <div class="setting-checkbox">
|
|
|
|
- <input type="checkbox" v-model="unhintNextItem" />
|
|
|
|
- <label> 下次不再詢問,如欲恢復提示,於個人設定頁面勾選</label>
|
|
|
|
- </div>
|
|
|
|
- <br />
|
|
|
|
- <button @click="cancelPreview()">取消,自行查看</button>
|
|
|
|
- <button @click="gotoNextItem()">確定</button>
|
|
|
|
- </div>
|
|
|
|
- </div>
|
|
|
|
<LessonTestPop :papers="selectData" v-if="this.$store.getters.getisOpenLessonTestPopNow" />
|
|
<LessonTestPop :papers="selectData" v-if="this.$store.getters.getisOpenLessonTestPopNow" />
|
|
<div>
|
|
<div>
|
|
<EventBasicInfo :paper="paperData" />
|
|
<EventBasicInfo :paper="paperData" />
|
|
@@ -40,74 +11,10 @@
|
|
<span class="warm-hint">{{ $t("studentWeb.exam.timeoutHint") }}</span>
|
|
<span class="warm-hint">{{ $t("studentWeb.exam.timeoutHint") }}</span>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
- <!--<div
|
|
|
|
- v-if=" this.$store.getters.getItemTitle.isDone == false && this.$store.getters.getItemTitle.endTime <= '2020.02.10' && this.$store.getters.getItemTitle.allowRetryNow == true " >
|
|
|
|
- <br v-if="!ishideHint" />
|
|
|
|
- <div class="dec animate__animated animate__bounceInLeft" v-if="!ishideHint">
|
|
|
|
- <svg-icon icon-class="handonHint" class="warm-icon" />
|
|
|
|
- <span
|
|
|
|
- class="warm-hint"
|
|
|
|
- v-if="this.$store.getters.getCurrentLaguage == 'tw'"
|
|
|
|
- >
|
|
|
|
- 評量活動時間已結束,請於
|
|
|
|
- <span class="retry-date">2020.02.13 23:59 前</span
|
|
|
|
- >完成補考,逾時將以0分計算。
|
|
|
|
- </span>
|
|
|
|
- <span
|
|
|
|
- class="warm-hint"
|
|
|
|
- v-if="this.$store.getters.getCurrentLaguage == 'en'"
|
|
|
|
- >
|
|
|
|
- The exam task time has ended, please make up the exam
|
|
|
|
- <span class="retry-date">before 2020.02.13 23:59</span> or your
|
|
|
|
- score would be 0.
|
|
|
|
- </span>
|
|
|
|
- <span @click="hidehint()" class="close-hint-btn">
|
|
|
|
- <Icon type="md-close" class="close-icon" />
|
|
|
|
- </span>
|
|
|
|
- </div>
|
|
|
|
- </div>-->
|
|
|
|
<div class="title-rect-group">
|
|
<div class="title-rect-group">
|
|
<div class="title-rect" />
|
|
<div class="title-rect" />
|
|
<h2 class="title-rect-name">试卷链接</h2>
|
|
<h2 class="title-rect-name">试卷链接</h2>
|
|
</div>
|
|
</div>
|
|
- <!--單一學科試卷-->
|
|
|
|
- <!--<div
|
|
|
|
- v-if="(
|
|
|
|
- this.$store.getters.getItemTitle.isDone == false &&
|
|
|
|
- this.$store.getters.getItemTitle.endTime > '2020.02.10' &&
|
|
|
|
- this.$store.getters.getItemTitle.eventSubject != '綜合學科') ||
|
|
|
|
- (this.$store.getters.getItemTitle.isDone == false &&
|
|
|
|
- this.$store.getters.getItemTitle.endTime <= '2020.02.10' &&
|
|
|
|
- this.$store.getters.getItemTitle.allowRetryNow == true &&
|
|
|
|
- this.$store.getters.getItemTitle.eventSubject != '綜合學科')
|
|
|
|
- "
|
|
|
|
- class="tasks"
|
|
|
|
- @click="opentest()"
|
|
|
|
- >
|
|
|
|
- <div class="title" v-if="getCurrentLang() == 'tw'">
|
|
|
|
- <span style="position: relative; top: 1px">
|
|
|
|
- <svg-icon icon-class="test" class="title-icon" />
|
|
|
|
- </span>
|
|
|
|
- {{ this.$store.getters.getItemTitle.eventSubject }}科試卷
|
|
|
|
- </div>
|
|
|
|
- <div class="title" v-if="getCurrentLang() == 'en'">
|
|
|
|
- <span style="position: relative; top: 1px">
|
|
|
|
- <svg-icon icon-class="test" class="title-icon" />
|
|
|
|
- </span>
|
|
|
|
- {{ transSubjecttoEn(this.$store.getters.getItemTitle.eventSubject) }}
|
|
|
|
- Exam
|
|
|
|
- </div>-->
|
|
|
|
- <!--依試卷是否完成顯示打勾狀態-->
|
|
|
|
- <!--<li
|
|
|
|
- :class="{
|
|
|
|
- finished: finishedfromTestPop() == true,
|
|
|
|
- unfinished: finishedfromTestPop() == false,
|
|
|
|
- }"
|
|
|
|
- >
|
|
|
|
- <Icon class="doneicon" type="ios-checkmark" size="36" />
|
|
|
|
- </li>
|
|
|
|
- </div>-->
|
|
|
|
- <!----->
|
|
|
|
<!--多學科試卷-->
|
|
<!--多學科試卷-->
|
|
<div v-if="paperData.length > 0 ">
|
|
<div v-if="paperData.length > 0 ">
|
|
<ul v-for="(item, index) in paperData"
|
|
<ul v-for="(item, index) in paperData"
|
|
@@ -120,116 +27,48 @@
|
|
</span>
|
|
</span>
|
|
{{ item.subject.name }}科试卷
|
|
{{ item.subject.name }}科试卷
|
|
</li>
|
|
</li>
|
|
- <!--依試卷是否完成顯示打勾狀態-->
|
|
|
|
|
|
+ <!--试卷是否已作答-->
|
|
<li :class="{ unfinished: item.stuAns[0].length == 0 ,finished:item.stuAns[0].length != 0 }">
|
|
<li :class="{ unfinished: item.stuAns[0].length == 0 ,finished:item.stuAns[0].length != 0 }">
|
|
<Icon class="doneicon" type="ios-checkmark" size="36" />
|
|
<Icon class="doneicon" type="ios-checkmark" size="36" />
|
|
</li>
|
|
</li>
|
|
</ul>
|
|
</ul>
|
|
</div>
|
|
</div>
|
|
- <div class="title-rect-group" v-if="chooseData.subject !== undefined">
|
|
|
|
- <div class="title-rect" />
|
|
|
|
- <h2 class="title-rect-name">当前科目:{{chooseData.subject.name}}</h2>
|
|
|
|
- <span v-show="isExamDown" @click="showTest" style="margin-left: 25px;color: #03966a;cursor:pointer">试卷详情</span>
|
|
|
|
- <div>
|
|
|
|
|
|
+
|
|
|
|
+ <div class="title-rect-group">
|
|
|
|
+ <div v-if="chooseData.subject !== undefined">
|
|
|
|
+ <div class="title-rect" />
|
|
|
|
+ <h2 class="title-rect-name">当前科目:{{chooseData.subject.name}}</h2>
|
|
|
|
+ <span v-show="isExamDown" @click="showTest" style="margin-left: 25px;color: #03966a;cursor:pointer">试卷详情</span>
|
|
<LessonTestReport :paperInfo="selectData" :examInfo="chooseData" />
|
|
<LessonTestReport :paperInfo="selectData" :examInfo="chooseData" />
|
|
</div>
|
|
</div>
|
|
- </div>
|
|
|
|
-
|
|
|
|
-
|
|
|
|
- <!--多學科試卷-->
|
|
|
|
- <!--如果評量已結束則顯示學情報告分頁-->
|
|
|
|
- <br />
|
|
|
|
- <Tabs value="tab2"
|
|
|
|
- v-if="this.$store.getters.getItemTitle.isDone == true"
|
|
|
|
- :animated="false">
|
|
|
|
- <TabPane :label="$t('studentWeb.exam.contentPage')" name="tab1">
|
|
|
|
- <!--<br />
|
|
|
|
- <div class="dec animate__animated animate__headShake">
|
|
|
|
- <span class="warm-hint">{{ $t("studentWeb.exam.practiceHint") }}</span>
|
|
|
|
- </div>-->
|
|
|
|
- <!--單一學科試卷-->
|
|
|
|
- <!--<div class="title-rect-group">
|
|
|
|
- <div class="title-rect" />
|
|
|
|
- <h2 class="title-rect-name">{{ $t("studentWeb.exam.examLink") }}</h2>
|
|
|
|
- </div>
|
|
|
|
- <div v-if="this.$store.getters.getItemTitle.eventSubject != '綜合學科'"
|
|
|
|
- class="tasks"
|
|
|
|
- @click="opentest()">
|
|
|
|
- <div class="title" v-if="getCurrentLang() == 'tw'">
|
|
|
|
- <span style="position: relative; top: 1px">
|
|
|
|
- <svg-icon icon-class="test" class="title-icon" />
|
|
|
|
- </span>
|
|
|
|
- {{ this.$store.getters.getItemTitle.eventSubject }}科試卷
|
|
|
|
|
|
+ <div class="load-box">
|
|
|
|
+ <load :active.sync="isLoad"
|
|
|
|
+ background-color="#000">
|
|
|
|
+ <template slot="default">
|
|
|
|
+ <svg-icon icon-class="loader" class="loader-icon" />
|
|
|
|
+ </template>
|
|
|
|
+ </load>
|
|
</div>
|
|
</div>
|
|
- <div class="title" v-if="getCurrentLang() == 'en'">
|
|
|
|
- <span style="position: relative; top: 1px">
|
|
|
|
- <svg-icon icon-class="test" class="title-icon" />
|
|
|
|
- </span>
|
|
|
|
- {{ transSubjecttoEn(this.$store.getters.getItemTitle.eventSubject)}}
|
|
|
|
- Exam
|
|
|
|
- </div>-->
|
|
|
|
- <!--依試卷是否完成顯示打勾狀態-->
|
|
|
|
- <!--li :class="{
|
|
|
|
- finished: true,
|
|
|
|
- }">
|
|
|
|
- <Icon class="doneicon" type="ios-checkmark" size="36" />
|
|
|
|
- </li-->
|
|
|
|
- <!--</div>-->
|
|
|
|
- <!----->
|
|
|
|
- <!--多學科試卷-->
|
|
|
|
- <!--<div v-if="paperData.length >1">
|
|
|
|
- <ul v-for="(item, index) in multiSubject"
|
|
|
|
- :key="index"
|
|
|
|
- class="tasks"
|
|
|
|
- @click="opentest()">
|
|
|
|
- <li class="title" v-if="getCurrentLang() == 'tw'">
|
|
|
|
- <span style="position: relative; top: 1px">
|
|
|
|
- <svg-icon icon-class="test" class="title-icon" />
|
|
|
|
- </span>
|
|
|
|
- {{ item }}科試卷
|
|
|
|
- </li>
|
|
|
|
- <li class="title" v-if="getCurrentLang() == 'en'">
|
|
|
|
- <span style="position: relative; top: 1px">
|
|
|
|
- <svg-icon icon-class="test" class="title-icon" />
|
|
|
|
- </span>
|
|
|
|
- {{ transSubjecttoEn(item) }} Exam
|
|
|
|
- </li>-->
|
|
|
|
- <!--依試卷是否完成顯示打勾狀態-->
|
|
|
|
- <!--</ul>
|
|
|
|
- </div>-->
|
|
|
|
- <!----->
|
|
|
|
- </TabPane>
|
|
|
|
- <!--评量分析数据返回-->
|
|
|
|
- <!--<TabPane :label="$t('studentWeb.exam.scorePage')" name="tab2">
|
|
|
|
- <LessonTestReport />
|
|
|
|
- </TabPane>-->
|
|
|
|
- </Tabs>
|
|
|
|
|
|
+ </div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</template>
|
|
</template>
|
|
|
|
|
|
<script>
|
|
<script>
|
|
|
|
+ import Load from "vue-loading-overlay";
|
|
|
|
+ import "vue-loading-overlay/dist/vue-loading.css";
|
|
import EventBasicInfo from "../../EventBasicInfo";
|
|
import EventBasicInfo from "../../EventBasicInfo";
|
|
-
|
|
|
|
import LessonTestReport from "./LessonTestReport";
|
|
import LessonTestReport from "./LessonTestReport";
|
|
import LessonTestPop from "./LessonTestPop";
|
|
import LessonTestPop from "./LessonTestPop";
|
|
- //import mockdata from "@/api/newData";
|
|
|
|
- //import mockdataEn from "@/api/newDataEn";
|
|
|
|
export default {
|
|
export default {
|
|
name: "LessonTest",
|
|
name: "LessonTest",
|
|
components: {
|
|
components: {
|
|
EventBasicInfo,
|
|
EventBasicInfo,
|
|
LessonTestReport,
|
|
LessonTestReport,
|
|
LessonTestPop,
|
|
LessonTestPop,
|
|
|
|
+ Load
|
|
},
|
|
},
|
|
created() {
|
|
created() {
|
|
-
|
|
|
|
- //if(localStorage.getItem("lang") == ""){
|
|
|
|
- // this.mockdata = mockdata.eventList;
|
|
|
|
- //}
|
|
|
|
- //if (localStorage.getItem("lang") == "tw") {
|
|
|
|
- // this.mockdata = mockdata.eventList;
|
|
|
|
- //} else this.mockdata = mockdataEn.eventList;
|
|
|
|
},
|
|
},
|
|
mounted() {
|
|
mounted() {
|
|
this.getPaperData()
|
|
this.getPaperData()
|
|
@@ -238,7 +77,6 @@
|
|
return {
|
|
return {
|
|
unhintNextItem: false,
|
|
unhintNextItem: false,
|
|
ishideHint: false,
|
|
ishideHint: false,
|
|
- multiSubject: ["國文", "英文", "數學"],
|
|
|
|
//提示下一個
|
|
//提示下一個
|
|
mockdata: "",
|
|
mockdata: "",
|
|
nextItem: "", //存放下個活動預告
|
|
nextItem: "", //存放下個活動預告
|
|
@@ -247,9 +85,10 @@
|
|
paperData: [],
|
|
paperData: [],
|
|
openEva: false,
|
|
openEva: false,
|
|
selectData: {},
|
|
selectData: {},
|
|
- isExam: false,
|
|
|
|
isExamDown: false,
|
|
isExamDown: false,
|
|
- chooseData: {}
|
|
|
|
|
|
+ chooseData: {},
|
|
|
|
+ examData: [],
|
|
|
|
+ isLoad: false
|
|
};
|
|
};
|
|
},
|
|
},
|
|
methods: {
|
|
methods: {
|
|
@@ -279,9 +118,6 @@
|
|
this.paperData[i].stuAns = res.stuAns[i]
|
|
this.paperData[i].stuAns = res.stuAns[i]
|
|
this.paperData[i].stuScore = res.stuScore[i]
|
|
this.paperData[i].stuScore = res.stuScore[i]
|
|
}
|
|
}
|
|
- //this.getPaper(this.paperData[0])
|
|
|
|
- //this.chooseData = this.paperData[0]
|
|
|
|
- //console.log(this.chooseData)
|
|
|
|
})
|
|
})
|
|
}
|
|
}
|
|
},
|
|
},
|
|
@@ -292,67 +128,6 @@
|
|
var D = date.getDate() + ' '
|
|
var D = date.getDate() + ' '
|
|
return Y + M + D;
|
|
return Y + M + D;
|
|
},
|
|
},
|
|
-
|
|
|
|
- getisHint(data) {
|
|
|
|
- this.isHintNextItem = data;
|
|
|
|
- this.previewNext();
|
|
|
|
- if (localStorage.getItem("hintNextItem") != "false") {
|
|
|
|
- setTimeout(() => {
|
|
|
|
- this.showHint = true;
|
|
|
|
- }, 4000);
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- this.isHintNextItem = false;
|
|
|
|
- },
|
|
|
|
- cancelPreview() {
|
|
|
|
- this.showHint = false;
|
|
|
|
- },
|
|
|
|
- gotoNextItem() {
|
|
|
|
- if (this.unhintNextItem == true) {
|
|
|
|
- this.$store.commit("sethintNextItem", false);
|
|
|
|
- }
|
|
|
|
- if (this.nextItem != "allfinished") {
|
|
|
|
- this.$store.commit("ChangeItemName", this.nextItem);
|
|
|
|
- this.$router.push("/studentWeb/eventView#" + this.nextItem.eventID);
|
|
|
|
- this.$store.commit("SetisFromInfoPoptpScroll", true);
|
|
|
|
- } else {
|
|
|
|
- this.$router.push("/studentWeb/homeView");
|
|
|
|
- }
|
|
|
|
- },
|
|
|
|
- previewNext() {
|
|
|
|
- this.isPreviewNextItem = true;
|
|
|
|
- let eventPageType = ["課前預習", "評量", "作業", "投票"];
|
|
|
|
- let nextItems = [];
|
|
|
|
- for (let i = 0; i < this.mockdata.length; i++) {
|
|
|
|
- if (
|
|
|
|
- eventPageType.includes(this.mockdata[i].eventType) &&
|
|
|
|
- this.mockdata[i].isDone == false &&
|
|
|
|
- this.$store.getters.getFinishedItem.includes(this.mockdata[i].eventID ) == false
|
|
|
|
- ) {
|
|
|
|
- nextItems.push(this.mockdata[i]); //引導使用者前往下一個未完成的項目
|
|
|
|
- }
|
|
|
|
- }
|
|
|
|
- if (nextItems != "") {
|
|
|
|
- if (
|
|
|
|
- nextItems[0].eventName ==
|
|
|
|
- this.mockdata[this.mockdata.length - 1].eventName
|
|
|
|
- ) {
|
|
|
|
- this.nextItem = "allfinished";
|
|
|
|
- }
|
|
|
|
- this.nextItem = nextItems[0];
|
|
|
|
- }
|
|
|
|
- },
|
|
|
|
- getCurrentLang() {
|
|
|
|
- return localStorage.getItem("lang");
|
|
|
|
- },
|
|
|
|
- getNowdoneSubject() {
|
|
|
|
- return this.$store.getters.getCurrentfinishedSubject;
|
|
|
|
- },
|
|
|
|
- finishedfromTestPop() {
|
|
|
|
- return this.$store.getters.getFinishedItem.includes(
|
|
|
|
- this.$store.getters.getItemTitle.eventID
|
|
|
|
- );
|
|
|
|
- },
|
|
|
|
hidehint() {
|
|
hidehint() {
|
|
this.ishideHint = !this.ishideHint;
|
|
this.ishideHint = !this.ishideHint;
|
|
},
|
|
},
|
|
@@ -365,8 +140,8 @@
|
|
}
|
|
}
|
|
},
|
|
},
|
|
async getPaper(data) {
|
|
async getPaper(data) {
|
|
- this.isExam = false
|
|
|
|
this.isExamDown = false
|
|
this.isExamDown = false
|
|
|
|
+ this.isLoad = true
|
|
this.selectData = {}
|
|
this.selectData = {}
|
|
this.chooseData = {}
|
|
this.chooseData = {}
|
|
if (data.blob !== undefined && data.blob !== "") {
|
|
if (data.blob !== undefined && data.blob !== "") {
|
|
@@ -376,8 +151,20 @@
|
|
code: key[(key.length - 1)],
|
|
code: key[(key.length - 1)],
|
|
blob: data.blob
|
|
blob: data.blob
|
|
}
|
|
}
|
|
- this.selectData = await this.$evTools.getStuPaper(code)
|
|
|
|
|
|
+ let exam = {}
|
|
|
|
+ for (let item of this.examData) {
|
|
|
|
+ if (data.paperId == item.id) {
|
|
|
|
+ exam = item
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ if (exam.id == undefined) {
|
|
|
|
+ this.selectData = await this.$evTools.getStuPaper(code)
|
|
|
|
+ this.examData.push(this.selectData)
|
|
|
|
+ } else {
|
|
|
|
+ this.selectData = exam
|
|
|
|
+ }
|
|
this.chooseData = data
|
|
this.chooseData = data
|
|
|
|
+ this.isLoad = false
|
|
if (this.selectData.item.length > 0) {
|
|
if (this.selectData.item.length > 0) {
|
|
let k = 0
|
|
let k = 0
|
|
for (let item of data.stuAns) {
|
|
for (let item of data.stuAns) {
|
|
@@ -398,12 +185,6 @@
|
|
this.$store.commit("ToggleLessonTestPopWithSubject", this.chooseData)
|
|
this.$store.commit("ToggleLessonTestPopWithSubject", this.chooseData)
|
|
}
|
|
}
|
|
},
|
|
},
|
|
- transSubjecttoEn(type) {
|
|
|
|
- if (type == "國文") return "Chinese";
|
|
|
|
- else if (type == "英文") return "English";
|
|
|
|
- else if (type == "數學") return "Math";
|
|
|
|
- else if (type == "綜合學科") return "Comprehensive";
|
|
|
|
- },
|
|
|
|
},
|
|
},
|
|
computed: {
|
|
computed: {
|
|
listData() {
|
|
listData() {
|
|
@@ -414,7 +195,7 @@
|
|
$route: {
|
|
$route: {
|
|
handler(val, oldval) {
|
|
handler(val, oldval) {
|
|
this.isExamDown = false
|
|
this.isExamDown = false
|
|
- this.isExam = false
|
|
|
|
|
|
+ this.examData = []
|
|
this.getPaperData()
|
|
this.getPaperData()
|
|
},
|
|
},
|
|
// 深度观察监听
|
|
// 深度观察监听
|