From 0d70f01c3553b6c33e5ee86f89f8d0fbd42825d5 Mon Sep 17 00:00:00 2001 From: 闫增涛 <1829501689@qq.com> Date: 星期三, 19 六月 2024 20:00:41 +0800 Subject: [PATCH] 答题器功能 --- src/views/readerPages/webHome.vue | 84 +++++++++++++++++++++++++++++++++++++++--- 1 files changed, 78 insertions(+), 6 deletions(-) diff --git a/src/views/readerPages/webHome.vue b/src/views/readerPages/webHome.vue index b8b0ceb..8009c57 100644 --- a/src/views/readerPages/webHome.vue +++ b/src/views/readerPages/webHome.vue @@ -123,6 +123,11 @@ <div>涔犻</div> <div :class="exercisesType == 'exercises' ? 'text' : 'line'"></div> </div> + <hr class="hr" v-if="bookConfig.textbookComponents.indexOf('A4821F71') > -1"/> + <div class="tabItem hover" @click="selectExercisesType('additional')" v-if="bookConfig.textbookComponents.indexOf('A4821F71') > -1"> + <div>闄勫姞棰�</div> + <div :class="exercisesType == 'additional' ? 'text' : 'line'"></div> + </div> <hr class="hr" v-if="bookConfig.textbookComponents.indexOf('AFC1A288') > -1"/> <div class="tabItem hover" @click="selectExercisesType('wrong')" v-if="bookConfig.textbookComponents.indexOf('AFC1A288') > -1"> <div>閿欓鏈�</div> @@ -130,7 +135,7 @@ </div> <hr class="hr" v-if="bookConfig.textbookComponents.indexOf('A434F2C0') > -1"/> <div class="tabItem hover" @click="selectExercisesType('collection')" v-if="bookConfig.textbookComponents.indexOf('A434F2C0') > -1"> - <div>鏀惰棌</div> + <div>鏀惰棌澶�</div> <div :class="exercisesType == 'collection' ? 'text' : 'line'"></div> </div> </div> @@ -461,7 +466,7 @@ </div> </div> <div class="questionList" v-if="activeMenu == '棰樺簱'" v-loading="listLoading"> - <div class="resourceSearchBox"> + <div class="resourceSearchBox" v-if="exercisesType !== 'collection' && exercisesType !=='wrong'"> <div class="inputBox"> <el-input class="custom-input" @@ -482,14 +487,14 @@ <div v-for="(item, index) in questionList" :key="index" class="reMarkItem"> <div class="questionCon hover" - @click="JumpPosition(item)" + @click="clickQuestion(exercisesType,item)" :title="item.resourceName" > {{ item.resourceName }} </div> </div> </div> - <div v-else> + <div v-if="questionList.length == 0 && (exercisesType !== 'collection' && exercisesType !=='wrong')"> <el-empty :image-size="60" description="鏆傛棤鏁版嵁" /> </div> </div> @@ -1182,12 +1187,15 @@ <wrongQuestion /> </div> </el-dialog> + <!-- 绛旈鍣� --> + <examination ref="examinationRef" :activeBook="bookConfig" :info="examinationData.info" :type="examinationData.type" :infoType="examinationData.infoType" /> </template> <script setup lang="ts"> import { ref, reactive, watch, onMounted, onBeforeMount, onBeforeUnmount, inject } from 'vue' import { useRouter, useRoute } from 'vue-router' import useClipboard from 'vue-clipboard3' +import examination from '../examination/index.vue' const { toClipboard } = useClipboard() const MG: any = inject('MG') const toolClass = inject('toolClass') @@ -1297,6 +1305,7 @@ import { loadMicroApp } from 'qiankun' import { microApps } from '@/child.ts' +import { open } from 'fs' let token = localStorage.getItem('token') const canvasWith = ref(1000) const canvasheight = ref(3000) @@ -1543,7 +1552,7 @@ { name: '棰樺簱', icon: question, - isShow: bookConfig.value.textbookComponents.indexOf('3D3B4F55') > -1 || bookConfig.value.textbookComponents.indexOf('AFC1A288') > -1 || bookConfig.value.textbookComponents.indexOf('A434F2C0') > -1 + isShow: bookConfig.value.textbookComponents.indexOf('3D3B4F55') > -1 || bookConfig.value.textbookComponents.indexOf('AFC1A288') > -1 || bookConfig.value.textbookComponents.indexOf('A434F2C0') > -1 || bookConfig.value.textbookComponents.indexOf('A4821F71') > -1 } ] teachToolsMenuData = [ @@ -2006,7 +2015,6 @@ //璧勬簮璺宠浆鍒版寚瀹氫綅缃� const JumpPosition = (data) => { - console.log(data, '璺宠浆') if (window.qiankunState && window.qiankunState.gotoPage) { window.qiankunState.gotoPage(Number(data.chapterNum), Number(data.pagination)) } @@ -2036,6 +2044,13 @@ //涔犻 const exercisesType = ref('exercises') //涔犻绫诲瀷 const questionList = ref([]) +const examinationRef = ref() // 绛旈鍣ㄥ疄渚� +const examinationData = reactive({ + type:"", // 绛旈绫诲瀷 option 娴嬭瘯 + infoType:"", // 鏁版嵁鏉ユ簮 bits 姣旂壒鍚庡彴 json 鍋囨暟鎹� + info:{}, // 杩欏棰樼殑淇℃伅 +}) +// 鑾峰彇涔犻 const getExercisesList = () => { if (token) { listLoading.value = true @@ -2078,6 +2093,38 @@ } } +// 鑾峰彇闄勫姞棰� +const getAdditionalList = () => { + if (token) { + listLoading.value = true + questionList.value = [] + axios + .get(bookConfig.value.resourceUrl + '/bits-question.json') + .then((res) => { + // 澶勭悊鑾峰彇鍒扮殑json鏁版嵁 + if (res.data.data.length > 0) { + questionList.value = res.data.data + examinationData.infoType = res.data.type + } + listLoading.value = false + }) + .catch(() => { + listLoading.value = false + }) + } else { + ElMessageBox.confirm('璇峰厛鐧诲綍锛�', { + confirmButtonText: '鍘荤櫥褰�', + cancelButtonText: '鍙栨秷', + autofocus: false, + type: 'warning' + }) + .then(() => { + router.push('/login') + }) + .catch(() => {}) + } +} + //閿欓鏈� const wrongQuestionVisble = ref(false) const selectExercisesType = (type) => { @@ -2085,12 +2132,37 @@ searchText.value = '' if (type == 'exercises') { getExercisesList() + } else if(type == 'additional') { + getAdditionalList() } else if(type == 'wrong'){ + openExaminationDialog(true,{},'errorQuestion') questionList.value = [] }else{ + openExaminationDialog(true,{},'collectQuestion') questionList.value = [] } } +// 棰樺垪琛ㄧ偣鍑� +const clickQuestion = (type:string,data:any) => { + switch (type) { + case 'exercises': + JumpPosition(data) + break; + case 'additional': + openExaminationDialog(true,data,'option') + break; + default: + break; + } +} +const openExaminationDialog = (isSHow:boolean,data:any,type:string) => { + if(examinationRef.value) { + examinationRef.value.handleExaminationDialog(isSHow) + examinationData.type = type + examinationData.info = data + } + +} // 閫変腑鑿滃崟 const activeMenu = ref('鐩綍') -- Gitblit v1.9.1