| | |
| | | <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> |
| | |
| | | </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> |
| | |
| | | </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" |
| | |
| | | <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> |
| | |
| | | <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') |
| | |
| | | |
| | | 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) |
| | |
| | | { |
| | | 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 = [ |
| | |
| | | |
| | | //资源跳转到指定位置 |
| | | const JumpPosition = (data) => { |
| | | console.log(data, '跳转') |
| | | if (window.qiankunState && window.qiankunState.gotoPage) { |
| | | window.qiankunState.gotoPage(Number(data.chapterNum), Number(data.pagination)) |
| | | } |
| | |
| | | //习题 |
| | | 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 |
| | |
| | | } |
| | | } |
| | | |
| | | // 获取附加题 |
| | | 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) => { |
| | |
| | | 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('目录') |